/* ============================================
   MD3 → PX 色彩转接环 (Adapter Layer)
   
   核心原理：
   md3-color-generator.js 在生成 [data-bs-theme=dark] 时，
   已将 Tone 映射反转（例如 Light 的 tone-10 对应 Dark 的 tone-90）。
   因此此处只需引用同一套 --md3-* 变量名，颜色值会随主题自动切换，
   无需为深色模式单独指定不同的变量或进行额外计算。
   ============================================ */

/* 
   由于 JS 生成器已反转色板，以下变量名与 Light 模式完全一致。
   浏览器会根据 [data-bs-theme=dark] 作用域自动获取反转后的色值。
*/
:root,
[data-bs-theme="light"] {
  /* 1. 主色映射 */
  --mh-theme: var(--md3-primary);
  --mh-theme-text: var(--md3-on-primary);

  /* 2. 背景/表面映射 */
  --mh-bg: var(--md3-surface);

  /* 3. 正文颜色 
     注：JS 已处理反转，Light 下为深色 neutral-10，Dark 下自动变为浅色 neutral-10 */
  --mh-text: var(--md3-neutral-10);

  /* 4. 层级灰阶 (Surface Container 递进) */
  --mh-gray-1: var(--md3-surface-container-lowest);
  --mh-gray-2: var(--md3-surface-container-low);
  --mh-gray-3: var(--md3-surface-container);
  --mh-gray-4: var(--md3-surface-container-high);
  --mh-gray-5: var(--md3-surface-container-highest);

  /* 5. 边框/轮廓 */
  --mh-border: var(--md3-outline-variant);

  /* 6. 标题颜色 */
  --bs-heading-color: var(--md3-neutral-10);
  --bs-link-color-rgb: var(--md3-primary-rgb);
  --bs-link-hover-color-rgb: var(--md3-primary-rgb);
}

[data-bs-theme="dark"] {
  /* 1. 主色映射 */
  --mh-theme: var(--md3-primary-24);
  --mh-theme-text: var(--md3-on-primary);
  /* 再反向映射 */
  --bs-primary: var(--mh-theme);
  --bs-secondary: var(--md3-secondary-24);
  /* 2. 背景/表面映射 */
  --mh-bg: var(--md3-surface);

  /* 3. 正文颜色 
     注：JS 已处理反转，Light 下为深色 neutral-10，Dark 下自动变为浅色 neutral-10 */
  --mh-text: var(--md3-neutral-10);

  /* 4. 层级灰阶 (Surface Container 递进) */
  --mh-gray-1: var(--md3-surface-container-lowest);
  --mh-gray-2: var(--md3-surface-container-low);
  --mh-gray-3: var(--md3-surface-container);
  --mh-gray-4: var(--md3-surface-container-high);
  --mh-gray-5: var(--md3-surface-container-highest);

  /* 5. 边框/轮廓 */
  --mh-border: var(--md3-outline-variant);

  /* 6. 标题颜色 */
  --bs-heading-color: var(--md3-neutral-10);
  --bs-link-color-rgb: var(--md3-primary-rgb);
  --bs-link-hover-color-rgb: var(--md3-primary-rgb);
}

.text-primary,a:not(:hover):not(:focus):not(:active):not([class]) {
    color: var(--mh-theme) !important;
}

.btn-secondary,.btn-outline-secondary {
  --md3-secondary-50: var(--md3-secondary-24);
}

body {
    background-image: none;
}


::selection {
    background-color: var(--bs-primary);
    color: var(--bs-white);
    -webkit-text-stroke: 0 !important;
    filter: unset !important;
}

::-moz-selection {
    background-color: var(--bs-primary);
    color: var(--bs-white);
    filter: unset !important;
}

::-webkit-scrollbar {
    width: 8px;
    height: 8px;
    border-radius: 20px;
}

::-webkit-scrollbar-track {
    background: var(--bs-white);
    border-radius: 20px;
}

::-webkit-scrollbar-thumb {
    background: var(--bs-secondary);
    border-radius: 20px;
}

::-webkit-scrollbar-thumb:hover {
    background: var(--bs-primary);
    border-radius: 20px;
}

/* ============================================
   字体系统映射（Font System Mapping）
   变量本体（--font-family-* 栈）定义在 global.css，
   此处负责接入 Bootstrap 变量并指派到对应语义位置。
   ============================================ */
