body{display:flex;flex-direction:column;justify-content:center;align-items:center;height:100vh;background-color:#2c3e50;margin:0;overflow:hidden;font-family:Segoe UI,Tahoma,Geneva,Verdana,sans-serif;color:#fff;transition:background-color .3s ease}#ui{position:absolute;top:20px;text-align:center;z-index:10;background:#000000a6;padding:15px 35px;border-radius:15px;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);box-shadow:0 4px 15px #0000004d;transition:background .3s ease,color .3s ease}h1{margin:0 0 10px;font-size:2.5rem;text-transform:uppercase;letter-spacing:2px;color:#ecf0f1;text-shadow:2px 2px 4px rgba(0,0,0,.5)}.controls{display:flex;flex-direction:column;gap:8px;align-items:center}p{font-size:1rem;color:#bdc3c7;margin:0;display:flex;align-items:center;gap:10px}.key-badge{display:inline-block;background:#e74c3c;color:#fff;padding:4px 10px;border-radius:5px;border-bottom:4px solid #c0392b;font-weight:700;transition:transform .05s,border-bottom-width .05s;font-size:.9rem}.key-badge.pressed{transform:translateY(4px);border-bottom-width:0px}.key-badge.blue{background:#3498db;border-color:#2980b9}.key-badge.green{background:#2ecc71;border-color:#27ae60}.key-badge.purple{background:#9b59b6;border-color:#8e44ad}svg{width:100%;max-width:1200px;height:100%;max-height:800px;-webkit-user-select:none;user-select:none}body.white-mode{background-color:#fff}body.white-mode #environment,body.white-mode #laundry-environment,body.white-mode #vacuum-environment,body.white-mode #mower-environment{opacity:0}body.white-mode #ui{background:#ffffffe6;box-shadow:0 4px 15px #0000001a}body.white-mode h1{color:#2c3e50;text-shadow:none}body.white-mode p{color:#7f8c8d}#environment,#laundry-environment,#vacuum-environment,#mower-environment{transition:opacity .3s ease}.hidden{display:none!important}#scene-splash text{font-family:Segoe UI,Tahoma,Geneva,Verdana,sans-serif;-webkit-user-select:none;user-select:none}#splash-title{font-size:80px;font-weight:900;fill:#fff;text-anchor:middle;letter-spacing:4px;filter:drop-shadow(0px 8px 16px rgba(0,0,0,.5));animation:floatTitle 4s ease-in-out infinite}#splash-subtitle{font-size:24px;font-weight:400;fill:#bdc3c7;text-anchor:middle;letter-spacing:2px;animation:pulseText 2s infinite}.splash-star{fill:#f1c40f;animation:twinkle varies linear infinite}@keyframes floatTitle{0%,to{transform:translateY(0)}50%{transform:translateY(-15px)}}@keyframes pulseText{0%,to{opacity:.4}50%{opacity:1}}@keyframes twinkle{0%,to{opacity:.2;transform:scale(.8)}50%{opacity:.8;transform:scale(1.2)}}
