*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }

    :root {
      --amber: #8a5a00;
      --amber-dim: #5a3a00;
      --amber-faint: rgba(138,90,0,0.12);
      --amber-glow: rgba(138,90,0,0.35);
      --bg: #050505;
      --bg2: #0a0805;
      --text: #8a5a00;
      --text-dim: #5a3a00;
      --cell: 44px;
      --gap: 4px;
    }

    html, body { height: 100%; }

    body {
      background: var(--bg);
      color: var(--text);
      font-family: "Courier New", monospace;
      font-size: 13px;
      cursor: none !important;
    }

    * { cursor: none !important; }

    .custom-cursor {
      position: fixed;
      width: 16px;
      height: 16px;
      pointer-events: none;
      z-index: 9999;
      transform: translate(-50%, -50%);
      filter: drop-shadow(0 0 2px #000) drop-shadow(0 0 4px var(--amber));
    }

    body::after {
      content: "";
      position: fixed;
      inset: 0;
      pointer-events: none;
      background: repeating-linear-gradient(
        to bottom,
        rgba(138,90,0,0.04), rgba(138,90,0,0.04) 1px,
        transparent 1px, transparent 3px
      );
      z-index: 9998;
    }

    /* === HEADER === */
    header {
      padding: 18px 24px;
      border-bottom: 1px solid var(--amber-dim);
      display: flex;
      align-items: center;
      justify-content: space-between;
    }

    .logo {
      font-size: 16px;
      letter-spacing: 3px;
      color: var(--text);
      text-decoration: none;
    }
    .logo:hover { text-shadow: 0 0 10px var(--amber); }

    .header-status {
      font-size: 11px;
      color: var(--text-dim);
      letter-spacing: 1px;
    }

    /* === LAYOUT === */
    .system {
      max-width: 1100px;
      margin: 0 auto;
      padding: 24px 24px 60px;
    }

    /* === TOP BAR === */
    .top-bar {
      display: flex;
      align-items: center;
      justify-content: space-between;
      margin-bottom: 20px;
      gap: 16px;
      flex-wrap: wrap;
    }

    #status-text {
      font-size: 12px;
      color: var(--text-dim);
      letter-spacing: 1px;
      flex: 1;
      min-width: 200px;
    }

    .top-controls {
      display: flex;
      align-items: center;
      gap: 10px;
      flex-wrap: wrap;
    }

    /* === TRANSPORT === */
    .transport {
      display: flex;
      align-items: center;
      gap: 10px;
      padding: 10px 0;
      border-top: 1px solid var(--amber-dim);
      border-bottom: 1px solid var(--amber-dim);
      margin-bottom: 16px;
      flex-wrap: wrap;
    }

    .transport-label {
      font-size: 11px;
      color: var(--text-dim);
      letter-spacing: 2px;
      margin-right: 4px;
    }

    /* === PATTERN BAR === */
    .pattern-bar {
      display: flex;
      align-items: center;
      gap: 6px;
      margin-bottom: 16px;
      flex-wrap: wrap;
    }

    .pattern-label {
      font-size: 11px;
      color: var(--text-dim);
      letter-spacing: 2px;
      margin-right: 4px;
    }

    .pattern-btn {
      width: 28px;
      height: 28px;
      border: 1px solid var(--amber-dim);
      background: transparent;
      color: var(--text-dim);
      font-family: "Courier New", monospace;
      font-size: 11px;
      display: flex;
      align-items: center;
      justify-content: center;
      position: relative;
    }

    .pattern-btn:hover { border-color: var(--amber); color: var(--amber); }

    .pattern-btn.active-pattern {
      border-color: var(--amber);
      color: var(--amber);
      box-shadow: 0 0 6px var(--amber-glow);
    }

    .pattern-btn.has-notes::after {
      content: "";
      position: absolute;
      bottom: 3px;
      left: 50%;
      transform: translateX(-50%);
      width: 4px;
      height: 4px;
      background: var(--amber);
      border-radius: 50%;
    }

    /* === GRID AREA === */
    .composer {
      display: flex;
      gap: 10px;
      align-items: flex-start;
      overflow-x: auto;
      padding-bottom: 8px;
    }

    .row-labels {
      display: flex;
      flex-direction: column;
      gap: var(--gap);
      flex-shrink: 0;
    }

    .row-label-group {
      display: flex;
      flex-direction: column;
      gap: var(--gap);
      margin-bottom: 8px;
    }

    .row-label-group:last-child { margin-bottom: 0; }

    .group-name {
      font-size: 9px;
      color: var(--text-dim);
      letter-spacing: 2px;
      padding: 2px 0;
      opacity: 0.6;
      height: 14px;
    }

    .row-label {
      height: var(--cell);
      width: 52px;
      display: flex;
      align-items: center;
      justify-content: flex-end;
      font-size: 11px;
      color: var(--text-dim);
      letter-spacing: 1px;
      padding-right: 6px;
      flex-shrink: 0;
    }

    .row-label.highlight { color: var(--amber); }

    /* === VOLUME STRIP === */
    .vol-strip {
      display: flex;
      flex-direction: column;
      gap: var(--gap);
      flex-shrink: 0;
    }

    .vol-group {
      display: flex;
      flex-direction: column;
      gap: var(--gap);
      margin-bottom: 8px;
    }

    .vol-spacer { height: 14px; }

    .vol-cell {
      height: var(--cell);
      width: 36px;
      display: flex;
      align-items: center;
      justify-content: center;
      position: relative;
    }

    .vol-slider {
      writing-mode: vertical-lr;
      direction: rtl;
      width: 20px;
      height: 34px;
      -webkit-appearance: none;
      appearance: none;
      background: transparent;
      outline: none;
    }

    .vol-slider::-webkit-slider-runnable-track {
      width: 2px;
      background: var(--amber-dim);
    }

    .vol-slider::-webkit-slider-thumb {
      -webkit-appearance: none;
      width: 10px;
      height: 10px;
      background: var(--amber);
      border: none;
      margin-left: -4px;
    }

    /* === GRID === */
    .grid-scroll {
      overflow-x: auto;
      flex: 1;
    }

    .grid-inner {
      display: flex;
      flex-direction: column;
      gap: 8px;
    }

    .row-group {
      display: flex;
      flex-direction: column;
      gap: var(--gap);
    }

    .group-header {
      height: 14px;
      font-size: 9px;
      color: var(--text-dim);
      letter-spacing: 2px;
      opacity: 0;
    }

    .grid-row {
      display: flex;
      gap: var(--gap);
    }

    /* === CELLS === */
    .cell {
      width: var(--cell);
      height: var(--cell);
      flex-shrink: 0;
      border: 1px solid var(--amber-dim);
      background: transparent;
      position: relative;
      transition: border-color 0.1s;
    }

    .cell:hover { border-color: var(--amber); }

    .cell.active {
      background: var(--amber);
      border-color: var(--amber);
    }

    .cell.beat-1 { border-left-color: var(--amber); }

    .cell.playing {
      background: var(--amber-faint);
      border-color: var(--amber);
      box-shadow: inset 0 0 8px var(--amber-glow);
    }

    .cell.active.playing {
      background: #bf8a20;
      border-color: #cf9a30;
    }

    .cell.flash {
      background: rgba(255,220,120,0.4) !important;
    }

    /* === BOTTOM CONTROLS === */
    .bottom-controls {
      margin-top: 20px;
      display: flex;
      align-items: center;
      gap: 10px;
      flex-wrap: wrap;
      border-top: 1px solid var(--amber-dim);
      padding-top: 14px;
    }

    .spacer { flex: 1; }

    /* === BUTTONS === */
    button {
      background: transparent;
      border: 1px solid var(--amber-dim);
      color: var(--text-dim);
      padding: 6px 14px;
      font-family: "Courier New", monospace;
      font-size: 12px;
      letter-spacing: 1px;
      transition: all 0.1s;
    }

    button:hover {
      border-color: var(--amber);
      color: var(--amber);
      box-shadow: 0 0 6px var(--amber-glow);
    }

    button:focus { outline: none; box-shadow: 0 0 8px var(--amber); }

    button.active-btn {
      background: var(--amber);
      color: #000;
      border-color: var(--amber);
    }

    /* === INPUT === */
    input[type="number"], select {
      background: var(--bg);
      color: var(--text);
      border: 1px solid var(--amber-dim);
      font-family: "Courier New", monospace;
      font-size: 12px;
      padding: 4px 6px;
      outline: none;
    }

    input[type="number"]:focus,
    select:focus { box-shadow: 0 0 6px var(--amber-glow); border-color: var(--amber); }

    input[type="number"] { width: 52px; }

    input::-webkit-inner-spin-button,
    input::-webkit-outer-spin-button { -webkit-appearance: none; }
    input[type="number"] { -moz-appearance: textfield; }

    select option { background: var(--bg); }

    /* === TEMPO DISPLAY === */
    .tempo-display {
      font-size: 20px;
      color: var(--amber);
      letter-spacing: 2px;
      min-width: 56px;
      text-align: right;
    }

    /* === SCROLLBAR === */
    ::-webkit-scrollbar { width: 6px; height: 6px; }
    ::-webkit-scrollbar-track { background: var(--bg); }
    ::-webkit-scrollbar-thumb { background: var(--amber-dim); border-radius: 3px; }
    ::-webkit-scrollbar-thumb:hover { background: var(--amber); }

    /* === COL NUMBERS === */
    .col-numbers {
      display: flex;
      gap: var(--gap);
      margin-bottom: 4px;
      padding-left: 0;
    }

    .col-num {
      width: var(--cell);
      height: 16px;
      flex-shrink: 0;
      font-size: 9px;
      color: var(--text-dim);
      text-align: center;
      line-height: 16px;
      opacity: 0.5;
    }

    .col-num.beat { color: var(--amber); opacity: 0.8; }
    .col-num.active-col { color: var(--amber); opacity: 1; }

/* === SWING SLIDER === */
input[type="range"]:not(.vol-slider) {
  -webkit-appearance: none;
  appearance: none;
  background: transparent;
  outline: none;
  height: 20px;
}

input[type="range"]:not(.vol-slider)::-webkit-slider-runnable-track {
  height: 2px;
  background: var(--amber-dim);
  border-radius: 1px;
}

input[type="range"]:not(.vol-slider)::-webkit-slider-thumb {
  -webkit-appearance: none;
  width: 12px;
  height: 12px;
  background: var(--amber);
  border: none;
  border-radius: 50%;
  margin-top: -5px;
}

input[type="range"]:not(.vol-slider)::-moz-range-track {
  height: 2px;
  background: var(--amber-dim);
}

input[type="range"]:not(.vol-slider)::-moz-range-thumb {
  width: 12px;
  height: 12px;
  background: var(--amber);
  border: none;
  border-radius: 50%;
}

@keyframes flash-fade {
  0%   { background: rgba(255,220,120,0.4); }
  100% { background: transparent; }
}

.cell.flash {
  animation: flash-fade 60ms forwards;
}