/*!
 * 19 · 摩斯电码转换 —— 独立设计：电报机 / 示波器
 * 墨黑机箱 + 琥珀荧光，点划波形、节奏条与码表按键；机箱在深浅主题下都保持深色。
 */
.vx.vx-19 {
    --vx-accent: #c88a2e;
    --vx-accent-2: #e0a94a;
    --vx-accent-soft: #f6ecd7;
    --vx-accent-ink: #241708;
    --vx-bg: #f0efe9;
    --vx-surface: #fdfcf7;
    --vx-surface-2: #f6f4ec;
    --vx-surface-3: #eae6da;
    --vx-line: #ddd8c9;
    --vx-line-2: #eae5d8;
    --vx-ink: #26241e;
    --vx-ink-2: #575348;
}
:root[data-theme="dark"] .vx.vx-19 {
    --vx-accent: #e5b25f;
    --vx-accent-2: #f0c67e;
    --vx-accent-soft: #392c17;
    --vx-accent-ink: #241708;
    --vx-bg: #10110e;
    --vx-surface: #191b17;
    --vx-surface-2: #20221c;
    --vx-surface-3: #272a22;
    --vx-line: #33362c;
    --vx-line-2: #272a23;
    --vx-ink: #f0efe7;
    --vx-ink-2: #bdb9a9;
}

.vx-19 .mor-hero { grid-template-columns: minmax(0, 1fr) minmax(350px, 430px); gap: 32px; }
.vx-19 .vx-h1 em { color: var(--vx-accent); }
.vx-19 .vx-eyebrow { color: #a36d1c; }
.vx-19 .vx-chip { border-radius: 2px; }
.vx-19 .vx-feat > i { border-radius: 2px; }
.vx-19 .mor-wave { width: 100%; height: 68px; margin-top: 18px; padding: 8px; border: 1px solid var(--vx-line); border-radius: 4px; background: var(--vx-surface); }
.vx-19 .mor-wave path { fill: none; stroke: var(--vx-accent); stroke-width: 3; stroke-linejoin: miter; opacity: .8; }

/* 电报机机箱 */
.vx-19 .mor-console { border: 2px solid #3a3327; border-radius: 8px; background: #1b1a16; color: #efe4c9; box-shadow: var(--vx-shadow-lg); overflow: hidden; }
.vx-19 .mor-console-h { display: flex; align-items: center; justify-content: space-between; padding: 11px 16px; border-bottom: 1px solid #3a3327; background: #12110e; }
.vx-19 .mor-console-h > b { font-size: 14px; letter-spacing: .08em; }
.vx-19 .mor-console b, .vx-19 .mor-console strong { color: inherit; }
.vx-19 .mor-console-h > span { font: 800 10.5px/1 var(--vx-font-num); letter-spacing: .18em; color: #e5b25f; }
.vx-19 .mor-console-b { padding: 16px; }
.vx-19 .mor-console .vx-label { color: #b6aa8f; }
.vx-19 .mor-console .vx-textarea, .vx-19 .mor-console .vx-select, .vx-19 .mor-console .vx-input { background: #26241d; border-color: #453d2e; color: #f4ecd6; font-family: var(--vx-font-num); }
.vx-19 .mor-console .vx-select option { color: #1b1a16; }
.vx-19 .mor-console .vx-textarea:focus, .vx-19 .mor-console .vx-select:focus { border-color: #e5b25f; box-shadow: 0 0 0 3px rgba(229, 178, 95, .16); }
.vx-19 .mor-console .vx-radio span { background: #26241d; border-color: #453d2e; color: #d9cfb6; border-radius: 3px; }
.vx-19 .mor-console .vx-radio input:checked + span { background: #e5b25f; border-color: #e5b25f; color: #241708; }
.vx-19 .mor-console .vx-btn { background: #2c2820; border-color: #4a4131; color: #efe4c9; }
.vx-19 .mor-console .vx-btn:hover { border-color: #e5b25f; }
.vx-19 .mor-console .vx-btn--primary { background: #e5b25f; border-color: #e5b25f; color: #241708; font-weight: 800; }
.vx-19 .mor-console .vx-btn--primary:hover { background: #f0c67e; border-color: #f0c67e; color: #241708; }
.vx-19 .mor-console .vx-err { color: #f4a49c; }

/* 输出与节奏 */
.vx-19 .mor-out { padding: 15px 16px; border: 1px dashed var(--vx-accent); border-radius: 4px; background: var(--vx-surface-2); font-family: var(--vx-font-num); font-size: 15px; line-height: 2; word-break: break-all; white-space: pre-wrap; }
.vx-19 .mor-unknown { margin-top: 9px; font-size: 12.8px; color: var(--vx-warn); }
.vx-19 .mor-rhythm { display: block; width: 100%; height: 74px; margin: 14px 0; padding: 6px; border: 1px solid var(--vx-line); border-radius: 4px; background: var(--vx-surface-2); }
.vx-19 .mor-rhythm rect.is-on { fill: var(--vx-accent); }
.vx-19 .mor-rhythm rect.is-off { fill: var(--vx-surface-3); }
.vx-19 .mor-rhythm rect.is-cur { fill: var(--vx-bad); }
.vx-19 .mor-player { padding: 14px 16px; border: 1px solid var(--vx-line); border-radius: 4px; background: var(--vx-surface-2); }
.vx-19 .mor-player-row { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 10px 16px; }
.vx-19 .mor-player-row .vx-label { display: flex; justify-content: space-between; margin: 0; font-size: 11.5px; }
.vx-19 .mor-player-row input[type="range"] { width: 100%; accent-color: var(--vx-accent); }

/* 码表 */
.vx-19 .mor-table-tabs { display: flex; flex-wrap: wrap; gap: 7px; margin-bottom: 12px; }
.vx-19 .mor-tab { appearance: none; padding: 7px 14px; border: 1px solid var(--vx-line); border-radius: 3px; background: var(--vx-surface-2); color: var(--vx-ink-2); font: inherit; font-size: 12.5px; font-weight: 700; cursor: pointer; }
.vx-19 .mor-tab.is-on { background: var(--vx-accent); border-color: var(--vx-accent); color: var(--vx-accent-ink); }
.vx-19 .mor-table { display: grid; grid-template-columns: repeat(auto-fill, minmax(96px, 1fr)); gap: 7px; }
.vx-19 .mor-cell { display: flex; align-items: center; justify-content: space-between; gap: 8px; padding: 8px 10px; border: 1px solid var(--vx-line); border-radius: 3px; background: var(--vx-surface-2); cursor: pointer; }
.vx-19 .mor-cell:hover { border-color: var(--vx-accent); }
.vx-19 .mor-cell > b { font-size: 15px; }
.vx-19 .mor-cell > span { font: 700 13px var(--vx-font-num); color: var(--vx-accent); letter-spacing: .06em; }

@media (max-width: 760px) {
    .vx-19 .mor-player-row { grid-template-columns: 1fr; }
}
