:root{color-scheme:light dark;--bg: #ffffff;--surface: #f3f5f8;--text: #14181f;--muted: #4a5361;--border: #6b7380;--accent: #0b57d0;--accent-text: #ffffff;--danger: #b3261e;--danger-text: #ffffff;--focus: #c2410c;--error: #b3261e;--control-bg: #0d1117;--control-text: #f5f7fa;--radius: 8px;--gutter: 16px;font-size:100%}@media(prefers-color-scheme:dark){:root:not([data-theme=light]){--bg: #12151b;--surface: #1c2129;--text: #eef1f5;--muted: #b4bcc8;--border: #8a94a3;--accent: #8ab4f8;--accent-text: #0b1220;--danger: #f2b8b5;--danger-text: #3b0907;--focus: #fdba74;--error: #f2b8b5}}:root[data-theme=dark]{--bg: #12151b;--surface: #1c2129;--text: #eef1f5;--muted: #b4bcc8;--border: #8a94a3;--accent: #8ab4f8;--accent-text: #0b1220;--danger: #f2b8b5;--danger-text: #3b0907;--focus: #fdba74;--error: #f2b8b5}*,*:before,*:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{margin:0;background:var(--bg);color:var(--text);font-family:system-ui,-apple-system,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;line-height:1.5}a{color:var(--accent);text-underline-offset:.15em}:focus-visible{outline:3px solid var(--focus);outline-offset:2px}.visually-hidden{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}.skip-link{position:absolute;left:var(--gutter);top:-100px;background:var(--accent);color:var(--accent-text);padding:.5rem 1rem;border-radius:var(--radius);z-index:10}.skip-link:focus{top:var(--gutter)}.site-header,.site-footer,main{max-width:52rem;margin:0 auto;padding:0 var(--gutter)}.site-header{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:.5rem 1.5rem;padding-top:1rem;padding-bottom:1rem;border-bottom:1px solid var(--border)}.site-name{margin:0;font-weight:700;font-size:1.125rem}.site-name a{color:var(--text);text-decoration:none}.site-header ul{display:flex;flex-wrap:wrap;gap:.25rem 1rem;list-style:none;margin:0;padding:0}.site-header nav a{display:inline-block;padding:.5rem 0}.site-header nav a[aria-current=page]{font-weight:700;text-decoration-thickness:3px}main{padding-bottom:3rem}main:focus{outline:none}h1{font-size:2rem;line-height:1.2;margin:1.5rem 0 .5rem}h2{font-size:1.5rem;line-height:1.25;margin:2.5rem 0 .75rem}h3{font-size:1.15rem;margin:1.5rem 0 .5rem}.intro{font-size:1.125rem;margin-top:0}.hint{color:var(--muted);margin:.25rem 0 0;font-size:.95rem}.status-line{padding:.75rem 1rem;background:var(--surface);border-left:4px solid var(--accent);border-radius:var(--radius)}.status-label{font-weight:700}.error-text{color:var(--error);font-weight:600;border-left:4px solid var(--error);padding-left:.75rem}.field{margin:1rem 0}.field label,fieldset>.field>label{display:block;font-weight:600;margin-bottom:.25rem}.field-short input{max-width:10rem}input[type=text],input[type=number],select,textarea{width:100%;font:inherit;color:var(--text);background:var(--bg);border:2px solid var(--border);border-radius:var(--radius);padding:.6rem .75rem;min-height:44px}textarea{display:block;resize:vertical}input[aria-invalid=true]{border-color:var(--error);border-width:3px}input[type=range]{width:100%;max-width:24rem;min-height:44px;accent-color:var(--accent)}input[type=checkbox],input[type=radio]{width:1.35rem;height:1.35rem;margin:.15rem 0 0;flex:none;accent-color:var(--accent)}.checkbox-field,.radio-field{display:flex;gap:.6rem;align-items:flex-start;margin:.75rem 0}.input-with-button{display:flex;gap:.5rem;flex-wrap:wrap}.input-with-button input{flex:1 1 14rem;width:auto}fieldset{border:1px solid var(--border);border-radius:var(--radius);padding:.5rem 1rem 1rem;margin:1.25rem 0}fieldset:disabled{opacity:.65}legend{font-weight:700;font-size:1.1rem;padding:0 .35rem}button{font:inherit;font-weight:600;min-height:44px;padding:.55rem 1.1rem;border-radius:var(--radius);border:2px solid var(--accent);cursor:pointer}button:disabled{cursor:not-allowed;opacity:.6}button.primary{background:var(--accent);color:var(--accent-text)}button.secondary{background:transparent;color:var(--accent)}button.danger{background:var(--danger);border-color:var(--danger);color:var(--danger-text)}button.large{font-size:1.15rem;padding:.8rem 1.4rem;width:100%;max-width:28rem}button.small{min-height:36px;padding:.25rem .75rem;font-size:.9rem}button[aria-pressed=true]{background:var(--accent);color:var(--accent-text)}.action-row{display:flex;flex-wrap:wrap;gap:.5rem;margin:1rem 0}details{border:1px solid var(--border);border-radius:var(--radius);padding:0 1rem;margin:1rem 0}details[open]{padding-bottom:1rem}summary{cursor:pointer;font-weight:600;padding:.75rem 0;min-height:44px}.key-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(9rem,1fr));gap:.5rem}.key-button{background:var(--surface);color:var(--text);border-color:var(--border)}.key-button[aria-pressed=true]{background:var(--accent);color:var(--accent-text);border-color:var(--accent)}.history{max-height:24rem;overflow-y:auto;border:1px solid var(--border);border-radius:var(--radius);padding:.5rem .75rem .5rem 2.75rem;margin:.5rem 0 0}.history:empty{display:none}.history li{padding:.15rem 0;overflow-wrap:anywhere}.braille-line{font-size:2rem;letter-spacing:.1em;min-height:3rem;padding:.5rem;background:var(--surface);border-radius:var(--radius);overflow-wrap:anywhere}#control-surface{background:var(--control-bg);color:var(--control-text);border:3px solid var(--accent);border-radius:var(--radius);padding:1.5rem;margin:1rem 0;min-height:12rem}#control-surface:focus{outline:4px solid var(--focus);outline-offset:3px}#control-surface:fullscreen{display:flex;flex-direction:column;justify-content:center;align-items:center;text-align:center;border:none;border-radius:0;margin:0;padding:2rem var(--gutter)}#control-surface button.secondary{color:var(--control-text);border-color:var(--control-text)}.control-title{font-size:1.5rem;font-weight:700;margin:0 0 .5rem}.control-instructions{font-size:1.15rem;margin:0 0 1rem}.control-last-speech{font-size:1.75rem;min-height:2.5em;max-width:40rem;overflow-wrap:anywhere;margin:0 0 1.5rem}dialog{max-width:min(36rem,calc(100vw - 2 * var(--gutter)));border:2px solid var(--border);border-radius:var(--radius);background:var(--bg);color:var(--text);padding:1.5rem}dialog::backdrop{background:#0009}dialog h2{margin-top:0}.fingerprint-label{font-weight:600;margin-bottom:.25rem}.fingerprint{font-family:ui-monospace,Cascadia Mono,Consolas,monospace;overflow-wrap:anywhere;background:var(--surface);padding:.5rem;border-radius:var(--radius);margin-top:0}.site-footer{border-top:1px solid var(--border);padding-top:1rem;padding-bottom:2rem;color:var(--muted);font-size:.95rem}.prose li{margin:.35rem 0}kbd{font-family:ui-monospace,Cascadia Mono,Consolas,monospace;font-size:.95em;padding:.05em .35em;border:1px solid var(--border);border-radius:4px;background:var(--surface)}.key-log{list-style:none;padding:0;font-family:ui-monospace,Cascadia Mono,Consolas,monospace}.key-log li{padding:.35rem .5rem;border-bottom:1px solid var(--border)}#key-test-area{min-height:8rem;padding:1rem;border:3px dashed var(--border);border-radius:var(--radius);margin:1rem 0}#key-test-area:focus{border-style:solid;border-color:var(--accent)}@media(forced-colors:active){button,input,select,textarea,details,fieldset,#control-surface,.status-line{border:2px solid CanvasText}button[aria-pressed=true]{background:Highlight;color:HighlightText;forced-color-adjust:none}:focus-visible{outline:3px solid Highlight}}@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important;animation:none!important}}
