:root {
  --bg: #eceae4;
  --card: #ffffff;
  --line: rgba(29, 29, 31, 0.08);
  --text: #1d1d1f;
  --dim: #85837b;
  --accent: #2b57c4;
  --accent-deep: #1c3f96;
  --teal: #0a7f73;
}

* { box-sizing: border-box; }

body {
  margin: 0;
  min-height: 100vh;
  background:
    radial-gradient(1200px 800px at 30% 15%, #f4f2ec 0%, var(--bg) 60%),
    var(--bg);
  color: var(--text);
  font-family: -apple-system, 'SF Pro Text', 'Inter', 'Segoe UI', system-ui, sans-serif;
}

main {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 56px;
  min-height: 100vh;
  padding: 40px;
  flex-wrap: wrap;
}

/* ---------------- device ---------------- */

.device-wrap { display: flex; flex-direction: column; align-items: center; gap: 26px; }

.device {
  position: relative;
  width: 620px;
  height: 620px;
  display: grid;
  place-items: center;
  filter: drop-shadow(0 24px 48px rgba(29, 29, 31, 0.22));
}

/* knurled aluminum encoder ring */
.ring {
  position: absolute;
  inset: 0;
  border-radius: 50%;
  background:
    repeating-conic-gradient(from var(--rot, 0deg),
      #e8e6e1 0deg 2.6deg, #c9c7c1 2.6deg 6deg),
    conic-gradient(#dedcd6, #c2c0ba, #e4e2dc, #c2c0ba, #dedcd6);
  box-shadow:
    inset 0 2px 5px rgba(255, 255, 255, 0.9),
    inset 0 -10px 24px rgba(29, 29, 31, 0.28),
    0 4px 20px rgba(29, 29, 31, 0.18);
  cursor: grab;
  transition: transform 0.06s linear;
  transform: rotate(var(--rot, 0deg));
}
.ring:active { cursor: grabbing; }

.screen-bezel {
  position: relative;
  width: 512px;
  height: 512px;
  border-radius: 50%;
  background: radial-gradient(circle at 35% 28%, #fbfaf7 0%, #d9d7d1 60%);
  box-shadow:
    inset 0 2px 6px rgba(255, 255, 255, 0.9),
    inset 0 -5px 14px rgba(29, 29, 31, 0.25),
    0 0 0 6px #efede8;
  display: grid;
  place-items: center;
}

#lcd {
  width: 480px;
  height: 480px;
  border-radius: 50%;
  background: #f5f3ee;
  cursor: pointer;
  box-shadow: inset 0 0 26px rgba(29, 29, 31, 0.12);
}
#lcd.pixel { image-rendering: pixelated; }

/* ---------------- hardware buttons ---------------- */

.btn-row { display: flex; gap: 22px; }

.hw-btn {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 4px;
  width: 76px;
  height: 76px;
  border-radius: 50%;
  border: 1px solid rgba(29, 29, 31, 0.1);
  background: radial-gradient(circle at 35% 30%, #ffffff, #e4e2dc 75%);
  color: var(--dim);
  cursor: pointer;
  box-shadow: 0 5px 14px rgba(29, 29, 31, 0.18), inset 0 1px 2px rgba(255, 255, 255, 0.95);
  transition: transform 0.06s, box-shadow 0.06s, color 0.15s;
  font-family: inherit;
}
.hw-btn svg { width: 22px; height: 22px; }
.hw-btn span { font-size: 10px; letter-spacing: 0.08em; font-weight: 600; }
.hw-btn:hover { color: var(--text); }
.hw-btn.primary { color: var(--accent); width: 88px; height: 88px; }
.hw-btn.note { color: var(--teal); }
.hw-btn.pressed, .hw-btn:active {
  transform: translateY(2px) scale(0.97);
  box-shadow: 0 2px 6px rgba(29, 29, 31, 0.2), inset 0 2px 5px rgba(29, 29, 31, 0.12);
}

/* ---------------- side panel ---------------- */

.panel { width: 360px; display: flex; flex-direction: column; gap: 16px; }

.panel header h1 {
  margin: 0;
  font-size: 26px;
  letter-spacing: 0.42em;
  font-weight: 700;
}
.panel .tag { margin: 4px 0 0; color: var(--dim); font-size: 13px; }

.card {
  background: var(--card);
  border: 1px solid var(--line);
  border-radius: 16px;
  padding: 16px 18px;
  box-shadow: 0 2px 10px rgba(29, 29, 31, 0.05);
}
.card h2 {
  margin: 0 0 10px;
  font-size: 11px;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  color: var(--dim);
  font-weight: 600;
}

.legend { width: 100%; border-collapse: collapse; font-size: 12.5px; }
.legend td { padding: 4px 0; vertical-align: top; }
.legend td:first-child { color: var(--dim); white-space: nowrap; padding-right: 14px; }
.legend b { color: var(--teal); font-weight: 600; }

.row { display: flex; align-items: center; gap: 12px; font-size: 13px; padding: 5px 0; }
.row span { min-width: 60px; }
.row input[type='range'] { flex: 1; accent-color: var(--accent); }
.row.check { cursor: pointer; }
.row.check input { accent-color: var(--accent); }
.row.check span { min-width: 0; }

.chips { display: flex; flex-wrap: wrap; gap: 7px; }
.chips button {
  background: rgba(29, 29, 31, 0.04);
  border: 1px solid var(--line);
  color: var(--dim);
  border-radius: 999px;
  padding: 5px 12px;
  font-size: 11.5px;
  font-family: inherit;
  cursor: pointer;
  transition: color 0.12s, border-color 0.12s;
}
.chips button:hover { color: var(--accent-deep); border-color: var(--accent); }

.webui-link {
  display: block;
  text-decoration: none;
  color: var(--teal);
  background: linear-gradient(120deg, rgba(16, 172, 155, 0.08), rgba(16, 172, 155, 0.02));
  border: 1px solid rgba(16, 172, 155, 0.35);
  border-radius: 16px;
  padding: 14px 18px;
  font-weight: 600;
  font-size: 14px;
  transition: border-color 0.15s;
}
.webui-link:hover { border-color: var(--teal); }
.webui-link small { display: block; color: var(--dim); font-weight: 400; font-size: 11.5px; margin-top: 3px; }

@media (max-width: 1080px) {
  .device { width: 480px; height: 480px; }
  .screen-bezel { width: 400px; height: 400px; }
  #lcd { width: 372px; height: 372px; }
}
