:root{--bg-dark: #000000;--bg-light: #cccccc;--text-dark: #1a1a1a;--text-light: #f0f0f0;--panel-bg-dark: #1e1e1e;--panel-bg-light: #ffffff;--scene-bg-dark: #1a1a1a;--scene-bg-light: #f0f0f0;--primary-accent: #66c2a5;--secondary-accent: #fd8d62;--border-color-dark: #444;--border-color-light: #ddd;--shadow-light: 0 4px 12px rgba(0,0,0,.1);--shadow-dark: 0 4px 12px rgba(0,0,0,.4);--gap: 15px;--panel-width: 320px;--container-margin: 15px;--floater-offset-left: calc(var(--container-margin) + var(--panel-width) + var(--gap) + 15px);--floater-offset-top: calc(var(--container-margin) + 15px);--pill-icon-base: #2d2d2d;--pill-icon-hover: #3a3a3a;--pill-octagon-stroke: #4fc3f7;--pill-primary-accent: #FFAF89;--pill-secondary-accent: #924827}body{position:relative;height:100vh;margin:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;background-color:var(--bg-dark);color:var(--text-light);overflow:hidden;transition:background-color .3s ease,color .3s ease;box-sizing:border-box}body.light-theme{background-color:var(--bg-light);color:var(--text-dark);--pill-icon-base: #e0e0e0;--pill-icon-hover: #f0f0f0;--pill-octagon-stroke: #0277bd;--pill-primary-accent: #FE702D;--pill-secondary-accent: #532916}body.landing-page{display:flex;justify-content:center;align-items:center;height:100vh;text-align:center;overflow:auto;background-color:var(--panel-bg-dark)}body.landing-page.light-theme{background-color:var(--panel-bg-light)}.landing-page .container{background-color:var(--panel-bg-dark);padding:40px 50px;border-radius:12px;border:1px solid var(--border-color-dark);box-shadow:var(--shadow-dark)}.landing-page h1{margin-top:0;margin-bottom:30px;font-weight:600}.nav-button{display:inline-block;padding:15px 30px;background-color:var(--primary-accent);color:#000;text-decoration:none;font-size:1rem;font-weight:500;border-radius:8px;border:none;cursor:pointer;transition:transform .2s ease,opacity .2s ease}.nav-button:hover{opacity:.9;transform:scale(1.05)}canvas{display:block;position:absolute;top:var(--container-margin);bottom:var(--container-margin);left:calc(var(--container-margin) + var(--panel-width) + var(--gap));right:calc(var(--container-margin) + var(--panel-width) + var(--gap));width:auto;height:auto;z-index:1;border-radius:15px}#label-container{position:absolute;top:var(--container-margin);bottom:var(--container-margin);left:calc(var(--container-margin) + var(--panel-width) + var(--gap));right:calc(var(--container-margin) + var(--panel-width) + var(--gap));width:auto;height:auto;pointer-events:none;z-index:50;border-radius:15px;overflow:hidden}.label{color:var(--text-light);background:#0009;padding:2px 5px;border-radius:4px;font-size:12px;pointer-events:none}body.light-theme .label{color:var(--text-dark);background:#ffffffb3;border:1px solid var(--border-color-light)}#ui-container{position:absolute;top:var(--container-margin);bottom:var(--container-margin);left:var(--container-margin);width:var(--panel-width);background-color:var(--panel-bg-dark);border-radius:20px;padding:16px;box-sizing:border-box;box-shadow:var(--shadow-dark);border:1px solid var(--border-color-dark);transition:background-color .3s ease,border-color .3s ease,transform .3s ease-in-out;height:auto;overflow-y:auto;display:flex;flex-direction:column;gap:16px;z-index:100}body.light-theme #ui-container{background-color:var(--panel-bg-light);border-color:var(--border-color-light);box-shadow:var(--shadow-light)}#right-ui-container{position:absolute;top:var(--container-margin);bottom:var(--container-margin);right:var(--container-margin);width:var(--panel-width);background-color:var(--panel-bg-dark);border-radius:20px;padding:16px;box-sizing:border-box;box-shadow:var(--shadow-dark);border:1px solid var(--border-color-dark);transition:background-color .3s ease,border-color .3s ease,transform .3s ease-in-out;height:auto;overflow-y:auto;display:flex;flex-direction:column;gap:16px;z-index:100}body.light-theme #right-ui-container{background-color:var(--panel-bg-light);border-color:var(--border-color-light);box-shadow:var(--shadow-light)}.ui-section{padding:12px;border:1px solid var(--border-color-dark);border-radius:8px;display:flex;flex-direction:column;gap:12px;transition:border-color .3s ease}body.light-theme .ui-section{border-color:var(--border-color-light)}.ui-title{font-weight:600;font-size:1rem;margin:0;padding-bottom:8px;border-bottom:1px solid var(--border-color-dark);transition:border-color .3s ease}body.light-theme .ui-title{border-color:var(--border-color-light)}.control-row{display:flex;justify-content:space-between;align-items:center;gap:10px}label{font-size:.9rem}button{padding:8px 12px;border-radius:6px;border:1px solid var(--border-color-dark);background-color:#000;color:var(--text-light);font-size:.9rem;transition:background-color .2s,border-color .2s,opacity .2s;cursor:pointer}input[type=number]{padding:8px 12px;border-radius:6px;border:1px solid var(--border-color-dark);background-color:#000;color:var(--text-light);font-size:.9rem;transition:background-color .2s,border-color .2s;width:70px;text-align:right;-moz-appearance:textfield}input::-webkit-outer-spin-button,input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}button:not(.hex-button):not(.icon-btn):not(.fab):not(.custom-select-button):not(.control-btn):not(.icon-btn-svg-wrapper):not(.angle-preset-button):not(.floater-stepper-btn){width:100%;background-color:var(--primary-accent);color:#000;border:none;font-weight:500}body.light-theme button,body.light-theme input[type=number]{background-color:#eee;color:var(--text-dark);border-color:var(--border-color-light)}body.light-theme button:not(.hex-button):not(.icon-btn):not(.fab):not(.custom-select-button):not(.control-btn):not(.icon-btn-svg-wrapper):not(.angle-preset-button):not(.floater-stepper-btn){background-color:var(--primary-accent);color:#fff}button:hover,input[type=number]:hover{border-color:var(--primary-accent)}button:hover:not(.hex-button):not(.icon-btn-svg-wrapper){opacity:.9}.slider-container{display:flex;align-items:center;gap:8px}input[type=range]{-webkit-appearance:none;flex-grow:1;height:4px;background:var(--border-color-dark);border-radius:2px;outline:none;transition:background .3s}body.light-theme input[type=range]{background:var(--border-color-light)}input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:16px;height:16px;background:var(--primary-accent);cursor:pointer;border-radius:50%}.stepper-btn{width:24px;height:24px;padding:0;font-size:1rem;line-height:24px;text-align:center;flex-shrink:0}.tessellate-legend{display:none}.button-group{display:flex;gap:10px;justify-content:center}#pattern-controls-container{display:flex;flex-direction:column;gap:12px}.fab{width:56px;height:56px;background-color:var(--primary-accent);border-radius:50%;border:none;box-shadow:var(--shadow-dark);display:flex;justify-content:center;align-items:center;color:#000;font-size:24px;cursor:pointer;transition:transform .2s ease-in-out,background-color .2s;flex-shrink:0}.fab:hover{transform:scale(1.05);opacity:.95}body.light-theme .fab{box-shadow:var(--shadow-light);color:#fff}.fab-reset{background-color:var(--secondary-accent)}.fab-dxf{background-color:#3b82f6;color:#fff}.fab-stl{background-color:#16a34a;color:#fff}.fab-group{display:flex;flex-direction:row;justify-content:space-around;align-items:center;padding:10px 0 20px;gap:10px}#mobile-menu-btn{display:none;position:absolute;top:15px;left:15px;z-index:101;width:45px;height:45px;font-size:24px;background-color:var(--panel-bg-dark);color:var(--text-light);border:1px solid var(--border-color-dark);border-radius:8px;cursor:pointer}body.light-theme #mobile-menu-btn{background-color:var(--panel-bg-light);color:var(--text-dark);border-color:var(--border-color-light)}@media (max-width: 1024px){#right-ui-container{display:none}canvas,#label-container{left:350px;right:15px}.custom-select-container{left:var(--floater-offset-left);top:var(--floater-offset-top)}.canvas-overlay-buttons{right:300;top:30px}}@media (max-width: 768px){#mobile-menu-btn{display:block;top:15px;left:15px}#ui-container{transform:translate(-110%);background-color:#2c2c2cbf;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);width:320px;height:auto;box-shadow:var(--shadow-dark)}body.light-theme #ui-container{background-color:#ffffffbf}#ui-container.is-open{transform:translate(0)}canvas,#label-container{left:0;right:0;top:0;bottom:0;border-radius:0}.custom-select-container{top:75px;left:15px;width:calc(100% - 30px);max-width:none;flex-direction:column}.canvas-overlay-buttons{top:30px;right:15px}}#layers-panel .layer-group{margin-bottom:8px}#layers-panel summary{font-weight:500;cursor:pointer;padding:4px;list-style:none}#layers-panel summary:before{content:"▶";display:inline-block;margin-right:8px;font-size:.7em;transition:transform .2s}#layers-panel details[open]>summary:before{transform:rotate(90deg)}#layers-panel .layer-items{padding-left:15px;display:flex;flex-direction:column;gap:8px;margin-top:8px}#layers-panel .layer-row{display:flex;align-items:center;gap:8px;justify-content:flex-start}#layers-panel .layer-name{flex-grow:0}.custom-color-picker{position:relative}.color-swatch{width:18px;height:18px;border:1px solid var(--border-color-dark);border-radius:4px;cursor:pointer}body.light-theme .color-swatch{border-color:var(--border-color-light)}.color-palette{display:none;position:absolute;top:100%;left:0;margin-top:4px;background-color:var(--panel-bg-dark);border:1px solid var(--border-color-dark);border-radius:6px;box-shadow:var(--shadow-dark);padding:6px;z-index:1000;width:150px}.color-palette.is-open{display:block}body.light-theme .color-palette{background-color:var(--panel-bg-light);border-color:var(--border-color-light);box-shadow:var(--shadow-light)}.palette-item{display:flex;align-items:center;gap:8px;padding:6px;border-radius:4px;cursor:pointer}.palette-item:hover{background-color:var(--primary-accent);color:#000}.palette-color{width:14px;height:14px;border-radius:3px;border:1px solid var(--border-color-dark)}body.light-theme .palette-item:hover .palette-color{border-color:#fff}.color-palette hr{border:none;border-top:1px solid var(--border-color-dark);margin:6px 0}body.light-theme .color-palette hr{border-color:var(--border-color-light)}#layers-panel .visibility-toggle{background:none;border:none;color:var(--text-light);cursor:pointer;padding:4px;width:24px;height:24px;font-size:1rem}body.light-theme #layers-panel .visibility-toggle{color:var(--text-dark)}#layers-panel .visibility-toggle.is-hidden .fa-solid{opacity:.3}.switch{position:relative;display:inline-block;width:44px;height:24px}.switch input{opacity:0;width:0;height:0}.switch .slider{position:absolute;cursor:pointer;top:0;left:0;right:0;bottom:0;background-color:#444;transition:.4s;border-radius:24px}.switch .slider:before{position:absolute;content:"";height:18px;width:18px;left:3px;bottom:3px;background-color:#fff;transition:.4s;border-radius:50%}.switch input:checked+.slider{background-color:var(--primary-accent)}.switch input:checked+.slider:before{transform:translate(20px)}#theme-toggle-row{width:auto}#theme-toggle-row .switch{width:70px;height:34px}#theme-toggle-row .slider{position:relative;display:block;width:100%;height:100%;background-color:#3a3a3a;border-radius:34px;transition:background-color .3s ease-in-out;cursor:pointer}#theme-toggle-row .slider:before{content:"";position:absolute;top:4px;left:4px;width:26px;height:26px;background-color:#f0f0f0;border-radius:50%;transition:transform .3s cubic-bezier(.175,.885,.32,1.275);z-index:1}#theme-toggle-row .sun-icon,#theme-toggle-row .moon-icon{position:absolute;top:4px;left:4px;width:26px;height:26px;padding:5px;box-sizing:border-box;pointer-events:none;transition:transform .3s cubic-bezier(.175,.885,.32,1.275),opacity .3s ease-in-out;z-index:2}#theme-toggle-row .moon-icon{stroke:var(--text-dark);opacity:1;transform:translate(0) rotate(0)}#theme-toggle-row .sun-icon{stroke:#f5f5f5;opacity:0;transform:translate(0) rotate(90deg)}body.light-theme #theme-toggle-row .slider{background-color:var(--primary-accent)}#theme-toggle-row input:checked+.slider:before{transform:translate(36px)}#theme-toggle-row input:checked~.slider .moon-icon{opacity:0;transform:translate(36px) rotate(-90deg)}#theme-toggle-row input:checked~.slider .sun-icon{stroke:var(--text-dark);opacity:1;transform:translate(36px) rotate(0)}.hidden{display:none!important}.pill-fab-container{position:fixed;bottom:30px;left:50%;transform:translate(-50%);z-index:1001;display:flex;flex-direction:column;align-items:center}.icon-btn{width:60px;height:60px;color:#fff;font-weight:600;font-size:1.125rem;display:flex;align-items:center;justify-content:center;transition:all .3s ease-in-out,box-shadow .3s ease-in-out;cursor:pointer;position:relative;flex-shrink:0;border-radius:50%;box-shadow:0 4px 6px #0000004d;background:none;border:none;padding:0}.icon-btn:hover{transform:scale(1.05);box-shadow:0 6px 10px #0006;opacity:1;border-color:transparent}.icon-btn svg{position:absolute;top:0;left:0;width:100%;height:100%;transition:filter .3s ease-in-out}.circle-base-shape{fill:var(--pill-icon-base);transition:fill .3s ease-in-out,filter .3s ease-in-out}.icon-btn:hover .circle-base-shape{fill:var(--pill-icon-hover)}.octagon-icon-shape{fill:var(--pill-icon-base);stroke:var(--pill-octagon-stroke);stroke-width:2.5;transition:fill .3s ease-in-out,stroke .3s ease-in-out}.icon-btn:hover .octagon-icon-shape{fill:var(--pill-icon-hover);stroke:var(--pill-octagon-stroke)}.octagon-svg-star{opacity:1;stroke:var(--pill-primary-accent);stroke-width:2.5}.octagon-svg-star line{stroke-dasharray:57;stroke-dashoffset:57;transition:stroke-dashoffset .8s ease-in-out}.frosted-glass-container.expanded-level-1 #toggleButton .octagon-svg-star line,.frosted-glass-container.expanded-level-2 #toggleButton .octagon-svg-star line{stroke-dashoffset:0}.frosted-glass-container.expanded-level-2 #distanceToggleButton .octagon-svg-star line{stroke-dashoffset:0}.frosted-glass-container:not(.expanded-level-1):not(.expanded-level-2) #toggleButton:hover .octagon-svg-star line{animation:draw-star .8s ease-in-out .2s forwards}.frosted-glass-container.expanded-level-1 #distanceToggleButton:hover .octagon-svg-star line{animation:draw-star .8s ease-in-out .2s forwards}.frosted-glass-container.expanded-level-1 #toggleButton:hover .octagon-svg-star line,.frosted-glass-container.expanded-level-2 #toggleButton:hover .octagon-svg-star line{animation:erase-star .8s ease-in-out .2s forwards}.frosted-glass-container.expanded-level-2 #distanceToggleButton:hover .octagon-svg-star line{animation:erase-star .8s ease-in-out .2s forwards}.frosted-glass-container:not(.expanded-level-1):not(.expanded-level-2) #toggleButton:not(:hover) .octagon-svg-star line,.frosted-glass-container.expanded-level-1 #distanceToggleButton:not(:hover) .octagon-svg-star line{stroke-dashoffset:57!important}.frosted-glass-container.expanded-level-1 #toggleButton:not(:hover) .octagon-svg-star line,.frosted-glass-container.expanded-level-2 #toggleButton:not(:hover) .octagon-svg-star line,.frosted-glass-container.expanded-level-2 #distanceToggleButton:not(:hover) .octagon-svg-star line{stroke-dashoffset:0!important}@keyframes erase-star{0%{stroke-dashoffset:0}to{stroke-dashoffset:57}}@keyframes draw-star{0%{stroke-dashoffset:57}to{stroke-dashoffset:0}}.distance-icon-middle{stroke:var(--pill-primary-accent);stroke-width:3.5;stroke-dasharray:12 12}.distance-icon-double-lines line{stroke:var(--pill-secondary-accent);stroke-width:3.5;stroke-dasharray:60;stroke-dashoffset:60;transition:stroke-dashoffset .8s ease-in-out}.frosted-glass-container.expanded-level-2 #distanceToggleButton .distance-icon-double-lines line{stroke-dashoffset:0}.frosted-glass-container.expanded-level-1 #distanceToggleButton:hover .distance-icon-double-lines line{animation:draw-double-line .8s ease-in-out .2s forwards}.frosted-glass-container.expanded-level-2 #distanceToggleButton:hover .distance-icon-double-lines line{animation:erase-double-line .8s ease-in-out .2s forwards}.frosted-glass-container.expanded-level-1 #distanceToggleButton:not(:hover) .distance-icon-double-lines line{stroke-dashoffset:60!important}.frosted-glass-container.expanded-level-2 #distanceToggleButton:not(:hover) .distance-icon-double-lines line{stroke-dashoffset:0!important}@keyframes draw-double-line{0%{stroke-dashoffset:60}to{stroke-dashoffset:0}}@keyframes erase-double-line{0%{stroke-dashoffset:0}to{stroke-dashoffset:60}}.frosted-glass-container{background-color:#4b4b4b4d;backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border:1px solid rgba(100,100,100,.3);box-shadow:0 8px 24px #0000004d;display:flex;align-items:center;justify-content:center;width:80px;height:80px;border-radius:40px;transition:width .5s ease-in-out,border-radius .5s ease-in-out,justify-content .2s ease-in-out,padding .5s ease-in-out,gap .5s ease-in-out;overflow:hidden;gap:0;padding:0}body.light-theme .frosted-glass-container{background-color:#ffffff4d;border:1px solid rgba(200,200,200,.3)}.frosted-glass-container.expanded-level-1{width:474px;border-radius:40px;justify-content:flex-start;padding:0 .5rem;gap:.5rem}.frosted-glass-container.expanded-level-2{width:804px;border-radius:40px;justify-content:flex-start;padding:0 .5rem}.pill-content{display:flex;align-items:center;gap:.5rem;white-space:nowrap;width:0;opacity:0;overflow:hidden;transition:opacity .3s ease-in-out .2s,width .5s ease-in-out;flex-shrink:0}.frosted-glass-container.expanded-level-1 .angle-pill-content,.frosted-glass-container.expanded-level-2 .angle-pill-content,.frosted-glass-container.expanded-level-2 .distance-pill-content{width:322px;opacity:1}#distanceToggleButton{width:0;opacity:0;overflow:hidden;transition:opacity .3s ease-in-out .2s,width .5s ease-in-out}.frosted-glass-container.expanded-level-1 #distanceToggleButton,.frosted-glass-container.expanded-level-2 #distanceToggleButton{width:60px;opacity:1}.angle-icon{color:var(--pill-primary-accent);stroke-width:3;width:48px;height:48px;flex-shrink:0;overflow:visible}body.light-theme .angle-icon{color:var(--pill-primary-accent)}#dynamicDistanceIcon #distanceLineMiddle{stroke:var(--pill-primary-accent)}#dynamicDistanceIcon #distanceLineTop,#dynamicDistanceIcon #distanceLineBottom{stroke:var(--pill-secondary-accent)}.control-btn{width:20px;height:20px;background-color:transparent;border:none;border-radius:0;color:var(--text-light);display:flex;align-items:center;justify-content:center;cursor:pointer;transition:color .2s;font-size:1.1rem;line-height:1;flex-shrink:0;padding:0}body.light-theme .control-btn{color:var(--text-dark)}.control-btn:hover{color:#d1d5db;background-color:transparent}body.light-theme .control-btn:hover{color:#555}.pill-content input[type=range]{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:144px;flex-shrink:0;height:4px;background:#ffffff4d;border-radius:2px;outline:none;flex-grow:0}body.light-theme .pill-content input[type=range]{background:#0003}.pill-content input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:16px;height:16px;background:#fff;border-radius:50%;cursor:pointer;border:none}body.light-theme .pill-content input[type=range]::-webkit-slider-thumb{background:#333}.pill-content input[type=range]::-moz-range-thumb{width:16px;height:16px;background:#fff;border-radius:50%;cursor:pointer;border:none}body.light-theme .pill-content input[type=range]::-moz-range-thumb{background:#333}.pill-content input[type=number]{background:#0000004d;border:1px solid rgba(255,255,255,.3);color:var(--text-light);border-radius:8px;width:50px;padding:.1rem 0;text-align:center;-moz-appearance:textfield;flex-shrink:0;font-size:.9rem;transition:background-color .2s,border-color .2s}body.light-theme .pill-content input[type=number]{background:#ffffff4d;border-color:#0003;color:var(--text-dark)}.pill-content input[type=number]::-webkit-outer-spin-button,.pill-content input[type=number]::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}#widgetLegend{color:#aaa;font-size:.875rem;margin-top:1rem;text-align:center;transition:opacity .3s ease-in-out;height:1.25rem;line-height:1.25rem;pointer-events:none}body.light-theme #widgetLegend{color:#555}.frosted-glass-container.expanded-level-1+#widgetLegend,.frosted-glass-container.expanded-level-2+#widgetLegend{opacity:0}.custom-select-container{position:absolute;top:var(--floater-offset-top);left:var(--floater-offset-left);width:auto;z-index:100;display:flex;align-items:flex-start;gap:15px}#custom-tiling-select{width:350px;flex-shrink:0}button.custom-select-button{box-sizing:border-box;display:flex;justify-content:space-between;align-items:center;width:100%;padding:8px 15px;height:70px;font-size:.9rem;text-align:left;cursor:pointer;transition:border-color .2s,background-color .2s;background-color:#2c2c2cb3;border:1px solid rgba(255,255,255,.2);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);border-radius:10px;gap:15px}body.light-theme button.custom-select-button{background-color:#ffffffb3;border:1px solid rgba(0,0,0,.1);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);color:var(--text-dark)}button.custom-select-button:hover,button.custom-select-button.is-open{background-color:#3c3c3ccc;border-color:#fff6}body.light-theme button.custom-select-button:hover,body.light-theme button.custom-select-button.is-open{background-color:#ffffffe6;border-color:#0003}.custom-select-icon-placeholder{width:36px;height:36px;background-color:#555;border-radius:6px;flex-shrink:0;display:flex;align-items:center;justify-content:center;color:#fff;font-size:1.2rem;overflow:hidden}body.light-theme .custom-select-icon-placeholder{background-color:#ccc;color:#333}.custom-select-icon-placeholder svg{width:100%;height:100%;fill:currentColor}.custom-select-text-group{display:flex;flex-direction:column;flex-grow:1;line-height:1.2}.custom-select-label{font-size:.8rem;color:#aaa;white-space:nowrap}body.light-theme .custom-select-label{color:#555}.custom-select-value{font-size:1.05rem;font-weight:500;color:var(--text-light);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}body.light-theme .custom-select-value{color:var(--text-dark)}.custom-select-caret{transition:transform .2s ease;color:var(--text-light);font-size:1rem;flex-shrink:0}body.light-theme .custom-select-caret{color:var(--text-dark)}.custom-select-button.is-open .custom-select-caret{transform:rotate(180deg)}.custom-select-list{display:none;position:absolute;top:calc(100% + 4px);left:0;right:0;background-color:#1e1e1eb3;border:1px solid rgba(255,255,255,.15);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);border-radius:6px;box-shadow:var(--shadow-dark);padding:6px;z-index:1100;max-height:500px;overflow-y:auto}.custom-select-list.is-open{display:block}body.light-theme .custom-select-list{background-color:#fffc;border:1px solid rgba(0,0,0,.1);box-shadow:var(--shadow-light)}.custom-select-item{padding:10px 12px;border-radius:4px;cursor:pointer;font-size:.9rem;color:var(--text-light);display:flex;align-items:center;gap:12px;transition:background-color .2s,color .2s}body.light-theme .custom-select-item{color:var(--text-dark)}.custom-select-item:hover{background-color:var(--primary-accent);color:#000}.custom-select-item-icon{width:28px;height:28px;background-color:#555;border-radius:4px;flex-shrink:0}body.light-theme .custom-select-item-icon{background-color:#ccc}.tessellate-controls-floater{opacity:0;max-width:0;overflow:hidden;transition:opacity .3s ease,max-width .4s ease-out}.tessellate-controls-floater.visible{opacity:1;max-width:700px}#tessellate-container{padding:10px 20px;gap:20px;background-color:#2c2c2cb3;border:1px solid rgba(255,255,255,.2);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);border-radius:10px;height:auto;min-height:70px;box-sizing:border-box;display:flex;flex-direction:row;justify-content:flex-start;align-items:center}body.light-theme #tessellate-container{background-color:#ffffffb3;border:1px solid rgba(0,0,0,.1)}#tessellate-container .control-row{display:flex;flex-direction:row;align-items:center;gap:20px;font-size:.8rem}.floater-stepper-btn{width:26px;height:26px;background-color:transparent;border:none;border-radius:0;color:var(--text-light);display:flex;align-items:center;justify-content:center;cursor:pointer;transition:color .2s,background-color .2s;font-size:1.1rem;line-height:1;flex-shrink:0;padding:0}body.light-theme .floater-stepper-btn{color:var(--text-dark)}.floater-stepper-btn:hover{color:#fff;background-color:#fff3}body.light-theme .floater-stepper-btn:hover{color:#000;background-color:#0000001a}#tessellate-container .input-group{display:flex;align-items:center;gap:0;border:1px solid rgba(255,255,255,.3);border-radius:6px;background:none;padding:0 6px}body.light-theme #tessellate-container .input-group{border-color:#0003}#tessellate-container label{font-size:.8rem;color:#aaa;flex-shrink:0;padding-right:5px}body.light-theme #tessellate-container label{color:#555}#tessellate-container input[type=number]{width:50px;padding:4px 0;font-size:.8rem;text-align:center;background:none;border:none;color:var(--text-light)}body.light-theme #tessellate-container input[type=number]{color:var(--text-dark)}#tessellate-container .input-group .floater-stepper-btn:first-of-type{border-top-left-radius:4px;border-bottom-left-radius:4px}#tessellate-container .input-group .floater-stepper-btn:last-of-type{border-top-right-radius:4px;border-bottom-right-radius:4px}.hex-button{width:140px;height:50px;display:flex;align-items:center;justify-content:center;gap:10px;font-size:.9rem;font-weight:500;background:#6b72804d;border:1px solid rgba(255,255,255,.2);backdrop-filter:blur(5px);-webkit-backdrop-filter:blur(5px);border-radius:10px;box-shadow:0 4px 16px #0000004d;cursor:pointer;transition:background-color .3s cubic-bezier(.4,0,.2,1);padding:0;flex-shrink:0}body.light-theme .hex-button{background:#dcdcdc66;border-color:#0000001a}.hex-button:hover{background:#6b728080}body.light-theme .hex-button:hover{background:#c8c8c899}.hex-button span{pointer-events:none}.hexagon-wrapper{position:relative;width:25px;height:28.86px;flex-shrink:0}.hexagon{width:25px;height:28.86px;clip-path:polygon(50% 0%,100% 25%,100% 75%,50% 100%,0% 75%,0% 25%);background-color:#fff;position:absolute;top:0;left:0;transform-origin:center;transition-property:transform,opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.6s;transition-delay:0s}body.light-theme .hexagon{background-color:#333}#tessellate-btn .hex-1{transform:scale(1) translateY(0);opacity:1;z-index:10}#tessellate-btn .hex-2,#tessellate-btn .hex-3{transform:scale(.6) translateY(-12px);opacity:0;z-index:5}#tessellate-btn.is-hovering .hex-1{transform:scale(.6) translateY(-12px)}#tessellate-btn.is-hovering .hex-2{transform:scale(.6) translate(-13px,12px);opacity:1}#tessellate-btn.is-hovering .hex-3{transform:scale(.6) translate(13px,12px);opacity:1}#detessellate-btn .hex-1{transform:scale(.6) translateY(-12px);opacity:1;z-index:10}#detessellate-btn .hex-2{transform:scale(.6) translate(-13px,12px);opacity:1;z-index:5}#detessellate-btn .hex-3{transform:scale(.6) translate(13px,12px);opacity:1;z-index:5}#detessellate-btn.is-hovering .hex-1{transform:scale(1) translateY(0)}#detessellate-btn.is-hovering .hex-2,#detessellate-btn.is-hovering .hex-3{transform:scale(.6) translateY(-12px);opacity:0}.hex-button-reverse .hex-1{transform:scale(1) translateY(0);opacity:1;z-index:10}.hex-button-reverse .hex-2,.hex-button-reverse .hex-3{transform:scale(.6) translateY(-12px);opacity:0;z-index:5}@media (max-width: 1024px){.custom-select-container{left:var(--floater-offset-left);top:var(--floater-offset-top)}}@media (max-width: 768px){.custom-select-container{top:75px;left:15px;width:calc(100% - 30px);max-width:none;flex-direction:column}#custom-tiling-select{width:100%}.tessellate-controls-floater.visible{max-width:100%;margin-top:15px}#tessellate-container{width:100%;height:auto;padding:10px;justify-content:space-between;flex-direction:row;min-height:70px;gap:5px}#tessellate-container .control-row{flex-direction:row;gap:10px;flex-wrap:nowrap}#tessellate-container .input-group{gap:3px}#tessellate-container label{font-size:.75rem}#tessellate-container input[type=number]{width:40px;font-size:.75rem}.hex-button{width:45px;height:45px}.frosted-glass-container{width:70px;height:70px;border-radius:35px}.icon-btn{width:50px;height:50px}.frosted-glass-container.expanded-level-1{width:100%;width:calc(100% - 20px);left:10px;bottom:15px;transform:translate(0);padding:0 .5rem;gap:.5rem;height:70px}.frosted-glass-container.expanded-level-2{width:calc(100% - 20px);height:125px;flex-wrap:wrap;padding:.5rem;gap:.5rem;bottom:15px}.pill-content{width:0;gap:.25rem}.frosted-glass-container.expanded-level-1 .angle-pill-content,.frosted-glass-container.expanded-level-2 .angle-pill-content{width:calc(100% - 100px - 1.5rem);opacity:1}.frosted-glass-container.expanded-level-2 .distance-pill-content{width:calc(100% - 1rem);opacity:1;justify-content:center}.frosted-glass-container.expanded-level-1 #distanceToggleButton,.frosted-glass-container.expanded-level-2 #distanceToggleButton{width:50px;opacity:1}.angle-icon{width:32px;height:32px}.pill-content input[type=range]{width:80px}.pill-content input[type=number]{width:40px}#widgetLegend{bottom:90px}.frosted-glass-container.expanded-level-2+#widgetLegend{opacity:0}}.canvas-overlay-buttons{position:absolute;bottom:40px;right:calc(var(--panel-width) + var(--gap) + var(--gap) + 40px);z-index:1001;display:flex;flex-direction:column;gap:15px}.crosshairs-icon{stroke:var(--pill-primary-accent);stroke-width:3.5;transition:opacity .4s ease-in-out;opacity:1}@media (max-width: 768px){.canvas-overlay-buttons{bottom:110px;right:15px}}.icon-btn-svg-wrapper{background:none;border:none;padding:0;margin:0;cursor:pointer;border-radius:50%;display:flex;align-items:center;justify-content:center;width:48px;height:48px;transition:background-color .2s;flex-shrink:0}.icon-btn-svg-wrapper:hover{background-color:#ffffff1a}body.light-theme .icon-btn-svg-wrapper:hover{background-color:#0000001a}.icon-btn-svg-wrapper.active{background-color:#fff3}body.light-theme .icon-btn-svg-wrapper.active{background-color:#0003}.icon-btn-svg-wrapper .angle-icon{pointer-events:none}.angle-presets-overlay{position:fixed;bottom:120px;left:50%;background-color:#4b4b4b4d;backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border:1px solid rgba(100,100,100,.3);box-shadow:0 8px 24px #0000004d;border-radius:12px;padding:10px;display:flex;gap:8px;flex-wrap:wrap;justify-content:center;z-index:1002;opacity:0;visibility:hidden;transform:translate(-50%,10px);transition:opacity .2s ease,visibility .2s ease,transform .2s ease}body.light-theme .angle-presets-overlay{background-color:#ffffff4d;border:1px solid rgba(200,200,200,.3)}.angle-presets-overlay.is-visible{opacity:1;visibility:visible;transform:translate(-50%)}.angle-preset-button{width:44px;height:44px;border-radius:50%;background-color:var(--pill-icon-base);color:var(--text-light);border:1px solid rgba(255,255,255,.1);font-size:.9rem;font-weight:500;cursor:pointer;transition:background-color .2s,transform .1s;display:flex;align-items:center;justify-content:center}.angle-preset-button:hover{background-color:var(--pill-icon-hover)}.angle-preset-button.active{background-color:var(--pill-primary-accent);color:#000}.angle-preset-button:active{transform:scale(.95)}.angle-preset-button svg{width:30px;height:30px;opacity:.7;transition:opacity .2s;pointer-events:none}.angle-preset-button:hover svg{opacity:1}.angle-preset-button.active svg{opacity:1}.braid-preset-button{width:130px;height:50px;border-radius:10px;gap:10px;font-size:.9rem;font-weight:500}.braid-preset-button svg{width:44px;height:44px;flex-shrink:0}.braid-preset-button span{pointer-events:none}#distance-presets-overlay{width:426px}#toggle-rosette-btn.is-active{background-color:var(--pill-primary-accent);border:2px solid white}#toggle-rosette-btn.is-active text{fill:#000}body.light-theme #toggle-rosette-btn.is-active{background-color:var(--pill-primary-accent);border:2px solid #333}body.light-theme #toggle-rosette-btn.is-active text{fill:#fff}
