* {
    margin: 0;
    padding: 0;
    font-family: Georgia, "KaiTi", sans-serif;
}


/* ———————————————————— main ———————————————————— */
section {
    box-sizing: border-box;
}

section .content {
    width: 100%;
    max-width: 80vw;
    padding: 0 6.5vw;
    margin: auto;
    box-sizing: border-box;
}

h2 {
    color: #28282A;
    text-align: left;
    font-size: 1.5vw;
    font-weight: normal;
    padding: 5vh 0 5vh;
}

h3 {
    color: #28282A;
    text-align: left;
    font-size: 1.3vw;
    font-weight: normal;
    padding:  0 0 2.5vh 0;
}

p {
    color: #28282A;
    font-size: 1.1vw;
    line-height: 1.5vw;
    font-weight: lighter;
    text-align: justify; 
    /* margin-bottom: 2vh; */
}

strong {
    font-weight: bold;
    /* color: #ffffe0; */
}

a {
    color: #9191c4;
    text-decoration: none;
    font-weight: lighter;
    transition: all 0.3s ease;
}
a:hover {
    color: #191955;
    text-decoration: underline;
}

/* ———————————————————— hero (header+intro) ———————————————————— */
/* .hero {
    background: linear-gradient(to top, #051937, #004d7a, #008793, #00bf72, #a8eb12);
    width: 100vw;
    min-height: 100vh;
    height: 100dvh;
    box-sizing: border-box;
} */

/* ———————————————————— header ———————————————————— */

