:root{--bg:#0a0a14;--bg-soft:#111627;--panel:#151e33;--text:#ebf2ff;--muted:#a6b8d6;--line:#2c3f63;--red:#f36;--green:#0f8;--cyan:#00d4ff;--gold:gold;--amber:#fa0;--font-sans:"Space Grotesk", "Avenir Next", "Segoe UI", sans-serif;--font-mono:"JetBrains Mono", "Fira Code", ui-monospace, monospace}:root[data-theme=light]{--bg:#f4f6ff;--bg-soft:#fff;--panel:#eef2ff;--text:#0f1624;--muted:#2f405f;--line:#b5c3df}*{box-sizing:border-box}html,body{min-height:100%;margin:0;padding:0}body{background:radial-gradient(1200px 500px at 0% 0%, #00d4ff1f, transparent 55%), radial-gradient(900px 400px at 100% 40%, #ff33661f, transparent 60%), var(--bg);color:var(--text);font-family:var(--font-sans);line-height:1.5}.skip-link{z-index:100;background:var(--panel);color:var(--text);border:1px solid var(--line);border-radius:8px;padding:10px 12px;font-weight:700;text-decoration:none;position:absolute;top:-48px;left:12px}.skip-link:focus-visible{top:10px}#app{width:min(1200px,100%);margin:0 auto;padding:16px}.topbar{z-index:40;border:1px solid var(--line);background:color-mix(in srgb, var(--bg-soft) 92%, transparent);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);border-radius:10px;justify-content:space-between;align-items:center;gap:12px;padding:12px 64px 12px 12px;display:flex;position:sticky;top:0}h1,h2{margin:0;line-height:1.2}h1{font-size:clamp(1.1rem,3.2vw,1.9rem)}h2{margin-bottom:10px;font-size:clamp(1rem,2.4vw,1.5rem)}.exhibit{border:1px solid var(--line);background:linear-gradient(180deg, color-mix(in srgb, var(--bg-soft) 92%, transparent), var(--bg-soft));border-radius:12px;margin-top:18px;padding:14px;animation:.45s rise}@keyframes rise{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.grid{gap:14px;display:grid}.two{grid-template-columns:1fr}label{margin-bottom:8px;display:block}a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:3px solid var(--gold);outline-offset:2px}input,select,textarea,button,progress{width:100%;margin-top:6px}textarea,.panel,.mono{font-family:var(--font-mono)}textarea,input,select,button{background:var(--panel);color:var(--text);border:1px solid var(--line);border-radius:8px;min-height:44px;padding:10px}.btn{cursor:pointer;letter-spacing:.02em;font-weight:700;transition:transform .15s,border-color .15s}.btn:hover{border-color:var(--cyan);transform:translateY(-1px)}.btn.warn{border-color:var(--amber)}.theme-toggle{border:1px solid var(--line);background:var(--panel);width:2.6rem;height:2.6rem;color:var(--text);z-index:10;cursor:pointer;border-radius:50%;place-items:center;font-size:1.05rem;display:grid}.theme-toggle:hover{background:var(--bg-soft);border-color:var(--cyan)}.controls-row{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin-bottom:10px;display:grid}canvas{border:1px solid var(--line);background:#090f1f;border-radius:10px;width:100%;height:auto}:root[data-theme=light] canvas{background:#dfe8ff}.panel{border:1px solid var(--line);background:var(--panel);color:var(--muted);border-radius:8px;padding:10px}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.log{white-space:pre-wrap;min-height:260px;max-height:420px;overflow:auto}progress{accent-color:var(--green);height:12px}.matrix-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;display:grid}.lwe-meter{margin-top:10px}.lwe-meter-head{color:var(--text);margin-bottom:8px;font-size:.9rem}.lwe-meter-track{background:color-mix(in srgb, var(--line) 60%, transparent);border-radius:999px;width:100%;height:12px;overflow:hidden}.lwe-meter-fill{background:linear-gradient(90deg,#fa0,#ffd166);border-radius:999px;width:0%;height:100%;transition:width .35s}footer{text-align:center;border-top:1px solid var(--line);color:var(--muted);margin:20px 0 8px;padding-top:12px}.scripture-footer{text-align:center;border-top:1px solid var(--line);color:var(--muted);margin-top:2rem;padding:2rem 1rem;font-size:.85rem}@media (prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important;animation:none!important}}@media (width<=480px){#app{padding:10px}.controls-row{grid-template-columns:1fr}.exhibit{padding:10px}}@media (width>=768px){.two{grid-template-columns:1fr 1fr}.controls-row{grid-template-columns:repeat(4,minmax(0,1fr))}}@media (width>=1440px){#app{width:min(1360px,100%)}.controls-row{grid-template-columns:repeat(8,minmax(0,1fr))}}
