:root{--text-primary:#1a1a18;--text-secondary:#6b6b66;--text-muted:#9b9b94;--text-accent:#0090FF;--surface-0:#ffffff;--border:#dedcd1;--track:#dcdcd6;--font-mono:"Space Mono",ui-monospace,SFMono-Regular,Menlo,monospace}@media (prefers-color-scheme:dark){:root{--text-primary:#eceae2;--text-secondary:#a8a79e;--text-muted:#75746c;--text-accent:#0090FF;--surface-0:#1f1e1b;--border:#3a3934;--track:#454440}}.gen{margin:0;background:var(--surface-0);color:var(--text-primary);font-family:var(--font-mono)}main{max-width:900px;margin:0 auto;padding:24px 16px}.row{flex-wrap:wrap;gap:12px;margin-bottom:12px}.ctl,.row{display:flex;align-items:center}.ctl{gap:8px;flex:1 1;min-width:210px}label{font-size:14px;color:var(--text-secondary)}input[type=range]{flex:1 1;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:transparent;height:16px;margin:0;cursor:pointer}input[type=range]::-webkit-slider-runnable-track{height:4px;border-radius:2px;background:linear-gradient(var(--text-accent),var(--text-accent)) 0 /var(--range-fill,0) 100% no-repeat,var(--track)}input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:14px;height:14px;margin-top:-5px;border:none;border-radius:50%;background:var(--text-accent)}input[type=range]::-moz-range-track{height:4px;border-radius:2px;background:var(--track)}input[type=range]::-moz-range-progress{height:4px;border-radius:2px;background:var(--text-accent)}input[type=range]::-moz-range-thumb{width:14px;height:14px;border:none;border-radius:50%;background:var(--text-accent)}.out{font-size:14px;font-weight:500;min-width:32px;text-align:right}.gen button,.gen input[type=text],.gen select{font:inherit;font-size:14px;color:var(--text-primary);background:transparent;border:1px solid var(--border);border-radius:8px;padding:6px 12px;cursor:pointer}input[type=text]{cursor:text;font-family:var(--font-mono)}.gen input[type=color]{width:36px;height:32px;padding:2px;cursor:pointer;border:1px solid var(--border);border-radius:8px;background:transparent}button:hover{border-color:var(--text-muted)}button:disabled{opacity:.5;cursor:default}#sphere{width:100%;height:60vh;display:block;cursor:-webkit-grab;cursor:grab}.note{text-align:center;margin-top:6px}#status,.note{font-size:13px;color:var(--text-muted)}#savelink{font-size:14px;color:var(--text-accent);display:none}body{margin:0;background:var(--surface-0);color:var(--text-primary);font-family:var(--font-mono)}.gen{min-height:100vh}