@import url('https://fonts.googleapis.com/css2?family=Manrope:wght@400;500;600;700;800&display=swap');
:root{font-family:Manrope,Arial,sans-serif;color:#e6eae5;background:#101312;color-scheme:dark;--lime:#c4f477;--muted:#87918a;--border:#2a302c}*{box-sizing:border-box}body{margin:0}button,input,select{font:inherit}button,a,label.upload,select{-webkit-tap-highlight-color:transparent}button{cursor:pointer;color:inherit;border:0;background:none}button:disabled{opacity:.4;cursor:wait}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,label.upload:focus-within{outline:2px solid var(--lime);outline-offset:4px}a{color:inherit;text-decoration:none}
header{height:76px;margin:0 4%;border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;gap:16px}.brand{font-weight:800;letter-spacing:2px;font-size:19px;display:flex;align-items:center;gap:10px}.brandmark{font-size:34px;color:var(--lime);font-weight:400}.header-right{display:flex;gap:20px;align-items:center}.language-switch{display:flex;gap:2px}.language-switch button{font-size:13px;padding:8px;border-radius:4px;color:var(--muted)}.language-switch button[aria-pressed=true]{color:var(--lime);background:#27311f}.upload{border:1px solid #4b5548;border-radius:6px;padding:10px 16px;font-size:14px;font-weight:600;cursor:pointer;white-space:nowrap}.upload:hover{background:#252e21}.upload input{position:absolute;width:1px;height:1px;opacity:0}
main{max-width:1800px;padding:24px 4%;margin:auto}.workspace{display:grid;grid-template-columns:minmax(0,1fr) 285px;gap:18px;align-items:start}.viewport-panel,.controls,.timeline{border:1px solid var(--border);border-radius:9px;overflow:hidden;background:#151a17}.panel-heading{display:flex;align-items:center;justify-content:space-between;padding:12px 20px;gap:10px;min-height:60px;border-bottom:1px solid var(--border)}.segmented{display:flex;gap:3px;background:#0e1210;padding:3px;border-radius:6px}.segmented button{padding:6px 12px;color:#929c94;font-size:14px;border-radius:4px}.segmented .active{background:#30392c;color:var(--lime)}.axis-key{display:flex;gap:18px;font:13px monospace;color:#97a399}.axis-key span{display:flex;align-items:center;gap:6px}.axis-key i{width:5px;height:5px;border-radius:50%}.x{background:#e09b78}.y{background:#8cafa4}.t{background:var(--lime)}
#viewport{position:relative;height:clamp(370px,58vh,680px);background:radial-gradient(ellipse at 50% 45%,#253023 0%,#151a17 63%);touch-action:none}#viewport>canvas{display:block;width:100%;height:100%;position:absolute;inset:0}.viewport-bottom{position:absolute;bottom:16px;left:20px;right:20px;display:flex;justify-content:space-between;align-items:center;z-index:1;gap:15px;pointer-events:none;font-size:12px;color:#94a08f}.viewport-bottom button{pointer-events:auto;background:#182019dd;padding:5px 12px;border:1px solid #354130;border-radius:5px;color:#c4cebe;font-size:20px}.sourcebar{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px 20px;border-top:1px solid var(--border)}.sourcebar strong{font-size:14px;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}.sourcebar>span{font:12px monospace;color:var(--muted);white-space:nowrap}
.controls{padding:22px 20px}.control-heading{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-bottom:22px}h2{font-size:15px;margin:0;font-weight:600}.control-heading button{font-size:12px;color:var(--muted)}.presets{display:flex;gap:7px;margin-bottom:28px}.presets button{flex:1;border:1px solid #354032;border-radius:5px;padding:10px 4px;font-size:14px;white-space:nowrap}.presets .active{border-color:#778d5a;background:#293321;color:var(--lime)}.range-label{font-size:14px;color:#c6cfc1;display:flex;justify-content:space-between;margin:24px 0 9px}.range-label output{font:13px monospace;color:var(--lime)}input[type=range]{appearance:none;width:100%;height:4px;margin:9px 0;background:#36432f;border-radius:3px;cursor:pointer;accent-color:var(--lime)}input[type=range]::-webkit-slider-thumb{appearance:none;width:13px;height:13px;background:var(--lime);border-radius:50%;box-shadow:0 0 0 4px #c4f47712}input[type=range]::-moz-range-thumb{width:13px;height:13px;background:var(--lime);border:0;border-radius:50%}
.timeline{margin-top:18px;padding:16px 20px 13px}.transport{display:flex;align-items:center;gap:15px;margin-bottom:15px}.play{width:34px;height:34px;border-radius:50%;background:var(--lime);color:#18230e;font-size:14px}.transport strong{font:17px monospace}.transport div>span{font:12px monospace;color:var(--muted);margin-left:7px}.speed-label select{font-size:13px;background:#20291c;border:1px solid #36432e;border-radius:4px;padding:4px 6px;color:#b8c6af}.filmstrip{height:48px;background:#0c100d;border-radius:4px;overflow:hidden;position:relative}.filmstrip canvas{width:100%;height:100%;opacity:.65;display:block}.filmstrip input{position:absolute;inset:0;height:100%;margin:0;opacity:0;z-index:2}.filmstrip:focus-within{outline:2px solid var(--lime)}#playhead{position:absolute;top:0;height:100%;width:2px;background:var(--lime);pointer-events:none;box-shadow:0 0 15px #c4f47777}#playhead:before{content:'';position:absolute;top:0;left:-4px;width:10px;height:7px;background:var(--lime)}.ticks{display:flex;justify-content:space-between;font:12px monospace;color:#829077;margin-top:9px}
#loading{position:absolute;inset:0;z-index:3;background:#141a16e8;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:15px;text-align:center;padding:30px}#loading[hidden]{display:none}#loading strong{font-size:16px;font-weight:500}#loading span{font-size:14px;color:#a6b49a}progress{width:190px;height:3px;accent-color:var(--lime)}.spinner{width:25px;height:25px;border:1px solid #475839;border-top-color:var(--lime);border-radius:50%;animation:spin 1s linear infinite}#notice{position:fixed;bottom:24px;left:50%;transform:translateX(-50%);background:#2b3924;color:#d8f3b9;border:1px solid #5b7044;padding:14px 22px;border-radius:7px;font-size:14px;z-index:10;max-width:90%}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0)}@keyframes spin{to{transform:rotate(360deg)}}
@media(max-width:850px){.workspace{grid-template-columns:1fr}#viewport{height:55vh;min-height:340px;max-height:580px}.controls{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:0 24px;padding:20px}.control-heading,.presets{grid-column:1/-1}.presets{max-width:320px;margin-bottom:0}.range-label{grid-row:3;min-width:0}#tilt-x,#tilt-y,#offset{grid-row:4}.sourcebar>span{font-size:12px}}
@media(max-width:480px){header{height:68px;margin:0 4%;gap:10px}.brand{font-size:14px;letter-spacing:1px;gap:6px}.brandmark{font-size:26px}.header-right{gap:8px}.language-switch button{padding:7px 5px;font-size:12px}.upload{font-size:12px;padding:9px 10px}main{padding-top:16px}.panel-heading{padding:12px}.axis-key{gap:10px;font-size:12px}.segmented button{padding:6px 9px;font-size:13px}.viewport-bottom{left:12px;right:12px;font-size:12px;align-items:end}.viewport-bottom span{max-width:220px;line-height:1.5}.sourcebar{padding:12px;flex-wrap:wrap}.controls{padding:18px;gap:0 16px}.range-label{font-size:12px}.range-label output{font-size:12px}.timeline{padding:14px}.ticks{font-size:12px}}
@media(prefers-reduced-motion:reduce){.spinner{animation:none}}

.site-heading{margin:0;font:inherit;min-width:0}
