        /* ============ 交易终端 ============ */
        .terminal {
            display: grid;
            grid-template-columns: 296px minmax(0, 1fr) 324px;
            grid-template-areas: "pairs chart trade";
            background: var(--line);
            gap: 1px;
            animation: rise .5s ease
        }

        .pairs-panel {
            grid-area: pairs;
            background: var(--bg1);
            display: flex;
            flex-direction: column;
            overflow: hidden
        }

        .chart-area {
            grid-area: chart;
            background: var(--bg1);
            display: flex;
            flex-direction: column;
            min-width: 0;
            overflow: hidden
        }

        .trade-panel {
            grid-area: trade;
            background: var(--bg1);
            display: flex;
            flex-direction: column;
            overflow-y: auto
        }

        .p-search {
            margin: 12px 12px 0;
            display: flex;
            align-items: center;
            gap: 8px;
            background: var(--bg2);
            border: 1px solid var(--line);
            border-radius: 8px;
            padding: 0 10px;
            height: 32px;
            color: var(--txt3)
        }

        .p-search input {
            flex: 1;
            font-size: 12.5px;
            min-width: 0;
            color: var(--txt)
        }

        .p-tabs {
            display: flex;
            gap: 6px;
            padding: 10px 12px 8px
        }

        .ptab {
            font-size: 12px;
            color: var(--txt2);
            padding: 4px 10px;
            border-radius: 6px
        }

        .ptab:hover {
            color: var(--txt)
        }

        .ptab.on {
            color: var(--gold);
            background: rgba(232, 176, 75, .10)
        }

        .p-headrow {
            display: grid;
            grid-template-columns: 1fr 92px 72px;
            padding: 2px 12px 6px;
            font-size: 10.5px;
            color: var(--txt3);
            letter-spacing: .04em
        }

        .p-headrow span:nth-child(2),
        .p-headrow span:nth-child(3) {
            text-align: right
        }

        #pairsList {
            flex: 1;
            overflow-y: auto;
            padding-bottom: 8px
        }

        .pair-row {
            display: grid;
            grid-template-columns: 20px 1fr 92px 72px;
            align-items: center;
            padding: 6px 12px 6px 8px;
            cursor: pointer;
            position: relative
        }

        .pair-row:hover {
            background: var(--bg2)
        }

        .pair-row.on {
            background: var(--bg2)
        }

        .pair-row.on::before {
            content: '';
            position: absolute;
            left: 0;
            top: 0;
            bottom: 0;
            width: 2px;
            background: var(--gold)
        }

        .pair-row .star {
            color: var(--txt3);
            display: flex;
            align-items: center;
            justify-content: center;
            height: 22px
        }

        .pair-row .star:hover {
            color: var(--gold)
        }

        .pair-row .star.faved {
            color: var(--gold)
        }

        .pr-l b {
            display: block;
            font-size: 12.5px;
            font-weight: 600
        }

        .pr-l span {
            display: block;
            font-size: 10.5px;
            color: var(--txt3);
            margin-top: 1px
        }

        .pr-p,
        .pr-c {
            font-size: 12px;
            text-align: right
        }

        .pr-c {
            font-size: 11.5px
        }

        .p-foot {
            padding: 10px 12px;
            border-top: 1px solid var(--line);
            font-size: 11px;
            color: var(--txt3)
        }

        .p-foot a {
            color: var(--txt2);
            text-decoration: none
        }

        .p-foot a:hover {
            color: var(--gold)
        }

        .empty-p {
            padding: 26px 14px;
            text-align: center;
            font-size: 12px;
            color: var(--txt3)
        }

        .pair-head {
            padding: 12px 18px 10px;
            border-bottom: 1px solid var(--line);
            display: flex;
            align-items: center;
            gap: 26px;
            flex-wrap: nowrap;
            overflow-x: auto;
            scrollbar-width: none
        }

        .pair-head::-webkit-scrollbar {
            display: none
        }

        .ph-title {
            display: flex;
            align-items: center;
            gap: 10px;
            flex: none
        }

        .ph-title .star {
            color: var(--txt3);
            display: flex;
            align-items: center
        }

        .ph-title .star.faved {
            color: var(--gold)
        }

        .ph-title .star:hover {
            color: var(--gold)
        }

        .ph-title h1 {
            font-size: 19px;
            font-weight: 700;
            letter-spacing: .02em;
            white-space: nowrap
        }

        .ph-title small {
            display: block;
            font-size: 10.5px;
            color: var(--txt3);
            margin-top: 1px;
            white-space: nowrap
        }

        .ph-price {
            flex: none
        }

        .ph-price .num {
            font-size: 23px;
            font-weight: 600;
            letter-spacing: .01em;
            padding: 2px 5px;
            margin-left: -5px;
            border-radius: 5px
        }

        .chgpill {
            display: inline-flex;
            align-items: center;
            gap: 4px;
            font-size: 12px;
            padding: 3px 9px;
            border-radius: 6px;
            margin-left: 10px
        }

        .chgpill.up {
            background: var(--upbg)
        }

        .chgpill.dn {
            background: var(--dnbg)
        }

        .ph-stats {
            display: flex;
            gap: 24px;
            flex: none
        }

        .ph-st {
            white-space: nowrap
        }

        .ph-st span {
            display: block;
            font-size: 10px;
            color: var(--txt3);
            margin-bottom: 3px
        }

        .ph-st b {
            font-size: 12px;
            font-weight: 500
        }

        .chart-toolbar {
            height: 38px;
            display: flex;
            align-items: center;
            padding: 0 14px;
            gap: 4px;
            border-bottom: 1px solid var(--line)
        }

        .tf {
            font-size: 12px;
            color: var(--txt2);
            padding: 5px 9px;
            border-radius: 6px
        }

        .tf:hover {
            color: var(--txt)
        }

        .tf.on {
            color: var(--gold);
            background: rgba(232, 176, 75, .10)
        }

        .tb-right {
            margin-left: auto;
            display: flex;
            align-items: center;
            gap: 10px
        }

        .ma-chip {
            display: flex;
            gap: 10px;
            font-size: 10.5px;
            padding: 4px 10px;
            border: 1px solid var(--line);
            border-radius: 6px;
            color: var(--txt2)
        }

        .ma-chip i {
            font-style: normal
        }

        .chart-toolbar .iconbtn {
            width: 28px;
            height: 28px
        }

        .chart-box {
            flex: 1;
            position: relative;
            min-height: 260px
        }

        #chartCanvas {
            position: absolute;
            inset: 0;
            width: 100%;
            height: 100%;
            cursor: crosshair;
            touch-action: none
        }

        #chartCanvas.grabbing {
            cursor: grabbing
        }

        .chart-hint {
            position: absolute;
            right: 14px;
            bottom: 26px;
            font-size: 10px;
            color: var(--txt3);
            pointer-events: none;
            letter-spacing: .05em
        }

        .market-floor {
            height: 262px;
            border-top: 1px solid var(--line);
            display: grid;
            grid-template-columns: 1fr;
            background: var(--line);
            gap: 1px;
            flex: none
        }

        .floor-card {
            background: var(--bg1);
            display: flex;
            flex-direction: column;
            min-width: 0;
            overflow: hidden
        }

        .f-head {
            padding: 9px 14px 7px;
            font-size: 12px;
            font-weight: 600;
            display: flex;
            align-items: center;
            gap: 8px
        }

        .f-head .tag {
            font-size: 10px;
            color: var(--txt3);
            font-weight: 400;
            margin-left: auto
        }

        .f-cols {
            display: grid;
            grid-template-columns: 1fr 1fr 1fr;
            padding: 0 14px 5px;
            font-size: 10px;
            color: var(--txt3)
        }

        .f-cols span:nth-child(2),
        .f-cols span:nth-child(3) {
            text-align: right
        }

        .ob-list {
            flex: 1;
            display: flex;
            flex-direction: column;
            justify-content: center
        }

        .ob-r {
            position: relative;
            display: grid;
            grid-template-columns: 1fr 1fr 1fr;
            padding: 0 14px;
            height: 18px;
            align-items: center;
            font-size: 11.5px;
            cursor: pointer
        }

        .ob-r:hover {
            background: var(--bg2)
        }

        .ob-r .bar {
            position: absolute;
            top: 1px;
            bottom: 1px;
            right: 0;
            z-index: 0;
            pointer-events: none
        }

        .ob-r.ask .bar {
            background: rgba(226, 85, 101, .09)
        }

        .ob-r.bid .bar {
            background: rgba(45, 189, 133, .09)
        }

        .ob-r span {
            position: relative;
            z-index: 1
        }

        .ob-r .q,
        .ob-r .c {
            color: var(--txt2);
            text-align: right
        }

        .ob-mid {
            display: flex;
            align-items: baseline;
            gap: 10px;
            padding: 5px 14px;
            border-top: 1px solid var(--line);
            border-bottom: 1px solid var(--line)
        }

        .ob-mid .num {
            font-size: 14px;
            font-weight: 600;
            padding: 1px 5px;
            margin-left: -5px;
            border-radius: 4px
        }

        .ob-mid .sp {
            font-size: 10.5px;
            color: var(--txt3)
        }

        #trList {
            flex: 1;
            overflow-y: auto
        }

        .tr-row {
            display: grid;
            grid-template-columns: 1fr 1fr 1fr;
            padding: 0 14px;
            height: 20px;
            align-items: center;
            font-size: 11.5px
        }

        .tr-row .t {
            color: var(--txt3)
        }

        .tr-row .p,
        .tr-row .q {
            text-align: right
        }

        .tr-row .q {
            color: var(--txt2)
        }

        @keyframes freshin {
            from {
                opacity: 0;
                transform: translateY(-6px);
                background: rgba(232, 176, 75, .12)
            }

            to {
                opacity: 1;
                transform: none
            }
        }

        .tr-row.fresh {
            animation: freshin .5s
        }

        /* ---- 下单面板 ---- */
        .tp-block {
            padding: 14px 16px;
            border-bottom: 1px solid var(--line)
        }

        .tp-title {
            font-size: 12px;
            font-weight: 600;
            margin-bottom: 12px;
            display: flex;
            align-items: center;
            gap: 8px
        }

        .tp-title .sym {
            color: var(--txt3);
            font-weight: 400
        }

        .seg {
            display: flex;
            background: var(--bg2);
            border-radius: 8px;
            padding: 3px;
            margin-bottom: 12px
        }

        .seg button {
            flex: 1;
            padding: 6px 0;
            font-size: 12px;
            color: var(--txt2);
            border-radius: 6px
        }

        .seg button.on {
            background: var(--bg3);
            color: var(--txt)
        }

        .sidebtns {
            display: grid;
            grid-template-columns: 1fr 1fr;
            gap: 8px;
            margin-bottom: 12px
        }

        .sidebtn {
            padding: 9px 0;
            border-radius: 8px;
            font-size: 13px;
            font-weight: 600;
            border: 1px solid var(--line);
            color: var(--txt2);
            transition: .15s
        }

        .sidebtn.buy.on {
            background: var(--upbg);
            border-color: rgba(45, 189, 133, .5);
            color: var(--up)
        }

        .sidebtn.sell.on {
            background: var(--dnbg);
            border-color: rgba(226, 85, 101, .5);
            color: var(--dn)
        }

        .avail {
            display: flex;
            justify-content: space-between;
            font-size: 11.5px;
            color: var(--txt2);
            margin-bottom: 12px
        }

        .avail b {
            color: var(--txt);
            font-weight: 500
        }

        .avail b.dim {
            color: var(--txt2);
            font-weight: 400;
            font-size: 11px
        }

        .f-row {
            margin-bottom: 11px
        }

        .f-lab {
            font-size: 10.5px;
            color: var(--txt3);
            margin-bottom: 5px;
            display: flex;
            justify-content: space-between
        }

        .f-box {
            display: flex;
            align-items: center;
            background: var(--bg2);
            border: 1px solid var(--line);
            border-radius: 8px;
            padding: 0 11px;
            height: 38px;
            transition: .15s
        }

        .f-box:focus-within {
            border-color: var(--gold);
            box-shadow: 0 0 0 3px rgba(232, 176, 75, .10)
        }

        .f-box input {
            flex: 1;
            font-size: 13px;
            min-width: 0
        }

        .f-box .unit {
            font-size: 11px;
            color: var(--txt3)
        }

        .f-box.dis {
            opacity: .55
        }

        .f-box.dis input {
            cursor: not-allowed
        }

        .pcts {
            display: grid;
            grid-template-columns: repeat(4, 1fr);
            gap: 6px;
            margin: -2px 0 12px
        }

        .pcts button {
            border: 1px solid var(--line);
            border-radius: 6px;
            font-size: 11px;
            color: var(--txt2);
            padding: 4px 0
        }

        .pcts button:hover {
            border-color: var(--gold);
            color: var(--gold)
        }

        .power-row {
            display: flex;
            align-items: center;
            gap: 9px;
            font-size: 10.5px;
            color: var(--txt2);
            margin-bottom: 13px
        }

        .power {
            flex: 1;
            height: 4px;
            border-radius: 2px;
            background: var(--dnbg);
            overflow: hidden
        }

        .power i {
            display: block;
            height: 100%;
            background: var(--up);
            border-radius: 2px;
            transition: width .6s
        }

        .sumrow {
            display: flex;
            justify-content: space-between;
            font-size: 11.5px;
            color: var(--txt2);
            margin-bottom: 7px
        }

        .sumrow b {
            color: var(--txt);
            font-weight: 500
        }

        .f-submit {
            width: 100%;
            height: 44px;
            border-radius: 9px;
            font-size: 14px;
            font-weight: 700;
            color: #fff;
            transition: .15s;
            margin-top: 4px
        }

        .f-submit.buy {
            background: var(--up)
        }

        .f-submit.buy:hover {
            background: #36d192
        }

        .f-submit.sell {
            background: var(--dn)
        }

        .f-submit.sell:hover {
            background: #e96a79
        }

        .f-note {
            font-size: 10.5px;
            color: var(--txt3);
            margin-top: 10px;
            line-height: 1.6
        }

        .asset-row {
            display: flex;
            justify-content: space-between;
            align-items: flex-end;
            margin-bottom: 4px
        }

        .asset-row .lab {
            font-size: 11px;
            color: var(--txt2)
        }

        .asset-row .val {
            font-size: 19px;
            font-weight: 600
        }

        .pnl {
            display: flex;
            justify-content: space-between;
            font-size: 11.5px;
            margin: 8px 0 12px
        }

        .pnl span {
            color: var(--txt2)
        }

        .asset-sub {
            font-size: 11px;
            color: var(--txt3);
            line-height: 1.8
        }

        .asset-go {
            margin-top: 12px;
            width: 100%;
            padding: 8px 0;
            border-radius: 8px;
            border: 1px solid var(--line2);
            font-size: 12px;
            color: var(--txt2)
        }

        .asset-go:hover {
            border-color: var(--gold);
            color: var(--gold2)
        }

        .risk-strip {
            display: flex;
            align-items: center;
            gap: 9px;
            font-size: 11px;
            color: var(--txt2);
            padding: 12px 16px;
            margin-top: auto;
            border-top: 1px solid var(--line);
            line-height: 1.5
        }

        .risk-strip svg {
            color: var(--gold)
        }

        /* ============ 币种档案 ============ */
        .coincard {
            background: var(--bg1);
            border: 1px solid var(--line);
            border-radius: 12px;
            padding: 26px 28px;
            display: grid;
            grid-template-columns: 1.4fr 1fr;
            gap: 44px;
            align-items: start
        }

        .coin-l h3 {
            font-size: 17px;
            font-weight: 700;
            display: flex;
            align-items: baseline;
            gap: 10px;
            flex-wrap: wrap
        }

        .coin-l h3 span {
            font-size: 12px;
            color: var(--txt3);
            font-weight: 400
        }

        .coin-tags {
            display: flex;
            gap: 8px;
            margin: 14px 0 16px;
            flex-wrap: wrap
        }

        .coin-tags i {
            font-style: normal;
            font-size: 11px;
            color: var(--txt2);
            border: 1px solid var(--line2);
            border-radius: 20px;
            padding: 4px 11px
        }

        .coin-l p {
            font-size: 12.5px;
            color: var(--txt2);
            line-height: 1.9
        }

        .coin-r {
            display: grid;
            grid-template-columns: 1fr 1fr;
            gap: 1px;
            background: var(--line);
            border: 1px solid var(--line);
            border-radius: 10px;
            overflow: hidden
        }

        .cr-cell {
            background: var(--bg1);
            padding: 16px 18px
        }

        .cr-cell span {
            display: block;
            font-size: 10.5px;
            color: var(--txt3);
            margin-bottom: 7px
        }

        .cr-cell b {
            display: block;
            font-size: 15px;
            font-weight: 600;
            margin-bottom: 6px
        }

        .cr-cell small {
            display: block;
            font-size: 10.5px;
            color: var(--txt3)
        }

        /* ============ 页脚 ============ */
        footer {
            border-top: 1px solid var(--line);
            margin-top: 36px;
            background: var(--bg1)
        }

        .foot-in {
            max-width: 1440px;
            margin: 0 auto;
            padding: 38px 20px 0;
            display: grid;
            grid-template-columns: 1.3fr repeat(4, 1fr);
            gap: 36px
        }

        .foot-brand p {
            font-size: 11.5px;
            color: var(--txt3);
            line-height: 1.8;
            margin-top: 14px
        }

        .foot-col h4 {
            font-size: 12px;
            color: var(--txt2);
            font-weight: 500;
            margin-bottom: 14px;
            letter-spacing: .06em
        }

        .flink {
            display: block;
            font-size: 12.5px;
            color: var(--txt3);
            text-decoration: none;
            padding: 5px 0
        }

        .flink:hover {
            color: var(--gold)
        }

        .foot-risk {
            max-width: 1440px;
            margin: 30px auto 0;
            padding: 0 20px
        }

        .foot-risk p {
            font-size: 11px;
            color: var(--txt3);
            line-height: 1.9;
            border: 1px solid var(--line);
            border-radius: 10px;
            padding: 14px 18px;
            background: var(--bg0)
        }

        .foot-btm {
            max-width: 1440px;
            margin: 20px auto 0;
            padding: 16px 20px 22px;
            display: flex;
            justify-content: space-between;
            gap: 12px;
            flex-wrap: wrap;
            font-size: 11.5px;
            color: var(--txt3);
            border-top: 1px solid var(--line)
        }

        /* ============ 响应式（须置于基础规则之后；common.css 中仅保留跨页组件的断点） ============ */
        @media (max-width:1360px) {
            .terminal {
                grid-template-columns: 248px minmax(0, 1fr) 302px
            }
        }

        @media (max-width:1140px) {
            .terminal {
                grid-template-columns: 232px minmax(0, 1fr);
                grid-template-areas: "pairs chart" "pairs trade";
                grid-template-rows: auto auto
            }

            .pairs-panel {
                max-height: 840px
            }

            .trade-panel {
                overflow: visible
            }
        }

        @media (max-width:900px) {
            .terminal {
                grid-template-columns: 1fr;
                grid-template-areas: "chart" "trade";
                height: auto
            }

            .pairs-panel {
                display: none
            }

            .chart-box {
                min-height: 340px;
                height: 400px;
                flex: none
            }

            .market-floor {
                height: auto
            }

            .floor-card {
                max-height: 320px
            }

            .coincard {
                grid-template-columns: 1fr;
                gap: 26px
            }

            .foot-in {
                grid-template-columns: 1fr 1fr
            }
        }

        @media (max-width:640px) {
            .market-floor {
                grid-template-columns: 1fr
            }

            .ph-stats {
                display: none
            }

            .wrap {
                padding: 18px 14px 0
            }

            .coincard {
                padding: 20px 16px
            }

            .pair-head {
                padding: 10px 14px 8px;
                gap: 16px
            }

            .ph-price .num {
                font-size: 19px
            }

            .f-box input,
            .p-search input {
                font-size: 16px
            }
        }

