:root{--bg-color:#1e1e1e;--panel-bg:#252526;--border-color:#3e3e42;--text:#ccc;--text-disabled:#888;--inactive-color:#1a2b1a;--accent:#e67e22;--control-section-bg:#2d2d30;--control-section-border:#3e3e42;--header-text:#aaa;--label-text:#ccc;--text-muted:#888;--input-bg:#3c3c3c;--input-border:#3e3e42;--tool-btn-bg:#3c3c3c;--tool-btn-text:#ccc;--tool-btn-border:#3e3e42;--modal-bg:#252526;--modal-text:#ccc;--splitter-bg:#333;--splitter-hover:#4a4a4b;--bead-count-bg:#2d2d30;--bead-count-border:#3e3e42;--editor-bg:#1e1e1e}*,:before,:after{box-sizing:border-box;-webkit-tap-highlight-color:transparent;-webkit-user-select:none;user-select:none}body{background-color:var(--bg-color);height:100dvh;color:var(--text);flex-direction:column;margin:0;font-family:Segoe UI,Roboto,Helvetica,Arial,sans-serif;display:flex;overflow:hidden}header{background:var(--panel-bg);border-bottom:1px solid var(--border-color);z-index:10;touch-action:none;justify-content:space-between;align-items:center;padding:10px 20px;display:flex}header .header-left,header .header-right{flex:1;align-items:center;display:flex}header .header-left{justify-content:flex-start}header .header-center{justify-content:center;align-items:center;display:flex}header .header-right{justify-content:flex-end;gap:20px}.header-actions{align-items:center;gap:10px;display:flex;position:relative}.header-actions .info-items{align-items:center;gap:10px;display:flex}.header-actions .btn,.header-actions button{padding:5px 10px;font-size:.8rem}.header-actions .tool-btn{background:var(--tool-btn-bg);border:1px solid var(--tool-btn-border);cursor:pointer;border-radius:4px;flex:none;width:34px;height:34px;padding:6px}.header-actions .tool-btn img{pointer-events:none;object-fit:contain;width:100%;height:100%}.header-actions .tool-btn.active{background:var(--accent);border-color:var(--accent)}.header-toolbar{align-items:center;gap:6px;margin-left:25px;display:flex;position:relative}.header-toolbar .toolbar-items{align-items:center;gap:6px;display:flex}.header-toolbar .tool-btn{flex:none;width:34px;height:34px;padding:6px}.header-toolbar .tool-btn img,.header-toolbar .tool-btn svg{pointer-events:none;object-fit:contain;width:100%;height:100%}.header-toolbar .separator{background-color:var(--border-color);width:1px;height:24px;margin:0 8px}h1{text-transform:uppercase;letter-spacing:1px;margin:0 0 0 30px;font-size:1.1rem}h1:before{content:"";background-image:url(logo.0d4e597e.svg);width:34px;height:34px;display:block;position:absolute;top:9px;left:10px}.main-container{flex:auto;min-height:0;display:flex}.tools-sidebar{background:var(--panel-bg);border-right:1px solid var(--border-color);touch-action:pan-y;flex-direction:column;flex:0 0 52px;gap:15px;padding:10px 6px;display:flex;overflow-y:auto}.tools-sidebar .tool-bar{flex-direction:column;gap:6px;display:flex}.tools-sidebar .tool-btn{aspect-ratio:1;flex:none;width:100%;padding:6px}.tools-sidebar .tool-btn img{pointer-events:none;aspect-ratio:1;object-fit:contain;filter:var(--icon-filter,none);display:block}.sidebar{background:var(--panel-bg);border-left:1px solid var(--border-color);touch-action:pan-y;flex-direction:column;flex:0 0 340px;gap:12px;width:340px;padding:15px;display:flex;overflow-y:auto}.control-section{background:var(--control-section-bg);border:1px solid var(--control-section-border);border-radius:6px;padding:10px}.control-section h3{color:var(--header-text);border-bottom:1px solid var(--control-section-border);margin:0 0 8px;padding-bottom:5px;font-size:.85rem}.control-group{flex-direction:column;gap:4px;margin-bottom:8px;display:flex}.control-group:last-child{margin-bottom:0}label{color:var(--label-text);font-size:.75rem;font-weight:700}input[type=text],input[type=number],select,.form-control{border:1px solid var(--input-border);box-sizing:border-box;background:var(--input-bg);width:100%;height:31px;color:var(--text);border-radius:4px;padding:6px;font-size:.9rem}input[type=text]:disabled,input[type=number]:disabled,select:disabled,.form-control:disabled{color:var(--text-disabled);cursor:not-allowed}input[type=checkbox]{-webkit-appearance:none;appearance:none;border:1px solid var(--input-border);background-color:var(--input-bg);cursor:pointer;vertical-align:middle;border-radius:3px;flex-shrink:0;width:16px;height:16px;margin:0;position:relative}input[type=checkbox]:checked{background-color:var(--accent);border-color:var(--accent)}input[type=checkbox]:checked:after{content:"";border:2px solid #fff;border-width:0 2px 2px 0;width:4px;height:9px;position:absolute;top:1px;left:5px;transform:rotate(45deg)}input[type=checkbox]:hover{border-color:var(--accent)}input[type=checkbox]:disabled{opacity:.5;cursor:not-allowed}.mode-switch{border:1px solid var(--accent);border-radius:4px;flex-shrink:0;margin:0 1em;display:flex;overflow:hidden}.mode-switch label{text-align:center;cursor:pointer;background:var(--input-bg);color:var(--accent);flex:1;padding:8px 30px;font-size:.85rem;font-weight:700;transition:all .2s}.mode-switch label:hover{background:var(--splitter-hover)}.mode-switch input{display:none}.mode-switch input:checked+label{background:var(--accent);color:#fff}button,.btn{cursor:pointer;border:none;border-radius:4px;padding:10px;font-weight:700;transition:all .2s}button:hover,.btn:hover{filter:brightness(1.15);transform:translateY(-1px);box-shadow:0 2px 4px #00000026}button:active,.btn:active{box-shadow:none;filter:brightness(.95);transform:translateY(0)}button,.btn{background:var(--accent);color:#fff;text-align:center;text-decoration:none;display:inline-block}button.secondary,.btn.secondary{background:var(--tool-btn-bg);color:var(--tool-btn-text);border:1px solid var(--tool-btn-border)}button.secondary:hover,button.secondary.active,.btn.secondary:hover,.btn.secondary.active{background:var(--splitter-hover);color:#fff}button.secondary.active,.btn.secondary.active{background:var(--accent);border-color:var(--accent)}.palette-grid{grid-template-columns:repeat(auto-fill,minmax(20px,1fr));gap:5px;display:grid}.bead-summary-container{columns:60px auto;column-gap:20px}.color-palette-container{flex-direction:column;gap:10px;margin-bottom:20px;display:flex}.color-palette-container .current-colors{justify-content:space-around;gap:10px;display:flex}.color-palette-container .current-colors .color-wrapper{flex-direction:column;align-items:center;gap:4px;display:flex}.color-palette-container .current-colors .color-wrapper .color-label{color:var(--text-muted);margin-bottom:3px;font-size:.75rem;font-weight:500}.color-palette-container .current-colors .color-display{border:4px solid var(--border-color);cursor:pointer;box-sizing:border-box;width:40px;height:40px}.color-palette-container .current-colors .color-display.foreground{background-color:var(--foreground-color,#e67e22)}.color-palette-container .current-colors .color-display.background{background-color:var(--background-color,#fff)}.color-palette-container .current-colors .color-display.active{border-color:var(--accent);border-radius:4px;transform:scale(1.05)}.color-palette-container .color-picker-area{gap:10px;height:150px;display:flex}.color-palette-container .color-picker-area .color-square{border:1px solid var(--border-color);border-radius:4px;flex-grow:1;position:relative}.color-palette-container .color-picker-area .color-square canvas{touch-action:none;border-radius:4px;width:100%;height:100%;display:block}.color-palette-container .color-picker-area .hue-bar{border:1px solid var(--border-color);border-radius:4px;width:30px;min-width:30px;position:relative}.color-palette-container .color-picker-area .hue-bar canvas{touch-action:none;border-radius:4px;width:100%;height:100%;display:block}.color-swatch{cursor:pointer;border:1px solid #0000001a;border-radius:3px;padding-top:100%;transition:all .15s ease-in-out;position:relative}.color-swatch:hover{border-color:var(--accent);transform:scale(1.05)}.color-swatch.active:after{content:"";border:2px solid var(--accent);box-shadow:0 0 5px var(--accent);border-radius:3px;position:absolute;top:0;bottom:0;left:0;right:0}.color-swatch.project-swatch.selected-for-edit{outline:2px solid var(--accent);transform:scale(1.05)}.editor-area{background:var(--editor-bg);touch-action:none;flex:50%;width:auto;min-width:0;padding:0;display:block;position:relative;overflow:hidden}#tool-help{color:#fff;pointer-events:none;z-index:50;opacity:0;z-index:1000;white-space:nowrap;background:#000c;border:1px solid #ffffff1a;border-radius:4px;padding:8px 12px;font-size:.8rem;transition:opacity .2s;position:absolute;bottom:10px;left:10px;box-shadow:0 2px 5px #0003}#tool-help.visible{opacity:1}#tool-help kbd{background:#444;border:1px solid #666;border-radius:3px;margin:0 2px;padding:2px 4px;font-family:monospace;font-size:.7rem}#tool-help .key-separator{color:#888;margin:0 4px}canvas#gridCanvas{image-rendering:pixelated;touch-action:none;transform-origin:0 0;background:0 0;margin:0;box-shadow:0 0 20px #00000080}.preview-area{touch-action:none;background:#111;flex:50%;min-width:0;position:relative}#scene-container{width:100%;height:100%}#scene-container canvas{width:100%;height:100%;display:block}.overlay-info{color:#fff;pointer-events:none;background:#000c;border:1px solid #ffffff1a;border-radius:4px;padding:8px 12px;font-size:.8rem;position:absolute;bottom:10px;left:10px}.bead-count-item{color:var(--label-text);background:var(--bead-count-bg);border:1px solid var(--bead-count-border);break-inside:avoid;border-radius:4px;align-items:center;gap:6px;margin-bottom:5px;padding:4px 8px;font-size:.85rem;font-weight:700;display:flex}.bead-count-box{border:1px solid #0003;border-radius:3px;width:16px;height:16px}.bead-row-separator{break-inside:avoid;margin-bottom:5px}.bead-row-separator:first-child .bead-row-label{border-top:none;margin-top:0;padding-top:0}.bead-row-label{color:var(--header-text);border-top:1px solid var(--border-color);margin-top:4px;padding-top:4px;font-size:.8rem;font-weight:700;display:block}.splitter-vertical{background:var(--splitter-bg);cursor:col-resize;border-left:1px solid var(--border-color);border-right:1px solid var(--border-color);flex:none;justify-content:center;align-items:center;width:8px;display:flex}.splitter-vertical:after{content:"⋮";color:#aaa;font-size:12px}.splitter-vertical:hover{background:var(--splitter-hover)}.splitter-vertical{touch-action:none}.tool-bar{gap:5px;display:flex}.tool-btn{cursor:pointer;border:none;border-radius:4px;padding:10px;font-weight:700;transition:all .2s}.tool-btn:hover{filter:brightness(1.15);transform:translateY(-1px);box-shadow:0 2px 4px #00000026}.tool-btn:active{box-shadow:none;filter:brightness(.95);transform:translateY(0)}.tool-btn{background:var(--tool-btn-bg);color:var(--tool-btn-text);border:1px solid var(--tool-btn-border);flex:1;padding:8px 4px;font-size:.8rem}.tool-btn.active{background:var(--accent);color:#fff;border-color:var(--accent);box-shadow:inset 0 0 5px #0003,0 1px 2px #0000001a}.tool-btn:disabled,.tool-btn.disabled{opacity:.5;cursor:not-allowed;pointer-events:none}.icon-group{gap:5px;width:100%;display:flex}.icon-btn{cursor:pointer;border:none;border-radius:4px;padding:10px;font-weight:700;transition:all .2s}.icon-btn:hover{filter:brightness(1.15);transform:translateY(-1px);box-shadow:0 2px 4px #00000026}.icon-btn:active{box-shadow:none;filter:brightness(.95);transform:translateY(0)}.icon-btn{background:var(--tool-btn-bg);border:1px solid var(--tool-btn-border);cursor:pointer;flex:1;justify-content:center;align-items:center;padding:5px;transition:all .2s;display:flex}.icon-btn img{pointer-events:none;width:20px;height:20px;display:block}.icon-btn:hover{background:var(--splitter-hover)}.icon-btn.active{background:var(--accent);border-color:var(--accent);box-shadow:inset 0 0 5px #0003}.icon-btn:disabled,.icon-btn.disabled{opacity:.5;cursor:not-allowed;pointer-events:none}.icon-btn.active.disabled{opacity:.5;background:var(--accent);border-color:var(--accent)}.p{margin:0 0 10px}.modal-overlay{z-index:1000;background:#00000080;justify-content:center;align-items:center;display:flex;position:fixed;top:0;bottom:0;left:0;right:0}.modal{background:var(--modal-bg);border-radius:8px;flex-direction:column;width:80vw;max-width:800px;max-height:80vh;padding:20px;display:flex;box-shadow:0 4px 12px #0000004d}.modal.fullscreen-modal{width:95vw;max-width:1200px;height:95vh;max-height:95vh}@media (max-width:768px){.modal.fullscreen-modal{height:80vh;max-height:80vh}}.modal.fullscreen-modal .modal-content{padding-right:10px}.modal.fullscreen-modal .modal-content h2{color:var(--accent);border-bottom:1px solid var(--border-color);flex-shrink:0;margin-top:30px;padding-bottom:5px}.modal.fullscreen-modal .modal-content h3{color:var(--header-text);margin-top:20px}.modal.fullscreen-modal .modal-content ul{padding-left:20px;line-height:1.6}.modal.fullscreen-modal .modal-content li{margin-bottom:5px}.modal.fullscreen-modal .modal-content code{background:var(--input-bg);color:var(--accent);border-radius:3px;padding:2px 5px;font-family:monospace;font-weight:700}.modal.fullscreen-modal .modal-content .key{border:1px solid var(--border-color);background:var(--control-section-bg);text-align:center;min-width:20px;color:var(--text);border-radius:4px;padding:2px 6px;font-family:sans-serif;font-size:.9em;display:inline-block;box-shadow:0 1px 2px #0000004d}.modal.fullscreen-modal .modal-content .section{margin-bottom:40px}.modal.fullscreen-modal .modal-content table{border-collapse:collapse;width:100%;margin-top:10px}.modal.fullscreen-modal .modal-content th,.modal.fullscreen-modal .modal-content td{text-align:left;border-bottom:1px solid var(--border-color);padding:8px}.modal.fullscreen-modal .modal-content th{background-color:var(--control-section-bg);color:var(--accent)}.modal a{color:var(--accent);text-decoration:none}.modal a:hover{text-decoration:underline}.modal h2{color:var(--modal-text);border-bottom:1px solid var(--control-section-border);flex-shrink:0;margin-top:0;padding-bottom:10px;font-size:1.2rem}.modal h3{margin:0 0 10px}.modal .modal-content{flex-direction:column;flex:1;gap:10px;min-height:0;margin-bottom:10px;display:flex;overflow-y:auto}.modal .modal-content p{margin:5px 0}.modal .modal-content p.small{color:var(--text-muted);font-size:.85rem}.modal .modal-content ol{line-height:1.4;margin:0!important}.modal .modal-content label{cursor:pointer;color:var(--modal-text);align-items:center;gap:8px;font-size:.9rem;display:flex}.modal .modal-actions{flex-shrink:0;justify-content:flex-end;gap:10px;display:flex}.modal .modal-actions button{padding:8px 16px;font-size:.9rem}.mobile-only{display:none!important}@media (max-width:1630px){h1{font-size:.9rem}}@media (max-width:1360px){h1{font-size:.6rem}}@media (max-width:1000px){.desktop-only{display:none!important}.mobile-only{display:inline-flex!important}#tool-help{opacity:0!important}header{z-index:1001;gap:10px;padding:5px 10px}header h1{flex-direction:row;flex:none;justify-content:center;align-items:center;width:40px;margin-left:0;font-size:0;display:flex;position:relative}header h1:before{margin:0;top:-16px;left:-3px;transform:none}header .header-toolbar{max-width:none;margin-left:0;padding-bottom:0;position:relative;overflow:visible}header .header-toolbar .toolbar-items{background:var(--panel-bg);border:1px solid var(--border-color);z-index:1000;touch-action:pan-y;border-radius:4px;flex-direction:column;gap:8px;min-width:150px;max-height:calc(100vh - 60px);padding:8px;display:none;position:absolute;top:100%;left:0;overflow-y:auto;box-shadow:0 4px 12px #0000004d}header .header-toolbar .toolbar-items.open{display:flex}header .header-toolbar .toolbar-items .separator{width:100%;height:1px;margin:2px 0}header .header-toolbar .toolbar-items .tool-btn{justify-content:flex-start;align-items:center;gap:10px;width:100%;height:auto;padding:5px 10px;display:flex}header .header-toolbar .toolbar-items .tool-btn:after{content:attr(title);white-space:nowrap;font-size:.9rem}header .header-toolbar .toolbar-items .tool-btn img,header .header-toolbar .toolbar-items .tool-btn svg{flex:0 0 16px;width:16px;height:16px}header .header-center .mode-switch label{padding:4px 8px;font-size:.8rem}header .header-actions .info-items{background:var(--panel-bg);border:1px solid var(--border-color);z-index:1000;touch-action:pan-y;border-radius:4px;flex-direction:column;gap:8px;min-width:150px;max-height:calc(100vh - 60px);padding:8px;display:none;position:absolute;top:100%;right:0;overflow-y:auto;box-shadow:0 4px 12px #0000004d}header .header-actions .info-items.open{display:flex}header .header-actions .info-items .btn,header .header-actions .info-items button{text-align:left;justify-content:flex-start;width:100%}.main-container{position:relative;overflow-x:hidden}.tools-sidebar{flex:0 0 45px;padding:5px 2px}.tools-sidebar .tool-btn{aspect-ratio:1;width:100%;padding:6px}.tools-sidebar .separator{background-color:var(--border-color);flex:0 0 1px;width:calc(100% - 16px);height:1px;margin:4px 8px}.tools-sidebar #mobileColorIndicator{background:0 0;border:none;padding:0;position:relative}.tools-sidebar #mobileColorIndicator .color-bg,.tools-sidebar #mobileColorIndicator .color-fg{border:1px solid var(--tool-btn-border);border-radius:3px;width:60%;height:60%;position:absolute;box-shadow:0 1px 3px #0000004d}.tools-sidebar #mobileColorIndicator .color-bg{z-index:1;background-color:#fff;bottom:10%;right:5%}.tools-sidebar #mobileColorIndicator .color-fg{z-index:2;background-color:#e67e22;top:5%;left:10%}.tools-sidebar #mobileColorIndicator:hover{filter:brightness(1.1)}.sidebar{background:var(--panel-bg);z-index:1001;width:280px;padding-bottom:calc(20px + env(safe-area-inset-bottom));transition:transform .3s;position:absolute;top:0;bottom:0;right:0;transform:translate(100%);box-shadow:-2px 0 10px #00000080}.sidebar.open{transform:translate(0)}.preview-area{z-index:90;background:var(--bg-color);flex:none;display:none;position:absolute;top:0;bottom:0;left:44px;right:0}.preview-area.open{z-index:1000;display:flex;width:auto!important}.preview-area canvas{width:100%!important;height:100%!important}.splitter-vertical{display:none}.editor-area{flex:1}}#dropZone{z-index:2000;pointer-events:none;background:#000c}#dropZone .drop-message{text-align:center;color:#ccc;pointer-events:none}#dropZone .drop-message .drop-icon{width:128px;height:128px;margin-bottom:20px}#dropZone .drop-message h2{margin:0;font-size:24px}