:root{
  --bg:#070b16;--bg2:#111a32;--panel:rgba(17,25,46,.72);--line:rgba(255,255,255,.14);
  --text:#eaf0ff;--muted:#a8b7de;--focus:#88b8ff;
}
*{box-sizing:border-box}
body{margin:0;font-family:Inter,system-ui,-apple-system,sans-serif;color:var(--text);
  background:radial-gradient(900px 550px at 80% -10%,#2c3e78 0%,transparent 60%),radial-gradient(800px 500px at 0% 5%,#3f2964 0%,transparent 58%),linear-gradient(180deg,var(--bg2),var(--bg));}
.wrap{max-width:980px;margin:0 auto;padding:18px}
.top h1{margin:0;font-size:clamp(30px,5vw,50px)}
.subtitle{margin:6px 0 0;color:var(--muted)}
.controls{margin-top:14px;display:grid;grid-template-columns:repeat(3,minmax(150px,1fr));gap:10px;background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:12px}
.controls label{display:grid;gap:6px;font-size:12px;letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}
.controls select,.controls input,.controls button{width:100%;background:rgba(255,255,255,.06);color:var(--text);border:1px solid var(--line);border-radius:10px;padding:8px 10px;font-size:14px}
.controls input{padding:0;height:34px}
.controls button{font-weight:700;cursor:pointer}
.controls button:focus-visible,.controls select:focus-visible,.controls input:focus-visible,summary:focus-visible,a:focus-visible{outline:2px solid var(--focus);outline-offset:2px}
.btns{display:grid;gap:8px;grid-template-columns:1fr 1fr}
.val{color:var(--text);font-weight:700}
.canvasWrap{position:relative;margin-top:12px;border:1px solid var(--line);border-radius:14px;overflow:hidden;background:linear-gradient(180deg,rgba(255,255,255,.02),rgba(255,255,255,0))}
#harp{display:block;width:100%;height:min(72vh,680px);touch-action:none;cursor:pointer}
.hint{position:absolute;top:10px;right:10px;font-size:12px;color:var(--muted);background:rgba(0,0,0,.35);padding:6px 8px;border-radius:8px;border:1px solid var(--line)}
.notesPanel{margin-top:12px;background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:12px}
.notesPanel h2{margin:0 0 8px;font-size:15px;color:var(--muted);font-weight:700;letter-spacing:.06em;text-transform:uppercase}
.noteLog{display:flex;flex-wrap:wrap;gap:8px;min-height:34px}
.noteChip{padding:6px 9px;border:1px solid var(--line);background:rgba(255,255,255,.05);border-radius:999px;font-size:12px}
.explain,.about,footer{margin-top:12px}
.explain{color:var(--muted);line-height:1.7}
.about{background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:10px}
.about summary{cursor:pointer;font-weight:700}
.about p{color:var(--muted);line-height:1.7}
footer{color:var(--muted);padding-bottom:18px}
footer a{color:#a9c7ff}
@media (max-width:820px){.controls{grid-template-columns:1fr 1fr}.btns{grid-template-columns:1fr}}
@media (max-width:560px){.controls{grid-template-columns:1fr}}
@media (prefers-reduced-motion: reduce){*{animation:none!important;transition:none!important}}
