:root{color-scheme:light;--paper:#f7f5ef;--ink:#292b29;--muted:#62655e;--line:#dedfd6;--accent:#236e68;--wash:#e4eeea;font-family:system-ui,sans-serif;color:var(--ink);background:var(--paper)}

*{box-sizing:border-box}
body{margin:0}
header,main,footer{width:min(1180px,calc(100% - 48px));margin:auto}
header{padding:26px 0;display:flex;justify-content:space-between;border-bottom:1px solid var(--line);font-size:11px;letter-spacing:1.5px;color:var(--muted)}
a{color:var(--accent);text-decoration:none}
.brand{font-weight:750;color:var(--ink)}
.intro{position:relative;padding:65px 0 44px}
.eyebrow{font-size:11px;letter-spacing:1.8px;font-weight:700;color:var(--accent)}
h1{font:normal clamp(42px,6vw,72px)/1.1 Georgia,serif;letter-spacing:-2px;margin:18px 0}
h1 em{color:var(--accent)}
.lede{max-width:620px;font-size:16px;line-height:1.8;color:var(--muted)}
.alphabet-art{position:absolute;right:12px;top:73px;display:flex;flex-wrap:wrap;justify-content:center;gap:12px;width:330px;transform:rotate(-4deg)}
.alphabet-art span{border:1px solid #b9cfc6;background:var(--wash);border-radius:10px;padding:18px 12px;font:25px monospace;color:var(--accent);box-shadow:0 4px #d0ddd6}
.alphabet-art b{font-weight:400;color:#80978a}
.alphabet-art small{width:100%;text-align:center;font-size:9px;letter-spacing:2px;margin:12px 0}
.panel{background:#fffefa;border:1px solid var(--line);border-radius:14px;padding:26px;margin:0 0 28px;scroll-margin-top:20px}
.section-heading,.key-heading,.label-line,.subheading{display:flex;align-items:center;justify-content:space-between;gap:14px}
.section-heading{padding-bottom:20px;border-bottom:1px solid var(--line);margin-bottom:22px}
h2{font-size:18px;margin:0}
.number{font:12px monospace;color:var(--accent);margin-right:12px}
button,input,textarea,select{font:inherit}
button{font-size:12px;cursor:pointer;background:#fffefa;color:var(--accent);border:1px solid #c5d6cf;border-radius:6px;padding:9px 12px}
button:hover{background:var(--wash)}
button:disabled{opacity:.45;cursor:default}
button[aria-pressed=true],.primary{background:var(--accent);color:white;border-color:var(--accent)}
.primary:hover{background:#185550}
.mode{display:flex;gap:5px}
label,.label-line>span{font-size:10px;font-weight:700;letter-spacing:1.2px}
.actions{display:flex;gap:8px;flex-wrap:wrap}
.key-input{display:block;width:100%;margin-top:12px;font:clamp(14px,2.8vw,25px) monospace;letter-spacing:clamp(0px,.6vw,7px);padding:14px;border:1px solid var(--line);border-radius:6px;color:var(--accent);background:var(--paper)}
.help{font-size:12px;line-height:1.65;color:var(--muted);margin:10px 0 15px}
.error{color:#a43127;font-size:13px}
.alphabet{display:grid;grid-template-columns:repeat(26,1fr);gap:3px;margin:20px 0 28px}
.pair{text-align:center;font:12px monospace}
.pair span{display:block;padding:7px 0;background:var(--paper)}
.pair b{display:block;background:var(--wash);color:var(--accent);padding:7px 0;margin-top:2px}
.editors{display:grid;grid-template-columns:1fr 1fr;gap:24px}
textarea{resize:vertical;width:100%;min-height:155px;padding:15px;background:var(--paper);border:1px solid var(--line);border-radius:7px;font:15px/1.8 monospace;color:var(--ink);margin-top:10px}
output{display:block;white-space:pre-wrap;overflow-wrap:anywhere;font:16px/1.9 monospace;min-height:130px;max-height:400px;overflow:auto;margin:15px 0}
.result-panel{background:var(--wash);padding:18px 20px;border-radius:8px}
.result-panel .primary{margin-top:8px}
.desk-grid{display:grid;grid-template-columns:1fr 1fr;gap:32px;border-top:1px solid var(--line);padding-top:24px;margin-top:24px}
h3{font:normal 23px Georgia,serif;margin:0 0 14px}
.subheading h3{margin-bottom:0}
.sort-label{display:flex;align-items:center;gap:8px;letter-spacing:0;font-size:12px;font-weight:400}
select{padding:6px;border:1px solid var(--line);background:var(--paper);border-radius:4px;font-size:12px}
.legend{display:flex;gap:18px;font-size:11px;color:var(--muted)}
.legend i{display:inline-block;width:10px;height:10px;margin-right:6px}
.observed{background:var(--accent)}
.expected{background:#c8b482}
.frequency-scroll{max-height:570px;overflow:auto}
.sequence-analysis{border-top:1px solid var(--line);margin-top:24px;padding-top:24px}
.sequence-controls{display:flex;flex-wrap:wrap;gap:12px 16px}
.join-label{display:flex;align-items:center;gap:8px;font-size:12px;letter-spacing:0;font-weight:400;line-height:1.6}
.join-label input{flex-shrink:0;accent-color:var(--accent)}
#sequence-body td:last-child{font-family:monospace;letter-spacing:1px}
#sequence-body td{overflow-wrap:anywhere}
table{border-collapse:collapse;width:100%;font-size:12px}
th{position:sticky;top:0;background:#fffefa;text-align:left;font-size:9px;letter-spacing:.5px;color:var(--muted);padding:10px 5px;border-bottom:1px solid var(--line)}
td{padding:7px 5px;border-bottom:1px solid #eeeee7;font-variant-numeric:tabular-nums}
td:first-child{font:700 13px monospace;color:var(--accent)}
td:nth-child(4){width:45%}
.bar-track{height:6px;background:var(--paper);margin:3px 0}
.bar{height:100%;background:var(--accent);min-width:0}
.bar.reference{background:#c8b482}
.guess-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:8px;margin:22px 0}
.guess-cell{text-align:center}
.guess-cell label{display:block;font:700 13px monospace;letter-spacing:0;color:var(--muted);margin-bottom:5px}
.guess-cell input{width:100%;height:38px;text-align:center;border:1px solid #c5d6cf;border-radius:5px;font:19px monospace;color:var(--accent);background:var(--wash);text-transform:uppercase}
.guess-cell input:placeholder-shown{background:var(--paper)}
.guess-cell:focus-within label{color:var(--accent)}
.guess-cell input:focus{background:#fff1ce}
#partial{display:block;white-space:pre-wrap;overflow-wrap:anywhere;overflow:auto;max-height:400px;margin:15px 0;font:16px/1.9 monospace;background:var(--paper);border:1px solid var(--line);padding:16px;border-radius:7px;letter-spacing:1px;min-height:140px}
#partial .preview-letter{display:inline;padding:0;margin:0;border:0;border-radius:2px;font:inherit;letter-spacing:inherit;color:inherit;background:transparent;text-decoration:underline;text-decoration-color:#c5d6cf;text-underline-offset:4px}
#partial .preview-letter:hover,#partial .preview-letter.highlighted{background:#f0deb0;color:#49381a;text-decoration-color:#94712b}
details{font-size:13px;line-height:1.8;color:var(--muted);border-top:1px solid var(--line);padding-top:14px}
summary{color:var(--accent);cursor:pointer;font-weight:600}
.notes{display:grid;grid-template-columns:repeat(3,1fr);gap:34px;padding:18px 0 50px}
.notes h3{font-size:22px}
.notes article>p:last-child{font-size:13px;line-height:1.9;color:var(--muted)}
footer{display:flex;justify-content:space-between;gap:15px;border-top:1px solid var(--line);padding:24px 0;font-size:11px;color:var(--muted)}
:focus-visible{outline:3px solid #b88a3e;outline-offset:3px}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
[hidden]{display:none!important}
@media(min-width:1000px){.intro .lede{max-width:650px;padding-right:30px}
}
@media(max-width:1050px){.alphabet-art{display:none}
}
@media(max-width:720px){header,main,footer{width:calc(100% - 28px)}
header{font-size:9px;letter-spacing:.6px}
.intro{padding-top:35px}
.panel{padding:18px}
.section-heading,.key-heading{align-items:flex-start;flex-wrap:wrap}
.editors,.desk-grid,.notes{grid-template-columns:1fr}
.desk-grid{gap:28px}
.alphabet{grid-template-columns:repeat(13,1fr);row-gap:12px}
.guess-grid{grid-template-columns:repeat(7,1fr)}
.key-input{font-size:14px;letter-spacing:0;padding:12px 8px}
.notes{gap:15px}
footer{flex-wrap:wrap}
.subheading{flex-wrap:wrap}
h2{font-size:16px}
.frequency-scroll{max-height:350px}
}