:root {
    /* 黑体作为 --bs-body-font-family 的平替，同时是 paragraph 手写体的 fallback */
    --bs-body-font-family: var(--font-family-sans-serif);
    /* Bootstrap 内部组件字体也走黑体 */
    --bs-font-sans-serif: var(--font-family-sans-serif);
}

/* 正文：黑体（--font-family-sans-serif 已含圆体 fallback） */
body {
    font-family: var(--font-family-sans-serif);
}

.d-flex {
    display: flex !important;
}

/* 所有 card 及类 card 元件：正文专用手写字体 */
.card,
.feature-box-01,
.portfolio-box,
.image-info,
.sticky-note,
.mh-btn {
    font-family: var(--font-family-cursive-paragraph);
}

/* 标题专用手写字体 */
.section-heading {
    font-family: var(--font-family-cursive-heading);
}

/* 装饰字体：首页大标题 */
.home-section .home-intro h1 {
    font-family: var(--font-family-fantasy);
}

/* 数据展示：等宽字体 */
.data-monospace,
code,
pre,
kbd,
samp,
.table-monospace {
    font-family: var(--font-family-monospace);
}

/* 左栏菜单项：图标 + 文字 竖排布局补全（原版依赖 flex 默认，这里显式声明避免抽离丢失） */
.main-menu .m-icon {
  display: block;
  font-size: 1.4rem;
  line-height: 1;
  margin-bottom: 0.25rem;
}
.main-menu .m-text {
  display: block;
  font-size: 0.8rem;
  line-height: 1.2;
  letter-spacing: 0.02em;
}


.logo-light {
    display: none
}

.logo-dark,
[data-bs-theme=dark] .logo-light {
    display: block
}

[data-bs-theme=dark] .logo-dark {
    display: none
}

.main-header {
    position: fixed;
    top: 0;
    left: 0;
    right: 0;
    z-index: 11;
    border-bottom: 1px solid var(--mh-border);
    padding-top: 10px;
    padding-bottom: 10px;
    background-color: var(--mh-gray-1)
}

.main-header .container {
    display: flex;
    align-items: center
}

.theme-btn .dropdown-toggle {
    background-color: var(--mh-theme);
    color: var(--mh-theme-text);
    border-radius: 10px;
    padding: 10px 18px;
    line-height: 1;
    border: none
}

.theme-btn .dropdown-toggle:after {
    display: none
}

.theme-btn .dropdown-menu {
    box-shadow: 0 4px 8px -2px rgba(var(--bs-dark-rgb), .1), 0 2px 4px -2px rgba(var(--bs-dark-rgb), .06);
    border: none;
    padding: 10px
}

.theme-btn .dropdown-item {
    border-radius: 5px;
    font-size: 14px
}

.theme-btn .dropdown-item.active,
.theme-btn .dropdown-item:active {
    background-color: var(--mh-theme);
    color: var(--mh-theme-text)
}

.navbar-brand {
    display: flex;
    align-items: center;
    justify-content: center;
    color: var(--mh-theme-text);
    line-height: 1;
    font-size: 18px
}

.toggler-menu {
    padding: 0;
    width: 48px;
    height: 48px;
    position: fixed;
    top: 16px;
    right: 16px;
    background-color: var(--md3-primary-container, var(--mh-theme));
    color: var(--md3-on-primary-container, var(--mh-theme-text));
    border-radius: 16px;
    margin-left: 10px;
    border: none;
    z-index: 1020;
    box-shadow: 0 1px 3px 1px rgba(0,0,0,0.15), 0 1px 2px 0 rgba(0,0,0,0.3);
    display: flex;
    align-items: center;
    justify-content: center;
}

.toggler-menu span {
    position: static;
    width: 22px;
    box-shadow: 0 0 0 1px currentColor, 0 -7px 0 1px currentColor, 0 7px 0 1px currentColor;
    height: 0;
}

@media (min-width: 1020px) {
    .toggler-menu {
        display: none;
    }
}

.main-menu {
    /* display: flex; */
    margin: 0;
    padding: 20px 0;
    list-style: none;
    justify-content: center
}

