

:root {
    --g-bg: #F3EBE0;
    --g-bg-hi: #FCFAF5;
    --g-card: #FAF6EF;
    --g-ink: #2A2118;
    --g-label: #3A271C;
    --g-sec: #6C492F;
    --g-mute: #8A7058;
    --g-accent: #C23531;
    --g-accent-deep: #9B2E1F;
    --g-gold: #A8866E;
    --g-line: rgba(168, 134, 110, 0.32);
    --g-line-soft: rgba(168, 134, 110, 0.16);

    --g-serif: "Songti SC", "STSong", "SimSun", "Noto Serif SC", serif;
    --g-sans: "Microsoft YaHei UI", "Microsoft YaHei", "PingFang SC", "Hiragino Sans GB", "Noto Sans SC", sans-serif;
    --g-ease: cubic-bezier(0.22, 0.61, 0.36, 1);
    --g-radius: 0.65rem;
    --g-shadow: 0 1px 0 rgba(255, 255, 255, 0.7) inset, 0 10px 28px rgba(40, 28, 18, 0.06);

    --v3-red: #C23531;
    --v3-red-hi: #D04540;
    --v3-ink: #3A271C;
    --v3-ink-2: #5C3F2A;
    --v3-ink-3: #6C492F;
    --v3-ink-4: #8A7058;
    --v3-gold: #A8866E;
    --v3-gold-line: rgba(168, 134, 110, 0.35);
    --v3-gold-line-soft: rgba(168, 134, 110, 0.18);
    --v3-paper: #F3EBE0;
    --v3-serif: var(--g-serif);
    --v3-sans: var(--g-sans);
}

html,
body.v3-login,
body.v3-home,
body.v3-sat,
body.v3-about,
body.v3-advice,
body.v3-help,
body.v3-video,
body.v3-error,
body.v3-elder,
body.gzd-portal-search-page {
    -webkit-font-smoothing: auto !important;
    -moz-osx-font-smoothing: auto !important;
    text-rendering: auto;
    font-feature-settings: normal;
}

::selection {
    background: rgba(194, 53, 49, 0.16);
    color: var(--g-label);
}

html {
    scrollbar-color: rgba(168, 134, 110, 0.45) transparent;
}

body.v3-login,
body.v3-home,
body.v3-sat,
body.v3-about,
body.v3-advice,
body.v3-help,
body.v3-video,
body.v3-error,
body.v3-elder,
body.gzd-portal-search-page {
    font-family: var(--g-sans);
    color: var(--g-label);
    line-height: 1.7;
    letter-spacing: 0.01em;
}

body.v3-login h1,
body.v3-login h2,
body.v3-sat h1,
body.v3-about h1,
body.v3-advice h1,
body.v3-help h1,
body.v3-video h1,
body.v3-error h1,
body.gzd-portal-search-page .results-archive__title,
body.v3-home .v3-kb__title,
body.v3-home .v3-rescard__title {
    font-family: var(--g-serif);
    font-weight: 650;
    letter-spacing: 0.12em;
    color: var(--g-label);
}

.v3-portal-masthead {
    max-width: min(920px, calc(100% - 2rem));
    margin: 1.1rem auto 1.35rem;
    padding: 0.85rem 1rem 1rem;
    text-align: center;
    position: relative;
}

.v3-portal-masthead h1 {
    margin: 0;
    font-size: clamp(1.35rem, 2.4vw, 1.75rem);
    font-family: var(--g-serif);
    font-weight: 700;
    letter-spacing: 0.28em;
    text-indent: 0.28em;
    color: var(--g-label);
    line-height: 1.35;
}

.v3-portal-masthead .sub {
    margin: 0.55rem 0 0;
    font-size: 0.82rem;
    letter-spacing: 0.18em;
    text-indent: 0.18em;
    color: var(--g-mute);
}

.v3-portal-masthead .sub i {
    display: inline-block;
    width: 1.6rem;
    height: 1px;
    margin: 0 0.55rem;
    vertical-align: middle;
    background: linear-gradient(90deg, transparent, rgba(168, 134, 110, 0.55), transparent);
}

.v3-portal-masthead::after {
    content: "";
    display: block;
    width: min(12rem, 42%);
    height: 0.55rem;
    margin: 0.75rem auto 0;
    transform: scaleX(var(--mast-rule, 1));
    transform-origin: center;
    background:
        radial-gradient(circle at center, rgba(194, 53, 49, 0.7) 0 1.5px, transparent 2px),
        linear-gradient(90deg, transparent, rgba(168, 134, 110, 0.5), transparent);
    background-repeat: no-repeat;
    background-position: center, center;
    background-size: 100% 100%, 100% 1px;
}

