:root{font-family:Inter,"Microsoft YaHei",Arial,sans-serif;color:#172033;background:#f4f7fb}
*{box-sizing:border-box}body{margin:0;min-height:100vh;display:flex;flex-direction:column}
.topbar{height:64px;background:#142b4a;color:#fff;display:flex;align-items:center;justify-content:space-between;padding:0 max(24px,calc((100% - 1080px)/2))}
.brand{font-weight:700;color:#fff;text-decoration:none}.topbar nav{display:flex;gap:22px}.topbar nav a{color:#dce8f8;text-decoration:none}
.container{width:min(100% - 36px,1000px);margin:52px auto;flex:1}
.hero,.panel, .cards article{background:#fff;border:1px solid #e3eaf3;border-radius:18px;box-shadow:0 8px 30px rgba(20,43,74,.06)}
.hero{padding:48px}.eyebrow{font-size:12px;letter-spacing:.14em;color:#3973b9;font-weight:800}
h1{font-size:clamp(28px,4vw,42px);margin:14px 0;color:#142b4a}h2{font-size:19px;color:#142b4a}
p{line-height:1.75;color:#526176}.notice,.warning{padding:16px 18px;border-radius:12px;background:#eef5fc;border-left:4px solid #3973b9;margin:22px 0;color:#30445e}
.warning{background:#fff4e8;border-color:#d97706}.warning p{margin-bottom:0}
.button{display:inline-block;border:0;border-radius:10px;background:#1f5f9f;color:#fff;padding:12px 20px;font-size:15px;text-decoration:none;cursor:pointer;margin-top:12px}
.cards{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;margin-top:18px}.cards article{padding:22px}
.panel{padding:34px;max-width:760px;margin:0 auto}label{display:block;margin:20px 0 8px;font-weight:700}
input{width:100%;padding:13px;border:1px solid #cbd5e1;border-radius:9px;font-size:16px}
.feedback{min-height:28px;color:#176b45}.muted{color:#718096}.table-wrap{overflow:auto}table{border-collapse:collapse;width:100%;font-size:13px}th,td{text-align:left;padding:10px;border-bottom:1px solid #e6edf5;vertical-align:top}th{background:#f4f7fb}.ua{max-width:240px;word-break:break-word}
footer{text-align:center;color:#718096;font-size:12px;padding:24px}

/* ---- 外传链路演示 /lab/wire ---- */
.panel.wide{max-width:1040px}
code{font-family:ui-monospace,Consolas,monospace;font-size:.92em;background:#eef2f8;color:#24405f;padding:1px 5px;border-radius:5px}
.wire-grid{display:grid;grid-template-columns:1fr 1fr;gap:22px;margin:26px 0 34px}
.wire-col{min-width:0}
.wire-label{font-size:13px;letter-spacing:.06em;color:#3973b9;margin:0 0 12px}
.tiny{font-size:12.5px;line-height:1.65;color:#7a8798;margin:10px 0 0}
.mock-login{position:relative;border:1px solid #dbe4ef;border-radius:14px;padding:28px 24px;background:#fbfcfe;overflow:hidden}
.mock-watermark{position:absolute;top:10px;right:-46px;transform:rotate(35deg);background:#fde8cc;color:#a35a00;font-size:10px;font-weight:800;letter-spacing:.08em;padding:4px 52px}
.mock-login h3{margin:0 0 18px;text-align:center;color:#142b4a;font-size:20px}
.mock-login input[type=text],.mock-login input[type=password]{margin-bottom:12px;background:#f1f4f9;color:#9aa7b8;cursor:not-allowed}
.mock-login .mock-btn{width:100%;margin-top:14px;opacity:.55;cursor:not-allowed}
.mock-row{display:flex;justify-content:space-between;align-items:center;font-size:13px;margin:6px 0 4px;color:#718096}
.mock-check{display:flex;align-items:center;gap:6px;margin:0;font-weight:400}
.mock-check input{width:auto;padding:0;margin:0}
.mock-login a{color:#718096;text-decoration:none}
.kv{display:grid;grid-template-columns:82px 1fr;gap:6px 12px;margin:0 0 18px;font-size:13px}
.kv dt{color:#7a8798}.kv dd{margin:0;min-width:0;word-break:break-all;color:#26374d}
.wire-result{min-height:80px}
.verdict{font-weight:800;margin:0 0 12px;padding:8px 12px;border-radius:9px;display:inline-block}
.verdict.ok{background:#e7f6ee;color:#176b45}.verdict.fail{background:#fdecec;color:#a8322c}
td.ok{color:#176b45;font-weight:700}td.fail{color:#a8322c;font-weight:700}
.wire-payload{background:#101c2c;color:#c8d7ea;border-radius:11px;padding:14px 16px;font-size:12px;line-height:1.6;overflow:auto;max-height:260px;margin:16px 0 0}
.wire-payload:empty{display:none}
@media(max-width:820px){.wire-grid{grid-template-columns:1fr}}
@media(max-width:700px){.cards{grid-template-columns:1fr}.hero{padding:28px}.panel{padding:22px}.topbar{padding:0 18px}}
