@font-face {
    font-family: 'Source Han Sans';
    src: url('../fonts/SourceHanSansCN-Regular.otf') format('opentype');
    font-weight: 400;
    font-style: normal;
    font-display: swap;
}

@font-face {
    font-family: 'Source Han Sans';
    src: url('../fonts/SourceHanSansCN-Bold.otf') format('opentype');
    font-weight: 700;
    font-style: normal;
    font-display: swap;
}

@font-face {
    font-family: 'Source Han Serif CN';
    src: url('../fonts/SourceHanSerifCN-SemiBold.otf') format('opentype');
    font-weight: 600;
    font-style: normal;
    font-display: swap;
}

/* ==================== 基础 ==================== */

* {
    margin: 0;
    padding: 0;
    box-sizing: border-box;
    -webkit-tap-highlight-color: transparent;
}

body {
    font-family: 'Source Han Sans', 'PingFang SC', 'Microsoft YaHei', sans-serif;
    background: #E8E8E8;
    width: 100vw;
    height: 100vh;
    display: flex;
    justify-content: center;
    align-items: center;
    overflow: hidden;
    margin: 0;
    padding: 0;
}

.app {
    width: 393px;
    height: 852px;
    background: linear-gradient(167deg, #FFFFFF 4%, #F8F9FA 24%, #B9CAD2 61%);
    position: relative;
    overflow: hidden;
    flex-shrink: 0;
    transform-origin: center center;
    will-change: transform;
}

/* ==================== WebGL 着色器背景 ==================== */
#shader-canvas {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    display: block;
    pointer-events: none;
    z-index: 0;
}

/* ==================== 独立页面（工作经历、详情） ==================== */

.page.standalone {
    position: absolute;
    top: 0;
    left: 0;
    width: 393px;
    height: 852px;
    display: none;
    z-index: 10;
    background: linear-gradient(167deg, #FFFFFF 4%, #F8F9FA 24%, #B9CAD2 61%);
    touch-action: pan-y;
}

.page.standalone.active {
    display: block;
}

.page.standalone.slide-in {
    display: block;
    animation: slideIn 0.3s ease forwards;
    z-index: 12;
}

.page.standalone.slide-in-left {
    display: block;
    animation: slideInLeft 0.3s ease forwards;
    z-index: 12;
}

.page.standalone.slide-out {
    display: block;
    animation: slideOut 0.3s ease forwards;
    z-index: 12;
}

@keyframes slideIn {
    from { transform: translateX(100%); }
    to { transform: translateX(0); }
}

@keyframes slideInLeft {
    from { transform: translateX(-100%); }
    to { transform: translateX(0); }
}

@keyframes slideOut {
    from { transform: translateX(0); }
    to { transform: translateX(100%); }
}