.main-menu .m-icon {
    width: 65px;
    font-size: 18px;
    border-radius: 30px;
    line-height: 1;
    padding: 7px 0;
    margin-bottom: 5px;
    transition: all .35s ease;
    background-color: transparent
}

.main-menu .m-icon,
.main-menu li a {
    display: flex;
    align-items: center;
    justify-content: center
}

.main-menu li a {
    flex-direction: column;
    font-size: 14px;
    text-decoration: none;
    color: var(--mh-text);
    padding: 6px 0;
    font-weight: 500
}

@media (min-width:1201px) {
    .main-menu li a:hover .m-icon {
        background-color: var(--mh-theme);
        color: var(--mh-theme-text)
    }
}

.main-menu li.active .m-icon,
.main-menu li > a.active .m-icon {
    background-color: var(--mh-theme);
    color: var(--mh-theme-text)
}

.header-left-fixed {
    position: fixed;
    bottom: 0;
    top: 0;
    width: 100px;
    left: -180px;
    z-index: 11;
    display: flex;
    flex-direction: column;
    transition: all .35s ease;
    background-color: var(--mh-gray-2);
    border-right: 1px solid var(--mh-border)
}

.header-left-fixed.menu-open {
    left: 0
}

@media (min-width:1024px) {
    .header-left-fixed {
        left: 0 !important
    }
}

.header-left-fixed .logo {
    width: 100%;
    padding-top: 10px;
    padding-bottom: 10px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border-bottom: 1px solid var(--mh-border)
}

.header-left-fixed .logo img {
    max-width: 90%
}

@media (min-width:1024px) {
    .header-left-fixed+.wrapper {
        padding-left: 100px
    }
}

.header-left-fixed .main-menu {
    flex-direction: column;
    overflow-y: auto
}

.header-left-fixed .main-menu li {
    padding: 0
}

.header-left-fixed .theme-btn {
    margin-top: auto;
    text-align: center;
    padding: 20px 0
}

.header-left-fixed .theme-btn .dropdown-menu {
    bottom: 100%;
    top: auto;
    left: 0;
    right: auto;
    min-width: inherit
}

.footer {
    position: relative;
    background-color: var(--mh-bg);
    border-top: 2px solid var(--mh-gray-2)
}

.mh-btn {
    padding: 15px 35px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    background-color: var(--mh-theme);
    color: var(--mh-theme-text);
    text-decoration: none;
    border-radius: 10px;
    transition: all .35s ease;
    font-weight: 500;
    outline: none;
    box-shadow: none;
    border: 2px solid var(--mh-theme)
}

.mh-btn i {
    margin-left: 10px
}

.mh-btn:hover {
    background-color: var(--mh-theme-text);
    color: var(--mh-theme)
}

