/* SiboTech home template 02 - extracted for cache */
.sibo-f {
            --f-deep: #071a2e;
            --f-navy: #0c2f4d;
            --f-blue: #0077c8;
            --f-cyan: #00a1e2;
            --f-mint: #3db89a;
            --f-text: #152232;
            --f-muted: #5a6b7d;
            --f-line: #d7e0ea;
            --f-bg: #f3f6f9;
            --f-card: #ffffff;
            --f-radius: 6px;
            --f-shadow: 0 12px 32px rgba(7, 26, 46, .08);
            /* 1920 设计稿基准宽，大屏用 calc(100vw * n / 1920) 等比缩放 */
            --f-design-w: 1920;
            font-family: "PingFang SC", "Microsoft YaHei", "Segoe UI", sans-serif;
            color: var(--f-text);
            overflow-x: hidden;
        }
        .sibo-f a { text-decoration: none !important; }
        .sibo-f .f-wrap {
            width: 100%;
            max-width: none;
            margin: 0 auto;
            padding: 0 24px;
        }
        @media (min-width: 1200px) {
            .sibo-f .f-wrap,
            footer .container { width: 100%; max-width: none; padding: 0 40px; }
        }
        @media (min-width: 1600px) {
            .sibo-f .f-wrap,
            footer .container { padding: 0 8.5%; }
        }

        /* Hero：固定比例 + 文案垂直居中，避免顶死挤在一起 */
        .f-hero {
            position: relative;
            height: auto;
            min-height: 0;
            display: flex;
            flex-direction: column;
            justify-content: flex-start;
            background:
                linear-gradient(90deg, rgba(7,26,46,.62) 0%, rgba(7,26,46,.28) 40%, rgba(7,26,46,.06) 62%, transparent 78%),
                url(/Download/home/home-page-new.png) right center / auto 100% no-repeat,
                #071a2e;
            color: #fff;
            overflow: hidden;
        }
        .f-hero > .f-wrap {
            flex: 1 1 auto;
            display: flex;
            align-items: center;
            min-height: 0;
            width: 100%;
        }
        .f-hero-canvas,
        .f-hero-orb,
        .f-hero-diagram {
            display: none !important;
        }
        .f-hero-diagram svg {
            width: 100%;
            height: auto;
            display: block;
            overflow: visible;
        }
        /* 底线实线保证“连得上”，上层虚线做流动 */
        .f-flow-base {
            fill: none;
            stroke: rgba(125,211,252,.28);
            stroke-width: 2;
            stroke-linecap: square;
            stroke-linejoin: miter;
        }
        .f-flow {
            fill: none;
            stroke: #7dd3fc;
            stroke-width: 1.8;
            stroke-linecap: butt;
            stroke-linejoin: miter;
            stroke-dasharray: 7 10;
            animation: fDash 1.4s linear infinite;
        }
        .f-node-pulse {
            fill: #00a1e2;
            animation: fPulse 2.4s ease-in-out infinite;
        }
        @keyframes fDash {
            to { stroke-dashoffset: -34; }
        }
        @keyframes fPulse {
            0%, 100% { opacity: .5; }
            50% { opacity: 1; }
        }
        @media (prefers-reduced-motion: reduce) {
            .f-flow { animation: none; stroke-dasharray: none; }
            .f-node-pulse { animation: none; }
        }
        .f-hero-body {
            position: relative; z-index: 2;
            padding: 0;
            max-width: clamp(560px, 42vw, 900px);
            width: 100%;
        }
        .f-kicker {
            display: inline-flex; align-items: center; gap: 8px;
            font-size: clamp(11px, 0.625vw, 16px); letter-spacing: .12em; text-transform: uppercase;
            color: #8ec8ef; margin-bottom: clamp(12px, 0.9vw, 20px);
            opacity: 0; transform: translateY(18px);
        }
        .f-kicker i {
            width: 8px; height: 8px; border-radius: 50%;
            background: var(--f-mint); box-shadow: 0 0 0 4px rgba(61,184,154,.25);
            display: inline-block;
        }
        .f-hero h1 {
            font-size: clamp(30px, 2.1vw, 48px);
            font-weight: 700; line-height: 1.25; color: #fff;
            letter-spacing: .02em;
            margin: 0 0 clamp(20px, 1.35vw, 34px);
            opacity: 0; transform: translateY(20px);
        }
        .f-hero .f-lead {
            font-size: clamp(15px, 0.9375vw, 22px); line-height: 1.7;
            color: rgba(255,255,255,.86);
            margin: 0; max-width: 36em;
            opacity: 0; transform: translateY(20px);
        }
        .f-hero .f-lead + .f-lead { margin-top: clamp(10px, 0.65vw, 16px); }
        /* 第二句作收束 */
        .f-hero .f-lead:nth-of-type(2) {
            margin-top: clamp(14px, 0.9vw, 22px);
            color: rgba(255,255,255,.96);
            font-weight: 500;
        }
        .f-hero .f-cta { margin-top: clamp(32px, 2.5vw, 48px); }
        .f-hero .f-lead b { color: #fff; font-weight: 600; }
        .f-cta {
            display: flex; flex-wrap: wrap; gap: clamp(12px, 0.8vw, 16px); margin-bottom: 0;
            opacity: 0; transform: translateY(20px);
        }
        .f-btn {
            display: inline-flex; align-items: center; justify-content: center; gap: 8px;
            box-sizing: border-box;
            min-height: clamp(42px, 2.3vw, 52px); padding: 0 clamp(22px, 1.5vw, 32px);
            font-size: clamp(15px, 0.89vw, 18px); font-weight: 700; line-height: 1;
            /* 微软雅黑字形偏上，略下移做光学居中 */
            padding-top: 2px;
            border-radius: 4px; border: 1px solid transparent;
            transition: transform .2s, background .2s, border-color .2s, box-shadow .2s;
        }
        .f-btn:hover { transform: translateY(-2px); }
        .f-btn-primary {
            background: var(--f-cyan); color: #fff !important;
            box-shadow: 0 8px 22px rgba(0, 161, 226, .32);
        }
        .f-btn-primary:hover { background: #33b4e8; color: #fff !important; }
        .f-btn-ghost {
            background: rgba(255,255,255,.06); color: #fff !important;
            border-color: rgba(0, 161, 226, 0.8);
        }
        .f-btn-ghost:hover { background: rgba(255,255,255,.12); }
        .f-metrics {
            display: flex; flex-wrap: nowrap; align-items: center;
            gap: 0;
            margin: clamp(20px, 1.4vw, 32px) 0 0; padding-top: 0;
            border-top: none;
            list-style: none;
            width: max-content;
            max-width: 100%;
            opacity: 0; transform: translateY(20px);
        }
        .f-metrics li {
            display: inline-flex; align-items: center; flex: 0 0 auto;
            margin: 0; padding: 0 clamp(18px, 1.1vw, 28px) 0 0;
            font-size: clamp(15px, 0.94vw, 20px); line-height: 1.4;
            color: rgba(255,255,255,.78);
            white-space: nowrap;
            letter-spacing: .01em;
        }
        .f-metrics li + li {
            padding-left: clamp(18px, 1.1vw, 28px);
            border-left: 1px solid rgba(255,255,255,.18);
        }
        .f-metrics .f-count {
            font-size: clamp(18px, 1.1vw, 24px); font-weight: 700; color: #7dd3fc;
            font-variant-numeric: tabular-nums;
            margin-right: 4px;
            line-height: 1;
        }
        .f-hero.is-in .f-kicker,
        .f-hero.is-in h1,
        .f-hero.is-in .f-lead,
        .f-hero.is-in .f-cta,
        .f-hero.is-in .f-metrics {
            opacity: 1; transform: none;
            transition: opacity .6s cubic-bezier(.22,1,.36,1), transform .6s cubic-bezier(.22,1,.36,1);
        }
        .f-hero.is-in .f-kicker { transition-delay: .02s; }
        .f-hero.is-in h1 { transition-delay: .08s; }
        .f-hero.is-in .f-lead { transition-delay: .14s; }
        .f-hero.is-in .f-cta { transition-delay: .22s; }
        .f-hero.is-in .f-metrics { transition-delay: .3s; }
        @media (max-width: 991px) {
            .f-hero { height: auto; min-height: 0; }
            .f-hero > .f-wrap { flex: none; align-items: flex-start; }
            .f-hero-diagram { display: none; }
            .f-metrics { flex-wrap: wrap; width: auto; }
            .f-metrics li { white-space: normal; }
            .f-metrics li + li { border-left: 0; padding-left: 0; }
        }

        /* ≥1200：1920 基准等比缩放（4K/超宽同步放大，不用 clamp 顶死上限） */
        @media (min-width: 1200px) {
            .f-hero {
                height: calc(100vw * 400 / 1920);
                min-height: 0;
                background-size: 100% 100%;
                background-position: right center;
            }
            .f-hero-body {
                max-width: calc(100vw * 900 / 1920);
            }
            .f-hero h1 {
                font-size: calc(100vw * 40 / 1920);
                margin-bottom: calc(100vw * 34 / 1920);
                line-height: 1.22;
            }
            .f-hero .f-lead {
                font-size: calc(100vw * 17 / 1920);
                line-height: 1.58;
            }
            .f-hero .f-lead + .f-lead { margin-top: calc(100vw * 12 / 1920); }
            .f-hero .f-lead:nth-of-type(2) { margin-top: calc(100vw * 14 / 1920); }
            .f-hero .f-cta { margin-top: calc(100vw * 34 / 1920); }
            .f-cta { gap: calc(100vw * 16 / 1920); }
            .f-btn {
                min-height: calc(100vw * 42 / 1920);
                padding: 0 calc(100vw * 26 / 1920);
                font-size: calc(100vw * 16 / 1920);
            }
            .f-metrics {
                margin-top: calc(100vw * 22 / 1920);
            }
            .f-metrics li {
                font-size: calc(100vw * 16 / 1920);
                padding-right: calc(100vw * 22 / 1920);
            }
            .f-metrics li + li {
                padding-left: calc(100vw * 22 / 1920);
            }
            .f-metrics .f-count {
                font-size: calc(100vw * 20 / 1920);
            }
            .f-proto {
                padding: calc(100vw * 8 / 1920) 0;
            }
            .f-proto-row a {
                font-size: calc(100vw * 13 / 1920);
                line-height: 1.25;
            }
            .f-proto-row a.is-main {
                font-size: calc(100vw * 14 / 1920);
            }
            .f-proto-row a + a::before {
                margin: 0 calc(100vw * 12 / 1920);
            }

            #fCaps.f-sec {
                padding-top: calc(100vw * 72 / 1920);
                padding-bottom: calc(100vw * 64 / 1920);
            }
            #fCaps .f-head { margin-bottom: calc(100vw * 40 / 1920); }
            #fInd.f-sec { padding: calc(100vw * 64 / 1920) 0; }
            #fInd .f-head { margin-bottom: calc(100vw * 32 / 1920); max-width: none; }
            .f-head h2 {
                font-size: calc(100vw * 42 / 1920);
                margin-bottom: calc(100vw * 18 / 1920);
            }
            .f-head p { font-size: calc(100vw * 24 / 1920); }
            .f-head .f-label {
                font-size: calc(100vw * 18 / 1920);
                margin-bottom: calc(100vw * 10 / 1920);
            }
            .f-cap-grid { gap: calc(100vw * 28 / 1920); }
            .f-cap-main .f-cap-media,
            .f-cap-sec .f-cap-media {
                height: calc(100vw * 480 / 1920);
                min-height: calc(100vw * 480 / 1920);
            }
            .f-cap-main .f-cap-body,
            .f-cap-sec .f-cap-body {
                padding: calc(100vw * 52 / 1920) calc(100vw * 18 / 1920) calc(100vw * 16 / 1920);
            }
            .f-cap-main h3,
            .f-cap-sec h3 {
                font-size: calc(100vw * 22 / 1920);
            }
            .f-stack { height: calc(100vw * 680 / 1920); }

            .f-support {
                padding: calc(100vw * 64 / 1920) 0 calc(100vw * 72 / 1920);
            }
            .f-support-inner {
                gap: calc(100vw * 28 / 1920) calc(100vw * 48 / 1920);
            }
            .f-support-copy h2 {
                font-size: calc(100vw * 30 / 1920);
                margin-bottom: calc(100vw * 12 / 1920);
            }
            .f-support-copy p { font-size: calc(100vw * 18 / 1920); }
            .f-support-actions .f-support-hotline {
                font-size: calc(100vw * 17 / 1920);
            }
            .f-support-actions .f-support-hotline a {
                font-size: calc(100vw * 22 / 1920);
            }
            .f-support-btn {
                min-height: calc(100vw * 48 / 1920);
                padding: 0 calc(100vw * 22 / 1920);
                font-size: calc(100vw * 18 / 1920);
            }
            .f-support-btn i { font-size: calc(100vw * 16 / 1920); }
        }

        /* 协议选型：单行 */
        .f-proto {
            position: relative;
            z-index: 3;
            flex: none;
            background: linear-gradient(180deg, rgba(7,26,46,0) 0%, rgba(7,26,46,.55) 40%, rgba(7,26,46,.82) 100%);
            border-top: 1px solid rgba(255,255,255,.1);
            padding: clamp(8px, 0.52vw, 14px) 0;
        }
        .f-proto-row {
            display: flex;
            flex-wrap: wrap;
            align-items: center;
            justify-content: flex-start;
            gap: 0;
            min-width: 0;
            overflow: hidden;
            -ms-overflow-style: none;
        }
        .f-proto-row a {
            flex: 0 0 auto;
            display: inline-flex; align-items: center;
            padding: 2px 0;
            font-size: clamp(12px, 0.68vw, 15px);
            font-weight: 500;
            color: rgba(255,255,255,.62) !important;
            line-height: 1.3;
            white-space: nowrap;
            text-decoration: none !important;
            border: none;
            transition: color .18s;
        }
        .f-proto-row a + a::before {
            content: "|";
            display: inline-block;
            margin: 0 clamp(6px, 0.42vw, 12px);
            color: rgba(255,255,255,.35);
            font-weight: 400;
            font-size: inherit;
            pointer-events: none;
            border: none;
        }
        .f-proto-row a span {
            display: inline-block;
            padding-bottom: 2px;
            border-bottom: 2px solid transparent;
            transition: border-color .18s, color .18s;
        }
        .f-proto-row a.is-main {
            color: #fff !important;
            font-weight: 700;
            font-size: clamp(13px, 0.73vw, 16px);
        }
        .f-proto-row a:hover,
        .f-proto-row a.is-main:hover,
        .f-proto-row a.f-proto-more:hover {
            color: #7dd3fc !important;
            text-decoration: none !important;
        }
        .f-proto-row a:hover span,
        .f-proto-row a.is-main:hover span,
        .f-proto-row a.f-proto-more:hover span {
            border-bottom-color: #00a1e2;
        }
        .f-proto-row a.f-proto-more {
            color: #fff !important;
            font-weight: 500;
        }
        .f-proto-row a:focus,
        .f-proto-row a:focus-visible {
            outline: none;
            text-decoration: none !important;
        }
        .f-proto-row a:focus span,
        .f-proto-row a:focus-visible span {
            border-bottom-color: #00a1e2;
        }

        /* Sections */
        .f-sec { padding: 72px 0; }
        .f-sec-alt { background: var(--f-bg); }
        /* 核心能力紧跟 Hero，1920×1080 首屏露出第一行卡片 */
        #fCaps.f-sec { padding: clamp(40px, 2.75vw, 72px) 0 clamp(32px, 2.2vw, 64px); }
        #fCaps .f-head { margin-bottom: clamp(24px, 1.55vw, 40px); max-width: 980px; }
        #fCaps .f-head p { white-space: nowrap; }
        @media (max-width: 991px) {
            #fCaps .f-head p { white-space: normal; }
        }
        /* 行业场景 */
        #fInd.f-sec { padding: clamp(28px, 2.08vw, 64px) 0; }
        #fInd .f-head { margin-bottom: clamp(18px, 1.46vw, 32px); max-width: none; }
        #fInd .f-head p { white-space: nowrap; }
        @media (max-width: 991px) {
            #fInd .f-head p { white-space: normal; }
        }
        .f-head { margin-bottom: 36px; max-width: 680px; }
        .f-head .f-label {
            display: inline-block; font-size: clamp(13px, 0.78vw, 18px); font-weight: 700;
            letter-spacing: .1em; color: var(--f-cyan); margin-bottom: 10px;
        }
        .f-head h2 {
            font-size: clamp(24px, 1.56vw, 42px); font-weight: 700; color: var(--f-text);
            margin: 0 0 clamp(8px, 0.625vw, 18px); line-height: 1.3;
        }
        .f-head p { font-size: clamp(15px, 0.94vw, 24px); color: var(--f-muted); margin: 0; line-height: 1.7; }
        .f-head p b { color: var(--f-text); }

        /* Capability cards：整图作卡 + 底部毛玻璃标题 */
        .f-cap-grid {
            display: grid;
            grid-template-columns: repeat(3, 1fr);
            gap: clamp(12px, 1.04vw, 28px);
            align-items: stretch;
        }
        .f-cap-grid .f-cap {
            grid-column: auto;
            min-height: 0;
        }
        @media (max-width: 991px) {
            .f-cap-grid { grid-template-columns: repeat(2, 1fr); }
        }
        @media (max-width: 560px) {
            .f-cap-grid { grid-template-columns: 1fr; }
        }

        .f-cap-main,
        .f-cap-sec {
            border-color: rgba(215,224,234,.55);
            box-shadow: 0 12px 32px rgba(7,26,46,.1);
        }
        .f-cap-main .f-cap-media,
        .f-cap-sec .f-cap-media {
            height: clamp(260px, 15.625vw, 480px);
            flex: none;
            min-height: clamp(260px, 15.625vw, 480px);
        }
        .f-cap-main .f-cap-body,
        .f-cap-sec .f-cap-body {
            padding: 52px 18px 16px;
            flex: none;
        }
        .f-cap-main h3,
        .f-cap-sec h3 {
            font-size: clamp(15px, 0.885vw, 22px);
            line-height: 1.4;
            margin-bottom: 0;
            min-height: 0;
        }
        .f-cap-main .desc,
        .f-cap-sec .desc {
            font-size: 18px;
            line-height: 1.65;
            display: -webkit-box;
            -webkit-line-clamp: 2;
            -webkit-box-orient: vertical;
            overflow: hidden;
            min-height: 0;
        }
        .f-cap-kicker {
            display: inline-flex; align-items: center; gap: 8px;
            font-size: 14px; font-weight: 800; letter-spacing: .06em;
            text-transform: none; color: var(--f-cyan);
            margin-bottom: 8px;
        }
        .f-cap-kicker em {
            font-style: normal;
            color: #fff;
            background: linear-gradient(120deg, var(--f-blue), var(--f-cyan));
            padding: 3px 8px; border-radius: 999px;
            letter-spacing: .04em;
        }

        .f-cap {
            position: relative; display: block;
            height: auto;
            background: #0c2f4d;
            border: 1px solid rgba(125,211,252,.18);
            border-radius: var(--f-radius);
            overflow: hidden;
            color: inherit;
            text-decoration: none !important;
            cursor: pointer;
            box-shadow: 0 12px 28px rgba(7,26,46,.12);
            transition:
                transform .28s cubic-bezier(.22,1,.36,1),
                box-shadow .28s cubic-bezier(.22,1,.36,1),
                border-color .28s,
                opacity .3s;
            opacity: 1; transform: none;
            isolation: isolate;
        }
        .f-cap::before { display: none; }
        .js-anim .f-cap.f-reveal:not(.is-in) {
            opacity: 0; transform: translateY(22px) scale(.98);
        }
        .f-cap.is-in { opacity: 1; transform: none; }
        .f-cap.is-hide { display: none !important; }
        .f-cap.is-hot {
            border-color: rgba(0,161,226,.5);
            box-shadow: 0 18px 40px rgba(0,119,200,.18);
            opacity: 1 !important; transform: none !important;
            z-index: 2;
        }
        .f-cap:hover {
            transform: translateY(-4px);
            border-color: rgba(0,161,226,.4);
            box-shadow: 0 18px 36px rgba(7,26,46,.18);
            color: inherit;
        }
        .f-cap.is-hot:hover { transform: translateY(-4px); }
        .f-cap-empty {
            display: none;
            margin: 8px 0 0;
            padding: 18px 16px;
            border: 1px dashed var(--f-line);
            border-radius: 12px;
            color: var(--f-muted);
            font-size: 14px;
            text-align: center;
            background: #fff;
        }
        .f-cap-empty.is-show { display: block; }

        .f-cap-media {
            position: relative; height: clamp(260px, 15.625vw, 480px); overflow: hidden;
            background:
                radial-gradient(ellipse 80% 70% at 80% 20%, rgba(0,161,226,.28), transparent 55%),
                linear-gradient(145deg, #071a2e 0%, #0c2f4d 55%, #123a5c 100%);
        }
        .f-cap-media img {
            width: 100%; height: 100%; object-fit: cover; display: block;
            opacity: 1; transition: transform .55s cubic-bezier(.22,1,.36,1);
        }
        .f-cap:hover .f-cap-media img { transform: scale(1.05); }
        .f-cap-media::after {
            display: none;
        }
        .f-cap-shine {
            position: absolute; inset: 0; pointer-events: none; overflow: hidden; z-index: 2;
        }
        .f-cap-shine::before {
            content: ''; position: absolute; top: 0; left: -45%;
            width: 34%; height: 100%;
            background: linear-gradient(100deg, transparent, rgba(255,255,255,.28), transparent);
            transform: skewX(-18deg); opacity: 0;
        }
        .f-cap:hover .f-cap-shine::before,
        .f-cap.is-hot .f-cap-shine::before { animation: fShine .9s ease; }
        @keyframes fShine {
            0% { left: -45%; opacity: 0; }
            30% { opacity: 1; }
            100% { left: 125%; opacity: 0; }
        }

        .f-flow-svg {
            position: absolute; inset: 0; width: 100%; height: 100%;
            pointer-events: none; z-index: 3; opacity: 0; transition: opacity .3s;
        }
        .f-cap.is-hot .f-flow-svg,
        .f-cap:hover .f-flow-svg { opacity: .85; }
        .f-flow-line {
            fill: none; stroke: #7dd3fc; stroke-width: 1.8;
            stroke-dasharray: 5 7; animation: fFlowMove 1.15s linear infinite;
        }
        @keyframes fFlowMove { to { stroke-dashoffset: -24; } }
        .f-flow-node { fill: #7dd3fc; animation: fNodePulse 1.6s ease-in-out infinite; }
        @keyframes fNodePulse { 0%,100% { opacity: .45; } 50% { opacity: 1; } }

        .f-cap .tag {
            position: absolute; left: 14px; top: 14px; z-index: 5;
            font-size: clamp(12px, 0.73vw, 18px); font-weight: 700; letter-spacing: .06em;
            color: #fff;
            margin: 0;
            padding: clamp(4px, 0.26vw, 8px) clamp(8px, 0.52vw, 14px);
            border-radius: 999px;
            background: rgba(255,255,255,.22);
            border: 1px solid rgba(255,255,255,.38);
            backdrop-filter: blur(8px);
            -webkit-backdrop-filter: blur(8px);
            text-shadow: 0 1px 6px rgba(0,0,0,.25);
        }
        .f-cap-body {
            position: absolute;
            left: 0; right: 0; bottom: 0;
            z-index: 6;
            padding: 48px 18px 16px;
            display: block;
            background: linear-gradient(
                180deg,
                rgba(7, 26, 46, 0) 0%,
                rgba(7, 26, 46, .28) 45%,
                rgba(7, 26, 46, .62) 100%
            );
            border-top: none;
            box-shadow: none;
            backdrop-filter: none;
            -webkit-backdrop-filter: none;
            transition: background .28s ease;
        }
        .f-cap:hover .f-cap-body,
        .f-cap.is-hot .f-cap-body {
            background: linear-gradient(
                180deg,
                rgba(7, 26, 46, 0) 0%,
                rgba(7, 26, 46, .45) 40%,
                rgba(7, 26, 46, .82) 100%
            );
        }
        .f-cap:hover h3,
        .f-cap.is-hot h3 {
            color: #7dd3fc;
            text-shadow: 0 1px 3px rgba(0,0,0,.45);
        }
        .f-cap h3 {
            font-size: clamp(15px, 0.885vw, 22px); margin: 0; line-height: 1.4; color: #fff;
            font-weight: 700;
            text-shadow: 0 1px 10px rgba(0,0,0,.35);
            transition: color .25s, text-shadow .25s;
        }
        .f-cap .desc {
            font-size: 15px; color: rgba(255,255,255,.82); line-height: 1.55; margin: 6px 0 0;
        }
        .f-cap .desc b { color: #fff; }

        @media (prefers-reduced-motion: reduce) {
            .f-cap, .f-cap-media img {
                transition: none !important;
            }
            .f-cap:hover { transform: none; }
            .f-cap-shine::before, .f-flow-line, .f-flow-node { animation: none !important; }
        }

        /* Architecture pipeline */
        .f-arch-head { margin-bottom: 28px; }
        .f-arch-head .f-label { margin-bottom: 8px; }
        .f-arch-head h2 {
            font-size: clamp(26px, 3.2vw, 34px);
            margin: 0 0 16px; font-weight: 800; color: var(--f-text); line-height: 1.25;
        }
        .f-arch-line {
            display: flex; flex-wrap: nowrap; align-items: center; gap: 10px 14px;
            overflow-x: auto; -webkit-overflow-scrolling: touch;
            padding-bottom: 2px;
        }
        .f-arch-line span {
            display: inline-flex; align-items: baseline; gap: 8px;
            white-space: nowrap;
            font-size: 14px; color: var(--f-muted);
        }
        .f-arch-line strong {
            font-size: 15px; font-weight: 800; color: var(--f-blue);
            letter-spacing: .02em;
        }
        .f-arch-line i.fa {
            color: #9eb4c6; flex: 0 0 auto;
            margin: 0 2px;
        }
        .f-head h2 i.fa {
            color: var(--f-cyan);
            font-size: .85em;
            margin: 0 4px;
            vertical-align: middle;
        }
        .f-stack-more a i.fa {
            margin-left: 4px;
        }
        .f-pipe {
            display: grid;
            grid-template-columns: repeat(3, 1fr);
            gap: 18px;
            align-items: stretch;
        }
        @media (max-width: 900px) {
            .f-pipe { grid-template-columns: 1fr; }
            .f-arch-line { flex-wrap: wrap; }
        }
        .f-pipe-step {
            display: flex; flex-direction: column;
            min-height: 0;
            background: #fff;
            border: 1px solid rgba(215,224,234,.9);
            border-radius: var(--f-radius);
            padding: 22px 22px 18px;
            position: relative;
            overflow: hidden;
            opacity: 0; transform: translateY(24px);
            box-shadow: 0 10px 28px rgba(7,26,46,.05);
            transition:
                opacity .55s ease, transform .35s cubic-bezier(.22,1,.36,1),
                border-color .3s, box-shadow .35s;
        }
        .f-pipe-step::after {
            position: absolute; right: 10px; top: 4px;
            font-size: 72px; font-weight: 800; line-height: 1;
            color: rgba(0,119,200,.05); letter-spacing: -.04em;
            pointer-events: none; user-select: none;
        }
        .f-pipe-step:nth-child(1)::after { content: '01'; }
        .f-pipe-step:nth-child(2)::after { content: '02'; }
        .f-pipe-step:nth-child(3)::after { content: '03'; }
        .f-pipe-step.is-mid {
            border-color: rgba(215,224,234,.9);
            background: #fff;
        }
        .f-pipe-step.is-mid::before { display: none; }
        .f-pipe-step.is-in {
            opacity: 1; transform: none;
        }
        .f-pipe-step.is-on {
            border-color: rgba(215,224,234,.9);
            box-shadow: 0 10px 28px rgba(7,26,46,.05);
        }
        .f-pipe-step.is-in:hover {
            border-color: rgba(215,224,234,.95);
            box-shadow: 0 14px 32px rgba(7,26,46,.08);
            transform: translateY(-4px);
        }
        .f-pipe-top {
            margin-bottom: 18px; position: relative; z-index: 1;
        }
        .f-pipe-num {
            font-size: 14px; font-weight: 800; letter-spacing: .12em;
            color: var(--f-cyan);
        }
        .f-pipe-step h3 {
            font-size: 19px; margin: 0 0 10px; position: relative; z-index: 1;
            line-height: 1.35;
        }
        .f-pipe-hook {
            display: inline-block;
            font-size: 14px; font-weight: 800;
            color: var(--f-blue);
            margin-bottom: 12px;
            position: relative; z-index: 1;
            padding-bottom: 8px;
            border-bottom: 2px solid rgba(0,161,226,.25);
        }
        .f-pipe-step p {
            font-size: 14px; color: var(--f-muted); line-height: 1.7; margin: 0;
            position: relative; z-index: 1; flex: 0 1 auto;
        }
        .f-pipe-step p b { color: var(--f-text); }
        .f-pipe-tags {
            display: flex; flex-wrap: wrap; gap: 6px;
            margin-top: 14px; padding-top: 12px;
            border-top: 1px dashed var(--f-line);
            position: relative; z-index: 1;
        }
        .f-pipe-tags span {
            font-size: 14px; padding: 4px 9px; border-radius: 3px;
            background: #eaf5fb; color: var(--f-navy); font-weight: 600;
        }
        @media (prefers-reduced-motion: reduce) {
            .f-pipe-step { transition: none !important; transform: none !important; opacity: 1 !important; }
        }

        /* Industry stacked accordion — photo panels */
        .f-stack {
            display: flex;
            height: clamp(400px, 23.44vw, 680px);
            border-radius: 8px;
            overflow: hidden;
            border: 1px solid var(--f-line);
            background: #0b1928;
            box-shadow: 0 12px 32px rgba(7,26,46,.08);
        }
        .f-stack-item {
            position: relative;
            flex: 1 1 0;
            min-width: 0;
            overflow: hidden;
            cursor: pointer;
            text-decoration: none;
            color: inherit;
            transition:
                flex .75s cubic-bezier(.22,1,.36,1),
                box-shadow .45s ease;
            border-right: 1px solid rgba(255,255,255,.14);
            will-change: flex;
        }
        .f-stack-item:last-child { border-right: 0; }
        .f-stack-item.is-open {
            flex: 3.8 1 0;
            z-index: 2;
            box-shadow: inset 0 0 0 1px rgba(0,161,226,.35), 0 0 28px rgba(0,161,226,.18);
        }
        .f-stack.is-hovering .f-stack-item:not(.is-open) { flex: .72 1 0; }
        .f-stack-bg {
            position: absolute; inset: 0;
            background-size: cover;
            background-position: center;
            transform: scale(1.08);
            transition: transform .9s cubic-bezier(.22,1,.36,1), filter .55s ease;
            filter: brightness(.58) saturate(.9);
        }
        .f-stack-item.is-open .f-stack-bg {
            transform: scale(1);
            filter: brightness(.82) saturate(1.05);
        }
        .f-stack-item:nth-child(1) .f-stack-bg { background-image: url(/images/index/industries/semi.jpg); }
        .f-stack-item:nth-child(2) .f-stack-bg { background-image: url(/images/index/industries/auto.jpg); }
        .f-stack-item:nth-child(3) .f-stack-bg { background-image: url(/images/index/industries/robot.jpg?v=20260827r); }
        .f-stack-item:nth-child(4) .f-stack-bg { background-image: url(/images/index/industries/energy.jpg); }
        .f-stack-item:nth-child(5) .f-stack-bg { background-image: url(/images/index/industries/water.jpg); }
        .f-stack-shade {
            position: absolute; inset: 0;
            background: linear-gradient(180deg, rgba(8,22,38,.28) 0%, rgba(8,22,38,.62) 100%);
            transition: background .55s ease, opacity .45s ease;
            pointer-events: none;
        }
        .f-stack-item.is-open .f-stack-shade {
            background: linear-gradient(105deg, rgba(8,22,38,.5) 0%, rgba(8,22,38,.12) 48%, rgba(8,22,38,.38) 100%);
        }
        .f-stack-shine {
            position: absolute; inset: 0;
            pointer-events: none;
            z-index: 1;
            opacity: 0;
            background: linear-gradient(
                105deg,
                transparent 30%,
                rgba(255,255,255,.18) 48%,
                rgba(125,211,252,.22) 52%,
                transparent 70%
            );
            transform: translateX(-60%);
        }
        .f-stack-item.is-shine .f-stack-shine {
            opacity: 1;
            animation: fStackShine .85s cubic-bezier(.22,1,.36,1) forwards;
        }
        @keyframes fStackShine {
            0% { transform: translateX(-70%); opacity: 0; }
            35% { opacity: 1; }
            100% { transform: translateX(70%); opacity: 0; }
        }
        .f-stack-vtitle {
            position: absolute; inset: 0;
            display: flex; align-items: center; justify-content: center;
            writing-mode: vertical-rl;
            letter-spacing: .28em;
            font-size: 15px; font-weight: 800;
            color: #fff;
            text-shadow: 0 2px 12px rgba(0,0,0,.45);
            opacity: 1;
            transition: opacity .35s ease, transform .45s ease;
            pointer-events: none;
            z-index: 2;
        }
        .f-stack-item.is-open .f-stack-vtitle {
            opacity: 0;
            transform: translateY(8px);
        }
        .f-stack-panel {
            position: absolute; left: 32px; right: 32px; bottom: 32px;
            max-width: 360px;
            background: rgba(255,255,255,.95);
            border: 1px solid rgba(255,255,255,.75);
            border-radius: 6px;
            padding: 22px 22px 20px;
            opacity: 0;
            transform: translateY(22px) scale(.98);
            transition:
                opacity .5s cubic-bezier(.22,1,.36,1) .12s,
                transform .28s cubic-bezier(.22,1,.36,1),
                box-shadow .28s ease,
                border-color .28s ease;
            z-index: 3;
            pointer-events: none;
            box-shadow: 0 14px 36px rgba(7,26,46,.16);
            cursor: pointer;
        }
        .f-stack-item.is-open .f-stack-panel {
            opacity: 1;
            transform: none;
            pointer-events: auto;
        }
        .f-stack-item.is-open .f-stack-panel:hover {
            transform: translateY(-2px);
            border-color: rgba(0,161,226,.28);
            box-shadow: 0 16px 36px rgba(7,26,46,.18);
        }
        .f-stack-item.is-open .f-stack-panel:hover h3 {
            color: var(--f-blue);
        }
        .f-stack-panel .tag {
            display: inline-block;
            font-size: 14px; font-weight: 800; letter-spacing: .08em;
            color: var(--f-cyan); margin-bottom: 8px;
        }
        .f-stack-panel h3 {
            font-size: 22px; margin: 0 0 8px; color: var(--f-text); line-height: 1.3;
            transition: color .25s ease;
        }
        .f-stack-panel p {
            font-size: 18px; color: var(--f-muted); margin: 0; line-height: 1.7;
        }
        .f-stack-more {
            margin-top: 14px;
            text-align: right;
            font-size: 16px;
        }
        .f-stack-more a {
            color: var(--f-blue); font-weight: 700; text-decoration: none;
        }
        .f-stack-more a:hover { text-decoration: underline; }
        @media (max-width: 900px) {
            .f-stack {
                flex-direction: column;
                height: auto;
            }
            .f-stack-item,
            .f-stack-item.is-open,
            .f-stack.is-hovering .f-stack-item:not(.is-open) {
                flex: none !important;
                min-height: 88px;
                border-right: 0;
                border-bottom: 1px solid rgba(255,255,255,.12);
            }
            .f-stack-item:last-child { border-bottom: 0; }
            .f-stack-item.is-open { min-height: 300px; }
            .f-stack-vtitle {
                writing-mode: horizontal-tb;
                letter-spacing: .12em;
                justify-content: flex-start;
                padding-left: 20px;
            }
            .f-stack-panel {
                left: 16px; right: 16px; bottom: 16px;
                max-width: none;
            }
        }
        @media (prefers-reduced-motion: reduce) {
            .f-stack-item, .f-stack-bg, .f-stack-panel, .f-stack-vtitle, .f-stack-shine { transition: none !important; animation: none !important; }
        }

        /* Resources */
        /* Resources — taller vertical cards */
        .f-res {
            display: grid;
            grid-template-columns: repeat(3, 1fr);
            gap: 20px;
        }
        @media (max-width: 800px) {
            .f-res { grid-template-columns: 1fr; }
        }
        .f-res-card {
            display: flex; flex-direction: column;
            min-height: 220px;
            padding: 24px 24px 22px;
            background: #fff;
            border: 1px solid var(--f-line);
            border-radius: var(--f-radius);
            color: inherit;
            position: relative;
            overflow: hidden;
            transition:
                transform .35s cubic-bezier(.22,1,.36,1),
                border-color .3s,
                box-shadow .35s;
        }
        .f-res-card::before {
            content: '';
            position: absolute; left: 0; right: 0; top: 0; height: 3px;
            background: linear-gradient(90deg, var(--f-blue), var(--f-cyan));
            transform: scaleX(.28);
            transform-origin: left;
            transition: transform .4s cubic-bezier(.22,1,.36,1);
        }
        .f-res-card:hover {
            transform: translateY(-6px);
            border-color: rgba(0,161,226,.4);
            box-shadow: 0 18px 40px rgba(7,26,46,.1);
            color: inherit;
        }
        .f-res-card:hover::before { transform: scaleX(1); }
        .f-res-top {
            display: flex; align-items: center; justify-content: flex-start;
            margin-bottom: 16px;
        }
        .f-res-cat {
            font-size: 14px; font-weight: 800; letter-spacing: .12em;
            color: var(--f-cyan);
            text-transform: uppercase;
        }
        .f-res-card h3 {
            font-size: 19px; margin: 0 0 12px; line-height: 1.4;
            color: var(--f-text);
        }
        .f-res-card p {
            font-size: 14px; color: var(--f-muted); margin: 0;
            line-height: 1.7; flex: 1;
        }
        .f-res-card .dl {
            margin-top: 22px; padding-top: 16px;
            border-top: 1px dashed var(--f-line);
            font-size: 14px; font-weight: 700; color: var(--f-blue);
            display: inline-flex; align-items: center; gap: 6px;
        }
        .f-res-card .dl i {
            font-style: normal;
            transition: transform .3s cubic-bezier(.22,1,.36,1);
        }
        .f-res-card:hover .dl i { transform: translateX(5px); }

        /* Trust */
        .f-trust {
            background: var(--f-deep); color: rgba(255,255,255,.86); padding: 28px 0;
        }
        .f-trust-inner {
            display: flex; flex-wrap: wrap; gap: 14px 28px;
            align-items: center; justify-content: space-between; font-size: 14px;
        }
        .f-trust strong { color: #7dd3fc; }
        .f-trust a {
            color: #fff !important; font-weight: 700;
            border-bottom: 1px solid rgba(255,255,255,.35);
        }

        /* Support CTA：浅色内容区收束，再接下方深色页脚 */
        .f-support {
            position: relative;
            padding: 64px 0 72px;
            background: var(--f-bg);
            border-top: 1px solid var(--f-line);
        }
        .f-support-inner {
            display: flex;
            flex-wrap: wrap;
            align-items: center;
            justify-content: space-between;
            gap: 28px 48px;
        }
        .f-support-copy {
            max-width: 680px;
        }
        .f-support-copy .f-label {
            display: inline-block;
            font-size: 15px;
            font-weight: 700;
            letter-spacing: .1em;
            color: var(--f-cyan);
            margin-bottom: 10px;
        }
        .f-support-copy h2 {
            margin: 0 0 12px;
            font-size: 30px;
            font-weight: 700;
            line-height: 1.3;
            color: var(--f-text);
        }
        .f-support-copy p {
            margin: 0;
            font-size: 18px;
            line-height: 1.7;
            color: var(--f-muted);
        }
        .f-support-actions {
            display: flex;
            flex-wrap: wrap;
            align-items: center;
            gap: 12px 20px;
        }
        .f-support-actions .f-support-hotline {
            margin: 0;
            font-size: 17px;
            line-height: 1.5;
            color: var(--f-muted);
            white-space: nowrap;
        }
        .f-support-actions .f-support-hotline a {
            font-size: 22px;
            font-weight: 700;
            color: var(--f-blue) !important;
            text-decoration: none !important;
            letter-spacing: 0.02em;
        }
        .f-support-actions .f-support-hotline a:hover {
            color: var(--f-cyan) !important;
        }
        .f-support-btn {
            display: inline-flex;
            align-items: center;
            justify-content: center;
            gap: 10px;
            min-height: 48px;
            padding: 0 22px;
            box-sizing: border-box;
            border: 1px solid var(--f-line);
            border-radius: 3px;
            background: #fff;
            color: var(--f-text) !important;
            font-size: 18px;
            font-weight: 700;
            line-height: 1;
            text-decoration: none !important;
            box-shadow: 0 4px 14px rgba(7, 26, 46, .04);
            transition: transform .2s, background .2s, border-color .2s, color .2s, box-shadow .2s;
        }
        .f-support-btn i {
            color: var(--f-cyan);
            font-size: 16px;
        }
        .f-support-btn:hover {
            transform: translateY(-2px);
            border-color: rgba(0, 161, 226, .45);
            color: var(--f-blue) !important;
            box-shadow: 0 10px 22px rgba(7, 26, 46, .08);
        }
        @media (max-width: 767px) {
            .f-support { padding: 48px 0 56px; }
            .f-support-inner { align-items: stretch; }
            .f-support-actions { width: 100%; }
            .f-support-actions .f-support-hotline {
                width: 100%;
                white-space: normal;
            }
            .f-support-btn { flex: 1 1 100%; }
        }
