/*!***********************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js!./css/base/themes.css ***!
  \***********************************************************************/:root{--bg-primary:#f5f5f5;--bg-secondary:#fff;--bg-tertiary:#f9f9f9;--text-primary:#333;--text-secondary:#666;--border-color:#ddd;--shadow-color:rgba(0,0,0,.1)}[data-theme=dark]{--bg-primary:#1a1a1a;--bg-secondary:#2d2d2d;--bg-tertiary:#363636;--text-primary:#fff;--text-secondary:#b3b3b3;--border-color:#404040;--shadow-color:rgba(0,0,0,.3)}

/*!*********************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js!./css/base/base.css ***!
  \*********************************************************************/:root{font-size:16px}body{background-color:var(--bg-primary);color:var(--text-primary);font-family:Arial,sans-serif;font-size:1rem;margin:0;padding:20px}@media screen and (max-width:2560px){:root{font-size:14.4px}}@media screen and (max-width:1920px){:root{font-size:12px}}input[type=text]{background-color:var(--bg-secondary);border:1px solid var(--border-color);border-radius:4px;color:var(--text-primary);margin-right:10px;padding:8px;width:350px}input[type=text]::placeholder{color:var(--text-secondary)}.error-message{background-color:#fff3cd;border:1px solid #ffeeba;border-radius:4px;color:#856404;display:none;margin:15px auto;max-width:80%;opacity:0;padding:10px 15px;text-align:center;transform:translateY(-10px);transition:opacity .3s,transform .3s}.error-message:not([style*="display: none"]){opacity:1;transform:translateY(0)}.beta-notice{display:none;filter:contrast(150%);height:auto;opacity:.15;pointer-events:none;position:fixed;right:20px;top:20px;width:200px;z-index:1000}body[data-env=dev] .beta-notice{display:block}.container{max-width:min(1620px,90vw)}.buppad-image{border-radius:8px;cursor:pointer;display:block;height:auto;margin:1em auto;max-width:300px;transition:transform .2s;width:100%}.buppad-image:hover{transform:scale(1.02)}

/*!*****************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js!./css/base/base-buttons.css ***!
  \*****************************************************************************/button{background-color:#4caf50;border:none;border-radius:4px;color:#fff;cursor:pointer;font-family:Arial,sans-serif;font-size:1rem;font-weight:400;line-height:1.5;padding:8px 16px;transition:all .2s}button:hover{background-color:#45a049}button:disabled{background-color:#ccc;cursor:not-allowed;opacity:.6}

/*!******************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js!./css/buttons/ui-buttons.css ***!
  \******************************************************************************/.theme-toggle{align-items:center;background-color:var(--bg-secondary);border:1px solid var(--border-color);border-radius:4px;box-sizing:border-box;color:var(--text-primary);cursor:pointer;display:flex;font-size:1rem;gap:8px;height:36px;line-height:1.5;margin:0;padding:8px 16px}.theme-toggle:hover{background-color:var(--bg-tertiary)}.help-button{align-items:center;background-color:#2196f3;border:1px solid #2196f3;border-radius:4px;box-sizing:border-box;color:#fff;cursor:pointer;display:flex;font-size:1rem;gap:8px;height:36px;line-height:1.5;margin:0;padding:8px 16px}.help-button:hover{background-color:#1976d2;border-color:#1976d2}.help-button i{font-size:1em}

/*!**********************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js!./css/buttons/action-buttons.css ***!
  \**********************************************************************************/.cancel-button{line-height:20px;padding:8px 12px}.cancel-button i{font-size:14px}.save-button{background-color:#4caf50}.save-button:hover{background-color:#45a049}.download-button{margin:0 6px}

/*!********************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js!./css/buttons/auth-buttons.css ***!
  \********************************************************************************/.twitch-button{align-items:center;display:flex;gap:8px;line-height:15.5px;padding:8px 16px}.twitch-button:hover{background-color:#7d2eff}.twitch-button i{font-family:Font Awesome\ 6 Brands;font-size:14px}.twitch-button span{font-family:Arial,sans-serif;font-size:14px;font-weight:400}

/*!************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js!./css/buttons/template-buttons.css ***!
  \************************************************************************************/button.render-template-button{align-items:center!important;background-color:#4caf50!important;border:none!important;border-radius:4px!important;color:#fff!important;cursor:pointer!important;display:inline-flex!important;font-size:14px!important;justify-content:center!important;margin:0 6px!important;min-width:0!important;opacity:1!important;padding:8px 12px!important;pointer-events:auto!important;position:relative!important;transition:background-color .2s!important;width:auto!important;z-index:20!important}button.render-template-button:hover{background-color:#45a049!important}button[onclick*=finalizeTemplate]{align-items:center;background-color:#4caf50;border:none;border-radius:4px;color:#fff;cursor:pointer;display:inline-flex;font-size:14px;justify-content:center;margin:10px 0;min-width:0;padding:8px 12px;transition:all .2s;width:auto}button[onclick*=finalizeTemplate]:hover{background-color:#45a049;transform:translateY(-1px)}

/*!*******************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js!./css/buttons/nav-buttons.css ***!
  \*******************************************************************************/.tab-button{background-color:var(--bg-tertiary);border:none;border-radius:4px;color:var(--text-secondary);cursor:pointer;flex:1;padding:8px 16px;text-align:center;transition:all .2s}.tab-button.active{background-color:#4caf50;color:#fff}.tab-button:disabled{cursor:not-allowed;opacity:.6;pointer-events:none}

/*!**********************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js!./css/buttons/filter-buttons.css ***!
  \**********************************************************************************/

/*!*********************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js!./css/layouts/button-layout.css ***!
  \*********************************************************************************/.header-buttons{margin-top:15px}.header-buttons,.modal-header-buttons{align-items:center;display:flex;gap:8px}.modal-header-buttons button{align-items:center;display:flex;font-size:14px;height:36px;justify-content:center;line-height:20px;padding:8px 16px}

/*!***************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js!./css/buttons/buttons.css ***!
  \***************************************************************************/


/*!****************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js!./css/base/base-modals.css ***!
  \****************************************************************************/.modal-overlay{align-items:center;backdrop-filter:blur(2px);background-color:rgba(0,0,0,.5);bottom:0;display:none;justify-content:center;left:0;position:fixed;right:0;top:0;z-index:1000}.modal-overlay[style*="display: flex"]{display:flex!important}.modal{border:1px solid var(--border-color);border-radius:12px;box-shadow:0 4px 20px rgba(0,0,0,.15);flex-direction:column;max-height:80vh;max-width:80%;min-width:400px}.modal,.modal-header{background-color:var(--bg-primary);display:flex}.modal-header{align-items:center;border-bottom:1px solid var(--border-color);border-top-left-radius:12px;border-top-right-radius:12px;justify-content:space-between;padding:20px 24px;position:sticky;top:0;z-index:1}.modal-header h3{font-size:1.4em;gap:12px}.modal-header h3 i{color:#4caf50}.modal-close{align-items:center;background-color:#dc3545;border:none;border-radius:4px;color:#fff;cursor:pointer;display:flex;justify-content:center;padding:8px 12px;transition:background-color .2s ease}.modal-close:hover{background-color:#c82333}.modal-close i{font-size:1.2em}@media (max-width:768px){.modal{max-height:90vh;max-width:95%;min-width:unset;width:95%}.modal-close{min-height:44px;min-width:44px;padding:12px}.modal-close i{font-size:1.4em;pointer-events:none}.modal-header{padding:16px}}.modal-content{position:relative}.modal-content.scrollable{flex-grow:1;overflow-y:auto;scrollbar-color:var(--border-color) transparent;scrollbar-width:thin}.modal-content:hover{scrollbar-color:#888 transparent}

/*!***************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js!./css/modals/frame-selector-modal.css ***!
  \***************************************************************************************/#frameSelectorModal{z-index:100001}#frameSelectorModal .modal{display:flex;flex-direction:column;max-height:90vh;max-width:1200px;width:90%}#frameSelectorModal .modal-header{flex-shrink:0;padding:16px 24px;position:relative}#frameSelectorModal .modal-close{align-items:center;background-color:#dc3545;border:none;border-radius:4px;color:#fff;cursor:pointer;display:flex;height:44px;justify-content:center;padding:0;position:absolute;right:16px;top:50%;transform:translateY(-50%);transition:background-color .2s;width:44px}#frameSelectorModal .modal-close:hover{background-color:#c82333}#frameSelectorModal .modal-content{flex:1;max-height:calc(90vh - 120px);min-height:0;overflow-x:hidden;overflow-y:auto;position:relative;-webkit-overflow-scrolling:touch}#frameSelectorContainer,#frameSelectorModal .modal-content{scrollbar-color:var(--border-color) transparent;scrollbar-width:thin}#frameSelectorContainer{overflow:auto;padding:24px}#frameSelectorContainer:hover{scrollbar-color:#888}#frameSelectorContainer[style*="display: none"]{height:0;padding:0;position:absolute}#frameSelectorModal #downloadSection{padding:24px}#frameSelectorModal #templatePreview{display:block;height:auto;margin:0 auto 24px;max-width:800px;width:100%}#frameSelectorModal .template-controls{border-top:1px solid var(--border-color);display:flex;flex-direction:column;gap:16px;margin:0 auto;max-width:400px;padding:16px}#frameSelectorModal .toggle-controls{margin-bottom:16px}#frameSelectorModal .toggle-controls-table{border-collapse:separate;border-spacing:12px 8px;width:100%}#frameSelectorModal .toggle-cell{text-align:right;vertical-align:middle;width:60px}#frameSelectorModal .label-cell{padding-right:24px;text-align:left;vertical-align:middle;white-space:nowrap}#frameSelectorModal .input-cell{vertical-align:middle;width:80px}#frameSelectorModal input[type=number]{background:var(--bg-primary);border:1px solid var(--border-color);border-radius:4px;color:var(--text-primary);padding:4px 8px;text-align:center;width:100%}.render-notice{background-color:#fff3cd;border:1px solid #ffeeba;border-radius:4px;color:#856404;font-size:14px;margin:16px 6px;padding:8px 12px;text-align:center}[data-theme=dark] .render-notice{background-color:#2c2a25;border-color:#6b6343;color:#ffd866}#frameSelectorModal .render-template-button{align-items:center;background-color:#4caf50;border:none;border-radius:4px;color:#fff;cursor:pointer;display:inline-flex;font-size:14px;justify-content:center;margin:16px 6px 0;padding:8px 12px;transition:background-color .2s}#frameSelectorModal .render-template-button:hover{background-color:#45a049}.action-buttons{background:var(--bg-primary);border-bottom:1px solid var(--border-color);display:flex;flex-shrink:0;gap:8px;justify-content:flex-end;padding:16px 24px;position:sticky;top:0;z-index:1}.cancel-button{align-items:center;background-color:#dc3545;border:none;border-radius:4px;color:#fff;cursor:pointer;display:inline-flex;font-size:14px;justify-content:center;min-height:44px;min-width:44px;padding:8px 16px;touch-action:manipulation;transition:background-color .2s}.cancel-button:hover{background-color:#c82333}.back-button,.continue-button{align-items:center;border-radius:4px;cursor:pointer;display:inline-flex;font-size:14px;justify-content:center;min-height:44px;min-width:44px;padding:8px 16px;touch-action:manipulation;transition:background-color .2s}@media (max-width:768px){#frameSelectorModal .modal{border-radius:0;height:100%;max-height:none;width:100%}.action-buttons{justify-content:stretch;padding:12px 16px}#frameSelectorModal .back-button,#frameSelectorModal .cancel-button,#frameSelectorModal .continue-button{flex:1 1 0;justify-content:center;min-width:0}#frameSelectorContainer{padding:16px}.frame-selector{gap:8px;padding:8px}.frame-selector .frame-wrapper{height:44px;width:44px}}.continue-button{background-color:#4caf50;border:none;color:#fff}.continue-button:hover{background-color:#45a049}.back-button{background-color:var(--bg-secondary);border:1px solid var(--border-color);color:var(--text-primary)}.back-button:hover{background-color:var(--bg-tertiary)}.frame-selector-placeholder{animation:pulse 1.5s infinite;background:rgba(0,0,0,.1);border-radius:4px;height:70px;margin-bottom:10px}.frame-selector{display:flex;gap:10px;margin-bottom:10px;overflow-x:auto;-webkit-overflow-scrolling:touch}.frame-selector .frame-wrapper{align-items:center;background:var(--bg-primary);border-radius:4px;display:flex;flex-shrink:0;height:50px;justify-content:center;padding:2px;width:50px}.frame-selector img{border:2px solid transparent;border-radius:2px;cursor:pointer;height:auto;max-height:100%;max-width:100%;object-fit:contain;width:auto}.frame-selector img.selected{border-color:#007bff}

/*!*****************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js!./css/modals/help-modal.css ***!
  \*****************************************************************************/.help-modal{width:700px}.modal-content.about-content,.modal-content.help-content{flex-grow:1;overflow-y:auto;padding:24px;scrollbar-color:var(--border-color) transparent;scrollbar-width:thin}.about-content,.help-content{display:flex;flex-direction:column;gap:24px}.about-content a,.help-content a{color:#2196f3;text-decoration:none;transition:color .2s}.about-content a:hover,.help-content a:hover{color:#1976d2;text-decoration:underline}[data-theme=dark] .about-content a,[data-theme=dark] .help-content a{color:#64b5f6}[data-theme=dark] .about-content a:hover,[data-theme=dark] .help-content a:hover{color:#90caf9}.help-section{background:var(--bg-secondary);border-radius:12px;box-shadow:0 2px 8px rgba(0,0,0,.05);padding:24px}.help-section h4{align-items:center;color:var(--text-primary);display:flex;font-size:1.2em;gap:10px;margin:0 0 16px;transition:transform .2s ease}.help-section h4:hover{transform:translateY(-2px)}.help-section h4 i{color:#4caf50}.help-section p{color:var(--text-secondary);line-height:1.6;margin:0;transition:transform .2s ease}.help-section p:hover{transform:translateY(-2px)}.help-section ul{margin:0;padding-left:20px}.help-section li{color:var(--text-secondary);line-height:1.6;margin:8px 0;transition:transform .2s ease}.help-section li:hover{transform:translateY(-2px)}.help-features,.help-steps{display:flex;flex-direction:column;gap:12px}.help-feature,.help-step{align-items:center;background:var(--bg-primary);border-radius:8px;display:flex;gap:16px;padding:12px 16px;transition:transform .2s ease}.help-feature:hover,.help-step:hover{transform:translateX(4px)}.help-feature i,.help-step i{align-items:center;color:#4caf50;display:flex;font-size:1.1em;height:24px;justify-content:center;width:24px}.shortcuts{margin-top:auto}.shortcut-grid{display:flex;flex-direction:column;gap:8px;margin-top:16px}.shortcut{align-items:center;background:var(--bg-primary);border-radius:8px;display:flex;padding:8px 12px;transition:transform .2s ease}.shortcut:hover{transform:translateY(-2px)}.shortcut-keys{align-items:center;display:flex;gap:8px;justify-content:flex-end;margin-right:24px;min-width:180px}.shortcut-desc{flex:1}kbd{align-items:center;background-color:var(--bg-primary);border:1px solid var(--border-color);border-radius:6px;box-shadow:0 2px 0 var(--border-color);color:#4caf50;display:inline-flex;font-family:monospace;font-size:.9em;justify-content:center;min-width:20px;padding:4px 8px}

/*!************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js!./css/modals/save-layout-modal.css ***!
  \************************************************************************************/.save-layout-modal{transform:translateY(0);transition:opacity .3s ease,transform .3s ease;width:min(400px,90vw);will-change:opacity,transform}.save-layout-form{background:none;box-sizing:border-box;display:flex!important;flex-direction:column;gap:16px;margin:0;padding:20px;width:100%}#saveLayoutModal{transition:opacity .3s ease,visibility .3s ease;will-change:opacity,visibility;-webkit-tap-highlight-color:transparent;z-index:100000}.save-layout-form label{color:var(--text-primary);display:block;font-weight:700;margin-bottom:4px;user-select:none}.save-layout-form input[type=text]{-webkit-appearance:none;appearance:none;background-color:var(--bg-secondary);border:1px solid var(--border-color);border-radius:4px;box-sizing:border-box;color:var(--text-primary);font-size:16px;margin:0;min-height:44px;padding:8px 12px;width:100%}.save-layout-form .modal-buttons{display:flex;gap:10px;justify-content:flex-end;margin-top:16px}.save-layout-form .modal-buttons button{border-radius:4px;font-size:16px;min-height:44px;min-width:80px;padding:10px 16px}.save-layout-form .modal-buttons button,.save-layout-modal .modal-close{border:none;cursor:pointer;touch-action:manipulation;transition:background-color .2s ease;user-select:none}.save-layout-modal .modal-close{align-items:center;background:transparent;border-radius:4px;color:var(--text-primary);display:flex;height:44px;justify-content:center;padding:0;width:44px}.save-layout-modal .modal-close:hover{background-color:rgba(255,0,0,.1)}.save-layout-modal .modal-close i{font-size:20px;pointer-events:none}.save-layout-form .save-button{background-color:#28a745;color:#fff}.save-layout-form .save-button:hover{background-color:#218838}.save-layout-form .cancel-button{background-color:#dc3545;color:#fff}.save-layout-form .cancel-button:hover{background-color:#c82333}@media (hover:none){.save-layout-form .save-button:active{background-color:#218838}.save-layout-form .cancel-button:active{background-color:#c82333}.save-layout-modal .modal-close:active{background-color:rgba(255,0,0,.1)}}@media (max-width:480px){.save-layout-form{gap:12px;padding:16px}.save-layout-form .modal-buttons{gap:8px}.save-layout-form .modal-buttons button{flex:1;min-height:48px}}.save-layout-modal *{-webkit-touch-callout:none;-webkit-user-select:none;user-select:none}.save-layout-modal input{-webkit-touch-callout:default;-webkit-user-select:text;user-select:text}

/*!********************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js!./css/modals/loading-modal.css ***!
  \********************************************************************************/.loading-modal{background:var(--bg-primary)!important;border:1px solid var(--border-color);border-radius:4px;box-shadow:0 4px 6px rgba(0,0,0,.1)!important;max-width:400px}.loading-content{padding:2rem}.loading-container{align-items:center;display:flex;flex-direction:column;text-align:center}.loading-container p{color:var(--text-color);font-size:1.1rem;margin:0}.modal-header{background:var(--bg-secondary)!important;border-bottom:1px solid var(--border-color)!important;border-top-left-radius:4px;border-top-right-radius:4px;padding:1rem}.modal-header h3{align-items:center;color:var(--text-color);display:flex;font-size:1.2rem;gap:.5rem;margin:0}#loadingModal{background:rgba(0,0,0,.5)!important;bottom:0;left:0;position:fixed!important;right:0;top:0;transition:visibility 0s linear .3s,opacity .3s;visibility:visible;z-index:99999!important}#loadingModal[style*="display: none"]{opacity:0!important;visibility:hidden!important}.emote-confetti{animation:confetti-fall 1.5s cubic-bezier(.45,0,.55,1) forwards;backface-visibility:hidden;filter:drop-shadow(0 0 3px rgba(255,255,255,.2));height:72px;object-fit:contain;pointer-events:none;position:fixed;transform-origin:center;width:72px;will-change:transform;z-index:100000}@keyframes confetti-fall{0%{opacity:1;transform:translate(-50%,-50%) scale(.5) rotate(0deg)}to{opacity:0;transform:translate(var(--end-x),var(--end-y)) scale(1) rotate(var(--rotation))}}.loading-spinner{animation:spin 1s linear infinite;border-top:6px solid var(--border-color);border:6px solid var(--border-color);border-radius:50%;border-top-color:var(--primary-color);height:60px;margin-bottom:1.5rem;width:60px}@keyframes spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}

/*!************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js!./css/modals/layer-input-modal.css ***!
  \************************************************************************************/#layer-input-modal{background-color:var(--bg-primary);border:1px solid var(--border-color);border-radius:12px;box-shadow:0 4px 20px rgba(0,0,0,.15);color:var(--text-primary);display:flex;flex-direction:column;height:600px;max-height:90vh;max-width:90vw;overflow:hidden;position:relative;width:800px}#layer-input-modal-overlay{align-items:center;backdrop-filter:blur(2px);background-color:rgba(0,0,0,.5);bottom:0;display:none;justify-content:center;left:0;position:fixed;right:0;top:0;z-index:1000}#layer-input-modal-overlay.active{display:flex}#layer-input-modal-overlay[style*="display: flex"]{display:flex!important}#layer-input-modal .modal-content{background-color:var(--bg-primary);display:flex;flex-direction:column;height:100%;padding:0;width:100%}#layer-input-modal .modal-header{align-items:center;border-bottom:1px solid var(--border-color);display:flex;justify-content:space-between;padding:20px 24px}#layer-input-modal .modal-header h2{color:var(--text-primary);font-size:1.5em;margin:0}#layer-input-modal .modal-close{align-items:center;background-color:#dc3545;border:none;border-radius:4px;color:#fff;cursor:pointer;display:flex;justify-content:center;padding:8px 12px;transition:background-color .2s ease}#layer-input-modal .modal-close:hover{background-color:#c82333}#layer-input-modal .modal-body{background-color:var(--bg-primary);flex:1;overflow-y:auto;padding:24px}#layer-input-modal .layer-info{background:var(--bg-secondary);border-radius:8px;box-shadow:0 2px 4px rgba(0,0,0,.1);margin-bottom:24px;padding:16px}#layer-input-modal .layer-info h3{color:var(--text-primary);font-size:1.2em;margin:0 0 10px}#layer-input-modal .layer-info p{color:var(--text-secondary);font-size:.95em;margin:0}#layer-input-modal .shortcuts-info{border-top:1px solid var(--border-color);margin-top:16px;padding-top:16px}#layer-input-modal .shortcuts-info p{font-weight:600;margin-bottom:8px}#layer-input-modal .shortcuts-info ul{display:grid;gap:8px;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));list-style:none;margin:0;padding:0}#layer-input-modal .shortcuts-info li{align-items:center;color:var(--text-secondary);display:flex;font-size:.9em;gap:8px}#layer-input-modal kbd{align-items:center;background:var(--bg-primary);border:1px solid var(--border-color);border-radius:4px;box-shadow:0 1px 1px rgba(0,0,0,.2);color:var(--text-primary);display:inline-flex;font-family:monospace;font-size:.85em;justify-content:center;min-width:20px;padding:2px 6px;text-align:center}#layer-input-modal .input-section{margin-bottom:24px;position:relative}#layer-input-modal .input-section label{color:var(--text-primary);display:block;font-weight:500;margin-bottom:8px}#layer-input-modal .input-row{align-items:center;display:flex;gap:12px}#layer-input-modal #emote-input{background:var(--bg-primary);border:2px solid var(--border-color);border-radius:6px;color:var(--text-primary);font-size:14px;height:36px;padding:8px 12px;transition:all .2s ease;width:150px}#layer-input-modal #emote-input:hover{border-color:var(--accent-color-hover)}#layer-input-modal #emote-input:focus{border-color:var(--accent-color);box-shadow:0 0 0 1px var(--accent-color);outline:none}#layer-input-modal .emote-suggestions{background:var(--bg-primary);border:1px solid var(--border-color);border-radius:6px;box-shadow:0 4px 12px rgba(0,0,0,.15);margin-top:4px;max-height:300px;overflow-y:auto;position:absolute;width:150px;z-index:1100}#layer-input-modal .suggestion-item{align-items:center;cursor:pointer;display:flex;gap:8px;padding:8px 12px;transition:background-color .2s ease}#layer-input-modal .suggestion-item.selected,#layer-input-modal .suggestion-item:hover{background-color:var(--bg-secondary)}#layer-input-modal .suggestion-item img{border-radius:2px;height:24px;width:24px}#layer-input-modal .suggestion-item span{color:var(--text-primary);font-size:14px}#layer-input-modal .button-group{display:flex;gap:8px}#layer-input-modal button{align-items:center;border:1px solid transparent;border-radius:6px;cursor:pointer;display:inline-flex;font-size:14px;font-weight:500;height:36px;justify-content:center;min-width:80px;padding:0 16px;transition:all .2s ease}#layer-input-modal .primary-btn{background-color:var(--accent-color);border-color:var(--accent-color);color:var(--text-on-accent)}#layer-input-modal .primary-btn:hover{background-color:var(--accent-color-hover);border-color:var(--accent-color-hover)}#layer-input-modal .secondary-btn{background-color:var(--bg-secondary);border-color:var(--border-color);color:var(--text-primary)}#layer-input-modal .secondary-btn:hover{background-color:var(--bg-hover);border-color:var(--accent-color)}#layer-input-modal .accent-btn{background-color:var(--accent-color);border-color:var(--accent-color);color:var(--text-on-accent)}#layer-input-modal .accent-btn:hover{background-color:var(--accent-color-hover);border-color:var(--accent-color-hover)}#layer-input-modal .progress-section{border-top:1px solid var(--border-color);margin-top:24px;padding-top:24px}#layer-input-modal .progress-bar{background:var(--bg-secondary);border-radius:10px;box-shadow:inset 0 1px 2px rgba(0,0,0,.1);height:8px;margin-bottom:10px;overflow:hidden;width:100%}#layer-input-modal #progress-fill{background:var(--accent-color);border-radius:10px;height:100%;transition:width .3s ease;width:.8%}#layer-input-modal #progress-fill.started{animation:rainbow-progress 2s linear infinite;animation:progress-animation 1s linear infinite,rainbow-progress 2s linear infinite;background:linear-gradient(90deg,red,#ff8000 14.28%,#ff0 28.57%,#80ff00 42.85%,#0f0 57.14%,#0ff 71.42%,#0080ff 85.71%,#8000ff);background-image:linear-gradient(45deg,hsla(0,0%,100%,.15) 25%,transparent 0,transparent 50%,hsla(0,0%,100%,.15) 0,hsla(0,0%,100%,.15) 75%,transparent 0,transparent),linear-gradient(90deg,red,#ff8000 14.28%,#ff0 28.57%,#80ff00 42.85%,#0f0 57.14%,#0ff 71.42%,#0080ff 85.71%,#8000ff);background-size:200% 100%;background-size:20px 20px,200% 100%}@keyframes rainbow-progress{0%{background-position:20px 0,0 50%}to{background-position:20px 0,200% 50%}}#layer-input-modal .progress-section p{color:var(--text-secondary);font-size:.9em;margin:0;text-align:right}

/*!*************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js!./css/modals/modals.css ***!
  \*************************************************************************/


/*!****************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js!./css/base/base-layout.css ***!
  \****************************************************************************/.container{box-sizing:border-box;margin:0 auto;max-width:min(1650px,90vw);padding:0 clamp(10px,1vw,15px);position:relative}.workspace{display:grid;gap:clamp(15px,1.5vw,20px);grid-template-columns:50% 50%;max-width:min(1600px,90vw);position:relative;width:100%;z-index:1}@media screen and (max-width:768px){.workspace{gap:15px;grid-template-columns:1fr}.container{padding:0 10px}}@media screen and (max-width:480px){.workspace{gap:10px}}

/*!*********************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js!./css/layouts/header-layout.css ***!
  \*********************************************************************************/.header{align-items:center;display:flex;flex-direction:column;margin-bottom:30px;position:relative;text-align:center;z-index:1}.header h1{color:var(--text-primary);margin-bottom:10px}.header p{color:var(--text-secondary);margin:0}

/*!**********************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js!./css/layouts/section-layout.css ***!
  \**********************************************************************************/.emote-picker,.layout-section{background-color:var(--bg-secondary);border-radius:8px;box-shadow:0 2px 4px var(--shadow-color);box-sizing:border-box;max-width:100%;overflow:hidden;padding:15px;width:100%}.layout-header{margin-bottom:15px;text-align:center}.saved-layouts-header h5{margin:0}.controls{flex-wrap:wrap}.layout-section .keycap-grid+.controls button{flex:0 0 auto!important;min-width:0!important;width:auto!important}.layout-section .tab-content{width:100%}.emote-picker .emote-grid,.layout-section .tab-content{flex:1;overflow-y:auto;-webkit-overflow-scrolling:touch}@media screen and (max-width:768px){.emote-picker,.layout-section{max-height:80vh;padding:12px}.controls{gap:8px}.controls button{min-height:44px;padding:8px 16px}.emote-picker .emote-grid,.layout-section .tab-content{max-height:calc(70vh - 60px)}}@media screen and (max-width:480px){.emote-picker,.layout-section{padding:10px}.controls{gap:6px}}

/*!******************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js!./css/layouts/tab-layout.css ***!
  \******************************************************************************/.tab-buttons{display:flex;gap:10px;margin-bottom:15px;width:100%}.tab-buttons button{flex:1;width:100%}.tab-content{display:none;width:100%}.tab-content.active{display:block}.tab-content .controls{display:flex;gap:10px;justify-content:center;width:100%}.tab-content .controls button{flex:1;width:100%}

/*!***********************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js!./css/layouts/template-layout.css ***!
  \***********************************************************************************/#templatePreview{border:1px solid var(--border-color);border-radius:4px;display:none;margin-top:20px;max-width:100%}#downloadSection{margin-top:20px;text-align:center}.download-button,.print-button{align-items:center;background-color:#4caf50;border:none;border-radius:4px;color:#fff;cursor:pointer;display:inline-flex;font-family:Arial,sans-serif;font-weight:400;justify-content:center;margin:0 6px;padding:8px 16px;text-decoration:none;transition:all .2s}.download-button:hover,.print-button:hover{background-color:#45a049}.download-button i,.print-button i{margin-right:8px}.print-instructions{background-color:var(--bg-tertiary);border-radius:4px;margin:20px auto;max-width:600px;padding:15px;text-align:left}.print-instructions h3{color:var(--text-primary);margin-top:0}.print-instructions ul{color:var(--text-secondary);margin:10px 0;padding-left:20px}.print-instructions li{margin:5px 0}@media print{@page{size:letter;margin:0}body,html{height:100%;margin:0!important;padding:0!important}body *{visibility:hidden}#downloadSection,#templatePreview{height:100%;left:0;margin:0;padding:0;position:absolute;top:0;visibility:visible;width:100%}#templatePreview{height:auto;max-height:100%;max-width:100%;object-fit:contain;width:auto}}

/*!*****************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js!./css/layouts/frame-selector-layout.css ***!
  \*****************************************************************************************/.frame-selector{background-color:var(--bg-tertiary);border-radius:8px;box-shadow:0 1px 3px var(--shadow-color);margin:10px 0;padding:10px}.frame-selector img{background-color:var(--bg-secondary);border-radius:4px;padding:2px;transition:all .2s}.frame-selector img:hover{box-shadow:0 2px 5px var(--shadow-color);transform:scale(1.1)}div[style*="color: #666"]{background-color:var(--bg-tertiary);border-radius:4px;margin:10px 0;padding:10px;text-align:center}

/*!*********************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js!./css/layouts/import-export.css ***!
  \*********************************************************************************/.import-overlay{background:rgba(0,0,0,.7);bottom:0;display:none;left:0;opacity:0;pointer-events:none;position:fixed;right:0;top:0;transition:opacity .3s ease;z-index:9999}.import-overlay.active{display:flex;opacity:1}.import-overlay-content{background:hsla(0,0%,100%,.1);border:2px dashed #fff;border-radius:10px;color:#fff;font-size:24px;left:50%;padding:40px;position:absolute;text-align:center;top:50%;transform:translate(-50%,-50%)}.import-overlay-content i{color:#fff;display:block;font-size:48px;margin-bottom:20px}[data-theme=dark] .import-overlay{background:rgba(0,0,0,.8)}[data-theme=dark] .import-overlay-content{background:hsla(0,0%,100%,.05)}

/*!***************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js!./css/layouts/layouts.css ***!
  \***************************************************************************/


/*!*****************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js!./css/components/search.css ***!
  \*****************************************************************************/.search-section{background-color:var(--bg-secondary);border-radius:8px;box-shadow:0 2px 4px var(--shadow-color);box-sizing:border-box;margin-bottom:20px;max-width:100%;padding:20px;position:relative;width:100%;z-index:1}.search-section>div{align-items:center;display:flex;gap:10px;justify-content:center}.streamer-section{margin-top:10px}.streamer-toggle{background-color:var(--bg-tertiary);border:1px solid var(--border-color);border-radius:8px;color:var(--text-primary);cursor:pointer;display:none;font-size:14px;padding:10px 15px;position:relative;text-align:left;transition:all .2s;width:100%}.streamer-toggle:after{content:"▼";position:absolute;right:15px;top:50%;transform:translateY(-50%) rotate(0deg);transition:transform .3s ease}.streamer-toggle.collapsed:after{transform:translateY(-50%) rotate(270deg)}.streamer-list{display:flex;flex-wrap:wrap;gap:8px;justify-content:center;margin-top:10px}@media screen and (max-width:768px){.search-section{padding:15px}.search-section>div{align-items:stretch;flex-direction:column;gap:12px}.search-section input[type=text]{box-sizing:border-box;font-size:16px;max-width:100%;min-height:44px;padding:8px 12px;width:100%}.search-section button{justify-content:center;min-height:44px;width:100%}.streamer-toggle{display:block;min-height:44px}.streamer-list{display:none;opacity:0;transform:translateY(-10px);transition:opacity .3s ease,transform .3s ease}.streamer-list.visible{display:flex;margin-top:10px;max-height:300px;opacity:1;overflow-y:auto;transform:translateY(0)}}@media screen and (max-width:480px){.search-section{padding:12px}.search-section>div{gap:10px}}.streamer-item{align-items:center;background-color:var(--bg-tertiary);border:1px solid var(--border-color);border-radius:15px;color:var(--text-primary);cursor:pointer;display:flex;gap:8px;padding:4px 12px;transition:all .2s}.streamer-item:hover{background-color:#4caf50;border-color:#4caf50;color:#fff}.streamer-item .remove-streamer{background:none;border:none;color:inherit;cursor:pointer;font-size:16px;height:16px;justify-content:center;line-height:1;opacity:.7;padding:0;width:16px}.streamer-item .remove-streamer:hover{opacity:1}.streamer-item.active{background-color:#4caf50;border-color:#4caf50;color:#fff}

/*!*******************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js!./css/emotes/emote-search.css ***!
  \*******************************************************************************/.emote-search{display:flex;flex-direction:column;gap:12px;margin-bottom:15px;padding:0 8px}.search-row{align-items:center;display:flex;gap:8px}.emote-search input{background-color:var(--bg-secondary);border:1px solid var(--border-color);border-radius:4px;color:var(--text-primary);flex-shrink:0;font-size:14px;padding:8px 12px;transition:border-color .2s;width:120px}.emote-search input:focus{border-color:#4caf50;outline:none}.filter-toggle-button{background-color:var(--bg-secondary);border:1px solid var(--border-color);border-radius:4px;color:var(--text-primary);cursor:pointer;padding:8px;transition:all .2s}.filter-toggle-button:hover{border-color:#4caf50}.filter-toggle-button.active{background-color:#4caf50;border-color:#4caf50;color:#fff}.emote-header{margin:21px 0;padding:0 8px;text-align:center}.emote-header h4{font-size:16px;line-height:36px;margin:0}.emote-filters{align-items:center;display:none;flex-wrap:wrap;gap:8px;justify-content:flex-start;width:100%}.emote-filters.show{display:flex}.filter-button{background-color:var(--bg-secondary);border:1px solid var(--border-color);border-radius:4px;color:var(--text-primary);cursor:pointer;flex-shrink:0;font-family:Arial,sans-serif;font-size:14px;font-weight:400;overflow:hidden;padding:6px 12px;position:relative;transition:all .2s}.filter-button:hover{border-color:#4caf50}.filter-button.active{background-color:#4caf50;border-color:#4caf50;color:#fff}.filter-button.active:not([data-type=all]){animation:pulse 2s infinite}

/*!*****************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js!./css/emotes/emote-grid.css ***!
  \*****************************************************************************/.emote-grid{display:grid;gap:8px;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));max-height:650px;overflow-x:hidden;overflow-y:auto;-webkit-overflow-scrolling:touch;scrollbar-width:thin}.emote-grid,.emote-item{box-sizing:border-box;padding:8px}.emote-item{align-items:center;background-color:var(--bg-secondary);border:1px solid var(--border-color);border-radius:8px;cursor:move;display:flex;flex-direction:column;position:relative;text-align:center;touch-action:manipulation;transition:transform .2s;user-select:none;-webkit-user-select:none;-webkit-tap-highlight-color:transparent}.emote-item.selected{background-color:rgba(76,175,80,.1);border-color:#4caf50;transform:scale(1.05)}.emote-item.selected:after{align-items:center;background:#4caf50;border-radius:50%;box-shadow:0 2px 4px rgba(0,0,0,.2);color:#fff;content:"✓";display:flex;font-size:12px;justify-content:center;position:absolute;right:-8px;top:-8px;width:20px}@media (hover:hover){.emote-item:hover{transform:scale(1.05)}}.emote-item img{flex-shrink:0;height:44px;object-fit:contain;pointer-events:none;width:44px}.emote-item div{color:var(--text-secondary);font-size:11px;margin-top:4px;padding:0 2px;pointer-events:none;white-space:nowrap}.emote-item.hidden{display:none}.load-more-button{background-color:var(--bg-secondary);border:1px solid var(--border-color);border-radius:4px;color:var(--text-primary);cursor:pointer;display:block;font-size:14px;margin:8px;padding:12px;transition:background-color .2s;width:calc(100% - 16px)}.load-more-button:hover{background-color:#4caf50;border-color:#4caf50;color:#fff}.load-more-button:disabled{background-color:var(--bg-secondary);border-color:var(--border-color);color:var(--text-secondary);cursor:not-allowed;opacity:.6}@media (pointer:coarse){.emote-grid{gap:10px;grid-template-columns:repeat(auto-fit,minmax(100px,1fr));padding:10px}.emote-item{min-height:80px;padding:10px}.emote-item img{height:52px;width:52px}.emote-item div{font-size:12px;margin-top:6px}.load-more-button{font-size:16px;margin:10px;min-height:50px;padding:16px}}@media screen and (max-width:480px){.emote-grid{gap:8px;grid-template-columns:repeat(auto-fit,minmax(80px,1fr));padding:8px}.emote-item{min-height:70px;padding:8px}.emote-item img{height:48px;width:48px}.emote-item div{font-size:11px;margin-top:4px}}

/*!*****************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js!./css/emotes/emote-auth.css ***!
  \*****************************************************************************/.auth-buttons{flex-shrink:0;white-space:nowrap}.twitch-button{background-color:#9146ff;color:#fff}.twitch-button:hover{background-color:#772ce8}

/*!********************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js!./css/emotes/emote-tooltip.css ***!
  \********************************************************************************/.filter-info{color:var(--text-secondary);cursor:help;flex-shrink:0;font-size:16px;margin-left:4px}.filter-tooltip{background:var(--bg-secondary);border:1px solid var(--border-color);border-radius:12px;box-shadow:0 4px 20px rgba(0,0,0,.15);color:var(--text-primary);display:none;font-size:14px;line-height:1.6;padding:16px 20px;position:fixed;transition:transform .2s ease;white-space:nowrap;z-index:1000}

/*!********************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js!./css/emotes/emote-loading.css ***!
  \********************************************************************************/.emote-error,.emote-loading-placeholder{height:inherit;object-fit:contain;transition:opacity .2s ease-in-out;width:inherit}.emote-loading-placeholder{animation:pulse 1.5s infinite;background:#f0f0f0}.emote-error{align-items:center;background:#fee;color:#e44;display:flex;font-size:24px;justify-content:center}@keyframes pulse{0%{opacity:.6}50%{opacity:.8}to{opacity:.6}}

/*!*************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js!./css/emotes/emotes.css ***!
  \*************************************************************************/


/*!******************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js!./css/components/keycaps.css ***!
  \******************************************************************************/.keycap-grid{background-color:var(--bg-tertiary);border-radius:8px;display:grid;gap:10px;grid-template-columns:repeat(5,1fr);padding:10px;-webkit-overflow-scrolling:touch}.keycap,.keycap-grid{touch-action:manipulation}.keycap{aspect-ratio:1;background-color:var(--bg-secondary);border:2px solid var(--border-color);border-radius:8px;position:relative;user-select:none;-webkit-user-select:none;-webkit-tap-highlight-color:transparent;cursor:pointer;min-height:60px;padding:8px;perspective:1000px;transform-style:preserve-3d}.keycap,.keycap *{box-sizing:border-box}.keycap.selected{border-color:#007bff;box-shadow:0 0 0 2px rgba(0,123,255,.5)}.keycap-layer{align-items:center;backface-visibility:hidden;background:var(--bg-secondary);border:1px solid var(--border-color);border-radius:4px;display:flex;justify-content:center;overflow:hidden;padding:4px;pointer-events:auto;position:absolute;transition:all .2s ease}.keycap[data-layer-mode=true] .keycap-layer:not(.active){pointer-events:none;user-select:none;-webkit-user-select:none}.keycap[data-drag-mode=true] .keycap-layer{pointer-events:auto;user-select:none;-webkit-user-select:none}.keycap-layer.drag-target{background-color:rgba(0,123,255,.1);border:2px dashed #007bff}.keycap-layer.drag-target:before{background:rgba(0,123,255,.1);content:"";inset:0;pointer-events:none;position:absolute}.keycap.drag-target{background-color:rgba(0,123,255,.1);border:2px dashed #007bff}.keycap.drag-target:before{background:rgba(0,123,255,.1);border-radius:6px;content:"";inset:0;pointer-events:none;position:absolute}.keycap-layer img{max-height:95%;max-width:95%;object-fit:contain}.keycap-layer[data-layer="0"]{height:40%;left:30%;top:30%;width:40%;z-index:5}.keycap-layer[data-layer="1"]{height:40%;left:0;top:30%;width:30%;z-index:4}.keycap-layer[data-layer="2"]{height:30%;left:30%;top:0;width:40%;z-index:3}.keycap-layer[data-layer="3"]{height:40%;right:0;top:30%;width:30%;z-index:4}.keycap-layer[data-layer="4"]{bottom:0;height:30%;left:30%;width:40%;z-index:3}.keycap-layer.active{outline:2px solid #007bff;outline-offset:-1px;z-index:10}.remove{align-items:center;background-color:#f44;border-radius:50%;color:#fff;cursor:pointer;display:flex;justify-content:center;opacity:0;padding:0;position:absolute;transition:opacity .2s;z-index:100}.layer-remove{font-size:12px;height:16px;width:16px}.keycap-remove{font-size:16px;height:24px;width:24px}.keycap-layer:hover .layer-remove,.keycap:hover .keycap-remove{opacity:1}@media (pointer:coarse){.remove{opacity:1}.layer-remove{font-size:14px;height:20px;width:20px}.keycap-remove{font-size:18px;height:28px;width:28px}}.mode-selector{display:flex;justify-content:center;margin-bottom:16px;padding:8px}.mode-switch{align-items:center;cursor:pointer;display:inline-flex;padding:4px;position:relative}.mode-switch input{height:0;opacity:0;width:0}.mode-switch .slider{background-color:var(--bg-secondary);border:2px solid var(--border-color);border-radius:34px;display:inline-block;height:30px;margin-right:10px;position:relative;transition:.4s;width:60px}.mode-switch .slider:before{background-color:#007bff;border-radius:50%;bottom:2px;content:"";height:22px;left:4px;position:absolute;transition:.4s;width:22px}.mode-switch input:checked+.slider:before{background-color:#28a745;transform:translateX(30px)}.mode-switch .mode-label{color:var(--text-primary);font-size:14px;transition:.4s}.mode-switch input:checked~.mode-label{color:#28a745}.mode-switch input:not(:checked)~.mode-label{color:#007bff}.layer-selector{background-color:var(--bg-tertiary);border-radius:8px;display:flex;flex-wrap:wrap;gap:8px;justify-content:center;margin-bottom:16px;padding:8px}.layer-button{background-color:var(--bg-secondary);border:2px solid var(--border-color);border-radius:4px;color:var(--text-primary);cursor:pointer;padding:8px 16px;transition:all .2s ease}.layer-button:hover{background-color:var(--bg-tertiary)}.layer-button.active{background-color:#007bff;border-color:#0056b3;color:#fff}.controls{display:flex;gap:10px;justify-content:center;margin-top:20px}.keycap-grid+.controls button{align-items:center!important;display:inline-flex!important;font-size:14px!important;justify-content:center!important;min-width:0!important;padding:8px 12px!important;width:auto!important}.template-controls{background-color:var(--bg-tertiary);border-radius:4px;display:flex!important;flex-direction:column;gap:15px;margin-top:15px;padding:15px;position:relative;z-index:10}.template-control{align-items:center;display:flex;justify-content:center;margin:10px 0}.toggle-switch{display:inline-block;height:24px;margin-right:10px;position:relative;width:50px}.toggle-switch input{height:0;opacity:0;width:0}.toggle-slider{background-color:#ccc;border-radius:24px;bottom:0;cursor:pointer;left:0;position:absolute;right:0;top:0;transition:.4s}.toggle-slider:before{background-color:#fff;border-radius:50%;bottom:4px;content:"";height:16px;left:4px;position:absolute;transition:.4s;width:16px}input:checked+.toggle-slider{background-color:#2196f3}input:checked+.toggle-slider:before{transform:translateX(26px)}.template-controls[style*="display: none"]{display:none!important}.template-controls[style*="display: block"],.template-controls[style*="display: flex"]{display:flex!important}.slider-control{display:flex;flex-direction:column;gap:5px}.slider-control label{align-items:center;color:var(--text-primary);display:flex;justify-content:space-between}.slider-control label span{color:var(--text-secondary);font-size:.9em}.slider-control input[type=range]{-webkit-appearance:none;appearance:none;background:var(--bg-secondary);border-radius:4px;height:8px;outline:none;width:100%}.slider-control input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;background:var(--text-primary);border:none;border-radius:50%;box-shadow:0 2px 4px rgba(0,0,0,.2);cursor:pointer;height:24px;width:24px}.slider-control input[type=range]::-moz-range-thumb{background:var(--text-primary);border:none;border-radius:50%;box-shadow:0 2px 4px rgba(0,0,0,.2);cursor:pointer;height:24px;width:24px}.render-template-button{align-items:center!important;background-color:#4caf50!important;border:none!important;border-radius:4px!important;color:#fff!important;cursor:pointer!important;display:inline-flex!important;font-size:14px!important;justify-content:center!important;margin-top:15px!important;min-width:0!important;opacity:1!important;padding:8px 12px!important;pointer-events:auto!important;position:relative!important;transition:background-color .2s!important;width:auto!important;z-index:20!important}.render-template-button:hover{background-color:#45a049!important}.download-button{align-items:center;background-color:#2196f3;border:none;border-radius:4px;color:#fff;cursor:pointer;display:inline-flex;font-size:14px;justify-content:center;margin-top:15px;padding:8px 12px;text-align:center;text-decoration:none;transition:background-color .2s}.download-button:hover{background-color:#1976d2}body:not(.logged-in) .render-template-button{cursor:pointer!important;opacity:1!important;pointer-events:auto!important}.saved-layouts{display:grid;gap:10px;padding:10px}.saved-layout-item{align-items:center;background-color:var(--bg-tertiary);border:1px solid var(--border-color);border-radius:8px;display:flex;justify-content:space-between;padding:12px;touch-action:manipulation}@media screen and (max-width:768px){.keycap-grid{gap:12px;grid-template-columns:repeat(4,1fr);padding:12px}.keycap{min-height:70px}.template-controls{gap:12px;padding:12px}.slider-control label{font-size:14px}.saved-layout-item{flex-direction:column;gap:10px;text-align:center}.saved-layout-item .layout-actions{justify-content:center;width:100%}.saved-layout-item .layout-actions button{flex:1;min-height:44px}}@media screen and (max-width:480px){.keycap-grid{gap:8px;grid-template-columns:repeat(3,1fr);padding:8px}.keycap{min-height:60px}.template-controls{gap:10px;padding:10px}.slider-control{gap:8px}}.saved-layout-item .layout-name{color:var(--text-primary);font-weight:700}.saved-layout-item .layout-actions{display:flex;gap:8px}.saved-layouts-header{align-items:center;display:flex;justify-content:space-between;margin-bottom:15px;padding:0 10px}.saved-layouts-header h3{color:var(--text-primary);margin:0}