:root{
  --bg:#0e0f12;
  --panel:#16181d;
  --ink:#e9eef6;
  --muted:#a6afbd;
  --accent:#6ee7ff;
  --hot:#ff6b6b;
  --line:#252a32;
  --fret:#303745;
}

*{box-sizing:border-box}
html,body{height:100%}
body{
  margin:0;
  font-family:system-ui,-apple-system,Segoe UI,Roboto,Ubuntu,Arial,sans-serif;
  color:var(--ink);
  background:linear-gradient(180deg,#0c0d11, #11131a 60%, #0b0d13);
}

.bar{
  padding:16px clamp(16px,4vw,32px);
  display:flex; gap:16px; align-items:center; justify-content:space-between;
  border-bottom:1px solid var(--line);
  background:#0e1016cc; backdrop-filter: blur(6px);
  position:sticky; top:0; z-index:5;
}
.bar h1{margin:0;font-size:18px;letter-spacing:.4px;color:var(--accent)}
#stepInfo{font-variant-numeric:tabular-nums;color:var(--muted);font-size:14px;margin-left:auto;padding-left:16px}
#info{font-variant-numeric:tabular-nums;color:var(--ink)}

.wrap{
  padding:24px clamp(16px,4vw,32px);
  display:grid; gap:24px;
  grid-template-columns: minmax(280px, 480px) 1fr;
  min-height:calc(100vh - 80px); /* Subtract header height */
}
@media (max-width: 980px){ .wrap{grid-template-columns: 1fr;} }

.panel{
  background:var(--panel);
  border:1px solid var(--line);
  border-radius:12px;
  padding:16px;
  display:flex; flex-direction:column; gap:12px;
}

.controls{display:flex; flex-direction:column; gap:12px}
.controls .row{display:flex; gap:12px; flex-wrap:wrap; align-items:center}
label{display:flex; align-items:center; gap:8px; background:#12141a; border:1px solid var(--line); padding:8px 10px; border-radius:10px}
label span{font-size:12px; color:var(--muted)}
input[type="color"]{width:36px; height:28px; border:none; background:transparent; padding:0}
input[type="range"]{width:min(40vw,280px)}
input[type="text"]{background:#0f1218; border:1px solid var(--line); color:var(--ink); padding:8px 10px; border-radius:8px; font-size:14px; min-width:120px; flex:1}
#bpmOut{min-width:72px; text-align:right; color:var(--muted); font-size:12px}
button{
  appearance:none; border:1px solid var(--line); background:#12141a; color:var(--ink);
  padding:10px 14px; border-radius:10px; cursor:pointer; transition:transform .06s ease, background .15s ease;
}
button:hover{background:#1a1f29}
button:active{transform:translateY(1px)}
button.primary{border-color:#1c2b36; background:#13202b}

#sequence{
  min-height:200px; resize:vertical; width:100%; flex:1;
  font-family:ui-monospace, SFMono-Regular, Menlo, Consolas, "Liberation Mono", monospace;
  font-size:14px; line-height:1.5;
  color:var(--ink);
  background:#0f1218; border:1px solid var(--line); border-radius:10px; padding:10px 12px;
}
#parseError{color:var(--hot); font-size:13px; min-height:1.2em}

/* Modal styles */
.modal{position:fixed; top:0; left:0; width:100%; height:100%; background:rgba(0,0,0,0.8); display:none; align-items:center; justify-content:center; z-index:100}
.modal.show{display:flex}
.modal-content{background:var(--panel); border:1px solid var(--line); border-radius:12px; padding:24px; max-width:500px; width:90%; max-height:80vh; overflow-y:auto}
.modal-header{display:flex; justify-content:space-between; align-items:center; margin-bottom:16px}
.modal-title{margin:0; color:var(--accent); font-size:18px}
.close-btn{background:none; border:none; color:var(--muted); font-size:24px; cursor:pointer; padding:0; width:32px; height:32px; display:flex; align-items:center; justify-content:center}
.close-btn:hover{color:var(--ink)}
.sequence-list{display:flex; flex-direction:column; gap:8px; margin-top:12px}
.sequence-item{display:flex; justify-content:space-between; align-items:center; padding:12px; background:#12141a; border:1px solid var(--line); border-radius:8px}
.sequence-info{flex:1}
.sequence-name{font-weight:500; color:var(--ink); margin-bottom:4px}
.sequence-date{font-size:12px; color:var(--muted)}
.sequence-actions{display:flex; gap:8px}
.sequence-actions button{padding:6px 10px; font-size:12px}

.fretboard-outer{
  background:linear-gradient(180deg,#171b23,#151a23);
  border:1px solid var(--line);
  border-radius:12px;
  padding:18px;
}
svg#fretboard{width:100%; height:auto; display:block; background:#0f1218; border-radius:8px}

/* SVG decoration */
.line{stroke:#1d2027; stroke-width:1}
.string{stroke:#d8e2f1; stroke-opacity:.65}
.fret{stroke:var(--fret); stroke-width:4}
.nut{stroke:#d6dde9; stroke-width:9}
.inlay{fill:#818991}
.fret-number{fill:#7f8aa0; font-size:12px; font-family:inherit}

/* Hit markers */
.hit{
  fill:#ffffff;
  opacity:.9;
  transform-box: fill-box;
  transform-origin:center;
  animation: pulse .38s ease-out forwards;
}
@keyframes pulse{
  0%{transform:scale(.6); opacity:.95}
  70%{transform:scale(1.25); opacity:.5}
  100%{transform:scale(1.4); opacity:0}
}

/* Position dots where finger touches (slightly behind fret wire) */

/* Persistent step markers (no fade animation) */
.dot{
  opacity:.95;
}
