/* ============================================================
   汇安官网门户样式 v2（对齐设计稿 draft-01/02/04/07/08）
   TDesign 风格：白底 / 钴蓝 #0052D9 / 3D 插画 / 卡片化
   适用页面：/index.php、/docs.php
   ============================================================ */

:root {
    --pt-blue: #0052d9;
    --pt-blue-hover: #266fe8;
    --pt-blue-active: #003cab;
    --pt-blue-soft: #ecf2fe;
    --pt-ink: #181c25;
    --pt-muted: #5f6b7f;
    --pt-line: #e3e9f2;
    --pt-bg: #ffffff;
    --pt-bg-alt: #f4f7fc;
    --pt-navy: #0b1a38;
    --pt-radius: 14px;
    --pt-shadow: 0 6px 24px rgba(15, 35, 90, .06);
    --pt-shadow-hover: 0 14px 40px rgba(0, 82, 217, .12);
}

* { box-sizing: border-box; }

html { scroll-behavior: smooth; }

body.site-portal {
    margin: 0;
    color: var(--pt-ink);
    background: var(--pt-bg);
    font-family: Inter, "Microsoft YaHei", "PingFang SC", Arial, sans-serif;
    font-size: 15px;
    line-height: 1.7;
    -webkit-font-smoothing: antialiased;
}

body.site-portal a {
    color: inherit;
    text-decoration: none;
}

.pt-container {
    width: min(1200px, calc(100% - 48px));
    margin: 0 auto;
}

/* ---------------- 顶部导航（链接居中，同设计稿） ---------------- */

.pt-nav {
    position: fixed;
    top: 0;
    left: 0;
    right: 0;
    z-index: 60;
    height: 66px;
    background: rgba(255, 255, 255, .92);
    border-bottom: 1px solid rgba(227, 233, 242, .8);
    backdrop-filter: blur(14px);
    -webkit-backdrop-filter: blur(14px);
}

.pt-nav-inner {
    position: relative;
    display: flex;
    align-items: center;
    height: 66px;
}

.pt-brand {
    display: inline-flex;
    align-items: center;
    gap: 10px;
    font-size: 22px;
    font-weight: 900;
    letter-spacing: .5px;
    white-space: nowrap;
}

.pt-brand-mark {
    width: 30px;
    height: 30px;
    flex: 0 0 auto;
    border-radius: 8px;
    background: linear-gradient(135deg, var(--pt-blue-hover), var(--pt-blue));
    box-shadow: 0 4px 12px rgba(0, 82, 217, .32);
    position: relative;
}

.pt-brand-mark::after {
    content: "";
    position: absolute;
    inset: 9px;
    border-radius: 4px;
    border: 2.5px solid rgba(255, 255, 255, .92);
    border-right-color: rgba(255, 255, 255, .38);
}

.pt-nav-links {
    position: absolute;
    left: 50%;
    top: 0;
    height: 100%;
    transform: translateX(-50%);
    display: flex;
    align-items: center;
    gap: 38px;
    font-size: 15px;
    font-weight: 500;
    color: #3c4658;
}

.pt-nav-links a {
    position: relative;
    display: inline-flex;
    align-items: center;
    height: 100%;
    padding: 0 2px;
    transition: color .16s ease;
}

.pt-nav-links a:hover,
.pt-nav-links a.is-active {
    color: var(--pt-blue);
    font-weight: 700;
}

.pt-nav-links a.is-active::after {
    content: "";
    position: absolute;
    left: 50%;
    bottom: 0;
    width: 28px;
    height: 3px;
    border-radius: 2px;
    background: var(--pt-blue);
    transform: translateX(-50%);
}

.pt-nav-cta {
    margin-left: auto;
    display: flex;
    align-items: center;
    gap: 14px;
}

body.site-portal .pt-nav-reg {
    font-size: 15px;
    font-weight: 500;
    color: #3c4658;
}

body.site-portal .pt-nav-reg:hover { color: var(--pt-blue); }

/* ---------------- 按钮 ---------------- */
/* body.site-portal a { color:inherit } 优先级较高，着色按钮统一加前缀 */

.pt-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 42px;
    padding: 0 24px;
    border: 1px solid transparent;
    border-radius: 8px;
    cursor: pointer;
    font-size: 15px;
    font-weight: 700;
    letter-spacing: .3px;
    transition: all .18s ease;
    white-space: nowrap;
}

body.site-portal .pt-btn-primary {
    color: #fff;
    background: var(--pt-blue);
    box-shadow: 0 8px 22px rgba(0, 82, 217, .26);
}

body.site-portal .pt-btn-primary:hover {
    color: #fff;
    background: var(--pt-blue-hover);
    box-shadow: 0 10px 26px rgba(0, 82, 217, .32);
    transform: translateY(-1px);
}