.mh-btn:focus-visible {
	outline: 3px solid var(--mh-theme, #1e88e5);
	outline-offset: 2px;
}
.gray-bg-1 {
    background-color: var(--mh-gray-1)
}

.gray-bg-2 {
    background-color: var(--mh-gray-2)
}

.gray-bg-3 {
    background-color: var(--mh-gray-3)
}

.gray-bg-4 {
    background-color: var(--mh-gray-4)
}

.gray-bg-5 {
    background-color: var(--mh-gray-5)
}

.theme-bg {
    background-color: var(--mh-theme)
}

.theme-light-bg {
    background-color: var(--mh-theme-light)
}

.theme-dark-bg {
    background-color: var(--mh-theme-dark)
}

@media (prefers-reduced-motion:no-preference) {
    :root {
        scroll-behavior: inherit
    }
}

img {
    max-width: 100%
}

.dropdown-menu {
    --bs-dropdown-bg: var(--mh-gray-3);
    --bs-tertiary-bg: var(--mh-gray-2);
    --bs-dropdown-link-active-bg: var(--mh-theme);
    --bs-dropdown-link-active-color: var(--mh-theme-text)
}

.section {
    padding: 100px 0;
    position: relative
}

@media (max-width:1200px) {
    .section {
        padding-top: 80px;
        padding-bottom: 80px
    }
}

@media (max-width:767px) {
    .section {
        padding-top: 60px;
        padding-bottom: 60px
    }
}


.section-heading {
    position: relative;
    /* display: inline-block; */
    vertical-align: top;
    padding-right: 45px;
    padding-bottom: 45px;
    font-size: 40px;
    font-weight: 600;
    margin: 0;
    padding-bottom: 10px;
    text-transform: uppercase;
    margin-bottom: 30px;
}
.section-heading .heading-count {
    color: var(--mh-theme);
}

.section-heading::before {
    content: attr(data-subname);
    position: absolute;
    left: 0;
    transform: rotate(90deg);
    transform-origin: top left;
    opacity: 0.1;
    color: var(--mh-theme);
    font-family: 'Victor Mono', var(--font-family-cursive, var(--font-family-sans-serif));
    font-style: italic;
    pointer-events: none;
    white-space: nowrap;
}

@media (max-width:767px) {
    .section-heading {
        font-size: 32px
    }
}

.section-heading:after {
    content: "";
    position: absolute;
    bottom: 0;
    left: 0;
    width: 60px;
    height: 3px;
    background-color: var(--mh-theme)
}

.section-heading i {
    position: absolute;
    top: -14px;
    right: 0
}

.section-heading i svg {
    width: 34px;
    height: auto
}

.title-01 {
    font-size: 20px;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 2px;
    position: relative;
    padding-left: 20px;
    color: var(--bs-heading-color);
    margin-bottom: 30px
}

.title-01:after {
    content: "";
    position: absolute;
    top: 10px;
    left: 0;
    width: 8px;
    height: 8px;
    background: var(--mh-theme)
}

html {
    scroll-behavior: smooth !important
}

body {
    background-color: var(--mh-bg);
    color: var(--mh-text);
    font-family: var(--bs-font-sans-serif,sans-serif);
    --bs-body-font-weight: 400;
    --bs-body-font-size: 16px;
    --bs-body-line-height: 1.6;
    overflow-x: hidden
}

.home-section {
    overflow: hidden;
    padding: 0
}

.home-section .min-vh-100 {
    padding-top: 100px;
    padding-bottom: 100px
}

.home-section .home-image {
    position: relative
}

.home-section .home-image svg {
    width: 100%;
    opacity: 0.25;
    pointer-events: none;
}

@keyframes spin {
    from {
        transform: rotate(0deg);
    }
    to {
        transform: rotate(360deg);
    }
}

.home-section .home-image .hi-icon-top {
    position: absolute;
    top: -60px;
    right: -50px;
    width: 90px;
    display: inline-block;
    animation: spin 60s linear infinite;

}

.home-section .home-image .hi-icon-bottom {
    position: absolute;
    bottom: -40px;
    left: -50px;
    width: 90px;
    display: inline-block;
    animation: spin 60s linear infinite reverse;

}

.home-section .home-image img {
    border-radius: 40px;
    width: 100%;
    max-height: 75vmin;
    object-fit: cover;
    object-position: var(--pos-x, 50%) var(--pos-y, 50%)
}

.home-section .home-intro {
    text-shadow: 0 0 10px var(--mh-bg);
}

@media (max-width:991px) {
    .home-section .home-intro {
        text-align: center;
        /* max-width: 470px; */
        margin: 0 auto;
        padding-top: 20px
    }
}

.home-section .home-intro h6 {
    font-size: 20px;
    margin-bottom: 15px
}

@media (max-width:1200px) {
    .home-section .home-intro h6 {
        font-size: 18px
    }
}

.home-section .home-intro h1 {
    font-size: 62px;
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    font-weight: 600;
    margin-bottom: 15px
}

@media (max-width:1200px) {
    .home-section .home-intro h1 {
        font-size: 50px
    }
}

@media (max-width:991px) {
    .home-section .home-intro h1 {
        justify-content: center
    }
}

@media (max-width:767px) {
    .home-section .home-intro h1 {
        font-size: 35px
    }
}

.home-section .home-intro h1 span {
    width: 70px;
    height: 70px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border-radius: 50%;
    margin: 0 8px
}

@media (max-width:1200px) {
    .home-section .home-intro h1 span {
        width: 55px;
        height: 55px
    }
}

@media (max-width:767px) {
    .home-section .home-intro h1 span {
        width: 45px;
        height: 45px
    }
}

.home-section .home-intro h1 span img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    border-radius: 50%
}

.home-section .home-intro h2 {
    font-weight: 500;
    margin-bottom: 25px;
    font-size: 25px
}

