:root{font-family:system-ui,Avenir,Helvetica,Arial,sans-serif;line-height:1.5;font-weight:400;color-scheme:dark;color:#ffffffde;background-color:#000;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{margin:0;padding:0;width:100vw;min-height:100vh}#root{width:100%;min-height:100vh}.app{width:100%;min-height:100vh;background-color:#000;padding:2rem;box-sizing:border-box;display:flex;flex-direction:column;align-items:center}.patterns-header{text-align:center;margin-bottom:3rem;padding-top:2rem;width:100%;max-width:1400px}.patterns-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:2rem;max-width:1400px;width:100%;margin:0 auto;justify-items:center}.pattern-link{display:flex;flex-direction:column;text-decoration:none;color:#ffffffde;transition:transform .2s ease,opacity .2s ease;cursor:pointer;align-items:center;width:100%;max-width:300px}.pattern-link:hover{transform:scale(1.05);opacity:.9}.patterns-header{text-align:center;margin-bottom:3rem;padding-top:2rem}.patterns-title{font-size:2.5rem;font-weight:700;color:#ffffffde;margin:0 0 .5rem;letter-spacing:-.02em}.patterns-author{font-size:1.25rem;color:#fff9;margin:0;font-style:italic}.pattern-image-container{width:100%;aspect-ratio:1 / 1;background-color:#1a1a1a;border:1px solid rgba(255,255,255,.1);overflow:hidden;margin-bottom:.5rem}.pattern-image{width:100%;height:100%;object-fit:cover;display:block}.pattern-name{font-size:1rem;text-align:center;padding:.5rem 0}@media(max-width:768px){.app{padding:1rem}.patterns-grid{grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:1.5rem}}@media(min-width:1024px){.patterns-grid{grid-template-columns:repeat(auto-fill,minmax(250px,1fr))}}.canvas-container{width:100%;height:100%;position:relative}.canvas-container canvas{display:block;width:100%;height:100%}.canvas-stats{position:absolute;bottom:1rem;left:1rem;font-family:ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,Liberation Mono,monospace;font-size:.75rem;color:#10b981;background-color:#000000b3;padding:.5rem;border-radius:.25rem;pointer-events:none}.canvas-stats div{margin:0;line-height:1.5}.control-panel{display:flex;flex-direction:column;gap:1.5rem;padding-bottom:2rem}.control-section{background-color:#0f172a80;padding:.75rem;border-radius:.5rem;border:1px solid #334155}.control-section-title{font-size:.75rem;color:#64748b;text-transform:uppercase;font-weight:700;margin-bottom:.75rem;letter-spacing:.05em}.control-buttons-row{display:flex;gap:.5rem;margin-bottom:.5rem}.control-button{flex:1;padding:.5rem;border-radius:.25rem;font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;border:1px solid;transition:background-color .2s,color .2s;cursor:pointer}.control-button-pause{background-color:#78350f80;color:#f59e0b;border-color:#78350f}.control-button-pause:hover{background-color:#78350f}.control-button-resume{background-color:#022c2280;color:#10b981;border-color:#022c22}.control-button-resume:hover{background-color:#022c22}.control-button-restart{background-color:#1e3a8a4d;color:#60a5fa;border-color:#1e3a8a80}.control-button-restart:hover{background-color:#1e3a8a80}.control-button-clear{background-color:#1e293b;color:#94a3b8;border-color:#475569}.control-button-clear:hover{background-color:#475569;color:#fff}.control-button-full{width:100%;padding:.5rem;border-radius:.25rem;font-size:.75rem;font-weight:700;text-transform:uppercase;letter-spacing:.05em;background-color:#475569;color:#cbd5e1;border:1px solid #475569;transition:background-color .2s,color .2s;cursor:pointer}.control-button-full:hover{background-color:#475569;color:#fff}.color-settings{display:flex;flex-direction:column;gap:.75rem}.color-setting-row{display:flex;align-items:center;justify-content:space-between}.color-label{font-size:.75rem;font-weight:700;color:#cbd5e1;text-transform:uppercase}.color-input{height:1.5rem;width:3rem;background-color:transparent;border:none;cursor:pointer;border-radius:.25rem}.render-mode-toggle{display:flex;text-align:center;border-radius:.25rem;padding:.25rem;border:1px solid #334155}.render-mode-button{flex:1;padding:.375rem;font-size:.75rem;font-weight:700;text-transform:uppercase;letter-spacing:.05em;border-radius:.25rem;transition:background-color .2s,color .2s;cursor:pointer;background:none;border:none;color:#64748b}.render-mode-button:hover{color:#cbd5e1}.render-mode-button-active{background-color:#475569;color:#34d399;box-shadow:0 1px 2px #0000000d}.speed-control{display:flex;flex-direction:column;gap:.5rem}.speed-header{display:flex;justify-content:space-between;align-items:center}.speed-label{font-size:.75rem;font-weight:700;color:#64748b;text-transform:uppercase;letter-spacing:.05em}.speed-value{font-size:.75rem;color:#34d399;font-family:ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,Liberation Mono,monospace}.speed-range{width:100%;height:.5rem;background-color:#475569;border-radius:.5rem;appearance:none;cursor:pointer}.speed-range::-webkit-slider-thumb{appearance:none;width:1rem;height:1rem;border-radius:50%;background-color:#10b981;cursor:pointer}.speed-range::-moz-range-thumb{width:1rem;height:1rem;border-radius:50%;background-color:#10b981;cursor:pointer;border:none}.speed-range:hover::-webkit-slider-thumb{background-color:#34d399}.speed-range:hover::-moz-range-thumb{background-color:#34d399}.speed-range-labels{display:flex;justify-content:space-between;font-size:10px;color:#475569;font-family:ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,Liberation Mono,monospace;margin-top:.25rem}.parameters-section{display:flex;flex-direction:column}.parameters-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1rem}.parameters-title{font-size:.75rem;color:#64748b;text-transform:uppercase;font-weight:700;letter-spacing:.05em}.reset-button{font-size:10px;color:#64748b;background:none;border:none;cursor:pointer;text-decoration:underline;text-decoration-color:#475569;text-underline-offset:2px}.reset-button:hover{color:#fff}.slider-input{margin-bottom:1rem}.slider-label-row{display:flex;justify-content:space-between;margin-bottom:.25rem}.slider-label{font-size:.75rem;font-weight:700;color:#cbd5e1;text-transform:uppercase}.slider-value{font-size:.75rem;color:#34d399;font-family:ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,Liberation Mono,monospace}.slider-input-range{width:100%;height:.5rem;background-color:#475569;border-radius:.5rem;appearance:none;cursor:pointer}.slider-input-range::-webkit-slider-thumb{appearance:none;width:1rem;height:1rem;border-radius:50%;background-color:#10b981;cursor:pointer}.slider-input-range::-moz-range-thumb{width:1rem;height:1rem;border-radius:50%;background-color:#10b981;cursor:pointer;border:none}.slider-input-range:hover::-webkit-slider-thumb{background-color:#34d399}.slider-input-range:hover::-moz-range-thumb{background-color:#34d399}.number-inputs-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:1rem}.number-input{margin-bottom:1rem}.number-input-label{font-size:.75rem;font-weight:700;color:#cbd5e1;text-transform:uppercase;display:block;margin-bottom:.25rem}.number-input-field{width:100%;background-color:#0f172a;border:1px solid #475569;color:#34d399;font-family:ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,Liberation Mono,monospace;font-size:.875rem;border-radius:.25rem;padding:.25rem .5rem}.number-input-field:focus{outline:none;border-color:#10b981}.presets-section{border-top:1px solid #475569;padding-top:1rem}.presets-buttons{display:flex;gap:.5rem;margin-bottom:1rem}.preset-button{flex:1;padding:.5rem .25rem;border-radius:.25rem;font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;border:1px solid;transition:background-color .2s,color .2s;cursor:pointer;white-space:nowrap}.preset-button-save{background-color:#022c224d;color:#34d399;border-color:#022c2280}.preset-button-save:hover{background-color:#022c2280}.preset-button-load{background-color:#1e293b;color:#94a3b8;border-color:#475569;display:flex;align-items:center;justify-content:center;text-align:center}.preset-button-load:hover{background-color:#475569;color:#fff}.preset-button-download{background-color:#1e293b;color:#94a3b8;border-color:#475569}.preset-button-download:hover{background-color:#475569;color:#fff}.preset-button-download:disabled{opacity:.5;cursor:not-allowed}.preset-file-input{display:none}.presets-list{display:flex;flex-direction:column;gap:.5rem;max-height:10rem;overflow-y:auto;padding-right:.25rem}.preset-item{background-color:#0f172a;padding:.5rem;border-radius:.25rem;border:1px solid #1e293b;display:flex;justify-content:space-between;align-items:center}.preset-item-button{text-align:left;flex:1;background:none;border:none;cursor:pointer;padding:0}.preset-item-name{font-size:.75rem;font-weight:700;color:#cbd5e1;transition:color .2s}.preset-item:hover .preset-item-name{color:#34d399}.preset-item-params{font-size:10px;color:#475569;font-family:ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,Liberation Mono,monospace}.preset-remove-button{margin-left:.5rem;padding:.25rem;color:#475569;background:none;border:none;cursor:pointer;transition:color .2s}.preset-remove-button:hover{color:#f87171}.preset-empty{font-size:10px;color:#475569;font-style:italic;text-align:center;padding:.5rem 0}.symmetry-attractor-container{display:flex;flex-direction:column;height:100vh;width:100%;overflow:hidden;background-color:#0f172a;color:#e2e8f0;font-family:ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,Liberation Mono,monospace}@media(min-width:768px){.symmetry-attractor-container{flex-direction:row}}.symmetry-attractor-sidebar{width:100%;flex-shrink:0;border-right:1px solid #334155;background-color:#1e293b80;padding:1rem;overflow-y:auto}@media(min-width:768px){.symmetry-attractor-sidebar{width:20rem}}.symmetry-attractor-canvas-area{flex:1;position:relative;background-color:#000;display:flex;align-items:center;justify-content:center;overflow:hidden}.symmetry-attractor-overlay{position:absolute;top:1rem;right:1rem;pointer-events:none;font-size:.75rem;color:#64748b;text-align:right;background-color:#00000080;padding:.5rem;border-radius:.25rem;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.symmetry-attractor-overlay p{margin:0;line-height:1.5}.custom-scrollbar::-webkit-scrollbar{width:8px}.custom-scrollbar::-webkit-scrollbar-track{background:#0f172a80}.custom-scrollbar::-webkit-scrollbar-thumb{background:#334155cc;border-radius:4px}.custom-scrollbar::-webkit-scrollbar-thumb:hover{background:#475569e6}.fractal-input{display:flex;flex-direction:column;gap:.25rem;margin-bottom:.75rem}.fractal-input-label{font-size:.75rem;color:#94a3b8;font-family:ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,Liberation Mono,monospace;text-transform:uppercase;letter-spacing:.05em}.fractal-input-field{background-color:#1e293b;border:1px solid #475569;color:#e2e8f0;font-size:.875rem;border-radius:.25rem;padding:.25rem .5rem;font-family:ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,Liberation Mono,monospace;transition:border-color .2s}.fractal-input-field:focus{outline:none;border-color:#06b6d4}.fractal-control-panel{width:100%;background-color:#0f172a;border-right:1px solid #1e293b;display:flex;flex-direction:column;height:100%;overflow-y:auto}@media(min-width:768px){.fractal-control-panel{width:20rem}}.fractal-control-header{padding:1rem;border-bottom:1px solid #1e293b}.fractal-control-title{font-size:1.25rem;font-weight:700;color:#22d3ee;margin-bottom:.25rem}.fractal-control-subtitle{font-size:.75rem;color:#64748b;font-family:ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,Liberation Mono,monospace}.fractal-control-content{padding:1rem;flex:1;display:flex;flex-direction:column;gap:1.5rem}.fractal-status{background-color:#020617;padding:.75rem;border-radius:.25rem;border:1px solid #1e293b;font-family:ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,Liberation Mono,monospace;font-size:.75rem}.fractal-status-row{display:flex;justify-content:space-between;color:#94a3b8}.fractal-status-row:not(:first-child){margin-top:.25rem}.fractal-status-value{color:#fff}.fractal-status-symmetry{color:#fbbf24}.fractal-status-warning{margin-top:.5rem;color:#f87171;border-top:1px solid #1e293b;padding-top:.25rem}.fractal-control-section{display:flex;flex-direction:column;gap:.75rem}.fractal-section-title{font-size:.875rem;font-weight:600;color:#cbd5e1;border-bottom:1px solid #475569;padding-bottom:.25rem}.fractal-symmetry-toggle{display:flex;align-items:center;justify-content:space-between;background-color:#1e293b;padding:.5rem;border-radius:.25rem;border:1px solid #475569}.fractal-symmetry-label{font-size:.75rem;color:#94a3b8;font-family:ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,Liberation Mono,monospace;text-transform:uppercase}.fractal-symmetry-button{padding:.25rem .75rem;font-size:.75rem;border-radius:.25rem;font-weight:700;transition:background-color .2s;cursor:pointer;border:none;color:#fff}.fractal-symmetry-button-dn{background-color:#9333ea}.fractal-symmetry-button-dn:hover{background-color:#a855f7}.fractal-symmetry-button-zn{background-color:#2563eb}.fractal-symmetry-button-zn:hover{background-color:#3b82f6}.fractal-coefficients-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:.75rem}.fractal-actions{padding-top:1rem;display:flex;flex-direction:column;gap:.5rem}.fractal-button{width:100%;padding:.5rem;border-radius:.25rem;font-size:.875rem;font-weight:600;transition:background-color .2s;cursor:pointer;border:1px solid}.fractal-button-clear{background-color:#475569;color:#fff;border-color:#475569}.fractal-button-clear:hover{background-color:#475569}.fractal-button-reset{background-color:#7f1d1d80;color:#fca5a5;border-color:#7f1d1d}.fractal-button-reset:hover{background-color:#7f1d1dcc}.fractal-button-save{background-color:#022c2280;color:#34d399;border-color:#022c22}.fractal-button-save:hover{background-color:#022c22cc}.fractal-button-load{background-color:#1e293b;color:#94a3b8;border-color:#475569;cursor:pointer;display:flex;align-items:center;justify-content:center}.fractal-button-load:hover{background-color:#475569;color:#fff}.fractal-file-input{display:none}.fractal-render-mode-toggle{display:flex;gap:.25rem;border-radius:.25rem;padding:.25rem;border:1px solid #475569;background-color:#1e293b}.fractal-render-mode-button{flex:1;padding:.375rem;font-size:.75rem;font-weight:700;text-transform:uppercase;letter-spacing:.05em;border-radius:.25rem;transition:background-color .2s,color .2s;cursor:pointer;background:none;border:none;color:#64748b}.fractal-render-mode-button:hover{color:#cbd5e1}.fractal-render-mode-button-active{background-color:#475569;color:#22d3ee;box-shadow:0 1px 2px #0000000d}.fractal-histogram-colors{display:flex;flex-direction:column;gap:.75rem;margin-top:.75rem}.fractal-color-setting-row{display:flex;align-items:center;justify-content:space-between}.fractal-color-label{font-size:.75rem;font-weight:700;color:#cbd5e1;text-transform:uppercase}.fractal-color-input{height:1.5rem;width:3rem;background-color:transparent;border:none;cursor:pointer;border-radius:.25rem}.fractal-presets-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:.75rem}.fractal-clear-on-load-toggle{display:flex;align-items:center;gap:.5rem;cursor:pointer}.fractal-checkbox{width:1rem;height:1rem;cursor:pointer;accent-color:#22d3ee}.fractal-checkbox-label{font-size:.75rem;color:#94a3b8;-webkit-user-select:none;user-select:none}.fractal-presets-list{display:flex;flex-direction:column;gap:.5rem;max-height:12rem;overflow-y:auto;padding-right:.25rem}.fractal-preset-item{background-color:#0f172a;padding:.75rem;border-radius:.25rem;border:1px solid #1e293b;cursor:pointer;text-align:left;transition:background-color .2s,border-color .2s;width:100%}.fractal-preset-item:hover{background-color:#1e293b;border-color:#22d3ee}.fractal-preset-name{font-size:.875rem;font-weight:600;color:#cbd5e1;margin-bottom:.25rem}.fractal-preset-figure{font-size:.75rem;color:#64748b;font-family:ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,Liberation Mono,monospace;margin-bottom:.125rem}.fractal-preset-info{font-size:.75rem;color:#fbbf24;font-family:ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,Liberation Mono,monospace}.fractal-canvas-container{flex:1;position:relative;background-color:#000;overflow:hidden;cursor:crosshair}.fractal-canvas{display:block;position:absolute;top:0;left:0}.symmetric-fractal-container{display:flex;flex-direction:column;height:100vh;width:100vw;overflow:hidden;background-color:#0f172a;color:#f1f5f9;font-family:ui-sans-serif,system-ui,sans-serif}@media(min-width:768px){.symmetric-fractal-container{flex-direction:row}}.square-quilt-input{display:flex;flex-direction:column;gap:.25rem;margin-bottom:.75rem}.square-quilt-input-label{font-size:.75rem;color:#94a3b8;font-family:ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,Liberation Mono,monospace;text-transform:uppercase;letter-spacing:.05em}.square-quilt-input-field{background-color:#1e293b;border:1px solid #475569;color:#e2e8f0;font-size:.875rem;border-radius:.25rem;padding:.25rem .5rem;font-family:ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,Liberation Mono,monospace;transition:border-color .2s}.square-quilt-input-field:focus{outline:none;border-color:#06b6d4}.square-quilt-control-panel{width:100%;background-color:#0f172a;border-right:1px solid #1e293b;display:flex;flex-direction:column;height:100%;overflow-y:auto}@media(min-width:768px){.square-quilt-control-panel{width:20rem}}.square-quilt-control-header{padding:1rem;border-bottom:1px solid #1e293b}.square-quilt-control-title{font-size:1.25rem;font-weight:700;color:#22d3ee;margin-bottom:.25rem}.square-quilt-control-subtitle{font-size:.75rem;color:#64748b;font-family:ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,Liberation Mono,monospace}.square-quilt-control-content{padding:1rem;flex:1;display:flex;flex-direction:column;gap:1.5rem}.square-quilt-status{background-color:#020617;padding:.75rem;border-radius:.25rem;border:1px solid #1e293b;font-family:ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,Liberation Mono,monospace;font-size:.75rem}.square-quilt-status-row{display:flex;justify-content:space-between;color:#94a3b8}.square-quilt-status-row:not(:first-child){margin-top:.25rem}.square-quilt-status-value{color:#fff}.square-quilt-control-section{display:flex;flex-direction:column;gap:.75rem}.square-quilt-section-title{font-size:.875rem;font-weight:600;color:#cbd5e1;border-bottom:1px solid #475569;padding-bottom:.25rem}.square-quilt-toggle{display:flex;align-items:center;justify-content:space-between;background-color:#1e293b;padding:.5rem;border-radius:.25rem;border:1px solid #475569}.square-quilt-toggle-label{font-size:.75rem;color:#94a3b8;font-family:ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,Liberation Mono,monospace;text-transform:uppercase}.square-quilt-toggle-button{padding:.25rem .75rem;font-size:.75rem;border-radius:.25rem;font-weight:700;transition:background-color .2s;cursor:pointer;border:none;color:#fff;background-color:#475569}.square-quilt-toggle-button:hover{background-color:#64748b}.square-quilt-toggle-button-active{background-color:#22d3ee;color:#000}.square-quilt-toggle-button-active:hover{background-color:#06b6d4}.square-quilt-actions{padding-top:1rem;display:flex;flex-direction:column;gap:.5rem}.square-quilt-button{width:100%;padding:.5rem;border-radius:.25rem;font-size:.875rem;font-weight:600;transition:background-color .2s;cursor:pointer;border:1px solid}.square-quilt-button-clear{background-color:#475569;color:#fff;border-color:#475569}.square-quilt-button-clear:hover{background-color:#475569}.square-quilt-button-reset{background-color:#7f1d1d80;color:#fca5a5;border-color:#7f1d1d}.square-quilt-button-reset:hover{background-color:#7f1d1dcc}.square-quilt-button-save{background-color:#022c2280;color:#34d399;border-color:#022c22}.square-quilt-button-save:hover{background-color:#022c22cc}.square-quilt-button-load{background-color:#1e293b;color:#94a3b8;border-color:#475569;cursor:pointer;display:flex;align-items:center;justify-content:center}.square-quilt-button-load:hover{background-color:#475569;color:#fff}.square-quilt-file-input{display:none}.square-quilt-presets-list{display:flex;flex-direction:column;gap:.5rem;max-height:12rem;overflow-y:auto;padding-right:.25rem}.square-quilt-preset-item{background-color:#0f172a;padding:.75rem;border-radius:.25rem;border:1px solid #1e293b;cursor:pointer;text-align:left;transition:background-color .2s,border-color .2s;width:100%}.square-quilt-preset-item:hover{background-color:#1e293b;border-color:#22d3ee}.square-quilt-preset-name{font-size:.875rem;font-weight:600;color:#cbd5e1;margin-bottom:.25rem}.square-quilt-preset-figure{font-size:.75rem;color:#64748b;font-family:ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,Liberation Mono,monospace}.square-quilt-canvas-container{flex:1;position:relative;background-color:#000;overflow:hidden}.square-quilt-canvas{display:block;width:100%;height:100%}.square-quilt-container{display:flex;flex-direction:column;height:100vh;width:100vw;overflow:hidden;background-color:#0f172a;color:#f1f5f9;font-family:ui-sans-serif,system-ui,sans-serif}@media(min-width:768px){.square-quilt-container{flex-direction:row}}
