/* 期权 Black-Scholes 定价器：交易终端风格（冷灰蓝 / 等宽数字 / 细网格）
   仅本页加载，使用 --bx-* 令牌，深浅主题同时可用 */

:root {
    --bx-bg: #eef1f6;
    --bx-hero: linear-gradient(180deg, #f8fafd 0%, #e9eef6 100%);
    --bx-card: #ffffff;
    --bx-soft: #f4f7fb;
    --bx-ink: #0c1420;
    --bx-ink2: #3c4a5a;
    --bx-mut: #78889a;
    --bx-line: #dbe2ec;
    --bx-line2: #c2ccdb;
    --bx-blue: #1d4ed8;
    --bx-blue-soft: #e8efff;
    --bx-teal: #0d7f78;
    --bx-teal-soft: #e2f5f2;
    --bx-up: #15803d;
    --bx-down: #c02a2a;
    --bx-r: 14px;
    --bx-mono: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, "Liberation Mono", monospace;
    --bx-font: "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
    --bx-shadow: 0 1px 2px rgba(12, 20, 32, .04), 0 18px 36px -30px rgba(12, 20, 32, .45);
}

[data-theme="dark"] {
    --bx-bg: #070b12;
    --bx-hero: linear-gradient(180deg, #0c1420 0%, #070b12 100%);
    --bx-card: #101824;
    --bx-soft: #0c141f;
    --bx-ink: #e8eef7;
    --bx-ink2: #adbccd;
    --bx-mut: #7d8ea1;
    --bx-line: #1f2b3a;
    --bx-line2: #2c3b4d;
    --bx-blue: #5b8cff;
    --bx-blue-soft: rgba(91, 140, 255, .14);
    --bx-teal: #35c8bc;
    --bx-teal-soft: rgba(53, 200, 188, .13);
    --bx-up: #4ade80;
    --bx-down: #f87171;
    --bx-shadow: 0 1px 2px rgba(0, 0, 0, .5), 0 22px 44px -32px rgba(0, 0, 0, .9);
}

body { background: var(--bx-bg); }

.bsx {
    font-family: var(--bx-font);
    color: var(--bx-ink);
    background: var(--bx-bg);
    font-size: 14px;
    line-height: 1.8;
    -webkit-font-smoothing: antialiased;
}
.bsx *, .bsx *::before, .bsx *::after { box-sizing: border-box; }
.bsx [hidden] { display: none !important; }
.bsx h1, .bsx h2, .bsx h3 { margin: 0; font-weight: 800; letter-spacing: -.02em; line-height: 1.2; }
.bsx p { margin: 0; }
.bsx a { color: var(--bx-blue); text-decoration: none; }
.bsx a:hover { text-decoration: underline; text-underline-offset: 3px; }
.bsx button { font-family: inherit; }
.bsx-wrap { width: 100%; max-width: 1180px; margin: 0 auto; padding: 0 24px; }

/* ---------- 顶部 ---------- */
.bsx-hero {
    position: relative;
    padding: 22px 0 30px;
    border-bottom: 1px solid var(--bx-line);
    background-color: var(--bx-bg);
    background-image:
        repeating-linear-gradient(90deg, rgba(29, 78, 216, .06) 0 1px, transparent 1px 64px),
        repeating-linear-gradient(0deg, rgba(29, 78, 216, .06) 0 1px, transparent 1px 64px),
        var(--bx-hero);
}
.bsx-crumb {
    display: flex; flex-wrap: wrap; align-items: center; gap: 6px;
    font-size: 12px; color: var(--bx-mut);
}
.bsx-crumb a { color: var(--bx-mut); }
.bsx-crumb a:hover { color: var(--bx-blue); }
.bsx-crumb span { opacity: .5; }
.bsx-crumb i { font-style: normal; color: var(--bx-ink2); }

.bsx-hero-row {
    display: flex; align-items: flex-start; justify-content: space-between; gap: 24px;
    margin-top: 16px;
}
.bsx-eyebrow {
    font-family: var(--bx-mono);
    font-size: 11px; letter-spacing: .16em; text-transform: uppercase;
    color: var(--bx-blue);
}
.bsx-h1 {
    margin-top: 8px;
    font-size: clamp(28px, 3.4vw, 42px);
    letter-spacing: -.03em;
}
.bsx-h1 span { display: block; color: var(--bx-blue); }
.bsx-lede {
    margin-top: 12px; max-width: 36em;
    font-size: 15px; line-height: 1.85; color: var(--bx-ink2);
}
.bsx-lede strong { color: var(--bx-ink); font-weight: 700; }
.bsx-facts {
    display: flex; flex-wrap: wrap; gap: 8px 10px;
    margin: 16px 0 0; padding: 0; list-style: none;
}
.bsx-facts li {
    padding: 5px 11px;
    border: 1px solid var(--bx-line);
    border-radius: 999px;
    background: var(--bx-card);
    font-size: 12.5px; color: var(--bx-ink2);
}
.bsx-facts b { color: var(--bx-blue); font-weight: 700; margin-right: 5px; }

.bsx-theme {
    display: inline-flex; flex: none; gap: 2px;
    padding: 3px;
    border: 1px solid var(--bx-line);
    border-radius: 999px;
    background: var(--bx-card);
}
.bsx-theme button {
    padding: 5px 11px;
    border: 0; border-radius: 999px;
    background: transparent; color: var(--bx-mut);
    font-size: 12px; cursor: pointer;
    transition: background-color .15s, color .15s;
}
.bsx-theme button:hover { color: var(--bx-ink); }
.bsx-theme button[aria-pressed="true"] { background: var(--bx-blue); color: #fff; }

/* ---------- 面板 ---------- */
.bsx-terminal {
    display: grid;
    grid-template-columns: 360px minmax(0, 1fr);
    gap: 20px;
    align-items: start;
    margin-top: 24px;
}
.bsx-panel {
    min-width: 0;
    padding: 20px 22px 22px;
    border: 1px solid var(--bx-line);
    border-radius: var(--bx-r);
    background: var(--bx-card);
    box-shadow: var(--bx-shadow);
}
.bsx-panel-head {
    display: flex; align-items: center; justify-content: space-between; gap: 12px;
    margin-bottom: 16px;
}
.bsx-panel-head h2 { font-size: 15px; letter-spacing: -.01em; }
.bsx-panel-head h3 { font-size: 13px; }
.bsx-badge {
    padding: 3px 9px;
    border: 1px solid var(--bx-line);
    border-radius: 999px;
    background: var(--bx-soft);
    font-size: 11.5px; color: var(--bx-mut);
    white-space: nowrap;
}

/* ---------- 参数 ---------- */
.bsx-type {
    display: grid; grid-template-columns: 1fr 1fr; gap: 4px;
    padding: 4px;
    border: 1px solid var(--bx-line);
    border-radius: 11px;
    background: var(--bx-soft);
}
.bsx-type-btn {
    padding: 9px 0;
    border: 0; border-radius: 8px;
    background: transparent; color: var(--bx-ink2);
    font-size: 13px; font-weight: 600; cursor: pointer;
    transition: background-color .15s, color .15s, box-shadow .15s;
}
.bsx-type-btn:hover { color: var(--bx-ink); }
.bsx-type-btn.is-on {
    background: var(--bx-card); color: var(--bx-blue);
    box-shadow: 0 1px 3px rgba(12, 20, 32, .12);
}

.bsx-field { margin-top: 15px; }
.bsx-field label {
    display: flex; align-items: baseline; gap: 6px;
    font-size: 12.5px; font-weight: 600; color: var(--bx-ink2);
}
.bsx-field label i {
    font-style: normal; font-family: var(--bx-mono);
    font-size: 11px; color: var(--bx-mut);
}
.bsx-box {
    display: flex; align-items: center;
    margin-top: 6px;
    border: 1px solid var(--bx-line2);
    border-radius: 10px;
    background: var(--bx-card);
    transition: border-color .15s, box-shadow .15s;
}
.bsx-box:focus-within {
    border-color: var(--bx-blue);
    box-shadow: 0 0 0 3px var(--bx-blue-soft);
}
.bsx-box input {
    flex: 1; min-width: 0;
    padding: 10px 4px 10px 12px;
    border: 0; background: transparent;
    font-family: var(--bx-mono);
    font-size: 15px; font-weight: 600;
    color: var(--bx-ink);
    outline: none;
}
.bsx-box input::placeholder { color: var(--bx-mut); font-weight: 400; }
.bsx-box em {
    flex: none; padding: 0 12px 0 6px;
    font-style: normal; font-size: 12px; color: var(--bx-mut);
}
.bsx-box.is-bad { border-color: var(--bx-down); box-shadow: 0 0 0 3px rgba(192, 42, 42, .1); }

.bsx-range {
    width: 100%; height: 22px; margin-top: 6px;
    -webkit-appearance: none; appearance: none;
    background: transparent; cursor: pointer;
}
.bsx-range::-webkit-slider-runnable-track {
    height: 4px; border-radius: 999px; background: var(--bx-line);
}
.bsx-range::-webkit-slider-thumb {
    -webkit-appearance: none; appearance: none;
    width: 14px; height: 14px; margin-top: -5px;
    border: 2px solid var(--bx-card);
    border-radius: 50%;
    background: var(--bx-blue);
    box-shadow: 0 0 0 1px var(--bx-blue);
}
.bsx-range::-moz-range-track { height: 4px; border-radius: 999px; background: var(--bx-line); }
.bsx-range::-moz-range-thumb {
    width: 12px; height: 12px; border: 2px solid var(--bx-card);
    border-radius: 50%; background: var(--bx-blue);
}

.bsx-err {
    margin-top: 14px; padding: 9px 12px;
    border: 1px solid rgba(192, 42, 42, .35);
    border-radius: 9px;
    background: rgba(192, 42, 42, .07);
    font-size: 12.5px; color: var(--bx-down);
}

.bsx-presets {
    display: flex; flex-wrap: wrap; align-items: center; gap: 6px;
    margin-top: 16px; padding-top: 14px;
    border-top: 1px dashed var(--bx-line);
    font-size: 12px; color: var(--bx-mut);
}
.bsx-presets > span { margin-right: 2px; }
.bsx-presets button {
    padding: 4px 10px;
    border: 1px solid var(--bx-line);
    border-radius: 999px;
    background: var(--bx-soft); color: var(--bx-ink2);
    font-size: 12px; cursor: pointer;
    transition: border-color .15s, color .15s, background-color .15s;
}
.bsx-presets button:hover { border-color: var(--bx-blue); color: var(--bx-blue); }

.bsx-actions { display: flex; gap: 8px; margin-top: 14px; }
.bsx-btn {
    flex: 1;
    padding: 10px 16px;
    border: 1px solid var(--bx-blue);
    border-radius: 10px;
    background: var(--bx-blue); color: #fff;
    font-size: 13px; font-weight: 700; cursor: pointer;
    transition: filter .15s, background-color .15s;
}
.bsx-btn:hover { filter: brightness(1.06); }
.bsx-btn-ghost {
    background: var(--bx-card); color: var(--bx-ink2);
    border-color: var(--bx-line2);
}
.bsx-btn-ghost:hover { border-color: var(--bx-blue); color: var(--bx-blue); filter: none; }

/* ---------- 结果 ---------- */
.bsx-price-row { display: flex; align-items: flex-end; gap: 14px; flex-wrap: wrap; }
.bsx-price {
    font-family: var(--bx-mono);
    font-size: clamp(38px, 5vw, 56px);
    font-weight: 700; line-height: 1;
    letter-spacing: -.03em;
    color: var(--bx-ink);
}
.bsx-price em {
    margin-left: 5px;
    font-style: normal; font-size: 14px; font-weight: 500;
    color: var(--bx-mut);
}
.bsx-price-note { font-size: 12.5px; color: var(--bx-mut); padding-bottom: 4px; }

.bsx-split { margin-top: 18px; }
.bsx-split-bar {
    display: flex; gap: 2px;
    height: 9px;
    border-radius: 999px;
    background: var(--bx-line);
    overflow: hidden;
}
.bsx-split-in { width: 0; background: var(--bx-blue); transition: width .25s ease; }
.bsx-split-tv { width: 0; background: var(--bx-teal); transition: width .25s ease; }
.bsx-split-legend {
    display: flex; flex-wrap: wrap; gap: 6px 18px;
    margin: 9px 0 0; padding: 0; list-style: none;
    font-size: 12px; color: var(--bx-ink2);
}
.bsx-split-legend li { display: inline-flex; align-items: center; gap: 6px; }
.bsx-split-legend i { width: 9px; height: 9px; border-radius: 3px; }
.bsx-split-legend .lv-in { background: var(--bx-blue); }
.bsx-split-legend .lv-tv { background: var(--bx-teal); }
.bsx-split-legend b { font-family: var(--bx-mono); font-weight: 700; color: var(--bx-ink); }

.bsx-greeks {
    display: grid;
    grid-template-columns: repeat(5, minmax(0, 1fr));
    gap: 10px;
    margin-top: 20px;
}
.bsx-greek {
    padding: 11px 12px 10px;
    border: 1px solid var(--bx-line);
    border-radius: 10px;
    background: var(--bx-soft);
}
.bsx-greek .g-k {
    display: block;
    font-family: var(--bx-mono);
    font-size: 11px; letter-spacing: .08em; text-transform: uppercase;
    color: var(--bx-mut);
}
.bsx-greek b {
    display: block; margin-top: 3px;
    font-family: var(--bx-mono);
    font-size: 19px; font-weight: 700; line-height: 1.3;
    color: var(--bx-ink);
}
.bsx-greek b.is-neg { color: var(--bx-down); }
.bsx-greek p { margin-top: 2px; font-size: 11px; line-height: 1.55; color: var(--bx-mut); }

.bsx-payoff {
    margin-top: 18px; padding-top: 16px;
    border-top: 1px dashed var(--bx-line);
}
.bsx-payoff-head {
    display: flex; align-items: baseline; justify-content: space-between; gap: 10px;
    margin-bottom: 8px;
}
.bsx-payoff-head h3 { font-size: 13px; }
.bsx-payoff-head span { font-family: var(--bx-mono); font-size: 12px; color: var(--bx-ink2); }
.bsx-chart { width: 100%; height: 168px; }
.bsx-chart svg { width: 100%; height: 100%; display: block; overflow: visible; }
.bsx-chart .pv-zero { stroke: var(--bx-line2); stroke-width: 1; stroke-dasharray: 4 4; }
.bsx-chart .pv-ref { stroke: var(--bx-line2); stroke-width: 1; stroke-dasharray: 2 5; opacity: .8; }
.bsx-chart .pv-now { stroke: var(--bx-blue); stroke-width: 1; stroke-dasharray: 2 3; opacity: .55; }
.bsx-chart .pv-line {
    fill: none; stroke: var(--bx-blue);
    stroke-width: 2.2; stroke-linejoin: round; stroke-linecap: round;
}
.bsx-chart .pv-dot { fill: var(--bx-teal); stroke: var(--bx-card); stroke-width: 2; }
.bsx-chart .pv-txt { fill: var(--bx-mut); font-size: 11px; font-family: var(--bx-mono); }
.bsx-payoff-note { margin-top: 4px; font-size: 12px; color: var(--bx-mut); }

/* ---------- 扫描表 ---------- */
.bsx-lower { display: grid; gap: 20px; margin: 20px auto 56px; }
.bsx-chain-note { font-size: 13px; color: var(--bx-ink2); margin-bottom: 12px; }
.bsx-tablewrap {
    max-width: 100%;
    overflow-x: auto;
    border: 1px solid var(--bx-line);
    border-radius: 10px;
    -webkit-overflow-scrolling: touch;
}
.bsx-table { width: 100%; border-collapse: collapse; font-size: 13px; }
.bsx-table th, .bsx-table td {
    padding: 9px 12px;
    text-align: right;
    white-space: nowrap;
    border-bottom: 1px solid var(--bx-line);
}
.bsx-table th {
    background: var(--bx-soft);
    font-size: 11.5px; font-weight: 600; color: var(--bx-mut);
    letter-spacing: .02em;
}
.bsx-table th:first-child, .bsx-table td:first-child,
.bsx-table th:nth-child(2), .bsx-table td:nth-child(2) { text-align: left; }
.bsx-table td { font-family: var(--bx-mono); color: var(--bx-ink2); }
.bsx-table td:first-child { color: var(--bx-ink); font-weight: 700; }
.bsx-table tbody tr:last-child td { border-bottom: 0; }
.bsx-table tbody tr:hover { background: var(--bx-soft); }
.bsx-table tr.is-atm { background: var(--bx-blue-soft); }
.bsx-table tr.is-atm td { color: var(--bx-ink); }
.bsx-money { font-family: var(--bx-font); font-size: 11.5px; }
.bsx-money.itm { color: var(--bx-blue); }
.bsx-money.otm { color: var(--bx-mut); }
.bsx-empty { text-align: center !important; color: var(--bx-mut); font-family: var(--bx-font); }
.bsx-use {
    padding: 3px 9px;
    border: 1px solid var(--bx-line2);
    border-radius: 7px;
    background: var(--bx-card); color: var(--bx-ink2);
    font-size: 11.5px; cursor: pointer;
    transition: border-color .15s, color .15s;
}
.bsx-use:hover { border-color: var(--bx-blue); color: var(--bx-blue); }
.bsx-chain-foot {
    display: flex; flex-wrap: wrap; align-items: center; gap: 12px;
    margin-top: 12px;
}
.bsx-chain-foot .bsx-btn { flex: none; }
.bsx-chain-foot span { font-size: 12px; color: var(--bx-mut); }

/* ---------- 说明 ---------- */
.bsx-guide { padding-bottom: 24px; }
.bsx-formula {
    display: grid; gap: 6px;
    padding: 14px 16px;
    border: 1px solid var(--bx-line);
    border-radius: 10px;
    background: var(--bx-soft);
}
.bsx-formula code {
    font-family: var(--bx-mono);
    font-size: 12.5px; line-height: 1.9;
    color: var(--bx-ink2);
    overflow-x: auto;
}
.bsx-formula sup { font-size: 9px; }
.bsx-guide-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 16px 22px;
    margin-top: 18px;
}
.bsx-guide-item h3 {
    font-size: 13.5px; margin-bottom: 5px;
    padding-left: 10px;
    border-left: 3px solid var(--bx-blue);
}
.bsx-guide-item p { font-size: 13.5px; line-height: 1.9; color: var(--bx-ink2); }

.bsx-faq { margin-top: 20px; border-top: 1px solid var(--bx-line); }
.bsx-faq details { border-bottom: 1px solid var(--bx-line); }
.bsx-faq summary {
    position: relative;
    padding: 13px 32px 13px 0;
    font-size: 13.5px; font-weight: 700; color: var(--bx-ink);
    list-style: none; cursor: pointer;
}
.bsx-faq summary::-webkit-details-marker { display: none; }
.bsx-faq summary::after {
    content: "+"; position: absolute; right: 6px; top: 11px;
    font-family: var(--bx-mono); font-size: 16px; color: var(--bx-mut);
}
.bsx-faq details[open] summary::after { content: "−"; color: var(--bx-blue); }
.bsx-faq details > div {
    padding: 0 0 14px;
    font-size: 13.5px; line-height: 1.9; color: var(--bx-ink2);
}

/* ---------- 响应式 ---------- */
@media (max-width: 1000px) {
    .bsx-terminal { grid-template-columns: minmax(0, 1fr); }
    .bsx-greeks { grid-template-columns: repeat(5, minmax(0, 1fr)); }
}
@media (max-width: 760px) {
    .bsx-wrap { padding: 0 16px; }
    .bsx-hero { padding: 18px 0 24px; }
    .bsx-hero-row { gap: 14px; }
    .bsx-theme { align-self: flex-start; }
    .bsx-greeks { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .bsx-greek:nth-child(5) { grid-column: span 2; }
    .bsx-guide-grid { grid-template-columns: minmax(0, 1fr); }
    .bsx-chart { height: 148px; }
    .bsx-table th, .bsx-table td { padding: 8px 10px; }
}
@media (max-width: 520px) {
    .bsx-hero-row { flex-direction: column; }
    .bsx-theme { align-self: flex-end; margin-top: -6px; }
    .bsx-facts li { font-size: 12px; }
    .bsx-panel { padding: 16px 16px 18px; }
    .bsx-price { font-size: 40px; }
    .bsx-h1 { font-size: 27px; }
}