body.site-portal .pt-btn-outline {
    color: var(--pt-blue);
    border-color: #9dbcf3;
    background: #fff;
}

body.site-portal .pt-btn-outline:hover {
    color: var(--pt-blue);
    border-color: var(--pt-blue);
    background: var(--pt-blue-soft);
    transform: translateY(-1px);
}

body.site-portal .pt-btn-ghost-white {
    color: #fff;
    border-color: rgba(255, 255, 255, .55);
    background: transparent;
}

body.site-portal .pt-btn-ghost-white:hover {
    color: #fff;
    background: rgba(255, 255, 255, .14);
    border-color: #fff;
}

body.site-portal .pt-btn-white {
    color: var(--pt-blue);
    background: #fff;
    box-shadow: 0 10px 26px rgba(0, 30, 90, .28);
}

body.site-portal .pt-btn-white:hover {
    color: var(--pt-blue);
    transform: translateY(-1px);
}

.pt-btn-lg {
    min-height: 50px;
    padding: 0 36px;
    font-size: 16px;
}

body.site-portal .pt-card-link {
    color: var(--pt-blue);
    font-size: 14px;
    font-weight: 700;
}

body.site-portal .pt-card-link:hover { color: var(--pt-blue-hover); }

/* ---------------- Hero（大场景插画出血，文字压在场景上） ---------------- */

.pt-hero {
    position: relative;
    overflow: hidden;
    background: #fff;
}

.pt-hero-bg {
    position: absolute;
    top: 66px;
    right: 0;
    height: calc(100% - 66px);
    width: auto;
    max-width: none;
    display: block;
    animation: pt-float 7s ease-in-out infinite, pt-fade-in 1s ease backwards;
    will-change: transform;
}

/* 悬浮动效 */

@keyframes pt-float {
    0%, 100% { transform: translateY(0); }
    50% { transform: translateY(-16px); }
}

@keyframes pt-fade-in {
    from { opacity: 0; }
    to { opacity: 1; }
}

@keyframes pt-rise {
    from { opacity: 0; transform: translateY(26px); }
    to { opacity: 1; transform: translateY(0); }
}

/* 漂浮的玻璃小方块，呼应插画中的悬浮元素 */

.pt-hero-orbs {
    position: absolute;
    inset: 0;
    z-index: 1;
    pointer-events: none;
}

.pt-hero-orbs i {
    position: absolute;
    display: block;
    border-radius: 6px;
    background: linear-gradient(135deg, rgba(88, 148, 245, .42), rgba(0, 82, 217, .16));
    border: 1px solid rgba(58, 122, 235, .30);
    box-shadow: 0 10px 24px rgba(0, 82, 217, .16), inset 0 1px 0 rgba(255, 255, 255, .65);
    animation: pt-float 6s ease-in-out infinite;
}

.pt-hero-orbs i:nth-child(1) { top: 21%; left: 40%; width: 20px; height: 20px; animation-duration: 5.6s; }
.pt-hero-orbs i:nth-child(2) { top: 13%; right: 12%; width: 26px; height: 26px; border-radius: 50%; animation-duration: 7.4s; animation-delay: .8s; }
.pt-hero-orbs i:nth-child(3) { top: 46%; left: 47%; width: 12px; height: 12px; animation-duration: 4.8s; animation-delay: 1.6s; }
.pt-hero-orbs i:nth-child(4) { bottom: 30%; right: 5%; width: 16px; height: 16px; animation-duration: 6.6s; animation-delay: .4s; }
.pt-hero-orbs i:nth-child(5) { top: 30%; left: 30%; width: 10px; height: 10px; border-radius: 50%; animation-duration: 8s; animation-delay: 2.2s; }

