@import url('https://fonts.googleapis.com/css2?family=Cinzel:wght@500;600&family=Cormorant+Garamond:ital,wght@0,500;0,600;1,500;1,600&family=Inter:wght@300;400;500;600;700&family=JetBrains+Mono:wght@400;500&family=Lato:wght@500;600;700;800&family=Playfair+Display:ital,wght@0,400;0,600;0,700;1,400&display=swap');
@import url("https://fonts.googleapis.com/css2?family=Source+Serif+4:ital,opsz,wght@0,8..60,300;0,8..60,400;0,8..60,600;1,8..60,300;1,8..60,400&family=JetBrains+Mono:wght@400;500&display=swap");

/*
 * EdwinOS unified stylesheet
 * ==========================================================================
 *
 * CASCADE CONTRACT
 * ----------------
 * This file is the single CSS entry point for the site. Its rule order is part
 * of the visual contract: later declarations intentionally resolve earlier
 * baseline declarations. Do not reorder sections merely to group selectors.
 *
 * ARCHITECTURE / CONTENTS
 * -----------------------
 * 1. Font imports (must remain before every non-import rule)
 * 2. Historical Material and site baseline (formerly extra.css)
 * 3. EdwinOS final component layer (formerly edwinos-overrides.css)
 *
 * Maintenance rule: extend the existing component section in the appropriate
 * cascade layer. Before removing or moving a rule, prove equivalent selector,
 * media context, specificity, importance, and source order.
 */

/* ==========================================================================
 * 1. Historical Material and site baseline
 * ========================================================================== */

/*
 * 选择器 [data-md-color-scheme="default"] 确保这些改动
 * 仅在用户选择“亮色”或系统默认为“亮色”时生效。
 * 当用户切换到暗色模式时，这些设置会被自动忽略，从而保护暗色体验。
 */
[data-md-color-scheme="default"] {

  /* ==============================================
     主色调配置 (Primary Colors) - 浙大蓝 #003F88
     ============================================== */
  /*
   * --md-primary-fg-color:
   * 控制页眉(Header)、侧边栏激活项、链接文字等核心元素的颜色。
   */
  --md-primary-fg-color:        #003F88;

  /*
   * --md-primary-fg-color--light:
   * 控制鼠标悬停(Hover)时的颜色，通常比主色稍亮。
   */
  --md-primary-fg-color--light: #0050AA;

  /*
   * --md-primary-fg-color--dark:
   * 控制被点击或激活状态的颜色，通常比主色稍暗。
   */
  --md-primary-fg-color--dark:  #002E66;

  /* ==============================================
     背景色配置 (Background Colors) - 米黄色 #FAF7F0
     ============================================== */
  /*
   * --md-default-bg-color:
   * 控制页面主体的背景颜色。
   */
  --md-default-bg-color:        #FAF7F0;

  /*
   * --md-code-bg-color:
   * (可选) 调整行内代码块的背景色，使其与米色背景融合得更自然。
   * 使用半透明的深色，保持对比度。
   */
  --md-code-bg-color:           #f6f8fa;
  --md-code-fg-color:           #24292f;

  /* ==============================================
     强调色配置 (Accent Colors)
     ============================================== */
  /*
   * --md-accent-fg-color:
   * 控制按钮、滑动条、高亮文本的颜色。建议与主色保持一致或互补。
   */
  --md-accent-fg-color:         #003F88;
}

/* --- 页脚定制开始 --- */

/* 强制页脚内部容器两端对齐 */
.md-footer-meta__inner {
    display: flex;
    justify-content: space-between!important; /* 覆盖默认样式 */
    align-items: center; /* 垂直居中 */
    flex-wrap: wrap; /* 移动端自动换行 */
}

/* 针对版权信息区域 */
.md-copyright {
    margin: 0!important;
    text-align: left;
}

/* 针对社交图标区域 */
.md-social {
    margin: 0!important;
    padding: 0;
    text-align: right;
}

/* 移动端适配：屏幕小于 40rem (约640px) 时，恢复堆叠布局，防止挤压 */
@media screen and (max-width: 40rem) {
   .md-footer-meta__inner {
        flex-direction: column-reverse; /* 图标在下，版权在上，或者反过来 */
        gap: 10px;
        justify-content: center!important;
    }
}
/* --- 页脚定制结束 --- */

/* ==============================================
   全局 UI 优化 - 科技感增强
   ============================================== */

/* 平滑滚动 */
html {
    scroll-behavior: smooth;
}

/* 标题排版增强 - 给标题更多个性 */
.md-typeset h1,
.md-typeset h2,
.md-typeset h3 {
    font-family: "Playfair Display", "Noto Serif SC", serif;
    line-height: 1.3;
}

.md-typeset h1 {
    font-size: 2em;
    margin-bottom: 0.8em;
}

.md-typeset h2 {
    font-size: 1.5em;
    margin-top: 2em;
}

/* 优化链接过渡效果 */
a {
    transition: color 0.25s ease, opacity 0.25s ease, border-color 0.25s ease;
}

/* 搜索框优化 */


/* 内容卡片化效果 */
.md-content {
    padding-top: 1.5rem;
}

/* 表格美化 */
.md-typeset table:not([class]) {
    border-radius: 10px;
    overflow: hidden;
    box-shadow: 0 2px 12px rgba(0, 0, 0, 0.05);
}

.md-typeset table:not([class]) th {
    background: rgba(0, 63, 136, 0.08);
}

/* 页脚美化 */
.md-footer {
    border-top: 1px solid rgba(0, 0, 0, 0.05);
}

/* pymdownx.mark 将渲染为 <mark> 或 .pymdownx-mark, 统一样式 */
.md-typeset mark,
.md-typeset .pymdownx-mark {
    background-color: #fff59d; /* 柔和的荧光黄 */
    color: #000;
    padding: 0 0.18em;
    border-radius: 2px;
}

/* ==============================================
   暗色模式 - GitHub Dark
   以 GitHub 原生灰黑背景、边框和链接蓝覆盖 slate 模式。
   ============================================== */
[data-md-color-scheme="slate"] {
    --md-default-bg-color: #0d1117;
    --md-default-fg-color: #c9d1d9;
    --md-default-fg-color--light: #8b949e;
    --md-default-fg-color--lighter: #6e7681;
    --md-primary-fg-color: #58a6ff;
    --md-primary-fg-color--light: #79c0ff;
    --md-primary-bg-color: #161b22;
    --md-accent-fg-color: #58a6ff;
    --md-typeset-color: #c9d1d9;
    --md-typeset-a-color: #58a6ff;

    /* 代码相关颜色 */
    --md-code-bg-color: #161b22;
    --md-code-fg-color: #c9d1d9;
    --md-code-hl-color: rgba(88, 166, 255, 0.14);

    /* 自定义扩展变量 */
}

/* 页眉 - GitHub Dark */


/* 导航标签页 */


/* 内容区域 */
[data-md-color-scheme="slate"] .md-content {
    background: #0d1117;
}

/* 表格美化 */
[data-md-color-scheme="slate"] .md-typeset table:not([class]) {
    background: #161b22;
    border: 1px solid #30363d;
}

[data-md-color-scheme="slate"] .md-typeset table:not([class]) th {
    background: rgba(88, 166, 255, 0.08);
    color: #c9d1d9;
    border-bottom: 1px solid #30363d;
}

[data-md-color-scheme="slate"] .md-typeset table:not([class]) td {
    border-color: #30363d;
}

[data-md-color-scheme="slate"] .md-typeset table:not([class]) tr:hover {
    background: rgba(88, 166, 255, 0.06);
}

/* 链接样式 - GitHub Blue */
[data-md-color-scheme="slate"] .md-typeset a {
    color: #58a6ff;
    text-decoration: none;
    transition: all 0.25s ease;
    border-bottom: 1px solid transparent;
}

[data-md-color-scheme="slate"] .md-typeset a:hover {
    color: #79c0ff;
    border-bottom-color: rgba(88, 166, 255, 0.45);
}

/* 页脚美化 */
[data-md-color-scheme="slate"] .md-footer {
    background: #0d1117;
    border-top: 1px solid #30363d;
}

[data-md-color-scheme="slate"] .md-footer-meta {
    background: transparent;
}

/* 搜索框美化 */


/* 选中文本颜色 */
[data-md-color-scheme="slate"] ::selection {
    background: rgba(88, 166, 255, 0.32);
    color: #fff;
}

/* 按钮美化 */
[data-md-color-scheme="slate"] .md-button {
    background: #161b22;
    border: 1px solid #30363d;
    color: #c9d1d9;
}

[data-md-color-scheme="slate"] .md-button:hover {
    background: rgba(88, 166, 255, 0.1);
    border-color: rgba(88, 166, 255, 0.45);
}

[data-md-color-scheme="slate"] .md-button--primary {
    background: #238636;
    border-color: transparent;
    color: #fff;
}

[data-md-color-scheme="slate"] .md-button--primary:hover {
    background: #2ea043;
    box-shadow: none;
}

/* 首页兜底：隐藏正文第一个 H1，避免即时导航时等待 JS 注入类名 */
body.is-homepage .md-content__inner > h1:first-of-type,
body:has(.academic-home-layout) .md-content__inner > h1:first-of-type {
    display: none !important;
}

/* ==============================================
   暗色模式标题可读性增强 - 梯度高亮
   ============================================== */
[data-md-color-scheme="slate"] .md-typeset h1 {
    color: #f8fafc !important;
    font-weight: 700;
    letter-spacing: -0.02em;
    text-shadow: 0 0 30px rgba(88, 166, 255, 0.12);
}

[data-md-color-scheme="slate"] .md-typeset h2 {
    color: #f1f5f9 !important;
    font-weight: 600;
    padding-bottom: 0.3em;
    border-bottom: 2px solid rgba(88, 166, 255, 0.16);
}

[data-md-color-scheme="slate"] .md-typeset h3 {
    color: #e2e8f0 !important;
    font-weight: 600;
}

[data-md-color-scheme="slate"] .md-typeset h4,
[data-md-color-scheme="slate"] .md-typeset h5,
[data-md-color-scheme="slate"] .md-typeset h6 {
    color: #cbd5e1 !important;
    font-weight: 600;
}

/* 暗色模式 strong/bold 高亮 - GitHub Yellow */

/* 暗色模式 blockquote 优化 */
[data-md-color-scheme="slate"] .md-typeset blockquote {
    border-left: 4px solid rgba(88, 166, 255, 0.42);
    background: rgba(88, 166, 255, 0.04);
    color: #8b949e;
}

/* 暗色模式分割线 */
[data-md-color-scheme="slate"] .md-typeset hr {
    border-color: rgba(88, 166, 255, 0.16);
}

/* ==============================================
   亮色模式标题装饰 - 浙大蓝增强
   ============================================== */
[data-md-color-scheme="default"] .md-typeset h1 {
    color: #003F88;
    font-weight: 700;
    letter-spacing: -0.02em;
}

[data-md-color-scheme="default"] .md-typeset h2 {
    color: #002E66;
    font-weight: 600;
    padding-bottom: 0.3em;
    border-bottom: 2px solid rgba(0, 63, 136, 0.12);
}

[data-md-color-scheme="default"] .md-typeset h3 {
    color: #003F88;
    font-weight: 600;
}

/* 亮色模式 strong 使用暖金色强调 */

/* 亮色模式 blockquote 温暖化 */
[data-md-color-scheme="default"] .md-typeset blockquote {
    border-left: 4px solid rgba(0, 63, 136, 0.3);
    background: rgba(0, 63, 136, 0.03);
}

/* 亮色模式链接悬停下划线 */
[data-md-color-scheme="default"] .md-typeset a:hover {
    border-bottom: 1px solid rgba(0, 63, 136, 0.3);
}

/* ==============================================
   Obsidian 风格块引用链接样式
   ============================================== */
/* 块锚点标记 */
.block-anchor {
    position: relative;
}

.block-anchor::before {
    content: '';
    display: block;
    height: 0;
    margin-top: 0;
    visibility: hidden;
    pointer-events: none;
}

