/* REV//SIM Layout */
body.revsim { overflow-x: hidden; }
#app { min-height: 100vh; display: flex; flex-direction: column; }
.bar .tools { display: flex; gap: 8px; margin-left: auto; flex-wrap: wrap; align-items: center; }
.engine-pick select { background: var(--panel); color: var(--fg); border: 1px solid var(--line2); border-radius: 8px; padding: 7px 10px; font: 600 13px var(--mono); max-width: 70vw; cursor: pointer; }
.vol { display: inline-flex; align-items: center; gap: 6px; font-size: 14px; }
.vol input { width: 90px; accent-color: var(--accent); }

.scene { position: relative; height: clamp(190px, 30vh, 280px); border-bottom: 1px solid var(--line); background: radial-gradient(120% 140% at 70% 0%, #10141f 0%, #07080B 60%); overflow: hidden; }
.scene canvas { width: 100%; height: 100%; display: block; }
.toasts { position: absolute; top: 12px; left: 50%; transform: translateX(-50%); display: flex; flex-direction: column; align-items: center; gap: 6px; pointer-events: none; width: min(92vw, 560px); }
.toast { font: 700 15px var(--mono); padding: 8px 14px; border-radius: 10px; background: rgba(14,17,24,.92); border: 1px solid var(--line2); box-shadow: 0 8px 30px rgba(0,0,0,.5); animation: tin .25s ease-out, tout .4s ease-in forwards; animation-delay: 0s, var(--life, 2.4s); text-align: center; }
.toast.good { border-color: rgba(74,222,128,.6); color: var(--accent); }
.toast.bad { border-color: rgba(248,113,113,.6); color: var(--red); }
.toast.gold { border-color: rgba(251,191,36,.7); color: var(--amber); }
.toast.huge { font-size: clamp(20px, 4vw, 34px); padding: 12px 22px; }
.toast small { display: block; font: 500 12px var(--sans); color: var(--muted); margin-top: 2px; }
@keyframes tin { from { opacity: 0; transform: translateY(-8px) scale(.96); } }
@keyframes tout { to { opacity: 0; transform: translateY(-6px); } }

.tree { position: absolute; right: 18px; top: 14px; display: grid; gap: 6px; padding: 10px; border-radius: 12px; background: rgba(5,6,9,.85); border: 1px solid var(--line2); }
.tree .l { width: 18px; height: 18px; border-radius: 50%; background: #1a1d25; display: block; }
.tree .l.on.pre { background: #fff7d6; box-shadow: 0 0 12px #fff7d6; }
.tree .l.on.am { background: var(--amber); box-shadow: 0 0 14px var(--amber); }
.tree .l.on.gr { background: var(--accent); box-shadow: 0 0 18px var(--accent); }
.tree .l.on.rd { background: var(--red); box-shadow: 0 0 18px var(--red); }
.dragHud { position: absolute; left: 14px; top: 12px; font: 600 12px/1.55 var(--mono); padding: 10px 12px; border-radius: 12px; background: rgba(5,6,9,.85); border: 1px solid var(--line2); min-width: 220px; }
.dragHud h4 { margin: 0 0 4px; font-size: 12px; color: var(--amber); letter-spacing: .08em; }
.dragHud .row { display: flex; justify-content: space-between; gap: 14px; }
.dragHud .row span:first-child { color: var(--muted); }
.dragHud .d.good { color: var(--accent); } .dragHud .d.bad { color: var(--red); }

.dash { display: grid; grid-template-columns: minmax(0, 1.45fr) minmax(0, .9fr) minmax(0, 1.1fr); gap: 12px; padding: 12px 16px 0; }
.panel { background: linear-gradient(180deg, var(--panel), var(--bg2)); border: 1px solid var(--line); border-radius: var(--r); padding: 10px; position: relative; min-width: 0; }
.phead { font: 700 11px var(--mono); letter-spacing: .12em; color: var(--muted); display: flex; justify-content: space-between; gap: 8px; margin-bottom: 4px; }
.phead .hint { font-weight: 500; letter-spacing: 0; color: var(--dim); text-align: right; }
.cluster canvas { width: 100%; height: 300px; display: block; }
.shifter { display: flex; flex-direction: column; }
.shifter canvas { width: 100%; height: 220px; display: block; touch-action: none; cursor: grab; }
.shifter canvas.grab { cursor: grabbing; }
.gearinfo { font: 500 11px/1.6 var(--mono); color: var(--dim); display: flex; flex-wrap: wrap; gap: 2px 10px; margin-top: 4px; }
.gearinfo b { color: var(--muted); font-weight: 700; }
.gearinfo span.on b, .gearinfo span.on { color: var(--accent); }
.dyno canvas { width: 100%; height: 160px; display: block; }
.tele { display: grid; grid-template-columns: 1fr 1fr; gap: 2px 12px; font: 500 12px/1.55 var(--mono); margin-top: 6px; }
.tele div { display: flex; justify-content: space-between; gap: 8px; }
.tele span { color: var(--dim); }
.tele b { font-weight: 700; font-variant-numeric: tabular-nums; }

.controls { display: grid; grid-template-columns: minmax(0, 1.2fr) minmax(0, 1fr); gap: 12px; padding: 12px 16px 16px; flex: 1; }
.pedals { display: grid; grid-template-columns: repeat(3, 1fr); gap: 12px; min-height: 180px; }
.pedal { position: relative; border: 1px solid var(--line2); border-radius: 14px; background: repeating-linear-gradient(0deg, #0c0f15 0 6px, #0f131b 6px 12px); overflow: hidden; touch-action: none; user-select: none; -webkit-user-select: none; cursor: ns-resize; display: flex; flex-direction: column; justify-content: flex-end; align-items: center; padding: 10px 6px; gap: 6px; }
.pedal .fill { position: absolute; left: 0; right: 0; top: 0; height: 0%; background: linear-gradient(180deg, rgba(74,222,128,.08), rgba(74,222,128,.35)); border-bottom: 2px solid var(--accent); }
.pedal[data-p="brk"] .fill { background: linear-gradient(180deg, rgba(248,113,113,.08), rgba(248,113,113,.35)); border-color: var(--red); }
.pedal[data-p="clu"] .fill { background: linear-gradient(180deg, rgba(96,165,250,.08), rgba(96,165,250,.35)); border-color: var(--blue); }
.pedal .bite { position: absolute; left: 0; right: 0; top: 18%; height: 52%; border-top: 1px dashed rgba(251,191,36,.35); border-bottom: 1px dashed rgba(251,191,36,.35); background: rgba(251,191,36,.04); }
.pedal b { position: relative; font: 800 13px var(--mono); letter-spacing: .1em; }
.pedal kbd { position: relative; }
.pedal.act { border-color: var(--fg); }
.keys { display: flex; flex-direction: column; gap: 10px; min-width: 0; }
.btnrow { display: flex; gap: 8px; flex-wrap: wrap; }
.big { background: var(--panel2); border: 1px solid var(--line2); border-radius: 10px; padding: 10px 14px; font-weight: 700; cursor: pointer; display: inline-flex; align-items: center; gap: 8px; touch-action: manipulation; }
.big:hover { border-color: var(--dim); }
.big.on { border-color: var(--accent); color: var(--accent); }
.big.warn { border-color: var(--red); color: var(--red); animation: pulse 1s infinite alternate; }
@keyframes pulse { to { box-shadow: 0 0 18px rgba(248,113,113,.4); } }
.legend { margin: 0; display: grid; grid-template-columns: 1fr 1fr; gap: 6px 14px; font-size: 13px; }
.legend div { min-width: 0; }
.legend dt { font: 700 12px var(--mono); color: var(--accent); }
.legend dd { margin: 0; color: var(--muted); }

.intro { position: fixed; inset: 0; z-index: 50; display: grid; place-items: center; background: radial-gradient(80% 80% at 50% 30%, rgba(20,28,22,.92), rgba(5,6,9,.97)); padding: 16px; }
.intro[hidden] { display: none; }
.intro-card { max-width: 640px; text-align: center; }
.intro-art { color: var(--accent); font: 700 clamp(7px, 1.9vw, 14px)/1.15 var(--mono); text-shadow: 0 0 18px rgba(74,222,128,.45); margin: 0 auto 18px; overflow: hidden; text-align: left; display: inline-block; }
.intro p { color: var(--fg); margin: 8px auto; max-width: 560px; }
.start { margin-top: 18px; font: 800 18px var(--mono); padding: 16px 26px; border-radius: 14px; border: 1px solid var(--accent); background: rgba(74,222,128,.12); color: var(--accent); cursor: pointer; box-shadow: 0 0 40px rgba(74,222,128,.25); }
.start:hover { background: rgba(74,222,128,.2); }

.achDlg { background: var(--panel); color: var(--fg); border: 1px solid var(--line2); border-radius: 16px; width: min(760px, 94vw); max-height: 86vh; padding: 18px; }
.achDlg::backdrop { background: rgba(0,0,0,.7); }
.achDlg h2 { margin: 0 0 12px; font: 700 20px var(--display); }
.achDlg .x { position: absolute; right: 12px; top: 10px; background: none; border: 0; font-size: 18px; cursor: pointer; color: var(--muted); }
.achList { display: grid; grid-template-columns: repeat(auto-fill, minmax(210px, 1fr)); gap: 8px; }
.ach { border: 1px solid var(--line); border-radius: 10px; padding: 8px 10px; opacity: .45; }
.ach.on { opacity: 1; border-color: rgba(251,191,36,.5); background: rgba(251,191,36,.05); }
.ach b { display: block; font-size: 14px; }
.ach span { font-size: 12px; color: var(--muted); }

@media (max-width: 1050px) {
  .dash { grid-template-columns: 1fr 1fr; }
  .dash .cluster { grid-column: 1 / -1; }
}
@media (max-width: 720px) {
  /* Handy: Pedale direkt unter den Tacho, Prüfstand nach unten */
  #app { display: flex; flex-direction: column; }
  .dash, .controls { display: contents; }
  .scene { order: 1; height: 170px; }
  .cluster { order: 2; margin: 10px 16px 0; }
  .pedals { order: 3; margin: 10px 16px 0; }
  .shifter { order: 4; margin: 10px 16px 0; }
  .keys { order: 5; margin: 10px 16px 0; }
  .dyno { order: 6; margin: 10px 16px 16px; }
  .shifter canvas { height: 190px; }
  .bar { gap: 8px 10px; padding: 8px 16px; }
  .bar .tools { margin-left: 0; width: 100%; }
  .tog kbd, .big kbd { display: none; }
  .dash { grid-template-columns: 1fr; padding: 10px 16px 0; }
  .cluster canvas { height: 210px; }
  .controls { grid-template-columns: 1fr; padding: 10px 16px 16px; }
  .pedals { min-height: 170px; }
  .legend { grid-template-columns: 1fr; }
  .pedal kbd { display: none; }
}
@media (prefers-reduced-motion: reduce) { .toast { animation: none; } .big.warn { animation: none; } }

/* Garage */
.garageBtn { border-color: rgba(251,146,60,.6); color: var(--orange); }
.garage { width: min(1040px, 96vw); }
.gList { display: flex; flex-wrap: wrap; gap: 6px; margin-bottom: 12px; }
.gBody { display: grid; grid-template-columns: minmax(0, 1.25fr) minmax(0, 1fr); gap: 16px; }
.gForm { display: grid; grid-template-columns: 1fr 1fr; gap: 4px 16px; align-content: start; }
.gForm h3 { grid-column: 1 / -1; margin: 10px 0 2px; font: 700 11px var(--mono); letter-spacing: .12em; color: var(--orange); }
.gForm h3:first-child { margin-top: 0; }
.gRow { display: grid; grid-template-columns: 1fr; gap: 2px; font-size: 12px; color: var(--muted); }
.gRow[hidden] { display: none; }
.gRow span { display: flex; justify-content: space-between; }
.gRow output { font: 700 11px var(--mono); color: var(--fg); }
.gRow input[type=range] { width: 100%; accent-color: var(--orange); }
.gRow input[type=text], .gRow input:not([type]), .gRow select { background: var(--bg2); color: var(--fg); border: 1px solid var(--line2); border-radius: 7px; padding: 6px 8px; font: 600 12px var(--mono); width: 100%; }
.gRow input[type=color] { width: 100%; height: 30px; border: 1px solid var(--line2); border-radius: 7px; background: var(--bg2); padding: 2px; }
.gRow input[type=checkbox] { accent-color: var(--orange); width: 18px; height: 18px; }
.gStats { position: sticky; top: 0; align-self: start; display: flex; flex-direction: column; gap: 10px; }
.gStats canvas { width: 100%; height: 150px; border: 1px solid var(--line); border-radius: 10px; background: var(--bg2); }
#gNums { display: grid; gap: 3px; font: 500 12px var(--mono); }
#gNums div { display: flex; justify-content: space-between; gap: 10px; }
#gNums span { color: var(--dim); }
.gGears { font: 500 11px/1.6 var(--mono); color: var(--dim); display: flex; flex-wrap: wrap; gap: 2px 10px; }
.gGears b { color: var(--muted); }
.gBtns { display: flex; flex-wrap: wrap; gap: 6px; }
.gBtns .big { padding: 8px 11px; font-size: 13px; }
@media (max-width: 760px) { .gBody { grid-template-columns: 1fr; } .gStats { position: static; order: -1; } .gForm { grid-template-columns: 1fr; } }
