:root {
    --ink: #20242b;
    --muted: #858b92;
    --orange: #ff7214;
    --paper: #f6f8fa;
    --nav-h: 80px
}

* {
    box-sizing: border-box
}

html,
body {
    margin: 0;
    width: 100%;
    height: 100%;
    overflow: hidden;
    font-family: 'Noto Sans SC', 'Microsoft YaHei', sans-serif;
    color: var(--ink);
    background: var(--paper)
}

a {
    color: inherit;
    text-decoration: none
}

button {
    font: inherit
}

.site-shell {
    height: 100%;
    position: relative
}

.site-header {
    height: var(--nav-h);
    position: fixed;
    z-index: 30;
    top: 0;
    left: 0;
    right: 0;
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 0 clamp(28px, 6.1vw, 118px);
    background: rgba(255, 255, 255, .96);
    transition: background .35s, color .35s
}

.brand {
    display: flex;
    align-items: center;
    height: 48px
}

.brand img {
    width: 142px;
    height: auto;
    display: block
}

.brand-light {
    display: none !important
}

.primary-nav {
    display: flex;
    align-items: center;
    gap: clamp(26px, 3vw, 56px);
    height: 100%;
    font-size: 16px
}

.primary-nav a {
    position: relative;
    white-space: nowrap
}

.primary-nav a::after {
    content: '';
    position: absolute;
    left: 0;
    right: 0;
    bottom: -11px;
    margin: auto;
    width: 0;
    height: 2px;
    background: var(--orange);
    transition: width .25s
}

.primary-nav a:hover::after,
.primary-nav a.is-active::after {
    width: 100%
}

.menu-toggle {
    display: none
}

.page-scroller {
    height: 100%;
    overflow-y: auto;
    overflow-x: hidden;
    scroll-snap-type: y mandatory;
    scroll-behavior: smooth;
    overscroll-behavior-y: none
}

.page,
.site-footer {
    position: relative;
    scroll-snap-align: start;
    scroll-snap-stop: always
}

.page {
    min-height: 100vh;
    padding-top: var(--nav-h);
    overflow: hidden
}

.home-page {
    background: #080a12;
    color: #fff
}

.home-backdrop {
    position: absolute;
    inset: 0;
    background: url('assets/homeBg.png') center center/cover no-repeat;
    opacity: .96
}

.home-copy {
    position: absolute;
    z-index: 2;
    inset: 0;
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;
    padding-top: 5vh
}

.home-copy .eyebrow {
    font: 500 clamp(12px, 1.1vw, 18px)/1 'Arial Narrow', 'Microsoft YaHei', sans-serif;
    letter-spacing: .42em;
    color: #fffb;
    position: absolute;
    top: 29%;
    left: 0;
    right: 0;
    text-align: center
}

.home-copy h1 {
    font: 700 clamp(58px, 9vw, 172px)/.9 'Arial Narrow', 'Microsoft YaHei', sans-serif;
    letter-spacing: .025em;
    font-style: italic;
    margin: 0;
    text-transform: none;
    color: #fff
}

.slogan {
    font-size: clamp(20px, 2.6vw, 47px);
    font-weight: 500;
    letter-spacing: .56em;
    margin: 34px 0 0;
    padding-left: .56em
}

.home-rule {
    display: flex;
    align-items: center;
    gap: 18px;
    margin-top: 42px;
    color: #788083;
    font: 500 12px 'Arial Narrow', 'Microsoft YaHei', sans-serif;
    letter-spacing: .35em
}

.home-rule i {
    display: block;
    width: 95px;
    height: 1px;
    background: #667074
}

.home-rule i:first-child {
    background: var(--orange)
}

.scroll-cue {
    position: absolute;
    z-index: 2;
    bottom: 7%;
    left: 50%;
    transform: translateX(-50%);
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 8px;
    color: #fff
}

.mouse {
    width: 19px;
    height: 31px;
    border: 2px solid #fff;
    border-radius: 12px;
    position: relative
}

.mouse::after {
    content: '';
    position: absolute;
    top: 5px;
    left: 7px;
    width: 2px;
    height: 6px;
    border-radius: 2px;
    background: #fff
}

