/* DMFW223.EXE V29: preset motor lab, directional rooms, simple drag, aligned image controls */

/* Retire the broad rectangular V28 hotspot map. V29 rebuilds exact controls. */
.v28-hotspot{display:none!important}
.v29-hotspot{position:absolute;left:var(--x);top:var(--y);width:var(--w);height:var(--h);z-index:245;border:0;background:transparent;padding:0;cursor:pointer;color:transparent;text-decoration:none}
.v29-hotspot:focus-visible{outline:1px solid #dc8cff;outline-offset:2px}
.v29-hotspot[data-shape="circle"]{border-radius:50%;clip-path:circle(48%)}
.v29-hotspot[data-shape="circle"]:before{content:"";position:absolute;inset:18%;border:1px solid rgba(235,220,244,.72);border-radius:50%;box-shadow:0 0 0 0 rgba(201,93,255,.48);opacity:.2;transition:.16s ease}
.v29-hotspot[data-shape="circle"]:hover:before,.v29-hotspot[data-shape="circle"]:focus-visible:before{opacity:1;border-color:#e5c6f1;box-shadow:0 0 0 5px rgba(201,93,255,.15),0 0 18px rgba(201,93,255,.38)}
.v29-hotspot[data-shape="button"]{border-radius:2px}
.v29-hotspot[data-shape="button"]:hover,.v29-hotspot[data-shape="button"]:focus-visible{box-shadow:inset 0 0 0 1px rgba(224,158,255,.66),0 0 18px rgba(184,70,231,.22);background:rgba(138,38,178,.045)}
.v29-hotspot:after{content:attr(data-tip);position:absolute;left:50%;bottom:100%;transform:translate(-50%,-6px);white-space:nowrap;padding:5px 8px;background:rgba(8,6,12,.95);border:1px solid #69417c;color:#eee;font-size:9px;opacity:0;pointer-events:none}
.v29-hotspot:hover:after{opacity:1}
.v29-hotspot.secret:hover{box-shadow:0 0 22px rgba(72,219,139,.45)}

/* Directional room navigation. */
.v29-directional #sceneActions{display:none!important}
.v29-scene-nav{position:absolute;inset:0;z-index:8;pointer-events:none}
.v29-scene-arrow{position:absolute;pointer-events:auto;display:grid;place-items:center;gap:4px;min-width:86px;min-height:64px;padding:8px 11px;background:rgba(7,6,10,.78);border:1px solid rgba(217,119,251,.75);color:#fff;backdrop-filter:blur(7px);box-shadow:0 12px 35px rgba(0,0,0,.45);transition:.14s ease}
.v29-scene-arrow:hover{transform:scale(1.04);background:rgba(38,18,48,.9);box-shadow:0 0 24px rgba(193,77,238,.28)}
.v29-scene-arrow b{font-size:30px;line-height:1;color:#e5b5f7}.v29-scene-arrow span{font-size:8px;letter-spacing:.1em;color:#d6c7dc;white-space:nowrap}
.v29-scene-arrow.up{left:50%;top:4%;transform:translateX(-50%)}.v29-scene-arrow.up:hover{transform:translateX(-50%) scale(1.04)}
.v29-scene-arrow.down{left:50%;bottom:4%;transform:translateX(-50%)}.v29-scene-arrow.down:hover{transform:translateX(-50%) scale(1.04)}
.v29-scene-arrow.left{left:2.5%;top:50%;transform:translateY(-50%)}.v29-scene-arrow.left:hover{transform:translateY(-50%) scale(1.04)}
.v29-scene-arrow.right{right:2.5%;top:50%;transform:translateY(-50%)}.v29-scene-arrow.right:hover{transform:translateY(-50%) scale(1.04)}
.scene-copy{max-width:460px!important;padding:15px 18px!important;background:linear-gradient(90deg,rgba(7,6,10,.88),rgba(7,6,10,.58),transparent)!important;pointer-events:none}

/* Preset-based Motor Lab. */
.motor-window{width:min(1540px,98vw)!important}
.v29-motor-layout{display:grid;grid-template-columns:165px minmax(0,1fr) 250px;min-height:700px;background:#07070b}
.v29-car-tabs,.v29-preset-panel{background:linear-gradient(180deg,#0d0b11,#08080b);padding:13px;display:grid;align-content:start;gap:8px;border-right:1px solid #302638}
.v29-preset-panel{border-right:0;border-left:1px solid #302638}
.v29-car-tabs button,.v29-preset-panel button{background:#130e18;border:1px solid #493252;color:#ddd;padding:11px;text-align:left}
.v29-car-tabs button.active,.v29-preset-panel button.active{border-color:#cc6af3;background:#2b1535;color:#fff}
.v29-preset-stage{position:relative;display:grid;grid-template-rows:1fr auto;background:radial-gradient(circle at 50% 54%,#22122a,#07070b 66%);overflow:hidden}
.v29-preset-viewport{position:relative;min-height:570px;display:grid;place-items:center;overflow:hidden;cursor:pointer}
#v29PresetImage{width:100%;height:100%;object-fit:cover;display:block;image-rendering:auto;transition:opacity .15s ease,transform .15s ease}
.v29-preset-viewport:hover #v29PresetImage{transform:scale(1.008)}
#v29PresetGlow{position:absolute;left:20%;right:20%;bottom:10%;height:34px;border-radius:50%;filter:blur(18px);opacity:.8;pointer-events:none;mix-blend-mode:screen}
.v29-preset-click{position:absolute;inset:0;display:grid;place-items:end center;padding:20px;color:#fff;text-shadow:0 2px 9px #000;pointer-events:none}.v29-preset-click b{background:rgba(8,6,11,.75);border:1px solid rgba(205,111,240,.75);padding:8px 13px;font-size:10px;letter-spacing:.12em}
.v29-preset-footer{display:grid;grid-template-columns:50px 1fr 50px;align-items:center;gap:8px;padding:10px;background:#0a090d;border-top:1px solid #302638}
.v29-preset-footer button{height:44px;background:#160f1d;border:1px solid #654077;color:#fff;font-size:22px}.v29-preset-copy{display:grid;text-align:center}.v29-preset-copy strong{font-size:13px;color:#eadbf0}.v29-preset-copy span{font-size:9px;color:#a596ab;margin-top:4px}
.v29-neon-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:6px}.v29-neon-grid button{text-align:center;padding:9px 5px}.v29-neon-grid button[data-neon="purple"]{box-shadow:inset 0 -3px #b436ff}.v29-neon-grid button[data-neon="green"]{box-shadow:inset 0 -3px #32ff80}.v29-neon-grid button[data-neon="blue"]{box-shadow:inset 0 -3px #278cff}.v29-neon-grid button[data-neon="red"]{box-shadow:inset 0 -3px #ff3151}.v29-neon-grid button[data-neon="amber"]{box-shadow:inset 0 -3px #ff9d2f}
.v29-preset-panel h3{font-size:11px;color:#d071f0;margin:4px 0}.v29-preset-panel p{font-size:9px;line-height:1.5;color:#8f8294;margin:0 0 6px}.v29-preset-count{font-size:9px;color:#a99cae;border:1px solid #302638;padding:8px;background:#0d0b11}
.v29-hidden-controls{display:none!important}
#v29DashPreset{position:absolute;z-index:96;left:29.25%;top:56.7%;width:21.85%;height:11.8%;object-fit:cover;border:1px solid rgba(112,68,132,.5);box-shadow:0 8px 26px rgba(0,0,0,.48);pointer-events:none}
#v28DashMotor{display:none!important}

/* Simple drag game polish. */
.race-window{width:min(1420px,98vw)!important}
#raceCanvas{background:#07070b;cursor:default!important}
.race-hud{grid-template-columns:100px 85px 1fr 140px 120px 100px!important}
.race-hud button{font-weight:700;letter-spacing:.08em}
#raceRev{background:linear-gradient(180deg,#30173a,#170e1d)!important;border-color:#a352c2!important}
#raceShift{background:linear-gradient(180deg,#173424,#0d1a13)!important;border-color:#4ba66f!important}
.v29-race-tip{font-size:9px;color:#8d8192;padding:0 12px 10px;text-align:center}

/* Right-side minimizable XP dock. */
#v29XpDock{position:fixed;right:0;top:50%;transform:translateY(-50%);z-index:6600;display:flex;align-items:stretch;transition:transform .2s ease}
#v29XpDock .v29-xp-toggle{width:28px;border:1px solid #74428b;border-right:0;background:#160f1d;color:#e7d5ed;padding:0;font-size:15px}
#v29XpDock #v27Hud{position:static!important;right:auto!important;bottom:auto!important;width:255px!important;min-height:170px;margin:0;border-right:0;border-radius:0;box-shadow:0 20px 65px rgba(0,0,0,.58)}
#v29XpDock.minimized{transform:translate(calc(100% - 28px),-50%)}
#v29XpDock.minimized .v29-xp-toggle{background:#291432;border-color:#b959dc}
body.v28-embedded #v29XpDock{display:none!important}

@media(max-width:1000px){.v29-motor-layout{grid-template-columns:130px 1fr}.v29-preset-panel{grid-column:1/-1;border-left:0;border-top:1px solid #302638}.v29-preset-viewport{min-height:430px}.race-hud{grid-template-columns:repeat(3,1fr)!important}.race-hud .rpm{grid-column:1/-1}.v29-scene-arrow{min-width:70px;min-height:54px}.v29-scene-arrow span{display:none}}
