:root{color-scheme:dark;--ink:#eff7ff;--muted:#9fb6d2;--cyan:#52e2de}*{box-sizing:border-box}body{margin:0;background:#071426;color:var(--ink);font-family:system-ui,sans-serif;line-height:1.6}main{max-width:1120px;margin:auto;padding:28px 24px 60px}a{color:var(--cyan)}nav{display:flex;justify-content:space-between;align-items:center;margin-bottom:50px}.brand{font-weight:800;letter-spacing:2px;text-decoration:none}.eyebrow{color:var(--cyan);letter-spacing:3px;font-size:12px;font-weight:800}h1{font-size:clamp(36px,6vw,64px);line-height:1.1;margin:14px 0}h1 span{color:var(--cyan)}.intro{max-width:620px;color:var(--muted)}.layout{display:grid;grid-template-columns:1.1fr 1fr;gap:22px;margin-top:32px}.card{border:1px solid #264560;border-radius:24px;padding:28px;background:linear-gradient(140deg,#102940,#0a1b30)}h2{margin:0 0 8px;font-size:23px}.hint{color:var(--muted);font-size:14px}.screen{min-height:140px;background:#05111f;border:1px solid #284359;border-radius:16px;padding:20px;margin:20px 0;overflow-wrap:anywhere}.symbols{font-family:monospace;font-size:30px;letter-spacing:5px;color:var(--cyan);min-height:48px}.decoded{font-family:monospace;font-size:24px;letter-spacing:3px;min-height:38px}button,input,textarea{font:inherit}button{cursor:pointer;border:1px solid #3e6680;border-radius:12px;padding:12px 18px;color:var(--ink);background:#173b53;min-height:48px}button:focus-visible,a:focus-visible,input:focus-visible,textarea:focus-visible{outline:3px solid #69e5ff;outline-offset:4px}button.primary{background:var(--cyan);color:#05252b;border:0;font-weight:800}.key{width:100%;height:110px;touch-action:none;user-select:none;font-size:23px;font-weight:800;background:linear-gradient(#24536b,#143347);box-shadow:0 6px 0 #04101c}.key.pressed{transform:translateY(4px);box-shadow:0 2px 0 #04101c;background:#52e2de;color:#05252b}.row{display:flex;gap:10px;flex-wrap:wrap;margin-top:16px}textarea{width:100%;min-height:110px;border-radius:12px;background:#05111f;color:white;border:1px solid #31536d;padding:16px;resize:vertical;text-transform:uppercase;margin-top:16px}.settings{display:grid;grid-template-columns:repeat(3,1fr);gap:24px;margin:24px 0;padding:24px;border:1px solid #264560;border-radius:20px}label{display:block;font-size:14px;color:var(--muted)}label strong{float:right;color:var(--ink)}input[type=range]{width:100%;accent-color:var(--cyan);min-height:36px}.status{min-height:26px;color:var(--cyan);font-size:14px}details{border:1px solid #264560;border-radius:18px;padding:20px}summary{cursor:pointer}.reference{display:grid;grid-template-columns:repeat(6,1fr);gap:8px;margin-top:16px}.reference span{background:#102940;border-radius:8px;padding:8px;font-family:monospace}.reference b{color:var(--cyan);margin-right:10px}footer{margin-top:28px;color:var(--muted);font-size:13px}@media(max-width:700px){main{padding:20px 16px 40px}nav{margin-bottom:34px}.layout{grid-template-columns:1fr}.card{padding:22px}.settings{grid-template-columns:1fr;gap:12px;padding:20px}.reference{grid-template-columns:repeat(3,1fr)}}
/* Keep the straight key a touch surface on iOS Safari. */
.key,.key *{-webkit-user-select:none!important;user-select:none!important;-webkit-touch-callout:none!important;-webkit-tap-highlight-color:transparent;touch-action:none}

.reference .morse-sound{display:flex;align-items:center;gap:8px;text-align:left;min-width:0;min-height:48px;padding:10px;background:#102940;font:15px monospace;border:1px solid transparent}.reference .morse-sound span{padding:0;background:none;letter-spacing:1px}.reference .morse-sound b{color:var(--cyan);margin:0}.reference .morse-sound small{margin-left:auto;color:var(--cyan);font-size:10px}.reference .morse-sound:hover,.reference .morse-sound:active{border-color:var(--cyan);background:#1a4257}@media(max-width:700px){.reference .morse-sound{padding:8px 6px;gap:5px;font-size:13px}}

[hidden]{display:none!important}.decode-controls{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-top:18px}.decode-controls button{font-size:14px;min-height:44px}.decode-controls button[aria-pressed="true"]{border-color:#52e2de;color:#83efe7}.decode-controls button[aria-pressed="false"]{border-color:#7488a2;color:#b8c7db}#decode-note{margin:20px 0;text-align:center}