@media (max-width:1200px) {
    .home-section .home-intro h2 {
        margin-bottom: 20px;
        font-size: 22px
    }
}

.home-section .home-intro p {
    font-size: 17px
}

@media (max-width:1200px) {
    .home-section .home-intro p {
        font-size: 15px
    }
}

.home-section .home-intro .btn-bar {
    padding-top: 15px
}

#recommendations {
    background: linear-gradient(0deg, var(--mh-gray-1) 50%, var(--mh-bg) 100%);
}

#whois .charimg {
    width: 25em;
    margin-left: auto;
    margin-right: auto;
    max-width: calc(100vw - var(--bs-gutter-x));
    overflow-x: hidden;
}

#whois .charimg img {
    --blank_space_on_right: 25.59%;
    --stroke-width: 4px;
    --stroke-color: var(--bs-light,#fff);
    width: calc(100% + var(--blank_space_on_right));
    max-width: unset;
    height: auto;
    margin-right: calc(var(--blank_space_on_right) * -1);
    filter: drop-shadow(0 var(--stroke-width) 0 var(--stroke-color)) drop-shadow(0 calc(var(--stroke-width) * -1) 0 var(--stroke-color)) drop-shadow(var(--stroke-width) 0 0 var(--stroke-color)) drop-shadow(calc(var(--stroke-width) * -1) 0 0 var(--stroke-color)) drop-shadow(2px 4px 6px rgba(0, 0, 0, .25));
}



.home-section .ef-1 {
    top: 50px;
    right: 0;
    bottom: auto;
    background: var(--bs-tertiary);
    animation: ef_effect 60s linear ;
}

.home-section .ef-2 {
    bottom: 50px;
    left: 0;
    background:var(--bs-secondary);
    animation: ef_effect 60s linear alternate;
}

.home-section .ef-1,
.home-section .ef-2 {
    position: absolute;
    width: 52vmin;
    height: 52vmin;
    border-radius: 50%;
    filter: blur(100px);
    opacity: .25;
    pointer-events: none;
    z-index: -1
}

@keyframes ef_effect {
    0% {
        transform: translate( 0, 0)
    }

    10% {
        transform: translate( -5%, -5%)
    }

    20% {
        transform: translate( -10%, 5%)
    }

    30% {
        transform: translate( 5%, -10%)
    }

    40% {
        transform: translate( -5%, 15%)
    }

    50% {
        transform: translate( -10%, 5%)
    }

    60% {
        transform: translate( 15%, 0)
    }

    70% {
        transform: translate( 0, 10%)
    }

    80% {
        transform: translate( -15%, 0)
    }

    90% {
        transform: translate( 10%, 5%)
    }

    to {
        transform: translate( 5%, 0)
    }
}

@keyframes marquee {
    0% {
        left: 0
    }

    to {
        left: -100%
    }
}

.about-me-text {
    padding: 0 10% 0 0
}

.about-me-text h3 {
    font-size: 16px;
    margin-bottom: 10px
}

.about-me-text h3,
.about-me-text h5 {
    text-transform: uppercase;
    font-weight: 600
}

.about-me-text h5 {
    font-size: 30px;
    margin-bottom: 26px
}

@media (max-width:767px) {
    .about-me-text h5 {
        font-size: 26px;
        margin-bottom: 22px
    }
}

.about-me-text .a-count {
    display: flex;
    align-items: center
}

.about-me-text .a-count .count {
    font-size: 52px;
    line-height: 1;
    font-weight: 600;
    color: var(--bs-heading-color)
}

@media (max-width:767px) {
    .about-me-text .a-count .count {
        font-size: 42px
    }
}

.about-me-text .a-count .a-count-text {
    flex: 1 1;
    padding-left: 12px;
    line-height: 1.4
}

.about-me-text .btn-bar {
    padding-top: 30px
}

.about-me-img {
    border-radius: 16px;
    overflow: hidden
}

.about-content ul {
    margin: 0;
    padding: 0;
    list-style: none
}

.about-content li {
    display: flex;
    border: 2px solid var(--mh-border);
    background-color: var(--mh-bg);
    padding: 12px 15px;
    border-radius: 12px;
    align-items: center;
    position: relative;
    transition: all .35s ease
}

.about-content li .a-icon {
    width: 40px;
    height: 40px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border-radius: 50%;
    background-color: var(--mh-gray-2);
    color: var(--mh-text);
    font-size: 20px
}

