*{box-sizing:border-box;margin:0;padding:0}body{color:#fff;background:#0a0a0a;width:100vw;height:100vh;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,sans-serif;overflow:hidden}#canvas-container{z-index:1;width:100%;height:100%;position:fixed;top:0;left:0}#canvas-container canvas{display:block}#upload-overlay{z-index:100;background:linear-gradient(135deg,#0a0a0a 0%,#1a1a2e 50%,#16213e 100%);justify-content:center;align-items:center;width:100%;height:100%;transition:opacity .5s,visibility .5s;display:flex;position:fixed;top:0;left:0}#upload-overlay.hidden{opacity:0;visibility:hidden;pointer-events:none}.upload-box{text-align:center;padding:3rem}.upload-box h1{background:linear-gradient(90deg,#00d4ff,#7b2cbf);-webkit-text-fill-color:transparent;-webkit-background-clip:text;background-clip:text;margin-bottom:1rem;font-size:2.5rem}.upload-box p{color:#888;margin-bottom:2rem;font-size:1.1rem}.upload-btn{cursor:pointer;color:#fff;background:linear-gradient(90deg,#00d4ff,#7b2cbf);border-radius:8px;align-items:center;gap:.75rem;padding:1rem 2rem;font-size:1.1rem;font-weight:600;transition:transform .2s,box-shadow .2s;display:inline-flex}.upload-btn:hover{transform:translateY(-2px);box-shadow:0 8px 25px #00d4ff4d}.example-btn{cursor:pointer;color:#00d4ff;background:0 0;border:2px solid #00d4ff66;border-radius:8px;align-items:center;gap:.75rem;margin-top:1rem;padding:.75rem 1.5rem;font-size:1rem;font-weight:600;transition:all .2s;display:inline-flex}.example-btn:hover{background:#00d4ff1a;border-color:#00d4ff;transform:translateY(-2px)}.upload-btn svg,.example-btn svg{flex-shrink:0}.hint{color:#555!important;margin-top:1.5rem!important;font-size:.9rem!important}#controls{z-index:50;padding:1rem;transition:opacity .3s;position:fixed;bottom:0;left:0;right:0}#controls.hidden{opacity:0;pointer-events:none}.control-bar{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#14141ee6;border:1px solid #ffffff1a;border-radius:12px;align-items:center;gap:1rem;padding:.75rem 1rem;display:flex}.btn{cursor:pointer;background:linear-gradient(90deg,#00d4ff,#7b2cbf);border:none;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:44px;height:44px;transition:transform .2s;display:flex}.btn:hover{transform:scale(1.1)}.btn:active{transform:scale(.95)}.timeline-container{flex:1;align-items:center;gap:.75rem;display:flex}.time-label{color:#aaa;font-variant-numeric:tabular-nums;min-width:50px;font-size:.85rem}#timeline{appearance:none;cursor:pointer;background:#ffffff1a;border-radius:3px;outline:none;flex:1;height:6px}#timeline::-webkit-slider-thumb{appearance:none;cursor:pointer;background:#00d4ff;border-radius:50%;width:16px;height:16px;transition:transform .2s}#timeline::-webkit-slider-thumb:hover{transform:scale(1.2)}#timeline::-moz-range-thumb{cursor:pointer;background:#00d4ff;border:none;border-radius:50%;width:16px;height:16px}.speed-control{flex-shrink:0;align-items:center;gap:.5rem;display:flex}.speed-control label{color:#888;font-size:.85rem}.speed-control select{color:#fff;cursor:pointer;background:#ffffff1a;border:1px solid #fff3;border-radius:6px;outline:none;padding:.4rem .6rem;font-size:.85rem}.speed-control select option{color:#000}.speed-control select:focus{border-color:#00d4ff}.stats-bar{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#14141ecc;border:1px solid #ffffff0d;border-radius:8px;justify-content:center;gap:2rem;margin-top:.75rem;padding:.5rem 1rem;display:flex}.stats-bar.hidden{display:none}.stat{flex-direction:column;align-items:center;display:flex}.stat-label{color:#666;text-transform:uppercase;letter-spacing:.5px;font-size:.7rem}.stat-value{color:#00d4ff;font-variant-numeric:tabular-nums;font-size:1rem;font-weight:600}#loading{z-index:200;background:#0a0a0ae6;flex-direction:column;justify-content:center;align-items:center;gap:1rem;width:100%;height:100%;display:flex;position:fixed;top:0;left:0}#loading.hidden{display:none}.spinner{border:3px solid #ffffff1a;border-top-color:#00d4ff;border-radius:50%;width:50px;height:50px;animation:1s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}#loading p{color:#888;font-size:1rem}.hidden{display:none}.drag-over{background:linear-gradient(135deg,#0a1a0a 0%,#1a2e1a 50%,#162e16 100%)!important}.drag-over .upload-box{transform:scale(1.05)}#wind-overlay{z-index:50;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#0009;border:1px solid #ffffff26;border-radius:8px;align-items:center;gap:.5rem;padding:.5rem .75rem;font-size:.85rem;display:flex;position:fixed;top:1rem;right:1rem}.wind-label{color:#888;text-transform:uppercase;letter-spacing:.05em;font-size:.75rem;font-weight:600}.wind-value{color:#fff;font-weight:500}