/* 块引用链接样式 */
a.block-link {
    color: var(--md-accent-fg-color, #003F88);
    text-decoration: none;
    background: rgba(0, 63, 136, 0.08);
    padding: 2px 6px;
    border-radius: 4px;
    font-family: "JetBrains Mono", monospace;
    font-size: 0.9em;
    transition: all 0.2s ease;
}

a.block-link:hover {
    background: rgba(0, 63, 136, 0.15);
    color: var(--md-primary-fg-color, #003F88);
}

/* URL fragment / Obsidian block target highlight */
.md-typeset .block-highlight {
    --fragment-highlight-bg-0: rgba(217, 119, 6, 0.2);
    --fragment-highlight-bg-1: rgba(245, 158, 11, 0.13);
    --fragment-highlight-bg-2: rgba(245, 158, 11, 0.055);
    --fragment-highlight-bg-3: rgba(245, 158, 11, 0);
    --fragment-highlight-ring-0: rgba(180, 83, 9, 0.26);
    --fragment-highlight-ring-1: rgba(180, 83, 9, 0.16);
    --fragment-highlight-ring-2: rgba(180, 83, 9, 0.06);
    --fragment-highlight-ring-3: rgba(180, 83, 9, 0);
    --fragment-highlight-shadow-0: rgba(120, 53, 15, 0.13);
    --fragment-highlight-shadow-1: rgba(120, 53, 15, 0.08);
    --fragment-highlight-shadow-2: rgba(120, 53, 15, 0.03);
    --fragment-highlight-shadow-3: rgba(120, 53, 15, 0);
    --fragment-highlight-bar: rgba(180, 83, 9, 0.82);
    position: relative;
    border-radius: 0.65rem;
    scroll-margin-top: 5.5rem;
}

.md-typeset .block-highlight--active:not(tr) {
    animation: fragment-target-fade 4.8s linear forwards;
}

.md-typeset .block-highlight--active:not(tr)::before {
    content: "";
    position: absolute;
    inset-block: 0.35rem;
    inset-inline-start: -0.62rem;
    width: 0.22rem;
    border-radius: 999px;
    background: var(--fragment-highlight-bar);
    box-shadow: 0 0 0.75rem rgba(180, 83, 9, 0.22);
    animation: fragment-target-bar-fade 4.8s linear forwards;
}

.md-typeset tr.block-highlight--active > th,
.md-typeset tr.block-highlight--active > td {
    animation: fragment-target-cell-fade 4.8s linear forwards;
}

@keyframes fragment-target-fade {
    0% {
        background-color: var(--fragment-highlight-bg-0);
        box-shadow:
            0 0 0 2px var(--fragment-highlight-ring-0),
            0 0.7rem 1.8rem var(--fragment-highlight-shadow-0);
    }
    28% {
        background-color: var(--fragment-highlight-bg-1);
        box-shadow:
            0 0 0 1.5px var(--fragment-highlight-ring-1),
            0 0.45rem 1.25rem var(--fragment-highlight-shadow-1);
    }
    70% {
        background-color: var(--fragment-highlight-bg-2);
        box-shadow:
            0 0 0 1px var(--fragment-highlight-ring-2),
            0 0.2rem 0.7rem var(--fragment-highlight-shadow-2);
    }
    100% {
        background-color: var(--fragment-highlight-bg-3);
        box-shadow:
            0 0 0 0 var(--fragment-highlight-ring-3),
            0 0 0 0 var(--fragment-highlight-shadow-3);
    }
}

@keyframes fragment-target-cell-fade {
    0% {
        background-color: var(--fragment-highlight-bg-0);
        box-shadow: inset 0 0 0 2px var(--fragment-highlight-ring-0);
    }
    28% {
        background-color: var(--fragment-highlight-bg-1);
        box-shadow: inset 0 0 0 1.5px var(--fragment-highlight-ring-1);
    }
    70% {
        background-color: var(--fragment-highlight-bg-2);
        box-shadow: inset 0 0 0 1px var(--fragment-highlight-ring-2);
    }
    100% {
        background-color: var(--fragment-highlight-bg-3);
        box-shadow: inset 0 0 0 0 var(--fragment-highlight-ring-3);
    }
}

@keyframes fragment-target-bar-fade {
    0% {
        opacity: 0.82;
        transform: scaleY(1);
    }
    28% {
        opacity: 0.58;
    }
    70% {
        opacity: 0.22;
    }
    100% {
        opacity: 0;
        transform: scaleY(0.92);
    }
}

/* 暗色模式适配 */
[data-md-color-scheme="slate"] a.block-link {
    background: rgba(88, 166, 255, 0.15);
    color: #58a6ff;
}

[data-md-color-scheme="slate"] a.block-link:hover {
    background: rgba(88, 166, 255, 0.24);
}

[data-md-color-scheme="slate"] .md-typeset .block-highlight {
    --fragment-highlight-bg-0: rgba(251, 191, 36, 0.17);
    --fragment-highlight-bg-1: rgba(88, 166, 255, 0.105);
    --fragment-highlight-bg-2: rgba(88, 166, 255, 0.045);
    --fragment-highlight-bg-3: rgba(88, 166, 255, 0);
    --fragment-highlight-ring-0: rgba(251, 191, 36, 0.28);
    --fragment-highlight-ring-1: rgba(251, 191, 36, 0.15);
    --fragment-highlight-ring-2: rgba(251, 191, 36, 0.06);
    --fragment-highlight-ring-3: rgba(251, 191, 36, 0);
    --fragment-highlight-shadow-0: rgba(0, 0, 0, 0.18);
    --fragment-highlight-shadow-1: rgba(0, 0, 0, 0.11);
    --fragment-highlight-shadow-2: rgba(0, 0, 0, 0.04);
    --fragment-highlight-shadow-3: rgba(0, 0, 0, 0);
    --fragment-highlight-bar: rgba(251, 191, 36, 0.82);
}

@media (prefers-reduced-motion: reduce) {
    .md-typeset .block-highlight--active,
    .md-typeset .block-highlight--active::before,
    .md-typeset tr.block-highlight--active > th,
    .md-typeset tr.block-highlight--active > td {
        animation: none;
    }

    .md-typeset .block-highlight--active:not(tr) {
        background-color: var(--fragment-highlight-bg-1);
        box-shadow: 0 0 0 1px var(--fragment-highlight-ring-1);
    }
}

/* =============================================================
   Focused UI Sync Layer (Light + Dark)
   Scope: fonts, texture, fade-in, glass nav, hover-lift,
          custom scrollbar, desktop tabs + active state,
          about button, mobile hamburger menu panel.
   ============================================================= */

/* Fonts */
html, body {
    font-family: "Inter", "Noto Sans SC", "Segoe UI", sans-serif;
}

.md-typeset h1,
.md-typeset h2,
.md-typeset h3,
.md-typeset h4 {
    font-family: "Playfair Display", "Noto Serif SC", serif;
}

.md-header,
.md-tabs,
.md-nav,
.md-button,
.md-typeset code,
.md-typeset pre code {
    font-family: "Inter", "Noto Sans SC", "Segoe UI", sans-serif;
}

.md-typeset code,
.md-typeset pre code,
.md-tabs__link,
.md-nav__link {
    font-family: "JetBrains Mono", "Fira Code", monospace;
}

/* Fade-in animation */
.md-content__inner {
    animation: pageFadeIn 0.8s cubic-bezier(0.16, 1, 0.3, 1);
}

@keyframes pageFadeIn {
    from { opacity: 0; transform: translateY(15px); }
    to { opacity: 1; transform: translateY(0); }
}

/* Glass nav effect */


/* Hover lift behavior */
.md-button {
    transition: transform 0.3s ease, box-shadow 0.3s ease, border-color 0.25s ease;
}

.md-button:hover {
    transform: translateY(-3px);
}

[data-md-color-scheme="default"] .md-button:hover {
    box-shadow: 0 12px 30px -10px rgba(15, 23, 42, 0.2);
}

[data-md-color-scheme="slate"] .md-button:hover {
    box-shadow: 0 14px 34px -12px rgba(1, 4, 9, 0.65);
}

/* Custom scrollbar */
[data-md-color-scheme="default"] ::-webkit-scrollbar {
    width: 6px;
    height: 6px;
}

[data-md-color-scheme="default"] ::-webkit-scrollbar-track {
    background: transparent;
}

[data-md-color-scheme="default"] ::-webkit-scrollbar-thumb {
    background: #a8a29e;
    border-radius: 3px;
}

[data-md-color-scheme="default"] ::-webkit-scrollbar-thumb:hover {
    background: #78716c;
}

[data-md-color-scheme="slate"] ::-webkit-scrollbar {
    width: 6px;
    height: 6px;
}

[data-md-color-scheme="slate"] ::-webkit-scrollbar-track {
    background: rgba(2, 6, 23, 0.7);
}

[data-md-color-scheme="slate"] ::-webkit-scrollbar-thumb {
    background: #334155;
    border-radius: 3px;
}

[data-md-color-scheme="slate"] ::-webkit-scrollbar-thumb:hover {
    background: #475569;
}

/* Desktop tabs + active state */


@media (prefers-reduced-motion: reduce) {
    .md-content__inner,
    .md-button,
    .admonition,
    .highlight,
    .md-typeset table:not([class]),
    .md-tabs__link,
    .md-tabs__link::after {
        animation: none !important;
        transition: none !important;
        transform: none !important;
    }
}

/* ==============================================
   斜体强调 (Italic Emphasis) - 浅绿色，与浙大蓝/琥珀金互补
   亮色: 沉稳的深松绿；暗色: 柔和的薄荷绿
   *text*       → em            → 浅绿斜体
   ***text***   → strong>em     → 粗+斜+绿色 + 半透明绿底色横条
   补丁：作为本地 patch 追加到上游样式之后，覆盖任何未定义的 em 样式
   ============================================== */
[data-md-color-scheme="default"] .md-typeset em {
    color: #15803d;
    font-style: italic;
    font-weight: 500;
}

[data-md-color-scheme="default"] .md-typeset strong em,
[data-md-color-scheme="default"] .md-typeset em strong {
    color: #14532d;
    font-style: italic;
    font-weight: 700;
    background: linear-gradient(180deg, transparent 65%, rgba(21, 128, 61, 0.15) 65%);
    padding: 0 0.1em;
    border-radius: 2px;
}

[data-md-color-scheme="slate"] .md-typeset em {
    color: #86efac;
    font-style: italic;
    font-weight: 500;
}

[data-md-color-scheme="slate"] .md-typeset strong em,
[data-md-color-scheme="slate"] .md-typeset em strong {
    color: #bbf7d0;
    font-style: italic;
    font-weight: 700;
    background: linear-gradient(180deg, transparent 65%, rgba(134, 239, 172, 0.18) 65%);
    padding: 0 0.1em;
    border-radius: 2px;
}
/* ==============================================
   Archive - 自动内容归档卡片
   ============================================== */
.archive-hero {
    position: relative;
    isolation: isolate;
    overflow: hidden;
    margin: 0 0 1.55rem;
    padding: 1.35rem clamp(1.4rem, 3.5vw, 2.5rem) 1.45rem;
    border: 1px solid rgba(30, 58, 138, 0.12);
    border-radius: 20px;
    background:
        radial-gradient(circle at 88% 12%, rgba(59, 130, 246, 0.17), transparent 34%),
        linear-gradient(135deg, rgba(255, 255, 255, 0.9), rgba(239, 246, 255, 0.72));
    box-shadow: 0 14px 38px rgba(30, 58, 138, 0.075);
}

.archive-hero::after {
    content: "";
    position: absolute;
    z-index: -1;
    width: 7rem;
    height: 7rem;
    right: -2rem;
    bottom: -3.5rem;
    border: 1px solid rgba(30, 58, 138, 0.13);
    border-radius: 50%;
    box-shadow: 0 0 0 1.6rem rgba(59, 130, 246, 0.035),
                0 0 0 3.2rem rgba(59, 130, 246, 0.025);
}

.archive-hero__eyebrow {
    margin: 0 0 0.38rem !important;
    color: #1e3a8a;
    font: 600 0.58rem/1.2 "Cinzel", "Inter", sans-serif;
    letter-spacing: 0.2em;
}

.md-typeset .archive-hero h1 {
    margin: 0;
    color: #111827;
    font: 600 clamp(2rem, 5vw, 3.4rem)/0.92 "Cormorant Garamond", "Playfair Display", serif;
    letter-spacing: -0.035em;
}

.archive-hero__lead {
    max-width: 38rem;
    margin: 0.55rem 0 0 !important;
    color: #475569;
    font: 500 clamp(0.86rem, 1.4vw, 1rem)/1.45 "Cormorant Garamond", "Noto Serif SC", serif;
}

.archive-hero__stats {
    position: absolute;
    right: clamp(1.4rem, 3.5vw, 2.5rem);
    bottom: 1.35rem;
    display: flex;
    flex-wrap: wrap;
    gap: 0.65rem;
}

.archive-hero__stats span {
    display: inline-flex;
    align-items: center;
    gap: 0.28rem;
    padding: 0.34rem 0.62rem;
    color: #475569;
    font-size: 0.62rem;
    line-height: 1;
    border: 1px solid rgba(30, 58, 138, 0.11);
    border-radius: 999px;
    background: rgba(255, 255, 255, 0.62);
    backdrop-filter: blur(8px);
}

.archive-hero__stats strong {
    color: #1e3a8a;
}

.archive-year {
    margin: 0 0 3.4rem;
}

.archive-year__heading {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    gap: 1rem;
    margin: 0 0 0.85rem;
    padding: 0 0 0.52rem;
    border-bottom: 1px solid rgba(30, 58, 138, 0.12);
}

.md-typeset .archive-year__heading h2 {
    margin: 0;
    padding: 0;
    color: #172554;
    font: 600 clamp(1.55rem, 3vw, 2rem)/1 "Cormorant Garamond", "Playfair Display", serif;
    border: 0;
}

.archive-year__heading > span {
    color: #64748b;
    font: 500 0.66rem/1 "JetBrains Mono", monospace;
    letter-spacing: 0.08em;
    text-transform: uppercase;
}

.archive-grid {
    display: grid;
    grid-template-columns: minmax(0, 1fr);
    gap: 0.9rem;
}

.archive-card {
    min-width: 0;
    overflow: hidden;
    border: 1px solid rgba(15, 23, 42, 0.09);
    border-radius: 16px;
    background: rgba(255, 255, 255, 0.72);
    box-shadow: 0 6px 20px rgba(15, 23, 42, 0.05);
    transition: transform 0.3s ease, border-color 0.3s ease, box-shadow 0.3s ease;
}

.archive-card:hover {
    transform: translateY(-3px);
    border-color: rgba(30, 58, 138, 0.26);
    box-shadow: 0 13px 32px rgba(30, 58, 138, 0.11);
}

.md-typeset .archive-card__link,
.md-typeset .archive-card__link:hover {
    display: grid;
    grid-template-columns: minmax(0, 3fr) minmax(8rem, 1fr);
    height: 100%;
    min-height: 8.6rem;
    color: inherit;
    text-decoration: none;
    border: 0;
}

.archive-card__cover {
    position: relative;
    overflow: hidden;
    width: 100%;
    max-width: 100%;
    min-height: 100%;
    background: #e2e8f0;
}

.archive-card__image {
    display: block;
    width: 100%;
    height: 100%;
    margin: 0 !important;
    object-fit: cover;
    transition: transform 0.5s cubic-bezier(0.22, 1, 0.36, 1);
}

.archive-card:hover .archive-card__image {
    transform: scale(1.035);
}

.archive-card__cover--emoji {
    display: grid;
    place-items: center;
    background:
        radial-gradient(circle at 68% 28%, rgba(255, 255, 255, 0.6), transparent 22%),
        linear-gradient(135deg, #dbeafe, #e0e7ff);
}

.archive-card--robotics .archive-card__cover--emoji {
    background: linear-gradient(135deg, #dbeafe, #c7d2fe);
}

.archive-card--science .archive-card__cover--emoji {
    background: linear-gradient(135deg, #d1fae5, #cffafe);
}

.archive-card--humanities .archive-card__cover--emoji {
    background: linear-gradient(135deg, #fef3c7, #fee2e2);
}

.archive-card--code .archive-card__cover--emoji {
    background: linear-gradient(135deg, #e0e7ff, #dbeafe);
}

.archive-card--writing .archive-card__cover--emoji {
    background: linear-gradient(135deg, #ffedd5, #fce7f3);
}

.archive-card--profile .archive-card__cover--emoji,
.archive-card--study .archive-card__cover--emoji {
    background: linear-gradient(135deg, #ede9fe, #e0f2fe);
}

.archive-card__emoji {
    font-size: clamp(2.7rem, 6vw, 4.2rem);
    filter: drop-shadow(0 10px 16px rgba(15, 23, 42, 0.13));
    transform: translateY(-0.06em);
}

.archive-card__status {
    flex: 0 0 auto;
    padding: 0.3rem 0.54rem;
    color: #1e3a8a;
    font: 650 0.52rem/1 "Inter", sans-serif;
    letter-spacing: 0.1em;
    border: 1px solid rgba(30, 58, 138, 0.13);
    border-radius: 999px;
    background: rgba(30, 58, 138, 0.07);
}

.archive-card__status--published {
    color: #166534;
    border-color: rgba(22, 101, 52, 0.14);
    background: rgba(22, 101, 52, 0.07);
}

.archive-card__body {
    display: flex;
    min-width: 0;
    padding: 1rem 1.2rem 0.95rem;
    flex-direction: column;
    justify-content: center;
}

.archive-card__meta {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 0.35rem;
    color: #64748b;
    font: 500 0.64rem/1.4 "JetBrains Mono", monospace;
}

.archive-card__title-row {
    display: flex;
    min-width: 0;
    align-items: center;
    gap: 0.58rem;
    margin: 0.6rem 0 0.8rem;
}

.md-typeset .archive-card__title {
    display: -webkit-box;
    min-width: 0;
    flex: 1 1 auto;
    overflow: hidden;
    margin: 0;
    color: #172033;
    font: 600 clamp(1.12rem, 2.3vw, 1.38rem)/1.3 "Playfair Display", "Noto Serif SC", serif;
    letter-spacing: -0.012em;
    -webkit-box-orient: vertical;
    -webkit-line-clamp: 2;
}

.archive-card__footer {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    margin-top: auto;
}

.archive-card__category {
    overflow: hidden;
    padding: 0.34rem 0.6rem;
    color: #1e3a8a;
    font: 600 0.6rem/1 "Inter", sans-serif;
    white-space: nowrap;
    text-overflow: ellipsis;
    border-radius: 999px;
    background: rgba(30, 58, 138, 0.075);
}

.archive-card__arrow {
    color: #1e3a8a;
    font-size: 1rem;
    transition: transform 0.25s ease;
}

.archive-card:hover .archive-card__arrow {
    transform: translate(2px, -2px);
}

.archive-note,
.archive-empty {
    margin-top: 2.6rem !important;
    padding-top: 1rem;
    color: #64748b;
    font-size: 0.68rem;
    text-align: center;
    border-top: 1px solid rgba(30, 58, 138, 0.1);
}

[data-md-color-scheme="slate"] .archive-hero {
    border-color: #30363d;
    background:
        radial-gradient(circle at 88% 12%, rgba(88, 166, 255, 0.12), transparent 34%),
        #161b22;
    box-shadow: none;
}

[data-md-color-scheme="slate"] .archive-hero__eyebrow,
[data-md-color-scheme="slate"] .archive-hero__stats strong,
[data-md-color-scheme="slate"] .archive-card__category,
[data-md-color-scheme="slate"] .archive-card__arrow {
    color: #58a6ff;
}

[data-md-color-scheme="slate"] .md-typeset .archive-hero h1,
[data-md-color-scheme="slate"] .md-typeset .archive-year__heading h2,
[data-md-color-scheme="slate"] .md-typeset .archive-card__title {
    color: #f8fafc !important;
}

[data-md-color-scheme="slate"] .archive-hero__lead,
[data-md-color-scheme="slate"] .archive-hero__stats span,
[data-md-color-scheme="slate"] .archive-year__heading > span,
[data-md-color-scheme="slate"] .archive-card__meta,
[data-md-color-scheme="slate"] .archive-note {
    color: #8b949e;
}

[data-md-color-scheme="slate"] .archive-hero__stats span {
    border-color: #30363d;
    background: #0d1117;
}

[data-md-color-scheme="slate"] .archive-year__heading,
[data-md-color-scheme="slate"] .archive-note {
    border-color: #30363d;
}

[data-md-color-scheme="slate"] .archive-card {
    border-color: #30363d;
    background: #161b22;
    box-shadow: none;
}

[data-md-color-scheme="slate"] .archive-card:hover {
    border-color: rgba(88, 166, 255, 0.45);
    box-shadow: none;
}

[data-md-color-scheme="slate"] .archive-card__category {
    background: rgba(88, 166, 255, 0.1);
}

[data-md-color-scheme="slate"] .archive-card__status {
    color: #58a6ff;
    border-color: rgba(88, 166, 255, 0.24);
    background: rgba(88, 166, 255, 0.11);
}

[data-md-color-scheme="slate"] .archive-card__status--published {
    color: #86efac;
    border-color: rgba(134, 239, 172, 0.18);
    background: rgba(34, 197, 94, 0.1);
}

@media screen and (max-width: 48rem) {
    .archive-hero__stats {
        position: static;
        margin-top: 0.8rem;
    }

    .md-typeset .archive-card__link,
    .md-typeset .archive-card__link:hover {
        grid-template-columns: minmax(0, 3fr) minmax(7rem, 1fr);
        min-height: 7.8rem;
    }
}

@media screen and (max-width: 30rem) {
    .archive-hero {
        padding: 1rem 1.05rem 1.05rem;
        border-radius: 16px;
    }

    .archive-card {
        border-radius: 14px;
    }

    .archive-year__heading {
        align-items: center;
    }

    .md-typeset .archive-card__link,
    .md-typeset .archive-card__link:hover {
        grid-template-columns: minmax(0, 3fr) minmax(5.8rem, 1fr);
        min-height: 7.1rem;
    }

    .archive-card__body {
        padding: 0.78rem 0.85rem 0.75rem;
    }

    .archive-card__meta {
        font-size: 0.56rem;
    }

    .archive-card__title-row {
        gap: 0.42rem;
        margin: 0.42rem 0 0.58rem;
    }

    .md-typeset .archive-card__title {
        font-size: 0.96rem;
        line-height: 1.28;
    }

    .archive-card__category {
        max-width: 9rem;
        padding: 0.28rem 0.48rem;
        font-size: 0.54rem;
    }

    .archive-card__status {
        padding: 0.27rem 0.45rem;
        font-size: 0.52rem;
    }
}

@media (prefers-reduced-motion: reduce) {
    .archive-card,
    .archive-card__image,
    .archive-card__arrow {
        transition: none;
    }
}

/* ==========================================================================
   Academic Homepage
   ========================================================================== */

body,
.academic-home-layout {
    --academic-card-bg: rgba(255, 255, 255, 0.82);
    --academic-card-border: rgba(15, 23, 42, 0.1);
    --academic-muted: #64748b;
    --academic-ink: #111827;
    --academic-accent: #003F88;
    --academic-date: #14796d;
    --academic-rule: #b45f16;
    --academic-soft: rgba(0, 63, 136, 0.06);
}

body[data-md-color-scheme="slate"],
body[data-md-color-scheme="slate"] .academic-home-layout {
    --md-default-bg-color: #0d1117;
    --academic-card-bg: #0d1117;
    --academic-card-border: #30363d;
    --academic-muted: #8b949e;
    --academic-ink: #c9d1d9;
    --academic-accent: #58a6ff;
    --academic-date: #3fb950;
    --academic-rule: #30363d;
    --academic-soft: #161b22;
}

body[data-md-color-scheme="slate"],
body[data-md-color-scheme="slate"] .md-main,
body[data-md-color-scheme="slate"] .md-content,
body[data-md-color-scheme="slate"] .md-content__inner {
    background-color: #0d1117 !important;
}


.academic-content {
    display: flex;
    flex-direction: column;
    gap: clamp(1.7rem, 3vw, 2.45rem);
    min-width: 0;
}

/* ==========================================================================
   正文排版系统精修 (Typography & Spacing Polish)
   ========================================================================== */

/* --- 1. 标题装饰横线优化 --- */
.title-dash {
    display: inline-block;
    width: 2rem;
    height: 2px;
    background: var(--academic-rule);
    border-radius: 2px;
}

/* --- 2. 正文段落 (Spacing & Measure) --- */
.academic-section {
    display: flex;
    flex-direction: column;
    gap: 0;
    width: 100%;
}

.academic-section p {
    max-width: 100%;
    margin: 0 0 1.1rem 0;
    color: var(--md-default-fg-color);
    font-size: 0.96rem;
    line-height: 1.75;
    -webkit-font-smoothing: antialiased;
}

.academic-section p:last-child {
    margin-bottom: 0;
}

.md-typeset .about-focus-list {
    margin: 0 0 1.1rem 0 !important;
    padding: 0 !important;
    list-style: none outside none !important;
    list-style-type: none !important;
}

.md-typeset .about-focus-list li {
    display: block !important;
    position: relative;
    margin: 0 0 0.55rem 0 !important;
    padding-left: 0.9rem !important;
    color: var(--md-default-fg-color);
    font-size: 0.96rem;
    line-height: 1.75;
    -webkit-font-smoothing: antialiased;
}

.md-typeset .about-focus-list li:last-child {
    margin-bottom: 0 !important;
}

.md-typeset .about-focus-list li::before {
    content: "•";
    position: absolute;
    left: 0;
    color: var(--academic-ink);
    font-weight: 700;
}

[data-md-color-scheme="slate"] .md-typeset .about-focus-list li {
    color: #cbd5e1;
    font-weight: 300;
}

[data-md-color-scheme="slate"] .md-typeset .about-focus-list li::before {
    color: #f8fafc;
}

/* --- 3. 正文超链接高级定制 (Academic Links) --- */
.academic-section p a {
    color: var(--academic-accent) !important;
    font-weight: 500;
    text-decoration: none !important;
    border-bottom: 1px solid rgba(0, 63, 136, 0.2);
    padding-bottom: 1px;
    transition: all 0.25s ease;
}

.academic-section p a:hover {
    color: var(--md-primary-fg-color--light) !important;
    border-bottom-color: var(--academic-accent);
    background: rgba(0, 63, 136, 0.04);
}

/* --- 4. 暗色模式 (Slate) 深度优化 --- */
[data-md-color-scheme="slate"] .academic-section p {
    color: #cbd5e1;
    font-weight: 300;
}

[data-md-color-scheme="slate"] .academic-section p a {
    color: #93c5fd !important;
    border-bottom: 1px solid rgba(147, 197, 253, 0.2);
}

[data-md-color-scheme="slate"] .academic-section p a:hover {
    color: #bfdbfe !important;
    border-bottom-color: #93c5fd;
    background: rgba(147, 197, 253, 0.08);
}

.animate-slide-up {
    opacity: 0;
    transform: translateY(1rem);
    animation: academicSlideUp 0.72s cubic-bezier(0.16, 1, 0.3, 1) forwards;
    animation-delay: var(--anim-delay, 0s);
}

@keyframes academicSlideUp {
    to {
        opacity: 1;
        transform: translateY(0);
    }
}

.news-list,
.award-list {
    margin: 0 !important;
    padding: 0 !important;
    list-style: none !important;
}

.news-list {
    border-top: 0;
}

.news-list li {
    display: grid !important;
    grid-template-columns: 5.2rem minmax(0, 1fr) !important;
    gap: 0.8rem;
    align-items: start;
    padding: 0.6rem 0 !important;
    margin: 0 !important;
    border-bottom: 1px dashed var(--academic-card-border) !important;
}

.news-list li:last-child {
    border-bottom: none !important;
}

.award-year,
.cv-time,
.proj-year {
    color: var(--academic-date) !important;
    font-family: "JetBrains Mono", "Fira Code", monospace !important;
    font-size: 0.76rem;
    font-weight: 700 !important;
    letter-spacing: 0.03em;
}

.news-date {
    color: var(--academic-date) !important;
    font-family: "JetBrains Mono", "Fira Code", monospace !important;
    font-size: 0.76rem;
    font-weight: 700 !important;
    letter-spacing: 0.03em;
    text-transform: uppercase;
}

.news-text {
    color: var(--md-default-fg-color);
    margin: 0;
    font-size: 0.9rem;
    line-height: 1.45;
}


.education-card,
.project-card,
.visitor-container {
    background: var(--academic-card-bg);
    border: 1px solid var(--academic-card-border);
    border-radius: 8px;
    box-shadow: 0 12px 32px rgba(15, 23, 42, 0.04);
}

.hover-lift {
    transition:
        transform 0.38s cubic-bezier(0.16, 1, 0.3, 1),
        box-shadow 0.38s cubic-bezier(0.16, 1, 0.3, 1),
        border-color 0.25s ease;
}

.hover-lift:hover {
    transform: translateY(-3px);
    border-color: rgba(0, 63, 136, 0.28);
    box-shadow: 0 18px 42px rgba(15, 23, 42, 0.08);
}

[data-md-color-scheme="slate"] .hover-lift:hover {
    border-color: rgba(88, 166, 255, 0.45);
    box-shadow: none;
}

.md-typeset .proj-header h3,
.md-typeset .cv-title {
    margin: 0 !important;
    color: var(--academic-ink) !important;
    font-family: "Inter", "Noto Sans SC", sans-serif !important;
    line-height: 1.36;
    letter-spacing: 0 !important;
}

.grid-cards {
    display: grid;
    grid-template-columns: 1fr;
    gap: 1rem;
}

.project-card {
    display: flex;
    min-height: 10.2rem;
    flex-direction: column;
    padding: 1rem;
}

.proj-header {
    display: flex;
    gap: 0.75rem;
    align-items: flex-start;
    justify-content: space-between;
    margin-bottom: 0.65rem;
}

.md-typeset .proj-header h3 {
    font-size: 0.98rem;
}

.proj-year,
.award-year {
    display: inline-flex;
    align-items: center;
    min-height: 1.35rem;
    padding: 0 0.42rem;
    background: var(--academic-soft);
    border-radius: 4px;
}

.project-card p {
    flex: 1;
    margin-bottom: 0.9rem;
    color: var(--academic-muted);
    font-size: 0.86rem;
    line-height: 1.58;
}

.proj-tags {
    display: flex;
    flex-wrap: wrap;
    gap: 0.45rem;
}

.proj-tags span {
    display: inline-flex;
    align-items: center;
    min-height: 1.6rem;
    padding: 0.22rem 0.62rem;
    color: var(--academic-accent);
    background: var(--academic-soft);
    border: 1px solid transparent;
    border-radius: 999px;
    font-size: 0.74rem;
    font-weight: 650;
}

.education-card {
    display: grid;
    grid-template-columns: 6.8rem minmax(0, 1fr);
    gap: 1.25rem;
    align-items: center;
    padding: 1.25rem 1.35rem;
}

.education-logo {
    display: flex;
    width: 5.2rem;
    height: 5.2rem;
    align-items: center;
    justify-content: center;
    padding: 0.5rem;
    background: rgba(255, 255, 255, 0.88);
    border: 1px solid var(--academic-card-border);
    border-radius: 8px;
}

.education-logo img {
    display: block;
    max-width: 100%;
    max-height: 100%;
    object-fit: contain;
}

.education-info {
    display: grid;
    gap: 0.26rem;
}

.md-typeset .education-school {
    margin: 0 !important;
    font-family: "Inter", "Noto Sans SC", sans-serif !important;
    font-size: 1.08rem !important;
    font-weight: 800 !important;
    line-height: 1.32;
    letter-spacing: 0 !important;
}

.md-typeset .education-school a,
.md-typeset .education-school a:hover {
    color: var(--academic-ink);
    text-decoration: none;
    transition: color 0.2s ease;
}

.md-typeset .education-school a:hover {
    color: var(--academic-accent);
}

.education-degree,
.education-time {
    margin: 0 !important;
    color: var(--md-default-fg-color);
    font-size: 0.94rem !important;
    font-weight: 650;
    line-height: 1.38 !important;
}

.education-time {
    color: var(--academic-muted) !important;
    font-weight: 700;
}

.timeline-cv {
    display: flex;
    flex-direction: column;
    gap: 1.4rem;
    margin-top: 0.2rem;
    padding-left: 0.8rem;
    border-left: 1px solid var(--academic-card-border);
}

.cv-item {
    position: relative;
    padding-left: 1.25rem;
}

.cv-marker {
    position: absolute;
    top: 0.32rem;
    left: -1.08rem;
    width: 0.62rem;
    height: 0.62rem;
    background: var(--md-default-bg-color);
    border: 2px solid var(--academic-accent);
    border-radius: 50%;
    transition: background-color 0.25s ease, box-shadow 0.25s ease;
}

.cv-item:hover .cv-marker {
    background: var(--academic-accent);
    box-shadow: 0 0 0 5px var(--academic-soft);
}

.md-typeset .cv-title {
    font-size: 0.98rem;
}

.cv-subtitle {
    margin: 0.2rem 0 0 !important;
    color: var(--md-default-fg-color);
    font-size: 0.9rem !important;
}

.cv-time {
    margin: 0.2rem 0 0.45rem !important;
}

.cv-desc {
    margin: 0 !important;
    padding-left: 1.15rem !important;
    color: var(--academic-muted);
    font-size: 0.86rem;
    line-height: 1.58;
}

.award-list {
    display: flex;
    flex-direction: column;
    gap: 0;
}

.award-list li {
    display: grid !important;
    grid-template-columns: 6.8rem minmax(0, 1fr);
    gap: 0.9rem;
    align-items: baseline;
    padding: 0.64rem 0;
    border-bottom: 1px solid var(--academic-card-border);
    color: var(--md-default-fg-color);
    font-size: 0.9rem;
    line-height: 1.44;
}

.award-list .award-year {
    display: inline;
    min-height: 0;
    padding: 0;
    color: var(--academic-date) !important;
    background: transparent;
    border-radius: 0;
    white-space: nowrap;
    text-transform: uppercase;
}

.award-copy {
    min-width: 0;
    color: var(--md-default-fg-color);
}

.award-copy strong {
    color: var(--academic-accent) !important;
    background: transparent !important;
    padding: 0 !important;
    font-family: "Inter", "Noto Sans SC", sans-serif;
    font-weight: 750;
}

.award-separator {
    color: var(--academic-muted);
    padding: 0 0.28rem;
}

.visitor-container {
    position: relative;
    display: block;
    overflow: hidden;
    min-height: 16rem;
    padding: 1rem;
    text-align: center;
}

.visitor-container iframe,
.visitor-container img,
.visitor-container canvas {
    display: block;
    width: 100%;
    max-width: 100%;
    margin: 0 auto;
}

@media screen and (max-width: 58rem) {
    .grid-cards {
        grid-template-columns: 1fr;
    }
}

@media screen and (max-width: 36rem) {


    .news-list li,
    .award-list li {
        grid-template-columns: 1fr;
        gap: 0.35rem;
    }

    .education-card {
        grid-template-columns: 1fr;
        gap: 0.9rem;
        justify-items: center;
        text-align: center;
    }

    .education-logo {
        width: 5rem;
        height: 5rem;
    }

}

@media (prefers-reduced-motion: reduce) {
    .animate-slide-up {
        animation: none !important;
    }

    .animate-slide-up {
        opacity: 1;
        transform: none;
    }

    .hover-lift {
        transition: none !important;
    }
}

/* ==========================================================================
   Overview emphasis
   ========================================================================== */


[data-md-color-scheme="default"] .md-typeset strong {
    color: #1f2328 !important;
    font-weight: 600;
}

[data-md-color-scheme="slate"] .md-typeset strong {
    color: #f0f6fc !important;
    font-weight: 600;
}

body.is-homepage .academic-section p strong,
body.is-homepage .news-text strong,
.academic-home-layout .academic-section p strong,
.academic-home-layout .news-text strong {
    color: var(--academic-ink) !important;
    background: rgba(175, 184, 193, 0.18) !important;
    border-radius: 4px;
    padding: 0.08em 0.28em;
    font-family: inherit;
    font-weight: 600;
}

body[data-md-color-scheme="slate"].is-homepage .academic-section p strong,
body[data-md-color-scheme="slate"].is-homepage .news-text strong,
body[data-md-color-scheme="slate"] .academic-home-layout .academic-section p strong,
body[data-md-color-scheme="slate"] .academic-home-layout .news-text strong {
    color: #f0f6fc !important;
    background: rgba(110, 118, 129, 0.3) !important;
}

/* ==========================================================================
   Awards names
   ========================================================================== */


.award-name {
    color: var(--academic-muted);
    font-weight: 500;
}

[data-md-color-scheme="slate"] .award-name {
    color: #8b949e;
}

/* ==========================================================================
   HOME subpage content
   ========================================================================== */


.academic-home-layout--subpage .academic-content {
    min-width: 0;
}


/* ==========================================================================
   Desktop frame hygiene
   ========================================================================== */


@media screen and (min-width: 76.25em) {
    :root {
        --compact-header-height: 3.5rem;
    }


    .md-sidebar,
    .md-sidebar--primary,
    .md-sidebar--secondary,
    .md-sidebar__inner,
    .md-sidebar__scrollwrap,
    .md-content,
    .md-content__inner,
    .md-main__inner {
        border-left: 0 !important;
        border-right: 0 !important;
        box-shadow: none !important;
    }

    .md-sidebar::before,
    .md-sidebar::after,
    .md-sidebar--primary::before,
    .md-sidebar--primary::after,
    .md-sidebar--secondary::before,
    .md-sidebar--secondary::after,
    .md-content::before,
    .md-content::after,
    .md-main__inner::before,
    .md-main__inner::after {
        display: none !important;
        content: none !important;
        border: 0 !important;
    }


}

/* ==========================================================================
   Final fixed GitHub frame and profile stability pass
   ========================================================================== */

:root {
    --github-frame-light-bg: #f6f8fa;
    --github-frame-light-border: #d0d7de;
    --github-frame-dark-bg: #0d1117;
    --github-frame-dark-border: #30363d;
}

body[data-md-color-scheme="default"],
body[data-md-color-scheme="default"] .md-container,
body[data-md-color-scheme="default"] .md-main,
body[data-md-color-scheme="default"] .md-content,
body[data-md-color-scheme="default"] .md-content__inner,
body[data-md-color-scheme="default"] .academic-home-layout {
    background: var(--github-frame-light-bg) !important;
    background-color: var(--github-frame-light-bg) !important;
    background-image: none !important;
}

body[data-md-color-scheme="slate"],
body[data-md-color-scheme="slate"] .md-container,
body[data-md-color-scheme="slate"] .md-main,
body[data-md-color-scheme="slate"] .md-content,
body[data-md-color-scheme="slate"] .md-content__inner,
body[data-md-color-scheme="slate"] .academic-home-layout {
    background: var(--github-frame-dark-bg) !important;
    background-color: var(--github-frame-dark-bg) !important;
    background-image: none !important;
}


@media screen and (min-width: 76.25em) {
    html {
        scroll-padding-top: var(--compact-header-height, 3.5rem) !important;
    }


    .md-main {
        padding-top: 0 !important;
    }


}

/* ==========================================================================
   EdwinOS 2.0.3 header source and friends-page polish
   ========================================================================== */

:root {
    --edwinos-star-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M8 .25a.75.75 0 0 1 .673.418l1.882 3.815 4.21.612a.75.75 0 0 1 .416 1.279l-3.046 2.97.719 4.192a.751.751 0 0 1-1.088.791L8 12.347l-3.766 1.98a.75.75 0 0 1-1.088-.79l.72-4.194-3.047-2.97a.75.75 0 0 1 .416-1.28l4.21-.611L7.327.668A.75.75 0 0 1 8 .25Z'/%3E%3C/svg%3E");
    --edwinos-fork-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M5 3.25a1.75 1.75 0 1 1-2.5 1.58v6.34a1.75 1.75 0 1 1-1.5 0V4.83A1.75 1.75 0 1 1 5 3.25Zm6.5-1.75a1.75 1.75 0 1 1-1.5 2.664V5a2.5 2.5 0 0 1-2.5 2.5h-1A1.5 1.5 0 0 0 5 9v2.17a1.75 1.75 0 1 1-1.5 0V9a3 3 0 0 1 3-3h1a1 1 0 0 0 1-1v-.836A1.75 1.75 0 0 1 11.5 1.5Z'/%3E%3C/svg%3E");
}


/* ==========================================================================
   EdwinOS 2.0.3 source micro-alignment pass
   ========================================================================== */


/* ==========================================================================
   Narrow viewport guardrails
   ========================================================================== */

@media screen and (max-width: 58rem) {


    .academic-content {
        width: 100% !important;
        min-width: 0 !important;
    }


    .visitor-container {
        width: 100% !important;
        min-width: 0 !important;
    }
}

/* ==========================================================================
   Overview density and responsive flow
   ========================================================================== */


body.is-homepage .academic-content,
body.is-home-profile-page .academic-content,
body:has(.academic-home-layout) .academic-content {
    gap: clamp(1.15rem, 2vw, 1.7rem) !important;
}

body.is-homepage .title-dash,
body.is-home-profile-page .title-dash,
body:has(.academic-home-layout) .title-dash {
    width: 1.45rem !important;
}


body.is-homepage .project-card,
body.is-homepage .education-card,
body.is-homepage .visitor-container,
body.is-home-profile-page .project-card,
body.is-home-profile-page .education-card,
body.is-home-profile-page .visitor-container,
body:has(.academic-home-layout) .project-card,
body:has(.academic-home-layout) .education-card,
body:has(.academic-home-layout) .visitor-container {
    padding: 0.85rem !important;
}

body.is-homepage .project-card,
body.is-home-profile-page .project-card,
body:has(.academic-home-layout) .project-card {
    min-height: 8.4rem !important;
}

body.is-homepage .education-card,
body.is-home-profile-page .education-card,
body:has(.academic-home-layout) .education-card {
    grid-template-columns: 5.4rem minmax(0, 1fr) !important;
    gap: 0.95rem !important;
}

body.is-homepage .education-logo,
body.is-home-profile-page .education-logo,
body:has(.academic-home-layout) .education-logo {
    width: 4.4rem !important;
    height: 4.4rem !important;
}


@media screen and (max-width: 48em) {


    body.is-homepage .education-card,
    body.is-home-profile-page .education-card,
    body:has(.academic-home-layout) .education-card {
        grid-template-columns: minmax(0, 1fr) !important;
    }
}

body.is-homepage .md-typeset .about-focus-list li,
body.is-homepage .project-card p,
body.is-homepage .cv-desc,
body.is-homepage .award-list li,
body.is-home-profile-page .md-typeset .about-focus-list li,
body.is-home-profile-page .project-card p,
body.is-home-profile-page .cv-desc,
body.is-home-profile-page .award-list li,
body:has(.academic-home-layout) .md-typeset .about-focus-list li,
body:has(.academic-home-layout) .project-card p,
body:has(.academic-home-layout) .cv-desc,
body:has(.academic-home-layout) .award-list li {
    font-size: 0.76rem !important;
    line-height: 1.48 !important;
}


@media screen and (max-width: 48em) {
    body.is-homepage .md-typeset .about-focus-list li,
    body.is-homepage .project-card p,
    body.is-homepage .cv-desc,
    body.is-homepage .award-list li,
    body.is-home-profile-page .md-typeset .about-focus-list li,
    body.is-home-profile-page .project-card p,
    body.is-home-profile-page .cv-desc,
    body.is-home-profile-page .award-list li,
    body:has(.academic-home-layout) .md-typeset .about-focus-list li,
    body:has(.academic-home-layout) .project-card p,
    body:has(.academic-home-layout) .cv-desc,
    body:has(.academic-home-layout) .award-list li {
        font-size: 0.74rem !important;
    }
}


body.is-homepage .academic-section p,
body.is-homepage .academic-section li,
body.is-homepage .news-text,
body.is-homepage .education-degree,
body.is-homepage .education-time,
body.is-homepage .cv-subtitle,
body.is-homepage .cv-time,
body.is-homepage .award-copy,
body.is-home-profile-page .academic-section p,
body.is-home-profile-page .academic-section li,
body.is-home-profile-page .news-text,
body.is-home-profile-page .education-degree,
body.is-home-profile-page .education-time,
body.is-home-profile-page .cv-subtitle,
body.is-home-profile-page .cv-time,
body.is-home-profile-page .award-copy,
body:has(.academic-home-layout) .academic-section p,
body:has(.academic-home-layout) .academic-section li,
body:has(.academic-home-layout) .news-text,
body:has(.academic-home-layout) .education-degree,
body:has(.academic-home-layout) .education-time,
body:has(.academic-home-layout) .cv-subtitle,
body:has(.academic-home-layout) .cv-time,
body:has(.academic-home-layout) .award-copy {
    font-size: 0.76rem !important;
    line-height: 1.48 !important;
}

body.is-homepage .project-card h3,
body.is-homepage .education-school,
body.is-homepage .cv-title,
body.is-home-profile-page .project-card h3,
body.is-home-profile-page .education-school,
body.is-home-profile-page .cv-title,
body:has(.academic-home-layout) .project-card h3,
body:has(.academic-home-layout) .education-school,
body:has(.academic-home-layout) .cv-title {
    font-size: 0.84rem !important;
    line-height: 1.35 !important;
}

body.is-homepage .news-date,
body.is-homepage .proj-year,
body.is-homepage .award-year,
body.is-homepage .proj-tags span,
body.is-home-profile-page .news-date,
body.is-home-profile-page .proj-year,
body.is-home-profile-page .award-year,
body.is-home-profile-page .proj-tags span,
body:has(.academic-home-layout) .news-date,
body:has(.academic-home-layout) .proj-year,
body:has(.academic-home-layout) .award-year,
body:has(.academic-home-layout) .proj-tags span {
    font-size: 0.64rem !important;
    line-height: 1.25 !important;
}

@media screen and (max-width: 48em) {


    body.is-homepage .academic-section p,
body.is-homepage .academic-section li,
body.is-home-profile-page .academic-section p,
body.is-home-profile-page .academic-section li,
body:has(.academic-home-layout) .academic-section p,
body:has(.academic-home-layout) .academic-section li {
        font-size: 0.74rem !important;
    }
}


/* ==========================================================================
 * 2. EdwinOS final component layer
 * ==========================================================================
 * Component-specific final resolutions live below. This layer must remain
 * after the historical baseline unless a verified migration changes both.
 */

@font-face {
    font-family: "Caveat";
    src: url("../assets/fonts/caveat/caveat-latin.woff2") format("woff2");
    font-style: normal;
    font-weight: 400 700;
    font-display: swap;
}

@font-face {
    font-family: "Outfit EdwinOS";
    src: url("../assets/fonts/outfit/outfit-latin.woff2") format("woff2");
    font-style: normal;
    font-weight: 300 700;
    font-display: swap;
    unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC,
        U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F,
        U+20AC, U+2122, U+2191-2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

@font-face {
    font-family: "Outfit EdwinOS";
    src: url("../assets/fonts/outfit/outfit-latin-ext.woff2") format("woff2");
    font-style: normal;
    font-weight: 300 700;
    font-display: swap;
    unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC,
        U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329,
        U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020,
        U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}

@font-face {
    font-family: "Noto Sans SC EdwinOS";
    src: url("../assets/fonts/noto-sans-sc/noto-sans-sc-overview.woff2") format("woff2");
    font-style: normal;
    font-weight: 300 700;
    font-display: swap;
    unicode-range: U+00B7, U+2014, U+2192, U+4E0B, U+4E2D, U+4E8E,
        U+4EF6, U+5145, U+5173, U+5728, U+5BB8, U+5E74, U+5F00,
        U+603B, U+6253, U+63D2, U+65E0, U+6CD5, U+7684, U+7CFB,
        U+7EC8, U+7ECF, U+7ED3, U+7EDF, U+8865, U+95EE, U+9898,
        U+FF1A;
}

/* ==========================================================================
   Typography
   ========================================================================== */

:root {
    --edwinos-font-serif: "Source Serif 4", Georgia, "Noto Serif SC", serif;
    --edwinos-font-hand: "Caveat", cursive;
    --edwinos-font-mono: "JetBrains Mono", "Courier New", monospace;
    --edwinos-font-reading-sans: "Outfit EdwinOS", "Noto Sans SC EdwinOS",
        "PingFang SC", "Microsoft YaHei", sans-serif;
}

body,
.md-typeset,
.md-content,
.academic-content,
.academic-section,
.archive-hero__lead,
.archive-note,
.friend-desc {
    font-family: var(--edwinos-font-serif) !important;
}

/* Overview section titles: base layout, final typeface, then route density. */
.section-title {
    display: flex;
    align-items: center;
    gap: 0.8rem;
    margin: 0 0 1.2rem 0 !important;
    color: var(--academic-ink) !important;
    border-bottom: 0 !important;
    font-family: "Inter", "Noto Sans SC", sans-serif !important;
    font-size: 1.35rem !important;
    font-weight: 750 !important;
    letter-spacing: 0 !important;
}

.md-typeset .section-title,
.section-title,
.md-typeset .archive-hero h1,
.archive-hero h1,
.md-typeset .archive-year__heading h2,
.archive-year__heading h2 {
    font-family: var(--edwinos-font-hand) !important;
    letter-spacing: 0 !important;
}

body.is-homepage .md-typeset .proj-header h3,
body.is-home-profile-page .md-typeset .proj-header h3,
body:has(.academic-home-layout) .md-typeset .proj-header h3,
body.is-homepage .md-typeset .education-school,
body.is-homepage .md-typeset .education-school a,
body.is-home-profile-page .md-typeset .education-school,
body.is-home-profile-page .md-typeset .education-school a,
body:has(.academic-home-layout) .md-typeset .education-school,
body:has(.academic-home-layout) .md-typeset .education-school a,
body.is-homepage .md-typeset .cv-title,
body.is-home-profile-page .md-typeset .cv-title,
body:has(.academic-home-layout) .md-typeset .cv-title,
body.is-homepage .md-typeset .archive-card__title,
body.is-home-profile-page .md-typeset .archive-card__title,
body:has(.academic-home-layout) .md-typeset .archive-card__title,
body.is-homepage .md-typeset .friend-name,
body.is-home-profile-page .md-typeset .friend-name,
body:has(.academic-home-layout) .md-typeset .friend-name {
    font-family: var(--edwinos-font-serif) !important;
    letter-spacing: 0 !important;
}

body.is-homepage .section-title,
body.is-home-profile-page .section-title,
body:has(.academic-home-layout) .section-title {
    gap: 0.55rem !important;
    margin-bottom: 0.85rem !important;
    font-size: 1.48rem !important;
    font-weight: 700 !important;
    line-height: 1.08 !important;
}


body.is-homepage .md-typeset .proj-header h3,
body.is-home-profile-page .md-typeset .proj-header h3,
body:has(.academic-home-layout) .md-typeset .proj-header h3,
body.is-homepage .md-typeset .education-school,
body.is-homepage .md-typeset .education-school a,
body.is-home-profile-page .md-typeset .education-school,
body.is-home-profile-page .md-typeset .education-school a,
body:has(.academic-home-layout) .md-typeset .education-school,
body:has(.academic-home-layout) .md-typeset .education-school a,
body.is-homepage .md-typeset .cv-title,
body.is-home-profile-page .md-typeset .cv-title,
body:has(.academic-home-layout) .md-typeset .cv-title {
    font-size: 1.04rem !important;
    font-weight: 600 !important;
    line-height: 1.28 !important;
}

.md-header,
.md-tabs,
.md-nav,
.md-search,
.md-footer,
.news-date,
.award-year,
.cv-time,
.proj-year,
.education-time,
.archive-hero__eyebrow,
.archive-hero__stats,
.archive-card__meta,
.archive-card__status,
.archive-card__category,
.proj-tags,
.md-typeset code,
.md-typeset pre code {
    font-family: var(--edwinos-font-mono) !important;
}


body.is-homepage .academic-section p,
body.is-homepage .academic-section li,
body.is-homepage .news-text,
body.is-homepage .project-card p,
body.is-homepage .education-degree,
body.is-homepage .cv-subtitle,
body.is-homepage .cv-desc,
body.is-homepage .award-copy {
    font-family: var(--edwinos-font-reading-sans) !important;
    letter-spacing: 0 !important;
}

/* Bold marked text needs a quiet surface in dark articles; the legacy yellow
   fill has insufficient contrast with the surrounding GitHub-dark palette. */
body[data-md-color-scheme="slate"]
.md-content__inner.md-typeset
:is(
    strong > mark,
    strong > .pymdownx-mark,
    mark:has(> strong),
    .pymdownx-mark:has(> strong)
) {
    color: inherit;
    background-color: rgba(177, 186, 196, 0.16);
    box-decoration-break: clone;
    -webkit-box-decoration-break: clone;
}

/* ==========================================================================
   Markdown Lists
   ========================================================================== */

/* Own only Markdown lists. Component lists carry classes and retain their
   component geometry instead of inheriting article indentation and markers. */
.md-typeset :where(ul:not([class]), ol:not([class]), ul.task-list) {
    margin-left: 1.5em !important;
    padding-left: 1em !important;
}

.md-typeset :where(ul:not([class]), ol:not([class]), ul.task-list) li {
    display: list-item !important;
}

.md-typeset :where(ul:not([class]), ul.task-list) {
    list-style-type: disc !important;
}

.md-typeset
:where(ul:not([class]), ul.task-list)
:where(ul:not([class]), ul.task-list) {
    list-style-type: circle !important;
}

.md-typeset
:where(ul:not([class]), ul.task-list)
:where(ul:not([class]), ul.task-list)
:where(ul:not([class]), ul.task-list) {
    list-style-type: square !important;
}

.md-typeset :where(ol:not([class])) {
    list-style-type: decimal !important;
}

.md-typeset :where(ol:not([class])) :where(ol:not([class])) {
    list-style-type: lower-alpha !important;
}

.md-typeset
:where(ol:not([class]))
:where(ol:not([class]))
:where(ol:not([class])) {
    list-style-type: lower-roman !important;
}

/* Root Markdown lists start at the article edge. Material's own direct-li
   margin supplies the marker gutter. Nested lists keep a compact, visible
   hierarchy without starving third- and fourth-level text of line width. */
.md-content__inner.md-typeset
> :is(ul:not([class]), ol:not([class])) {
    margin-inline-start: 0 !important;
    padding-inline-start: 0 !important;
    list-style-position: outside !important;
}

.md-content__inner.md-typeset
li > :is(ul:not([class]), ol:not([class])) {
    margin-inline-start: 0.2em !important;
    padding-inline-start: 1.35em !important;
    list-style-position: outside !important;
}

.md-content__inner.md-typeset
:is(ul:not([class]), ol:not([class])) > li {
    display: list-item !important;
}

@media screen and (max-width: 600px) {
    .md-typeset :where(ul:not([class]), ol:not([class]), ul.task-list) {
        margin-left: 1.2em !important;
    }
}

/* ==========================================================================
   Code Blocks
   ========================================================================== */

body[data-md-color-scheme="default"] {
    --md-code-bg-color: #f2f2f2;
    --md-code-fg-color: #2e3338;
    --edwinos-code-border: rgba(46, 51, 56, 0.12);
    --edwinos-code-title-bg: rgba(46, 51, 56, 0.045);
    --edwinos-inline-code-bg: rgba(46, 51, 56, 0.075);
    --edwinos-inline-code-fg: #9f1d35;
    --edwinos-code-label-fg: rgba(46, 51, 56, 0.52);
}

body[data-md-color-scheme="slate"] {
    --md-code-bg-color: #242424;
    --md-code-fg-color: #dcddde;
    --edwinos-code-border: rgba(255, 255, 255, 0.11);
    --edwinos-code-title-bg: rgba(255, 255, 255, 0.045);
    --edwinos-inline-code-bg: rgba(255, 255, 255, 0.085);
    --edwinos-inline-code-fg: #ff7b72;
    --edwinos-code-label-fg: rgba(220, 221, 222, 0.52);
}

/* The highlight wrapper is the only visual frame. Keeping pre/code frameless
   prevents the doubled top and bottom rules caused by the legacy cascade. */
.md-typeset .highlight {
    margin: 1.15em 0;
    overflow: hidden;
    background: var(--md-code-bg-color);
    border: 1px solid var(--edwinos-code-border);
    border-radius: 0.5rem;
    box-shadow: none;
}

.md-typeset .highlight > pre {
    margin: 0;
    background: transparent;
    border: 0;
    border-radius: 0;
    box-shadow: none;
}

.md-typeset .highlight > pre > code {
    display: block;
    margin: 0;
    padding: 0.82rem 1rem;
    overflow: auto;
    background: transparent;
    border: 0;
    border-radius: 0;
    box-shadow: none;
}

/* Pymdown title support. Untitled blocks have no internal divider. */
.md-typeset .highlight > .filename {
    display: block;
    margin: 0;
    padding: 0.48rem 1rem;
    color: var(--md-default-fg-color--light);
    background: var(--edwinos-code-title-bg);
    border: 0;
    border-bottom: 1px solid var(--edwinos-code-border);
    font-family: var(--edwinos-font-mono);
    font-size: 0.78rem;
    font-weight: 500;
    line-height: 1.45;
}

/* Standalone pre is uncommon with Pymdown, but receives the same single-frame
   treatment without matching pre elements that already live in .highlight. */
.md-typeset pre:not(.highlight > pre) {
    margin: 1.15em 0;
    padding: 0.82rem 1rem;
    overflow: auto;
    background: var(--md-code-bg-color);
    border: 1px solid var(--edwinos-code-border);
    border-radius: 0.5rem;
    box-shadow: none;
}

.md-typeset pre:not(.highlight > pre) > code {
    padding: 0;
    background: transparent;
    border: 0;
    border-radius: 0;
    box-shadow: none;
}

.md-typeset :not(pre) > code {
    padding: 0.1em 0.32em;
    color: var(--edwinos-inline-code-fg);
    background: var(--edwinos-inline-code-bg);
    border: 0;
    border-radius: 0.28rem;
    box-shadow: none;
    -webkit-box-decoration-break: clone;
    box-decoration-break: clone;
}

.md-typeset .md-code__button {
    border-radius: 0.32rem;
}

/* Language metadata and copy share the upper-right utility slot. Code starts
   at the normal first-line position instead of reserving an empty title row. */
.md-typeset .highlight[data-code-language] {
    position: relative;
}

.md-typeset .highlight[data-code-language]::before {
    position: absolute;
    top: 0.25rem;
    inset-inline-end: 2.55rem;
    z-index: 1;
    height: 1.6rem;
    max-width: calc(100% - 5.25rem);
    overflow: hidden;
    color: var(--edwinos-code-label-fg);
    font-family: var(--edwinos-font-serif);
    font-size: 0.58rem;
    font-weight: 400;
    line-height: 1.6rem;
    text-overflow: ellipsis;
    white-space: nowrap;
    content: attr(data-code-language);
    pointer-events: none;
    user-select: none;
    transition: opacity 140ms ease;
}

.md-typeset .highlight[data-code-language]:not(:has(.md-code__nav))::before {
    inset-inline-end: 0.75rem;
}

.md-typeset .highlight[data-code-language] > pre > code {
    padding-top: 0.82rem;
}

.md-typeset .highlight[data-code-language]:has(> .filename) > .filename {
    padding-inline-end: 7rem;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.md-typeset .highlight[data-code-language]:has(> .filename) > pre > code {
    padding-top: 0.82rem;
}

/* Fine pointers can discover the copy control in its actual hit area: the
   language fades out and the button fades in without shifting any code. */
@media (hover: hover) and (pointer: fine) {
    .md-typeset
    .highlight[data-code-language]:not(:has(> .filename))::before {
        inset-inline-end: 0.45rem;
        padding-inline: 0.28rem;
        background: var(--md-code-bg-color);
        border-radius: 0.28rem;
    }

    .md-typeset
    .highlight[data-code-language]:not(:has(> .filename))
    .md-code__nav {
        opacity: 0;
        transition: opacity 140ms ease, background-color 250ms;
    }

    .md-typeset
    .highlight[data-code-language]:not(:has(> .filename))
    .md-code__nav:is(:hover, :focus-within) {
        opacity: 1;
    }

    .md-typeset
    .highlight[data-code-language]:not(:has(> .filename)):has(.md-code__nav:hover)::before,
    .md-typeset
    .highlight[data-code-language]:not(:has(> .filename)):has(.md-code__nav:focus-within)::before {
        opacity: 0;
    }
}

@media screen and (max-width: 44.984375em) {
    .md-typeset .highlight[data-code-language]::before {
        inset-inline-end: 2.25rem;
        font-size: 0.56rem;
    }

    .md-typeset .highlight[data-code-language] > pre > code {
        padding: 0.72rem 0.75rem;
    }

    .md-typeset .highlight[data-code-language]:has(> .filename) > pre > code {
        padding-top: 0.72rem;
    }
}

@media print {
    .md-typeset .highlight[data-code-language]::before {
        inset-inline-end: 0.75rem;
    }
}

/* ==========================================================================
   Callouts
   ========================================================================== */

.md-typeset :is(.admonition, details) {
    --edwinos-callout-rgb: 8, 109, 221;
    --edwinos-callout-alpha: 0.1;
    margin: 1.1em 0;
    padding: 0.58rem 0.72rem;
    overflow: visible;
    color: var(--md-default-fg-color);
    background: rgba(var(--edwinos-callout-rgb), var(--edwinos-callout-alpha));
    border: 0;
    border-radius: 0.48rem;
    box-shadow: none;
    font-size: 0.8rem;
    line-height: 1.55;
}

.md-typeset :is(.admonition, details):focus-within {
    box-shadow: none;
}

.md-typeset :is(.admonition, details) > :is(.admonition-title, summary) {
    position: relative;
    display: block;
    min-height: 1.25rem;
    margin: 0;
    padding: 0 0 0 1.55rem;
    color: rgb(var(--edwinos-callout-rgb));
    background: transparent;
    border: 0;
    border-radius: 0;
    font-size: 1em;
    font-weight: 600;
    line-height: 1.45;
}

.md-typeset details > summary {
    padding-right: 1.7rem;
    cursor: pointer;
}

/* Animated Obsidian-style callouts keep the card itself fill-only. The
   runtime temporarily clips the height while the body is revealed, so the
   card grows and the following content moves as one continuous motion. */
.md-typeset details[data-edwinos-callout] {
    border: 0 !important;
    border-color: transparent !important;
    outline: 0;
    box-shadow: none !important;
}

.md-typeset details[data-edwinos-callout][data-edwinos-callout-state]
> summary {
    -webkit-user-select: none;
    user-select: none;
}

.md-typeset details:not([open]) {
    padding-bottom: 0.58rem;
}

.md-typeset :is(.admonition, details) > :is(.admonition-title, summary)::before {
    position: absolute;
    top: 0.12em;
    left: 0;
    width: 1.08rem;
    height: 1.08rem;
    margin: 0;
    background-color: rgb(var(--edwinos-callout-rgb));
}

.md-typeset details > summary::after {
    top: 50%;
    right: 0;
    width: 1.08rem;
    height: 1.08rem;
    margin: 0;
    background-color: rgb(var(--edwinos-callout-rgb));
    transform: translateY(-50%);
    transform-origin: center;
    transition: transform 240ms cubic-bezier(0.22, 1, 0.36, 1);
}

.md-typeset details[open] > summary::after,
.md-typeset details[data-edwinos-callout-state="opening"] > summary::after {
    transform: translateY(-50%) rotate(90deg);
}

.md-typeset details[data-edwinos-callout-state="closing"] > summary::after {
    transform: translateY(-50%);
}

.md-typeset details > summary:focus-visible {
    outline: 2px solid rgba(var(--edwinos-callout-rgb), 0.42);
    outline-offset: 0.22rem;
    border-radius: 0.2rem;
}

.md-typeset .admonition > :not(.admonition-title),
.md-typeset details[open] > :not(summary) {
    margin-top: 0.52rem;
    margin-bottom: 0;
}

.md-typeset :is(.admonition, details) > :is(ul, ol) {
    margin-left: 1.1em !important;
    padding-left: 0.9em !important;
}

/* Keep the PHIL 206 usage card's nested bullets compact and readable. */
.md-typeset #phil-206-notes + p + details.tip li > :is(ul, ol) {
    margin-inline-start: 0 !important;
    padding-inline-start: 1.5em !important;
}

.md-typeset :is(.admonition, details) > :is(.admonition-title, summary) code {
    padding: 0.06em 0.26em;
    color: inherit;
    background: rgba(var(--edwinos-callout-rgb), 0.1);
}

.md-typeset :is(.admonition, details) :is(.admonition, details) {
    --edwinos-callout-alpha: 0.13;
}

body[data-md-color-scheme="slate"] .md-typeset :is(.admonition, details) {
    --edwinos-callout-alpha: 0.12;
}

body[data-md-color-scheme="slate"] .md-typeset :is(.admonition, details) :is(.admonition, details) {
    --edwinos-callout-alpha: 0.15;
}

.md-typeset :is(.admonition.note, .admonition.info, .admonition.todo, details.note, details.info, details.todo) {
    --edwinos-callout-rgb: 8, 109, 221;
}

.md-typeset :is(.admonition.abstract, .admonition.summary, .admonition.tldr, .admonition.tip, .admonition.hint, .admonition.important, details.abstract, details.summary, details.tldr, details.tip, details.hint, details.important) {
    --edwinos-callout-rgb: 0, 191, 188;
}

.md-typeset :is(.admonition.success, .admonition.check, .admonition.done, details.success, details.check, details.done) {
    --edwinos-callout-rgb: 8, 185, 78;
}

.md-typeset :is(.admonition.question, .admonition.help, .admonition.faq, details.question, details.help, details.faq) {
    --edwinos-callout-rgb: 224, 172, 0;
}

.md-typeset :is(.admonition.warning, .admonition.caution, .admonition.attention, details.warning, details.caution, details.attention) {
    --edwinos-callout-rgb: 236, 117, 0;
}

.md-typeset :is(.admonition.failure, .admonition.fail, .admonition.missing, .admonition.danger, .admonition.error, .admonition.bug, details.failure, details.fail, details.missing, details.danger, details.error, details.bug) {
    --edwinos-callout-rgb: 233, 49, 71;
}

.md-typeset :is(.admonition.example, details.example) {
    --edwinos-callout-rgb: 120, 82, 238;
}

.md-typeset :is(.admonition.quote, .admonition.cite, details.quote, details.cite) {
    --edwinos-callout-rgb: 112, 118, 125;
}

body[data-md-color-scheme="slate"] .md-typeset :is(.admonition.note, .admonition.info, .admonition.todo, details.note, details.info, details.todo) {
    --edwinos-callout-rgb: 2, 122, 255;
}

body[data-md-color-scheme="slate"] .md-typeset :is(.admonition.abstract, .admonition.summary, .admonition.tldr, .admonition.tip, .admonition.hint, .admonition.important, details.abstract, details.summary, details.tldr, details.tip, details.hint, details.important) {
    --edwinos-callout-rgb: 83, 223, 221;
}

body[data-md-color-scheme="slate"] .md-typeset :is(.admonition.success, .admonition.check, .admonition.done, details.success, details.check, details.done) {
    --edwinos-callout-rgb: 68, 207, 110;
}

body[data-md-color-scheme="slate"] .md-typeset :is(.admonition.question, .admonition.help, .admonition.faq, details.question, details.help, details.faq) {
    --edwinos-callout-rgb: 224, 222, 113;
}

body[data-md-color-scheme="slate"] .md-typeset :is(.admonition.warning, .admonition.caution, .admonition.attention, details.warning, details.caution, details.attention) {
    --edwinos-callout-rgb: 233, 151, 63;
}

body[data-md-color-scheme="slate"] .md-typeset :is(.admonition.failure, .admonition.fail, .admonition.missing, .admonition.danger, .admonition.error, .admonition.bug, details.failure, details.fail, details.missing, details.danger, details.error, details.bug) {
    --edwinos-callout-rgb: 251, 70, 76;
}

body[data-md-color-scheme="slate"] .md-typeset :is(.admonition.example, details.example) {
    --edwinos-callout-rgb: 168, 130, 255;
}

body[data-md-color-scheme="slate"] .md-typeset :is(.admonition.quote, .admonition.cite, details.quote, details.cite) {
    --edwinos-callout-rgb: 166, 171, 178;
}

/* ==========================================================================
   Header, tabs, search, and source
   ========================================================================== */

/* Retained palette, controls, tabs and search state primitives.
   Values below survive the historical cascade; geometry is owned by the
   responsive coordinate system that follows. The unscoped source primitives
   also serve Material's drawer repository, outside the header. */

.md-search__input {
    transition: all 0.3s ease;
}

.md-search__suggest {
    display: none !important;
}

[data-md-color-scheme="slate"] .md-header .md-header__title,
[data-md-color-scheme="slate"] .md-header .md-header__topic,
[data-md-color-scheme="slate"] .md-header .md-header__title .md-ellipsis,
[data-md-color-scheme="slate"] .md-header .md-header__topic .md-ellipsis,
[data-md-color-scheme="slate"] .md-header .md-logo,
[data-md-color-scheme="slate"] .md-header .md-header__button,
[data-md-color-scheme="slate"] .md-header .md-header__button .md-icon,
[data-md-color-scheme="slate"] .md-header .md-header__option .md-icon,
[data-md-color-scheme="slate"] .md-header [data-md-component="palette"] .md-icon,
[data-md-color-scheme="slate"] .md-header .md-source,
[data-md-color-scheme="slate"] .md-header .md-source__repository,
[data-md-color-scheme="slate"] .md-header .md-source .md-source__repository .md-ellipsis,
[data-md-color-scheme="slate"] .md-header .md-source__fact {
    color: #ffffff !important;
}

[data-md-color-scheme="slate"] .md-tabs__link {
    color: #8b949e !important;
    transition: all 0.3s ease;
}

[data-md-color-scheme="slate"] .md-tabs__link:hover,
[data-md-color-scheme="slate"] .md-tabs__link--active {
    color: #c9d1d9 !important;
    background: rgba(22, 27, 34, 0.92);
}

[data-md-color-scheme="default"] .md-header .md-header__title,
[data-md-color-scheme="default"] .md-header .md-header__topic,
[data-md-color-scheme="default"] .md-header .md-header__title .md-ellipsis,
[data-md-color-scheme="default"] .md-header .md-header__topic .md-ellipsis,
[data-md-color-scheme="default"] .md-header .md-logo,
[data-md-color-scheme="default"] .md-header .md-header__button,
[data-md-color-scheme="default"] .md-header .md-header__button .md-icon,
[data-md-color-scheme="default"] .md-header .md-header__option .md-icon,
[data-md-color-scheme="default"] .md-header [data-md-component="palette"] .md-icon,
[data-md-color-scheme="default"] .md-header .md-source,
[data-md-color-scheme="default"] .md-header .md-source__repository,
[data-md-color-scheme="default"] .md-header .md-source .md-source__repository .md-ellipsis,
[data-md-color-scheme="default"] .md-header .md-source__fact {
    color: #292524 !important;
}

[data-md-color-scheme="default"] .md-header .md-header__button:hover,
[data-md-color-scheme="default"] .md-header .md-header__button:hover .md-icon,
[data-md-color-scheme="default"] .md-header .md-header__option:hover .md-icon,
[data-md-color-scheme="default"] .md-header .md-logo:hover,
[data-md-color-scheme="default"] .md-header .md-source:hover,
[data-md-color-scheme="default"] .md-header .md-source:hover .md-source__repository,
[data-md-color-scheme="default"] .md-header .md-source:hover .md-source__fact {
    color: #1e3a8a !important;
}

[data-md-color-scheme="slate"] .md-header,
[data-md-color-scheme="slate"] .md-tabs {
    border-bottom: 1px solid #30363d;
}

.md-tabs__list {
    gap: 0.2rem;
}

.md-tabs__link {
    position: relative;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 2.2rem;
    padding: 0.35rem 0.7rem;
    border-radius: 8px;
}

.md-tabs__link::after {
    content: "";
    position: absolute;
    left: 0;
    bottom: -0.2rem;
    width: 0;
    height: 2px;
    transition: width 0.3s ease;
}

[data-md-color-scheme="default"] .md-tabs__link {
    color: #57534e;
}

[data-md-color-scheme="default"] .md-tabs__link:hover,
[data-md-color-scheme="default"] .md-tabs__link--active {
    background: rgba(255, 255, 255, 0.65);
    color: #0f172a;
}

[data-md-color-scheme="default"] .md-tabs__link::after {
    background: linear-gradient(90deg, #1e3a8a, #2563eb);
}

[data-md-color-scheme="slate"] .md-tabs__link::after {
    background: #58a6ff;
}

.md-tabs__link:hover::after,
.md-tabs__link--active::after {
    width: 100%;
}

@media screen and (max-width: 76.1875em) {
    .md-header__button[for="__drawer"] {
        border-radius: 8px;
        transition: background-color 0.2s ease;
    }

    [data-md-color-scheme="default"] .md-header__button[for="__drawer"]:hover {
        background: rgba(231, 229, 228, 0.8);
    }

    [data-md-color-scheme="slate"] .md-header__button[for="__drawer"]:hover {
        background: rgba(51, 65, 85, 0.5);
    }
}

body[data-md-color-scheme="slate"] .md-header {
    max-width: none;
    margin-top: 0;
}

body.is-homepage .md-header,
body.is-homepage .md-tabs,
body:has(.academic-home-layout) .md-header,
body:has(.academic-home-layout) .md-tabs {
    background: rgba(250, 247, 240, 0.76) !important;
    border-bottom: 1px solid rgba(15, 23, 42, 0.07) !important;
    box-shadow: none !important;
    backdrop-filter: blur(12px);
    -webkit-backdrop-filter: blur(12px);
}

body[data-md-color-scheme="slate"].is-homepage .md-header,
body[data-md-color-scheme="slate"].is-homepage .md-tabs,
body[data-md-color-scheme="slate"]:has(.academic-home-layout) .md-header,
body[data-md-color-scheme="slate"]:has(.academic-home-layout) .md-tabs {
    background: rgba(13, 17, 23, 0.9) !important;
    border-bottom-color: #30363d !important;
}

.md-header::before,
.md-header::after,
.md-header__inner::before,
.md-header__inner::after,
.md-header__source::before,
.md-header__source::after,
.md-header__option::before,
.md-header__option::after,
.md-search::before,
.md-search::after,
.md-tabs::before,
.md-tabs::after,
.md-tabs .md-grid::before,
.md-tabs .md-grid::after,
.md-tabs__list::before,
.md-tabs__list::after,
.md-header__title::before,
.md-header__title::after,
.md-source::before,
.md-source::after,
.md-source__repository::before,
.md-source__repository::after,
.md-source__facts::before,
.md-source__facts::after {
    display: none !important;
    content: none !important;
    border: 0 !important;
}

body[data-md-color-scheme="default"] .md-header,
body[data-md-color-scheme="default"] .md-tabs,
[data-md-color-scheme="default"] .md-header,
[data-md-color-scheme="default"] .md-tabs {
    border-bottom: 1px solid #d0d7de !important;
    box-shadow: none !important;
}

body[data-md-color-scheme="slate"] .md-header,
body[data-md-color-scheme="slate"] .md-tabs,
[data-md-color-scheme="slate"] .md-header,
[data-md-color-scheme="slate"] .md-tabs {
    border-bottom-color: #30363d !important;
    box-shadow: none !important;
}

@media screen and (min-width: 76.25em) {
    .md-header__button.md-logo,
    .md-header__title,
    .md-header__button[for="__drawer"],
    .md-header__button[for="__search"] {
        display: none !important;
    }

    .md-tabs .md-grid {
        overflow: visible !important;
    }

    .md-tabs__list {
        display: flex !important;
        height: auto !important;
        align-items: center !important;
        margin: 0 !important;
        padding: 0 !important;
    }

    .md-tabs__item {
        display: block !important;
        height: auto !important;
        margin: 0 !important;
        padding: 0 !important;
    }

    .md-tabs__link {
        display: inline-flex !important;
        align-items: center !important;
        justify-content: center !important;
        margin: 0 !important;
        border-radius: 999px !important;
        font-weight: 500 !important;
        line-height: 1 !important;
        white-space: nowrap;
    }

    .md-tabs__link::after {
        display: none !important;
    }

    .md-tabs__link:hover {
        transform: translateY(-1px);
    }

    [data-md-color-scheme="default"] .md-tabs__link {
        color: #57606a !important;
    }

    [data-md-color-scheme="default"] .md-tabs__link:hover {
        color: #1F2328 !important;
        background: rgba(31, 35, 40, 0.06) !important;
    }

    [data-md-color-scheme="default"] .md-tabs__link--active,
    [data-md-color-scheme="default"] .md-tabs__item--active .md-tabs__link {
        color: #1F2328 !important;
        background: rgba(31, 35, 40, 0.1) !important;
        font-weight: 600 !important;
    }

    [data-md-color-scheme="slate"] .md-tabs__link {
        color: #8b949e !important;
    }

    [data-md-color-scheme="slate"] .md-tabs__link:hover {
        color: #c9d1d9 !important;
        background: rgba(240, 246, 252, 0.08) !important;
    }

    [data-md-color-scheme="slate"] .md-tabs__link--active,
    [data-md-color-scheme="slate"] .md-tabs__item--active .md-tabs__link {
        color: #f0f6fc !important;
        background: rgba(240, 246, 252, 0.12) !important;
        font-weight: 600 !important;
    }

    .md-search {
        grid-column: 2;
        grid-row: 1;
        align-self: center !important;
        justify-self: stretch;
        border: 0 !important;
    }

    .md-header__source {
        grid-column: 3;
        grid-row: 1;
        align-self: center;
        justify-self: end;
        border: 0 !important;
    }

    .md-source {
        display: grid !important;
        width: 100% !important;
        min-width: 0;
        max-width: 100% !important;
        padding: 0 !important;
        border: 0 !important;
        background: transparent !important;
        line-height: 1.2;
        min-height: 2.28rem !important;
        height: 2.28rem !important;
        overflow: visible !important;
        grid-template-columns: 1.42rem minmax(0, 1fr) !important;
        column-gap: 0.34rem !important;
        align-items: center !important;
    }

    .md-source__icon {
        flex: 0 0 auto;
        color: currentColor !important;
        width: 1.42rem !important;
        height: 1.42rem !important;
        align-self: center !important;
        justify-self: center !important;
        transform: translateY(-0.34rem) !important;
    }

    .md-header__option {
        grid-column: 4;
        grid-row: 1;
        align-self: center;
        justify-self: end;
        overflow: visible;
    }

    .md-header__option .md-header__button {
        position: absolute !important;
        inset: 0 !important;
        border-radius: 50%;
        transition: background-color 0.25s ease, transform 0.25s ease, color 0.25s ease;
    }

    .md-header__option .md-header__button[hidden] {
        display: none !important;
    }

    body[data-md-color-scheme="default"] .md-header__option .md-option[data-md-color-scheme="default"] + .md-header__button[hidden],
    body[data-md-color-scheme="slate"] .md-header__option .md-option[data-md-color-scheme="slate"] + .md-header__button[hidden],
    .md-header__option .md-header__button:not([hidden]) {
        display: inline-flex !important;
    }

    .md-header__option .md-header__button:hover {
        transform: translateY(-1px);
    }

    .md-search__inner {
        z-index: 2;
    }

    .md-search__form .md-search__icon[for="__search"] {
        position: absolute !important;
        opacity: 1 !important;
        pointer-events: none;
    }

    .md-search__form .md-search__icon[for="__search"] svg {
        fill: currentColor !important;
    }

    .md-search__options {
        top: 50% !important;
        right: 0.32rem !important;
        height: 1.55rem !important;
        transform: translateY(-50%) !important;
    }

    .md-search__overlay {
        display: none;
    }

    [data-md-toggle="search"]:checked ~ .md-header .md-search,
    .md-header .md-search:focus-within {
        animation: none !important;
        opacity: 1 !important;
        transform: none !important;
        will-change: auto !important;
        z-index: 20 !important;
    }

    [data-md-toggle="search"]:checked ~ .md-header .md-header__source,
    [data-md-toggle="search"]:checked ~ .md-header .md-header__option {
        animation: none !important;
        opacity: 1 !important;
        transform: none !important;
        will-change: auto !important;
    }

    [data-md-toggle="search"]:checked ~ .md-header .md-header__option {
        width: 2.2rem !important;
        min-width: 2.2rem !important;
        max-width: 2.2rem !important;
        overflow: visible !important;
    }

    [data-md-toggle="search"]:checked ~ .md-header .md-search__overlay {
        z-index: 1 !important;
        display: block !important;
        cursor: default;
        background: transparent !important;
        opacity: 1 !important;
        pointer-events: auto !important;
    }

    [data-md-toggle="search"]:checked ~ .md-header .md-search__inner,
    .md-header .md-search:focus-within .md-search__inner {
        position: relative !important;
        z-index: 2 !important;
        width: 100% !important;
    }

    [data-md-toggle="search"]:checked ~ .md-header .md-search__output,
    .md-header .md-search:focus-within .md-search__output {
        position: absolute !important;
        top: calc(2.1rem + 0.55rem) !important;
        right: 0 !important;
        left: 0 !important;
        z-index: 3 !important;
        height: auto !important;
        margin: 0 !important;
        border-radius: 12px !important;
        overflow: hidden;
        opacity: 1 !important;
        visibility: visible !important;
        pointer-events: auto !important;
        box-shadow: 0 16px 36px rgba(1, 4, 9, 0.18) !important;
    }

    [data-md-toggle="search"]:checked ~ .md-header .md-search__scrollwrap,
    .md-header .md-search:focus-within .md-search__scrollwrap {
        max-height: min(68vh, 32rem) !important;
    }

    [data-md-color-scheme="default"] .md-search__form {
        background: #f6f8fa !important;
        border: 1px solid #d0d7de !important;
        box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.7) !important;
    }

    [data-md-color-scheme="default"] .md-search:hover .md-search__form,
    [data-md-color-scheme="default"] .md-search__form:focus-within {
        background: #ffffff !important;
        border-color: #8c959f !important;
        box-shadow: 0 0 0 3px rgba(9, 105, 218, 0.12) !important;
    }

    [data-md-color-scheme="default"] .md-search__input,
    [data-md-color-scheme="default"] .md-search__input::placeholder,
    [data-md-color-scheme="default"] .md-search__form .md-search__icon {
        color: #57606a !important;
    }

    [data-md-color-scheme="default"] .md-search__output {
        background: #ffffff !important;
        border: 1px solid #d0d7de !important;
    }

    [data-md-color-scheme="slate"] .md-search__form {
        background: #161b22 !important;
        border: 1px solid #30363d !important;
        box-shadow: none !important;
    }

    [data-md-color-scheme="slate"] .md-search:hover .md-search__form,
    [data-md-color-scheme="slate"] .md-search__form:focus-within {
        background: #0d1117 !important;
        border-color: #58a6ff !important;
        box-shadow: 0 0 0 3px rgba(88, 166, 255, 0.14) !important;
    }

    [data-md-color-scheme="slate"] .md-search__input,
    [data-md-color-scheme="slate"] .md-search__input::placeholder,
    [data-md-color-scheme="slate"] .md-search__form .md-search__icon {
        color: #8b949e !important;
    }

    [data-md-color-scheme="slate"] .md-search__output {
        background: #161b22 !important;
        border: 1px solid #30363d !important;
    }
}

@media screen and (max-width: 88em) and (min-width: 76.25em) {
    .md-source__facts {
        font-size: 0.52rem !important;
        gap: 0.24rem !important;
    }
}

@media (prefers-reduced-motion: reduce) {
    .md-header .md-header__source,
    .md-header .md-search,
    .md-header .md-header__option,
    .md-tabs__link,
    .md-header__option .md-header__button {
        animation: none !important;
        transition: none !important;
        transform: none !important;
    }
}

@media screen and (min-width: 76.25em) {
    body[data-md-color-scheme="slate"] .md-header,
    body[data-md-color-scheme="slate"] .md-tabs {
        border-bottom-color: var(--github-frame-dark-border) !important;
        box-shadow: none !important;
    }

    .md-header[data-md-state="shadow"],
    .md-tabs[data-md-state="hidden"],
    .md-tabs[data-md-state="lock"] {
        transform: none !important;
        box-shadow: none !important;
    }

    .md-source__icon svg {
        fill: currentColor !important;
        overflow: visible !important;
        width: 1.42rem !important;
        height: 1.42rem !important;
        transform: scale(1.08) !important;
        transform-origin: center center !important;
    }

    .md-source__repository {
        display: block !important;
        min-width: 0 !important;
        overflow: hidden !important;
        color: currentColor !important;
        font-size: 0.78rem !important;
        font-weight: 500 !important;
        line-height: 1.08 !important;
        white-space: nowrap !important;
        text-overflow: ellipsis !important;
        transform: none !important;
    }

    .md-source__repository--active {
        transform: none !important;
    }

    .md-source__facts {
        display: flex !important;
        min-height: 0.72rem !important;
        align-items: center !important;
        margin: 0.18rem 0 0 !important;
        padding: 0 !important;
        overflow: visible !important;
        color: inherit !important;
        font-family: "JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, monospace !important;
        line-height: 1 !important;
        list-style: none !important;
        gap: 0.56rem !important;
        font-size: 0.64rem !important;
        opacity: 0.8 !important;
    }

    .md-source__fact {
        display: inline-flex !important;
        align-items: center !important;
        margin: 0 !important;
        padding: 0 !important;
        color: inherit !important;
        line-height: 1 !important;
        gap: 0.22rem !important;
        font-weight: 500 !important;
    }

    .md-source__fact::before {
        display: inline-block !important;
        flex: 0 0 0.72rem !important;
        content: "" !important;
        background: currentColor !important;
        border: 0 !important;
        -webkit-mask: var(--edwinos-star-icon) center / contain no-repeat;
        mask: var(--edwinos-star-icon) center / contain no-repeat;
        opacity: 0.92;
        width: 0.72rem !important;
        height: 0.72rem !important;
    }

    .md-source__fact:nth-child(2)::before,
    .md-source__fact[data-source-fact="forks"]::before {
        -webkit-mask-image: var(--edwinos-fork-icon);
        mask-image: var(--edwinos-fork-icon);
    }
}

@media screen and (max-width: 88em) and (min-width: 76.25em) {
    .md-source__repository {
        font-size: 0.72rem !important;
    }

    .md-source {
        grid-template-columns: 1.34rem minmax(0, 1fr) !important;
        column-gap: 0.3rem !important;
    }

    .md-source__icon,
    .md-source__icon svg {
        width: 1.34rem !important;
        height: 1.34rem !important;
    }

    .md-source__icon svg {
        transform: scale(1.05) !important;
    }
}

/* Responsive coordinate system */

@media screen and (max-width: 76.1875em) {
    :root {
        --edwinos-mobile-header-height: 3.5rem;
        --edwinos-mobile-header-control-space: 5.25rem;
        --edwinos-mobile-drawer-space: 0rem;
    }

    html:has(> head > link[rel="canonical"][href*="/OsdNotes/"]),
    html:has(> head > link[rel="canonical"][href*="/%E7%BB%8F%E9%AA%8C%E5%88%86%E4%BA%AB/"]) {
        --edwinos-mobile-drawer-space: 2.75rem;
    }


    .md-header__inner {
        z-index: 24 !important;
        pointer-events: none !important;
    }

    .md-header__button,
    .md-header__option,
    .md-header .md-search {
        pointer-events: auto !important;
    }

    .md-header__button.md-logo,
    .md-header__button[for="__drawer"],
    .md-header__source,
    .md-header__title,
    .md-header__topic {
        display: none !important;
    }

    .md-header__option {
        align-items: center !important;
        justify-content: center !important;
        order: 2;
    }

    .md-header__option,
    .md-header .md-search,
    .md-header__button[for="__search"] {
        border: 0 !important;
        box-shadow: none !important;
    }

    .md-header__option::before,
    .md-header__option::after,
    .md-header .md-search::before,
    .md-header .md-search::after,
    .md-header__button[for="__search"]::before,
    .md-header__button[for="__search"]::after {
        display: none !important;
        content: none !important;
    }

    .md-header__option .md-header__button,
    .md-header__button[for="__search"] {
        width: 2.2rem !important;
        height: 2.2rem !important;
        align-items: center !important;
        justify-content: center !important;
        margin: 0 !important;
        padding: 0 !important;
        border-radius: 999px !important;
    }

    .md-header__option .md-option + .md-header__button,
    .md-header__option .md-header__button[hidden] {
        display: none !important;
    }

    .md-header__option .md-option + .md-header__button:not([hidden]),
    .md-header__option .md-option:checked + .md-header__button,
    .md-header__button[for="__search"] {
        display: inline-flex !important;
    }

    .md-header__button[for="__search"] {
        order: 1;
    }

    .md-tabs,
    .md-tabs[data-md-state="hidden"],
    .md-tabs[data-md-state="lock"] {
        border-bottom: 0 !important;
        box-shadow: none !important;
    }

    body[data-md-color-scheme] .md-tabs.md-tabs,
    body[data-md-color-scheme] .md-tabs.md-tabs[data-md-state="hidden"],
    body[data-md-color-scheme] .md-tabs.md-tabs[data-md-state="lock"] {
        background: transparent !important;
    }

    .md-tabs .md-grid {
        scrollbar-width: none;
    }

    .md-tabs .md-grid::-webkit-scrollbar {
        display: none;
    }

    .md-tabs__list {
        display: flex !important;
        width: max-content !important;
        height: auto !important;
        align-items: center !important;
        gap: 4px !important;
        margin: 0 !important;
        padding: 0 !important;
    }

    .md-tabs__item {
        display: block !important;
        height: auto !important;
        margin: 0 !important;
        padding: 0 !important;
    }

    .md-tabs__link {
        display: inline-flex !important;
        height: 2.1rem !important;
        min-height: 2.1rem !important;
        align-items: center !important;
        justify-content: center !important;
        margin: 0 !important;
        padding: 0 11px !important;
        border-radius: 999px !important;
        font-size: 17.2px !important;
        font-weight: 500 !important;
        letter-spacing: 0 !important;
        line-height: 1 !important;
        white-space: nowrap !important;
    }

    .md-tabs__link::after {
        display: none !important;
    }

    [data-md-color-scheme="default"] .md-header {
        border-bottom: 1px solid var(--github-frame-light-border, #d0d7de) !important;
    }

    [data-md-color-scheme="slate"] .md-header {
        border-bottom: 1px solid var(--github-frame-dark-border, #30363d) !important;
    }

    [data-md-toggle="search"]:checked ~ .md-header .md-search__overlay {
        opacity: 1 !important;
        backdrop-filter: none !important;
        -webkit-backdrop-filter: none !important;
    }

    [data-md-toggle="search"]:checked ~ .md-header .md-search__scrollwrap {
        background-image: none !important;
        backdrop-filter: blur(4px) saturate(0.95) !important;
        -webkit-backdrop-filter: blur(4px) saturate(0.95) !important;
        box-shadow: inset 0 1px 0 rgba(139, 148, 158, 0.18) !important;
    }

    [data-md-color-scheme="default"] [data-md-toggle="search"]:checked ~ .md-header .md-search__overlay {
        background: rgba(246, 248, 250, 0.08) !important;
    }

    [data-md-color-scheme="default"] [data-md-toggle="search"]:checked ~ .md-header .md-search__scrollwrap {
        background: rgba(255, 255, 255, 0.48) !important;
    }

    [data-md-color-scheme="slate"] [data-md-toggle="search"]:checked ~ .md-header .md-search__overlay {
        background: rgba(1, 4, 9, 0.08) !important;
    }

    [data-md-color-scheme="slate"] [data-md-toggle="search"]:checked ~ .md-header .md-search__scrollwrap {
        background: rgba(13, 17, 23, 0.38) !important;
    }
}

@media screen and (max-width: 35rem) {
    :root {
        --edwinos-mobile-header-control-space: 4.65rem;
    }


    .md-header__option,
    .md-header__option .md-header__button,
    .md-header__button[for="__search"] {
        width: 2rem !important;
        height: 2rem !important;
    }


}

@media screen and (max-width: 27rem) {
    :root {
        --edwinos-mobile-header-control-space: 2.55rem;
    }


}

/*
 * Full search-field states use an iOS-like translucent capsule. The compact
 * mobile search trigger is intentionally untouched.
 */
.md-header .md-search__form {
    overflow: hidden !important;
    border-radius: 999px !important;
    -webkit-backdrop-filter: none;
    backdrop-filter: none;
    transition:
        background-color 160ms ease,
        border-color 160ms ease,
        box-shadow 160ms ease !important;
}

.md-header .md-search__input {
    background: transparent !important;
    border: 0 !important;
    border-radius: inherit !important;
    box-shadow: none !important;
}

.md-header .md-search__options {
    display: none !important;
}

[data-md-color-scheme="default"] .md-header .md-search__form {
    background: rgba(118, 118, 128, 0.12) !important;
    border: 1px solid rgba(60, 60, 67, 0.14) !important;
    box-shadow:
        inset 0 1px 0 rgba(255, 255, 255, 0.58),
        0 1px 2px rgba(31, 35, 40, 0.06),
        0 4px 14px rgba(31, 35, 40, 0.04) !important;
}

[data-md-color-scheme="default"] .md-header .md-search:hover .md-search__form {
    background: rgba(118, 118, 128, 0.2) !important;
    border-color: rgba(60, 60, 67, 0.14) !important;
    box-shadow:
        inset 0 1px 0 rgba(255, 255, 255, 0.58),
        0 1px 2px rgba(31, 35, 40, 0.06),
        0 4px 14px rgba(31, 35, 40, 0.04) !important;
}

[data-md-toggle="search"]:checked
~ .md-header[data-md-color-scheme="default"]
.md-search__form:focus-within,
[data-md-color-scheme="default"]
[data-md-toggle="search"]:checked
~ .md-header
.md-search__form:focus-within {
    background: rgba(255, 255, 255, 0.76) !important;
    border-color: rgba(0, 122, 255, 0.58) !important;
    box-shadow:
        0 0 0 3px rgba(0, 122, 255, 0.13),
        0 2px 10px rgba(31, 35, 40, 0.09) !important;
}

[data-md-color-scheme="default"] .md-header .md-search__input {
    color: #1c1c1e !important;
}

[data-md-color-scheme="default"] .md-header .md-search__input::placeholder,
[data-md-color-scheme="default"] .md-header .md-search__form .md-search__icon {
    color: #51515a !important;
}

[data-md-toggle="search"]:checked
~ .md-header[data-md-color-scheme="default"]
.md-search__form:focus-within
.md-search__icon,
[data-md-color-scheme="default"]
[data-md-toggle="search"]:checked
~ .md-header
.md-search__form:focus-within
.md-search__icon {
    color: #007aff !important;
}

[data-md-color-scheme="slate"] .md-header .md-search__form {
    background: rgba(22, 27, 34, 0.74) !important;
    border: 1px solid rgba(240, 246, 252, 0.14) !important;
    box-shadow:
        inset 0 1px 0 rgba(240, 246, 252, 0.05),
        0 2px 10px rgba(1, 4, 9, 0.18) !important;
}

[data-md-color-scheme="slate"] .md-header .md-search:hover .md-search__form {
    background: rgba(33, 38, 45, 0.82) !important;
    border-color: rgba(240, 246, 252, 0.14) !important;
    box-shadow:
        inset 0 1px 0 rgba(240, 246, 252, 0.05),
        0 2px 10px rgba(1, 4, 9, 0.18) !important;
}

[data-md-toggle="search"]:checked
~ .md-header[data-md-color-scheme="slate"]
.md-search__form:focus-within,
[data-md-color-scheme="slate"]
[data-md-toggle="search"]:checked
~ .md-header
.md-search__form:focus-within {
    background: rgba(22, 27, 34, 0.78) !important;
    border-color: rgba(88, 166, 255, 0.68) !important;
    box-shadow:
        0 0 0 3px rgba(88, 166, 255, 0.14),
        0 3px 14px rgba(1, 4, 9, 0.3) !important;
}

[data-md-color-scheme="slate"] .md-header .md-search__input {
    color: #f0f6fc !important;
}

[data-md-color-scheme="slate"] .md-header .md-search__input::placeholder,
[data-md-color-scheme="slate"] .md-header .md-search__form .md-search__icon {
    color: #8b949e !important;
}

[data-md-toggle="search"]:checked
~ .md-header[data-md-color-scheme="slate"]
.md-search__form:focus-within
.md-search__icon,
[data-md-color-scheme="slate"]
[data-md-toggle="search"]:checked
~ .md-header
.md-search__form:focus-within
.md-search__icon {
    color: #58a6ff !important;
}

[data-md-color-scheme="default"] .md-header .md-search__overlay {
    background: rgba(246, 248, 250, 0.08) !important;
}

[data-md-color-scheme="slate"] .md-header .md-search__overlay {
    background: rgba(1, 4, 9, 0.08) !important;
}

[data-md-toggle="search"]:checked ~ .md-header .md-search__overlay {
    position: fixed !important;
    inset: 0 !important;
    width: auto !important;
    height: auto !important;
}

/*
 * Keep the search field in one header coordinate system so opening and
 * closing can animate between its resting width and the full notch.
 */
.md-header .md-search {
    transition: opacity 180ms ease !important;
}

html.edwinos-search-transitioning .md-header .md-search {
    transition:
        left 420ms cubic-bezier(0.42, 0, 0.58, 1),
        right 420ms cubic-bezier(0.42, 0, 0.58, 1),
        opacity 180ms ease !important;
}

@media screen {
    [data-md-toggle="search"]:checked ~ .md-header .md-search {
        right: var(--edwinos-header-edge) !important;
        left: var(--edwinos-header-edge) !important;
        z-index: 30 !important;
        display: block !important;
        width: auto !important;
        max-width: none !important;
        height: var(--edwinos-header-control-size) !important;
        margin: 0 !important;
        padding: 1px 0 !important;
        overflow: visible !important;
        opacity: 1 !important;
        visibility: visible !important;
        pointer-events: auto !important;
    }

    [data-md-toggle="search"]:checked ~ .md-header .md-search__inner {
        position: relative !important;
        inset: auto !important;
        width: 100% !important;
        height: calc(var(--edwinos-header-control-size) - 2px) !important;
        margin: 0 !important;
        padding: 0 !important;
        opacity: 1 !important;
        transform: none !important;
    }

    [data-md-toggle="search"]:checked ~ .md-header .md-search__form {
        position: relative !important;
        width: 100% !important;
        height: calc(var(--edwinos-header-control-size) - 2px) !important;
        min-height: calc(var(--edwinos-header-control-size) - 2px) !important;
        margin: 0 !important;
        padding: 0 !important;
        -webkit-backdrop-filter: blur(14px) saturate(1.16) !important;
        backdrop-filter: blur(14px) saturate(1.16) !important;
    }

    [data-md-toggle="search"]:checked ~ .md-header .md-search__input {
        width: 100% !important;
        height: 100% !important;
        min-height: 0 !important;
        line-height: normal !important;
        transition:
            color 140ms ease,
            opacity 180ms ease 80ms !important;
    }

}

.md-header .md-search__output {
    top: calc(2.1rem + 0.55rem) !important;
    right: 0 !important;
    bottom: auto !important;
    left: 0 !important;
    height: 0 !important;
    max-height: min(68vh, 32rem) !important;
    overflow: hidden !important;
    opacity: 0 !important;
    visibility: hidden !important;
    pointer-events: none !important;
    transform: translateY(-0.35rem);
    transition:
        opacity 160ms ease,
        transform 220ms cubic-bezier(0.22, 1, 0.36, 1),
        visibility 0s linear 220ms !important;
}

.md-header .md-search__output[hidden] {
    display: none !important;
}

.md-header .md-search__scrollwrap {
    width: 100% !important;
    height: auto !important;
    max-height: min(68vh, 32rem) !important;
    overflow-y: auto !important;
    background: transparent !important;
}

.md-header .md-search-result {
    width: 100% !important;
}

[data-md-toggle="search"]:checked
~ .md-header
.md-search.edwinos-search-has-query
.md-search__output {
    position: absolute !important;
    z-index: 31 !important;
    height: min(68vh, 32rem) !important;
    opacity: 1 !important;
    visibility: visible !important;
    pointer-events: auto !important;
    transform: translateY(0);
    transition-delay: 0s !important;
}

[data-md-toggle="search"]:checked
~ .md-header
.md-search__inner {
    overflow: visible !important;
}

[data-md-toggle="search"]:not(:checked)
~ .md-header
.md-search
.md-search__output,
[data-md-toggle="search"]:checked
~ .md-header
.md-search:not(.edwinos-search-has-query)
.md-search__output {
    height: 0 !important;
    overflow: hidden !important;
    opacity: 0 !important;
    visibility: hidden !important;
    pointer-events: none !important;
    transform: translateY(-0.35rem) !important;
}

[data-md-color-scheme="default"]
[data-md-toggle="search"]:checked
~ .md-header
.md-search.edwinos-search-has-query
.md-search__output {
    background: rgba(255, 255, 255, 0.9) !important;
    border: 1px solid rgba(60, 60, 67, 0.16) !important;
    box-shadow: 0 16px 36px rgba(31, 35, 40, 0.16) !important;
    -webkit-backdrop-filter: blur(18px) saturate(1.08);
    backdrop-filter: blur(18px) saturate(1.08);
}

[data-md-color-scheme="slate"]
[data-md-toggle="search"]:checked
~ .md-header
.md-search.edwinos-search-has-query
.md-search__output {
    background: rgba(13, 17, 23, 0.9) !important;
    border: 1px solid rgba(240, 246, 252, 0.14) !important;
    box-shadow: 0 18px 40px rgba(1, 4, 9, 0.34) !important;
    -webkit-backdrop-filter: blur(18px) saturate(1.08);
    backdrop-filter: blur(18px) saturate(1.08);
}

/*
 * Header controls share one coordinate system and collapse in two ordered
 * stages. The GitHub icon first wipes a stationary repository label, then the
 * search capsule contracts. Once the capsule is circular it cannot re-expand.
 */
:root {
    --edwinos-source-star-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M8 .25a.75.75 0 0 1 .673.418l1.882 3.815 4.21.612a.75.75 0 0 1 .416 1.279l-3.046 2.97.719 4.192a.751.751 0 0 1-1.088.791L8 12.347l-3.766 1.98a.75.75 0 0 1-1.088-.79l.72-4.194-3.047-2.97a.75.75 0 0 1 .416-1.28l4.21-.611L7.327.668A.75.75 0 0 1 8 .25Z'/%3E%3C/svg%3E");
    --edwinos-source-fork-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M5 3.25a1.75 1.75 0 1 1-2.5 1.58v6.34a1.75 1.75 0 1 1-1.5 0V4.83A1.75 1.75 0 1 1 5 3.25Zm6.5-1.75a1.75 1.75 0 1 1-1.5 2.664V5a2.5 2.5 0 0 1-2.5 2.5h-1A1.5 1.5 0 0 0 5 9v2.17a1.75 1.75 0 1 1-1.5 0V9a3 3 0 0 1 3-3h1a1 1 0 0 0 1-1v-.836A1.75 1.75 0 0 1 11.5 1.5Z'/%3E%3C/svg%3E");
    --edwinos-header-edge: clamp(8px, 2vw, 32px);
    --edwinos-header-right-edge: 12px;
    --edwinos-mobile-header-height: 3.5rem;
    --edwinos-header-height: var(
        --edwinos-mobile-header-height,
        var(--compact-header-height, 3.5rem)
    );
    --edwinos-header-control-size: 44px;
    --edwinos-header-control-gap: 4px;
    --edwinos-header-tabs-search-gap: clamp(
        2px,
        calc((100vw - 360px) / 20),
        4px
    );
    --edwinos-header-source-icon-size: 28px;
    --edwinos-header-source-icon-inset: calc(
        (
            var(--edwinos-header-control-size)
            - var(--edwinos-header-source-icon-size)
        )
        / 2
    );
    --edwinos-header-search-source-gap: clamp(
        10px,
        calc(3.75vw - 5.75px),
        16px
    );
    --edwinos-header-tabs-left: calc(
        var(--edwinos-header-edge)
        + var(--edwinos-mobile-drawer-space, 0px)
    );
    --edwinos-header-tabs-width: 361px;
    --edwinos-header-search-left: calc(
        var(--edwinos-header-tabs-left)
        + var(--edwinos-header-tabs-width)
        + var(--edwinos-header-tabs-search-gap)
    );
    --edwinos-header-search-stage-width: 190px;
    --edwinos-header-source-max-width: 204px;
    --edwinos-header-source-right: calc(
        var(--edwinos-header-right-edge)
        + var(--edwinos-header-control-size)
        + var(--edwinos-header-control-gap)
    );
    --edwinos-header-compression-budget: calc(
        100%
        - var(--edwinos-header-search-left)
        - var(--edwinos-header-source-right)
        + var(--edwinos-header-source-icon-inset)
        - var(--edwinos-header-search-source-gap)
    );
    --edwinos-header-source-width: clamp(
        var(--edwinos-header-control-size),
        calc(
            var(--edwinos-header-compression-budget)
            - var(--edwinos-header-search-stage-width)
        ),
        var(--edwinos-header-source-max-width)
    );
    --edwinos-header-search-width: max(
        var(--edwinos-header-control-size),
        calc(
            var(--edwinos-header-compression-budget)
            - var(--edwinos-header-source-width)
        )
    );
    --edwinos-header-search-right: calc(
        var(--edwinos-header-source-right)
        + var(--edwinos-header-source-width)
        - var(--edwinos-header-source-icon-inset)
        + var(--edwinos-header-search-source-gap)
    );
    --edwinos-header-search-rest-left: calc(
        100%
        - var(--edwinos-header-search-right)
        - var(--edwinos-header-search-width)
    );
}

/* Keep one header layout model across Material's 76.25em desktop breakpoint.
   The legacy layer switches fixed/grid to sticky/flex at that boundary, which
   forces a full header reflow while the browser window is being resized. */
.md-header {
    position: sticky !important;
    top: 0 !important;
    right: auto !important;
    left: auto !important;
    z-index: 20 !important;
    width: 100% !important;
    min-height: var(--edwinos-header-height) !important;
    height: var(--edwinos-header-height) !important;
    overflow: visible !important;
    transform: none !important;
    transition: none !important;
}

.md-header__inner {
    position: relative !important;
    display: flex !important;
    width: 100% !important;
    max-width: none !important;
    height: var(--edwinos-header-height) !important;
    align-items: center !important;
    justify-content: flex-end !important;
    gap: 0 !important;
    grid-template-columns: none !important;
    grid-template-rows: none !important;
    column-gap: 0 !important;
    margin: 0 !important;
    padding: 0 !important;
    overflow: visible !important;
    transform: none !important;
    transition: none !important;
}

.md-header .md-tabs,
.md-header .md-tabs[data-md-state="hidden"],
.md-header .md-tabs[data-md-state="lock"] {
    position: absolute !important;
    top: 0 !important;
    right: calc(
        var(--edwinos-header-search-right)
        + var(--edwinos-header-control-size)
        + var(--edwinos-header-tabs-search-gap)
    ) !important;
    bottom: auto !important;
    left: var(--edwinos-header-tabs-left) !important;
    z-index: 21 !important;
    display: flex !important;
    width: auto !important;
    height: var(--edwinos-header-height) !important;
    min-height: var(--edwinos-header-height) !important;
    align-items: center !important;
    margin: 0 !important;
    padding: 0 !important;
    background: transparent !important;
    overflow: hidden !important;
    transform: none !important;
    transition: none !important;
    opacity: 1 !important;
    visibility: visible !important;
}

[data-md-color-scheme] .md-header .md-tabs,
[data-md-color-scheme] .md-header .md-tabs[data-md-state="hidden"],
[data-md-color-scheme] .md-header .md-tabs[data-md-state="lock"] {
    background: transparent !important;
}

.md-header .md-tabs .md-grid {
    display: flex !important;
    width: 100% !important;
    max-width: none !important;
    height: 100% !important;
    align-items: center !important;
    margin: 0 !important;
    padding: 0 !important;
    overflow-x: hidden !important;
    overflow-y: hidden !important;
}

.md-container {
    padding-top: 0 !important;
}

.md-header .md-search,
.md-header .md-header__source,
.md-header .md-header__option {
    animation: none !important;
    will-change: auto !important;
}

.md-header .md-search,
.md-header .md-search__inner,
.md-header .md-header__button[for="__search"] {
    background: transparent !important;
}

.md-tabs__list {
    flex: 0 0 max-content !important;
    min-width: max-content !important;
    justify-content: flex-start !important;
}

.md-tabs__link {
    font-family: "Inter", "Noto Sans SC", sans-serif !important;
    transition:
        color 160ms ease,
        background-color 160ms ease,
        transform 160ms ease !important;
}

[data-md-color-scheme="default"]
.md-tabs__item--active
.md-tabs__link {
    color: #1f2328 !important;
    background: rgba(31, 35, 40, 0.1) !important;
    font-weight: 600 !important;
}

[data-md-color-scheme="slate"]
.md-tabs__item--active
.md-tabs__link {
    color: #f0f6fc !important;
    background: rgba(240, 246, 252, 0.12) !important;
    font-weight: 600 !important;
}

.md-header .md-header__option {
    position: absolute !important;
    top: calc(
        (
            var(--edwinos-header-height)
            - var(--edwinos-header-control-size)
        )
        / 2
    ) !important;
    right: var(--edwinos-header-right-edge) !important;
    z-index: 28 !important;
    display: inline-flex !important;
    width: var(--edwinos-header-control-size) !important;
    min-width: var(--edwinos-header-control-size) !important;
    max-width: var(--edwinos-header-control-size) !important;
    height: var(--edwinos-header-control-size) !important;
    margin: 0 !important;
    padding: 0 !important;
    transform: none !important;
    opacity: 1 !important;
}

.md-header .md-header__option .md-header__button {
    width: var(--edwinos-header-control-size) !important;
    min-width: var(--edwinos-header-control-size) !important;
    max-width: var(--edwinos-header-control-size) !important;
    height: var(--edwinos-header-control-size) !important;
    align-items: center !important;
    justify-content: center !important;
    margin: 0 !important;
    padding: 0 !important;
}

.md-header .md-header__source {
    position: absolute !important;
    top: calc(
        (
            var(--edwinos-header-height)
            - var(--edwinos-header-control-size)
        )
        / 2
    ) !important;
    right: var(--edwinos-header-source-right) !important;
    z-index: 26 !important;
    display: block !important;
    width: var(--edwinos-header-source-width) !important;
    min-width: var(--edwinos-header-control-size) !important;
    max-width: var(--edwinos-header-source-width) !important;
    height: var(--edwinos-header-control-size) !important;
    margin: 0 !important;
    padding: 0 !important;
    overflow: visible !important;
    transform: none !important;
    opacity: 1 !important;
    visibility: visible !important;
    pointer-events: auto !important;
    transition:
        background-color 160ms ease !important;
}

.md-header .md-source {
    position: relative !important;
    display: block !important;
    width: 100% !important;
    min-width: 0 !important;
    max-width: none !important;
    min-height: var(--edwinos-header-control-size) !important;
    height: var(--edwinos-header-control-size) !important;
    margin: 0 !important;
    padding: 0 !important;
    align-items: normal !important;
    gap: 0 !important;
    grid-template-columns: none !important;
    overflow: hidden !important;
    border-radius: 999px !important;
    transform: none !important;
    pointer-events: auto !important;
    transition:
        background-color 160ms ease !important;
}

[data-md-color-scheme="default"] .md-header .md-source__icon {
    background: var(--github-frame-light-bg, #f6f8fa) !important;
}

[data-md-color-scheme="slate"] .md-header .md-source__icon {
    background: var(--github-frame-dark-bg, #0d1117) !important;
}

.md-header .md-source__icon {
    position: absolute !important;
    top: -1px !important;
    left: -1px !important;
    z-index: 3 !important;
    display: inline-flex !important;
    width: calc(var(--edwinos-header-control-size) + 2px) !important;
    min-width: calc(var(--edwinos-header-control-size) + 2px) !important;
    height: calc(var(--edwinos-header-control-size) + 2px) !important;
    align-items: center !important;
    justify-content: center !important;
    margin: 0 !important;
    overflow: visible !important;
    border-radius: 50% !important;
    transform: none !important;
    transition: none !important;
}

.md-header .md-source__icon svg {
    display: block !important;
    width: var(--edwinos-header-source-icon-size) !important;
    height: var(--edwinos-header-source-icon-size) !important;
    margin: 0 !important;
    overflow: visible !important;
    transform: none !important;
    transform-origin: center center !important;
}

.md-header .md-source__repository {
    position: absolute !important;
    top: 7px !important;
    right: 0 !important;
    left: auto !important;
    z-index: 1 !important;
    display: block !important;
    width: calc(
        var(--edwinos-header-source-max-width)
        - var(--edwinos-header-control-size)
        - 8px
    ) !important;
    min-width: 0 !important;
    max-width: none !important;
    margin: 0 !important;
    padding: 0 !important;
    overflow: hidden !important;
    color: currentColor !important;
    font-size: 12px !important;
    font-weight: 500 !important;
    line-height: 1.08 !important;
    white-space: nowrap !important;
    text-overflow: clip !important;
    transform: none !important;
    opacity: 1 !important;
    visibility: visible !important;
    pointer-events: auto !important;
    transition: none !important;
}

.md-header .md-source__facts {
    display: flex !important;
    min-height: 14.4px !important;
    align-items: center !important;
    gap: 11.2px !important;
    margin-top: 2.4px !important;
    overflow: hidden !important;
    font-family:
        "JetBrains Mono",
        ui-monospace,
        SFMono-Regular,
        Menlo,
        monospace !important;
    font-size: 11px !important;
    line-height: 11px !important;
    opacity: 0.78 !important;
    animation: none !important;
    transition: none !important;
}

.md-header .md-source__fact {
    display: inline-flex !important;
    align-items: center !important;
    gap: 4.4px !important;
    line-height: 11px !important;
    animation: none !important;
    transition: none !important;
}

.md-header .md-source__fact::before {
    display: inline-block !important;
    width: 14.4px !important;
    height: 14.4px !important;
    flex: 0 0 14.4px !important;
    content: "" !important;
    background-color: currentColor !important;
    border: 0 !important;
    -webkit-mask: var(--edwinos-source-star-mask) center / contain no-repeat !important;
    mask: var(--edwinos-source-star-mask) center / contain no-repeat !important;
    transform: translateY(-0.5px);
    transition: none !important;
}

.md-header .md-source__fact[data-source-fact="forks"]::before,
.md-header .md-source__fact--forks::before,
.md-header .md-source__fact:nth-child(2)::before {
    -webkit-mask-image: var(--edwinos-source-fork-mask) !important;
    mask-image: var(--edwinos-source-fork-mask) !important;
}

/* Covered header controls remain visually static behind the expanding search
   capsule. Disable interaction so clicks cannot pass through to navigation. */
[data-md-toggle="search"]:checked ~ .md-header .md-tabs,
[data-md-toggle="search"]:checked ~ .md-header .md-header__source,
[data-md-toggle="search"]:checked ~ .md-header .md-header__option {
    pointer-events: none !important;
}

@media screen and (min-width: 76.25em) {
    .md-tabs__list {
        gap: 4px !important;
    }

    .md-tabs__link {
        height: 42px !important;
        min-height: 42px !important;
        padding: 0 11px !important;
        font-size: 17.2px !important;
    }
}

@media screen {
    .md-header .md-search {
        position: absolute !important;
        top: calc(
            (
                var(--edwinos-header-height)
                - var(--edwinos-header-control-size)
            )
            / 2
        ) !important;
        right: var(--edwinos-header-search-right) !important;
        left: var(--edwinos-header-search-rest-left) !important;
        z-index: 27 !important;
        display: block !important;
        box-sizing: border-box !important;
        width: auto !important;
        min-width: var(--edwinos-header-control-size) !important;
        max-width: none !important;
        height: var(--edwinos-header-control-size) !important;
        margin: 0 !important;
        padding: 1px 0 !important;
        overflow: visible !important;
        container: edwinos-header-search / inline-size;
        transform: none !important;
        opacity: 1 !important;
        visibility: visible !important;
        pointer-events: auto !important;
    }

    .md-header .md-search__inner,
    .md-header .md-search__form {
        position: relative !important;
        inset: auto !important;
        box-sizing: border-box !important;
        width: 100% !important;
        min-width: 0 !important;
        max-width: none !important;
        height: calc(var(--edwinos-header-control-size) - 2px) !important;
        min-height: calc(var(--edwinos-header-control-size) - 2px) !important;
        margin: 0 !important;
        padding: 0 !important;
        transform: none !important;
        opacity: 1 !important;
    }

    .md-header .md-search__form {
        display: flex !important;
        width: calc(100% - 2px) !important;
        align-items: center !important;
        margin-inline: auto !important;
    }

    .md-header .md-search__input {
        box-sizing: border-box !important;
        width: 100% !important;
        min-width: 0 !important;
        max-width: none !important;
        margin: 0 !important;
        padding: 0 1rem 0 46px !important;
        font-family: -apple-system, BlinkMacSystemFont, "SF Pro Text", "Segoe UI", sans-serif !important;
        font-size: 16px !important;
        font-weight: 400 !important;
        letter-spacing: 0 !important;
        white-space: nowrap !important;
        text-overflow: clip !important;
        opacity: 1 !important;
        -webkit-appearance: none !important;
        appearance: none !important;
        transition: color 140ms ease, opacity 140ms ease !important;
    }

    .md-header .md-header__button[for="__search"] {
        display: none !important;
    }

    .md-header .md-search__form .md-search__icon[for="__search"] {
        top: 50% !important;
        left: min(14px, calc(50% - 9.5px)) !important;
        display: inline-flex !important;
        width: 19px !important;
        height: 19px !important;
        align-items: center !important;
        justify-content: center !important;
        margin: 0 !important;
        padding: 0 !important;
        transform: translateY(-50%) !important;
        transform-origin: center center !important;
        transition: none !important;
    }

    .md-header .md-search__form .md-search__icon[for="__search"] svg {
        display: block !important;
        width: 100% !important;
        height: 100% !important;
    }

    .md-header .md-search__form .md-search__icon[for="__search"] svg:nth-of-type(2) {
        display: none !important;
    }
}

@media screen and (max-width: 76.1875em) {
    .md-tabs {
        right: calc(
            var(--edwinos-header-search-right)
            + var(--edwinos-header-control-size)
            + var(--edwinos-header-tabs-search-gap)
        ) !important;
    }
}

@container edwinos-header-search (max-width: 6.75rem) {
    .md-header .md-search__input {
        color: transparent !important;
        opacity: 0 !important;
        cursor: pointer !important;
        transition: none !important;
    }

    .md-header .md-search__input::placeholder {
        color: transparent !important;
        opacity: 0 !important;
    }

}

@media screen and (max-width: 34rem) {
    :root {
        --edwinos-header-edge: max(5px, 2vw);
        --edwinos-header-control-size: 44px;
        --edwinos-header-tabs-left: calc(
            max(7px, 2vw)
            + var(--edwinos-mobile-drawer-space)
        );
    }

    .md-header .md-header__source,
    .md-header .md-header__option,
    .md-header .md-header__button[for="__search"] {
        top: calc(
            (
                var(
                    --edwinos-mobile-header-height,
                    var(--compact-header-height, 3.5rem)
                )
                - var(--edwinos-header-control-size)
            )
            / 2
        ) !important;
    }

    .md-header .md-header__option .md-header__button,
    .md-header .md-header__button[for="__search"] {
        width: var(--edwinos-header-control-size) !important;
        min-width: var(--edwinos-header-control-size) !important;
        max-width: var(--edwinos-header-control-size) !important;
        height: var(--edwinos-header-control-size) !important;
    }

    .md-header .md-source {
        min-height: var(--edwinos-header-control-size) !important;
        height: var(--edwinos-header-control-size) !important;
    }

    .md-header .md-source__icon {
        width: calc(var(--edwinos-header-control-size) + 2px) !important;
        min-width: calc(var(--edwinos-header-control-size) + 2px) !important;
        height: calc(var(--edwinos-header-control-size) + 2px) !important;
    }

    .md-header .md-source__icon svg {
        width: var(--edwinos-header-source-icon-size) !important;
        min-width: var(--edwinos-header-source-icon-size) !important;
        height: var(--edwinos-header-source-icon-size) !important;
    }

    .md-tabs {
        left: calc(
            max(7px, 2vw)
            + var(--edwinos-mobile-drawer-space)
        ) !important;
        right: calc(
            var(--edwinos-header-search-right)
            + var(--edwinos-header-control-size)
            + var(--edwinos-header-tabs-search-gap)
        ) !important;
    }

    .md-tabs .md-tabs__list {
        gap: 4px !important;
    }

    .md-tabs .md-tabs__link {
        padding-inline: 11px !important;
        font-size: 17.2px !important;
    }

    html:has(> head > link[rel="canonical"][href*="/OsdNotes/"]),
    html:has(> head > link[rel="canonical"][href*="/%E7%BB%8F%E9%AA%8C%E5%88%86%E4%BA%AB/"]) {
        --edwinos-mobile-drawer-control-size: clamp(
            26px,
            calc(8.036vw + 0.286px),
            44px
        );
        --edwinos-mobile-drawer-space: calc(
            var(--edwinos-mobile-drawer-control-size)
            + 8px
        );
    }
}

/* Preserve the full navigation rhythm until the search has naturally reached
   its circular endpoint. Afterward, consume only surplus button spacing. */
@media screen and (max-width: 32.875rem) {
    .md-header .md-search {
        left: auto !important;
        width: var(--edwinos-header-control-size) !important;
        min-width: var(--edwinos-header-control-size) !important;
        max-width: var(--edwinos-header-control-size) !important;
    }

    .md-tabs .md-tabs__link {
        padding-inline: clamp(
            1.5px,
            calc((100vw - 460px) / 6),
            11px
        ) !important;
    }
}

@media screen and (min-width: 34.0625rem) and (max-width: 36rem) {
    :root {
        --edwinos-header-tabs-left: clamp(
            10.88px,
            calc(1.74vw + 1.5px),
            11.52px
        );
    }

    .md-tabs {
        left: clamp(
            10.88px,
            calc(1.74vw + 1.5px),
            11.52px
        ) !important;
    }

    .md-tabs .md-tabs__list {
        gap: 4px !important;
    }

    .md-tabs .md-tabs__link {
        padding-inline: 11px !important;
        font-size: 17.2px !important;
    }

    html:has(> head > link[rel="canonical"][href*="/OsdNotes/"])
    .md-tabs,
    html:has(> head > link[rel="canonical"][href*="/%E7%BB%8F%E9%AA%8C%E5%88%86%E4%BA%AB/"])
    .md-tabs {
        left: calc(max(10px, 2vw) + 52px) !important;
    }

    html:has(> head > link[rel="canonical"][href*="/OsdNotes/"]),
    html:has(> head > link[rel="canonical"][href*="/%E7%BB%8F%E9%AA%8C%E5%88%86%E4%BA%AB/"]) {
        --edwinos-header-tabs-left: calc(max(10px, 2vw) + 52px);
    }
}

@media screen and (max-width: 40rem) {
    html:has(> head > link[rel="canonical"][href*="/OsdNotes/"])
    .md-tabs .md-grid,
    html:has(> head > link[rel="canonical"][href*="/%E7%BB%8F%E9%AA%8C%E5%88%86%E4%BA%AB/"])
    .md-tabs .md-grid {
        overflow-x: auto !important;
        overflow-y: hidden !important;
        overscroll-behavior-inline: contain;
        -webkit-overflow-scrolling: touch;
    }

    html:has(> head > link[rel="canonical"][href*="/OsdNotes/"])
    .md-tabs .md-tabs__list,
    html:has(> head > link[rel="canonical"][href*="/%E7%BB%8F%E9%AA%8C%E5%88%86%E4%BA%AB/"])
    .md-tabs .md-tabs__list {
        flex: 0 0 max-content !important;
        min-width: max-content !important;
    }
}

@media screen and (max-width: 22.5rem) {
    :root {
        --edwinos-header-control-size: clamp(
            34px,
            calc(25vw - 46px),
            44px
        );
        --edwinos-header-source-icon-size: clamp(
            24px,
            calc(10vw - 8px),
            28px
        );
    }
}

[data-md-toggle="search"]:checked
~ .md-header
.md-header__button[for="__search"] {
    transform: scale(0.88) !important;
    opacity: 0 !important;
    visibility: hidden !important;
    pointer-events: none !important;
    transition: none !important;
}

.md-header .md-search__input {
    height: 100% !important;
    min-height: 0 !important;
    margin-block: 0 !important;
    padding-block: 0 !important;
    line-height: normal !important;
}

@media (prefers-reduced-motion: reduce) {
    html.edwinos-search-transitioning .md-header .md-search,
    [data-md-toggle="search"]:checked ~ .md-header .md-search__input,
    [data-md-toggle="search"]:checked
    ~ .md-header
    .md-search__form
    .md-search__icon[for="__search"] {
        transition: none !important;
    }
}

/*
 * Progressive Header Glass
 *
 * Five independently masked backdrop filters dissolve scrolling content into
 * the translucent notch. The 52px extension is part of one continuous glass
 * field, not a second panel attached beneath the 70px header.
 */
.md-header.md-header {
    isolation: isolate !important;
    border: 0 !important;
    box-shadow: none !important;
    background: transparent !important;
    -webkit-backdrop-filter: none !important;
    backdrop-filter: none !important;
}

/* The legacy homepage selectors include both body state and color-scheme
   classes, so repeat the transparent shell at matching specificity here. */
body[data-md-color-scheme] .md-header.md-header {
    background: transparent !important;
    -webkit-backdrop-filter: none !important;
    backdrop-filter: none !important;
}

/* Retire the former core/tail pseudo-elements from both EdwinOS and legacy. */
.md-header.md-header::before,
.md-header.md-header::after {
    display: none !important;
    content: none !important;
    -webkit-backdrop-filter: none !important;
    backdrop-filter: none !important;
}

.md-header > .edwinos-header-glass {
    position: absolute !important;
    top: 0 !important;
    right: 0 !important;
    left: 0 !important;
    z-index: 0 !important;
    display: block !important;
    width: auto !important;
    height: calc(100% + 52px) !important;
    overflow: hidden !important;
    pointer-events: none !important;
}

.edwinos-header-glass__layer,
.edwinos-header-glass__fade {
    position: absolute !important;
    inset: 0 !important;
    display: block !important;
    border: 0 !important;
    background: transparent;
    box-shadow: none !important;
    pointer-events: none !important;
}

.edwinos-header-glass__layer {
    -webkit-mask-repeat: no-repeat !important;
    mask-repeat: no-repeat !important;
    -webkit-mask-size: 100% 100% !important;
    mask-size: 100% 100% !important;
}

.edwinos-header-glass__layer--1 {
    /* Reference-shaped mask shifted upward to preserve the 74% safety boundary. */
    -webkit-mask-image: linear-gradient(to bottom, transparent 0 24%, #000 44% 56%, transparent 74% 100%);
    mask-image: linear-gradient(to bottom, transparent 0 24%, #000 44% 56%, transparent 74% 100%);
    -webkit-backdrop-filter: blur(3px);
    backdrop-filter: blur(3px);
}

.edwinos-header-glass__layer--2 {
    -webkit-mask-image: linear-gradient(to bottom, transparent 0 18%, #000 36% 52%, transparent 74% 100%);
    mask-image: linear-gradient(to bottom, transparent 0 18%, #000 36% 52%, transparent 74% 100%);
    -webkit-backdrop-filter: blur(6px);
    backdrop-filter: blur(6px);
}

.edwinos-header-glass__layer--3 {
    -webkit-mask-image: linear-gradient(to bottom, #000 0 28%, transparent 58% 100%);
    mask-image: linear-gradient(to bottom, #000 0 28%, transparent 58% 100%);
    -webkit-backdrop-filter: blur(10px);
    backdrop-filter: blur(10px);
}

.edwinos-header-glass__layer--4 {
    -webkit-mask-image: linear-gradient(to bottom, #000 0 16%, transparent 42% 100%);
    mask-image: linear-gradient(to bottom, #000 0 16%, transparent 42% 100%);
    -webkit-backdrop-filter: blur(16px);
    backdrop-filter: blur(16px);
}

.edwinos-header-glass__layer--5 {
    -webkit-mask-image: linear-gradient(to bottom, #000 0%, transparent 22% 100%);
    mask-image: linear-gradient(to bottom, #000 0%, transparent 22% 100%);
    -webkit-backdrop-filter: blur(22px);
    backdrop-filter: blur(22px);
}

[data-md-color-scheme="default"] .edwinos-header-glass__fade {
    background: linear-gradient(
        to bottom,
        rgba(246, 248, 250, 0.9) 0%,
        rgba(246, 248, 250, 0.55) 28%,
        rgba(246, 248, 250, 0.18) 52%,
        transparent 74%
    ) !important;
}

[data-md-color-scheme="slate"] .edwinos-header-glass__fade {
    background: linear-gradient(
        to bottom,
        rgba(13, 17, 23, 0.9) 0%,
        rgba(13, 17, 23, 0.55) 28%,
        rgba(13, 17, 23, 0.18) 52%,
        transparent 74%
    ) !important;
}

/* Material keeps tabs as a separate header child. Lift the control rail above
   the glass and tabs, but let pointer events pass through its empty areas so
   the tab links beneath remain interactive. */
.md-header > .md-header__inner {
    z-index: 22 !important;
    pointer-events: none !important;
}

.md-header > .md-header__inner > * {
    pointer-events: auto !important;
}

/* Legacy gives the direct-child tabs a solid dark/light rectangle. Keep only
   each individual tab pill opaque and leave the tab rail itself transparent. */
body[data-md-color-scheme] .md-header > .md-tabs.md-tabs,
[data-md-color-scheme] .md-header > .md-tabs.md-tabs,
body[data-md-color-scheme] .md-header .md-tabs.md-tabs,
[data-md-color-scheme] .md-header .md-tabs.md-tabs {
    border: 0 !important;
    background: transparent !important;
    box-shadow: none !important;
    -webkit-backdrop-filter: none !important;
    backdrop-filter: none !important;
}

/* Safari keeps a tapped link in :hover after Material's instant navigation.
   On touch screens that stale hover must not compete with the new active tab. */
@media (hover: none), (pointer: coarse) {
    [data-md-color-scheme="default"] .md-tabs__link:hover {
        color: #57606a !important;
        background: transparent !important;
        font-weight: 500 !important;
        transform: none !important;
    }

    [data-md-color-scheme="slate"] .md-tabs__link:hover {
        color: #8b949e !important;
        background: transparent !important;
        font-weight: 500 !important;
        transform: none !important;
    }

    [data-md-color-scheme="default"]
    .md-tabs__item--active
    .md-tabs__link {
        color: #1f2328 !important;
        background: rgba(31, 35, 40, 0.1) !important;
        font-weight: 600 !important;
    }

    [data-md-color-scheme="slate"]
    .md-tabs__item--active
    .md-tabs__link {
        color: #f0f6fc !important;
        background: rgba(240, 246, 252, 0.12) !important;
        font-weight: 600 !important;
    }
}

/* Keep the complete mobile notch, including expanded search, in the sticky
   header's coordinate system. iOS otherwise composites fixed controls and
   absolute tabs separately while recovering from elastic overscroll. */
@media screen and (max-width: 58em) {
    .md-header .md-search,
    .md-header .md-header__source,
    .md-header .md-header__option {
        position: absolute !important;
    }
}

/* ==========================================================================
   Drawer Navigation and Article TOC
   ========================================================================== */

/* Shared sidebar/navigation primitives. Typography remains separately owned. */
.md-nav__link {
    transition: all 0.2s ease;
}

.md-nav__item--active > .md-nav__link {
    font-weight: 600;
}

[data-md-color-scheme="slate"] .md-sidebar {
    background: #0d1117;
    border-right: 1px solid rgba(48, 54, 61, 0.72);
}

[data-md-color-scheme="slate"] .md-nav__link {
    color: #8b949e;
}

[data-md-color-scheme="slate"] .md-nav__link:hover {
    color: #c9d1d9;
}

[data-md-color-scheme="slate"] .md-nav__item--active > .md-nav__link {
    color: #58a6ff;
    font-weight: 600;
}

/* Material renders each TOC level alike by default. These retained primitives
   preserve the established hierarchy and remain before the final type scale. */
[data-md-component="toc"] > li > .md-nav__link {
    font-size: 0.78rem;
    font-weight: 600;
    color: var(--md-default-fg-color, #1c1917);
    letter-spacing: -0.005em;
    margin-top: 0.35rem;
}

[data-md-component="toc"] li li > .md-nav__link {
    font-size: 0.72rem;
    font-weight: 500;
    color: var(--md-default-fg-color--light, #57534e);
    opacity: 0.95;
}

[data-md-component="toc"] li li li > .md-nav__link {
    font-size: 0.68rem;
    font-weight: 400;
    color: var(--md-default-fg-color--light, #57534e);
    opacity: 0.78;
}

[data-md-component="toc"] li li li li > .md-nav__link {
    font-size: 0.66rem;
    font-weight: 400;
    opacity: 0.65;
}

[data-md-component="toc"] li li li li li > .md-nav__link {
    font-size: 0.64rem;
    font-weight: 400;
    font-style: italic;
    opacity: 0.55;
}

[data-md-component="toc"] .md-nav__link--active,
[data-md-component="toc"] .md-nav__link--passed + nav .md-nav__link--active {
    color: var(--ej-brand, #1e3a8a) !important;
    font-weight: 600 !important;
    opacity: 1 !important;
}

[data-md-component="toc"] .md-nav__link:hover {
    color: var(--ej-brand-hover, #1d4ed8);
    opacity: 1;
}

[data-md-color-scheme="slate"] [data-md-component="toc"] > li > .md-nav__link {
    color: #e2e8f0;
}

[data-md-color-scheme="slate"] [data-md-component="toc"] li li > .md-nav__link {
    color: #cbd5e1;
}

[data-md-color-scheme="slate"] [data-md-component="toc"] li li li > .md-nav__link,
[data-md-color-scheme="slate"] [data-md-component="toc"] li li li li > .md-nav__link,
[data-md-color-scheme="slate"] [data-md-component="toc"] li li li li li > .md-nav__link {
    color: #94a3b8;
}

[data-md-color-scheme="slate"] [data-md-component="toc"] .md-nav__link--active {
    color: #93c5fd !important;
}

[data-md-color-scheme="slate"] [data-md-component="toc"] .md-nav__link:hover {
    color: #bfdbfe;
}

.md-sidebar--secondary .md-nav__title {
    font-size: 0.82rem;
    font-weight: 700;
    letter-spacing: 0.02em;
    text-transform: uppercase;
    color: var(--ej-brand, #1e3a8a);
    padding-bottom: 0.5rem;
    border-bottom: 1px solid rgba(28, 25, 23, 0.08);
    margin-bottom: 0.5rem;
}

[data-md-color-scheme="slate"] .md-sidebar--secondary .md-nav__title {
    color: #93c5fd;
    border-bottom-color: rgba(148, 163, 184, 0.2);
}

@media screen and (max-width: 76.1875em) {
    [data-md-color-scheme="default"] .md-nav--primary {
        background: rgba(250, 250, 249, 0.96);
        border-right: 1px solid #e7e5e4;
        box-shadow: 0 16px 40px -18px rgba(0, 0, 0, 0.35);
    }

    [data-md-color-scheme="default"] .md-nav--primary .md-nav__title {
        background: #fafaf9;
        border-bottom: 1px solid #e7e5e4;
    }

    [data-md-color-scheme="slate"] .md-nav--primary {
        background: rgba(13, 17, 23, 0.96);
        border-right: 1px solid #30363d;
        box-shadow: 0 20px 45px -20px rgba(1, 4, 9, 0.72);
    }

    [data-md-color-scheme="slate"] .md-nav--primary .md-nav__title {
        background: #0d1117;
        border-bottom: 1px solid #30363d;
        color: #c9d1d9;
    }
}

.md-sidebar--primary .edwinos-profile-drawer-entry,
.md-sidebar--primary .md-nav--primary .md-nav__item:has(> .md-nav__link[href$="HOME/Archive/"]),
.md-sidebar--primary .md-nav--primary .md-nav__item:has(> .md-nav__link[href$="HOME/Archive/index.html"]),
.md-sidebar--primary .md-nav--primary .md-nav__item:has(> .md-nav__link[href$="HOME/friends/"]),
.md-sidebar--primary .md-nav--primary .md-nav__item:has(> .md-nav__link[href$="HOME/friends/index.html"]) {
    display: none !important;
}

@media screen and (max-width: 76.1875em) {
    html:not(:has(> head > link[rel="canonical"][href*="/OsdNotes/"])):not(:has(> head > link[rel="canonical"][href*="/%E7%BB%8F%E9%AA%8C%E5%88%86%E4%BA%AB/"]))
    [data-md-toggle="drawer"]:checked ~ .md-container .md-sidebar--primary,
    html:not(:has(> head > link[rel="canonical"][href*="/OsdNotes/"])):not(:has(> head > link[rel="canonical"][href*="/%E7%BB%8F%E9%AA%8C%E5%88%86%E4%BA%AB/"]))
    [data-md-toggle="drawer"]:checked ~ .md-overlay {
        display: none !important;
        opacity: 0 !important;
        pointer-events: none !important;
    }

    html:has(> head > link[rel="canonical"][href*="/OsdNotes/"])
    body .md-header__button[for="__drawer"],
    html:has(> head > link[rel="canonical"][href*="/%E7%BB%8F%E9%AA%8C%E5%88%86%E4%BA%AB/"])
    body .md-header__button[for="__drawer"] {
        position: absolute !important;
        top: 50% !important;
        left: 0.6rem !important;
        z-index: 2 !important;
        display: inline-flex !important;
        width: 2.2rem !important;
        height: 2.2rem !important;
        align-items: center !important;
        justify-content: center !important;
        margin: 0 !important;
        padding: 0 !important;
        transform: translateY(-50%) !important;
    }

    /* The runtime marks only the active ENotes/Experiences drawer branch. */
    .md-nav--primary[data-edwinos-drawer-section]
    .edwinos-drawer-section-nav
    > .edwinos-drawer-section-title {
        display: none !important;
    }

    /* The section title is intentionally hidden, so its list no longer inherits
       Material's native top bar. Place the first row's 0.6rem text inset just
       beyond the header glass's 74% fade boundary, and keep the viewport-height
       drawer border-box. */
    .md-nav--primary[data-edwinos-drawer-section]
    .edwinos-drawer-section-nav
    > .md-nav__list {
        --edwinos-drawer-glass-clearance: calc(
            var(--edwinos-mobile-header-height, 3.5rem)
            + 0.42rem
        );
        box-sizing: border-box !important;
        padding-top: var(--edwinos-drawer-glass-clearance) !important;
    }

    .md-nav--primary[data-edwinos-drawer-section]
    .edwinos-drawer-section-nav
    > .edwinos-drawer-section-title
    > .md-nav__icon {
        display: none !important;
    }

    .md-nav--primary[data-edwinos-drawer-section]
    .edwinos-drawer-section-nav
    > .edwinos-drawer-section-title::before,
    .md-nav--primary[data-edwinos-drawer-section]
    .edwinos-drawer-section-nav
    > .edwinos-drawer-section-title::after {
        display: none !important;
        content: none !important;
    }

    .md-nav--primary[data-edwinos-drawer-section]
    .edwinos-drawer-section-nav
    .edwinos-drawer-back-title {
        position: relative !important;
        display: flex !important;
        width: 100% !important;
        height: 5.6rem !important;
        min-height: 5.6rem !important;
        align-items: center !important;
        margin: 0 !important;
        padding: 3.5rem 0.8rem 0 2.75rem !important;
        overflow: hidden !important;
        color: var(--md-default-fg-color) !important;
        font-size: 0.86rem !important;
        font-weight: 600 !important;
        line-height: 1.2 !important;
        white-space: nowrap !important;
        text-overflow: ellipsis !important;
        cursor: pointer !important;
    }

    .md-nav--primary[data-edwinos-drawer-section]
    .edwinos-drawer-section-nav
    .edwinos-drawer-back-title
    > .md-nav__icon {
        display: none !important;
    }

    .md-nav--primary[data-edwinos-drawer-section]
    .edwinos-drawer-section-nav
    .edwinos-drawer-back-title::before {
        position: absolute !important;
        top: auto !important;
        bottom: 0.12rem !important;
        left: 0.55rem !important;
        content: "" !important;
        display: block !important;
        width: 1.8rem !important;
        height: 1.8rem !important;
        background-color: currentColor !important;
        border: 0 !important;
        border-radius: 0 !important;
        box-shadow: none !important;
        -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M20 11H7.83l5.59-5.59L12 4l-8 8 8 8 1.41-1.41L7.83 13H20v-2z'/%3E%3C/svg%3E") !important;
        mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M20 11H7.83l5.59-5.59L12 4l-8 8 8 8 1.41-1.41L7.83 13H20v-2z'/%3E%3C/svg%3E") !important;
        -webkit-mask-position: 52% 50% !important;
        mask-position: 52% 50% !important;
        -webkit-mask-repeat: no-repeat !important;
        mask-repeat: no-repeat !important;
        -webkit-mask-size: 1.08rem 1.08rem !important;
        mask-size: 1.08rem 1.08rem !important;
        transform: none !important;
        pointer-events: none !important;
    }

    .md-nav--primary[data-edwinos-drawer-section]
    .edwinos-drawer-section-nav
    .edwinos-drawer-back-title:is(:hover, :focus-visible)::before {
        color: var(--md-accent-fg-color) !important;
        background-color: currentColor !important;
    }
}

@media screen and (min-width: 34.0625rem) and (max-width: 76.1875rem) {
    html:has(> head > link[rel="canonical"][href*="/OsdNotes/"]),
    html:has(> head > link[rel="canonical"][href*="/%E7%BB%8F%E9%AA%8C%E5%88%86%E4%BA%AB/"]) {
        --edwinos-mobile-drawer-space: calc(
            max(10px, 2vw)
            + 44px
            + 8px
            - 0.72rem
        );
    }
}

@media screen and (max-width: 34rem) {
    html:has(> head > link[rel="canonical"][href*="/OsdNotes/"])
    body .md-header__button[for="__drawer"],
    html:has(> head > link[rel="canonical"][href*="/%E7%BB%8F%E9%AA%8C%E5%88%86%E4%BA%AB/"])
    body .md-header__button[for="__drawer"] {
        box-sizing: border-box !important;
        top: calc(
            (
                var(
                    --edwinos-mobile-header-height,
                    var(--compact-header-height, 3.5rem)
                )
                - var(--edwinos-mobile-drawer-control-size)
            )
            / 2
        ) !important;
        left: max(5px, 2vw) !important;
        width: var(--edwinos-mobile-drawer-control-size) !important;
        height: var(--edwinos-mobile-drawer-control-size) !important;
        padding: 0 !important;
        transform: none !important;
    }
}

@media screen and (min-width: 34.0625rem) and (max-width: 76.1875rem) {
    html:has(> head > link[rel="canonical"][href*="/OsdNotes/"])
    body .md-header__button[for="__drawer"],
    html:has(> head > link[rel="canonical"][href*="/%E7%BB%8F%E9%AA%8C%E5%88%86%E4%BA%AB/"])
    body .md-header__button[for="__drawer"] {
        box-sizing: border-box !important;
        top: 13px !important;
        left: max(10px, 2vw) !important;
        width: 44px !important;
        height: 44px !important;
        padding: 0 !important;
        transform: none !important;
    }
}

/* Keep article navigation geometry stable across hover, focus, and active
   states. Preserve hierarchy through nested lists and communicate interaction
   with color alone, without shifting long titles onto another line. */
.md-sidebar--primary .md-nav__list
.md-nav__link:not(.md-nav__title):not(.edwinos-drawer-back-title):not(.edwinos-drawer-section-title),
.md-sidebar--secondary [data-md-component="toc"] .md-nav__link {
    box-sizing: border-box;
    transition-property: color, background-color, opacity !important;
}

.md-sidebar--primary .md-nav__list
.md-nav__link:not(.md-nav__title):not(.edwinos-drawer-back-title):not(.edwinos-drawer-section-title):is(:hover, :focus-visible, .md-nav__link--active),
.md-sidebar--secondary [data-md-component="toc"]
.md-nav__link:is(:hover, :focus-visible, .md-nav__link--active, .edwinos-toc-link--selected) {
    padding-left: 0 !important;
    transform: none !important;
}

/* Keep the responsive ENotes/Experiences drawer visually continuous with the
   desktop sidebar: one canvas, no row dividers, and color-only interaction. */
@media screen and (max-width: 76.1875em) {
    body[data-md-color-scheme="default"]
    .md-sidebar--primary
    .md-nav--primary[data-edwinos-drawer-section],
    body[data-md-color-scheme="default"]
    .md-sidebar--primary
    .md-nav--primary[data-edwinos-drawer-section] .md-nav,
    body[data-md-color-scheme="default"]
    .md-sidebar--primary
    .md-nav--primary[data-edwinos-drawer-section] .md-nav__title,
    body[data-md-color-scheme="default"]
    .md-sidebar--primary
    .md-nav--primary[data-edwinos-drawer-section]
    .md-nav__title ~ .md-nav__list {
        background: var(--github-frame-light-bg, #f6f8fa) !important;
    }

    .md-sidebar--primary
    .md-nav--primary[data-edwinos-drawer-section]
    .edwinos-drawer-section-nav .md-nav__title {
        border-bottom: 0 !important;
        box-shadow: none !important;
    }

    .md-sidebar--primary
    .md-nav--primary[data-edwinos-drawer-section]
    .edwinos-drawer-section-nav .md-nav__title ~ .md-nav__list {
        box-shadow: none !important;
    }

    .md-sidebar--primary
    .md-nav--primary[data-edwinos-drawer-section]
    .edwinos-drawer-section-nav .md-nav__item {
        border-top: 0 !important;
    }

    .md-sidebar--primary
    .md-nav--primary[data-edwinos-drawer-section]
    .edwinos-drawer-section-nav
    > .md-nav__list
    > .md-nav__item
    > .md-nav__link:not(.md-nav__container):is(
        :hover,
        :focus-visible,
        .md-nav__link--active
    ),
    .md-sidebar--primary
    .md-nav--primary[data-edwinos-drawer-section]
    .edwinos-drawer-section-nav
    .md-nav:not(.md-nav--secondary)
    > .md-nav__list
    > .md-nav__item
    > .md-nav__link:not(.md-nav__container):is(
        :hover,
        :focus-visible,
        .md-nav__link--active
    ) {
        padding-left: 0.8rem !important;
        background: transparent !important;
        transform: none !important;
    }

    .md-sidebar--primary
    .md-nav--primary[data-edwinos-drawer-section]
    .edwinos-drawer-section-nav
    .md-nav__container:is(
        :hover,
        :focus-visible,
        .md-nav__link--active
    ) {
        padding-left: 0.8rem !important;
        background: transparent !important;
        transform: none !important;
    }

    .md-sidebar--primary
    .md-nav--primary[data-edwinos-drawer-section]
    .edwinos-drawer-section-nav
    .md-nav__container
    > .md-nav__link:is(
        :hover,
        :focus-visible,
        .md-nav__link--active
    ) {
        padding-left: 0 !important;
        background: transparent !important;
        transform: none !important;
    }

    body[data-md-color-scheme="default"]
    .md-sidebar--primary
    .md-nav--primary[data-edwinos-drawer-section]
    .edwinos-drawer-section-nav
    .md-nav__link:is(:hover, :focus-visible) {
        color: #0969da !important;
        background: transparent !important;
        transform: none !important;
    }

    body[data-md-color-scheme="slate"]
    .md-sidebar--primary
    .md-nav--primary[data-edwinos-drawer-section]
    .edwinos-drawer-section-nav
    .md-nav__link:is(:hover, :focus-visible) {
        color: #58a6ff !important;
        background: transparent !important;
        transform: none !important;
    }
}

body[data-md-color-scheme="default"]
.md-sidebar--primary .md-nav__link--active {
    color: #0969da !important;
}

body[data-md-color-scheme="slate"]
.md-sidebar--primary .md-nav__link--active {
    color: #58a6ff !important;
}

/* Article TOC: the title follows Overview's Caveat section headings. The
   masked layers reuse the header's five-stage blur, while one theme-matched
   fade supplies the glass tint beneath the title divider. */
.md-sidebar--secondary .md-nav--secondary > .md-nav__title {
    position: sticky !important;
    z-index: 3 !important;
    overflow: visible !important;
    font-family: var(--edwinos-font-hand) !important;
    font-size: 1.3rem !important;
    font-weight: 700 !important;
    line-height: 1.1 !important;
    letter-spacing: 0 !important;
    text-transform: none !important;
    background: rgb(246, 248, 250) !important;
    border-bottom: 0 !important;
    box-shadow: none !important;
    -webkit-backdrop-filter: blur(18px) saturate(108%);
    backdrop-filter: blur(18px) saturate(108%);
}

/* Cover the small scrollwrap strip above the sticky title so TOC entries
   cannot peek through while Material keeps the sidebar vertically aligned. */
.md-sidebar--secondary .md-nav--secondary > .md-nav__title::before {
    position: absolute;
    right: 0;
    bottom: 100%;
    left: 0;
    height: 1rem;
    background: inherit;
    content: "";
    pointer-events: none;
}

[data-md-color-scheme="slate"]
.md-sidebar--secondary .md-nav--secondary > .md-nav__title {
    background: rgb(13, 17, 23) !important;
}

.md-sidebar--secondary .edwinos-toc-glass {
    position: absolute;
    top: calc(100% - 1px);
    right: 0;
    left: 0;
    z-index: 2;
    display: block;
    height: calc(var(--edwinos-toc-glass-depth, 0px) + 1px);
    overflow: hidden;
    pointer-events: none;
}

.md-sidebar--secondary :is(.edwinos-toc-glass__layer, .edwinos-toc-glass__fade) {
    position: absolute;
    inset: 0;
    display: block;
    border: 0;
    background: transparent;
    pointer-events: none;
}

.md-sidebar--secondary .edwinos-toc-glass__layer {
    background: transparent;
    -webkit-mask-repeat: no-repeat;
    mask-repeat: no-repeat;
    -webkit-mask-size: 100% 100%;
    mask-size: 100% 100%;
}

.md-sidebar--secondary .edwinos-toc-glass__layer--1 {
    -webkit-mask-image: linear-gradient(to bottom, transparent 0 24%, #000 44% 56%, transparent 74% 100%);
    mask-image: linear-gradient(to bottom, transparent 0 24%, #000 44% 56%, transparent 74% 100%);
    -webkit-backdrop-filter: blur(3px);
    backdrop-filter: blur(3px);
}

.md-sidebar--secondary .edwinos-toc-glass__layer--2 {
    -webkit-mask-image: linear-gradient(to bottom, transparent 0 18%, #000 36% 52%, transparent 74% 100%);
    mask-image: linear-gradient(to bottom, transparent 0 18%, #000 36% 52%, transparent 74% 100%);
    -webkit-backdrop-filter: blur(6px);
    backdrop-filter: blur(6px);
}

.md-sidebar--secondary .edwinos-toc-glass__layer--3 {
    -webkit-mask-image: linear-gradient(to bottom, #000 0 28%, transparent 58% 100%);
    mask-image: linear-gradient(to bottom, #000 0 28%, transparent 58% 100%);
    -webkit-backdrop-filter: blur(10px);
    backdrop-filter: blur(10px);
}

.md-sidebar--secondary .edwinos-toc-glass__layer--4 {
    -webkit-mask-image: linear-gradient(to bottom, #000 0 16%, transparent 42% 100%);
    mask-image: linear-gradient(to bottom, #000 0 16%, transparent 42% 100%);
    -webkit-backdrop-filter: blur(16px);
    backdrop-filter: blur(16px);
}

.md-sidebar--secondary .edwinos-toc-glass__layer--5 {
    -webkit-mask-image: linear-gradient(to bottom, #000 0%, transparent 22% 100%);
    mask-image: linear-gradient(to bottom, #000 0%, transparent 22% 100%);
    -webkit-backdrop-filter: blur(22px);
    backdrop-filter: blur(22px);
}

[data-md-color-scheme="default"]
.md-sidebar--secondary .edwinos-toc-glass__fade {
    background: linear-gradient(
        to bottom,
        rgba(246, 248, 250, 0.9) 0%,
        rgba(246, 248, 250, 0.55) 28%,
        rgba(246, 248, 250, 0.18) 52%,
        transparent 74%
    );
}

[data-md-color-scheme="slate"]
.md-sidebar--secondary .edwinos-toc-glass__fade {
    background: linear-gradient(
        to bottom,
        rgba(13, 17, 23, 0.9) 0%,
        rgba(13, 17, 23, 0.55) 28%,
        rgba(13, 17, 23, 0.18) 52%,
        transparent 74%
    );
}

.md-sidebar--secondary [data-md-component="toc"] .md-nav__link {
    font-family: var(--edwinos-font-serif) !important;
    line-height: 1.38 !important;
    transition: color 0.2s ease, padding 0.2s ease, opacity 0.2s ease;
}

.md-sidebar--secondary [data-md-component="toc"] > li > .md-nav__link {
    font-size: 0.69rem !important;
}

.md-sidebar--secondary [data-md-component="toc"] li li > .md-nav__link {
    font-size: 0.64rem !important;
}

.md-sidebar--secondary [data-md-component="toc"] li li li > .md-nav__link {
    font-size: 0.61rem !important;
}

.md-sidebar--secondary [data-md-component="toc"] li li li li > .md-nav__link {
    font-size: 0.59rem !important;
}

/* Deep TOC entries need a brighter active color than the inherited navy on
   both palettes, especially against EdwinOS's dark article background. */
body[data-md-color-scheme="default"]
.md-sidebar--secondary [data-md-component="toc"]
li li > .md-nav__link--active {
    color: #0550ae !important;
}

body[data-md-color-scheme="slate"]
.md-sidebar--secondary [data-md-component="toc"]
li li > .md-nav__link--active {
    color: #79c0ff !important;
}

/* A TOC click may intentionally place the heading below Material's scrollspy
   threshold to clear the translucent notch. Keep the clicked item visually
   selected while the page is stationary; normal scroll tracking resumes as
   soon as the reader scrolls again. */
body[data-md-color-scheme="default"]
.md-sidebar--secondary [data-md-component="toc"]
.edwinos-toc-link--selected {
    color: #0550ae !important;
    font-weight: 600 !important;
    opacity: 1 !important;
}

body[data-md-color-scheme="slate"]
.md-sidebar--secondary [data-md-component="toc"]
.edwinos-toc-link--selected {
    color: #79c0ff !important;
    font-weight: 600 !important;
    opacity: 1 !important;
}

body[data-md-color-scheme="default"]
.md-sidebar--secondary [data-md-component="toc"]:has(.edwinos-toc-link--selected)
.md-nav__link--active:not(.edwinos-toc-link--selected) {
    color: var(--md-default-fg-color--light) !important;
    font-weight: 400 !important;
}

body[data-md-color-scheme="slate"]
.md-sidebar--secondary [data-md-component="toc"]:has(.edwinos-toc-link--selected)
.md-nav__link--active:not(.edwinos-toc-link--selected) {
    color: #94a3b8 !important;
    font-weight: 400 !important;
}

/* ==========================================================================
   Profile Card and HOME shell
   ==========================================================================
   Single owner for profile layout, identity, actions, metadata and responsive
   details. Declarations below retain the currently winning cascade values.
   Desktop: 260px sidebar; tablet: 13rem avatar with a flex details column;
   phone: 5.4rem avatar, with metadata spanning both columns at <=26rem.
   Keep route selectors and breakpoint order intact when extending this owner.
   ========================================================================== */

body.is-homepage .md-main__inner,
body:has(.academic-home-layout) .md-main__inner {
    max-width: none;
    margin-top: 0;
}

body.is-homepage .md-content,
body:has(.academic-home-layout) .md-content {
    max-width: none;
    padding-top: 0 !important;
}

body.is-homepage .md-content__inner::before,
body:has(.academic-home-layout) .md-content__inner::before {
    display: none;
}

.academic-home-layout {
    display: grid;
    margin: 0 auto;
}

.academic-home-layout .profile-card {
    display: flex;
    flex-direction: column;
    padding: 0;
    background: transparent !important;
    border: 0 !important;
    border-radius: 0;
    box-shadow: none !important;
}

.profile-avatar {
    transition: transform 0.45s cubic-bezier(0.16, 1, 0.3, 1);
    height: auto;
    aspect-ratio: 1 / 1;
    overflow: hidden;
    border: 1px solid var(--academic-card-border);
    border-radius: 50%;
    background: var(--academic-soft);
}

.profile-avatar img {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: cover;
    border-radius: 50%;
}

.academic-home-layout .profile-card:hover .profile-avatar {
    transform: translateY(-2px);
}

.profile-role {
    letter-spacing: 0;
    margin-right: 0 !important;
    margin-bottom: 0 !important;
    margin-left: 0 !important;
    color: var(--academic-muted);
    font-weight: 500;
}

.social-icon {
    display: block;
    width: 1.05rem;
    height: 1.05rem;
    fill: currentColor;
}

@media (prefers-reduced-motion: reduce) {
    .profile-avatar {
        transition: none !important;
    }

}
.academic-sidebar {
    display: flex;
    flex-direction: column;
    row-gap: 0;
    column-gap: 0;
}

.md-typeset .profile-name {
    margin: 0 !important;
    color: var(--academic-ink) !important;
}

.profile-pronouns {
    margin: 0.08rem 0 0 !important;
    color: var(--academic-muted);
    font-weight: 300;
    display: block;
}

.profile-actions {
    width: 100%;
}

.md-typeset .btn-github-action,
.md-typeset .btn-github-action:hover,
.md-typeset .btn-github-action:focus {
    width: 100%;
    background-color: #f6f8fa;
    border: 1px solid rgba(31, 35, 40, 0.15) !important;
    border-radius: 6px;
    box-shadow: 0 1px 0 rgba(27, 31, 36, 0.04);
    text-decoration: none !important;
    white-space: nowrap;
    transition: background-color 0.2s ease, border-color 0.2s ease, color 0.2s ease;
    color: #1F2328 !important;
    text-align: center !important;
    box-sizing: border-box !important;
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
}

.md-typeset .btn-github-action:hover,
.md-typeset .btn-github-action:focus {
    background-color: #f3f4f6;
}

body[data-md-color-scheme="slate"] .md-typeset .btn-github-action,
body[data-md-color-scheme="slate"] .md-typeset .btn-github-action:hover,
body[data-md-color-scheme="slate"] .md-typeset .btn-github-action:focus {
    background-color: #21262d;
    border-color: rgba(240, 246, 252, 0.1) !important;
    box-shadow: none;
    color: #f0f6fc !important;
}

body[data-md-color-scheme="slate"] .md-typeset .btn-github-action:hover,
body[data-md-color-scheme="slate"] .md-typeset .btn-github-action:focus {
    background-color: #30363d;
    border-color: #8b949e !important;
}

.profile-followers {
    width: 100%;
}

.md-typeset .follower-link,
.md-typeset .follower-link:hover,
.md-typeset .follower-link:focus {
    display: inline-flex;
    align-items: center;
    row-gap: 6px;
    column-gap: 6px;
    color: var(--academic-muted) !important;
    border-bottom: 0 !important;
    text-decoration: none !important;
    transition: color 0.2s ease;
}

.follower-link .meta-icon {
    fill: currentColor;
}

.follower-text {
    display: inline-flex;
    row-gap: 0.25rem;
    column-gap: 0.25rem;
    align-items: baseline;
}

.follower-text strong {
    color: var(--academic-ink) !important;
    background: transparent !important;
    padding: 0 !important;
    font-weight: 600;
}

.md-typeset .profile-meta li::before {
    display: none !important;
    content: none !important;
}

.meta-icon {
    flex-shrink: 0;
    fill: var(--academic-muted);
}

.md-typeset .meta-link,
.md-typeset .meta-link:hover,
.md-typeset .meta-link:focus,
.md-typeset .meta-link:active {
    border-bottom: 0 !important;
    text-decoration: none !important;
    transition: color 0.2s ease;
}

.md-typeset .meta-link:hover,
.md-typeset .meta-link:focus,
.md-typeset .meta-link:active {
    color: var(--academic-accent) !important;
}

.profile-social-left {
    display: flex;
    width: 100%;
    align-items: center;
}

.md-typeset .profile-social-left a,
.md-typeset .profile-social-left a:hover,
.md-typeset .profile-social-left a:focus {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    color: var(--academic-muted);
    background: transparent;
    border: 0 !important;
    border-radius: 0;
    text-decoration: none !important;
    transition: color 0.2s ease;
}

.md-typeset .profile-social-left a:hover,
.md-typeset .profile-social-left a:focus {
    color: var(--academic-ink);
}

.profile-social-left .social-icon {
    fill: currentColor;
}

.academic-home-layout .profile-card .profile-name,
.academic-home-layout .profile-card .profile-pronouns,
.academic-home-layout .profile-card .profile-role {
    text-align: left;
}

.md-typeset .profile-meta {
    width: 100%;
    margin-top: 0 !important;
    margin-right: 0 !important;
    margin-left: 0 !important;
    padding: 0 !important;
    font-size: 14px;
    line-height: 1.5;
    list-style: none !important;
    list-style-type: none !important;
}

.md-typeset .profile-meta li {
    display: flex !important;
    width: 100%;
    justify-content: flex-start;
    margin: 0 !important;
    padding: 0 !important;
    color: var(--academic-ink);
    text-align: left;
    text-indent: 0 !important;
    list-style: none !important;
}

.md-typeset .profile-meta .meta-link,
.md-typeset .profile-meta .meta-text {
    font-size: inherit;
    line-height: inherit;
}

.profile-name-wrap {
    max-width: none;
}

.md-typeset .follower-link,
.md-typeset .follower-link:hover,
.md-typeset .follower-link:focus,
.follower-text {
    font-size: 14px;
    line-height: 1.5;
}

.md-typeset .follower-link:hover,
.md-typeset .follower-link:focus {
    color: var(--academic-muted) !important;
}

.md-typeset .follower-link:hover .meta-icon,
.md-typeset .follower-link:focus .meta-icon {
    fill: var(--academic-muted) !important;
}

.md-typeset .follower-link:hover .follower-text,
.md-typeset .follower-link:focus .follower-text,
.md-typeset .follower-link:hover .follower-count,
.md-typeset .follower-link:focus .follower-count,
.md-typeset .follower-link:hover .follower-separator,
.md-typeset .follower-link:focus .follower-separator {
    color: var(--academic-accent) !important;
}

.md-typeset .meta-link,
.meta-text,
.beijing-time-main,
.follower-count {
    color: #1F2328 !important;
}

.follower-text,
.follower-separator,
.beijing-time-zone {
    color: #656d76 !important;
}

[data-md-color-scheme="slate"] .md-typeset .meta-link,
[data-md-color-scheme="slate"] .meta-text,
[data-md-color-scheme="slate"] .beijing-time-main,
[data-md-color-scheme="slate"] .follower-count {
    color: #f0f6fc !important;
}

[data-md-color-scheme="slate"] .follower-text,
[data-md-color-scheme="slate"] .follower-separator,
[data-md-color-scheme="slate"] .beijing-time-zone {
    color: #8b949e !important;
}

[data-md-color-scheme="slate"] .meta-icon {
    fill: #8b949e !important;
}

[data-md-color-scheme="slate"] .md-typeset .meta-link:hover {
    color: #58a6ff !important;
}

body.is-home-profile-page .md-sidebar--primary {
    display: none !important;
}

body.is-home-profile-page .md-main__inner {
    max-width: none !important;
}

body.is-home-profile-page .md-content {
    max-width: none !important;
    padding-top: 0 !important;
}

.profile-cn-name {
    color: #656d76;
    font-size: 0.72em;
}

[data-md-color-scheme="slate"] .profile-cn-name {
    color: #8b949e;
}

body.is-homepage .md-content__inner,
body.is-home-profile-page .md-content__inner,
body:has(.academic-home-layout) .md-content__inner {
    max-width: none !important;
    margin: 0 !important;
    padding: clamp(0.75rem, 1.55vw, 1.15rem) clamp(0.9rem, 3.4vw, 2rem) 4rem !important;
}

body.is-homepage .academic-home-layout,
body.is-home-profile-page .academic-home-layout,
body:has(.academic-home-layout) .academic-home-layout {
    align-items: start !important;
    grid-template-columns: 260px minmax(0, 1fr) !important;
    row-gap: clamp(1.75rem, 3.4vw, 2.5rem) !important;
    column-gap: clamp(1.75rem, 3.4vw, 2.5rem) !important;
    width: min(100%, 80rem) !important;
}

body.is-homepage .academic-sidebar,
body.is-home-profile-page .academic-sidebar,
body:has(.academic-home-layout) .academic-sidebar {
    position: sticky !important;
    align-self: flex-start !important;
    transform: none !important;
    top: calc(
        var(
            --edwinos-header-height,
            var(--compact-header-height, var(--md-header-height, 48px))
        )
        + clamp(0.75rem, 1.55vw, 1.15rem)
    ) !important;
}

@media screen and (max-width: 58rem) {
    .profile-name-wrap,
    .profile-followers,
    .profile-meta {
        width: 100% !important;
        text-align: center !important;
    }

}
body.is-homepage .academic-home-layout .profile-card,
body.is-home-profile-page .academic-home-layout .profile-card,
body:has(.academic-home-layout) .academic-home-layout .profile-card {
    align-items: flex-start !important;
    text-align: left !important;
}

body.is-homepage .profile-avatar,
body.is-home-profile-page .profile-avatar,
body:has(.academic-home-layout) .profile-avatar {
    width: 100% !important;
    max-width: 260px !important;
    margin: 0 0 0.8rem !important;
}

body.is-homepage .profile-name-wrap,
body.is-home-profile-page .profile-name-wrap,
body:has(.academic-home-layout) .profile-name-wrap {
    width: 100% !important;
    margin: 0 0 0.75rem !important;
    text-align: left !important;
}

body.is-homepage .profile-pronouns,
body.is-home-profile-page .profile-pronouns,
body:has(.academic-home-layout) .profile-pronouns {
    transform: none !important;
    font-size: 0.92rem !important;
    line-height: 1.2 !important;
}

body.is-homepage .profile-role,
body.is-home-profile-page .profile-role,
body:has(.academic-home-layout) .profile-role {
    margin-top: 0.12rem !important;
    font-size: 0.76rem !important;
    line-height: 1.25 !important;
}

body.is-homepage .profile-actions,
body.is-home-profile-page .profile-actions,
body:has(.academic-home-layout) .profile-actions,
body.is-homepage .profile-followers,
body.is-home-profile-page .profile-followers,
body:has(.academic-home-layout) .profile-followers {
    margin-bottom: 0.72rem !important;
}

body.is-homepage .md-typeset .btn-github-action,
body.is-homepage .md-typeset .btn-github-action:hover,
body.is-homepage .md-typeset .btn-github-action:focus,
body.is-home-profile-page .md-typeset .btn-github-action,
body.is-home-profile-page .md-typeset .btn-github-action:hover,
body.is-home-profile-page .md-typeset .btn-github-action:focus,
body:has(.academic-home-layout) .md-typeset .btn-github-action,
body:has(.academic-home-layout) .md-typeset .btn-github-action:hover,
body:has(.academic-home-layout) .md-typeset .btn-github-action:focus {
    min-height: 26px !important;
    height: 26px !important;
    padding: 0 12px !important;
    font-family: var(--edwinos-font-mono) !important;
    font-size: 0.84rem !important;
    font-weight: 500 !important;
    letter-spacing: 0 !important;
    line-height: 1.2 !important;
}

body.is-homepage .md-typeset .follower-link,
body.is-homepage .md-typeset .follower-text,
body.is-homepage .md-typeset .profile-meta li,
body.is-home-profile-page .md-typeset .follower-link,
body.is-home-profile-page .md-typeset .follower-text,
body.is-home-profile-page .md-typeset .profile-meta li,
body:has(.academic-home-layout) .md-typeset .follower-link,
body:has(.academic-home-layout) .md-typeset .follower-text,
body:has(.academic-home-layout) .md-typeset .profile-meta li {
    font-size: 0.84rem !important;
    line-height: 1.45 !important;
}

body.is-homepage .md-typeset .profile-meta,
body.is-home-profile-page .md-typeset .profile-meta,
body:has(.academic-home-layout) .md-typeset .profile-meta {
    margin-bottom: 0.65rem !important;
    display: flex !important;
    flex-direction: column !important;
    flex-wrap: nowrap !important;
    align-items: flex-start !important;
    row-gap: 0.36rem !important;
    column-gap: 0.88rem !important;
    overflow: visible !important;
}

body.is-homepage .md-typeset .profile-meta .meta-icon,
body.is-homepage .follower-link .meta-icon,
body.is-home-profile-page .md-typeset .profile-meta .meta-icon,
body.is-home-profile-page .follower-link .meta-icon,
body:has(.academic-home-layout) .md-typeset .profile-meta .meta-icon,
body:has(.academic-home-layout) .follower-link .meta-icon {
    width: 15px !important;
    height: 15px !important;
}

body.is-homepage .profile-social-left,
body.is-home-profile-page .profile-social-left,
body:has(.academic-home-layout) .profile-social-left {
    justify-content: flex-start !important;
    margin-top: 0.15rem !important;
    row-gap: 0.72rem !important;
    column-gap: 0.72rem !important;
    transform: translateX(-0.06rem);
}

@media screen and (max-width: 63.25em) {
    body.is-homepage .academic-home-layout,
    body.is-home-profile-page .academic-home-layout,
    body:has(.academic-home-layout) .academic-home-layout {
        grid-template-columns: minmax(0, 1fr) !important;
        row-gap: 1.6rem !important;
        column-gap: 1.6rem !important;
        width: min(100%, 56rem) !important;
    }

    body.is-homepage .academic-sidebar,
    body.is-home-profile-page .academic-sidebar,
    body:has(.academic-home-layout) .academic-sidebar {
        position: static !important;
        width: 100% !important;
        min-width: 0 !important;
        padding-bottom: 1.2rem !important;
        margin-bottom: 0 !important;
        border-bottom: 1px solid var(--academic-card-border) !important;
    }

    body.is-homepage .academic-home-layout .profile-card,
    body.is-home-profile-page .academic-home-layout .profile-card,
    body:has(.academic-home-layout) .academic-home-layout .profile-card {
        display: grid !important;
        row-gap: 0.45rem !important;
        align-items: start !important;
        width: 100% !important;
        text-align: left !important;
    }

    body.is-homepage .profile-avatar,
    body.is-home-profile-page .profile-avatar,
    body:has(.academic-home-layout) .profile-avatar {
        grid-column: 1 !important;
        margin: 0 !important;
    }

    body.is-homepage .profile-name-wrap,
    body.is-home-profile-page .profile-name-wrap,
    body:has(.academic-home-layout) .profile-name-wrap {
        grid-column: 2 !important;
        grid-row: 1 !important;
        margin-bottom: 0.25rem !important;
        text-align: left !important;
    }

    body.is-homepage .profile-actions,
    body.is-home-profile-page .profile-actions,
    body:has(.academic-home-layout) .profile-actions {
        grid-column: 2 !important;
        grid-row: 2 !important;
        max-width: 16rem !important;
        margin-bottom: 0.25rem !important;
    }

    body.is-homepage .profile-followers,
    body.is-home-profile-page .profile-followers,
    body:has(.academic-home-layout) .profile-followers {
        grid-column: 2 !important;
        grid-row: 3 !important;
        width: 100% !important;
        margin-bottom: 0 !important;
        text-align: left !important;
    }

    body.is-homepage .md-typeset .profile-meta,
    body.is-home-profile-page .md-typeset .profile-meta,
    body:has(.academic-home-layout) .md-typeset .profile-meta {
        grid-row: 5 !important;
        margin: 0.65rem 0 0 !important;
    }

    body.is-homepage .md-typeset .profile-meta li,
    body.is-home-profile-page .md-typeset .profile-meta li,
    body:has(.academic-home-layout) .md-typeset .profile-meta li {
        width: auto !important;
        justify-content: flex-start !important;
        text-align: left !important;
    }

    body.is-homepage .profile-social-left,
    body.is-home-profile-page .profile-social-left,
    body:has(.academic-home-layout) .profile-social-left {
        grid-row: 6 !important;
        justify-content: flex-start !important;
        margin-top: 0.45rem !important;
    }

}
@media screen and (max-width: 48em) {
    body.is-homepage .md-content__inner,
    body.is-home-profile-page .md-content__inner,
    body:has(.academic-home-layout) .md-content__inner {
        padding: 0.8rem 0.85rem 3rem !important;
    }

    body.is-homepage .academic-home-layout,
    body.is-home-profile-page .academic-home-layout,
    body:has(.academic-home-layout) .academic-home-layout {
        row-gap: 1.2rem !important;
        column-gap: 1.2rem !important;
        width: 100% !important;
    }

    body.is-homepage .academic-home-layout .profile-card,
    body.is-home-profile-page .academic-home-layout .profile-card,
    body:has(.academic-home-layout) .academic-home-layout .profile-card {
        grid-template-columns: 5.4rem minmax(0, 1fr) !important;
        column-gap: 0.85rem !important;
        row-gap: 0.35rem !important;
    }

    body.is-homepage .profile-avatar,
    body.is-home-profile-page .profile-avatar,
    body:has(.academic-home-layout) .profile-avatar {
        grid-row: 1 / span 3 !important;
        max-width: 5.4rem !important;
    }

    body.is-homepage .profile-actions,
    body.is-home-profile-page .profile-actions,
    body:has(.academic-home-layout) .profile-actions,
    body.is-homepage .profile-followers,
    body.is-home-profile-page .profile-followers,
    body:has(.academic-home-layout) .profile-followers {
        grid-column: 2 !important;
    }

    body.is-homepage .md-typeset .profile-meta,
    body.is-home-profile-page .md-typeset .profile-meta,
    body:has(.academic-home-layout) .md-typeset .profile-meta,
    body.is-homepage .profile-social-left,
    body.is-home-profile-page .profile-social-left,
    body:has(.academic-home-layout) .profile-social-left {
        grid-column: 1 / -1 !important;
    }

    body.is-homepage .profile-pronouns,
    body.is-home-profile-page .profile-pronouns,
    body:has(.academic-home-layout) .profile-pronouns {
        font-size: 0.82rem !important;
    }

    body.is-homepage .profile-role,
    body.is-home-profile-page .profile-role,
    body:has(.academic-home-layout) .profile-role {
        font-size: 0.74rem !important;
    }

}
body.is-homepage .md-typeset .profile-name,
body.is-home-profile-page .md-typeset .profile-name,
body:has(.academic-home-layout) .md-typeset .profile-name,
body.is-homepage .md-typeset .profile-cn-name,
body.is-home-profile-page .md-typeset .profile-cn-name,
body:has(.academic-home-layout) .md-typeset .profile-cn-name {
    font-family: var(--edwinos-font-serif) !important;
    letter-spacing: 0 !important;
}

body.is-homepage .md-typeset .profile-name,
body.is-home-profile-page .md-typeset .profile-name,
body:has(.academic-home-layout) .md-typeset .profile-name {
    font-size: 1.42rem !important;
    font-weight: 600 !important;
    line-height: 1.12 !important;
}

body.is-homepage .md-typeset .profile-cn-name,
body.is-home-profile-page .md-typeset .profile-cn-name,
body:has(.academic-home-layout) .md-typeset .profile-cn-name {
    font-weight: 400 !important;
}

.profile-pronouns,
.profile-role,
.profile-actions,
.profile-followers,
.profile-meta,
.profile-social-left,
.beijing-time-main,
.beijing-time-zone {
    font-family: var(--edwinos-font-mono) !important;
}

.profile-meta,
.profile-meta a,
.profile-meta .meta-text {
    font-family: var(--edwinos-font-mono) !important;
}

.profile-meta #beijing-time,
.profile-meta .beijing-time-main,
.profile-meta .beijing-time-zone {
    font-family: var(--edwinos-font-mono) !important;
}

body.is-homepage .profile-followers,
body.is-homepage .profile-followers a,
body.is-homepage .profile-followers .follower-text,
body.is-homepage .profile-followers .follower-count,
body.is-homepage .profile-followers .follower-separator,
body.is-home-profile-page .profile-followers,
body.is-home-profile-page .profile-followers a,
body.is-home-profile-page .profile-followers .follower-text,
body.is-home-profile-page .profile-followers .follower-count,
body.is-home-profile-page .profile-followers .follower-separator,
body:has(.academic-home-layout) .profile-followers,
body:has(.academic-home-layout) .profile-followers a,
body:has(.academic-home-layout) .profile-followers .follower-text,
body:has(.academic-home-layout) .profile-followers .follower-count,
body:has(.academic-home-layout) .profile-followers .follower-separator {
    font-family: var(--edwinos-font-mono) !important;
    font-weight: 500 !important;
    letter-spacing: 0 !important;
}

body.is-homepage .profile-followers .follower-text,
body.is-home-profile-page .profile-followers .follower-text,
body:has(.academic-home-layout) .profile-followers .follower-text {
    row-gap: 0.16rem !important;
    column-gap: 0.16rem !important;
}

body.is-homepage .profile-followers,
body.is-homepage .profile-followers a,
body.is-homepage .md-typeset .profile-meta li,
body.is-homepage .md-typeset .profile-meta a,
body.is-homepage .md-typeset .profile-meta .meta-text,
body.is-home-profile-page .profile-followers,
body.is-home-profile-page .profile-followers a,
body.is-home-profile-page .md-typeset .profile-meta li,
body.is-home-profile-page .md-typeset .profile-meta a,
body.is-home-profile-page .md-typeset .profile-meta .meta-text,
body:has(.academic-home-layout) .profile-followers,
body:has(.academic-home-layout) .profile-followers a,
body:has(.academic-home-layout) .md-typeset .profile-meta li,
body:has(.academic-home-layout) .md-typeset .profile-meta a,
body:has(.academic-home-layout) .md-typeset .profile-meta .meta-text {
    font-size: 0.78rem !important;
    line-height: 1.38 !important;
}

body.is-homepage .md-typeset .profile-social-left a,
body.is-homepage .md-typeset .profile-social-left a:hover,
body.is-homepage .md-typeset .profile-social-left a:focus,
body.is-home-profile-page .md-typeset .profile-social-left a,
body.is-home-profile-page .md-typeset .profile-social-left a:hover,
body.is-home-profile-page .md-typeset .profile-social-left a:focus,
body:has(.academic-home-layout) .md-typeset .profile-social-left a,
body:has(.academic-home-layout) .md-typeset .profile-social-left a:hover,
body:has(.academic-home-layout) .md-typeset .profile-social-left a:focus {
    width: 1.08rem !important;
    height: 1.08rem !important;
}

body.is-homepage .profile-social-left .social-icon,
body.is-home-profile-page .profile-social-left .social-icon,
body:has(.academic-home-layout) .profile-social-left .social-icon {
    width: 0.96rem !important;
    height: 0.96rem !important;
}

@media screen and (min-width: 46em) and (max-width: 63.25em) {
    body.is-homepage .md-typeset .profile-meta,
    body.is-home-profile-page .md-typeset .profile-meta,
    body:has(.academic-home-layout) .md-typeset .profile-meta {
        grid-column: 2 !important;
        grid-row: 4 !important;
        justify-content: flex-start !important;
        justify-self: start !important;
        width: 100% !important;
        margin: 0.1rem 0 0 !important;
        text-align: left !important;
    }

    body.is-homepage .profile-followers,
    body.is-homepage .profile-followers a,
    body.is-homepage .profile-followers .follower-text,
    body.is-homepage .profile-followers .follower-count,
    body.is-homepage .profile-followers .follower-separator,
    body.is-home-profile-page .profile-followers,
    body.is-home-profile-page .profile-followers a,
    body.is-home-profile-page .profile-followers .follower-text,
    body.is-home-profile-page .profile-followers .follower-count,
    body.is-home-profile-page .profile-followers .follower-separator,
    body:has(.academic-home-layout) .profile-followers,
    body:has(.academic-home-layout) .profile-followers a,
    body:has(.academic-home-layout) .profile-followers .follower-text,
    body:has(.academic-home-layout) .profile-followers .follower-count,
    body:has(.academic-home-layout) .profile-followers .follower-separator,
    body.is-homepage .md-typeset .profile-meta li,
    body.is-homepage .md-typeset .profile-meta a,
    body.is-homepage .md-typeset .profile-meta .meta-text,
    body.is-home-profile-page .md-typeset .profile-meta li,
    body.is-home-profile-page .md-typeset .profile-meta a,
    body.is-home-profile-page .md-typeset .profile-meta .meta-text,
    body:has(.academic-home-layout) .md-typeset .profile-meta li,
    body:has(.academic-home-layout) .md-typeset .profile-meta a,
    body:has(.academic-home-layout) .md-typeset .profile-meta .meta-text {
        min-width: 0 !important;
        white-space: nowrap !important;
    }

    body.is-homepage .profile-social-left,
    body.is-home-profile-page .profile-social-left,
    body:has(.academic-home-layout) .profile-social-left {
        grid-column: 2 !important;
        grid-row: 5 !important;
        justify-content: flex-start !important;
        justify-self: start !important;
        margin-top: 0.28rem !important;
    }

}
@media screen and (min-width: 43em) and (max-width: 45.9375em) {
    body.is-homepage .academic-home-layout .profile-card,
    body.is-home-profile-page .academic-home-layout .profile-card,
    body:has(.academic-home-layout) .academic-home-layout .profile-card {
        display: grid !important;
        row-gap: 0.32rem !important;
        width: 100% !important;
        text-align: left !important;
    }

    body.is-homepage .profile-name-wrap,
    body.is-home-profile-page .profile-name-wrap,
    body:has(.academic-home-layout) .profile-name-wrap,
    body.is-homepage .profile-actions,
    body.is-home-profile-page .profile-actions,
    body:has(.academic-home-layout) .profile-actions,
    body.is-homepage .profile-followers,
    body.is-home-profile-page .profile-followers,
    body:has(.academic-home-layout) .profile-followers,
    body.is-homepage .md-typeset .profile-meta,
    body.is-home-profile-page .md-typeset .profile-meta,
    body:has(.academic-home-layout) .md-typeset .profile-meta,
    body.is-homepage .profile-social-left,
    body.is-home-profile-page .profile-social-left,
    body:has(.academic-home-layout) .profile-social-left {
        grid-column: 2 !important;
        width: 100% !important;
        text-align: left !important;
    }

    body.is-homepage .profile-name-wrap,
    body.is-home-profile-page .profile-name-wrap,
    body:has(.academic-home-layout) .profile-name-wrap {
        grid-row: 1 !important;
        margin-bottom: 0.1rem !important;
    }

    body.is-homepage .profile-actions,
    body.is-home-profile-page .profile-actions,
    body:has(.academic-home-layout) .profile-actions {
        grid-row: 2 !important;
        max-width: 15rem !important;
        margin-bottom: 0.12rem !important;
    }

    body.is-homepage .profile-followers,
    body.is-home-profile-page .profile-followers,
    body:has(.academic-home-layout) .profile-followers {
        grid-row: 3 !important;
        margin-bottom: 0 !important;
    }

    body.is-homepage .md-typeset .profile-meta,
    body.is-home-profile-page .md-typeset .profile-meta,
    body:has(.academic-home-layout) .md-typeset .profile-meta {
        justify-content: flex-start !important;
        margin-right: 0 !important;
        margin-bottom: 0 !important;
        margin-left: 0 !important;
    }

    body.is-homepage .profile-followers,
    body.is-homepage .profile-followers a,
    body.is-home-profile-page .profile-followers,
    body.is-home-profile-page .profile-followers a,
    body:has(.academic-home-layout) .profile-followers,
    body:has(.academic-home-layout) .profile-followers a,
    body.is-homepage .md-typeset .profile-meta li,
    body.is-homepage .md-typeset .profile-meta a,
    body.is-homepage .md-typeset .profile-meta .meta-text,
    body.is-home-profile-page .md-typeset .profile-meta li,
    body.is-home-profile-page .md-typeset .profile-meta a,
    body.is-home-profile-page .md-typeset .profile-meta .meta-text,
    body:has(.academic-home-layout) .md-typeset .profile-meta li,
    body:has(.academic-home-layout) .md-typeset .profile-meta a,
    body:has(.academic-home-layout) .md-typeset .profile-meta .meta-text {
        min-width: 0 !important;
        white-space: nowrap !important;
    }

    body.is-homepage .profile-social-left,
    body.is-home-profile-page .profile-social-left,
    body:has(.academic-home-layout) .profile-social-left {
        justify-content: flex-start !important;
        margin-top: 0.18rem !important;
    }

}
@media screen and (min-width: 40em) and (max-width: 42.9375em) {
    body.is-homepage .academic-home-layout .profile-card,
    body.is-home-profile-page .academic-home-layout .profile-card,
    body:has(.academic-home-layout) .academic-home-layout .profile-card {
        display: grid !important;
        row-gap: 0.26rem !important;
        width: 100% !important;
        text-align: left !important;
    }

    body.is-homepage .profile-name-wrap,
    body.is-home-profile-page .profile-name-wrap,
    body:has(.academic-home-layout) .profile-name-wrap,
    body.is-homepage .profile-actions,
    body.is-home-profile-page .profile-actions,
    body:has(.academic-home-layout) .profile-actions,
    body.is-homepage .profile-followers,
    body.is-home-profile-page .profile-followers,
    body:has(.academic-home-layout) .profile-followers,
    body.is-homepage .md-typeset .profile-meta,
    body.is-home-profile-page .md-typeset .profile-meta,
    body:has(.academic-home-layout) .md-typeset .profile-meta,
    body.is-homepage .profile-social-left,
    body.is-home-profile-page .profile-social-left,
    body:has(.academic-home-layout) .profile-social-left {
        grid-column: 2 !important;
        width: 100% !important;
        text-align: left !important;
    }

    body.is-homepage .profile-name-wrap,
    body.is-home-profile-page .profile-name-wrap,
    body:has(.academic-home-layout) .profile-name-wrap {
        grid-row: 1 !important;
        margin-bottom: 0.08rem !important;
    }

    body.is-homepage .profile-actions,
    body.is-home-profile-page .profile-actions,
    body:has(.academic-home-layout) .profile-actions {
        grid-row: 2 !important;
        max-width: 13.5rem !important;
        margin-bottom: 0.08rem !important;
    }

    body.is-homepage .profile-followers,
    body.is-home-profile-page .profile-followers,
    body:has(.academic-home-layout) .profile-followers {
        grid-row: 3 !important;
        margin-bottom: 0 !important;
    }

    body.is-homepage .md-typeset .profile-meta,
    body.is-home-profile-page .md-typeset .profile-meta,
    body:has(.academic-home-layout) .md-typeset .profile-meta {
        justify-content: flex-start !important;
        margin-right: 0 !important;
        margin-bottom: 0 !important;
        margin-left: 0 !important;
    }

    body.is-homepage .profile-followers,
    body.is-homepage .profile-followers a,
    body.is-homepage .profile-followers .follower-text,
    body.is-homepage .profile-followers .follower-count,
    body.is-homepage .profile-followers .follower-separator,
    body.is-home-profile-page .profile-followers,
    body.is-home-profile-page .profile-followers a,
    body.is-home-profile-page .profile-followers .follower-text,
    body.is-home-profile-page .profile-followers .follower-count,
    body.is-home-profile-page .profile-followers .follower-separator,
    body:has(.academic-home-layout) .profile-followers,
    body:has(.academic-home-layout) .profile-followers a,
    body:has(.academic-home-layout) .profile-followers .follower-text,
    body:has(.academic-home-layout) .profile-followers .follower-count,
    body:has(.academic-home-layout) .profile-followers .follower-separator,
    body.is-homepage .md-typeset .profile-meta li,
    body.is-homepage .md-typeset .profile-meta a,
    body.is-homepage .md-typeset .profile-meta .meta-text,
    body.is-home-profile-page .md-typeset .profile-meta li,
    body.is-home-profile-page .md-typeset .profile-meta a,
    body.is-home-profile-page .md-typeset .profile-meta .meta-text,
    body:has(.academic-home-layout) .md-typeset .profile-meta li,
    body:has(.academic-home-layout) .md-typeset .profile-meta a,
    body:has(.academic-home-layout) .md-typeset .profile-meta .meta-text {
        min-width: 0 !important;
        white-space: nowrap !important;
    }

    body.is-homepage .profile-social-left,
    body.is-home-profile-page .profile-social-left,
    body:has(.academic-home-layout) .profile-social-left {
        justify-content: flex-start !important;
        margin-top: 0.12rem !important;
    }

}
@media screen and (max-width: 35.9375em) {
    body.is-homepage .academic-home-layout .profile-card,
    body.is-home-profile-page .academic-home-layout .profile-card,
    body:has(.academic-home-layout) .academic-home-layout .profile-card {
        grid-template-columns: 5.4rem minmax(0, 1fr) !important;
        column-gap: 0.85rem !important;
    }

    body.is-homepage .profile-avatar,
    body.is-home-profile-page .profile-avatar,
    body:has(.academic-home-layout) .profile-avatar {
        max-width: 5.4rem !important;
    }

}
body.is-homepage .md-typeset .profile-followers :is(.follower-link, .follower-text, .follower-count, .follower-separator),
body.is-home-profile-page .md-typeset .profile-followers :is(.follower-link, .follower-text, .follower-count, .follower-separator),
body:has(.academic-home-layout) .md-typeset .profile-followers :is(.follower-link, .follower-text, .follower-count, .follower-separator) {
    font-family: var(--edwinos-font-mono) !important;
    font-weight: 500 !important;
    letter-spacing: 0 !important;
}

body.is-homepage .md-typeset .profile-meta :is(li, a, .meta-text),
body.is-home-profile-page .md-typeset .profile-meta :is(li, a, .meta-text),
body:has(.academic-home-layout) .md-typeset .profile-meta :is(li, a, .meta-text) {
    font-size: 0.78rem !important;
    line-height: 1.38 !important;
}

body.is-homepage .md-typeset .profile-meta li,
body.is-home-profile-page .md-typeset .profile-meta li,
body:has(.academic-home-layout) .md-typeset .profile-meta li {
    flex: 0 0 auto !important;
    min-width: max-content !important;
    max-width: 100% !important;
    align-items: center !important;
    row-gap: 0.42rem !important;
    column-gap: 0.42rem !important;
}

body.is-homepage .md-typeset .profile-meta .meta-icon,
body.is-home-profile-page .md-typeset .profile-meta .meta-icon,
body:has(.academic-home-layout) .md-typeset .profile-meta .meta-icon {
    flex: 0 0 auto !important;
}

body.is-homepage .md-typeset .profile-meta :is(a, .meta-text),
body.is-home-profile-page .md-typeset .profile-meta :is(a, .meta-text),
body:has(.academic-home-layout) .md-typeset .profile-meta :is(a, .meta-text) {
    min-width: max-content !important;
    white-space: nowrap !important;
    overflow: visible !important;
    text-overflow: clip !important;
}

@media screen and (min-width: 26.0625rem) and (max-width: 59.9375rem) {
    body.is-homepage .md-typeset .profile-meta,
    body.is-home-profile-page .md-typeset .profile-meta,
    body:has(.academic-home-layout) .md-typeset .profile-meta {
        grid-column: 2 !important;
        grid-row: 4 !important;
        justify-self: stretch !important;
        width: 100% !important;
        min-width: 0 !important;
        flex-direction: column !important;
        flex-wrap: nowrap !important;
        align-items: flex-start !important;
        row-gap: 0.32rem !important;
        column-gap: 0.32rem !important;
        margin-top: 0 !important;
    }

    body.is-homepage .profile-social-left,
    body.is-home-profile-page .profile-social-left,
    body:has(.academic-home-layout) .profile-social-left {
        grid-column: 2 !important;
        grid-row: 5 !important;
        justify-self: start !important;
        width: 100% !important;
    }

}
@media screen and (min-width: 60rem) and (max-width: 63.25em) {
    body.is-homepage .md-typeset .profile-meta {
        flex-direction: column !important;
        flex-wrap: nowrap !important;
        align-items: flex-start !important;
        justify-content: flex-start !important;
        row-gap: 0.32rem !important;
        column-gap: 0.32rem !important;
    }

}
@media screen and (max-width: 26rem) {
    body.is-homepage .profile-followers,
    body.is-home-profile-page .profile-followers,
    body:has(.academic-home-layout) .profile-followers {
        grid-column: 1 / -1 !important;
        grid-row: 3 !important;
        justify-self: stretch !important;
        text-align: left !important;
    }

    body.is-homepage .md-typeset .profile-meta,
    body.is-home-profile-page .md-typeset .profile-meta,
    body:has(.academic-home-layout) .md-typeset .profile-meta {
        grid-column: 1 / -1 !important;
        grid-row: 4 !important;
        justify-self: stretch !important;
        width: 100% !important;
        min-width: 0 !important;
        flex-direction: column !important;
        flex-wrap: nowrap !important;
        align-items: flex-start !important;
        row-gap: 0.32rem !important;
        column-gap: 0.32rem !important;
        margin-top: 0 !important;
    }

    body.is-homepage .profile-social-left,
    body.is-home-profile-page .profile-social-left,
    body:has(.academic-home-layout) .profile-social-left {
        grid-column: 1 / -1 !important;
        grid-row: 5 !important;
        justify-self: start !important;
        width: 100% !important;
    }

}
.academic-home-layout .profile-details {
    display: contents;
}

@media screen and (min-width: 36rem) and (max-width: 63.25rem) {
    body.is-homepage .academic-home-layout .profile-card,
    body.is-home-profile-page .academic-home-layout .profile-card,
    body:has(.academic-home-layout) .academic-home-layout .profile-card {
        grid-template-columns: 13rem minmax(0, 1fr) !important;
        grid-template-rows: auto !important;
        column-gap: 1.15rem !important;
        align-items: start !important;
    }

    body.is-homepage .profile-avatar,
    body.is-home-profile-page .profile-avatar,
    body:has(.academic-home-layout) .profile-avatar {
        grid-column: 1 !important;
        grid-row: 1 !important;
        width: 13rem !important;
        max-width: 13rem !important;
        margin: 0 !important;
    }

    body.is-homepage .profile-details,
    body.is-home-profile-page .profile-details,
    body:has(.academic-home-layout) .profile-details {
        grid-column: 2 !important;
        grid-row: 1 !important;
        display: flex !important;
        min-width: 0 !important;
        width: 100% !important;
        flex-direction: column !important;
        align-items: flex-start !important;
        row-gap: 0.46rem !important;
        column-gap: 0.46rem !important;
        text-align: left !important;
    }

    body.is-homepage .profile-details > *,
    body.is-home-profile-page .profile-details > *,
    body:has(.academic-home-layout) .profile-details > * {
        width: 100% !important;
        margin: 0 !important;
    }

    body.is-homepage .profile-details .profile-actions,
    body.is-home-profile-page .profile-details .profile-actions,
    body:has(.academic-home-layout) .profile-details .profile-actions {
        max-width: 14rem !important;
    }

    body.is-homepage .profile-details .profile-followers,
    body.is-home-profile-page .profile-details .profile-followers,
    body:has(.academic-home-layout) .profile-details .profile-followers,
    body.is-homepage .profile-details .profile-social-left,
    body.is-home-profile-page .profile-details .profile-social-left,
    body:has(.academic-home-layout) .profile-details .profile-social-left {
        justify-self: auto !important;
        text-align: left !important;
    }

    body.is-homepage .md-typeset .profile-details .profile-meta,
    body.is-home-profile-page .md-typeset .profile-details .profile-meta,
    body:has(.academic-home-layout) .md-typeset .profile-details .profile-meta {
        display: flex !important;
        min-width: 0 !important;
        width: 100% !important;
        flex-direction: column !important;
        align-items: flex-start !important;
        row-gap: 0.32rem !important;
        column-gap: 0.32rem !important;
    }

    body.is-homepage .profile-details .profile-social-left,
    body.is-home-profile-page .profile-details .profile-social-left,
    body:has(.academic-home-layout) .profile-details .profile-social-left {
        margin-top: 0.06rem !important;
    }

}
body:has(.friend-links)
.md-typeset
.profile-followers
:is(.follower-link, .follower-text, .follower-count, .follower-separator) {
    font-family: var(--edwinos-font-mono) !important;
    font-weight: 500 !important;
    letter-spacing: 0 !important;
}


/* ==========================================================================
   About Me
   ========================================================================== */

body.is-homepage .academic-content > .academic-section:first-of-type p,
body.is-homepage .academic-content > .academic-section:first-of-type li,
body:has(.academic-home-layout) .academic-content > .academic-section:first-of-type p,
body:has(.academic-home-layout) .academic-content > .academic-section:first-of-type li {
    color: #1a1a1a !important;
    font-family: var(--edwinos-font-reading-sans) !important;
    font-size: 0.96rem !important;
    font-weight: 400 !important;
    letter-spacing: 0 !important;
    line-height: 1.75 !important;
}

body.is-homepage .academic-content > .academic-section:first-of-type .about-name-cn,
body:has(.academic-home-layout) .academic-content > .academic-section:first-of-type .about-name-cn {
    font-family: var(--edwinos-font-serif) !important;
}

body.is-homepage .academic-content > .academic-section:first-of-type p,
body:has(.academic-home-layout) .academic-content > .academic-section:first-of-type p {
    margin-bottom: 0.72rem !important;
}

body.is-homepage .academic-content > .academic-section:first-of-type strong,
body:has(.academic-home-layout) .academic-content > .academic-section:first-of-type strong {
    color: inherit !important;
    font-family: inherit !important;
    font-weight: 600 !important;
}

body.is-homepage .academic-content > .academic-section:first-of-type a,
body:has(.academic-home-layout) .academic-content > .academic-section:first-of-type a {
    color: #2563eb !important;
    text-decoration: none !important;
    border-bottom: 0 !important;
}

body.is-homepage .academic-content > .academic-section:first-of-type a:hover,
body:has(.academic-home-layout) .academic-content > .academic-section:first-of-type a:hover {
    color: #1d4ed8 !important;
    text-decoration: none !important;
    border-bottom: 0 !important;
}

body[data-md-color-scheme="slate"].is-homepage .academic-content > .academic-section:first-of-type p,
body[data-md-color-scheme="slate"].is-homepage .academic-content > .academic-section:first-of-type li,
body[data-md-color-scheme="slate"]:has(.academic-home-layout) .academic-content > .academic-section:first-of-type p,
body[data-md-color-scheme="slate"]:has(.academic-home-layout) .academic-content > .academic-section:first-of-type li {
    color: #e6edf3 !important;
}

body[data-md-color-scheme="slate"].is-homepage .academic-content > .academic-section:first-of-type a,
body[data-md-color-scheme="slate"]:has(.academic-home-layout) .academic-content > .academic-section:first-of-type a {
    color: #58a6ff !important;
}

body[data-md-color-scheme="slate"].is-homepage .academic-content > .academic-section:first-of-type a:hover,
body[data-md-color-scheme="slate"]:has(.academic-home-layout) .academic-content > .academic-section:first-of-type a:hover {
    color: #79c0ff !important;
}


/*
 * The top-profile layout has enough horizontal room to retain the desktop
 * avatar through tablet widths. Use one deliberate phone breakpoint instead
 * of the previous 180/152/130/108px staircase.
 */


/*
 * Keep the tablet avatar at its intended size without making it span several
 * independent grid rows. The details column now owns its natural rhythm.
 */


/* ========================================================================
   Education card responsive image
   ======================================================================== */

@media screen and (min-width: 36.0625rem) and (max-width: 48em) {
    body.is-homepage .education-card,
    body.is-home-profile-page .education-card,
    body:has(.academic-home-layout) .education-card {
        grid-template-columns: 5.4rem minmax(0, 1fr) !important;
        gap: 0.95rem !important;
        align-items: center !important;
        justify-items: stretch !important;
        text-align: left !important;
    }

    body.is-homepage .education-logo,
    body.is-home-profile-page .education-logo,
    body:has(.academic-home-layout) .education-logo {
        display: flex !important;
        width: 4.4rem !important;
        height: 4.4rem !important;
        margin: 0 !important;
    }

    body.is-homepage .education-info,
    body.is-home-profile-page .education-info,
    body:has(.academic-home-layout) .education-info {
        width: auto !important;
        min-width: 0 !important;
    }
}

@media screen and (max-width: 36rem) {
    body.is-homepage .education-card,
    body.is-home-profile-page .education-card,
    body:has(.academic-home-layout) .education-card {
        grid-template-columns: minmax(0, 1fr) !important;
        gap: 0.9rem !important;
        justify-items: stretch !important;
        text-align: left !important;
    }

    body.is-homepage .education-logo,
    body.is-home-profile-page .education-logo,
    body:has(.academic-home-layout) .education-logo {
        display: none !important;
    }

    body.is-homepage .education-info,
    body.is-home-profile-page .education-info,
    body:has(.academic-home-layout) .education-info {
        width: 100% !important;
        min-width: 0 !important;
    }
}

/* ==========================================================================
   Recent News first-line alignment
   ========================================================================== */

.academic-home-layout .news-list {
    margin-left: 1.5em !important;
    padding-left: 1em !important;
    list-style-type: disc !important;
}

body.is-homepage .news-list li,
body.is-home-profile-page .news-list li,
body:has(.academic-home-layout) .news-list li {
    display: grid !important;
    grid-template-columns: 5.2rem minmax(0, 1fr) !important;
    column-gap: 0.8rem !important;
    row-gap: 0 !important;
    align-items: baseline !important;
    align-items: first baseline !important;
}

body.is-homepage .news-date,
body.is-homepage .news-text,
body.is-home-profile-page .news-date,
body.is-home-profile-page .news-text,
body:has(.academic-home-layout) .news-date,
body:has(.academic-home-layout) .news-text {
    display: block !important;
    margin-top: 0 !important;
}

body.is-homepage .news-date,
body.is-home-profile-page .news-date,
body:has(.academic-home-layout) .news-date {
    align-self: baseline !important;
    align-self: first baseline !important;
    white-space: nowrap !important;
}

body.is-homepage .news-text,
body.is-home-profile-page .news-text,
body:has(.academic-home-layout) .news-text {
    align-self: baseline !important;
    align-self: first baseline !important;
    min-width: 0 !important;
}

.academic-home-layout .overview-news-links {
    display: inline-flex;
    flex-wrap: wrap;
    gap: 0.3rem;
    margin-left: 0.35rem;
}

.academic-home-layout .overview-news-links a {
    color: var(--academic-accent) !important;
    font-weight: 600;
    text-decoration: underline;
    text-decoration-thickness: 1px;
    text-underline-offset: 0.18em;
}

.academic-home-layout .overview-news-more {
    margin-top: 0.55rem;
}

.academic-home-layout .overview-news-more > summary {
    width: fit-content;
    margin-left: 6rem;
    color: var(--academic-muted);
    font-family: var(--edwinos-font-mono);
    font-size: 0.72rem;
    font-weight: 500;
    cursor: pointer;
    list-style: none;
}

.academic-home-layout .overview-news-more > summary::-webkit-details-marker {
    display: none;
}

.academic-home-layout .overview-news-more .when-open,
.academic-home-layout .overview-news-more[open] .when-closed {
    display: none;
}

.academic-home-layout .overview-news-more[open] .when-open {
    display: inline;
}

.academic-home-layout .overview-news-list--older {
    margin-top: 0.4rem !important;
}

@media screen and (max-width: 600px) {
    .academic-home-layout .news-list {
        margin-left: 1.2em !important;
    }
}

/* ==========================================================================
   Overview Publications
   ========================================================================== */

.academic-home-layout .overview-publication-list {
    display: block !important;
    margin: 0 !important;
    padding: 0 !important;
    list-style: none !important;
}

.academic-home-layout .overview-publication {
    position: relative;
    display: grid !important;
    grid-template-columns: 8.75rem minmax(0, 1fr) !important;
    gap: 1rem !important;
    align-items: center !important;
    margin: 0 !important;
    padding: 0.78rem 0.62rem !important;
    border-bottom: 1px solid var(--academic-card-border);
    background: transparent;
    list-style: none !important;
    transition: background-color 160ms ease;
}

.academic-home-layout .overview-publication:first-child {
    border-top: 1px solid var(--academic-card-border);
}

.academic-home-layout .overview-publication.is-lead {
    background: color-mix(in srgb, var(--academic-accent) 5%, transparent);
    box-shadow: inset 2px 0 color-mix(in srgb, var(--academic-accent) 44%, transparent);
}

@media (hover: hover) and (pointer: fine) {
    .academic-home-layout .overview-publication:hover {
        background: color-mix(in srgb, var(--academic-accent) 4%, transparent);
    }

    .academic-home-layout .overview-publication.is-lead:hover {
        background: color-mix(in srgb, var(--academic-accent) 8%, transparent);
    }
}

.academic-home-layout .overview-publication__media {
    display: flex;
    width: 8.75rem;
    aspect-ratio: 7 / 4;
    align-items: center;
    justify-content: center;
    overflow: hidden;
    border: 1px solid var(--academic-card-border);
    border-radius: 0.55rem;
    background: var(--academic-soft);
}

.academic-home-layout .overview-publication__media img {
    display: block;
    width: 100%;
    height: 100%;
    margin: 0 !important;
    object-fit: contain;
}

.academic-home-layout .overview-publication__media--placeholder {
    color: var(--academic-accent);
    background:
        linear-gradient(
            135deg,
            color-mix(in srgb, var(--academic-accent) 10%, transparent),
            color-mix(in srgb, var(--academic-accent) 3%, transparent)
        ),
        var(--academic-soft);
    font-family: var(--edwinos-font-mono);
    font-size: 0.76rem;
    font-weight: 700;
    letter-spacing: 0.06em;
}

.academic-home-layout .overview-publication__body {
    min-width: 0;
}

.academic-home-layout .md-typeset .overview-publication__title,
.academic-home-layout .overview-publication__title {
    margin: 0 0 0.24rem !important;
    color: var(--academic-ink) !important;
    font-family: var(--edwinos-font-serif) !important;
    font-size: 1rem !important;
    font-weight: 600 !important;
    line-height: 1.3 !important;
    letter-spacing: -0.01em !important;
}

.academic-home-layout .overview-publication__authors,
.academic-home-layout .overview-publication__authors-full {
    margin: 0 !important;
    color: var(--academic-muted) !important;
    font-family: var(--edwinos-font-serif) !important;
    font-size: 0.79rem !important;
    line-height: 1.45 !important;
}

.academic-home-layout .overview-publication__author {
    color: inherit !important;
    font-family: inherit !important;
    font-weight: 400 !important;
    text-decoration: none !important;
}

.academic-home-layout .overview-publication__author.is-self {
    color: var(--academic-ink) !important;
    padding: 0 !important;
    border-radius: 0 !important;
    background: transparent !important;
    font-weight: 600 !important;
}

.academic-home-layout a.overview-publication__author:hover {
    color: var(--academic-accent) !important;
    text-decoration: underline !important;
    text-underline-offset: 0.17em;
}

.academic-home-layout .overview-publication__authors-details > summary {
    display: inline;
    color: inherit;
    cursor: pointer;
    list-style: none;
}

.academic-home-layout .overview-publication__authors-details > summary::-webkit-details-marker {
    display: none;
}

.academic-home-layout .overview-publication__authors-toggle {
    display: inline-block;
    margin-left: 0.45rem;
    color: var(--academic-accent);
    font-family: var(--edwinos-font-mono);
    font-size: 0.66rem;
    font-weight: 500;
    text-decoration: underline;
    text-decoration-thickness: 1px;
    text-underline-offset: 0.18em;
}

.academic-home-layout .overview-publication__authors-details .when-open,
.academic-home-layout .overview-publication__authors-details[open] .when-closed {
    display: none;
}

.academic-home-layout .overview-publication__authors-details[open] .when-open {
    display: inline;
}

.academic-home-layout .overview-publication__authors-details[open] .overview-publication__authors-short {
    display: none;
}

.academic-home-layout .overview-publication__authors-full {
    margin-top: 0.15rem !important;
}

.academic-home-layout .overview-publication__venue {
    display: flex;
    flex-wrap: wrap;
    align-items: baseline;
    gap: 0.28rem 0.5rem;
    margin-top: 0.2rem;
    font-family: var(--edwinos-font-mono);
    line-height: 1.35;
}

.academic-home-layout .overview-publication__venue-name {
    color: var(--academic-accent);
    font-size: 0.69rem;
    font-weight: 700;
    letter-spacing: 0.045em;
    text-transform: uppercase;
}

.academic-home-layout .overview-publication__venue-meta {
    color: var(--academic-muted);
    font-size: 0.7rem;
    font-weight: 500;
}

.academic-home-layout .overview-publication__award {
    margin: 0.16rem 0 0 !important;
    color: #cf222e !important;
    font-family: var(--edwinos-font-serif) !important;
    font-size: 0.78rem !important;
    font-weight: 600 !important;
    line-height: 1.4 !important;
}

[data-md-color-scheme="slate"] .academic-home-layout .overview-publication__award {
    color: #ff7b72 !important;
}

.academic-home-layout .overview-publication__links {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    margin-top: 0.32rem;
    font-family: var(--edwinos-font-mono);
    font-size: 0.71rem;
    font-weight: 500;
}

.academic-home-layout .overview-publication__links a {
    position: relative;
    color: var(--academic-ink) !important;
    text-decoration: underline !important;
    text-decoration-thickness: 1px !important;
    text-underline-offset: 0.2em;
}

.academic-home-layout .overview-publication__links a:hover {
    color: var(--academic-accent) !important;
}

.academic-home-layout .overview-publication__links a + a {
    margin-left: 0.62rem;
    padding-left: 0.62rem;
}

.academic-home-layout .overview-publication__links a + a::before {
    content: "";
    position: absolute;
    top: 0.12em;
    bottom: 0.12em;
    left: 0;
    width: 1px;
    background: var(--academic-card-border);
}

.academic-home-layout .overview-publication-notes,
.academic-home-layout .overview-section-empty {
    margin: 0.52rem 0 0 !important;
    color: var(--academic-muted) !important;
    font-size: 0.74rem !important;
    line-height: 1.45 !important;
}

@media screen and (max-width: 42.5rem) {
    .academic-home-layout .overview-publication {
        grid-template-columns: 6rem minmax(0, 1fr) !important;
        gap: 0.75rem !important;
        align-items: start !important;
        padding: 0.74rem 0.5rem !important;
    }

    .academic-home-layout .overview-publication__media {
        width: 6rem;
    }

    .academic-home-layout .md-typeset .overview-publication__title,
    .academic-home-layout .overview-publication__title {
        font-size: 0.92rem !important;
    }

    .academic-home-layout .overview-publication__authors,
    .academic-home-layout .overview-publication__authors-full {
        font-size: 0.74rem !important;
    }

    .academic-home-layout .overview-news-more > summary {
        margin-left: 0;
    }
}

@media screen and (max-width: 26.25rem) {
    .academic-home-layout .overview-publication {
        grid-template-columns: 5rem minmax(0, 1fr) !important;
        gap: 0.62rem !important;
        padding: 0.64rem 0.25rem !important;
    }

    .academic-home-layout .overview-publication__media {
        width: 5rem;
    }

    .academic-home-layout .md-typeset .overview-publication__title,
    .academic-home-layout .overview-publication__title {
        font-size: 0.86rem !important;
    }
}

/* ==========================================================================
   Awards
   ========================================================================== */

.academic-home-layout .award-list {
    margin-left: 1.5em !important;
    padding-left: 1em !important;
    list-style-type: disc !important;
}

@media screen and (max-width: 600px) {
    .academic-home-layout .award-list {
        margin-left: 1.2em !important;
    }
}

/* ==========================================================================
   Experiences timeline axis lock
   ========================================================================== */

body:has(.academic-home-layout) .cv-desc {
    margin-left: 1.5em !important;
    padding-left: 1em !important;
    list-style-type: disc !important;
}

body:has(.academic-home-layout) .cv-desc li {
    display: list-item !important;
}

body.is-homepage .timeline-cv,
body.is-home-profile-page .timeline-cv,
body:has(.academic-home-layout) .timeline-cv {
    --cv-axis-x: 7px;
    --cv-marker-size: 14px;
    position: relative !important;
    padding-left: 41px !important;
    border-left: 0 !important;
}

body.is-homepage .timeline-cv::before,
body.is-home-profile-page .timeline-cv::before,
body:has(.academic-home-layout) .timeline-cv::before {
    content: "" !important;
    position: absolute !important;
    top: 0 !important;
    bottom: 0 !important;
    left: var(--cv-axis-x) !important;
    width: 1px !important;
    background: var(--academic-card-border) !important;
    transform: translateX(-0.5px) !important;
}

body.is-homepage .cv-item,
body.is-home-profile-page .cv-item,
body:has(.academic-home-layout) .cv-item {
    position: relative !important;
    padding-left: 0 !important;
}

body.is-homepage .cv-marker,
body.is-home-profile-page .cv-marker,
body:has(.academic-home-layout) .cv-marker {
    box-sizing: border-box !important;
    top: 0.32rem !important;
    left: calc(var(--cv-axis-x) - var(--cv-marker-size) / 2 - 41px) !important;
    width: var(--cv-marker-size) !important;
    height: var(--cv-marker-size) !important;
    z-index: 1 !important;
}

@media screen and (max-width: 600px) {
    body:has(.academic-home-layout) .cv-desc {
        margin-left: 1.2em !important;
    }
}

/* ==========================================================================
   Article Headings
   ========================================================================== */

/* Publication context for individual ENotes and More Experiences articles.
   The build hook places this directly after the page title. */
.md-content__inner.md-typeset > h1:has(+ .article-meta) {
    margin-bottom: 0.42rem;
}

.md-content__inner.md-typeset > .article-meta {
    display: flex;
    flex-wrap: wrap;
    align-items: baseline;
    gap: 0.18rem 0.42rem;
    margin: 0 0 1.35rem;
    color: var(--md-default-fg-color--light);
    font-family: var(--edwinos-font-serif);
    font-size: 0.64rem;
    font-weight: 400;
    line-height: 1.55;
    letter-spacing: 0.01em;
}

.md-content__inner.md-typeset > .article-meta time {
    color: var(--md-default-fg-color);
    font-variant-numeric: tabular-nums;
}

.md-content__inner.md-typeset > .article-meta .article-meta__author {
    color: var(--md-default-fg-color);
    font-weight: 600;
}

.md-content__inner.md-typeset > .article-meta .article-meta__inspiration {
    font-style: italic;
}

.md-content__inner.md-typeset > .article-meta .article-meta__separator {
    color: var(--md-default-fg-color--lighter);
    user-select: none;
}

@media screen and (max-width: 44.984375em) {
    .md-content__inner.md-typeset > .article-meta {
        gap: 0.12rem 0.32rem;
        margin-bottom: 1.15rem;
        font-size: 0.61rem;
    }
}

/*
 * Give both Introduction hubs and every child note the same compact opening
 * rhythm. Reset each contributing layout layer explicitly so the first H1 sits
 * about 0.625 of its 2.6rem line-height below the fixed header. Canonical URLs
 * are server-rendered, so there is no JavaScript-dependent first-paint jump.
 */
html:has(> head > link[rel="canonical"][href*="/OsdNotes/"])
body .md-main__inner,
html:has(> head > link[rel="canonical"][href*="/%E7%BB%8F%E9%AA%8C%E5%88%86%E4%BA%AB/"])
body .md-main__inner {
    margin-top: clamp(1.25rem, calc(1.05rem + 0.45vw), 1.5rem) !important;
}

html:has(> head > link[rel="canonical"][href*="/OsdNotes/"])
body .md-content,
html:has(> head > link[rel="canonical"][href*="/%E7%BB%8F%E9%AA%8C%E5%88%86%E4%BA%AB/"])
body .md-content {
    padding-top: 0 !important;
}

html:has(> head > link[rel="canonical"][href*="/OsdNotes/"])
body .md-content__inner,
html:has(> head > link[rel="canonical"][href*="/%E7%BB%8F%E9%AA%8C%E5%88%86%E4%BA%AB/"])
body .md-content__inner {
    padding-top: 0 !important;
    animation: none !important;
}

html:has(> head > link[rel="canonical"][href*="/OsdNotes/"])
body .md-content__inner::before,
html:has(> head > link[rel="canonical"][href*="/%E7%BB%8F%E9%AA%8C%E5%88%86%E4%BA%AB/"])
body .md-content__inner::before {
    display: none !important;
    content: none !important;
}

/*
 * Match the two Introduction hubs to the handwritten Overview section title
 * without changing article headings or navigation typography.
 */
:is(
    html:has(> head > link[rel="canonical"][href$="/OsdNotes/"]),
    html:has(> head > link[rel="canonical"][href$="/%E7%BB%8F%E9%AA%8C%E5%88%86%E4%BA%AB/"])
)
body .md-content__inner.md-typeset {
    font-family: var(--edwinos-font-reading-sans) !important;
    letter-spacing: 0 !important;
}

html:has(> head > link[rel="canonical"][href$="/OsdNotes/"])
body .md-content__inner.md-typeset
:is(
    h1,
    h2,
    h3,
    h4,
    h5,
    h6,
    .intro-card-grid > ul > li > p:first-child strong,
    .admonition-title
),
html:has(> head > link[rel="canonical"][href$="/%E7%BB%8F%E9%AA%8C%E5%88%86%E4%BA%AB/"])
body .md-content__inner.md-typeset
:is(
    h1,
    h2,
    h3,
    h4,
    h5,
    h6,
    .intro-card-grid > ul > li > p:first-child strong,
    .admonition-title
) {
    font-family: var(--edwinos-font-hand) !important;
    font-weight: 700 !important;
    letter-spacing: 0 !important;
    text-transform: none !important;
}

html:has(> head > link[rel="canonical"][href$="/OsdNotes/"])
body .md-content__inner.md-typeset h1,
html:has(> head > link[rel="canonical"][href$="/%E7%BB%8F%E9%AA%8C%E5%88%86%E4%BA%AB/"])
body .md-content__inner.md-typeset h1 {
    line-height: 1.12 !important;
}

html:has(> head > link[rel="canonical"][href$="/OsdNotes/"])
body .md-content__inner.md-typeset h2,
html:has(> head > link[rel="canonical"][href$="/%E7%BB%8F%E9%AA%8C%E5%88%86%E4%BA%AB/"])
body .md-content__inner.md-typeset h2 {
    line-height: 1.16 !important;
}

html:has(> head > link[rel="canonical"][href$="/OsdNotes/"])
body .md-content__inner.md-typeset :is(h3, h4, h5, h6),
html:has(> head > link[rel="canonical"][href$="/%E7%BB%8F%E9%AA%8C%E5%88%86%E4%BA%AB/"])
body .md-content__inner.md-typeset :is(h3, h4, h5, h6) {
    line-height: 1.2 !important;
}

html:has(> head > link[rel="canonical"][href$="/OsdNotes/"])
body .md-content__inner.md-typeset
:is(.intro-card-grid > ul > li > p:first-child strong, .admonition-title),
html:has(> head > link[rel="canonical"][href$="/%E7%BB%8F%E9%AA%8C%E5%88%86%E4%BA%AB/"])
body .md-content__inner.md-typeset
:is(.intro-card-grid > ul > li > p:first-child strong, .admonition-title) {
    font-size: 1.05rem !important;
    line-height: 1.15 !important;
}

/* Keep the MATLAB comparison heading stable before and after Material wraps
   its preceding table for horizontal scrolling. */
html:has(> head > link[rel="canonical"][href$="/OsdNotes/CS101/MATLAB/"])
body .md-content__inner > table:not([class]) + h2#matlab-python,
html:has(> head > link[rel="canonical"][href$="/OsdNotes/CS101/MATLAB/"])
body .md-content__inner > .md-typeset__scrollwrap + h2#matlab-python {
    margin-top: 2em !important;
    transition: none !important;
}

/* ==========================================================================
   Fragment Targets
   ========================================================================== */

/* A heading selected from the right-hand TOC remains identifiable through the
   scroll, then its yellow glass highlight fades without dimming the text. */
.md-typeset :is(h1, h2, h3, h4, h5, h6).block-highlight--pinned {
    box-sizing: border-box;
    width: calc(100% + 1.4rem);
    margin-inline: -0.7rem;
    padding: 0.42rem 0.7rem;
    border: 1px solid rgba(234, 179, 8, 0.26);
    border-radius: 1rem;
    background: rgba(255, 221, 36, 0.14);
    box-shadow:
        inset 0 1px 0 rgba(255, 255, 255, 0.24),
        0 0.5rem 1.35rem rgba(234, 179, 8, 0.06);
    -webkit-backdrop-filter: blur(8px) saturate(115%);
    backdrop-filter: blur(8px) saturate(115%);
}

[data-md-color-scheme="slate"]
.md-typeset :is(h1, h2, h3, h4, h5, h6).block-highlight--pinned {
    border-color: rgba(255, 243, 138, 0.4);
    background: rgba(255, 232, 64, 0.2);
    box-shadow:
        inset 0 1px 0 rgba(255, 252, 214, 0.18),
        0 0 1.55rem rgba(255, 220, 24, 0.08),
        0 0.55rem 1.45rem rgba(0, 0, 0, 0.12);
}

.md-typeset :is(h1, h2, h3, h4, h5, h6).block-highlight--pinned.block-highlight--fading {
    border-color: transparent;
    background-color: transparent;
    box-shadow: none;
    -webkit-backdrop-filter: blur(0) saturate(100%);
    backdrop-filter: blur(0) saturate(100%);
    transition:
        border-color 1.15s ease,
        background-color 1.15s ease,
        box-shadow 1.15s ease,
        -webkit-backdrop-filter 1.15s ease,
        backdrop-filter 1.15s ease;
}

.md-typeset :is(h1, h2, h3, h4, h5, h6).block-highlight--pinned::before {
    content: none;
}

/* ==========================================================================
   Math
   ========================================================================== */

/* Math-bearing article tracks may shrink beside the desktop TOC. Each formula
   owns its overflow, so an oversized expression scrolls inside prose instead
   of widening the content track or painting across the right rail. */
.md-content:has(.md-content__inner.md-typeset .arithmatex),
.md-content__inner.md-typeset:has(.arithmatex) {
    min-width: 0;
}

.md-content__inner.md-typeset span.arithmatex {
    box-sizing: border-box;
    display: inline-block;
    max-width: 100%;
    overflow-x: auto;
    overflow-y: hidden;
    overscroll-behavior-inline: contain;
    vertical-align: middle;
}

.md-content__inner.md-typeset span.arithmatex.arithmatex--display {
    display: block;
    width: 100%;
    text-align: center;
}

.md-content__inner.md-typeset div.arithmatex {
    box-sizing: border-box;
    display: block;
    width: 100%;
    max-width: 100%;
    overflow-x: auto;
    overflow-y: hidden;
    overscroll-behavior-inline: contain;
    -webkit-overflow-scrolling: touch;
}

.md-content__inner.md-typeset :is(span.arithmatex, div.arithmatex) {
    scrollbar-width: thin;
    scrollbar-color: color-mix(in srgb, var(--md-default-fg-color) 35%, transparent)
        transparent;
}

.md-content__inner.md-typeset
:is(span.arithmatex, div.arithmatex)::-webkit-scrollbar {
    height: 0.35rem;
}

.md-content__inner.md-typeset
:is(span.arithmatex, div.arithmatex)::-webkit-scrollbar-thumb {
    background: color-mix(in srgb, var(--md-default-fg-color) 35%, transparent);
    border-radius: 999px;
}

/* ==========================================================================
   Tables
   ========================================================================== */

/* Keep the Bash syntax comparison readable instead of letting the longest
   command force the remaining columns into narrow slivers. */
.md-typeset .bash-option-table table {
    width: 100%;
    table-layout: fixed;
}

.md-typeset .bash-option-table :is(th, td):nth-child(1) {
    width: 24%;
}

.md-typeset .bash-option-table :is(th, td):nth-child(2) {
    width: 18%;
}

.md-typeset .bash-option-table :is(th, td):nth-child(3) {
    width: 20%;
}

.md-typeset .bash-option-table :is(th, td):nth-child(4) {
    width: 38%;
}

.md-typeset .bash-option-table :is(th, td, code) {
    overflow-wrap: anywhere;
    white-space: normal;
}

.md-typeset .bash-symbol-table table {
    width: 100%;
    table-layout: fixed;
}

.md-typeset .bash-symbol-table :is(th, td):nth-child(1) {
    width: 16%;
}

.md-typeset .bash-symbol-table :is(th, td):nth-child(2) {
    width: 46%;
}

.md-typeset .bash-symbol-table :is(th, td):nth-child(3) {
    width: 38%;
}

.md-typeset .bash-symbol-table :is(th, td, code) {
    overflow-wrap: anywhere;
    white-space: normal;
}

/* Keep the two script names intact in the Checkpoint guide's opening tool
   table. The table's existing Material scroll wrapper owns narrow-screen
   overflow; later tables and all other notes retain their normal wrapping. */
html:has(> head > link[rel="canonical"][href*="/Diffusion%20Policy%20checkpoint%20"])
body .md-content__inner.md-typeset
> h2[id="0"] + .highlight + table
:is(th, td):first-child code,
html:has(> head > link[rel="canonical"][href*="/Diffusion%20Policy%20checkpoint%20"])
body .md-content__inner.md-typeset
> h2[id="0"] + .highlight + .md-typeset__scrollwrap
table :is(th, td):first-child code {
    white-space: nowrap !important;
    overflow-wrap: normal !important;
    word-break: normal !important;
    hyphens: none !important;
}

/* ==========================================================================
   PDF Viewer
   ========================================================================== */

.md-typeset .pdf-viewer-shell {
    position: relative;
    width: 100%;
    margin-block: 1rem 0.75rem;
    overflow: hidden;
    border: 1px solid var(--md-default-fg-color--lightest);
    border-radius: 0.75rem;
    background: #e6e8eb;
    box-shadow: var(--md-shadow-z1);
}

[data-md-color-scheme="slate"] .md-typeset .pdf-viewer-shell {
    background: #161b22;
}

/* Paint a small first-page preview immediately while the browser's native PDF
   reader downloads and initializes. The actual PDF is requested eagerly; the
   preview simply removes the otherwise blank, ambiguous waiting period. */
.md-typeset .pdf-viewer-loading {
    position: absolute;
    inset: 0;
    z-index: 1;
    display: grid;
    place-items: center;
    overflow: hidden;
    background: inherit;
    opacity: 1;
    visibility: visible;
    transition: opacity 180ms ease, visibility 0s linear 180ms;
}

.md-typeset .pdf-viewer-preview {
    display: block;
    width: 100%;
    height: 100%;
    padding: clamp(0.4rem, 1.4vw, 0.9rem);
    object-fit: contain;
    background: transparent;
}

.md-typeset .pdf-viewer-loading-status {
    position: absolute;
    inset-block-start: 0.8rem;
    inset-inline-start: 50%;
    display: inline-flex;
    align-items: center;
    gap: 0.45rem;
    max-width: calc(100% - 1.6rem);
    padding: 0.38rem 0.7rem;
    border: 1px solid rgb(255 255 255 / 18%);
    border-radius: 999px;
    color: #f0f6fc;
    background: rgb(13 17 23 / 88%);
    box-shadow: 0 0.35rem 1rem rgb(0 0 0 / 20%);
    font-size: 0.72rem;
    line-height: 1.25;
    white-space: nowrap;
    transform: translateX(-50%);
    backdrop-filter: blur(8px);
}

.md-typeset .pdf-viewer-spinner {
    width: 0.75rem;
    height: 0.75rem;
    flex: 0 0 auto;
    border: 2px solid rgb(240 246 252 / 30%);
    border-top-color: #f0f6fc;
    border-radius: 50%;
    animation: edwinos-pdf-spinner 720ms linear infinite;
}

@keyframes edwinos-pdf-spinner {
    to {
        transform: rotate(1turn);
    }
}

/* A PDF reader is the page's primary content, so reclaim the desktop TOC
   column for the document canvas. This remains compatible with front matter
   that also hides the TOC and needs no route-specific filename selector. */
html:has(body .pdf-viewer-shell) body .md-sidebar--secondary {
    display: none !important;
}

html:has(body .pdf-viewer-shell) body .md-content,
html:has(body .pdf-viewer-shell) body .md-content__inner {
    max-width: none !important;
}

.md-typeset .pdf-viewer-frame {
    display: block;
    width: 100%;
    height: min(82vh, 900px);
    min-height: 560px;
    border: 0;
    background: #fff;
    opacity: 0;
    transition: opacity 180ms ease;
}

.md-typeset .pdf-viewer-shell.is-pdf-ready .pdf-viewer-loading {
    opacity: 0;
    visibility: hidden;
    pointer-events: none;
}

.md-typeset .pdf-viewer-shell.is-pdf-ready .pdf-viewer-frame {
    opacity: 1;
}

.md-typeset .pdf-viewer-actions {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.35rem;
    margin-bottom: 1rem;
    font-size: 0.8rem;
}

@media screen and (max-width: 44.984375em) {
    .md-typeset .pdf-viewer-frame {
        height: 68vh;
        min-height: 440px;
    }

    .md-typeset .pdf-viewer-loading-status {
        inset-block-start: 0.6rem;
        font-size: 0.66rem;
    }
}

@media (prefers-reduced-motion: reduce) {
    .md-typeset .pdf-viewer-loading,
    .md-typeset .pdf-viewer-frame {
        transition: none;
    }

    .md-typeset .pdf-viewer-spinner {
        animation-duration: 1.5s;
    }
}

/* Three anonymized editor screenshots include solid black padding in their
   raster files. Crop only their on-page presentation; other article images
   and the source Obsidian assets remain untouched. */
.md-typeset img.trim-black-padding,
.md-typeset img.trim-white-padding {
    display: block;
    object-fit: cover;
}

.md-typeset img.trim-black-padding--register {
    aspect-ratio: 2171 / 526;
    object-position: 50% 52.7%;
}

.md-typeset img.trim-black-padding--scene {
    aspect-ratio: 2117 / 390;
    object-position: 50% 47%;
}

.md-typeset img.trim-black-padding--asset {
    aspect-ratio: 2163 / 391;
    object-position: 50% 50%;
}

/* The anonymized transfer screenshot contains 107 px / 108 px of white
   canvas above and below the terminal capture. Crop only its presentation so
   the source asset remains byte-for-byte unchanged. */
.md-typeset img.trim-white-padding--npz-transfer {
    aspect-ratio: 2123 / 526;
    object-position: 50% 49.9%;
}

/* ==========================================================================
   Prose Links
   ========================================================================== */

/* Keep prose-link colors, hover highlights, and focus outlines without lines. */
.md-content__inner.md-typeset
:is(p, li, dd, blockquote):not(:where(.grid.cards *, [class*="card"], [class*="card"] *))
a:not(:where(.headerlink, .md-button, [role="button"], [class*="btn-"])) {
    text-decoration: none !important;
    border-bottom: 0 !important;
}

/* ==========================================================================
   Friends Page
   ========================================================================== */

body:has(.friend-links) .academic-content--subpage > h1 {
    margin: 0 0 0.35rem !important;
    color: #24292f !important;
    font-family: var(--edwinos-font-hand) !important;
    font-size: 32px !important;
    font-weight: 600 !important;
    letter-spacing: 0 !important;
    line-height: 1.2 !important;
}

body:has(.friend-links) .academic-content--subpage > p {
    margin: 0 0 0.8rem !important;
    color: #57606a !important;
    font-size: 16px !important;
    line-height: 1.45 !important;
}

body:has(.friend-links) .academic-content--subpage > h2 {
    margin: 1.15rem 0 0.42rem !important;
    color: #24292f !important;
    font-family: var(--edwinos-font-hand) !important;
    font-size: 24px !important;
    font-weight: 600 !important;
    letter-spacing: 0 !important;
}

body:has(.friend-links) .academic-content--subpage > ul,
body:has(.friend-links) .academic-content--subpage > ol {
    margin-top: 0.35rem !important;
    margin-bottom: 0.65rem !important;
}

body:has(.friend-links) .academic-content--subpage li {
    margin-bottom: 0.2rem !important;
    font-size: 16px !important;
    line-height: 1.45 !important;
}

body[data-md-color-scheme="slate"]:has(.friend-links)
.academic-content--subpage > :is(h1, h2) {
    color: #f0f6fc !important;
}

body[data-md-color-scheme="slate"]:has(.friend-links)
.academic-content--subpage > p {
    color: #8b949e !important;
}

/* The HOME subpage shell is a flex column with a generous global gap. Friends
   already defines its own heading, prose, list, and card spacing, so remove
   only the duplicated inter-element gap on this page. */
body:has(.friend-links) .academic-content--subpage {
    gap: 0 !important;
}

.friend-links {
    display: grid !important;
    grid-template-columns: repeat(auto-fit, minmax(16.5rem, 1fr)) !important;
    gap: 12px !important;
    padding: 4px 0 12px !important;
}

.friend-card {
    display: flex;
    box-sizing: border-box !important;
    min-height: 72px !important;
    align-items: center !important;
    padding: 10px 12px !important;
    border: 1px solid #d0d7de !important;
    border-radius: 6px !important;
    background: #ffffff !important;
    box-shadow: none !important;
    color: #24292f !important;
    text-decoration: none !important;
    transform: none !important;
    transition: transform 0.3s ease, box-shadow 0.3s ease, border-color 0.25s ease;
}

.friend-card:hover {
    border-color: #0969da !important;
    background: #f6f8fa !important;
}

.friend-avatar-stack,
.friend-avatar {
    display: block !important;
    width: 48px !important;
    height: 48px !important;
    flex: 0 0 48px !important;
    margin: 0 12px 0 0 !important;
    border-radius: 50% !important;
    object-fit: cover !important;
    background-position: center !important;
    background-size: cover !important;
    background-repeat: no-repeat !important;
}

.friend-avatar-stack {
    position: relative !important;
    overflow: hidden !important;
    background: #f6f8fa !important;
}

.friend-avatar-stack .friend-avatar {
    position: absolute !important;
    inset: 0 !important;
    margin: 0 !important;
}

.friend-avatar--dark {
    display: none !important;
}

.friend-info {
    display: flex;
    min-width: 0 !important;
    flex-direction: column;
    gap: 0.16rem !important;
    overflow: hidden;
}

.friend-name {
    margin: 0 !important;
    overflow: hidden;
    color: #0969da !important;
    font-size: 16px !important;
    font-weight: 600 !important;
    line-height: 1.16 !important;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.friend-desc {
    display: -webkit-box;
    overflow: hidden;
    color: #57606a !important;
    font-size: 14px !important;
    line-clamp: 2;
    -webkit-box-orient: vertical;
    -webkit-line-clamp: 2;
    line-height: 1.28 !important;
}

body[data-md-color-scheme="slate"] .friend-card {
    border-color: #30363d !important;
    background: #161b22 !important;
    color: #f0f6fc !important;
}

body[data-md-color-scheme="slate"] .friend-card:hover {
    border-color: #58a6ff !important;
    background: #0d1117 !important;
}

body[data-md-color-scheme="slate"] .friend-avatar--light {
    display: none !important;
}

body[data-md-color-scheme="slate"] .friend-avatar--dark {
    display: block !important;
}

body[data-md-color-scheme="slate"] .friend-name {
    color: #58a6ff !important;
}

body[data-md-color-scheme="slate"] .friend-desc {
    color: #8b949e !important;
}

/* Keep the Friends profile statistic in the compact pre-handwriting face;
   page and section headings continue to inherit the Caveat heading rule. */


/* Keep the YAML example visually attached to its short "Link format:" label
   instead of inheriting the combined paragraph and code-block margins. */
body:has(.friend-links)
.academic-content--subpage
> p:has(> strong:only-child) {
    margin-bottom: 0 !important;
}

body:has(.friend-links)
.academic-content--subpage
> p:has(> strong:only-child)
+ .language-yaml.highlight {
    margin-top: 0.35rem !important;
}

@media screen and (max-width: 600px) {
    .friend-links {
        grid-template-columns: 1fr !important;
    }
}

@media (prefers-reduced-motion: reduce) {
    .friend-card {
        animation: none !important;
        transition: none !important;
        transform: none !important;
    }
}

/* ==========================================================================
   Archive
   ========================================================================== */

/* Keep every entry on one stable grid rhythm. The cover is taken out of the
   intrinsic-size calculation so portrait and panoramic source images cannot
   stretch the card; object-fit then crops each source to the cover viewport. */
body.is-home-profile-page:has(.archive-grid) .archive-card {
    block-size: 10.75rem;
}

body.is-home-profile-page:has(.archive-grid) .archive-card__link,
body.is-home-profile-page:has(.archive-grid) .archive-card__link:hover {
    height: 100% !important;
    min-height: 0 !important;
}

body.is-home-profile-page:has(.archive-grid) .archive-card__cover {
    position: relative;
    height: 100%;
    min-height: 0;
}

body.is-home-profile-page:has(.archive-grid) .archive-card__image {
    position: absolute;
    inset: 0;
    width: 100% !important;
    height: 100% !important;
    object-fit: cover !important;
    object-position: center;
}

/* Material's instant-navigation progress bar defaults to y=0 underneath the
   EdwinOS header. Move it to the visible header edge on the Archive route. */
body.is-home-profile-page:has(.archive-grid) .md-progress {
    top: calc(
        var(--edwinos-mobile-header-height, var(--compact-header-height, 3.5rem))
        - 0.15rem
    ) !important;
    z-index: 10005 !important;
    height: 0.15rem !important;
    background: #58a6ff !important;
    box-shadow: 0 0 0.45rem rgba(88, 166, 255, 0.72);
}

/* Archive links can take a moment on a cold Pages cache. Give the click an
   immediate, unmistakable state while Material fetches the next document. */
body.is-archive-navigating {
    overflow: hidden;
}

body.is-archive-navigating::before,
body.is-archive-navigating::after {
    position: fixed;
    z-index: 10000;
    pointer-events: auto;
}

body.is-archive-navigating::before {
    content: "";
    inset: 0;
    background: rgba(5, 9, 14, 0.96);
}

body.is-archive-navigating::after {
    content: "Opening note\2026";
    top: 50%;
    left: 50%;
    padding-top: 2.4rem;
    color: #f0f6fc;
    font-family: var(--edwinos-font-mono);
    font-size: 0.72rem;
    letter-spacing: 0.08em;
    background:
        radial-gradient(circle, transparent 52%, #58a6ff 54% 64%, transparent 66%)
        top center / 1.6rem 1.6rem no-repeat;
    transform: translate(-50%, -50%);
    animation: edwinos-archive-loading 900ms linear infinite;
}

@keyframes edwinos-archive-loading {
    to {
        filter: hue-rotate(360deg);
    }
}

@media screen and (max-width: 36rem) {
    body.is-home-profile-page:has(.archive-grid) .archive-card__title-row {
        display: grid;
        grid-template-columns: minmax(0, 1fr);
        align-items: start;
        gap: 0.28rem;
        margin: 0 0 0.5rem;
    }

    body.is-home-profile-page:has(.archive-grid) .archive-card__status {
        justify-self: start;
        padding: 0.22rem 0.4rem;
        font-size: 0.46rem;
        letter-spacing: 0.07em;
    }

    body.is-home-profile-page:has(.archive-grid) .archive-card__title {
        width: 100%;
    }
}

@media screen and (max-width: 30rem) {
    body.is-home-profile-page:has(.archive-grid) .archive-card {
        block-size: 9.75rem;
    }
}

@media (prefers-reduced-motion: reduce) {
    body.is-archive-navigating::after {
        animation: none;
    }
}

/* ==========================================================================
   Content Hubs
   ========================================================================== */

@media screen and (min-width: 76.25em) {
    html:has(> head > link[rel="canonical"][href*="/OsdNotes/"])
    body .md-sidebar--primary
    .md-nav--primary > .md-nav__list
    > .md-nav__item--active.md-nav__item--section
    > .md-nav__container,
    html:has(> head > link[rel="canonical"][href*="/%E7%BB%8F%E9%AA%8C%E5%88%86%E4%BA%AB/"])
    body .md-sidebar--primary
    .md-nav--primary > .md-nav__list
    > .md-nav__item--active.md-nav__item--section
    > .md-nav__container {
        display: none !important;
    }
}

.md-typeset .intro-card-grid {
    grid-template-columns: repeat(3, minmax(0, 1fr));
    margin-block: 1rem 1.25rem;
}

.md-typeset .intro-card-grid > ul {
    margin: 0 !important;
    padding: 0 !important;
    list-style: none !important;
}

.md-typeset .intro-card-grid > ul > li {
    display: block !important;
    min-width: 0;
    margin: 0 !important;
    list-style: none !important;
    overflow: hidden;
    border-radius: 1.25rem !important;
}

.md-typeset .intro-card-grid > ul > li::marker {
    content: "";
}

/* In dark mode, preserve the card boundary and replace Material's elevated
   drop shadow with a centered, low-intensity white edge glow. Light mode keeps
   the existing Material hover treatment. */
:is(
    html:has(> head > link[rel="canonical"][href$="/OsdNotes/"]),
    html:has(> head > link[rel="canonical"][href$="/%E7%BB%8F%E9%AA%8C%E5%88%86%E4%BA%AB/"])
)
body[data-md-color-scheme="slate"]
.md-typeset .intro-card-grid > ul > li {
    border-color: rgba(240, 246, 252, 0.2) !important;
    box-shadow: none !important;
    transition: border-color 160ms ease, box-shadow 160ms ease !important;
}

:is(
    html:has(> head > link[rel="canonical"][href$="/OsdNotes/"]),
    html:has(> head > link[rel="canonical"][href$="/%E7%BB%8F%E9%AA%8C%E5%88%86%E4%BA%AB/"])
)
body[data-md-color-scheme="slate"]
.md-typeset .intro-card-grid > ul > li:is(:hover, :focus-within) {
    border-color: rgba(240, 246, 252, 0.68) !important;
    box-shadow:
        0 0 0 1px rgba(240, 246, 252, 0.14),
        0 0 0.7rem rgba(240, 246, 252, 0.13) !important;
}

@media screen and (max-width: 59.984375em) {
    .md-typeset .intro-card-grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .md-typeset .intro-card-grid > ul > li:last-child:nth-child(odd) {
        grid-column: 1 / -1;
    }
}

@media screen and (max-width: 44.984375em) {
    .md-typeset .intro-card-grid {
        grid-template-columns: minmax(0, 1fr);
    }

    .md-typeset .intro-card-grid > ul > li:last-child:nth-child(odd) {
        grid-column: auto;
    }
}

/* ==========================================================================
   Visitor Footer
   ========================================================================== */

.academic-home-layout .academic-content .visitor-meta-footer {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: center;
    column-gap: 2rem;
    row-gap: 0.75rem;
    box-sizing: border-box;
    width: 100%;
    min-width: 0;
    margin: 1.65rem 0 0;
    padding-inline: 0;
    padding-top: 1.25rem;
    border-top: 1px solid var(--academic-card-border);
}

.academic-home-layout .academic-content .visitor-meta-footer__signature {
    display: flex;
    flex: 0 0 auto;
    flex-wrap: nowrap;
    align-items: center;
    justify-content: center;
    gap: 0.5rem;
    margin: 0;
    color: var(--academic-muted);
    font-family: var(--edwinos-font-mono);
    font-size: 0.68rem;
    font-weight: 400;
    letter-spacing: 0;
    line-height: 1.3;
    text-align: center;
    white-space: nowrap;
}

.academic-home-layout .academic-content .visitor-meta-footer__separator {
    color: var(--academic-card-border);
}

.academic-home-layout .academic-content .visitor-container.visitor-badge-panel {
    display: flex !important;
    flex: 0 0 auto;
    align-items: center !important;
    justify-content: center !important;
    width: auto !important;
    max-width: none !important;
    min-width: auto !important;
    min-height: 0 !important;
    margin: 0 !important;
    padding: 0 !important;
    overflow: visible !important;
    background: transparent !important;
    border: 0 !important;
    border-radius: 0 !important;
    box-shadow: none !important;
    transform: none !important;
    transition: none !important;
    white-space: nowrap !important;
}

.academic-home-layout .academic-content .visitor-badge-link {
    display: inline-flex !important;
    flex: 0 0 auto;
    align-items: center !important;
    justify-content: center !important;
    width: auto !important;
    max-width: none;
    min-height: 0 !important;
    margin: 0 !important;
    padding: 0;
    border: 0 !important;
    border-radius: 0.2rem;
    line-height: 0;
    text-decoration: none !important;
}

.academic-home-layout .academic-content .visitor-badge-link:focus-visible {
    outline: 2px solid var(--academic-accent);
    outline-offset: 3px;
    box-shadow: 0 0 0 1px var(--academic-card-bg);
}

.academic-home-layout .academic-content .visitor-badge-image {
    display: block !important;
    width: auto !important;
    max-width: none !important;
    height: auto !important;
    margin: 0 !important;
    object-fit: contain;
}

.academic-home-layout .academic-content .visitor-badge-image[hidden] {
    display: none !important;
}

.academic-home-layout .academic-content .visitor-badge-fallback {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 1.25rem;
    max-width: none;
    padding: 0;
    color: var(--academic-muted);
    font-family: var(--edwinos-font-mono);
    font-size: 0.68rem;
    font-weight: 400;
    line-height: 1.35;
    text-align: center;
    white-space: nowrap;
}

@media screen and (max-width: 36rem) {
    .academic-home-layout .academic-content .visitor-meta-footer {
        flex-direction: column;
        align-items: center;
        row-gap: 0.75rem;
        margin-top: 1.35rem;
        padding-inline: 0;
        padding-top: 1rem;
    }

    .academic-home-layout .academic-content .visitor-meta-footer__signature {
        justify-content: center;
        gap: 0.32rem;
        font-size: 0.66rem;
        text-align: center;
    }

    .academic-home-layout .academic-content .visitor-container.visitor-badge-panel {
        justify-content: center !important;
        width: auto !important;
    }
}