.about-content li .a-text {
    flex: 1 1;
    padding-left: 20px;
    color: var(--mh-text);
    font-weight: 500
}

.about-content li:hover {
    background-color: var(--mh-theme);
    border: 2px solid var(--mh-theme)
}

.about-content li:hover .a-text {
    color: var(--mh-theme-text)
}

.about-content li+li {
    margin-top: 18px
}

.resume-box ul {
    margin: 0;
    padding: 0;
    list-style: none
}

.resume-box li {
    background-color: var(--mh-bg);
    border: 2px solid var(--mh-border);
    padding: 15px 15px 20px 70px;
    border-radius: 12px;
    position: relative;
    transition: all .35s ease
}

.card {
    background-color: var(--mh-bg);
    border: 2px solid var(--mh-border);
    border-radius: 12px;
}

.resume-box li .icon {
    width: 40px;
    height: 40px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border-radius: 50%;
    background-color: var(--mh-theme-text);
    color: var(--mh-theme);
    font-size: 20px;
    position: absolute;
    top: 15px;
    left: 15px
}

.resume-box li .time {
    font-size: 12px;
    display: flex;
    width: 100%;
    padding-bottom: 4px
}

.resume-box li h5 {
    font-weight: 600;
    font-size: 18px;
    margin-bottom: 10px
}

.resume-box li p {
    margin: 0
}

.resume-box li+li {
    margin-top: 20px
}

.skill-lt+.skill-lt {
    padding-top: 30px
}

.skill-lt .skill-bar {
    background-color: var(--mh-gray-4)
}

.skill-lt h6 {
    font-size: 16px;
    margin: 0 0 10px
}

.skill-lt .skill-bar-in {
    transition: all .9s cubic-bezier(.25, .46, .45, .94);
    height: 5px;
    position: relative;
    width: 0;
    min-width: 100px;
    background-color: var(--bs-heading-color)
}

.skill-lt .skill-bar-in [data-bs-theme=dark] {
    background-color: var(--mh-theme)
}

.skill-lt .skill-bar-in span {
    position: absolute;
    right: 0;
    top: -30px;
    font-size: 14px
}

.feature-box-01 {
    background-color: var(--mh-gray-1);
    border: 2px solid var(--mh-border);
    padding: 40px;
    border-radius: 10px;
    position: relative
}

@media (max-width:767px) {
    .feature-box-01 {
        padding: 30px
    }
}

.feature-box-01:after {
    content: "";
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    background-color: var(--mh-gray-4);
    z-index: -1;
    border-radius: 10px;
    transform: rotate(0deg);
    transition: all .35s ease
}

.feature-box-01 .icon {
    width: 70px;
    height: 70px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    margin-bottom: 40px;
    position: relative;
    z-index: 1
}

.feature-box-01 .icon i {
    background: var(--mh-theme);
    border-radius: 10px;
    color: var(--mh-theme-text);
    font-size: 35px;
    width: 100%;
    height: 100%;
    display: flex;
    align-items: center;
    justify-content: center;
    transition: all .35s ease
}

.feature-box-01 .icon:after {
    content: "";
    position: absolute;
    top: -8px;
    left: 4px;
    right: -10px;
    bottom: 5px;
    background-color: var(--mh-gray-4);
    z-index: -1;
    border-radius: 10px;
    transform: rotate(10deg);
    transition: all .35s ease
}

.feature-box-01 p {
    margin: 0
}

.feature-box-01:hover:after {
    top: -6px;
    left: 6px;
    right: -6px;
    bottom: 6px;
    transform: rotate(4deg)
}

.feature-box-01:hover .icon i {
    background-color: var(--mh-gray-4)
}

.feature-box-01:hover .icon:after {
    top: -4px;
    left: -4px;
    right: -4px;
    bottom: -4px;
    background: var(--mh-theme);
    transform: rotate(0deg)
}

.portfolio-box {
    border: 2px solid var(--mh-border);
    padding: 10px;
    border-radius: 10px;
    position: relative;
    background-color: var(--mh-bg)
}

.portfolio-box .portfolio-img {
    overflow: hidden;
    border-radius: 10px
}

