/* ============================================================
   software.css — 软件定制开发页独立版式
   色调与站点一致（#4679ea 蓝系），版式与组件为页面独立设计
   ============================================================ */

/* ---------- 通用 ---------- */
.sw-sec{
    padding: 92px 0;
}
.sw-sec.bg{
    background: #f5f7fc;
}
.sw-wrap{
    width: 1280px;
    max-width: 92%;
    margin: 0 auto;
}
.sw-head{
    text-align: center;
    margin-bottom: 60px;
}
.sw-head .kicker{
    display: inline-block;
    font-size: 13px;
    letter-spacing: 4px;
    color: #4679ea;
    background: #edf2ff;
    border-radius: 4px;
    padding: 6px 16px;
    margin-bottom: 18px;
}
.sw-head h2{
    font-size: 32px;
    color: #222;
    line-height: 48px;
}
.sw-head h2 em{
    font-style: normal;
    color: #4679ea;
}
.sw-head p{
    font-size: 15px;
    color: #888;
    line-height: 28px;
    margin-top: 8px;
}

/* ---------- 横幅（左文右代码窗） ---------- */
.sw-banner{
    position: relative;
    overflow: hidden;
    background: linear-gradient(100deg,#0d1c4a 0%,#16296b 52%,#2450bf 100%);
}
.sw-banner .streak{
    position: absolute;
    width: 900px;
    height: 320px;
    right: -140px;
    top: -220px;
    transform: rotate(-24deg);
    background: linear-gradient(90deg,transparent,rgba(120,160,255,.16),transparent);
}
.sw-banner .inner{
    position: relative;
    width: 1280px;
    max-width: 92%;
    margin: 0 auto;
    padding: 108px 0 100px;
    display: flex;
    align-items: center;
}
.sw-banner .txt{
    flex: 1.1;
    padding-right: 60px;
}
.sw-banner .tag{
    display: inline-block;
    font-size: 12px;
    letter-spacing: 5px;
    color: #cfdcff;
    border-bottom: 1px solid rgba(255,255,255,.35);
    padding: 0 2px 8px;
    margin-bottom: 26px;
}
.sw-banner h1{
    font-size: 48px;
    color: #fff;
    line-height: 70px;
    letter-spacing: 2px;
}
.sw-banner .sub{
    font-size: 16px;
    color: rgba(255,255,255,.8);
    line-height: 32px;
    margin: 16px 0 38px;
    max-width: 560px;
}
.sw-banner .nums{
    display: flex;
}
.sw-banner .nums li{
    color: #fff;
    padding: 0 34px;
    border-left: 1px solid rgba(255,255,255,.25);
}
.sw-banner .nums li:first-child{
    padding-left: 0;
    border-left: none;
}
.sw-banner .nums .num{
    font-size: 30px;
    line-height: 44px;
    font-weight: bold;
}
.sw-banner .nums .num i{
    font-style: normal;
    font-size: 16px;
}
.sw-banner .nums p{
    font-size: 13px;
    color: rgba(255,255,255,.65);
    line-height: 22px;
}

/* 代码窗口 Mock */
.sw-banner .win-box{
    flex: 1;
}
.sw-win{
    background: #0b1830;
    border: 1px solid rgba(255,255,255,.16);
    border-radius: 10px;
    box-shadow: 0 26px 60px rgba(4,10,30,.5);
    overflow: hidden;
}
.sw-win .bar{
    display: flex;
    align-items: center;
    padding: 13px 16px;
    border-bottom: 1px solid rgba(255,255,255,.1);
}
.sw-win .bar i{
    width: 10px;
    height: 10px;
    border-radius: 50%;
    margin-right: 7px;
}
.sw-win .bar i:nth-child(1){ background: #ff5f57; }
.sw-win .bar i:nth-child(2){ background: #febc2e; }
.sw-win .bar i:nth-child(3){ background: #28c840; }
.sw-win .bar .addr{
    flex: 1;
    text-align: center;
    font-size: 11px;
    color: rgba(255,255,255,.4);
    letter-spacing: 1px;
}
.sw-win .code{
    padding: 20px 18px 24px;
}
.sw-win .cl{
    height: 9px;
    border-radius: 3px;
    margin: 10px 0;
}
.sw-win .cl.c1{ width: 58%; background: rgba(95,141,255,.75); }
.sw-win .cl.c2{ width: 76%; background: rgba(161,188,255,.32); }
.sw-win .cl.c3{ width: 40%; background: rgba(122,224,195,.55); }
.sw-win .cl.c4{ width: 66%; background: rgba(161,188,255,.32); }
.sw-win .cl.c5{ width: 30%; background: rgba(95,141,255,.75); }
.sw-win .cl.c6{ width: 52%; background: rgba(122,224,195,.55); }
.sw-win .cl.c7{ width: 72%; background: rgba(161,188,255,.32); }
.sw-win .cur{
    display: inline-block;
    width: 7px;
    height: 12px;
    margin-top: 8px;
    background: #7ea8ff;
    animation: sw-blink 1s steps(1) infinite;
}
@keyframes sw-blink{
    50%{ opacity: 0; }
}

/* ---------- 服务范围（细线六宫格） ---------- */
.sw-scope{
    border: 1px solid #e2e7f4;
    border-radius: 10px;
    overflow: hidden;
    background: #fff;
    display: flex;
    flex-wrap: wrap;
}
.sw-scope li{
    width: 33.333%;
    box-sizing: border-box;
    padding: 38px 32px 34px;
    border-right: 1px solid #e2e7f4;
    border-bottom: 1px solid #e2e7f4;
    transition: background .3s;
}
.sw-scope li:nth-child(3n){
    border-right: none;
}
.sw-scope li:nth-last-child(-n+3){
    border-bottom: none;
}
.sw-scope li:hover{
    background: #f7f9ff;
}
.sw-scope .ico{
    width: 50px;
    height: 50px;
    border-radius: 8px;
    background: #edf2ff;
    display: flex;
    align-items: center;
    justify-content: center;
    margin-bottom: 18px;
}
.sw-scope .ico svg{
    width: 25px;
    height: 25px;
    stroke: #4679ea;
    fill: none;
    stroke-width: 1.6;
    stroke-linecap: round;
    stroke-linejoin: round;
}
.sw-scope h3{
    font-size: 17px;
    color: #222;
    line-height: 28px;
    margin-bottom: 8px;
}
.sw-scope p{
    font-size: 13px;
    color: #777;
    line-height: 23px;
}

/* ---------- 合作模式（幽灵数字） ---------- */
.sw-modes{
    display: flex;
    flex-wrap: wrap;
    margin: 0 -14px;
}
.sw-modes li{
    position: relative;
    width: calc(25% - 28px);
    margin: 0 14px 28px;
    background: #fff;
    border: 1px solid #e6e9f2;
    border-radius: 10px;
    padding: 30px 26px 26px;
    overflow: hidden;
    box-sizing: border-box;
    transition: transform .3s, box-shadow .3s, border-color .3s;
}
.sw-modes li:hover{
    transform: translateY(-6px);
    box-shadow: 0 14px 34px rgba(47,91,214,.13);
    border-color: #b9cbff;
}
.sw-modes .no{
    position: absolute;
    right: 12px;
    top: 2px;
    font-size: 58px;
    color: #eef2fb;
    font-weight: bold;
    line-height: 68px;
    font-family: Georgia, serif;
    transition: color .3s;
}
.sw-modes li:hover .no{
    color: #dce6ff;
}
.sw-modes h3{
    position: relative;
    font-size: 17px;
    color: #222;
    line-height: 28px;
    margin-bottom: 10px;
}
.sw-modes p{
    position: relative;
    font-size: 13px;
    color: #777;
    line-height: 23px;
    margin-bottom: 14px;
}
.sw-modes .tags{
    position: relative;
    font-size: 0;
}
.sw-modes .tags span{
    display: inline-block;
    font-size: 12px;
    color: #2f5bd6;
    background: #f0f4ff;
    border-radius: 4px;
    padding: 4px 12px;
    margin: 0 8px 6px 0;
}

/* ---------- 开发流程（箭头条） ---------- */
.sw-steps{
    display: flex;
}
.sw-steps li{
    position: relative;
    flex: 1;
    background: #eef3ff;
    margin-left: -16px;
    padding: 18px 16px 16px 36px;
    clip-path: polygon(0 0, calc(100% - 18px) 0, 100% 50%, calc(100% - 18px) 100%, 0 100%, 18px 50%);
    transition: background .3s;
}
.sw-steps li:first-child{
    margin-left: 0;
    clip-path: polygon(0 0, calc(100% - 18px) 0, 100% 50%, calc(100% - 18px) 100%, 0 100%);
    padding-left: 22px;
    border-radius: 6px 0 0 6px;
}
.sw-steps li:hover{
    background: linear-gradient(90deg,#2f5bd6,#4679ea);
}
.sw-steps li:hover b,
.sw-steps li:hover span{
    color: #fff;
}
.sw-steps b{
    display: block;
    font-size: 16px;
    color: #2b3a66;
    font-weight: normal;
    line-height: 24px;
}
.sw-steps span{
    font-size: 12px;
    color: #8792b8;
    line-height: 20px;
}

/* ---------- 技术栈 ---------- */
.sw-stack{
    background: #fff;
    border: 1px solid #e6e9f2;
    border-radius: 10px;
    padding: 40px 44px;
}
.sw-stack .row{
    display: flex;
    align-items: flex-start;
    padding: 16px 0;
    border-bottom: 1px dashed #e6eaf6;
}
.sw-stack .row:last-child{
    border-bottom: none;
}
.sw-stack .lab{
    width: 128px;
    flex: none;
    font-size: 15px;
    color: #222;
    line-height: 30px;
}
.sw-stack .lab i{
    display: inline-block;
    width: 8px;
    height: 8px;
    border-radius: 2px;
    background: #4679ea;
    margin-right: 10px;
    vertical-align: 2px;
}
.sw-stack .chips{
    flex: 1;
    font-size: 0;
}
.sw-stack .chips span{
    display: inline-block;
    font-size: 13px;
    color: #2f5bd6;
    line-height: 22px;
    border: 1px solid #d5dffb;
    background: #f8faff;
    border-radius: 20px;
    padding: 5px 16px;
    margin: 0 10px 10px 0;
}
.sw-industry{
    text-align: center;
    margin-top: 40px;
    font-size: 0;
}
.sw-industry b{
    font-size: 14px;
    color: #666;
    font-weight: normal;
    margin-right: 14px;
}
.sw-industry span{
    display: inline-block;
    font-size: 13px;
    color: #4679ea;
    background: #fff;
    border: 1px solid #d5dffb;
    border-radius: 4px;
    padding: 6px 16px;
    margin: 6px;
}

/* ---------- 服务保障（深色带） ---------- */
.sw-sla{
    background: linear-gradient(115deg,#0d1c4a 0%,#1a3a8f 100%);
    padding: 76px 0;
}
.sw-sla .tit{
    text-align: center;
    font-size: 28px;
    color: #fff;
    line-height: 44px;
    margin-bottom: 52px;
}
.sw-sla .tit p{
    font-size: 14px;
    color: rgba(255,255,255,.6);
    line-height: 26px;
    margin-top: 6px;
}
.sw-sla ul{
    display: flex;
}
.sw-sla li{
    flex: 1;
    text-align: center;
    padding: 0 20px;
    border-left: 1px solid rgba(255,255,255,.16);
}
.sw-sla li:first-child{
    border-left: none;
}
.sw-sla .ico{
    width: 58px;
    height: 58px;
    border-radius: 50%;
    background: rgba(255,255,255,.12);
    border: 1px solid rgba(255,255,255,.28);
    display: flex;
    align-items: center;
    justify-content: center;
    margin: 0 auto 18px;
}
.sw-sla .ico svg{
    width: 26px;
    height: 26px;
    stroke: #fff;
    fill: none;
    stroke-width: 1.6;
    stroke-linecap: round;
    stroke-linejoin: round;
}
.sw-sla h3{
    font-size: 17px;
    color: #fff;
    line-height: 28px;
    margin-bottom: 8px;
}
.sw-sla p{
    font-size: 13px;
    color: rgba(255,255,255,.68);
    line-height: 23px;
}

/* ---------- 商务合作（居中卡） ---------- */
.sw-cta{
    padding: 92px 0;
}
.sw-cta .card{
    max-width: 660px;
    margin: 0 auto;
    background: #fff;
    border-radius: 12px;
    overflow: hidden;
    box-shadow: 0 22px 54px rgba(22,41,107,.14);
}
.sw-cta .hd{
    background: linear-gradient(90deg,#2f5bd6,#4679ea);
    color: #fff;
    padding: 30px 36px;
}
.sw-cta .hd h3{
    font-size: 22px;
    line-height: 34px;
}
.sw-cta .hd p{
    font-size: 13px;
    color: rgba(255,255,255,.78);
    line-height: 24px;
    margin-top: 4px;
}
.sw-form{
    padding: 30px 36px 34px;
}
.sw-form .row{
    display: flex;
    margin: 0 -7px;
}
.sw-form .row input{
    width: 50%;
    box-sizing: border-box;
    padding: 0 7px;
}
.sw-form input,
.sw-form textarea{
    width: 100%;
    box-sizing: border-box;
    border: 1px solid #e0e5f2;
    border-radius: 24px;
    background: #f8faff;
    font-size: 14px;
    color: #333;
    line-height: 22px;
    padding: 11px 18px;
    margin-bottom: 14px;
    outline: none;
    transition: border-color .3s, background .3s;
}
.sw-form input:focus,
.sw-form textarea:focus{
    border-color: #4679ea;
    background: #fff;
}
.sw-form textarea{
    border-radius: 14px;
    height: 88px;
    resize: none;
}
.sw-form .btn input{
    width: 100%;
    margin: 6px 0 0;
    padding: 12px 0;
    border: none;
    border-radius: 24px;
    background: linear-gradient(90deg,#2f5bd6,#4679ea);
    color: #fff;
    font-size: 16px;
    line-height: 24px;
    cursor: pointer;
    transition: opacity .3s;
}
.sw-form .btn input:hover{
    opacity: .88;
}

/* ---------- 响应式 ---------- */
@media screen and (max-width: 1080px){
    .sw-modes li{
        width: calc(50% - 28px);
    }
    .sw-scope li{
        width: 50%;
    }
    .sw-scope li:nth-child(3n){
        border-right: 1px solid #e2e7f4;
    }
    .sw-scope li:nth-child(2n){
        border-right: none;
    }
    .sw-scope li:nth-last-child(-n+3){
        border-bottom: 1px solid #e2e7f4;
    }
    .sw-scope li:nth-last-child(-n+2){
        border-bottom: none;
    }
}
@media screen and (max-width: 992px){
    .sw-banner .inner{
        display: block;
        padding: 84px 0 72px;
    }
    .sw-banner .txt{
        padding-right: 0;
        margin-bottom: 44px;
    }
    .sw-steps{
        flex-wrap: wrap;
    }
    .sw-steps li{
        flex: none;
        width: 50%;
        margin-left: 0;
        clip-path: none;
        border-radius: 6px;
        padding: 14px 18px;
        margin: 0 8px 8px 0;
        box-sizing: border-box;
    }
    .sw-sla ul{
        flex-wrap: wrap;
    }
    .sw-sla li{
        flex: none;
        width: 50%;
        box-sizing: border-box;
        padding: 22px 16px;
        border-left: none;
    }
    .sw-stack{
        padding: 26px 22px;
    }
    .sw-stack .row{
        display: block;
    }
    .sw-stack .lab{
        width: 100%;
        margin-bottom: 10px;
    }
}
@media screen and (max-width: 768px){
    .sw-banner h1{
        font-size: 34px;
        line-height: 52px;
    }
    .sw-head h2{
        font-size: 26px;
    }
    .sw-banner .nums li{
        padding: 0 18px;
    }
}
@media screen and (max-width: 560px){
    .sw-sec{
        padding: 64px 0;
    }
    .sw-modes li{
        width: 100%;
        margin: 0 0 22px;
    }
    .sw-scope li{
        width: 100%;
        border-right: none !important;
        border-bottom: 1px solid #e2e7f4;
    }
    .sw-scope li:last-child{
        border-bottom: none;
    }
    .sw-banner .nums{
        flex-wrap: wrap;
    }
    .sw-banner .nums li{
        width: 50%;
        box-sizing: border-box;
        border-left: none;
        padding: 8px 0;
    }
    .sw-steps li{
        width: 100%;
        margin-right: 0;
    }
    .sw-sla li{
        width: 100%;
    }
    .sw-form .row{
        display: block;
        margin: 0;
    }
    .sw-form .row input{
        width: 100%;
        padding: 0;
    }
    .sw-form,
    .sw-cta .hd{
        padding-left: 22px;
        padding-right: 22px;
    }
}