.app{min-height:100vh;padding-bottom:var(--bottom-bar-height)}.selection-zone{display:flex;flex-direction:column;align-items:center;justify-content:center;height:calc(100vh - var(--bottom-bar-height));padding:0 var(--horizontal-pad)}.selection-zone.hidden{display:none}.preview-container{position:relative;width:100%;max-width:80vh;border-radius:var(--radius-md);overflow:hidden;background:var(--color-surface);box-shadow:0 7px 35px -12px #0000001a}.preview-container #previewImage{width:100%;height:auto;display:block}.preview-tab{position:absolute;top:12px;z-index:30;display:flex;align-items:center;gap:6px;padding:8px 12px;background:#ffffffeb;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border:none;border-radius:100em;font-size:12px;font-weight:500;color:var(--color-text);cursor:pointer;transition:all .2s ease;box-shadow:0 2px 8px #0000001a}.preview-tab:hover{background:#fff;box-shadow:0 4px 12px #00000026}.preview-tab:active{transform:scale(.97)}.preview-tab svg{flex-shrink:0}.image-swap-tab{left:12px}.image-resume-tab{left:12px;opacity:0;pointer-events:none}.image-resume-tab.visible{opacity:1;pointer-events:auto}.preview-tab.fade-out,.svg-overlay.fade-out{opacity:0;pointer-events:none;transition:opacity .25s ease}.generated-overlay-image{position:absolute;top:0;left:0;width:100%;height:100%;object-fit:contain;opacity:0;pointer-events:none;transition:opacity .5s ease;z-index:26}.generated-overlay-image.visible{opacity:1;pointer-events:auto}@keyframes preview-pulsate{0%,to{opacity:1}50%{opacity:.8}}.preview-container.generating{animation:preview-pulsate 1.8s ease-in-out infinite}.preview-progress-overlay{position:absolute;bottom:0;left:0;right:0;padding:16px 20px 20px;background:linear-gradient(to top,rgba(0,0,0,.5) 0%,transparent 100%);z-index:27;opacity:0;pointer-events:none;transition:opacity .25s ease}.preview-progress-overlay.visible{opacity:1}.preview-progress-text{display:block;font-size:13px;font-weight:500;color:#fff;margin-bottom:10px;text-shadow:0 1px 2px rgba(0,0,0,.3)}.preview-progress-text:after{content:"";animation:ellipsis 1.5s infinite steps(1)}@keyframes ellipsis{0%{content:"."}33%{content:".."}66%{content:"..."}}.preview-progress-bar{width:100%;height:4px;background:#ffffff4d;border-radius:2px;overflow:hidden}.preview-progress-fill{height:100%;width:0%;background:#fff;border-radius:2px;transition:width .3s ease-out}.svg-overlay{position:absolute;top:0;z-index:25;left:0;width:100%;height:100%;cursor:crosshair;touch-action:none;-webkit-user-select:none;user-select:none;transition:opacity .25s ease}.svg-overlay .corner-handle{cursor:grab;filter:drop-shadow(0 1px 3px rgba(0,0,0,.3));transform-origin:center;transform-box:fill-box;transition:transform .15s ease,filter .15s ease,opacity .15s ease;pointer-events:auto}.svg-overlay .layer-delete-btn{transition:opacity .15s ease,transform .15s ease;transform-origin:center;transform-box:fill-box;pointer-events:auto}.svg-overlay .layer-delete-btn:hover{transform:scale(1.15)}.svg-overlay .corner-handle.hovered{transform:scale(1.75);filter:drop-shadow(0 2px 6px rgba(0,0,0,.35))}.svg-overlay .corner-handle.dragging{cursor:grabbing;transform:scale(1.5)}.svg-overlay .edge-highlight{stroke:#ffffffe6;stroke-width:6;stroke-linecap:round;filter:drop-shadow(0 1px 3px rgba(0,0,0,.2));pointer-events:none;transition:opacity .15s ease}.svg-overlay .edge-highlight.dragging{stroke:#fff;stroke-width:5}.gallery{display:flex;flex-direction:column;gap:20px;max-width:660px;margin:0 auto}.gallery:empty{display:none}.error-message{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);display:flex;flex-direction:column;align-items:center;gap:14px;padding:28px 36px;background:var(--color-surface);border-radius:var(--radius-md);box-shadow:var(--shadow-lg);text-align:center;z-index:200}.error-message svg{color:var(--color-text-tertiary)}.error-message p{font-size:13px;color:var(--color-text-secondary);max-width:260px;line-height:1.6}.error-message .error-dismiss{padding:8px 20px;background:var(--color-accent);color:#fff;border:none;border-radius:100em;font-size:12px;font-weight:500;cursor:pointer;transition:all .15s ease}.error-message .error-dismiss:hover{background:var(--color-accent-hover)}.save-status{font-size:12px;color:var(--color-text-tertiary);transition:opacity .2s ease}.save-status.hidden{display:none}.save-status.saving{opacity:.6}.generate-btn{padding:8px 16px;background:var(--color-green);color:#fff;border:none;border-radius:100em;font-size:13px;font-weight:500;cursor:pointer;transition:all .15s ease}.generate-btn:hover{filter:brightness(1.05)}.generate-btn:active{transform:scale(.97)}.generate-btn.hidden{display:none}.generate-btn.loading{pointer-events:none;opacity:.7}#batchGenerateBtn{position:relative;display:inline-flex;align-items:center;min-width:120px}#batchGenerateBtn.loading{pointer-events:none;opacity:.7}#batchGenerateBtn .btn-text{transition:opacity .2s ease}#batchGenerateBtn.loading .btn-text{display:none}#batchGenerateBtn .btn-progress{display:none;font-size:13px;white-space:nowrap}#batchGenerateBtn.loading .btn-progress{display:inline}.top-left-actions{position:fixed;top:24px;z-index:50;left:24px;display:flex;flex-direction:row;gap:15px}.top-right-actions{position:fixed;top:24px;right:24px;display:flex;align-items:center;gap:12px;z-index:50}.editor-auth{display:flex;align-items:center;justify-content:center;gap:12px}.editor-auth-email{color:var(--color-text-secondary);font-size:12px}.editor-claim-banner{position:fixed;bottom:calc(var(--bottom-bar-height) + 24px);left:50%;transform:translate(-50%);display:flex;align-items:center;gap:12px;padding:12px 16px;background:var(--color-green-light);border:1px solid var(--color-green);border-radius:var(--radius-md);z-index:90}.layer-polygon{cursor:move;transition:stroke-opacity .2s ease;pointer-events:none}.editor-claim-banner.hidden{display:none}.editor-claim-banner p{color:var(--color-text);font-size:13px;margin:0}.claim-btn{padding:8px 14px;background:var(--color-green);color:#fff;border:none;border-radius:100em;font-size:12px;font-weight:500;cursor:pointer;transition:all .15s ease;white-space:nowrap}.claim-btn:hover{filter:brightness(1.05)}.claim-btn:disabled{opacity:.5;cursor:not-allowed}.claim-dismiss-btn{display:flex;align-items:center;justify-content:center;width:24px;height:24px;background:transparent;border:none;color:var(--color-text-secondary);cursor:pointer;border-radius:50%;transition:all .15s ease}.claim-dismiss-btn:hover{color:var(--color-text);background:#0000000d}.debug-preview{display:none;position:fixed;bottom:calc(var(--bottom-bar-height) + 24px);bottom:calc(var(--bottom-bar-height) + 24px + env(safe-area-inset-bottom,0px));left:24px;left:calc(24px + env(safe-area-inset-left,0px));max-width:300px;background:var(--color-surface);border:2px solid #374151;border-radius:var(--radius-md);box-shadow:0 4px 16px #00000026;z-index:150;overflow:hidden;transition:border-color .2s ease}.debug-preview.visible{display:block}.debug-preview.collapsed .debug-preview-content,.debug-preview.collapsed .debug-preview-header select{display:none}.debug-preview.collapsed{max-width:none;width:auto}.debug-preview.collapsed .debug-preview-header{padding:6px 8px}.debug-preview.preview-sent{border-color:#ff6b6b}.debug-preview.preview-generated{border-color:#4ecdc4}.debug-preview.preview-mask{border-color:#a855f7}.debug-preview.preview-smoothed_mask{border-color:#f59e0b}.debug-preview-header{display:flex;align-items:center;gap:8px;padding:8px 12px;background:#374151}.debug-preview-header select{flex:1;background:transparent;border:none;color:#fff;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.5px;cursor:pointer;outline:none}.debug-preview-header select option{background:#374151;color:#fff}.debug-collapse-btn{display:flex;align-items:center;justify-content:center;width:20px;height:20px;background:transparent;border:none;color:#ffffffb3;cursor:pointer;border-radius:3px;transition:all .12s ease;flex-shrink:0}.debug-collapse-btn:hover{color:#fff;background:#ffffff1a}.debug-collapse-btn svg{transition:transform .2s ease}.debug-preview.collapsed .debug-collapse-btn svg{transform:rotate(180deg)}.debug-preview-content{overflow:hidden}.debug-preview img{width:100%;height:auto;display:block}.debug-preview img:not([src]),.debug-preview img[src=""]{display:none}.plant-overlay{position:absolute;pointer-events:none;overflow:hidden;border-radius:4px;z-index:20}.generated-overlay{z-index:10}.plant-overlay.shimmer{background:linear-gradient(90deg,#4a7c591a,#4a7c5940,#4a7c591a);background-size:200% 100%;animation:overlay-shimmer 2s infinite ease-in-out}@keyframes overlay-shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.plant-overlay img{width:100%;height:100%;object-fit:cover;opacity:0;transition:opacity .5s ease-in-out}.plant-overlay.fade-in img{opacity:1}.download-overlay-btn{position:absolute;bottom:14px;right:14px;display:flex;align-items:center;justify-content:center;gap:6px;padding:8px 14px;background:#fffffff2;border:none;border-radius:100em;color:var(--color-text);font-size:12px;font-weight:500;cursor:pointer;opacity:0;transform:translateY(3px);transition:all .15s ease;z-index:10;pointer-events:auto}.plant-overlay.fade-in~.download-overlay-btn,.preview-container:has(.plant-overlay.fade-in) .download-overlay-btn{opacity:1;transform:translateY(0);pointer-events:auto}.download-overlay-btn:hover{background:var(--color-accent);color:#fff}.texture-preview-overlay{transition:opacity .15s ease-out;z-index:15}.texture-preview-overlay.faded{opacity:0!important}.product-sidebar{position:fixed;bottom:0;left:0;right:0;height:var(--bottom-bar-height);z-index:100;display:flex;flex-direction:row;background:var(--color-surface);border-top:1px solid var(--color-border-subtle);transition:var(--sidebar-transition)}.product-sidebar.collapsed{transform:translateY(100%)}.sidebar-items{flex:1;overflow-x:auto;overflow-y:hidden;display:flex;flex-direction:row;align-items:center;gap:8px;padding:0 16px;padding-bottom:env(safe-area-inset-bottom,0px)}.sidebar-item{position:relative;width:calc(var(--bottom-bar-height) - 20px);height:calc(var(--bottom-bar-height) - 20px);flex-shrink:0;border-radius:10px;overflow:hidden;cursor:grab;-webkit-user-select:none;user-select:none}.sidebar-item:active{cursor:grabbing}.sidebar-item.dragging{opacity:.3;background:var(--color-border-subtle)}.sidebar-item-image{width:100%;height:100%;object-fit:contain;display:block;pointer-events:none}.sidebar-item-image.dragging-image{position:fixed!important;z-index:10000;pointer-events:none;border-radius:var(--radius-md);cursor:grabbing;margin:0;transform:none}.action-buttons{position:fixed;bottom:calc(var(--bottom-bar-height) + 32px);bottom:calc(var(--bottom-bar-height) + 32px + env(safe-area-inset-bottom,0px));left:50%;transform:translate(-50%);display:flex;gap:12px;z-index:100;opacity:1;visibility:visible;transition:opacity .2s ease,visibility .2s ease}.action-buttons.hidden{opacity:0;visibility:hidden;pointer-events:none}.action-btn{display:flex;align-items:center;gap:3px;padding:14px 32px;border-radius:100em;font-size:15px;font-weight:500;cursor:pointer;border:none;transition:all .15s ease}.action-btn:active{transform:scale(.97)}.action-btn.cancel-btn{background:var(--color-surface);color:var(--color-text-secondary);border:1px solid var(--color-border)}.action-btn.cancel-btn:hover{color:var(--color-text);border-color:var(--color-text-tertiary)}.action-btn.confirm-btn{background:var(--color-green);color:#fff}.action-btn.confirm-btn:hover{filter:brightness(1.05)}.svg-overlay .element-delete-btn{opacity:0;transition:opacity .15s ease}.svg-overlay:hover .element-delete-btn,.svg-overlay .element-delete-btn:hover{opacity:1}.svg-overlay .element-delete-btn:hover circle{fill:#dc3545e6}.svg-overlay .placed-element{cursor:move}@media (max-width: 768px){.preview-container{border-radius:var(--radius-sm)}.svg-overlay .corner-handle{r:6}.top-right-actions{top:16px;right:16px}.editor-claim-banner{left:16px;right:16px;bottom:calc(var(--bottom-bar-height) + 16px);transform:none;flex-direction:column;text-align:center}.upload-image-btn{left:16px;top:16px}}@media (max-width: 640px){.preview-container{border-radius:var(--radius-sm)}.gallery{gap:12px}.svg-overlay .corner-handle{r:8}.download-overlay-btn{opacity:1;transform:translateY(0);padding:12px 20px;font-size:14px;bottom:16px;right:16px}.error-message{width:calc(100% - 32px);max-width:320px;padding:20px 24px}.error-message p{font-size:15px}.error-message .error-dismiss{padding:12px 28px;font-size:14px;min-height:44px}.debug-preview{display:none!important}}@media (max-width: 380px){.preview-container{margin:0 -4px;width:calc(100% + 8px);border-radius:0}}@media (hover: none) and (pointer: coarse){.download-overlay-btn{opacity:1;transform:translateY(0)}.svg-overlay .corner-handle{r:7}}.gallery-modal{display:none;position:fixed;top:0;right:0;bottom:0;left:0;z-index:1000}.gallery-modal.open{display:block}.gallery-modal-backdrop{position:absolute;top:0;right:0;bottom:0;left:0;background:#000000e6;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.gallery-modal-content{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;padding:24px;box-sizing:border-box}.gallery-modal-close{position:absolute;top:16px;right:16px;display:flex;align-items:center;justify-content:center;width:44px;height:44px;background:#ffffff1a;border:none;border-radius:50%;color:#fff;cursor:pointer;transition:background .15s ease;z-index:10}.gallery-modal-close:hover{background:#fff3}.gallery-modal-main{display:flex;align-items:center;gap:16px;flex:1;min-height:0;width:100%;max-width:1200px}.gallery-modal-nav{display:flex;align-items:center;justify-content:center;width:48px;height:48px;background:#ffffff1a;border:none;border-radius:50%;color:#fff;cursor:pointer;transition:background .15s ease;flex-shrink:0}.gallery-modal-nav:hover{background:#fff3}.gallery-modal-image-container{flex:1;display:flex;align-items:center;justify-content:center;min-height:0;min-width:0}.gallery-modal-image{max-width:100%;max-height:calc(100vh - 200px);object-fit:contain;border-radius:var(--radius-md);box-shadow:0 8px 32px #0006}.gallery-modal-actions{display:flex;gap:12px;margin-top:20px}.gallery-modal-download,.gallery-modal-delete{display:flex;align-items:center;gap:8px;padding:10px 20px;border-radius:100em;font-size:13px;font-weight:500;cursor:pointer;transition:all .15s ease}.gallery-modal-download{background:#fff;border:none;color:var(--color-text)}.gallery-modal-download:hover{background:var(--color-green);color:#fff}.gallery-modal-delete{background:transparent;border:1px solid rgba(255,255,255,.3);color:#fff}.gallery-modal-delete:hover{background:#dc3545cc;border-color:transparent}.gallery-modal-thumbnails{display:none;gap:8px;margin-top:16px;padding:8px;background:#ffffff0d;border-radius:var(--radius-md);overflow-x:auto;max-width:100%}.gallery-modal-thumbnail{width:60px;height:60px;padding:0;border:2px solid transparent;border-radius:var(--radius-sm);background:transparent;cursor:pointer;overflow:hidden;flex-shrink:0;transition:border-color .15s ease,opacity .15s ease;opacity:.6}.gallery-modal-thumbnail:hover{opacity:.9}.gallery-modal-thumbnail.active{border-color:#fff;opacity:1}.gallery-modal-thumbnail img{width:100%;height:100%;object-fit:cover}.gallery-modal-confirm-delete{display:none;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);background:var(--color-surface);border-radius:var(--radius-md);padding:24px 32px;text-align:center;box-shadow:0 8px 32px #0006;z-index:20}.gallery-modal-confirm-delete.visible{display:block}.gallery-modal-confirm-delete p{margin:0 0 20px;color:var(--color-text);font-size:14px}.gallery-modal-confirm-actions{display:flex;gap:12px;justify-content:center}.gallery-modal-confirm-cancel,.gallery-modal-confirm-yes{padding:10px 24px;border-radius:100em;font-size:13px;font-weight:500;cursor:pointer;transition:all .15s ease}.gallery-modal-confirm-cancel{background:transparent;border:1px solid var(--color-border);color:var(--color-text-secondary)}.gallery-modal-confirm-cancel:hover{border-color:var(--color-text-tertiary);color:var(--color-text)}.gallery-modal-confirm-yes{background:var(--color-red, #dc3545);border:none;color:#fff}.gallery-modal-confirm-yes:hover{filter:brightness(1.1)}.gallery-modal-confirm-yes:disabled{opacity:.6;cursor:not-allowed}@media (max-width: 768px){.gallery-modal-content{padding:16px}.gallery-modal-nav{width:40px;height:40px}.gallery-modal-image{max-height:calc(100vh - 180px)}.gallery-modal-thumbnail{width:50px;height:50px}}@media (max-width: 640px){.gallery-modal-main{gap:8px}.gallery-modal-nav{width:36px;height:36px}.gallery-modal-nav svg{width:20px;height:20px}.gallery-modal-actions{flex-direction:column;width:100%;max-width:280px}.gallery-modal-download,.gallery-modal-delete{justify-content:center;width:100%}}