.portfolio-box .portfolio-text {
    position: absolute;
    bottom: 0;
    left: 20px;
    right: 20px;
    /* background-color: var(--mh-gray-2); */
    border: 2px solid var(--mh-border);
    padding: 20px;
    border-radius: 10px;
    transition: all .35s ease;
    opacity: 0
}

.portfolio-box .portfolio-text h6 {
    font-size: 17px;
    margin: 0 0 5px
}

.portfolio-box .portfolio-text p {
    margin: 0;
    font-size: 13px
}

.portfolio-box .portfolio-text .gallery-link {
    right: 12px;
    width: 30px;
    height: 30px;
    line-height: 1
}

.portfolio-box .portfolio-modal-link,
.portfolio-box .portfolio-text .gallery-link {
    position: absolute;
    top: 20px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    background: var(--mh-theme);
    color: var(--mh-theme-text);
    border-radius: 50%
}

.portfolio-box .portfolio-modal-link {
    right: 20px;
    width: 40px;
    height: 40px;
    border: 2px solid var(--mh-theme)
}

.portfolio-box .portfolio-modal-link:hover {
    background: var(--mh-bg);
    color: var(--mh-text)
}

.portfolio-box:hover .portfolio-text, .portfolio-box:focus-within .portfolio-text {
    bottom: 20px;
    opacity: 1
}

/* 删除遗留背景图引用（assets/img/ 下无此文件，且不影响呈现） */

#music .music-list {
    /*     background: var(--white);
    padding: .1em;
    border-radius: .5rem;
    box-shadow: var(--z2); */
}

#music .music-list ol {
    margin: 0;
    /* border: 2px dotted var(--tertiary); */
    padding: .5em;
    border-radius: .5rem;
}

#music .music-list ol li {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin: .25em 0;
    counter-increment: test1;
    position: relative;
    padding: 0.5em 0 0.5em 3em;
}

#music .music-list ol li:before {
    content: counter(test1) ".";
    color: var(--primary);
    position: absolute;
    left: -0.5em;
    top: 0.25em;
    font-family: inherit;
    text-align: end;
    letter-spacing: 0;
    width: 2em;
    font-size: 1.5em;
}

@media(max-width:480px) {
    #music .music-list ol li {
        flex-direction: column;
        align-items: flex-start;
    }
}

#music .music-list .music-name {
    flex: 1;
}

#music .music-list .music-name h5 {
    margin: 0;
    font-weight: initial;
    font-size: 1.15em;
}

#music .music-list time {
    font-size: .9rem;
    opacity: .9;
}