header {
    background: rgba(#F5F5F3,0.5);
    /* background-image:linear-gradient(to bottom, #148a8e, #259d93, #41b094); */
    backdrop-filter: blur(8px);
    -webkit-backdrop-filter: blur(8px);
    height: 10vh;
    width: 100%;
    position: fixed;
    border-bottom: #28282A solid 1px;
}

header h1, header p {
    position: absolute;
    top: 0;
    line-height: 10vh;
    font-weight: bold;
}
header h1 { left: 8.5vw; font-size: 1.3vw; }
header p { left: 5vw; }

header ul {
    position: absolute;
    right: 8.5vw;
    top: 0;
    line-height: 10vh;
}

header li {
    display: inline;
    margin-left: 2vw;
}

header a {
    color: #28282A;
}

header li a {
    font-size: 1.0vw;
}
header a:hover {
    color: #8787d3;
}

/* 汉堡按钮默认隐藏 */
.menu-toggle {
  display: none;
  font-size: 6vw;
  cursor: pointer;
  user-select: none;
}

/* ———————————————————— intro ———————————————————— */
.intro {
    /* background-image: linear-gradient(to bottom,  #62c292, #86d38d, #70ca8d, #59c18d, #40b78d, #008f8d, #00667f, #003e60, #051937);     */
    background-color: #F5F5F3;
    width: 100%;
    height: 100vh;
    display: flex;
    align-items: center;
    justify-content: center;
}

.intro .content {
    display: flex;
    flex-direction: row;
    align-items: center;
    justify-content: center;
    padding-top: 5vh;
}

.intro img {
    width:35%;
    /* max-width: 400px; */
    border-radius: 2.5%;
    object-fit: cover;
    margin-left: 10%;
    box-shadow: 0 8px 32px 0 rgba(0,0,0,0.18), 0 1.5px 6px 0 rgba(0,0,0,0.12);
}

.intro .text-container {
    display: flex;
    flex-direction: column;
    justify-content: space-between;
    flex-grow: 1;
}

.intro h2 { 
    font-size: 1.8vw; 
    font-weight: normal; 
    margin: 0;
}
.intro p {
    /* font-weight: lighter;  */
    /* text-align: justify; */
    margin: 0;
}

/* .intro a {
    color: #ffffad;
}

.intro a:hover {
    color: #ffffff;
} */

.intro .links, .link_unit {
    display: flex;
    justify-content: flex-start;
    align-items: center;
    gap: 15px;
    margin-top: 30px;
    text-align: left;
}

.link_unit { gap: 5px; margin-top: 0; }
.link_unit img {
    width: 20px;
    border-radius: 2.5%;
    object-fit: cover;
    margin: 0;
    box-shadow: none;
}

/* ———————————————————— separator ———————————————————— */

.dot-separator {
    text-align: center;
    padding-top: 5vh;
    letter-spacing: 10px; /* 点之间的间距 */
}
.dot-separator::before {
    content: "· · ·"; /* 或者 "..." */
    color: #28282A; /* 点的颜色 */
    font-size: 3em; /* 点的大小 */
    letter-spacing: 15px; /* 点之间的间距 */
}

/* ———————————————————— interests ———————————————————— */

.interests {
    background-color: #F5F5F3;
    width: 100%;
    padding-bottom: 10vh;
}

.interests .content {
    display: flex;
    flex-direction: column;
}

.interests h2 {
    /* color: #F7F8F4; */
    text-align: left;
    font-weight: lighter;
    padding-bottom: 10vh;
}

.interest_container {
    display: flex;
    align-items: center;
    justify-content: space-between;
    /* max-width: 1200px; */
    margin: 0 auto;
    width: 100%;
}

.interests p {
    /* color: #F7F8F4; */
    /* font-size: 1.1em; */
    /* font-weight: lighter; */
    /* line-height: 1.6em; */
    /* padding-left: 5vw; */
    width: 50%;
    text-align: center;
}

.interests img {
    width: 35%;
    max-width: 500px;
    margin-left: 6vw;
    border-radius: 2.5%;
    object-fit: cover;
}

/* ———————————————————— updates ———————————————————— */
.updates {
    background-color: #F5F5F3;
    /* background-image: linear-gradient(to bottom, #051937, #004f6c); */
    width: 100%;
}

.news_list {
    display: flex;
    flex-direction: column;
    gap: 10px;
    padding-bottom: 5vh;
}

.update {
    padding: 10px;
    /* background-color: #fff; */
    border-radius: 8px;
    border-left: 5px solid rgba(40, 40, 42, 0.5);
    /* border-bottom: 5px solid rgba(255,255,255,0.5); */
}
.update time {
    display: block;
    font-size: 0.9vw;
    color: #28282A;
    margin-bottom: 8px;
}
.update p {
    /* font-size: 1.1em; */
    line-height: 1.5;
    /* color: #333; */
}

/* ———————————————————— projects ———————————————————— */
.projects {
    /* background-image: linear-gradient(to bottom, #004f6c, #004f73, #004e79, #004d7f, #034c84, #154984, #214783, #2b4482, #32407d, #373c77, #3b3872, #3e346c); */
    background-color: #F5F5F3;
    padding-bottom: 5vh;
}

.projects p {
    /* color: #FF7E6F; */
    text-align: left;
    /* font-size: 1.2em; */
    padding-bottom: 2vh;
}

.display_row {
    display: flex;
    flex-wrap: wrap;
    gap: 20px;
    justify-content: flex-start;
    padding-bottom: 5vh;
}

.project {
    display: flex;
    flex-direction: column;
    text-align: left;
    width: calc(33.333% - 14px);
    /* background-color: rgba(40, 40, 42, 0.5); */
    border: #28282A solid 0.1vw;
    border-radius: 10px;
    padding: 10px 10px 3vh;
    box-sizing: border-box;
    overflow: hidden;
}

.project img {
    width: 100%;
    height: 27vh;
    object-fit: cover;
    border-radius: 2.5%;
}

.project h3 {
    /* color: #fff; */
    margin: 10px 0;
    /* font-size: 1.6em; */
    font-weight: bold;
}

.project .author, .project .state {
    /* color: #F7F8F4; */
    /* font-size: 1.1em; */
    font-weight: lighter;
    margin-bottom: 0;
}
.project .author { font-style: italic; }

.project .links {
    display: flex;
    justify-content: flex-start;
    gap: 15px;
    text-align: left;
}

.project a {
    /* color: #ffffad; */
    font-size: 1.1vw;
}

/* ———————————————————— footer ———————————————————— */
footer {
    background-color: #F5F5F3;
    border-top: #28282A solid 1px;
    /* color: #F7F8F4; */
    height: 20vh;
    width: 100%;
    display: flex;
    position: relative;
}
footer p {
    color: #28282A;
    position: absolute;
    font-size: 0.8vw;
    left: 15%;
    top: 30%;
}


/* ———————— 响应式：手机适配 ———————— */
@media (max-width: 768px) {
    /* 显示汉堡按钮 */
    .menu-toggle {
        display: block;
        font-size: 6vw;
        cursor: pointer;
        order: 1; /* 左侧 */
    }

    /* header 内部排列 */
    header {
        display: flex;
        align-items: center;
        justify-content: flex-start; /* 用 order 控制位置 */
        padding: 0 2vw;
        height: 48px;
    }

    /* h1 放右侧 */
    header h1 {
        position: static;  /* 或直接删掉 absolute */
        left: auto;        /* 清除 left 定位 */
        order: 2;
        margin-left: auto; /* 推到最右 */
        margin-right: 5vw;
        line-height: 54px;
        font-size: 4vw;
    }

    /* 导航菜单默认隐藏 */
    header nav ul {
        display: none;
        flex-direction: column;
        position: absolute;
        top: 48px;
        right: 0;
        width: 100%;
        background: #f5f5f5;
        border-top: 1px solid #ccc;
        padding: 10px 0;
        list-style: none;
    }

    /* 展开时显示 */
    header nav ul.active {
        display: flex;
    }

    header nav li {
        text-align: center;
        padding: 10px 0;
    }

    header li a {
        font-size: 3.5vw;
    }
    .intro {
        flex-direction: column;
        height: auto;
        min-height: 80vh;
        padding-top: 48px;
    }
    .intro .content {
        display: flex;
        flex-direction: column;  /* 上下排布 */
        align-items: center;
        justify-content: center;
        gap: 2vh;
    }

    .intro img {
        width: 80vw;
        margin: 2vh 0 0 0;
    }
    .intro h2 {
        font-size: 4vw;
    }
    .intro p {
        font-size: 3.5vw;
        line-height: 5vw;
    }
    .interests .content,
    .interest_container {
        flex-direction: column;
        align-items: flex-start;
    }
    .link_unit img {
        width: 20px;
    }
    .interests img {
        width: 90vw;
        margin-left: 0;
        margin-bottom: 2vh;
        max-width: 100%;
    }
    .interests p {
        width: 100%;
        padding-left: 0;
        font-size: 3.5vw;
        text-align: left;
    }
    .projects .display_row {
        flex-direction: column;
        gap: 3vh;
    }
    .project {
        width: 100%;
        margin-bottom: 2vh;
        padding: 2vw 2vw 6vw;
    }
    .project h3 {
        font-size: 4vw;
    }
    .project .author, .project .state {
        font-size: 3vw;
    }
    .project a {
        font-size: 3vw;
    }
    h2 {
        font-size: 6vw;
        padding: 4vw 0 2vw;
    }
    h3 {
        font-size: 4vw;
        padding: 0 0 2vw 0;
    }
    p, .update p {
        font-size: 3.5vw;
        line-height: 5vw;
    }
    .update time {
        font-size: 3vw;
        margin-bottom: 4px;
    }
    .dot-separator::before {
        font-size: 7vw;
    }
    footer {
        height: auto;
        min-height: 60px;
        padding: 2vw 0;
    }
    footer p {
        font-size: 3vw;
        padding-left: 5vw;
        top: 10%;
        position: static;
        text-align: left;
    }
}