body.v3-login .v3-card--frame,
body.v3-sat .v3-card--frame,
body.v3-about .v3-card--frame,
body.v3-advice .v3-card--frame,
body.v3-help .v3-card--frame,
body.v3-video .v3-card--frame,
body.v3-error .v3-card--frame {
    position: relative;
    background:
        linear-gradient(180deg, rgba(252, 250, 245, 0.96), rgba(247, 241, 232, 0.96));
    border: 1px solid var(--g-line);
    border-radius: var(--g-radius);
    box-shadow: var(--g-shadow);
}

body.v3-login .v3-card--frame::before,
body.v3-sat .v3-card--frame::before,
body.v3-about .v3-card--frame::before,
body.v3-advice .v3-card--frame::before,
body.v3-help .v3-card--frame::before,
body.v3-video .v3-card--frame::before,
body.v3-error .v3-card--frame::before {
    content: "";
    position: absolute;
    inset: 0.4rem;
    border: 1px solid var(--g-line-soft);
    border-radius: calc(var(--g-radius) - 0.15rem);
    pointer-events: none;
    z-index: 0;
}

body.v3-login .v3-card--frame > *,
body.v3-sat .v3-card--frame > *,
body.v3-about .v3-card--frame > *,
body.v3-advice .v3-card--frame > *,
body.v3-help .v3-card--frame > *,
body.v3-video .v3-card--frame > *,
body.v3-error .v3-card--frame > * {
    position: relative;
    z-index: 1;
}

body.v3-login .v3-topbar--portal,
body.v3-sat .v3-topbar--portal,
body.v3-error .v3-topbar--portal,
body.gzd-portal-search-page .v3-topbar--portal {
    backdrop-filter: saturate(1.05) blur(10px);
    -webkit-backdrop-filter: saturate(1.05) blur(10px);
    background: linear-gradient(
        180deg,
        rgba(252, 250, 245, 0.92) 0%,
        rgba(243, 235, 224, 0.88) 100%
    ) !important;
    border-bottom: 1px solid rgba(168, 134, 110, 0.28);
    box-shadow: 0 1px 0 rgba(255, 255, 255, 0.55);
}

body.v3-login .v3-topbar.is-scrolled,
body.v3-sat .v3-topbar.is-scrolled,
body.v3-error .v3-topbar.is-scrolled,
body.gzd-portal-search-page .v3-topbar.is-scrolled {
    box-shadow: 0 8px 22px rgba(40, 28, 18, 0.06);
}

body.v3-login .v3-hero-slogan {
    font-family: var(--g-serif);
    font-size: clamp(1.05rem, 2vw, 1.25rem);
    letter-spacing: 0.28em;
    text-indent: 0.28em;
    color: var(--g-sec);
    font-weight: 600;
}

body.v3-login .v3-login-title {
    font-family: var(--g-serif);
    letter-spacing: 0.22em;
    text-indent: 0.22em;
    color: var(--g-label);
}

body.v3-login .v3-login-sub {
    color: var(--g-mute);
    letter-spacing: 0.08em;
}

body.v3-login .v3-input,
body.v3-login input[type="text"],
body.v3-login input[type="password"] {
    border: 1.5px solid rgba(108, 73, 47, 0.18) !important;
    border-radius: 0.55rem !important;
    background: rgba(252, 250, 245, 0.95) !important;
    color: var(--g-label) !important;
    min-height: 2.75rem;
    transition: border-color 0.25s var(--g-ease), box-shadow 0.25s var(--g-ease);
}

body.v3-login .v3-input:focus,
body.v3-login input[type="text"]:focus,
body.v3-login input[type="password"]:focus {
    border-color: rgba(194, 53, 49, 0.42) !important;
    outline: none;
}

