:root{--bg:#0f111a;--bg-card:#1a1d2e;--bg-input:#141725;--text:#c9d1d9;--text-dim:#8b949e;--text-bright:#f0f6fc;--accent:#58a6ff;--accent-dim:#58a6ff26;--green:#3fb950;--red:#f85149;--orange:#d29922;--border:#30363d;--mono:"JetBrains Mono", "Fira Code", ui-monospace, Consolas, monospace;--sans:system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--radius:8px}[data-theme=light]{--bg:#f6f8fa;--bg-card:#fff;--bg-input:#f0f2f5;--text:#24292f;--text-dim:#57606a;--text-bright:#1f2328;--accent:#0969da;--accent-dim:#0969da1a;--green:#1a7f37;--red:#cf222e;--orange:#9a6700;--border:#d0d7de}*,:before,:after{box-sizing:border-box}body{font-family:var(--sans);background:var(--bg);color:var(--text);margin:0;line-height:1.6}.container{max-width:960px;margin:0 auto;padding:0 20px 60px}header{border-bottom:1px solid var(--border);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;margin-bottom:32px;padding:16px 0;display:flex;position:relative}header h1{color:var(--text-bright);font-size:1.3rem;font-weight:600;font-family:var(--mono);margin:0}header h1 span{color:var(--accent)}.header-links{align-items:center;gap:12px;display:flex}.header-links a{color:var(--accent);font-size:.85rem;text-decoration:none}.header-links a:hover{text-decoration:underline}#theme-toggle{background:var(--bg-card);width:2.6rem;height:2.6rem;color:var(--text);border:1px solid var(--border);cursor:pointer;border-radius:50%;justify-content:center;align-items:center;padding:0;font-size:1.2rem;line-height:1;transition:background .15s,border-color .15s;display:flex}#theme-toggle:hover{border-color:var(--accent);background:var(--accent-dim)}#theme-toggle:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.badge{background:var(--accent-dim);color:var(--accent);border-radius:12px;margin-bottom:24px;padding:2px 10px;font-size:.75rem;font-weight:600;display:inline-block}.section{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);margin-bottom:24px;padding:24px}.section h2{color:var(--text-bright);align-items:center;gap:8px;margin:0 0 16px;font-size:1.15rem;font-weight:600;display:flex}.section h2 .icon{font-size:1.2rem}.field-row{flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:10px;display:flex}.field-label{color:var(--text-dim);text-transform:uppercase;letter-spacing:.05em;min-width:60px;font-size:.8rem;font-weight:600}.field-value{font-family:var(--mono);background:var(--bg-input);border:1px solid var(--border);word-break:break-all;border-radius:4px;flex:1;min-width:0;padding:6px 10px;font-size:.82rem}.byte-tag{color:var(--text-dim);background:var(--bg);white-space:nowrap;border-radius:3px;padding:2px 6px;font-size:.7rem}.btn{font-family:var(--sans);border-radius:var(--radius);border:1px solid var(--border);background:var(--bg-input);color:var(--text);cursor:pointer;padding:6px 14px;font-size:.82rem;font-weight:600;transition:background .15s,border-color .15s}.btn:hover{border-color:var(--accent);background:var(--accent-dim)}.btn:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.btn:disabled{opacity:.4;cursor:not-allowed}.btn-primary{background:var(--accent);color:#fff;border-color:var(--accent)}.btn-primary:hover{opacity:.9;background:var(--accent)}.btn-sm{padding:3px 8px;font-size:.72rem}.btn-row{flex-wrap:wrap;gap:8px;margin:12px 0;display:flex}textarea{width:100%;font-family:var(--mono);background:var(--bg-input);color:var(--text);border:1px solid var(--border);border-radius:var(--radius);resize:vertical;min-height:60px;padding:10px;font-size:.85rem}textarea:focus{border-color:var(--accent);box-shadow:0 0 0 2px var(--accent-dim);outline:none}.output-box{font-family:var(--mono);background:var(--bg-input);border:1px solid var(--border);word-break:break-all;border-radius:4px;min-height:36px;margin:8px 0;padding:10px;font-size:.82rem}#keystream-grid{grid-template-columns:repeat(16,1fr);gap:3px;margin:12px 0;display:grid}.ks-cell{font-family:var(--mono);text-align:center;border-radius:3px;padding:6px 2px;font-size:.72rem;font-weight:600}@media (width<=600px){#keystream-grid{grid-template-columns:repeat(8,1fr)}}.ks-label{color:var(--text-dim);text-align:center;margin-top:8px;font-size:.8rem;font-style:italic}#state-matrix{grid-template-columns:repeat(4,1fr);gap:4px;margin:12px 0;display:grid}.matrix-cell{font-family:var(--mono);text-align:center;border:1px solid var(--border);border-radius:4px;padding:8px 4px;font-size:.72rem}.matrix-val{color:var(--text-bright);font-weight:600;display:block}.matrix-lbl{color:var(--text-dim);text-transform:uppercase;margin-top:2px;font-size:.6rem;display:block}.matrix-const{background:#58a6ff1a}.matrix-key{background:#3fb9501a}.matrix-ctr{background:#d299221a}.matrix-nonce{background:#f851491a}#qr-step-table{-webkit-overflow-scrolling:touch;overflow-x:auto}#qr-step-table table{border-collapse:collapse;width:100%;min-width:500px;font-family:var(--mono);font-size:.78rem}#qr-step-table th,#qr-step-table td{border:1px solid var(--border);text-align:center;padding:6px 8px}#qr-step-table th{background:var(--bg-input);color:var(--text-dim);text-transform:uppercase;font-size:.72rem;font-weight:600}.op-cell{color:var(--accent);font-size:.72rem;text-align:left!important}#round-label{color:var(--text-dim);margin:8px 0;font-size:.82rem}.done-msg{color:var(--green);font-weight:600}.nr-inputs{grid-template-columns:1fr 1fr;gap:12px;margin-bottom:12px;display:grid}@media (width<=600px){.nr-inputs{grid-template-columns:1fr}}.nr-inputs label{color:var(--text-dim);margin-bottom:4px;font-size:.8rem;font-weight:600;display:block}.warning-banner{border:1px solid var(--red);color:var(--red);border-radius:var(--radius);background:#f851491f;margin-top:16px;padding:12px 16px;font-size:.9rem;font-weight:600}.xor-match{color:var(--red);font-weight:700}.xor-byte{color:var(--text-dim)}#nr-xor{font-family:var(--mono);letter-spacing:.5px;font-size:.82rem}#nr-explanation{color:var(--text-dim);margin-top:8px;font-size:.82rem;line-height:1.5}.info-tabs{border-bottom:1px solid var(--border);-webkit-overflow-scrolling:touch;gap:0;margin-bottom:16px;display:flex;overflow-x:auto}.info-tab-btn{font-family:var(--sans);color:var(--text-dim);cursor:pointer;background:0 0;border:none;border-bottom:2px solid #0000;padding:8px 16px;font-size:.82rem;font-weight:600;transition:color .15s,border-color .15s}.info-tab-btn:hover{color:var(--text)}.info-tab-btn:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}.info-tab-btn.active{color:var(--accent);border-bottom-color:var(--accent)}.info-tab-panel{font-size:.88rem;line-height:1.7;display:none}.info-tab-panel.active{display:block}.info-tab-panel h3{color:var(--text-bright);margin:16px 0 6px;font-size:.95rem}.info-tab-panel h3:first-child{margin-top:0}.info-tab-panel ul{margin:6px 0;padding-left:20px}.info-tab-panel li{margin-bottom:4px}.info-tab-panel code{font-family:var(--mono);background:var(--bg-input);border-radius:3px;padding:1px 5px;font-size:.82rem}.state-table{border-collapse:collapse;width:100%;font-family:var(--mono);margin:12px 0;font-size:.78rem}.state-table th,.state-table td{border:1px solid var(--border);text-align:center;padding:6px 10px}@media (width<=600px){.section{padding:16px}header h1{font-size:1rem}.field-row{gap:4px}.matrix-cell{padding:5px 2px;font-size:.6rem}.matrix-val{font-size:.58rem}#qr-step-table table{font-size:.68rem}}.state-table th{background:var(--bg-input);font-weight:600}details{margin-top:16px}details summary{color:var(--accent);cursor:pointer;font-size:.95rem;font-weight:600}details summary:hover{text-decoration:underline}details>div{color:var(--text);margin-top:8px;font-size:.88rem;line-height:1.7}.cross-links{border-top:1px solid var(--border);flex-wrap:wrap;gap:8px;margin-top:24px;padding-top:16px;display:flex}.cross-links a{color:var(--accent);background:var(--accent-dim);border-radius:14px;padding:4px 12px;font-size:.8rem;font-weight:600;text-decoration:none;display:inline-block}.cross-links a:hover{text-decoration:underline}footer{text-align:center;color:var(--text-dim);border-top:1px solid var(--border);padding:24px 0;font-size:.78rem}footer a{color:var(--accent);text-decoration:none}footer .verse{color:var(--text-dim);margin-top:8px;font-style:italic}
