@import"https://fonts.googleapis.com/css2?family=Geist+Mono:wght@100..900&display=swap";:root{--heading-font: "Lexend Deca", sans-serif;--body-font: "Lexend Deca", sans-serif;--bg: #000000;--check-stripe: rgba(255, 255, 255, .055);--check-size: 76px;--dial-surface: rgba(255, 255, 255, .05);--dial-surface-hover: rgba(255, 255, 255, .1);--dial-surface-active: rgba(255, 255, 255, .11);--dial-surface-subtle: rgba(255, 255, 255, .06);--dial-text-root: #ffffff;--dial-text-section: rgba(255, 255, 255, .7);--dial-text-label: rgba(255, 255, 255, .7);--dial-text-focus: #ffffff;--dial-text-primary: rgba(255, 255, 255, .95);--dial-text-secondary: rgba(255, 255, 255, .6);--dial-text-tertiary: rgba(255, 255, 255, .4);--dial-border: rgba(255, 255, 255, .1);--dial-border-hover: rgba(255, 255, 255, .15);--dial-glass-bg: rgba(28, 28, 30, .72);--dial-radius: 8px;--dial-row-height: 36px;--dial-shadow: 0 12px 40px rgba(0, 0, 0, .55);--dial-shadow-collapsed: 0 6px 20px rgba(0, 0, 0, .4)}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{font-family:var(--body-font);font-size:14px;background-color:var(--bg);background-image:linear-gradient(to right,var(--check-stripe) 50%,transparent 50%),linear-gradient(to bottom,var(--check-stripe) 50%,transparent 50%);background-size:var(--check-size) var(--check-size);background-position:center;color:var(--dial-text-primary);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.heading{font-family:var(--heading-font)}.body-text{font-family:var(--body-font)}.app{height:100vh;overflow:hidden}.dial-panel{position:fixed;top:16px;right:16px;z-index:100;width:296px}.dial-panel-inner{display:flex;flex-direction:column;max-height:calc(100vh - 32px);background:var(--dial-glass-bg);border:1px solid var(--dial-border);border-radius:14px;box-shadow:var(--dial-shadow);backdrop-filter:blur(20px) saturate(1.4);-webkit-backdrop-filter:blur(20px) saturate(1.4);overflow:hidden}.dial-drag-handle{position:relative;height:24px;flex-shrink:0;cursor:grab}.dial-drag-handle:active{cursor:grabbing}.dial-collapse-btn{position:absolute;top:6px;right:8px;display:flex;align-items:center;justify-content:center;width:22px;height:22px;padding:0;color:var(--dial-text-section);background:transparent;border:none;border-radius:6px;cursor:pointer;transition:background .15s,color .15s}.dial-collapse-btn:hover{background:var(--dial-surface-hover);color:var(--dial-text-focus)}.dial-panel-scroll{overflow-y:auto;padding:0 12px 12px;scrollbar-width:none;-ms-overflow-style:none}.dial-panel-scroll::-webkit-scrollbar{display:none}.dial-panel-bubble{width:auto}.dial-bubble-btn{display:flex;align-items:center;justify-content:center;width:44px;height:44px;color:var(--dial-text-focus);background:var(--dial-glass-bg);border:1px solid var(--dial-border);border-radius:50%;box-shadow:var(--dial-shadow-collapsed);backdrop-filter:blur(20px) saturate(1.4);-webkit-backdrop-filter:blur(20px) saturate(1.4);cursor:pointer;transition:background .15s}.dial-bubble-btn:hover{background:var(--dial-surface-hover)}.dial-panel-header{display:flex;align-items:center;justify-content:space-between;padding:2px 0 10px;margin-bottom:8px;border-bottom:1px solid var(--dial-surface-subtle)}.dial-panel-title{font-family:var(--heading-font);font-size:15px;font-weight:700;letter-spacing:-.03em;text-transform:lowercase;color:var(--dial-text-root);border:1px solid #b6ff3d;border-radius:999px;padding:4px 14px}.dial-panel-title:after{content:".";color:#b6ff3d}.dial-panel-close{display:flex;align-items:center;justify-content:center;width:24px;height:24px;color:var(--dial-text-section);background:transparent;border:none;border-radius:6px;cursor:pointer;font-size:13px}.dial-panel-close:hover{background:var(--dial-surface-hover);color:var(--dial-text-focus)}.dial-top-group{padding-bottom:8px;margin-bottom:4px;border-bottom:1px solid var(--dial-surface-subtle)}.dial-folder{border-top:1px solid var(--dial-surface-subtle)}.dial-folder:first-of-type{border-top:none}.dial-folder-header{display:flex;align-items:center;justify-content:space-between;height:44px;cursor:pointer;-webkit-user-select:none;user-select:none}.dial-folder-title-row{display:flex;align-items:center;gap:6px}.dial-folder-title{font-size:14px;font-weight:600;color:var(--dial-text-root);letter-spacing:-.01em}.dial-folder-chevron{width:14px;height:14px;color:var(--dial-text-section);transition:transform .18s ease}.dial-folder-inner{display:flex;flex-direction:column;gap:6px;padding-bottom:12px}.dial-sub-label{font-size:11px;font-weight:600;color:var(--dial-text-tertiary);text-transform:uppercase;letter-spacing:.06em;padding:2px 2px 0}.dial-slider-wrapper{position:relative;height:var(--dial-row-height)}.dial-slider{position:absolute;top:0;right:0;bottom:0;left:0;overflow:hidden;background:var(--dial-surface);border-radius:var(--dial-radius);cursor:ew-resize;-webkit-user-select:none;user-select:none;touch-action:pan-y}.dial-slider:hover{background:var(--dial-surface-hover)}.dial-slider-fill{position:absolute;top:0;bottom:0;left:0;background:var(--dial-surface-active);transition:background .15s;pointer-events:none}.dial-slider-active .dial-slider-fill,.dial-slider-active{background:var(--dial-border-hover)}.dial-slider-label{position:absolute;left:10px;top:50%;transform:translateY(-50%);font-size:13px;font-weight:500;color:var(--dial-text-label);pointer-events:none}.dial-slider-active .dial-slider-label{color:var(--dial-text-focus)}.dial-slider-value{position:absolute;right:10px;top:50%;transform:translateY(-50%);font-size:13px;font-weight:500;font-family:Geist Mono,monospace;color:var(--dial-text-label);pointer-events:auto;border-bottom:1px solid transparent;padding-bottom:1px;cursor:text}.dial-slider-value-editable{border-bottom-color:#fff3}.dial-slider-active .dial-slider-value{color:var(--dial-text-focus)}.dial-slider-input{position:absolute;right:10px;top:50%;transform:translateY(-50%);width:5ch;font-size:13px;font-weight:500;font-family:Geist Mono,monospace;color:var(--dial-text-focus);background:transparent;border:none;border-bottom:1px solid var(--dial-text-label);padding:0 0 1px;outline:none;text-align:right}.dial-segmented{position:relative;display:flex;padding:3px;background:var(--dial-surface);border-radius:var(--dial-radius)}.dial-segmented-pill{position:absolute;top:3px;bottom:3px;background:var(--dial-surface-active);border:1px solid var(--dial-border);border-radius:6px;z-index:0;pointer-events:none;transition:left .2s cubic-bezier(.22,1,.36,1),width .2s cubic-bezier(.22,1,.36,1)}.dial-segmented-button{position:relative;z-index:1;flex:1;padding:6px 10px;font-family:inherit;font-size:13px;font-weight:500;white-space:nowrap;background:transparent;border:none;border-radius:6px;color:var(--dial-text-label);cursor:pointer;transition:color .15s}.dial-segmented-button[data-active=true]{color:var(--dial-text-focus)}.dial-segmented-button:not([data-active=true]):hover{color:var(--dial-text-primary)}.dial-segmented-sm .dial-segmented-button{padding:5px 10px;flex:0 0 auto}.dial-labeled-control{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:var(--dial-row-height);padding:2px 4px 2px 12px;background:var(--dial-surface);border-radius:var(--dial-radius)}.dial-labeled-control-label{font-size:13px;font-weight:500;color:var(--dial-text-label);flex-shrink:0}.dial-labeled-control .dial-segmented{background:transparent;padding:2px;flex-shrink:0}.dial-select-control{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:var(--dial-row-height);padding:0 8px 0 12px;background:var(--dial-surface);border-radius:var(--dial-radius)}.dial-select-wrap{position:relative;display:flex;align-items:center}.dial-select{appearance:none;-webkit-appearance:none;-moz-appearance:none;font-family:inherit;font-size:13px;font-weight:500;color:var(--dial-text-focus);background:transparent;border:none;outline:none;cursor:pointer;text-align:right;text-align-last:right;padding:4px 20px 4px 4px}.dial-select option{color:#111;background:#fff}.dial-select-caret{position:absolute;right:4px;font-size:10px;color:var(--dial-text-label);pointer-events:none}.dial-segmented-grid{display:flex;flex-wrap:wrap;gap:6px}.dial-grid-button{flex:1 1 auto;padding:8px 10px;font-family:inherit;font-size:12.5px;font-weight:500;white-space:nowrap;color:var(--dial-text-label);background:var(--dial-surface);border:1px solid transparent;border-radius:var(--dial-radius);cursor:pointer;transition:background .15s,color .15s,border-color .15s}.dial-grid-button:hover{background:var(--dial-surface-hover);color:var(--dial-text-primary)}.dial-grid-button[data-active=true]{background:var(--dial-surface-active);border-color:var(--dial-border-hover);color:var(--dial-text-focus)}.dial-toggle{display:flex;align-items:center;justify-content:space-between;height:var(--dial-row-height);padding:0 12px;background:var(--dial-surface);border-radius:var(--dial-radius);cursor:pointer;-webkit-user-select:none;user-select:none;transition:background .15s}.dial-toggle:hover{background:var(--dial-surface-hover)}.dial-toggle-label{font-size:13px;font-weight:500;color:var(--dial-text-label);transition:color .15s}.dial-toggle[data-checked=true] .dial-toggle-label{color:var(--dial-text-focus)}.dial-toggle-track{position:relative;width:36px;height:20px;border-radius:10px;background:var(--dial-surface-active);transition:background .2s;flex-shrink:0}.dial-toggle[data-checked=true] .dial-toggle-track{background:#ffffffd9}.dial-toggle-thumb{position:absolute;top:2px;width:16px;height:16px;border-radius:8px;background:var(--dial-text-primary);transition:left .18s cubic-bezier(.22,1,.36,1),background .2s}.dial-toggle[data-checked=true] .dial-toggle-thumb{background:#1c1c1e}.dial-text-control{display:flex;align-items:center;justify-content:space-between;gap:12px;height:var(--dial-row-height);padding:0 12px;background:var(--dial-surface);border-radius:var(--dial-radius)}.dial-text-label{font-size:13px;font-weight:500;color:var(--dial-text-label);flex-shrink:0}.dial-text-input,.dial-number-input{flex:1;min-width:0;font-family:inherit;font-size:13px;font-weight:500;color:var(--dial-text-focus);background:transparent;border:none;padding:0;outline:none;text-align:right}.dial-number-input{font-family:Geist Mono,monospace;-moz-appearance:textfield}.dial-number-input::-webkit-outer-spin-button,.dial-number-input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.dial-text-input::placeholder{color:var(--dial-text-tertiary)}.dial-textarea-control{display:flex;flex-direction:column;gap:6px;padding:10px 12px;background:var(--dial-surface);border-radius:var(--dial-radius)}.dial-textarea{width:100%;font-family:inherit;font-size:13px;font-weight:500;line-height:1.5;color:var(--dial-text-focus);background:transparent;border:none;padding:0;outline:none;resize:vertical}.dial-textarea::placeholder{color:var(--dial-text-tertiary)}.dial-color-control{display:flex;align-items:center;justify-content:space-between;gap:12px;height:var(--dial-row-height);padding:0 12px;background:var(--dial-surface);border-radius:var(--dial-radius)}.dial-color-label{font-size:13px;font-weight:500;color:var(--dial-text-label)}.dial-color-inputs{position:relative;display:flex;align-items:center;gap:8px}.dial-color-hex-input{width:8ch;font-family:Geist Mono,monospace;font-size:13px;font-weight:500;color:var(--dial-text-label);background:transparent;border:none;padding:0;outline:none;text-align:right;text-transform:uppercase}.dial-color-hex-input:focus{color:var(--dial-text-focus)}.dial-color-swatch{width:20px;height:20px;border-radius:5px;border:1px solid var(--dial-border-hover);cursor:pointer;padding:0;transition:transform .15s}.dial-color-swatch:hover{transform:scale(1.1)}.dial-color-picker-native{position:absolute;right:0;bottom:0;width:1px;height:1px;opacity:0;border:0;padding:0}.dial-row-pair{display:flex;gap:6px}.dial-row-pair>*{flex:1}.dial-button{width:100%;padding:10px 16px;font-family:inherit;font-size:13px;font-weight:500;color:var(--dial-text-secondary);background:var(--dial-surface);border:none;border-radius:var(--dial-radius);cursor:pointer;transition:background .15s,color .15s}.dial-button:hover:not(:disabled){background:var(--dial-surface-hover);color:var(--dial-text-primary)}.dial-button:active:not(:disabled){background:var(--dial-surface-active)}.dial-button:disabled{opacity:.4;cursor:not-allowed}.dial-button-primary{color:#111113;background:#ffffffeb;font-weight:600}.dial-button-primary:hover:not(:disabled){background:#fff;color:#111113}.dial-button-danger{color:#ff6b6b;background:#ff4d4d24;font-weight:600;box-shadow:inset 0 0 0 1px #ff4d4d66}.dial-button-danger:hover:not(:disabled){color:#fff;background:#ff3b30e6}.dial-button-danger:active:not(:disabled){background:#d63028f2}.dial-button-row{display:flex;gap:6px}.dial-button-row .dial-button{flex:1}.dial-hint{font-size:11.5px;line-height:1.5;color:var(--dial-text-tertiary);margin:2px}.dial-warn{font-size:12px;line-height:1.5;color:#ffb84d;margin:2px}.dial-credits{padding:10px 2px 4px;border-top:1px solid var(--dial-surface-subtle);margin-top:4px}.dial-credit{font-size:11.5px;line-height:1.5;color:var(--dial-text-tertiary);margin:0 0 6px}.dial-credit a{color:var(--dial-text-secondary);text-decoration:none;font-weight:600}.dial-credit a:hover{color:var(--dial-text-focus);text-decoration:underline}.stage{height:100vh;display:flex;flex-direction:column;padding:16px 20px;gap:14px;background-color:var(--bg);background-image:linear-gradient(to right,var(--check-stripe) 50%,transparent 50%),linear-gradient(to bottom,var(--check-stripe) 50%,transparent 50%);background-size:var(--check-size) var(--check-size);background-position:center}.stage-top{display:flex;align-items:center;justify-content:center;flex-shrink:0}.dial-segmented-stage-wrap{display:inline-flex;max-width:100%;padding:5px;border-radius:999px;background:var(--dial-glass-bg);border:1px solid var(--dial-border);box-shadow:var(--dial-shadow-collapsed);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);overflow:hidden}.dial-segmented-stage-wrap .dial-segmented{background:transparent;padding:0;min-width:0;overflow-x:auto;scrollbar-width:none;-webkit-overflow-scrolling:touch}.dial-segmented-stage-wrap .dial-segmented::-webkit-scrollbar{display:none}.dial-segmented-stage-wrap .dial-segmented-button{flex:0 0 auto}.dial-segmented-stage-wrap .dial-segmented-pill{top:0;bottom:0;border-radius:999px;background:#fff;border:none;box-shadow:0 2px 10px #00000059}.dial-segmented-stage-wrap .dial-segmented-button{padding:7px 16px;border-radius:999px}.dial-segmented-stage-wrap .dial-segmented-button[data-active=true]{color:#000}.canvas-wrap{flex:1;min-height:0;display:flex;align-items:center;justify-content:center;position:relative;container-type:size;padding-right:292px}.stage-canvas{position:relative;overflow:hidden;background:#111;border-radius:12px;box-shadow:0 16px 50px #0009}.stage-canvas.boxed{width:min(100cqw,calc(100cqh * var(--aspect, .5625)));max-width:100%;max-height:100%}.pattern-canvas{display:block;width:100%;height:100%}.panel-reopen{position:fixed;top:calc(12px + env(safe-area-inset-top,0px));right:12px;z-index:30;display:flex;align-items:center;justify-content:center;width:44px;height:44px;border-radius:50%;color:var(--dial-text-focus);background:var(--dial-glass-bg);border:1px solid var(--dial-border);box-shadow:var(--dial-shadow);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);cursor:pointer}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.side-panel-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:45;background:#00000080}.side-panel{position:fixed;top:0;right:0;bottom:0;z-index:50;display:flex;flex-direction:column;width:min(340px,88vw);background:var(--dial-glass-bg);border-left:1px solid var(--dial-border);box-shadow:-8px 0 40px #0000008c;backdrop-filter:blur(20px) saturate(1.4);-webkit-backdrop-filter:blur(20px) saturate(1.4);outline:none;transform:translate(100%);transition:transform .28s cubic-bezier(.32,.72,0,1)}.side-panel[data-open=true]{transform:translate(0)}.side-panel-scroll{flex:1;overflow-y:auto;-webkit-overflow-scrolling:touch;padding:calc(12px + env(safe-area-inset-top,0px)) 14px calc(24px + env(safe-area-inset-bottom,0px));scrollbar-width:none}.side-panel-scroll::-webkit-scrollbar{display:none}@media (max-width: 820px){.stage{height:100vh;padding:12px}.canvas-wrap{padding-right:0}.stage-top{padding-top:calc(52px + env(safe-area-inset-top,0px))}.dial-segmented-stage-wrap{max-width:none}.dial-segmented-stage-wrap .dial-segmented-button{padding:7px 13px;font-size:12px}}.palette-grid{display:grid;grid-template-columns:repeat(6,1fr);gap:6px}.palette-swatch{position:relative;aspect-ratio:1;border-radius:6px;border:1px solid var(--dial-border);cursor:pointer;padding:0;overflow:hidden;background-color:var(--bg);background-image:linear-gradient(90deg,var(--sw) 0 50%,transparent 50% 100%),linear-gradient(0deg,var(--sw) 0 50%,transparent 50% 100%);background-blend-mode:multiply;transition:transform .15s,border-color .15s,box-shadow .15s}.palette-swatch:hover{transform:scale(1.08);border-color:var(--dial-border-hover)}.palette-swatch[data-active=true]{border-color:#fff;box-shadow:0 0 0 2px #ffffff59}.ramp-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:6px}.ramp-swatch{display:flex;height:26px;padding:0;overflow:hidden;border:1px solid var(--dial-border);border-radius:6px;cursor:pointer;background:none;transition:transform .15s,border-color .15s,box-shadow .15s}.ramp-swatch>span{flex:1}.ramp-swatch:hover{transform:scale(1.06);border-color:var(--dial-border-hover)}.ramp-swatch[data-active=true]{border-color:#fff;box-shadow:0 0 0 2px #ffffff59}.app-error{position:fixed;left:50%;bottom:calc(20px + env(safe-area-inset-bottom,0px));transform:translate(-50%);z-index:200;font-size:13px;font-weight:600;color:#fff;background:#d63028eb;border-radius:999px;padding:10px 18px;box-shadow:0 10px 30px #00000073}.dial-motif-group{display:flex;flex-direction:column;gap:6px}.mobile-download{display:none}@media (max-width: 820px){.mobile-download{position:fixed;right:calc(16px + env(safe-area-inset-right,0px));bottom:calc(16px + env(safe-area-inset-bottom,0px));z-index:40;display:flex;align-items:center;justify-content:center;width:52px;height:52px;padding:0;border-radius:50%;background:#fff;border:none;box-shadow:0 8px 24px #00000073;cursor:pointer;overflow:hidden;transition:transform .15s ease,opacity .15s ease}.mobile-download:active{transform:scale(.94)}.mobile-download:disabled{opacity:.6;cursor:not-allowed}.side-panel[data-open=true]~.mobile-download{display:none}}.mobile-download-spin{animation:mobile-download-spin .8s linear infinite}@keyframes mobile-download-spin{to{transform:rotate(360deg)}}.mobile-download-icon{display:flex;align-items:center;justify-content:center;color:#111}