body.v3-login .v3-btn--primary,
body.v3-login button[type="submit"].v3-btn {
    background: linear-gradient(180deg, #D04540, var(--g-accent-deep)) !important;
    border: none !important;
    border-radius: 0.55rem !important;
    letter-spacing: 0.2em;
    font-weight: 700;
    box-shadow: 0 6px 16px rgba(155, 46, 31, 0.22);
}

body.gzd-portal-search-page:not(.gzd-portal-elder-page) .v3-hit {
    border: 1px solid rgba(168, 134, 110, 0.2);
    border-radius: 0.55rem;
    background: rgba(252, 250, 245, 0.72);
    padding: 0.85rem 1rem;
    transition: border-color 0.25s var(--g-ease), box-shadow 0.25s var(--g-ease), background 0.25s var(--g-ease);
}

body.gzd-portal-search-page:not(.gzd-portal-elder-page) .v3-hit + .v3-hit {
    margin-top: 0.55rem;
}

body.gzd-portal-search-page:not(.gzd-portal-elder-page) .v3-hit:hover {
    border-color: rgba(194, 53, 49, 0.22);
    background: #FFFCF7;
    box-shadow: 0 8px 20px rgba(40, 28, 18, 0.05);
}

body.gzd-portal-search-page:not(.gzd-portal-elder-page) .v3-hit__title {
    font-family: var(--g-serif);
    font-size: 1.05rem;
    font-weight: 700;
    color: var(--g-accent);
    letter-spacing: 0.04em;
    line-height: 1.45;
}

body.gzd-portal-search-page:not(.gzd-portal-elder-page) .v3-hit__meta {
    color: var(--g-sec);
    font-size: 0.88rem;
}

body.gzd-portal-search-page:not(.gzd-portal-elder-page) .search-sidebar,
body.gzd-portal-search-page:not(.gzd-portal-elder-page) .results-archive {
    border: 1px solid var(--g-line);
    border-radius: 0.75rem;
    background: rgba(252, 250, 245, 0.9);
    box-shadow: var(--g-shadow);
}

body.gzd-portal-search-page:not(.gzd-portal-elder-page) .pagination-btn.active {
    background: var(--g-accent) !important;
    border-color: var(--g-accent) !important;
    color: #fff !important;
}

body.gzd-portal-elder-page .v3-hit__title {
    font-family: var(--g-serif);
    font-weight: 800;
    letter-spacing: 0.05em;
}

body.gzd-portal-elder-page .v3-hit__meta,
body.gzd-portal-elder-page .v3-hit__field em {
    color: var(--g-label);
}

body.v3-home .v3-searchpanel {
    border-color: rgba(168, 134, 110, 0.35);
    box-shadow:
        0 1px 0 rgba(255, 255, 255, 0.65) inset,
        0 14px 36px rgba(40, 28, 18, 0.07);
}

body.v3-home .v3-input,
body.v3-home .v3-searchline input {
    color: var(--g-label);
}

body.v3-home .v3-kb__item,
body.v3-home .v3-res {
    transition: transform 0.28s var(--g-ease), border-color 0.28s var(--g-ease), background 0.28s var(--g-ease);
}

body.v3-error .v3-card,
body.v3-error .v3-main {
    text-align: center;
}

body.v3-error h1 {
    font-family: var(--g-serif);
    letter-spacing: 0.2em;
    color: var(--g-label);
}

body.v3-error p,
body.v3-sat .v3-main p {
    color: var(--g-sec);
    line-height: 1.75;
}

body.v3-help .v3-main li,
body.v3-advice .v3-main label {
    color: var(--g-label);
}

body.v3-login a,
body.v3-sat a,
body.v3-error a,
body.gzd-portal-search-page a {
    text-underline-offset: 0.18em;
}

body.v3-login :focus-visible,
body.v3-sat :focus-visible,
body.v3-home :focus-visible,
body.v3-error :focus-visible,
body.gzd-portal-search-page :focus-visible {
    outline: 2px solid rgba(194, 53, 49, 0.45);
    outline-offset: 2px;
}

.v3-footer--atelier {
    border-top: 1px solid rgba(168, 134, 110, 0.22);
}

.v3-footer__link-lab {
    letter-spacing: 0.12em;
    color: var(--g-sec);
}

.v3-footer__follow {
    font-family: var(--g-sans);
}

@media (prefers-reduced-motion: reduce) {
    body.v3-home .v3-kb__item,
    body.v3-home .v3-res,
    body.gzd-portal-search-page .v3-hit {
        transition: none !important;
    }
}

@media (max-width: 640px) {
    .v3-portal-masthead h1 {
        letter-spacing: 0.18em;
        text-indent: 0.18em;
    }

    body.v3-login .v3-card--frame::before,
    body.v3-sat .v3-card--frame::before {
        inset: 0.28rem;
    }
}