.arrow {
    font-size: 25px;
    line-height: 1
}

.home-side-note {
    position: absolute;
    right: 2.5%;
    bottom: 11%;
    z-index: 2;
    font: 400 10px 'Arial Narrow';
    letter-spacing: .32em;
    color: #8a9297;
    writing-mode: vertical-rl
}

.side-rail {
    position: absolute;
    z-index: 4;
    left: clamp(26px, 3.4vw, 66px);
    top: 18%;
    bottom: 10%;
    width: 40px;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 28px
}

.rail-line {
    width: 7px;
    height: 185px;
    background: var(--orange);
    display: block
}

.rail-label {
    font: 500 12px 'Arial Narrow';
    letter-spacing: .23em;
    color: #bdc5cc;
    writing-mode: vertical-rl
}

.side-rail-dark .rail-label {
    color: #707983
}

.products-page {
    background: #f7f9fa
}

.product-art {
    position: absolute;
    left: -1%;
    top: 50%;
    transform: translate(0, -50%);
    width: min(63vw, 1000px);
    height: 100%;
    display: flex;
    align-items: center;
}

.product-art::after {
    content: '';
    position: absolute;
    inset: 0;
    background: linear-gradient(90deg, transparent 38%, rgba(247, 249, 250, .35) 55%, #f7f9fa 78%);
    pointer-events: none
}

.product-art img {
    width: 100%;
    height: auto;
    max-height: 110%;
    object-fit: contain;
    object-position: left bottom
}

.product-content {
    position: absolute;
    z-index: 3;
    left: 52%;
    top: 50%;
    transform: translate(0, -50%);
    width: min(41vw, 680px)
}

.eyebrow {
    font: 500 15px 'Arial Narrow', 'Microsoft YaHei', sans-serif;
    letter-spacing: .38em;
    color: #98a0a6;
    margin: 0
}

.eyebrow.orange {
    color: var(--orange)
}

.product-en {
    font: 500 15px 'Arial Narrow';
    letter-spacing: .23em;
    color: #b1b8bd;
    margin: 0 0 40px
}

.product-text {
    font-size: clamp(14px, 1.1vw, 18px);
    line-height: 2.15;
    color: #5d6267;
    margin: 0 0 15px
}

.product-meta {
    display: flex;
    gap: 20px;
    border-top: 1px solid #d7dbde;
    margin-top: 37px;
    padding-top: 17px;
    color: #899198;
    font-size: 13px;
    letter-spacing: .08em
}

.product-meta span:first-child {
    color: var(--orange)
}

.about-page {
    background: #f6f8fa
}

.about-pattern {
    position: absolute;
    inset: 0;
    background: radial-gradient(circle at 84% 34%, #e7eaed 0 2px, transparent 2px), radial-gradient(circle at 84% 34%, transparent 0 85px, #e7eaed 86px, transparent 87px);
    background-size: 27px 27px;
    opacity: .38
}

.about-switcher {
    position: absolute;
    z-index: 5;
    left: clamp(84px, 6.2vw, 120px);
    top: 29%;
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 25px
}

.about-tab {
    border: 0;
    background: transparent;
    padding: 0;
    text-align: left;
    color: #a1a6aa;
    cursor: pointer;
    transition: color .25s, transform .25s
}

.about-tab span {
    display: block;
    font: 600 16px 'Arial Narrow';
    letter-spacing: .48em;
    margin-bottom: 5px
}

.about-tab strong {
    font-size: 32px;
    letter-spacing: .04em
}

.about-tab.is-active {
    color: #07090c;
    transform: translateX(4px)
}

.switcher-line {
    height: 70px;
    width: 1px;
    background: #737a80;
    margin-left: 8px
}

.about-panels {
    position: absolute;
    left: calc(300px + 5%);
    right: 5%;
    top: 20%;
    bottom: 9%;
    max-width: 1100px;
}

.about-panel {
    display: none;
    height: 100%;
    animation: panelIn .45s ease both
}

.about-panel.is-active {
    display: block
}

@keyframes panelIn {
    from {
        opacity: 0;
        transform: translateX(18px)
    }

    to {
        opacity: 1;
        transform: none
    }
}

.story-card {
    position: absolute;
    top: 18%;
    left: 3%;
    right: 8%;
    padding: 36px 5% 34px;
    background: #fff;
    border: 1px solid #d9dde0;
    box-shadow: 0 12px 28px #28313b12
}

.story-card h3 {
    text-align: center;
    font-size: 25px;
    margin: 0 0 31px
}

.story-card p {
    font-size: 16px;
    line-height: 2.1;
    margin: 0 0 9px;
    color: #4b5055
}

.story-card em {
    font-style: normal;
    color: var(--orange);
    font-weight: 700
}

.timeline {
    height: 100%;
    padding-top: 11%
}

.timeline-track {
    display: flex;
    align-items: center;
    justify-content: space-around;
    position: relative;
    margin: 0 2% 37px;
    color: #c5cbd0
}

.timeline-track::before {
    content: '';
    position: absolute;
    left: 0;
    right: 0;
    top: 50%;
    height: 1px;
    background: #d2d7da
}

.year {
    font-size: 25px;
    font-weight: 700;
    position: relative;
    background: #f6f8fa;
    padding: 0 18px
}

.year.active {
    font-size: 42px;
    color: #333
}

.year.active::after {
    content: '◆';
    font-size: 14px;
    color: #333;
    position: absolute;
    left: 50%;
    top: 47px;
    transform: translateX(-50%)
}

.history-feature {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 28px
}

.history-feature img {
    width: min(39vw, 600px);
}

.history-feature strong {
    font: 700 48px 'Arial Narrow';
    color: #333
}

.history-feature p {
    font-size: 16px;
    line-height: 1.9;
    max-width: 240px
}

.history-list {
    display: none
}

.contact-page {
    background: #eef2f7
}

.map-layer {
    position: absolute;
    inset: 0;
    background: url('assets/map.png') center top/cover no-repeat
}

.contact-wash {
    position: absolute;
    inset: 0;
    /* background: linear-gradient(180deg, #eef2f7aa 0%, #f4f7f9d9 76%, #f4f7f9 100%) */
}

.contact-card {
    position: absolute;
    z-index: 2;
    top: 28%;
    left: 21.3%;
    right: 21.3%;
    min-height: 290px;
    padding: 45px 8%;
    display: flex;
    justify-content: space-between;
    align-items: center;
    background: #ffffffd9;
    border: 1px solid #dce1e5;
    box-shadow: 0 14px 25px #45515d16
}

.contact-info h2 {
    font-size: 48px;
    margin: 8px 0 12px
}

.short-rule {
    display: block;
    width: 60px;
    height: 4px;
    background: var(--orange);
    margin-bottom: 32px
}

.contact-info dl {
    margin: 0
}

.contact-info dl div {
    display: flex;
    gap: 15px;
    margin: 12px 0;
    font-size: 17px
}

.contact-info dt {
    color: #656b70
}

.contact-info dd {
    margin: 0;
    color: #3f4448
}

.qr-wrap {
    text-align: center
}

.qr-wrap img {
    display: block;
    width: 196px;
    height: 196px;
    border: 1px solid #bcc2c6
}

.qr-wrap span {
    display: block;
    font-size: 12px;
    color: #90969b;
    margin-top: 8px
}

.site-footer {
    height: 360px;
    background: #20242b;
    color: #fff;
    scroll-snap-align: start
}

.footer-inner {
    height: 100%;
    position: relative;
    max-width: 1280px;
    margin: 0 auto;
    padding: 58px 42px
}

.footer-links {
    display: flex;
    gap: 38px;
    font-size: 16px
}

.footer-links a:hover {
    color: var(--orange)
}

.footer-details {
    position: absolute;
    left: 42px;
    bottom: 34px;
    color: #c5c9cc;
    font-size: 11px;
    line-height: 2
}

.footer-details p {
    margin: 0
}

.footer-brand {
    position: absolute;
    right: 42px;
    bottom: 38px;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 12px;
    color: #e8ebed;
    font-size: 22px
}

.footer-brand img {
    width: 156px;
    filter: brightness(1.6)
}

.page-dots {
    position: fixed;
    z-index: 20;
    right: 25px;
    top: 50%;
    display: flex;
    flex-direction: column;
    gap: 11px;
    transform: translateY(-50%)
}

.page-dots button {
    width: 7px;
    height: 7px;
    border: 0;
    padding: 0;
    background: #aeb5ba;
    border-radius: 50%;
    cursor: pointer;
    transition: transform .25s, background .25s
}

.page-dots button.is-active {
    background: var(--orange);
    transform: scale(1.8)
}

@media (max-width:900px) {
    :root {
        --nav-h: 65px
    }

    .site-header {
        padding: 0 20px
    }

    .brand img {
        width: 118px
    }

    .primary-nav {
        position: absolute;
        top: var(--nav-h);
        left: 0;
        right: 0;
        height: auto;
        padding: 16px 20px 20px;
        display: none;
        flex-direction: column;
        align-items: flex-start;
        gap: 17px;
        background: #fff;
        border-top: 1px solid #eee;
        box-shadow: 0 10px 22px #00000012
    }

    .primary-nav.is-open {
        display: flex
    }

    .menu-toggle {
        display: flex;
        position: relative;
        flex-direction: column;
        gap: 4px;
        width: 32px;
        height: 30px;
        padding: 3px 0;
        border: 0;
        background: transparent;
        align-items: flex-end;
        cursor: pointer
    }

    .menu-toggle span {
        display: block;
        width: 22px;
        height: 2px;
        background: currentColor
    }

    .menu-toggle span:nth-child(2) {
        width: 16px
    }

    .menu-toggle b {
        position: absolute;
        right: 39px;
        top: 7px;
        font-size: 12px;
        font-weight: 500
    }

    .page {
        padding-top: var(--nav-h);
        min-height: 100svh
    }

    .page-dots {
        right: 12px
    }

    .home-copy {
        padding: 0 22px 6vh
    }

    .home-copy .eyebrow {
        top: 28%;
        font-size: 10px;
        letter-spacing: .28em
    }

    .home-copy h1 {
        font-size: clamp(48px, 15vw, 100px);
        text-align: center
    }

    .slogan {
        font-size: clamp(18px, 5.3vw, 31px);
        letter-spacing: .35em;
        padding-left: .35em;
        margin-top: 23px
    }

    .home-rule {
        margin-top: 27px;
        gap: 8px;
        font-size: 9px
    }

    .home-rule i {
        width: 35px
    }

    .home-side-note {
        display: none
    }

    .side-rail {
        display: none
    }

    .product-art::after {
        background: linear-gradient(90deg, transparent 25%, #f7f9fad9 82%)
    }

    .product-en {
        font-size: 12px;
        margin-bottom: 19px
    }

    .product-text {
        font-size: 13px;
        line-height: 1.9;
        margin-bottom: 8px
    }

    .product-meta {
        margin-top: 18px;
        padding-top: 11px;
        font-size: 11px
    }

    .about-switcher {
        left: 30px;
        top: 16%;
        gap: 13px
    }

    .about-tab span {
        font-size: 11px;
        letter-spacing: .3em
    }

    .about-tab strong {
        font-size: 22px
    }

    .switcher-line {
        height: 43px;
        margin-left: 5px
    }

    .about-panels {
        left: 20px;
        right: 20px;
        top: 31%;
        bottom: 7%
    }

    .story-card {
        position: relative;
        top: auto;
        left: auto;
        right: auto;
        padding: 22px 18px 19px;
        max-height: calc(100% - 75px);
        overflow: auto
    }

    .story-card h3 {
        font-size: 18px;
        line-height: 1.5;
        margin-bottom: 15px
    }

    .story-card p {
        font-size: 13px;
        line-height: 1.9;
        margin-bottom: 8px
    }

    .timeline {
        padding-top: 0
    }

    .timeline-track {
        margin: 0 2% 22px
    }

    .year {
        font-size: 17px;
        padding: 0 8px
    }

    .year.active {
        font-size: 28px
    }

    .year.active::after {
        top: 33px;
        font-size: 9px
    }

    .history-feature {
        display: block
    }

    .history-feature img {
        width: 100%;
    }

    .history-feature strong {
        display: block;
        font-size: 34px;
        margin-top: 12px
    }

    .history-feature p {
        font-size: 13px;
        line-height: 1.7;
        margin: 3px 0 0
    }

    .history-list {
        display: block;
        margin-top: 18px;
        border-top: 1px solid #d6dadd
    }

    .history-list div {
        display: flex;
        gap: 15px;
        padding: 9px 0;
        border-bottom: 1px solid #d6dadd;
        font-size: 12px
    }

    .history-list b {
        color: var(--orange);
        width: 36px
    }

    .contact-card {
        top: 15%;
        left: 20px;
        right: 20px;
        min-height: 0;
    }

    .contact-info h2 {
        font-size: 35px;
        margin: 5px 0 10px
    }

    .short-rule {
        height: 3px;
        width: 45px;
        margin-bottom: 22px
    }

    .contact-info dl div {
        gap: 8px;
        margin: 10px 0;
        font-size: 13px;
        flex-wrap: wrap
    }

    .contact-info dd {
        word-break: break-all
    }

    .qr-wrap {
        /* margin: 22px auto 0 */
    }

    .qr-wrap img {
        width: 145px;
        height: 145px;
        margin: auto
    }

    .qr-wrap span {
        font-size: 11px
    }

    .site-footer {
        height: 300px
    }

    .footer-inner {
        padding: 34px 22px
    }

    .footer-links {
        gap: 17px;
        flex-wrap: wrap;
        font-size: 13px
    }

    .footer-details {
        left: 22px;
        right: 22px;
        bottom: 94px;
        font-size: 9px;
        line-height: 1.9
    }

    .footer-brand {
        right: 22px;
        bottom: 24px;
        gap: 6px;
        font-size: 17px
    }

    .footer-brand img {
        width: 110px
    }
}

@media (prefers-reduced-motion:reduce) {
    .page-scroller {
        scroll-behavior: auto
    }

    .about-panel {
        animation: none
    }
}

.site-header.header-dark {
    background: rgba(4, 5, 10, .88);
    color: #fff
}

.site-header.header-dark .brand-dark {
    display: none
}

.site-header.header-dark .brand-light {
    display: block !important
}

.home-copy h1 img {
    display: block;
    width: min(51.3vw, 985px);
    height: auto
}

.home-copy .slogan img {
    display: block;
    width: min(44.5vw, 854px);
    height: auto
}

.home-copy .slogan {
    margin: 34px 0 0;
    padding: 0
}

.scroll-cue img:first-child {
    width: 24px;
    height: 37px
}

.scroll-cue img:last-child {
    width: 12px;
    height: 18px
}

.home-side-rail,
.product-side-rail,
.about-side-rail {
    position: absolute;
    z-index: 5;
    left: clamp(28px, 3.3vw, 64px);
    top: 18%;
    width: 17px;
    height: 717px;
    max-height: 76%;
    object-fit: contain;
    object-position: top
}

.home-side-note {
    position: absolute;
    right: 2.5%;
    bottom: 11%;
    z-index: 2;
    width: 12px;
    height: 211px;
    object-fit: contain
}

.product-side-rail {
    top: 15%;
}

.about-side-rail {
    top: 14%;
}

.product-title {
    display: block;
    width: min(34vw, 560px);
    height: auto;
    margin-bottom: 42px
}

.product-en {
    display: none
}

.about-tab {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 5px
}

.about-tab img {
    display: block;
    height: auto
}

.about-tab img:first-child {
    width: 205px
}

.about-tab img:last-child {
    width: 142px
}

.timeline-track {
    height: 61px
}

.timeline-track>img {
    position: absolute;
    z-index: -1;
    left: 0;
    right: 0;
    top: 0;
    width: 100%;
    height: 61px
}

.timeline-track .year {
    background: transparent
}