/* ===== 补充：壁纸筛选按钮（Filterizr 控制条） ===== */
#wallpapers-flters {
    list-style: none;
    padding: 0;
    display: flex;
    flex-wrap: wrap;
    gap: 0.5rem;
    cursor: pointer;
}
#wallpapers-flters li {
    padding: 0.4rem 1rem;
    border-radius: 30px;
    background: var(--mh-gray-2, #f3f6fc);
    color: var(--mh-text, #444746);
    font-size: 0.9rem;
    transition: background 0.2s ease, color 0.2s ease;
    user-select: none;
    margin: 0;
}
#wallpapers-flters li:hover {
    background: var(--mh-gray-3, #eff3fa);
}
#wallpapers-flters li.active {
    background: var(--mh-theme, #c2e7ff);
    color: var(--mh-theme-text, #001d35);
}
#wallpapers-flters li:focus-visible {
    outline: 3px solid var(--mh-theme, #1e88e5);
    outline-offset: 2px;
}

[data-bs-theme="light"] :focus-visible {
    outline-color: #1e88e5;
}

[data-bs-theme="dark"] :focus-visible {
    outline-color: #82b1ff;
}
    outline-offset: 2px;
}

/* ===== 补充：portfolio-box 正确结构（文字层 + 图片层） ===== */
.portfolio-box {
    position: relative;
    border-radius: 12px;
    overflow: hidden;
    background: var(--mh-gray-1, #f8fafd);
}
.portfolio-box .portfolio-img { position: relative; }
.portfolio-box .portfolio-img img {
    width: 100%;
    height: 220px;
    object-fit: cover;
    display: block;
}
.portfolio-box .portfolio-text {
    position: absolute;
    left: 0; right: 0; bottom: 0;
    padding: 1rem;
    background: linear-gradient(transparent, rgba(0,0,0,0.7));
    color: #fff;
    opacity: 0;
    backdrop-filter: blur(0.5em);
    transition: all 0.3s ease;
}
.portfolio-box:hover .portfolio-text, .portfolio-box:focus-within .portfolio-text { opacity: 1; }
.portfolio-box .portfolio-text h6 { color: #fff; margin: 0 0 0.25rem; }
.portfolio-box .portfolio-text p { color: rgba(255,255,255,0.8); margin: 0; font-size: 0.85rem; }
.portfolio-box .portfolio-modal-link {
    position: absolute;
    top: 0.75rem; right: 0.75rem;
    width: 2.25rem; height: 2.25rem;
    display: flex; align-items: center; justify-content: center;
    border-radius: 50%;
    background: var(--mh-theme, #c2e7ff);
    color: var(--mh-theme-text, #001d35);
    opacity: 0;
    transition: all 0.3s ease;
}
.portfolio-box:hover .portfolio-modal-link { opacity: 1; }

/* ===== 补充：平台品牌色按钮（源自第五版 purecss-utils.css 色值，适配 Tapsi .mh-btn 结构） ===== */
.mh-btn.platform-bili { background: linear-gradient(to top, #fb7299, #fa5281 33%); border-color: #fb7299; color: #fff; }
.mh-btn.platform-acfun { background: linear-gradient(to top, #fd4c5d, #ec4556 33%); border-color: #fd4c5d; color: #fff; }
.mh-btn.platform-douyin { background: linear-gradient(to top, #363741, #060716 33%); border-color: #fff #fe2c55 #fff #00faf0; color: #fff; }
.mh-btn.platform-zhihu { background: linear-gradient(to top, #06f, #005ce6 33%); border-color: #06f; color: #fff; }
.mh-btn.platform-weibo { background: linear-gradient(to top, #ff8200, #ff5900 33%); border-color: #ff8200; color: #fff; }
.mh-btn.platform-twitter { background: linear-gradient(to top, #1da1f2, #1a91da 33%); border-color: #1da1f2; color: #fff; }
.mh-btn.platform-instagram { background: linear-gradient(to top, #e1306c, #c13584 33%); border-color: #e1306c; color: #fff; }
.mh-btn.platform-youtube { background: linear-gradient(to top, #ff0000, #b20000 33%); border-color: #ff0000; color: #fff; }
.mh-btn.platform-line { background: linear-gradient(to top, #1bd741, #0bb32d 33%); border-color: #1bd741; color: #fff; }
.mh-btn.platform-tiktok { background: linear-gradient(to top, #363741, #060716 33%); border-color: #fff #fe2c55 #fff #00faf0; color: #fff; }
.mh-btn.platform-theme { background: var(--mh-theme); color: var(--mh-theme-text); border-color: var(--mh-theme); }
.mh-btn.platform-btn:hover { filter: brightness(1.08); transform: scale(1.03); transition: all .2s cubic-bezier(.18,.89,.32,2.28); }

@media(max-width:991px) {
    .py-40 {
        padding-top: 5rem !important;
        padding-bottom: 5rem !important;
    }
    .ps-28 {
        padding-left: calc(var(--bs-gutter-x) * .5) !important;
    }
}
@media(min-width:1800px) {
    .ps-28 {
        padding-left: calc(var(--bs-gutter-x) * .5) !important;
    }
}

/* 主色预设色块（下拉菜单内） */
.primary-swatch {
	display: inline-block;
	width: 1rem;
	height: 1rem;
	border-radius: 50%;
	background-color: var(--swatch, transparent);
	border: 1px solid rgba(var(--bs-dark-rgb), .15);
	flex: 0 0 auto;
}


/* 尊重减少动态偏好 */
@media (prefers-reduced-motion: reduce) {
    html { scroll-behavior: auto; }
    *, *::before, *::after { animation-duration: .001s !important; transition-duration: .001s !important; }
}

/* 视觉隐藏但键盘聚焦可见（跳转到主要内容 + 左栏首项） */
.visually-hidden-focusable {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
}
.visually-hidden-focusable:focus {
  position: static;
  width: auto;
  height: auto;
  padding: inherit;
  margin: inherit;
  overflow: visible;
  clip: auto;
  white-space: normal;
}