.company-bar { height: 38px; border-bottom: 1px solid #eadfce; color: var(--ink); background: #fffdf8; } .company-bar .container { display: flex; align-items: center; justify-content: space-between; gap: 24px; height: 100%; font-size: 18px; font-weight: 800; letter-spacing: .12em; } .company-bar strong { flex: 0 0 auto; white-space: nowrap; } .utility-nav { min-width: 0; display: flex; align-items: center; justify-content: flex-end; gap: 24px; color: var(--red); font-family: "SimSun", "Songti SC", serif; font-size: 16px; font-weight: 400; letter-spacing: 0; } .utility-nav a, .utility-nav button { flex: 0 0 auto; color: inherit; white-space: nowrap; } .utility-nav button { appearance: none; padding: 0; border: 0; background: transparent; font: inherit; cursor: pointer; } .utility-nav a:hover, .utility-nav button:hover { color: var(--color-accent-strong); } .hero { position: relative; overflow: hidden; min-height: 760px; background: radial-gradient(circle at 82% 12%, rgba(196, 146, 69, .16), transparent 24%), linear-gradient(125deg, #fffaf0 0%, #f7efe2 48%, #edf4ef 100%); } .hero:before { content: ""; position: absolute; inset: 0; background-image: linear-gradient(rgba(138, 50, 43, .05) 1px, transparent 1px), linear-gradient(90deg, rgba(138, 50, 43, .05) 1px, transparent 1px); background-size: 68px 68px; mask-image: linear-gradient(90deg, transparent, #000 14%, #000 86%, transparent); } .hero-inner { position: relative; z-index: 2; min-height: 680px; display: grid; grid-template-columns: 0.76fr 1.24fr; align-items: center; gap: 34px; padding: 24px 0 76px; } .eyebrow { display: inline-flex; align-items: center; gap: 10px; margin-bottom: 28px; color: #8a5a3b; font-weight: 800; } .eyebrow:before { content: ""; width: 42px; height: 2px; background: var(--red); } h1 { margin: 0; color: var(--ink); font-family: "SimSun", "Songti SC", serif; font-size: 56px; line-height: 1.16; letter-spacing: 0; } .lead { max-width: 560px; margin: 22px 0 0; color: #645d52; font-size: 18px; line-height: 1.9; } .hero-copy { position: relative; padding-top: 10px; } .hero-copy:before { content: ""; position: absolute; left: -28px; top: 48px; width: 4px; height: 156px; border-radius: 999px; background: linear-gradient(180deg, var(--red), var(--gold)); } .hero-title-mark { display: inline-block; position: relative; color: var(--red); } .hero-title-mark:after { content: ""; position: absolute; left: 0; right: 0; bottom: 7px; height: 12px; background: rgba(200, 59, 50, .12); z-index: -1; } .hero-path { display: flex; align-items: center; gap: 10px; margin-top: 26px; color: #766b5e; font-weight: 800; } .hero-path span { min-width: 34px; height: 34px; border-radius: 50%; display: inline-grid; place-items: center; color: #fff; background: var(--green); font-size: 14px; } .hero-path i { width: 34px; height: 1px; background: #dac9ae; } .hero-action-card { display: inline-flex; align-items: center; gap: 18px; margin-top: 30px; padding: 14px 16px; border-radius: 999px; background: rgba(255,253,248,.72); border: 1px solid rgba(224, 211, 189, .86); box-shadow: 0 18px 42px rgba(72, 57, 38, .08); } .cta { display: flex; gap: 16px; margin-top: 0; } .metrics { display: flex; align-items: stretch; max-width: 560px; margin-top: 22px; padding: 8px; border-radius: 18px; color: #6d766f; background: rgba(255,253,248,.74); border: 1px solid rgba(224, 211, 189, .78); box-shadow: 0 16px 36px rgba(72, 57, 38, .07); } .metric { flex: 1; min-width: 0; min-height: 76px; padding: 12px 16px; border-radius: 12px; } .metric + .metric { border-left: 1px solid rgba(218, 201, 174, .78); } .metric strong { display: block; margin-bottom: 5px; color: var(--green); font-size: 21px; line-height: 1.18; } .hero-visual { position: relative; min-height: 650px; margin-left: -42px; } .hero-showcase { position: absolute; inset: 18px 18px 20px 0; display: grid; grid-template-columns: 1.08fr .92fr; grid-template-rows: 214px 1fr; gap: 18px; } .showcase-card { overflow: hidden; border-radius: 24px; background: rgba(255,253,248,.92); border: 1px solid rgba(224, 211, 189, .88); box-shadow: 0 24px 70px rgba(69, 53, 35, .12); } .family-preview { grid-column: 1 / 3; display: grid; grid-template-columns: 170px 1fr 238px; align-items: center; gap: 24px; padding: 28px; background: linear-gradient(90deg, rgba(255,253,248,.95), rgba(255,253,248,.78)), radial-gradient(circle at 78% 22%, rgba(196,146,69,.2), transparent 26%); } .preview-book { width: 132px; height: 158px; border-radius: 12px; position: relative; background: linear-gradient(155deg, #143d57, #092d42); box-shadow: 0 18px 42px rgba(11, 41, 61, .22); } .preview-book:before { content: "汤氏\A家谱"; white-space: pre; position: absolute; left: 24px; top: 24px; width: 34px; padding: 8px 3px; color: #1c302d; line-height: 1.2; text-align: center; background: #fbf0d8; border: 1px solid rgba(203, 176, 122, .9); font-weight: 800; font-size: 14px; } .family-preview h3 { margin: 0 0 12px; font-size: 28px; } .family-preview p { max-width: 430px; margin: 0; color: var(--muted); line-height: 1.8; } .preview-stats { display: grid; grid-template-columns: repeat(2, 1fr); gap: 10px; } .stat-pill { min-height: 66px; padding: 12px; border-radius: 14px; background: #f7efe2; color: #716454; } .stat-pill strong { display: block; color: var(--green); font-size: 22px; line-height: 1.1; } .showcase-video { position: relative; display: block; min-height: 286px; color: #fff; background: #213f38; } .showcase-video img { width: 100%; height: 100%; min-height: 286px; display: block; object-fit: cover; filter: saturate(.9); } .showcase-video:before { content: ""; position: absolute; inset: 0; background: linear-gradient(180deg, rgba(20, 35, 31, .05), rgba(20, 35, 31, .78)); } .showcase-video .play { position: absolute; left: 28px; bottom: 84px; width: 62px; height: 62px; border-radius: 50%; background: rgba(255,255,255,.94); box-shadow: 0 12px 30px rgba(0,0,0,.18); } .showcase-video .play:after { content: ""; position: absolute; left: 25px; top: 18px; width: 0; height: 0; border-top: 13px solid transparent; border-bottom: 13px solid transparent; border-left: 20px solid var(--red); } .showcase-video h3, .showcase-video p { position: absolute; left: 28px; right: 28px; margin: 0; } .showcase-video h3 { bottom: 44px; font-size: 26px; } .showcase-video p { bottom: 22px; color: rgba(255,255,255,.78); } .showcase-search { min-height: 286px; padding: 24px; } .showcase-search h3 { margin: 0 0 16px; font-size: 22px; } .showcase-search .search-box { height: 46px; } .recommend-list { display: grid; gap: 10px; margin-top: 16px; } .recommend-item { padding: 13px 14px; border-radius: 14px; background: #f8f1e5; color: #6d6357; line-height: 1.55; } .recommend-item strong { display: block; margin-bottom: 4px; color: var(--ink); font-size: 16px; } .portal-card { position: absolute; inset: 18px 18px 20px 0; overflow: hidden; border-radius: 32px; background: rgba(255,253,248,.92); border: 1px solid rgba(224, 211, 189, .88); box-shadow: 0 34px 90px rgba(69, 53, 35, .13); } .portal-cover { position: relative; height: 250px; overflow: hidden; background: linear-gradient(180deg, rgba(255,253,248,.08), rgba(31, 63, 55, .66)), radial-gradient(circle at 78% 18%, rgba(255,255,255,.55) 0 6%, transparent 7%), linear-gradient(135deg, #e9d1a1 0%, #c4533f 45%, #173f52 100%); } .portal-cover:before { content: ""; position: absolute; left: 50%; top: 34px; width: 390px; height: 190px; transform: translateX(-50%); background: linear-gradient(180deg, #f3d083 0 18%, #be4033 18% 70%, #8e3029 70% 100%); clip-path: polygon(2% 38%, 20% 13%, 80% 13%, 98% 38%, 88% 38%, 88% 94%, 12% 94%, 12% 38%); filter: drop-shadow(0 18px 32px rgba(61, 38, 28, .2)); } .portal-cover:after { content: "代代相传"; position: absolute; left: 34px; bottom: 30px; color: rgba(255,255,255,.96); font-size: 28px; font-weight: 800; } .portal-book { position: absolute; left: 34px; top: 34px; width: 118px; height: 164px; border-radius: 12px; background: linear-gradient(155deg, #143d57, #092d42); box-shadow: 0 20px 48px rgba(11, 41, 61, .26); z-index: 2; } .portal-book:before { content: "汤氏\A家谱"; white-space: pre; position: absolute; left: 18px; top: 24px; width: 32px; padding: 8px 3px; color: #1c302d; line-height: 1.2; text-align: center; background: #fbf0d8; border: 1px solid rgba(203, 176, 122, .9); font-weight: 800; font-size: 14px; } .portal-body { display: grid; grid-template-columns: 1.18fr .82fr; gap: 18px; padding: 22px; } .portal-box { min-height: 198px; padding: 22px; border-radius: 20px; background: #fffaf1; border: 1px solid #eadfce; } .portal-box h3 { margin: 0 0 16px; font-size: 22px; } .portal-box p { margin: 0; color: var(--muted); line-height: 1.75; } .portal-video { display: flex; flex-direction: column; justify-content: space-between; color: #fff; background: linear-gradient(180deg, rgba(33,63,56,.18), rgba(33,63,56,.86)), radial-gradient(circle at 78% 24%, rgba(255,255,255,.46) 0 9%, transparent 10%), linear-gradient(135deg, #476f63, #c49245 50%, #c83b32); border-color: rgba(255,255,255,.28); } .portal-video p { color: rgba(255,255,255,.78); } .play-line { display: flex; align-items: center; justify-content: space-between; gap: 16px; } .play-button { width: 58px; height: 58px; border-radius: 50%; position: relative; flex: 0 0 auto; background: rgba(255,255,255,.94); box-shadow: 0 12px 28px rgba(30, 30, 30, .18); } .play-button:after { content: ""; position: absolute; left: 23px; top: 17px; width: 0; height: 0; border-top: 12px solid transparent; border-bottom: 12px solid transparent; border-left: 18px solid var(--red); } .public-list { display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px; margin-top: 16px; } .public-item { min-height: 66px; padding: 9px 12px; border-radius: 12px; background: #f5ecd9; color: #61584d; font-size: 13px; line-height: 1.55; } .public-item strong { display: block; margin-bottom: 4px; color: var(--ink); font-size: 15px; } .archive-stage { position: absolute; inset: 14px 0 22px 0; border-radius: 30px; background: linear-gradient(90deg, rgba(255,255,255,.82), rgba(255,255,255,.55)), radial-gradient(circle at 78% 22%, rgba(180, 51, 42, .12), transparent 26%); border: 1px solid rgba(196, 146, 69, .28); box-shadow: 0 34px 90px rgba(69, 53, 35, .13); } .book-cover { position: absolute; left: 54px; top: 44px; width: 220px; height: 310px; border-radius: 18px; background: linear-gradient(155deg, #143d57, #092d42); box-shadow: 0 28px 70px rgba(19, 54, 76, .22); } .book-cover:before { content: "张氏家谱"; position: absolute; left: 34px; top: 34px; width: 29px; padding: 12px 4px; line-height: 1.25; text-align: center; color: #1c302d; background: #fbf0d8; border: 1px solid rgba(203, 176, 122, .9); font-weight: 800; } .hall { position: absolute; right: 28px; top: 34px; width: 342px; height: 198px; overflow: hidden; border-radius: 22px; background: #fff8ec; border: 1px solid rgba(224, 211, 189, .9); box-shadow: 0 24px 60px rgba(93, 72, 45, .14); } .hall:before { content: none; } .hall:after { content: none; } .hall img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; object-position: center top; } .word-scroll-card { display: flex; align-items: center; gap: 16px; max-width: 620px; margin-top: 22px; padding: 10px 0; border-radius: 999px; color: #766b5e; overflow: hidden; } .word-scroll-card:before { content: ""; width: 42px; height: 2px; flex: 0 0 auto; background: linear-gradient(90deg, var(--red), var(--gold)); } .word-scroll-card:after { content: none; } .word-scroll-label { color: #8b6c48; font-size: 14px; font-weight: 800; } .word-window { flex: 1; height: 34px; overflow: hidden; mask-image: linear-gradient(90deg, transparent, #000 8%, #000 92%, transparent); } .word-track { display: flex; align-items: center; gap: 24px; width: max-content; animation: wordMarquee 16s linear infinite; } .word { height: 34px; display: flex; align-items: center; color: var(--green-dark); font-family: "SimSun", "Songti SC", serif; font-size: 24px; font-weight: 800; line-height: 1; white-space: nowrap; } @keyframes wordMarquee { from { transform: translateX(0); } to { transform: translateX(-50%); } } .video-card { position: absolute; right: 28px; top: 244px; width: 342px; height: 182px; overflow: hidden; border-radius: 20px; color: #fff; background: linear-gradient(180deg, rgba(31, 63, 55, .12), rgba(25, 39, 34, .82)), radial-gradient(circle at 78% 18%, rgba(255,255,255,.42) 0 8%, transparent 9%), linear-gradient(135deg, #476f63, #c49245 48%, #c83b32); box-shadow: 0 22px 56px rgba(45, 55, 50, .18); } .video-card:before { content: ""; position: absolute; left: 50%; top: 50%; width: 62px; height: 62px; border-radius: 50%; background: rgba(255,255,255,.92); transform: translate(-50%, -50%); box-shadow: 0 12px 28px rgba(30, 30, 30, .18); } .video-card:after { content: ""; position: absolute; left: calc(50% - 8px); top: calc(50% - 14px); width: 0; height: 0; border-top: 14px solid transparent; border-bottom: 14px solid transparent; border-left: 22px solid var(--red); } .video-card span { position: absolute; left: 22px; bottom: 20px; font-weight: 800; font-size: 20px; } .video-card small { position: absolute; left: 22px; bottom: 50px; color: rgba(255,255,255,.78); font-size: 14px; } .search-panel { position: absolute; left: 68px; right: 28px; top: 440px; padding: 18px 20px; border-radius: 20px; background: rgba(255,255,255,.92); border: 1px solid rgba(224, 211, 189, .8); box-shadow: 0 24px 70px rgba(73, 59, 41, .12); } .search-panel h3 { margin: 0 0 16px; font-size: 22px; } .search-box { display: flex; height: 48px; overflow: hidden; border-radius: 999px; border: 1px solid #e2d4bf; background: #fbf8f1; } .search-box span { flex: 1; display: flex; align-items: center; padding-left: 22px; color: #9c9488; } .search-box b { width: 118px; display: grid; place-items: center; color: #fff; background: var(--red); } .genealogy-list { display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px; margin-top: 14px; } .genealogy-item { min-height: 62px; padding: 9px 12px; border-radius: 12px; background: #f8f1e5; color: #61584d; font-size: 14px; line-height: 1.55; } .genealogy-item strong { display: block; margin-bottom: 5px; color: var(--ink); font-size: 16px; } .quick-strip { position: relative; z-index: 3; margin-top: -58px; } .quick-inner { display: grid; grid-template-columns: repeat(4, 1fr); gap: 18px; } .quick-card { min-height: 104px; padding: 20px 24px; border-radius: 12px; color: var(--ink); border: 1px solid rgba(218, 201, 174, .72); background: radial-gradient(circle at 88% 18%, rgba(255, 253, 248, .66), transparent 30%), linear-gradient(135deg, #f6f1e7 0%, #e9d8c6 100%); box-shadow: 0 18px 44px rgba(36, 42, 38, .08); } .quick-card:nth-child(2) { background: radial-gradient(circle at 88% 18%, rgba(255, 253, 248, .64), transparent 30%), linear-gradient(135deg, #f2f5ed 0%, #dbe8d2 100%); } .quick-card.quick-card-family { color: #fffdf8; border-color: rgba(255, 253, 248, .5); background: linear-gradient(145deg, var(--red), var(--color-accent-strong)); } .quick-card.quick-card-family b, .quick-card.quick-card-family span { color: inherit; } .quick-card:nth-child(3) { background: radial-gradient(circle at 88% 18%, rgba(255, 253, 248, .64), transparent 30%), linear-gradient(135deg, #f8efe9 0%, #ead0c7 100%); } .quick-card:nth-child(4) { background: radial-gradient(circle at 88% 18%, rgba(255, 253, 248, .66), transparent 30%), linear-gradient(135deg, #f4efe4 0%, #e5d1aa 100%); } .quick-card b { display: block; margin-bottom: 10px; font-size: 20px; color: var(--ink); } .quick-card span { color: var(--muted); line-height: 1.7; } section { padding: 76px 0; } .section-head { margin-bottom: 34px; text-align: center; } .section-head h2 { margin: 0; font-family: "SimSun", "Songti SC", serif; font-size: 42px; line-height: 1.25; } .section-head p { margin: 14px auto 0; max-width: 680px; color: var(--muted); font-size: 17px; line-height: 1.9; } .functions { background: #fffdf8; padding-bottom: 0; } .function-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 22px; } .function-card { min-height: 190px; padding: 24px; border-radius: 14px; background: #fbf7ed; border: 1px solid #eee1cf; transition: transform .2s ease; } .function-card:hover { transform: translateY(-4px); } .icon { width: 46px; height: 46px; margin-bottom: 18px; border-radius: 14px; display: grid; place-items: center; color: var(--red); background: #f7e4dc; font-size: 22px; font-weight: 900; } .function-card h3 { margin: 0 0 12px; font-size: 21px; } .function-card p { margin: 0; color: var(--muted); line-height: 1.8; } .plaza { background: linear-gradient(180deg, #fffdf8, #f8f0e4); } .plaza-layout { display: grid; grid-template-columns: 1.05fr .95fr; gap: 34px; align-items: stretch; } .featured-family { min-height: 430px; padding: 34px; border-radius: 22px; color: #fff; background: linear-gradient(180deg, rgba(28, 48, 45, .18), rgba(21, 55, 51, .84)), linear-gradient(135deg, #476f63, #a95c3e); display: flex; flex-direction: column; justify-content: flex-end; box-shadow: 0 24px 70px rgba(42, 65, 59, .15); } .featured-family h3 { margin: 0 0 16px; font-size: 34px; } .featured-family p { max-width: 560px; margin: 0; color: rgba(255,255,255,.82); line-height: 1.9; font-size: 17px; } .family-cards { display: grid; gap: 18px; } .family-card { padding: 22px; border-radius: 18px; background: #fffdf8; border: 1px solid #eadfce; box-shadow: 0 16px 42px rgba(57, 48, 36, .07); } .family-card h4 { margin: 0 0 8px; font-size: 22px; } .family-card p { margin: 0 0 18px; color: var(--muted); line-height: 1.7; } .tag-row { display: flex; gap: 10px; flex-wrap: wrap; } .tag { padding: 6px 12px; border-radius: 999px; color: var(--green); background: #eaf0eb; font-size: 14px; font-weight: 700; } .culture { background: #fffdf8; } .article-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 24px; } .article-card { overflow: hidden; border-radius: 18px; background: #fff; border: 1px solid #eadfce; box-shadow: 0 18px 48px rgba(57, 48, 36, .07); } .article-cover { height: 190px; background: radial-gradient(circle at 74% 28%, rgba(255,255,255,.7) 0 8%, transparent 9%), linear-gradient(135deg, #e7c89e, #b94135 48%, #143d57); } .article-card:nth-child(2) .article-cover { background: linear-gradient(135deg, #dfd1b5, #6b7f70 48%, #26302c); } .article-card:nth-child(3) .article-cover { background: linear-gradient(135deg, #f0d8ac, #c49245 45%, #7d342d); } .article-body { padding: 24px; } .article-body h3 { margin: 0 0 12px; font-size: 22px; line-height: 1.45; } .article-body p { margin: 0 0 20px; color: var(--muted); line-height: 1.75; } .article-meta { color: #9a8f82; font-size: 14px; } .ad-slots { background: linear-gradient(180deg, #fffdf8, #f8f0e4); padding: 0; } .ad-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); gap: 16px; align-items: start; } .ad-card { position: relative; display: flex; align-items: center; justify-content: center; aspect-ratio: 2.8 / 1; padding: 8px; border-radius: 12px; overflow: hidden; border: 1px solid rgba(224, 211, 189, .84); background: #fffdf8; box-shadow: 0 12px 30px rgba(57, 48, 36, .06); color: var(--ink); font-size: 18px; font-weight: 800; } .ad-card img { display: block; width: 100%; height: 100%; object-fit: contain; transition: transform .32s ease; } .ad-card:hover img { transform: scale(1.025); } .surname { background: radial-gradient(circle at 12% 20%, rgba(200, 59, 50, .09), transparent 24%), #f8f0e4; } .surname-panel { display: grid; grid-template-columns: 360px 1fr; gap: 34px; padding: 30px; border-radius: 24px; background: rgba(255,255,255,.7); border: 1px solid rgba(224, 211, 189, .8); box-shadow: 0 24px 70px rgba(57, 48, 36, .08); } .surname-intro { padding: 30px; border-radius: 18px; color: #fff; background: linear-gradient(155deg, var(--green-dark), var(--green)); } .surname-intro h2 { margin: 0 0 16px; font-family: "SimSun", "Songti SC", serif; font-size: 38px; } .surname-intro p { color: rgba(255,255,255,.78); line-height: 1.9; } .surname-grid { display: grid; grid-template-columns: repeat(8, 1fr); gap: 10px; align-content: start; } .surname-name { height: 62px; border-radius: 12px; display: grid; place-items: center; color: #7c4a33; background: #fbf7ed; border: 1px solid #eadfce; font-size: 24px; font-family: "SimSun", "Songti SC", serif; font-weight: 800; transition: transform .24s ease, color .24s ease, background .24s ease, border-color .24s ease, box-shadow .24s ease; will-change: transform; } .surname-name:hover { color: #fff; background: var(--red); border-color: rgba(200, 59, 50, .72); box-shadow: 0 16px 34px rgba(200, 59, 50, .18); transform: translateY(-6px) scale(1.03); } .surname-panel:hover .surname-name { animation: surnameFloat 1.9s ease-in-out infinite; } .surname-panel:hover .surname-name:nth-child(2n) { animation-delay: .08s; } .surname-panel:hover .surname-name:nth-child(3n) { animation-delay: .14s; } .surname-panel:hover .surname-name:nth-child(4n) { animation-delay: .2s; } @keyframes surnameFloat { 0%, 100% { transform: translateY(0); } 50% { transform: translateY(-4px); } } .download { background: #fffdf8; } .recommend { background: #fffdf8; } .recommend-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); gap: 18px; } .recommend-card { min-height: 184px; padding: 22px; border-radius: 14px; border: 1px solid rgba(224, 211, 189, .84); background: linear-gradient(180deg, #fffdf8, #fbf7ed); box-shadow: 0 18px 48px rgba(57, 48, 36, .07); } .recommend-card span { display: inline-flex; margin-bottom: 18px; padding: 6px 12px; border-radius: 999px; color: var(--green); background: #eaf0eb; font-size: 13px; font-weight: 900; } .recommend-card h3 { margin: 0 0 12px; font-size: 24px; line-height: 1.35; } .recommend-card p { margin: 0; color: var(--muted); line-height: 1.8; } .friend-links { padding: 0 0; background: #fffdf8; scroll-margin-top: 96px; } .friend-links-panel { display: flex; align-items: center; gap: 24px; padding: 24px 28px; border-radius: 18px; border: 1px solid rgba(224, 211, 189, .84); background: #fbf7ed; } .friend-links-panel h2 { flex: 0 0 auto; margin: 0; font-family: "SimSun", "Songti SC", serif; font-size: 30px; } .friend-link-list { display: flex; flex-wrap: wrap; gap: 10px; } .friend-link-list a { padding: 8px 14px; border-radius: 999px; color: #5e665f; background: rgba(255, 255, 255, .76); border: 1px solid rgba(224, 211, 189, .78); transition: color .22s ease, border-color .22s ease, transform .22s ease; } .friend-link-list a:hover { color: var(--red); border-color: rgba(200, 59, 50, .32); transform: translateY(-2px); } .download-panel { display: grid; grid-template-columns: 1fr 380px; gap: 56px; align-items: center; padding: 44px; border-radius: 28px; background: radial-gradient(circle at 82% 30%, rgba(200, 59, 50, .12), transparent 28%), linear-gradient(135deg, #f7efe2, #edf4ef); border: 1px solid #eadfce; } .download-panel h2 { margin: 0; font-family: "SimSun", "Songti SC", serif; font-size: 42px; } .download-panel p { margin: 18px 0 30px; color: var(--muted); font-size: 18px; line-height: 1.9; } .qr-wrap { display: grid; grid-template-columns: repeat(2, 1fr); gap: 18px; } .qr { min-height: 190px; padding: 18px; border-radius: 18px; text-align: center; background: rgba(255,255,255,.78); border: 1px solid #eadfce; } .qr-box { width: 112px; height: 112px; margin: 0 auto 14px; background: linear-gradient(90deg, #26302c 10px, transparent 10px) 0 0 / 22px 22px, linear-gradient(#26302c 10px, transparent 10px) 0 0 / 22px 22px, #fff; border: 10px solid #fff; box-shadow: inset 0 0 0 1px #ddd; } @media (max-width: 1120px) { .utility-nav { gap: 14px; font-size: 14px; } .nav-links { display: none; } .hero-inner, .plaza-layout, .surname-panel, .download-panel { grid-template-columns: 1fr; } .function-grid, .quick-inner { grid-template-columns: repeat(2, 1fr); } .article-grid, .recommend-grid { grid-template-columns: 1fr; } .friend-links-panel { align-items: flex-start; flex-direction: column; } } .qr-note { margin: 8px 0 0; color: var(--muted); } @media (hover: hover) and (pointer: fine) { .quick-card, .function-card, .family-card, .article-card, .ad-card, .surname-panel, .recommend-card, .download-panel { cursor: pointer; } } .quick-card, .function-card, .family-card, .article-card, .ad-card, .surname-panel, .recommend-card, .download-panel { transition: transform .24s ease, box-shadow .24s ease, border-color .24s ease, background .24s ease, color .22s ease; will-change: transform; } .quick-card:hover, .function-card:hover, .family-card:hover, .article-card:hover, .ad-card:hover, .recommend-card:hover { border-color: rgba(196, 146, 69, .42); box-shadow: 0 24px 60px rgba(57, 48, 36, .11); } .function-card { position: relative; overflow: hidden; } .function-card:after { content: ""; position: absolute; left: -42%; top: 0; width: 36%; height: 100%; background: linear-gradient(90deg, transparent, rgba(255,255,255,.54), transparent); transform: skewX(-18deg); transition: left .56s ease; } .function-card:hover:after { left: 112%; } .function-card:hover .icon { color: #fff; background: var(--red); transform: rotate(-6deg) scale(1.08); } .icon { transition: transform .26s ease, background .26s ease, color .26s ease; } .tilt-card { transform: perspective(900px) rotateX(var(--tilt-x, 0deg)) rotateY(var(--tilt-y, 0deg)) translateY(var(--lift, 0)); transition: transform .18s ease, box-shadow .24s ease, border-color .24s ease; will-change: transform; } .tilt-card:hover { --lift: -6px; } .magnetic { will-change: transform; } @media (prefers-reduced-motion: reduce) { *:not(:where(.page-home-portal, .page-home-portal *)), *:not(:where(.page-home-portal, .page-home-portal *))::before, *:not(:where(.page-home-portal, .page-home-portal *))::after { animation-duration: .01ms !important; animation-iteration-count: 1 !important; scroll-behavior: auto !important; transition-duration: .01ms !important; } } @media (max-width: 720px) { .company-bar .container { justify-content: center; } .utility-nav { display: none; } .hero { min-height: 0; } .hero-inner { min-height: 0; gap: 28px; padding: 36px 0 48px; } .hero-copy { min-width: 0; padding-top: 0; } .hero-copy:before { content: none; } h1 { font-size: 42px; } .lead { font-size: 16px; line-height: 1.75; } .hero-path { gap: 7px; font-size: 13px; } .hero-path i { width: 16px; } .hero-action-card, .cta, .cta .btn { width: 100%; } .hero-action-card { padding: 12px; border-radius: 18px; } .cta { display: grid; grid-template-columns: 1fr; gap: 10px; } .cta .btn { justify-content: center; } .metrics { display: grid; grid-template-columns: 1fr; } .metric + .metric { border-top: 1px solid rgba(218, 201, 174, .78); border-left: 0; } .hero-visual { min-width: 0; min-height: 0; display: grid; gap: 14px; margin-left: 0; } .archive-stage, .book-cover { display: none; } .hall, .video-card, .search-panel { width: calc(100dvw - 28px); max-width: 100%; position: relative; inset: auto; } .hall { height: auto; aspect-ratio: 16 / 9; } .video-card { height: 174px; } .search-panel { padding: 16px; } .search-box { width: 100%; } .word-scroll-card, .word-window { min-width: 0; max-width: 100%; } .search-box span { min-width: 0; overflow: hidden; padding-left: 14px; text-overflow: ellipsis; white-space: nowrap; } .search-box b { width: 76px; flex: 0 0 76px; } .genealogy-list, .function-grid, .quick-inner, .qr-wrap { grid-template-columns: 1fr; } section { padding: 52px 0; } .section-head h2, .download-panel h2 { font-size: 34px; } .surname-panel { gap: 18px; padding: 16px; } .surname-intro { padding: 22px; } .surname-grid { grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 8px; } .surname-name { height: 54px; } .download-panel { gap: 28px; padding: 24px; } } /* 首页门户:复用原首页的品牌、卡片与交互样式。 */ .page-home-portal .container { width: min(var(--layout-max), calc(100% - var(--space-2xl))); max-width: none; } .page-home-portal .company-bar .container { font-size: var(--text-base); letter-spacing: .08em; } .page-home-portal .utility-nav { gap: var(--space-md); font-family: var(--font-body); font-size: var(--text-sm); } .page-home-portal .nav { gap: var(--space-md); } .page-home-portal .nav-links { flex: 1; justify-content: center; gap: var(--space-sm); font-size: var(--text-sm); white-space: nowrap; } .page-home-portal .nav-actions { gap: var(--space-xs); font-size: var(--text-sm); } .page-home-portal [data-add-favorite] { appearance: none; border: 0; padding: 0; background: none; color: inherit; font: inherit; cursor: pointer; white-space: nowrap; } .page-home-portal .nav-links [data-add-favorite]:hover { color: var(--color-gold-soft); } .page-home-portal .site-mobile-menu [data-add-favorite] { min-height: 46px; display: flex; align-items: center; padding: 10px 14px; border: 1px solid color-mix(in srgb, var(--color-gold-soft) 16%, transparent); border-radius: var(--radius-sm); color: var(--color-gold-soft); background: color-mix(in srgb, var(--color-panel) 8%, transparent); font-weight: 800; text-align: left; } .page-home-portal .nav-actions .btn { min-width: 112px; padding-inline: var(--space-sm); } .page-home-portal .site-header { box-shadow: 0 3px 10px color-mix(in srgb, var(--color-accent-strong) 10%, transparent); } .page-home-portal main > section { padding: 0; } .page-home-portal main > .portal-overview { position: relative; isolation: isolate; padding-block: var(--space-lg); border-bottom: 1px solid var(--color-rule); background: linear-gradient(110deg, var(--color-panel), var(--color-paper-2)); } .portal-overview::before { content: ""; position: absolute; inset: 0; z-index: -1; pointer-events: none; background-image: linear-gradient(color-mix(in srgb, var(--color-accent) 2%, transparent) 1px, transparent 1px), linear-gradient(90deg, color-mix(in srgb, var(--color-accent) 2%, transparent) 1px, transparent 1px); background-size: 68px 68px; } .portal-overview-grid { display: grid; grid-template-columns: minmax(0, 1.08fr) minmax(0, 1fr); align-items: center; gap: var(--space-lg); } .portal-copy { min-width: 0; padding-top: 0; } .portal-copy-heading { display: grid; grid-template-columns: minmax(0, 1fr) 116px; align-items: center; gap: var(--space-sm); } .portal-copy::before { top: var(--space-lg); height: 120px; left: calc(var(--space-sm) * -1); } .portal-copy .eyebrow { margin-bottom: var(--space-sm); font-size: 13px; } .portal-copy h1 { margin: 0; font-size: clamp(36px, 3.6vw, 52px); line-height: 1.25; letter-spacing: .035em; font-weight: 600; overflow-wrap: anywhere; } .portal-copy .lead { margin: var(--space-sm) 0 0; max-width: 100%; font-size: var(--text-base); line-height: 1.85; } .portal-word-scroll { max-width: 100%; min-width: 0; margin-top: var(--space-md); padding-block: var(--space-2xs); border-radius: 0; } .portal-word-scroll .word-scroll-label { flex: 0 0 4em; border: 0; padding: 0; background: none; font-family: var(--font-display); cursor: pointer; white-space: nowrap; } .portal-word-scroll .word-window { min-width: 0; } .portal-word-scroll .word-track { gap: 0; animation: wordMarquee 16s linear infinite; } .portal-word-group { display: flex; flex-shrink: 0; gap: var(--space-md); padding-right: var(--space-md); } .portal-word-scroll:not(.is-playing):is(:hover, :focus-within) .word-track, .portal-word-scroll.is-paused .word-track { animation-play-state: paused; } .portal-word-scroll.is-playing .word-track { animation-play-state: running; } .portal-copy .hero-path { flex-wrap: wrap; gap: var(--space-xs); margin: var(--space-sm) 0 0; padding: 0; list-style: none; font-family: var(--font-display); font-size: var(--text-base); font-weight: 600; } .portal-copy .hero-path li { display: inline-flex; align-items: center; gap: var(--space-2xs); white-space: nowrap; } .portal-copy .hero-path li:not(:last-child)::after { content: ""; width: var(--space-lg); height: 1px; margin-left: var(--space-2xs); background: var(--color-rule); } .portal-copy .hero-path b { display: grid; place-items: center; width: 34px; height: 34px; border-radius: 50%; background: var(--color-green); color: var(--color-panel); font-size: 12px; } .portal-qr-card { flex: 0 0 auto; display: flex; flex-direction: column; align-items: center; gap: var(--space-3xs); } .portal-qr-card strong { font-size: 13px; } .portal-qr-card small { color: var(--color-ink-2); font-size: 11px; } .portal-qr { display: block; padding: var(--space-2xs); border: 1px solid var(--color-rule); border-radius: var(--radius-sm); background: var(--color-panel); } .portal-qr img, .portal-qr canvas { display: block; width: 92px; height: 92px; } .portal-gallery { display: grid; grid-template-columns: minmax(0, 220fr) minmax(0, 294fr); grid-template-rows: repeat(2, minmax(0, 1fr)); gap: var(--space-sm); width: min(100%, 554px); aspect-ratio: 554 / 334; padding: var(--space-xs); background: var(--color-panel); border: 1px solid var(--color-rule); border-radius: var(--radius-md); box-shadow: 0 12px 28px color-mix(in srgb, var(--color-ink) 8%, transparent); justify-self: end; } .portal-gallery .book-cover { display: block; grid-row: 1 / 3; position: relative; inset: auto; width: 100%; height: 100%; border-radius: var(--radius-xs); box-shadow: var(--shadow-card); } .portal-gallery img { display: block; width: 100%; height: 100%; min-width: 0; min-height: 0; object-fit: cover; border: 1px solid var(--color-rule); border-radius: var(--radius-xs); box-shadow: none; } .portal-gallery img:first-of-type { object-fit: contain; background: var(--color-panel); } .page-home-portal main > .portal-entry-section { padding-block: var(--space-sm); background: var(--color-panel); } .portal-entry-grid { display: grid; grid-template-columns: minmax(0, 1.25fr) minmax(0, .8fr) repeat(2, minmax(0, 1fr)); gap: var(--space-sm); } .portal-entry { position: relative; min-width: 0; height: 154px; overflow: hidden; border-radius: var(--radius-sm); background: var(--color-paper-2); } .portal-entry img { display: block; width: 100%; height: 100%; object-fit: cover; object-position: left center; } .portal-media-entry { position: relative; inset: auto; width: auto; background: linear-gradient(180deg, transparent, color-mix(in srgb, var(--color-ink) 90%, transparent)), radial-gradient(circle at 78% 20%, color-mix(in srgb, var(--color-panel) 45%, transparent) 0 8%, transparent 9%), linear-gradient(135deg, var(--color-green), var(--color-gold) 50%, var(--color-accent-strong)); box-shadow: none; } .portal-media-entry::before { width: 48px; height: 48px; top: 44%; } .portal-media-entry::after { left: calc(50% - 6px); top: calc(44% - 10px); border-top-width: 10px; border-bottom-width: 10px; border-left-width: 16px; } .portal-media-entry > span { left: var(--space-sm); bottom: var(--space-sm); font-size: var(--text-base); } .portal-media-entry > small { left: var(--space-sm); bottom: calc(var(--space-lg) + var(--space-2xs)); font-size: var(--text-xs); } .portal-family-entry { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: var(--space-2xs); padding: var(--space-sm); color: var(--color-accent-ink); background: linear-gradient(145deg, var(--color-accent), var(--color-accent-strong) 80%); text-align: center; } .portal-family-entry::before { content: ""; position: absolute; inset: var(--space-2xs); border: 1px solid color-mix(in srgb, var(--color-gold-soft) 35%, transparent); border-radius: var(--radius-xs); pointer-events: none; } .portal-family-entry > span { color: var(--color-gold-soft); font-size: var(--text-sm); letter-spacing: .12em; } .portal-family-entry strong { font-family: var(--font-display); font-size: 30px; font-weight: 600; } .portal-family-entry small { max-width: 12em; font-size: 12px; line-height: 1.7; } .page-home-portal main > .portal-ad-strip { padding-bottom: var(--space-sm); background: var(--color-panel); } .portal-ad-grid { display: grid; grid-template-columns: repeat(9, minmax(0, 1fr)); gap: var(--space-3xs); } .portal-ad-grid a { min-width: 0; display: block; overflow: hidden; border-radius: 0; transform: none; } .portal-ad-grid img { display: block; width: 100%; height: auto; aspect-ratio: 2.8 / 1; object-fit: cover; } .page-home-portal main > .portal-directory { padding-block: var(--space-md); border-block: 1px solid var(--color-rule); background: var(--color-paper); } .portal-directory-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--space-sm); } .portal-directory-card { display: grid; grid-template-columns: 40px minmax(0, 1fr); grid-template-rows: auto 1fr; align-items: center; gap: var(--space-sm); min-width: 0; min-height: 144px; padding: var(--space-md); border-radius: var(--radius-sm); background: var(--color-panel); border-color: color-mix(in srgb, var(--color-rule) 70%, var(--color-panel)); box-shadow: none; transform: none; will-change: auto; transition: border-color var(--dur-short) var(--ease-out), background-color var(--dur-short) var(--ease-out); } .portal-directory-card::after { content: none; } .portal-directory-card:hover, .portal-directory-card:hover .icon { transform: none; } .portal-directory-card .icon { width: 40px; height: 40px; margin: 0; border-radius: var(--radius-xs); font-size: var(--text-md); border: 1px solid color-mix(in srgb, var(--color-accent) 18%, transparent); background: var(--color-accent-soft); color: var(--color-accent-strong); } .portal-directory-card h3 { position: relative; padding-right: var(--space-md); margin: 0; font-family: var(--font-display); font-size: var(--text-lg); letter-spacing: .04em; } .portal-directory-card h3::after { content: ""; position: absolute; right: var(--space-3xs); top: calc(50% - 4px); width: 8px; height: 8px; border-top: 1px solid currentColor; border-right: 1px solid currentColor; color: var(--color-ink-3); transform: rotate(45deg); transition: transform var(--dur-base) var(--ease-out), color var(--dur-base) var(--ease-out); } .portal-directory-card p { grid-column: 1 / -1; align-self: start; margin: 0; font-size: var(--text-sm); line-height: 1.8; } .page-home-portal main > .portal-resources { padding-block: var(--space-md); background: var(--color-panel); scroll-margin-top: 96px; } .portal-resource-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--space-xl); } .portal-resource-group { min-width: 0; } .portal-resource-group h2 { display: flex; align-items: center; gap: var(--space-sm); margin: 0 0 var(--space-2xs); font-size: var(--text-md); font-weight: 600; } .portal-resource-group h2::after { content: ""; flex: 1; height: 1px; background: var(--color-rule); } .portal-resource-list { display: flex; flex-wrap: wrap; gap: var(--space-2xs) var(--space-md); } .portal-resource-list a { display: inline-flex; align-items: center; min-height: 36px; font-size: var(--text-sm); color: var(--color-ink-2); white-space: nowrap; } .page-home-portal main > .portal-ad-strip-bottom { padding-block: var(--space-sm); } .page-home-portal .portal-footer { padding: 0; background: var(--color-panel); } .portal-footer-links { display: flex; justify-content: center; align-items: center; flex-wrap: wrap; gap: var(--space-xs) var(--space-lg); padding-block: var(--space-sm); border-top: 1px solid var(--color-rule); color: var(--color-ink-2); font-size: var(--text-sm); } .portal-footer-links a { white-space: nowrap; } .portal-footer-legal { padding-block: var(--space-sm); background: var(--color-ink); color: var(--color-paper); text-align: center; font-size: var(--text-sm); line-height: 1.9; } .portal-footer-legal p { margin: var(--space-3xs) 0; } .portal-footer-legal a { display: inline-block; margin-inline: var(--space-2xs); color: inherit; } .page-home-portal a:focus-visible, .page-home-portal button:focus-visible { outline: 2px solid var(--color-focus); outline-offset: 4px; } @media (hover: hover) and (pointer: fine) { .page-home-portal .tilt-card { transform: none; transition: transform var(--dur-base) var(--ease-out), box-shadow var(--dur-base) var(--ease-out), border-color var(--dur-short) var(--ease-out), background-color var(--dur-short) var(--ease-out); } .portal-directory-card:hover .icon { transform: translateY(-3px); color: var(--color-accent-ink); background: var(--color-accent-strong); } .portal-directory-card:hover h3::after { color: var(--color-accent); transform: translateX(4px) rotate(45deg); } .portal-media-entry > span, .portal-media-entry > small, .portal-family-entry strong { transition: transform var(--dur-base) var(--ease-out); } .portal-media-entry:hover > span, .portal-media-entry:hover > small { transform: translateY(-3px); } .portal-family-entry:hover strong { transform: translateY(-3px); } .portal-service-entry img, .portal-ad-grid img { transition: opacity var(--dur-base) var(--ease-out); } .portal-service-entry:hover img, .portal-ad-grid a:hover img { opacity: .88; } .portal-media-entry::before, .portal-media-entry::after { transition: transform var(--dur-base) var(--ease-out); } .portal-media-entry:hover::before { transform: translate(-50%, -50%) scale(1.12); } .portal-media-entry:hover::after { transform: translateX(2px); } .portal-qr-card { transition: transform var(--dur-base) var(--ease-out); } .portal-qr-card:hover { transform: translateY(-3px); } .portal-directory-card:hover { border-color: var(--color-rule-strong); background: var(--color-panel); box-shadow: var(--shadow-card); } .portal-directory-card:hover h3 { color: var(--color-accent-strong); } .portal-entry:hover { box-shadow: var(--shadow-card); } .portal-family-entry:hover { color: var(--color-accent-ink); } .portal-resource-list a:hover, .portal-footer-links a:hover { color: var(--color-accent); } } .portal-resource-list a, .portal-footer-links a { text-decoration: underline; text-decoration-color: transparent; text-underline-offset: 6px; transition: color var(--dur-short) var(--ease-out), text-decoration-color var(--dur-short) var(--ease-out); } .portal-resource-list a:hover, .portal-footer-links a:hover { text-decoration-color: currentColor; } .page-home-portal .portal-entry:active { transform: translateY(1px); } .portal-copy-heading { animation: portal-arrive 600ms var(--ease-out) both; } .portal-gallery { animation: portal-arrive 700ms var(--ease-out) 100ms both; } .portal-copy .lead, .portal-word-scroll, .portal-copy .hero-path { animation: portal-arrive 650ms var(--ease-out) 140ms both; } .portal-entry-grid { animation: portal-arrive 650ms var(--ease-out) 180ms both; } @keyframes portal-arrive { from { opacity: 0; transform: translateY(18px); } to { opacity: 1; transform: translateY(0); } } @media (max-width: 1180px) { .page-home-portal .brand-logo { width: 224px; } .portal-overview-grid { gap: var(--space-lg); } .portal-copy h1 { font-size: 38px; } } @media (max-width: 980px) { .page-home-portal .company-bar .container { font-size: var(--text-sm); } .page-home-portal .utility-nav { gap: var(--space-xs); font-size: var(--text-xs); } .portal-entry-grid, .portal-directory-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } .portal-ad-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); } .portal-overview-grid { grid-template-columns: minmax(0, 1fr); } .portal-gallery { justify-self: center; } } @media (max-width: 720px) { .page-home-portal .container { width: calc(100% - var(--space-sm) * 2); } .page-home-portal .company-bar { height: auto; } .page-home-portal .company-bar .container { flex-direction: column; align-items: flex-start; gap: 0; padding-top: var(--space-2xs); } .page-home-portal .utility-nav { display: flex; width: 100%; overflow-x: auto; justify-content: flex-start; gap: var(--space-sm); padding-block: var(--space-2xs); } .page-home-portal .nav { height: 64px; gap: var(--space-2xs); } .page-home-portal .brand { padding: var(--space-2xs); } .page-home-portal .brand-logo { width: 180px; } .page-home-portal main > .portal-overview { padding-block: var(--space-lg); } .portal-overview-grid, .portal-entry-grid, .portal-directory-grid, .portal-resource-grid { grid-template-columns: minmax(0, 1fr); } .portal-copy h1 { font-size: clamp(24px, 7.5vw, 32px); } .portal-copy-heading { grid-template-columns: minmax(0, 1fr) 104px; gap: var(--space-xs); } .portal-copy .eyebrow { gap: var(--space-2xs); font-size: 11px; } .portal-copy .eyebrow::before { width: var(--space-sm); } .portal-qr img, .portal-qr canvas { width: 84px; height: 84px; } .portal-copy .lead { font-size: var(--text-base); overflow-wrap: break-word; } .portal-word-scroll { gap: var(--space-2xs); } .portal-word-scroll::before { width: var(--space-sm); } .portal-word-scroll .word { font-size: var(--text-md); } .portal-copy .hero-path { font-size: var(--text-xs); gap: var(--space-2xs); } .portal-copy .hero-path li { gap: var(--space-3xs); } .portal-copy .hero-path b { width: 28px; height: 28px; } .portal-copy .hero-path li::after { display: none; } .portal-copy .hero-path { margin-top: var(--space-sm); } .portal-gallery .book-cover::before { left: var(--space-sm); top: var(--space-sm); } .portal-directory-card { min-height: 0; padding: var(--space-md); } .portal-resource-grid { gap: var(--space-lg); } .portal-footer-links { gap: var(--space-xs) var(--space-md); } }