.pt-hero::after {
    /* 左侧白色渐变罩，保证文字在窄视口下可读 */
    content: "";
    position: absolute;
    inset: 0;
    background: linear-gradient(90deg, #fff 0%, #fff 30%, rgba(255, 255, 255, .72) 46%, rgba(255, 255, 255, 0) 62%);
    pointer-events: none;
}

.pt-hero-inner {
    position: relative;
    z-index: 2;
    display: flex;
    align-items: center;
    min-height: min(900px, calc(100vh - 66px));
    padding: 66px 0 200px;
}

.pt-hero-copy {
    max-width: 620px;
    margin-top: -40px;
}

.pt-hero-copy h1 { animation: pt-rise .7s ease .05s backwards; }
.pt-hero-copy .pt-hero-lede { animation: pt-rise .7s ease .18s backwards; }
.pt-hero-copy .pt-hero-actions { animation: pt-rise .7s ease .3s backwards; }

.pt-hero h1 {
    margin: 0 0 16px;
    font-size: 64px;
    font-weight: 900;
    line-height: 1.14;
    letter-spacing: 2px;
}

.pt-hero h1 em {
    display: block;
    margin-top: 8px;
    font-style: normal;
    font-size: 41px;
    letter-spacing: 1px;
    color: var(--pt-blue);
}

.pt-hero-lede {
    margin: 0 0 36px;
    color: var(--pt-muted);
    font-size: 17px;
    line-height: 1.8;
}

.pt-hero-actions {
    display: flex;
    align-items: center;
    gap: 16px;
    flex-wrap: wrap;
}

/* ---------------- 产品三卡（压在 Hero 场景底部，同设计稿01） ---------------- */

.pt-products-band {
    background: transparent;
    padding: 0 0 64px;
}

.pt-products {
    position: relative;
    z-index: 5;
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 24px;
    margin-top: -178px;
}

.pt-product-card {
    display: flex;
    align-items: center;
    gap: 18px;
    padding: 30px 26px;
    border: 1px solid rgba(227, 233, 242, .9);
    border-radius: var(--pt-radius);
    background: #fff;
    box-shadow: 0 18px 44px rgba(15, 35, 90, .10);
    transition: transform .2s ease, box-shadow .2s ease, border-color .2s ease;
}

.pt-product-card:hover {
    transform: translateY(-6px);
    border-color: #c6d8f9;
    box-shadow: var(--pt-shadow-hover);
}

.pt-products .pt-product-card:nth-child(1) { animation: pt-rise .7s ease .4s backwards; }
.pt-products .pt-product-card:nth-child(2) { animation: pt-rise .7s ease .52s backwards; }
.pt-products .pt-product-card:nth-child(3) { animation: pt-rise .7s ease .64s backwards; }

.pt-product-card img {
    width: 128px;
    height: 128px;
    flex: 0 0 auto;
    border-radius: 16px;
}

.pt-product-card h3 {
    margin: 0 0 6px;
    font-size: 19px;
    font-weight: 800;
}

.pt-badge {
    display: inline-flex;
    align-items: center;
    margin-bottom: 8px;
    padding: 2px 12px;
    border: 1px solid #9dbcf3;
    border-radius: 999px;
    color: var(--pt-blue);
    background: #fff;
    font-size: 12px;
    font-weight: 700;
    letter-spacing: .4px;
}

.pt-product-card p {
    margin: 0;
    color: var(--pt-muted);
    font-size: 13.5px;
    line-height: 1.75;
}

/* ---------------- 通用 Section ---------------- */

.pt-section {
    padding: 88px 0;
}

.pt-section-alt {
    background: var(--pt-bg-alt);
}

.pt-section-head {
    max-width: 680px;
    margin: 0 auto 48px;
    text-align: center;
}

.pt-section-head h2 {
    margin: 0 0 12px;
    font-size: 38px;
    font-weight: 900;
    letter-spacing: 1px;
}

.pt-section-head p {
    margin: 0;
    color: var(--pt-muted);
    font-size: 16px;
}

/* ---------------- 核心能力 6 卡（大图标在上，同设计稿02） ---------------- */

.pt-features {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 24px;
}

.pt-feature-card {
    padding: 28px 28px 26px;
    border: 1px solid var(--pt-line);
    border-radius: var(--pt-radius);
    background: #fff;
    box-shadow: var(--pt-shadow);
    transition: transform .2s ease, box-shadow .2s ease, border-color .2s ease;
}

.pt-feature-card:hover {
    transform: translateY(-5px);
    border-color: #c6d8f9;
    box-shadow: var(--pt-shadow-hover);
}

.pt-feature-card img {
    width: 128px;
    height: 128px;
    margin-bottom: 14px;
    border-radius: 18px;
}

.pt-feature-card h3 {
    margin: 0 0 8px;
    font-size: 18px;
    font-weight: 800;
}

.pt-feature-card p {
    margin: 0;
    color: var(--pt-muted);
    font-size: 13.5px;
    line-height: 1.8;
}

/* ---------------- 蓝色 CTA 横幅 ---------------- */

.pt-cta-band {
    position: relative;
    overflow: hidden;
    margin-top: 44px;
    padding: 52px 56px;
    border-radius: 18px;
    background:
        radial-gradient(480px 240px at 88% 10%, rgba(255, 255, 255, .18), transparent 62%),
        radial-gradient(380px 220px at 72% 100%, rgba(122, 178, 255, .28), transparent 60%),
        linear-gradient(115deg, #0047c2 0%, #0052d9 48%, #2f7bf0 100%);
    box-shadow: 0 26px 60px rgba(0, 60, 171, .30);
    color: #fff;
}

.pt-cta-band::after {
    content: "";
    position: absolute;
    right: 96px;
    top: 50%;
    width: 210px;
    height: 210px;
    transform: translateY(-50%) rotate(18deg);
    border: 2px solid rgba(255, 255, 255, .22);
    border-radius: 38px;
    background: linear-gradient(150deg, rgba(255, 255, 255, .14), rgba(255, 255, 255, .02));
    box-shadow: inset 0 0 40px rgba(255, 255, 255, .08);
    pointer-events: none;
}

.pt-cta-band h2 {
    margin: 0 0 10px;
    font-size: 30px;
    font-weight: 900;
    letter-spacing: 1px;
}

.pt-cta-band p {
    margin: 0 0 24px;
    color: rgba(255, 255, 255, .85);
    font-size: 15.5px;
}

/* 窄条 CTA（解决方案区尾，同设计稿07） */

.pt-cta-slim {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 24px;
    flex-wrap: wrap;
    margin-top: 26px;
    padding: 30px 44px;
    border-radius: 16px;
    background: linear-gradient(100deg, #0047c2 0%, #0052d9 55%, #2f7bf0 100%);
    box-shadow: 0 20px 48px rgba(0, 60, 171, .28);
    color: #fff;
}

.pt-cta-slim h2 {
    margin: 0;
    font-size: 24px;
    font-weight: 900;
    letter-spacing: 1px;
}

/* ---------------- 加固流程（大图标 + 编号标题 + 虚线箭头） ---------------- */

.pt-steps {
    display: grid;
    grid-template-columns: repeat(5, minmax(0, 1fr));
    gap: 20px;
}

.pt-step {
    position: relative;
    padding: 26px 14px 24px;
    border: 1px solid var(--pt-line);
    border-radius: var(--pt-radius);
    background: #fff;
    box-shadow: var(--pt-shadow);
    text-align: center;
}

.pt-step img {
    width: 132px;
    height: 132px;
    margin-bottom: 12px;
    border-radius: 18px;
}

.pt-step h3 {
    margin: 0;
    font-size: 16.5px;
    font-weight: 800;
}

.pt-step h3 i {
    font-style: normal;
    color: var(--pt-blue);
}

.pt-step-dash {
    position: absolute;
    top: 50%;
    right: -21px;
    z-index: 2;
    width: 22px;
    border-top: 2.5px dashed #4f86ec;
    transform: translateY(-50%);
}

.pt-step-dash::after {
    content: "";
    position: absolute;
    right: -3px;
    top: -6px;
    border: 5px solid transparent;
    border-left: 7px solid #4f86ec;
}

.pt-workflow-bottom {
    display: grid;
    grid-template-columns: minmax(0, 1.12fr) minmax(0, .88fr);
    gap: 26px;
    margin-top: 32px;
    align-items: stretch;
}

.pt-terminal {
    border-radius: var(--pt-radius);
    background: #0a1428;
    box-shadow: 0 22px 48px rgba(6, 18, 46, .35);
    overflow: hidden;
}

.pt-terminal-bar {
    display: flex;
    align-items: center;
    gap: 7px;
    padding: 14px 18px 10px;
}

.pt-terminal-bar i {
    width: 12px;
    height: 12px;
    border-radius: 50%;
}

.pt-terminal-bar i:first-child { background: #ff5f57; }
.pt-terminal-bar i:nth-child(2) { background: #febc2e; }
.pt-terminal-bar i:nth-child(3) { background: #28c840; }

.pt-terminal-bar span {
    margin-left: 10px;
    color: #7285a8;
    font-size: 12.5px;
    letter-spacing: .4px;
}

.pt-terminal pre {
    margin: 0;
    padding: 14px 22px 26px;
    overflow-x: auto;
    color: #d7e3f8;
    font-family: "Cascadia Code", Consolas, "JetBrains Mono", monospace;
    font-size: 13.5px;
    line-height: 2.05;
}

.pt-terminal .t-cmd { color: #8fc7ff; }
.pt-terminal .t-ok { color: #3fd06d; }
.pt-terminal .t-dim { color: #6d7f9f; }

.pt-workflow-aside {
    display: flex;
    flex-direction: column;
    justify-content: center;
    gap: 14px;
    padding: 34px 38px;
    border: 1px solid var(--pt-line);
    border-radius: var(--pt-radius);
    background: #fff;
    box-shadow: var(--pt-shadow);
}

.pt-workflow-aside h3 {
    margin: 0;
    font-size: 24px;
    font-weight: 900;
}

.pt-workflow-aside p {
    margin: 0;
    color: var(--pt-muted);
    font-size: 14.5px;
    line-height: 1.9;
}

.pt-workflow-aside .pt-btn {
    align-self: flex-start;
    margin-top: 8px;
}

/* ---------------- 行业解决方案（2x2 横排大卡，同设计稿07） ---------------- */

.pt-solutions {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 24px;
}

.pt-solution-card {
    display: flex;
    align-items: center;
    gap: 22px;
    padding: 30px 30px;
    border: 1px solid var(--pt-line);
    border-radius: var(--pt-radius);
    background: #fff;
    box-shadow: var(--pt-shadow);
    transition: transform .2s ease, box-shadow .2s ease, border-color .2s ease;
}

.pt-solution-card:hover {
    transform: translateY(-6px);
    border-color: #c6d8f9;
    box-shadow: var(--pt-shadow-hover);
}

.pt-solution-card img {
    width: 158px;
    height: 158px;
    flex: 0 0 auto;
    border-radius: 20px;
}

.pt-solution-card h3 {
    margin: 0 0 8px;
    font-size: 21px;
    font-weight: 800;
}

.pt-solution-card p {
    margin: 0 0 12px;
    color: var(--pt-muted);
    font-size: 14px;
    line-height: 1.8;
}

/* 核心防护场景横条 */

.pt-scenes {
    display: flex;
    align-items: center;
    gap: 10px;
    flex-wrap: wrap;
    margin-top: 24px;
    padding: 20px 34px;
    border: 1px solid var(--pt-line);
    border-radius: 16px;
    background: #fff;
    box-shadow: var(--pt-shadow);
}

.pt-scenes-title {
    margin-right: 26px;
    font-size: 18px;
    font-weight: 900;
    white-space: nowrap;
}

.pt-scene-item {
    display: inline-flex;
    align-items: center;
    gap: 12px;
    padding: 6px 26px 6px 6px;
    font-size: 15px;
    font-weight: 600;
    color: #2a3550;
}

.pt-scene-item img {
    width: 62px;
    height: 62px;
    border-radius: 14px;
}

.pt-scene-item + .pt-scene-item {
    border-left: 1px solid var(--pt-line);
    padding-left: 26px;
}

/* ---------------- 页脚（深蓝，同设计稿底部色带） ---------------- */

.pt-footer {
    background: var(--pt-navy);
    padding: 58px 0 30px;
    color: #9fb0cd;
    font-size: 14px;
}

.pt-footer .pt-brand {
    color: #fff;
}

.pt-footer-grid {
    display: grid;
    grid-template-columns: minmax(0, 1.4fr) repeat(3, minmax(0, 1fr));
    gap: 36px;
    margin-bottom: 40px;
}

.pt-footer-brand p {
    margin: 16px 0 0;
    max-width: 320px;
    line-height: 1.9;
}

.pt-footer h4 {
    margin: 6px 0 18px;
    color: #fff;
    font-size: 15px;
    font-weight: 800;
}

.pt-footer-col a {
    display: block;
    margin-bottom: 11px;
    color: #9fb0cd;
    transition: color .15s ease;
}

.pt-footer-col a:hover { color: #fff; }

.pt-footer-bottom {
    padding-top: 22px;
    border-top: 1px solid rgba(159, 176, 205, .18);
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    flex-wrap: wrap;
    font-size: 13px;
    color: #7488ab;
}

body.site-portal .pt-footer-bottom a { color: #9fb0cd; }
body.site-portal .pt-footer-bottom a:hover { color: #fff; }

/* ---------------- 文档中心（同设计稿08） ---------------- */

.pt-docs-hero {
    position: relative;
    overflow: hidden;
    padding: 140px 0 60px;
    background: linear-gradient(180deg, #eef3fb 0%, #f7fafe 78%, #fff 100%);
    text-align: center;
}

.pt-docs-hero-illu {
    position: absolute;
    right: -70px;
    top: 40px;
    height: 118%;
    width: auto;
    opacity: .95;
    pointer-events: none;
    -webkit-mask-image: radial-gradient(ellipse 62% 58% at 52% 48%, #000 42%, transparent 74%);
    mask-image: radial-gradient(ellipse 62% 58% at 52% 48%, #000 42%, transparent 74%);
}

.pt-docs-hero .pt-container {
    position: relative;
    z-index: 2;
}

.pt-docs-hero h1 {
    margin: 0 0 12px;
    font-size: 42px;
    font-weight: 900;
    letter-spacing: 1px;
}

.pt-docs-hero p {
    margin: 0 0 30px;
    color: var(--pt-muted);
    font-size: 16px;
}

/* 放大镜按钮（PC 端默认只显示它，点击后展开搜索栏） */

.pt-docs-search-toggle {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 54px;
    height: 54px;
    padding: 0;
    border: 1px solid #c8d9fb;
    border-radius: 50%;
    background: #fff;
    box-shadow: 0 12px 30px rgba(0, 82, 217, .14);
    cursor: pointer;
    transition: transform .16s ease, box-shadow .16s ease;
}

.pt-docs-search-toggle:hover {
    transform: translateY(-2px);
    box-shadow: 0 16px 36px rgba(0, 82, 217, .2);
}

.pt-docs-search-toggle i {
    position: relative;
    display: block;
    width: 22px;
    height: 22px;
}

.pt-docs-search-toggle i::before {
    content: "";
    position: absolute;
    top: 1px;
    left: 1px;
    width: 13px;
    height: 13px;
    border: 2.5px solid var(--pt-blue);
    border-radius: 50%;
}

.pt-docs-search-toggle i::after {
    content: "";
    position: absolute;
    bottom: 1px;
    right: 0;
    width: 8px;
    height: 2.5px;
    border-radius: 2px;
    background: var(--pt-blue);
    transform: rotate(45deg);
    transform-origin: right center;
}

.pt-docs-search-toggle.is-hidden {
    display: none;
}

.pt-docs-search {
    display: none;
    width: min(640px, 100%);
    margin: 0 auto;
    border: 1px solid #d4e0f4;
    border-radius: 12px;
    background: #fff;
    box-shadow: 0 14px 34px rgba(0, 82, 217, .10);
    overflow: hidden;
}

.pt-docs-search.is-open {
    display: flex;
    animation: pt-rise .35s ease backwards;
}

.pt-docs-search input {
    flex: 1;
    min-width: 0;
    padding: 16px 22px;
    border: 0;
    outline: none;
    color: var(--pt-ink);
    font-size: 15px;
    font-family: inherit;
    background: transparent;
}

.pt-docs-search input::placeholder { color: #9aa7bd; }

.pt-docs-search button {
    padding: 0 32px;
    border: 0;
    cursor: pointer;
    color: #fff;
    background: var(--pt-blue);
    font-size: 15px;
    font-weight: 700;
    font-family: inherit;
    transition: background .16s ease;
}

.pt-docs-search button:hover { background: var(--pt-blue-hover); }

.pt-doc-cats {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 22px;
}

.pt-doc-cat {
    padding: 30px 20px 24px;
    border: 1px solid var(--pt-line);
    border-radius: var(--pt-radius);
    background: #fff;
    box-shadow: var(--pt-shadow);
    text-align: center;
    transition: transform .2s ease, box-shadow .2s ease, border-color .2s ease;
}

.pt-doc-cat:hover {
    transform: translateY(-5px);
    border-color: #c6d8f9;
    box-shadow: var(--pt-shadow-hover);
}

.pt-doc-cat img {
    width: 148px;
    height: 148px;
    margin-bottom: 12px;
    border-radius: 20px;
}

.pt-doc-cat h3 {
    margin: 0;
    font-size: 17px;
    font-weight: 800;
}

/* 两列文档列表卡（VMP 文档 / ELF 加固文档） */

.pt-doc-lists {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 22px;
    margin-top: 26px;
}

.pt-doc-list-card {
    padding: 24px 28px 14px;
    border: 1px solid var(--pt-line);
    border-radius: var(--pt-radius);
    background: #fff;
    box-shadow: var(--pt-shadow);
}

.pt-doc-list-card h3 {
    margin: 0 0 8px;
    padding-bottom: 12px;
    border-bottom: 1px solid var(--pt-line);
    font-size: 18px;
    font-weight: 800;
}

body.site-portal .pt-doc-list-card a {
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 13px 2px;
    border-bottom: 1px solid #eef2f9;
    color: #2a3550;
    font-size: 14.5px;
    transition: color .15s ease;
}

body.site-portal .pt-doc-list-card a:last-child { border-bottom: 0; }

body.site-portal .pt-doc-list-card a::before {
    content: "";
    width: 7px;
    height: 7px;
    flex: 0 0 auto;
    border-radius: 50%;
    background: var(--pt-blue);
}

body.site-portal .pt-doc-list-card a::after {
    content: "›";
    margin-left: auto;
    color: #9aa7bd;
    font-size: 18px;
}

body.site-portal .pt-doc-list-card a:hover { color: var(--pt-blue); }

/* 文档正文 */

.pt-doc-section {
    margin-top: 56px;
    scroll-margin-top: 92px;
}

.pt-doc-section > h2 {
    display: flex;
    align-items: center;
    gap: 12px;
    margin: 0 0 20px;
    font-size: 24px;
    font-weight: 800;
}

.pt-doc-section > h2::before {
    content: "";
    width: 6px;
    height: 24px;
    border-radius: 3px;
    background: var(--pt-blue);
}

.pt-doc-article {
    padding: 30px 34px;
    border: 1px solid var(--pt-line);
    border-radius: var(--pt-radius);
    background: #fff;
    box-shadow: var(--pt-shadow);
}

.pt-doc-article h3 {
    margin: 26px 0 10px;
    font-size: 17px;
    font-weight: 800;
}

.pt-doc-article h3:first-child { margin-top: 0; }

.pt-doc-article p,
.pt-doc-article li {
    color: #3f4a5e;
    font-size: 14.5px;
    line-height: 1.9;
}

.pt-doc-article ol,
.pt-doc-article ul { padding-left: 22px; margin: 8px 0 16px; }

.pt-doc-article code {
    padding: 2px 7px;
    border-radius: 5px;
    background: var(--pt-blue-soft);
    color: var(--pt-blue-active);
    font-family: Consolas, "JetBrains Mono", monospace;
    font-size: 13px;
}

.pt-doc-article pre {
    margin: 14px 0 18px;
    padding: 18px 20px;
    border-radius: 10px;
    background: #0a1428;
    color: #d7e3f8;
    overflow-x: auto;
    font-family: "Cascadia Code", Consolas, "JetBrains Mono", monospace;
    font-size: 13px;
    line-height: 1.9;
}

.pt-doc-article pre code {
    padding: 0;
    background: transparent;
    color: inherit;
    font-size: inherit;
}

.pt-doc-tip {
    margin: 16px 0;
    padding: 14px 18px;
    border: 1px solid #c8d9fb;
    border-left: 4px solid var(--pt-blue);
    border-radius: 8px;
    background: var(--pt-blue-soft);
    color: #2a3550;
    font-size: 14px;
}

.pt-faq-item {
    border-bottom: 1px solid var(--pt-line);
    padding: 4px 0;
}

.pt-faq-item:last-child { border-bottom: 0; }

.pt-faq-item summary {
    cursor: pointer;
    padding: 14px 4px;
    font-size: 15.5px;
    font-weight: 700;
    color: var(--pt-ink);
    list-style: none;
    position: relative;
    padding-right: 34px;
}

.pt-faq-item summary::-webkit-details-marker { display: none; }

.pt-faq-item summary::after {
    content: "+";
    position: absolute;
    right: 8px;
    top: 50%;
    transform: translateY(-50%);
    color: var(--pt-blue);
    font-size: 20px;
    font-weight: 400;
}

.pt-faq-item[open] summary::after { content: "−"; }

.pt-faq-item .pt-faq-body {
    padding: 0 4px 16px;
    color: #3f4a5e;
    font-size: 14.5px;
    line-height: 1.9;
}

.pt-doc-hidden { display: none !important; }

.pt-docs-empty {
    display: none;
    margin-top: 40px;
    padding: 40px;
    border: 1px dashed #c8d9fb;
    border-radius: var(--pt-radius);
    color: var(--pt-muted);
    text-align: center;
}

/* ---------------- 移动端 ---------------- */

.pt-menu-btn {
    display: none;
    margin-left: auto;
    width: 42px;
    height: 42px;
    padding: 0;
    border: 1px solid var(--pt-line);
    border-radius: 9px;
    background: #fff;
    cursor: pointer;
    position: relative;
}

.pt-menu-btn span,
.pt-menu-btn span::before,
.pt-menu-btn span::after {
    position: absolute;
    left: 50%;
    width: 18px;
    height: 2px;
    border-radius: 2px;
    background: var(--pt-ink);
    content: "";
    transform: translateX(-50%);
    transition: all .2s ease;
}

.pt-menu-btn span { top: 50%; margin-top: -1px; }
.pt-menu-btn span::before { top: -6px; }
.pt-menu-btn span::after { top: 6px; }

body.pt-menu-open .pt-menu-btn span { background: transparent; }
body.pt-menu-open .pt-menu-btn span::before { top: 0; transform: translateX(-50%) rotate(45deg); }
body.pt-menu-open .pt-menu-btn span::after { top: 0; transform: translateX(-50%) rotate(-45deg); }

.pt-mobile-menu {
    display: none;
    position: fixed;
    top: 66px;
    left: 0;
    right: 0;
    z-index: 58;
    padding: 10px 24px 24px;
    background: rgba(255, 255, 255, .98);
    border-bottom: 1px solid var(--pt-line);
    box-shadow: 0 24px 48px rgba(15, 35, 90, .12);
    backdrop-filter: blur(14px);
}

body.pt-menu-open .pt-mobile-menu { display: block; }

.pt-mobile-menu a {
    display: block;
    padding: 14px 4px;
    border-bottom: 1px solid #eef2f9;
    color: var(--pt-ink);
    font-size: 16px;
    font-weight: 600;
}

.pt-mobile-menu a:last-of-type { border-bottom: 0; }

.pt-mobile-menu .pt-btn {
    width: 100%;
    margin-top: 14px;
}

@media (max-width: 1240px) {
    .pt-hero-bg { right: -140px; }
}

@media (max-width: 1080px) {
    .pt-hero h1 { font-size: 48px; }
    .pt-hero h1 em { font-size: 36px; }
    .pt-steps { gap: 14px; }
    .pt-step img { width: 104px; height: 104px; }
    .pt-step-dash { display: none; }
    .pt-doc-cats { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .pt-doc-cat img { width: 120px; height: 120px; }
    .pt-footer-grid { grid-template-columns: minmax(0, 1.2fr) repeat(2, minmax(0, 1fr)); }
    .pt-solution-card img { width: 120px; height: 120px; }
}

@media (max-width: 920px) {
    .pt-nav-links,
    .pt-nav-cta { display: none; }
    .pt-menu-btn { display: block; }

    /* 手机版对齐设计稿05：文字左对齐、插画全宽满铺、区块紧凑 */
    .pt-hero { display: flex; flex-direction: column-reverse; }
    .pt-hero-bg {
        position: static;
        width: 100%;
        height: auto;
        margin: 0;
        order: 0;
        animation: pt-fade-in .8s ease backwards;
    }
    .pt-hero::after { display: none; }
    .pt-hero-orbs { display: none; }
    .pt-hero-inner {
        min-height: 0;
        padding: 92px 0 14px;
    }
    .pt-hero-copy { max-width: none; margin-top: 0; text-align: left; }
    .pt-hero h1 { font-size: 40px; letter-spacing: 1px; }
    .pt-hero h1 em { font-size: 28px; }
    .pt-hero-lede { font-size: 15.5px; margin-bottom: 26px; }
    .pt-hero-actions { justify-content: flex-start; gap: 12px; }
    .pt-hero-actions .pt-btn-lg { min-height: 46px; padding: 0 28px; font-size: 15px; }

    .pt-products-band { padding: 18px 0 48px; }
    .pt-products { grid-template-columns: 1fr; margin-top: 0; gap: 16px; }
    .pt-product-card { padding: 20px 18px; }
    .pt-product-card img { width: 96px; height: 96px; }
    .pt-features { grid-template-columns: 1fr; }
    .pt-feature-card img { width: 104px; height: 104px; }

    .pt-steps { grid-template-columns: 1fr; }
    .pt-step { display: flex; align-items: center; gap: 16px; text-align: left; padding: 14px 18px; }
    .pt-step img { width: 84px; height: 84px; margin: 0; }
    .pt-workflow-bottom { grid-template-columns: 1fr; }

    .pt-section { padding: 60px 0; }
    .pt-section-head { margin-bottom: 32px; }
    .pt-section-head h2 { font-size: 29px; }

    .pt-cta-band { padding: 38px 28px; }
    .pt-cta-band::after { display: none; }
    .pt-cta-band h2 { font-size: 24px; }
    .pt-cta-slim { padding: 26px 28px; justify-content: center; text-align: center; }

    .pt-solutions { grid-template-columns: 1fr; }
    .pt-solution-card { gap: 16px; padding: 22px 20px; }
    .pt-solution-card img { width: 104px; height: 104px; }

    .pt-scenes { flex-direction: column; align-items: flex-start; gap: 4px; padding: 18px 22px; }
    .pt-scenes-title { margin: 0 0 6px; }
    .pt-scene-item + .pt-scene-item { border-left: 0; padding-left: 6px; }

    .pt-docs-hero { padding: 108px 0 46px; }
    .pt-docs-hero h1 { font-size: 31px; }
    .pt-docs-hero-illu { display: none; }
    /* 手机端不收起搜索栏：隐藏放大镜、直接显示搜索框 */
    .pt-docs-search-toggle { display: none; }
    .pt-docs-search { display: flex; }
    .pt-doc-lists { grid-template-columns: 1fr; }
    .pt-doc-article { padding: 22px 20px; }

    .pt-footer-grid { grid-template-columns: 1fr 1fr; gap: 26px; }
    .pt-footer-brand { grid-column: 1 / -1; }
}

@media (max-width: 560px) {
    .pt-container { width: calc(100% - 36px); }
    .pt-hero h1 { font-size: 35px; }
    .pt-hero h1 em { font-size: 25px; }
    .pt-doc-cats { grid-template-columns: 1fr; }
    .pt-footer-grid { grid-template-columns: 1fr; }
    .pt-footer-bottom { justify-content: center; text-align: center; }
}

@media (prefers-reduced-motion: reduce) {
    .pt-hero-bg,
    .pt-hero-orbs i,
    .pt-hero-copy h1,
    .pt-hero-copy .pt-hero-lede,
    .pt-hero-copy .pt-hero-actions,
    .pt-products .pt-product-card {
        animation: none !important;
    }
}
