:root{--bg:#0b1120;--surface:#111a2e;--surface-2:#1a2540;--border:#2a3656;--text:#e5e9f2;--muted:#94a3b8;--accent:#fbbf24;--accent-text:#0b1120;--ok:#4ade80;--bad:#f87171;--warn:#fb923c;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;background:var(--bg);color:var(--text);font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;line-height:1.5}*{box-sizing:border-box}body{min-height:100vh;margin:0}a{color:var(--accent)}code,.mono{font-family:ui-monospace,JetBrains Mono,Menlo,monospace}button,input,select{font:inherit;color:inherit;background:var(--surface-2);border:1px solid var(--border);border-radius:6px;padding:.4rem .7rem}button{cursor:pointer}button:disabled,input:disabled,select:disabled{opacity:.5;cursor:not-allowed}button.primary{background:var(--accent);color:var(--accent-text);border-color:var(--accent);font-weight:600}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.app{max-width:960px;margin:0 auto;padding:0 1rem 3rem}.app-header{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;margin-bottom:1.5rem;padding:1rem 0;display:flex}.brand{color:var(--text);font-size:1.2rem;font-weight:700;text-decoration:none}.brand span{color:var(--accent);margin-right:.3rem}.app-header nav a{color:var(--muted);margin-left:1rem;text-decoration:none}.app-header nav a[aria-current=page]{color:var(--accent)}.lead{color:var(--muted);max-width:60ch;font-size:1.1rem}.cards{grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:1rem;margin-top:1.5rem;display:grid}.card{background:var(--surface);border:1px solid var(--border);color:var(--text);border-radius:10px;padding:1.2rem;text-decoration:none;display:block}.card:hover{border-color:var(--accent)}.card h2{color:var(--accent);margin:0 0 .4rem;font-size:1.1rem}.card p{color:var(--muted);margin:0}.speed-bar{background:var(--surface);border:1px solid var(--border);border-radius:10px;flex-wrap:wrap;align-items:flex-start;gap:1.2rem;margin-bottom:1.5rem;padding:1rem;display:flex}.field{flex-direction:column;gap:.35rem;display:flex}.field>span{color:var(--muted);text-transform:uppercase;letter-spacing:.04em;font-size:.8rem}.speed-stepper{gap:.3rem;display:flex}.speed-stepper input{text-align:center;width:4.5rem}.field input[type=number]{width:4.5rem}.field input[type=range]{accent-color:var(--accent);padding:0}.checkbox{color:var(--muted);align-items:center;gap:.4rem;font-size:.9rem;display:flex}.controls{flex-wrap:wrap;align-items:center;gap:.6rem;margin-bottom:1.2rem;display:flex}.status{background:var(--surface-2);color:var(--muted);border-radius:999px;margin-left:auto;padding:.2rem .7rem;font-size:.9rem}.status-playing{color:var(--accent)}.status-finished{color:var(--ok)}.answer{flex-direction:column;gap:.4rem;margin-bottom:1.2rem;display:flex}.answer label{color:var(--muted)}.answer-row{gap:.6rem;display:flex}.answer-row input{letter-spacing:.15em;text-transform:uppercase;flex:1;font-size:1.4rem}.score{background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:1rem}.accuracy{margin:0 0 .5rem;font-size:1.4rem;font-weight:700}.ops{letter-spacing:.1em;white-space:pre-wrap;font-size:1.4rem}.op{white-space:pre;border-radius:3px;padding:0 1px}.op-match{color:var(--ok)}.op-sub{color:var(--bad);-webkit-text-decoration:underline wavy;text-decoration:underline wavy}.op-missing{color:var(--warn);opacity:.8;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}.op-extra{color:var(--muted);text-decoration:line-through}.legend{color:var(--muted);font-size:.85rem}.hint{color:var(--muted);margin-top:2rem;font-size:.85rem}.content-field{max-width:20rem;margin-bottom:1rem}.error{color:var(--bad);background:var(--surface);border:1px solid var(--bad);border-radius:8px;padding:.6rem .9rem}.app-footer{border-top:1px solid var(--border);color:var(--muted);margin-top:3rem;padding-top:1rem;font-size:.8rem}.conditions{background:var(--surface);border:1px solid var(--border);border-radius:10px;margin-bottom:1.5rem;padding:1rem}.conditions details{margin-top:.8rem}.conditions summary{cursor:pointer;color:var(--accent)}.conditions-grid{grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:.9rem 1.2rem;margin-top:.8rem;display:grid}.slider{color:var(--muted);flex-direction:column;gap:.3rem;font-size:.85rem;display:flex}.slider output{color:var(--text);font-variant-numeric:tabular-nums}.slider input{accent-color:var(--accent);padding:0}textarea{font:inherit;color:inherit;background:var(--surface-2);border:1px solid var(--border);resize:vertical;border-radius:6px;width:100%;padding:.6rem}.prompt{letter-spacing:.08em;background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:1rem;font-size:1.6rem}.morse-keys{gap:.5rem;margin-top:.3rem;display:flex}.morse-keys button{min-width:3rem;font-size:1.3rem}.pattern-table{border-collapse:collapse;margin-top:.5rem}.pattern-table td,.pattern-table th{text-align:left;white-space:pre;padding:.2rem 1rem .2rem 0}.pattern-table .op-match td{color:var(--ok)}.pattern-table .op-sub td,.pattern-table .op-missing td,.pattern-table .op-extra td{color:var(--bad)}.translator{margin-top:2rem}.translator summary{cursor:pointer;color:var(--accent)}.morse-output{background:var(--surface);border:1px solid var(--border);border-radius:10px;flex-wrap:wrap;gap:.6rem 1.6rem;min-height:3rem;margin:1rem 0;padding:1rem;display:flex}.morse-word{flex-direction:column;display:flex}.morse-letters{color:var(--muted);font-size:.8rem}.morse-pattern{color:var(--accent);letter-spacing:.08em;font-size:1.4rem}.chart{grid-template-columns:repeat(auto-fill,minmax(7rem,1fr));gap:.3rem 1rem;font-size:.95rem;display:grid}.chart b{color:var(--accent);min-width:2.6rem;display:inline-block}.now-playing{background:var(--accent);color:var(--accent-text);border-radius:3px}.status-listening{color:var(--ok)}.status-loading{color:var(--accent)}.waterfall{margin:.5rem 0 .25rem;position:relative}.waterfall canvas{cursor:crosshair;border-radius:6px;width:100%;height:160px;max-height:400px;display:block}.waterfall-marker{background:var(--accent);pointer-events:none;width:2px;height:160px;margin-left:-1px;position:absolute;top:0}.waterfall-axis{color:var(--muted);justify-content:space-between;font-size:.75rem;display:flex}.readout{color:var(--muted)}.readout strong{color:var(--text);font-weight:600}.decode-text{white-space:pre-wrap;overflow-wrap:anywhere;background:var(--surface);border:1px solid var(--border);border-radius:8px;min-height:8rem;max-height:20rem;margin-bottom:.75rem;padding:.75rem;font-size:1.2rem;overflow-y:auto}.decode-text .pending{color:var(--muted)}
