.login-page{align-items:center;justify-content:center;background:var(--bg)}.login-main{width:100%;max-width:400px;padding:1.5rem}.login-card{display:flex;flex-direction:column;gap:1.25rem}.login-logo{height:48px;width:auto;filter:brightness(0) invert(1);opacity:.9;display:block;margin:0 auto}.login-title{font-size:2rem;font-weight:700;letter-spacing:-.03em;color:var(--accent);text-align:center}.login-subtitle{color:var(--text-muted);text-align:center;font-size:.9rem;margin-top:-.75rem}.login-tabs{display:flex;border:1px solid var(--border);border-radius:var(--radius);overflow:hidden}.login-tab{flex:1;padding:.5rem;background:transparent;border:none;color:var(--text-muted);font-size:.875rem;font-weight:500;transition:background .15s,color .15s}.login-tab.active{background:var(--surface-raised);color:var(--text)}.login-form{display:flex;flex-direction:column;gap:.75rem}.login-label{font-size:.85rem;color:var(--text-muted);font-weight:500}.login-error{font-size:.85rem;color:var(--danger);padding:.5rem .75rem;background:color-mix(in srgb,var(--danger) 10%,transparent);border-radius:var(--radius-sm);border:1px solid color-mix(in srgb,var(--danger) 30%,transparent)}.login-submit{width:100%;padding:.65rem;margin-top:.25rem}.login-dev-badge{align-self:center;padding:.2rem .6rem;background:color-mix(in srgb,var(--warning, #f59e0b) 15%,transparent);color:var(--warning, #f59e0b);border:1px solid color-mix(in srgb,var(--warning, #f59e0b) 40%,transparent);border-radius:var(--radius-sm);font-size:.7rem;font-weight:700;letter-spacing:.08em}.ctx-menu{position:fixed;z-index:1000;min-width:160px;background:var(--surface-raised);border:1px solid var(--border);border-radius:var(--radius);padding:4px;box-shadow:var(--shadow-lg)}.ctx-menu-item{display:block;width:100%;padding:6px 12px;background:none;border:none;color:var(--text);font-size:.82rem;text-align:left;border-radius:var(--radius-sm);cursor:pointer;transition:background .1s}.ctx-menu-item:hover{background:color-mix(in srgb,var(--accent) 15%,transparent)}.ctx-menu-item--danger:hover{background:color-mix(in srgb,var(--danger) 15%,transparent);color:var(--danger)}.ctx-menu-sep{height:1px;background:var(--border);margin:4px 0}.lightbox-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:200;background:#000000e0;display:flex;align-items:center;justify-content:center;cursor:pointer;animation:lightbox-fade-in .15s ease-out}@keyframes lightbox-fade-in{0%{opacity:0}to{opacity:1}}.lightbox-content{display:flex;flex-direction:column;align-items:center;gap:1rem;max-width:90vw;max-height:90vh;cursor:default}.lightbox-img{max-width:90vw;max-height:80vh;object-fit:contain;border-radius:var(--radius);box-shadow:0 20px 60px #00000080}.lightbox-caption{font-size:.85rem;color:var(--text-muted)}.lightbox-nav{position:fixed;top:50%;transform:translateY(-50%);background:color-mix(in srgb,var(--surface) 70%,transparent);border:1px solid var(--border);color:var(--text);width:40px;height:40px;border-radius:50%;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:background .15s}.lightbox-nav:hover{background:var(--surface-raised)}.lightbox-nav svg{width:20px;height:20px}.lightbox-prev{left:1.5rem}.lightbox-next{right:1.5rem}.projects-page{background:var(--bg)}.projects-header{display:flex;align-items:center;justify-content:space-between;padding:.75rem 1.5rem;border-bottom:1px solid var(--border);background:var(--surface);position:sticky;top:0;z-index:10}.projects-header-left{display:flex;align-items:center;gap:.5rem;min-width:0}.projects-breadcrumb{display:flex;align-items:center;gap:.4rem;font-size:.85rem}.projects-breadcrumb-link{color:var(--text-muted);font-size:.85rem;cursor:pointer;transition:color .15s}.projects-breadcrumb-link:hover{color:var(--text)}.projects-logo-img{height:35px;width:auto;filter:brightness(0) invert(1);opacity:.5}.projects-header-actions{display:flex;align-items:center;gap:.5rem}.projects-main{padding:1.25rem 1.5rem 2rem;display:flex;flex-direction:column;gap:.75rem;min-height:calc(100vh - 52px);transition:background .15s}.projects-main.desktop-drop-active{background:color-mix(in srgb,var(--accent) 4%,var(--bg))}.breadcrumb-sep{color:var(--text-subtle);font-size:.8rem}.breadcrumb-folder-name{font-size:.9rem;font-weight:600;color:var(--text)}.project-create-card{display:flex;flex-direction:column;gap:1rem;max-width:520px}.project-create-label{font-size:.8rem;font-weight:500;color:var(--text-muted);text-transform:uppercase;letter-spacing:.05em}.project-create-actions{display:flex;gap:.5rem;margin-top:.25rem}.project-option-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:.5rem}.project-option-grid--ratios{grid-template-columns:repeat(4,1fr)}.project-option-btn{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.35rem;padding:.75rem .5rem;background:var(--surface-raised);border:1px solid var(--border);border-radius:var(--radius);color:var(--text);cursor:pointer;transition:border-color .15s,background .15s;min-height:64px}.project-option-btn:hover{border-color:var(--text-muted)}.project-option-btn.selected{border-color:var(--accent);background:color-mix(in srgb,var(--accent) 10%,var(--surface-raised))}.project-option-title{font-size:.9rem;font-weight:600}.project-option-sub{font-size:.75rem;color:var(--text-muted)}.ratio-preview{display:block;background:var(--accent);border-radius:2px;opacity:.5}.project-option-btn.selected .ratio-preview{opacity:1}.projects-error{font-size:.875rem;color:var(--danger)}.projects-empty{color:var(--text-muted)}.projects-empty-state{display:flex;flex-direction:column;align-items:center;gap:1rem;padding:4rem 0;color:var(--text-muted)}.projects-grid{list-style:none;display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:.5rem}.desktop-folder-wrap{position:relative;border-radius:var(--radius);transition:box-shadow .15s}.desktop-folder-wrap.folder-drop-active{box-shadow:inset 0 0 0 2px var(--accent);border-radius:var(--radius)}.desktop-folder{display:flex;flex-direction:column;width:100%;background:none;border:1px solid var(--border);border-radius:var(--radius);padding:0;cursor:pointer;overflow:hidden;transition:border-color .15s,transform .1s;color:var(--text)}.desktop-folder:hover{border-color:var(--accent);transform:translateY(-1px)}.desktop-folder-icon{aspect-ratio:1;background:linear-gradient(135deg,color-mix(in srgb,var(--accent) 8%,var(--surface)) 0%,var(--surface) 100%);border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:center;overflow:hidden;position:relative}.desktop-folder-icon:before{content:"";position:absolute;top:0;left:0;width:40%;height:8px;background:var(--accent);border-radius:0 0 6px;opacity:.5}.desktop-folder-info{display:flex;flex-direction:column;gap:.1rem;padding:.45rem .6rem}.desktop-folder-name{font-size:.8rem;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;text-align:left}.desktop-folder-count{font-size:.62rem;color:var(--text-subtle);text-align:left}.folder-preview-grid{width:80%;aspect-ratio:1;border-radius:6px;overflow:hidden;border:1px solid color-mix(in srgb,var(--border) 50%,transparent)}.folder-preview-grid img{width:100%;height:100%;object-fit:cover}.folder-preview-grid--1{display:flex}.folder-preview-grid--2{display:grid;grid-template-columns:1fr 1fr}.folder-preview-grid--3{display:grid;grid-template-columns:1fr 1fr;grid-template-rows:1fr 1fr}.folder-preview-grid--3 img:first-child{grid-row:1 / -1}.folder-preview-grid--4{display:grid;grid-template-columns:1fr 1fr;grid-template-rows:1fr 1fr}.folder-preview-empty{display:flex;align-items:center;justify-content:center;width:60%;aspect-ratio:1}.folder-preview-icon{width:48px;height:48px;color:var(--text-subtle);opacity:.4}.project-card-wrap{position:relative;cursor:pointer;-webkit-user-select:none;user-select:none}.project-card-wrap[draggable=true]{cursor:grab}.project-card-wrap[draggable=true]:active{cursor:grabbing}.project-card-wrap.dragging{opacity:.4}.project-card-wrap.selected .project-card{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent)}.project-card-wrap.selected .project-card-thumb:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:color-mix(in srgb,var(--accent) 10%,transparent);pointer-events:none}.project-card{display:flex;flex-direction:column;transition:border-color .15s,transform .1s,box-shadow .15s;padding:0;overflow:hidden;border-radius:var(--radius);background:var(--surface);border:1px solid var(--border)}.project-card:hover{border-color:var(--accent);transform:translateY(-1px)}.project-card-thumb{position:relative;aspect-ratio:1;background:var(--surface-raised);overflow:hidden;border-bottom:1px solid var(--border)}.project-card-thumb img{width:100%;height:100%;object-fit:cover}.project-card-thumb-empty{width:100%;height:100%;background:radial-gradient(circle at 50% 40%,color-mix(in srgb,var(--accent) 6%,transparent),transparent 70%),var(--surface-raised)}.project-card-info{display:flex;align-items:baseline;gap:.4rem;padding:.5rem .6rem}.project-card-name{font-size:.8rem;font-weight:600;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex:1;min-width:0}.project-card-meta{font-size:.65rem;color:var(--text-subtle);white-space:nowrap;flex-shrink:0}.inline-editable{cursor:text;border-radius:var(--radius-sm);padding:.05rem .2rem;margin:-.05rem -.2rem;transition:background .1s}.inline-editable:hover{background:color-mix(in srgb,var(--text) 8%,transparent)}.inline-edit-input{font:inherit;font-weight:600;background:var(--surface-raised);border:1px solid var(--accent);border-radius:var(--radius-sm);color:var(--text);padding:.05rem .2rem;margin:-.05rem -.2rem;outline:none;width:100%;min-width:60px}.folder-action-btn{font-size:.62rem;color:var(--text-subtle);background:none;border:1px solid transparent;border-radius:var(--radius-sm);padding:.1rem .35rem;cursor:pointer;transition:color .15s,border-color .15s}.folder-action-btn:hover{color:var(--text-muted);border-color:var(--border)}.folder-action-btn--danger:hover{color:var(--danger);border-color:var(--danger)}.folder-create-row{display:flex;align-items:center;gap:.5rem}.folder-create-input{width:180px;padding:.3rem .6rem;font-size:.82rem}.selection-count{font-size:.82rem;color:var(--text-muted);padding:0 .25rem}.projects-header-actions .btn-danger-ghost:hover{color:var(--danger);border-color:var(--danger)}.text-muted{color:var(--text-muted)}.text-sm{font-size:.8rem}.radial-menu{position:absolute;left:20px;top:50%;transform:translateY(-50%);z-index:20;cursor:grab}.radial-menu:active{cursor:grabbing}.radial-menu:before{content:"";position:absolute;top:-6px;right:-6px;bottom:-6px;left:-6px;border-radius:50%;background:color-mix(in srgb,var(--bg) 40%,transparent);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);z-index:-1}.radial-ring{position:absolute;transform:translate(-50%,-50%);border:1.5px solid color-mix(in srgb,var(--border) 40%,transparent);border-radius:50%;pointer-events:none}.radial-btn{position:absolute;transform:translate(-50%,-50%);width:36px;height:36px;border-radius:50%;border:1px solid var(--border);background:var(--surface);color:var(--text-muted);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:transform .28s cubic-bezier(.34,1.56,.64,1),background .2s,color .2s,border-color .2s,box-shadow .3s;z-index:1}.radial-btn:hover:not(.active){background:var(--surface-raised);color:var(--text);transform:translate(-50%,-50%) scale(1.12);box-shadow:0 2px 8px color-mix(in srgb,var(--bg) 40%,transparent)}.radial-btn.active{transform:translate(-50%,-50%) scale(1.35);background:color-mix(in srgb,var(--accent) 18%,var(--surface));border-color:var(--accent);color:var(--accent);box-shadow:0 0 16px color-mix(in srgb,var(--accent) 20%,transparent);z-index:2}.radial-icon{display:flex;align-items:center;justify-content:center;width:18px;height:18px;line-height:0}.radial-icon svg{width:100%;height:100%}.zoom-controls{position:absolute;bottom:16px;left:16px;z-index:20;display:flex;align-items:center;gap:.2rem;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:.2rem .35rem;box-shadow:var(--shadow)}.zoom-btn{display:inline-flex;align-items:center;justify-content:center;width:26px;height:26px;background:transparent;border:none;border-radius:var(--radius-sm);color:var(--text-muted);font-size:.82rem;cursor:pointer;transition:background .12s,color .12s}.zoom-btn:hover{background:var(--surface-raised);color:var(--text)}.zoom-fit{font-size:.72rem;width:auto;padding:0 .4rem}.zoom-val{font-size:.7rem;color:var(--text-muted);min-width:2.2rem;text-align:center;font-variant-numeric:tabular-nums}.dp-panel{position:absolute;z-index:30;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-lg);display:flex;flex-direction:column;min-width:120px;-webkit-user-select:none;user-select:none}.dp-titlebar{display:flex;align-items:center;justify-content:space-between;padding:.35rem .6rem;cursor:grab;border-bottom:1px solid var(--border);flex-shrink:0}.dp-titlebar:active{cursor:grabbing}.dp-title{font-size:.7rem;font-weight:600;color:var(--text-muted);text-transform:uppercase;letter-spacing:.04em}.dp-close{background:none;border:none;color:var(--text-subtle);font-size:.9rem;cursor:pointer;line-height:1;padding:0 .15rem}.dp-close:hover{color:var(--text)}.dp-body{flex:1;min-height:0}.dp-resize-handle{height:6px;cursor:ns-resize;background:transparent;border-top:1px solid var(--border);flex-shrink:0}.dp-resize-handle:hover{background:color-mix(in srgb,var(--accent) 15%,transparent)}.lp-float{width:180px}.lp-list{display:flex;flex-direction:column}.lp-item{display:flex;align-items:center;gap:.4rem;padding:.35rem .5rem;cursor:pointer;transition:background .12s;border-bottom:1px solid color-mix(in srgb,var(--border) 50%,transparent)}.lp-item:last-child{border-bottom:none}.lp-item:hover{background:var(--surface-raised)}.lp-item--selected{background:color-mix(in srgb,var(--accent) 12%,transparent)}.lp-item--hidden{opacity:.4}.lp-thumb{width:28px;height:28px;flex-shrink:0;border-radius:3px;overflow:hidden;border:1px solid var(--border);background:var(--bg)}.lp-thumb img{width:100%;height:100%;object-fit:cover;display:block}.lp-thumb-empty{width:100%;height:100%;background:repeating-conic-gradient(var(--surface-raised) 0% 25%,var(--bg) 0% 50%) 50% / 8px 8px}.lp-name{font-size:.7rem;color:var(--text);flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.lp-actions{display:flex;gap:.1rem;flex-shrink:0}.lp-eye{background:transparent;border:none;color:var(--text-muted);font-size:.75rem;padding:.1rem;cursor:pointer;line-height:1}.lp-eye:hover{color:var(--text)}.lp-eye--off{color:var(--text-subtle)}.lp-delete{background:transparent;border:none;color:var(--text-subtle);font-size:.85rem;padding:.1rem;cursor:pointer;line-height:1}.lp-delete:hover{color:var(--danger)}.lp-footer{padding:.3rem .5rem;border-top:1px solid var(--border)}.lp-add-btn{width:100%;background:transparent;border:1px dashed var(--border);border-radius:var(--radius-sm);color:var(--text-subtle);font-size:.68rem;padding:.25rem;cursor:pointer;transition:border-color .15s,color .15s}.lp-add-btn:hover{border-color:var(--accent);color:var(--accent)}.rt-tray{border:1px dashed var(--border);border-radius:var(--radius-sm);padding:.35rem;min-height:44px;transition:border-color .15s,background .15s}.rt-tray:hover,.rt-tray--empty:hover{border-color:var(--accent);background:color-mix(in srgb,var(--accent) 5%,transparent)}.rt-hint{display:flex;align-items:center;justify-content:center;height:100%;min-height:36px;font-size:.68rem;color:var(--text-subtle)}.rt-list{display:flex;gap:.3rem;align-items:center;flex-wrap:wrap}.rt-item{position:relative;width:40px;height:40px;border-radius:var(--radius-sm);overflow:hidden;border:1px solid var(--border);flex-shrink:0}.rt-item img{width:100%;height:100%;object-fit:cover;display:block}.rt-item.rt-uploading img{opacity:.5}.rt-progress-track{position:absolute;bottom:0;left:0;right:0;height:3px;background:#0006}.rt-progress-bar{height:100%;background:var(--accent);transition:width .15s ease-out}.rt-remove{position:absolute;top:1px;right:1px;width:14px;height:14px;border-radius:50%;border:none;background:#000000bf;color:var(--text-muted);font-size:.6rem;cursor:pointer;display:flex;align-items:center;justify-content:center;opacity:0;transition:opacity .15s;line-height:1}.rt-item:hover .rt-remove{opacity:1}.rt-plus{font-size:1rem;color:var(--text-subtle);padding:0 .35rem}.hp-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0000008c;display:flex;align-items:center;justify-content:center;z-index:100}.hp-modal{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);width:400px;max-height:70vh;display:flex;flex-direction:column;box-shadow:var(--shadow-lg)}.hp-header{display:flex;align-items:center;justify-content:space-between;padding:.85rem 1rem;border-bottom:1px solid var(--border)}.hp-title{font-size:.9rem;font-weight:600;color:var(--text)}.hp-close{background:none;border:none;color:var(--text-muted);font-size:1.1rem;cursor:pointer;line-height:1}.hp-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:.5rem;padding:1rem;overflow-y:auto}.hp-item{background:none;border:1px solid var(--border);border-radius:var(--radius-sm);padding:0;cursor:pointer;overflow:hidden;transition:border-color .15s}.hp-item:hover{border-color:var(--accent)}.hp-item img{width:100%;aspect-ratio:1;object-fit:cover;display:block}.hp-prompt{display:block;font-size:.62rem;color:var(--text-subtle);padding:.2rem .3rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ip-panel{position:absolute;z-index:25;width:240px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-lg);padding:.6rem;display:flex;flex-direction:column;gap:.4rem}.ip-prompt-wrap{position:relative}.ip-prompt{resize:none;min-height:44px;font-size:.8rem;padding:.35rem 2rem .35rem .5rem;width:100%;box-sizing:border-box}.ip-mic-btn{position:absolute;right:4px;top:4px;width:24px;height:24px;border:none;border-radius:50%;background:transparent;color:var(--text-muted);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:color .15s,background .15s}.ip-mic-btn:hover{background:var(--surface-raised);color:var(--text)}.ip-mic-btn--active{color:var(--danger, #ef4444);animation:ip-pulse 1.2s ease-in-out infinite}@keyframes ip-pulse{0%,to{opacity:1}50%{opacity:.5}}.ip-btn-row{display:flex;gap:.3rem;align-items:center}.ip-btn{padding:.3rem .5rem;font-size:.76rem}.ip-btn--sm{flex:0 0 auto;padding:.3rem .5rem}.ip-hint{font-size:.62rem;color:var(--text-subtle);margin-left:auto}.ip-sliders{display:flex;flex-direction:column;gap:.4rem;padding-top:.3rem;border-top:1px solid color-mix(in srgb,var(--border) 50%,transparent)}.ip-slider-row{display:flex;align-items:center;gap:.4rem}.ip-slider-row label{font-size:.65rem;color:var(--text-subtle);width:42px;flex-shrink:0}.ip-slider-row input[type=range]{-webkit-appearance:none;-moz-appearance:none;appearance:none;flex:1;height:3px;background:var(--border);border-radius:2px;outline:none;cursor:pointer;margin:0}.ip-slider-row input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;width:10px;height:10px;border-radius:50%;background:var(--text-muted);border:2px solid var(--surface);cursor:pointer;transition:background .15s}.ip-slider-row input[type=range]::-moz-range-thumb{width:10px;height:10px;border-radius:50%;background:var(--text-muted);border:2px solid var(--surface);cursor:pointer}.ip-slider-row input[type=range]:hover::-webkit-slider-thumb{background:var(--accent)}.ip-slider-row input[type=range]:hover::-moz-range-thumb{background:var(--accent)}.ip-slider-row input[type=range]::-moz-range-track{height:3px;background:var(--border);border-radius:2px;border:none}.ip-slider-row span,.ip-slider-row .ev-display{font-size:.65rem;color:var(--text-muted);width:36px;text-align:right;flex-shrink:0;font-variant-numeric:tabular-nums;cursor:text;border-radius:var(--radius-sm);padding:.05rem .15rem;margin:-.05rem -.15rem;transition:background .1s}.ip-slider-row .ev-display:hover{background:color-mix(in srgb,var(--text) 10%,transparent);color:var(--text)}.ip-slider-row .ev-input,.ts-row .ev-input{font-size:.65rem;font-variant-numeric:tabular-nums;width:42px;text-align:right;flex-shrink:0;background:var(--surface-raised);border:1px solid var(--accent);border-radius:var(--radius-sm);color:var(--text);padding:.05rem .15rem;outline:none}.ip-quick-row{display:flex;gap:.25rem;flex-wrap:wrap;padding-top:.3rem;border-top:1px solid color-mix(in srgb,var(--border) 50%,transparent)}.ip-quick-btn{padding:.2rem .35rem;font-size:.62rem;font-weight:500;color:var(--text-muted);background:transparent;border:1px solid var(--border);border-radius:var(--radius-sm);cursor:pointer;transition:border-color .15s,color .15s}.ip-quick-btn:hover{border-color:var(--text-muted);color:var(--text)}.layer-overlay-svg{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;pointer-events:none}.gen-shimmer-border{animation:gen-border-pulse 1.5s ease-in-out infinite}.gen-shimmer-sweep{animation:gen-sweep 2s ease-in-out infinite}@keyframes gen-border-pulse{0%,to{opacity:.4}50%{opacity:1}}@keyframes gen-sweep{0%{transform:translate(0)}to{transform:translate(33.33%)}}.ts-panel{width:260px}.ts-title{font-size:.7rem;font-weight:600;color:var(--text-subtle);text-transform:uppercase;letter-spacing:.04em}.ts-body{display:flex;flex-direction:column;gap:.4rem}.ts-row{display:flex;align-items:center;gap:.4rem}.ts-row label{font-size:.65rem;color:var(--text-subtle);width:42px;flex-shrink:0}.ts-row input[type=range]{-webkit-appearance:none;-moz-appearance:none;appearance:none;flex:1;height:3px;background:var(--border);border-radius:2px;outline:none;cursor:pointer;margin:0}.ts-row input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;width:10px;height:10px;border-radius:50%;background:var(--text-muted);border:2px solid var(--surface);cursor:pointer}.ts-row input[type=range]::-moz-range-thumb{width:10px;height:10px;border-radius:50%;background:var(--text-muted);border:2px solid var(--surface);cursor:pointer}.ts-row input[type=range]:hover::-webkit-slider-thumb{background:var(--accent)}.ts-row input[type=range]:hover::-moz-range-thumb{background:var(--accent)}.ts-row span,.ts-row .ev-display{font-size:.65rem;color:var(--text-muted);width:36px;text-align:right;flex-shrink:0;font-variant-numeric:tabular-nums;cursor:text;border-radius:var(--radius-sm);padding:.05rem .15rem;margin:-.05rem -.15rem;transition:background .1s}.ts-row .ev-display:hover{background:color-mix(in srgb,var(--text) 10%,transparent);color:var(--text)}.ts-color{width:28px;height:22px;border:1px solid var(--border);border-radius:var(--radius-sm);padding:0;cursor:pointer;background:none}.ts-mode-btn{padding:.2rem .4rem;font-size:.65rem;font-weight:500;color:var(--text-muted);background:transparent;border:1px solid var(--border);border-radius:var(--radius-sm);cursor:pointer;transition:border-color .15s,color .15s}.ts-mode-btn:hover{border-color:var(--text-muted);color:var(--text)}.ts-mode-btn.active{background:color-mix(in srgb,var(--accent) 18%,transparent);color:var(--accent);border-color:var(--accent)}.em-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0009;display:flex;align-items:center;justify-content:center;z-index:100}.em-modal{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);width:320px;box-shadow:var(--shadow-lg)}.em-header{display:flex;align-items:center;justify-content:space-between;padding:1rem 1.25rem;border-bottom:1px solid var(--border)}.em-title{font-size:.9rem;font-weight:600;color:var(--text)}.em-close{background:none;border:none;color:var(--text-muted);font-size:1.2rem;cursor:pointer;padding:.2rem;line-height:1}.em-close:hover{color:var(--text)}.em-body{display:flex;flex-direction:column;gap:.75rem;padding:1.25rem}.em-label{font-size:.78rem;color:var(--text-muted);flex-shrink:0}.em-format-row{display:flex;align-items:center;gap:.75rem}.em-format-btns{display:flex;gap:.35rem}.em-fmt-btn{padding:.2rem .55rem;font-size:.72rem;font-weight:500;border:1px solid var(--border);border-radius:var(--radius-sm);background:transparent;color:var(--text-muted);cursor:pointer;transition:border-color .15s,color .15s,background .15s}.em-fmt-btn.active{border-color:var(--accent);color:var(--accent);background:color-mix(in srgb,var(--accent) 10%,transparent)}.em-action{width:100%}.em-error{font-size:.82rem;color:var(--danger)}.sp-image{position:absolute;z-index:5;cursor:grab;-webkit-user-select:none;user-select:none;border-radius:var(--radius);border:1px solid var(--border);background:var(--surface);box-shadow:var(--shadow);overflow:hidden;transition:box-shadow .15s}.sp-image:hover{box-shadow:var(--shadow-lg);border-color:var(--text-subtle)}.sp-image:active{cursor:grabbing}.sp-uploading{cursor:default}.sp-uploading img{opacity:.6}.sp-image img{display:block;width:140px;height:auto;pointer-events:none}.sp-progress-track{position:absolute;bottom:22px;left:0;right:0;height:3px;background:#0006}.sp-progress-bar{height:100%;background:var(--accent);border-radius:0 1px 1px 0;transition:width .15s ease-out}.sp-remove{position:absolute;top:4px;right:4px;width:20px;height:20px;border-radius:50%;border:none;background:#000000b3;color:var(--text-muted);font-size:.75rem;cursor:pointer;display:flex;align-items:center;justify-content:center;opacity:0;transition:opacity .15s;line-height:1}.sp-image:hover .sp-remove{opacity:1}.sp-remove:hover{color:var(--danger)}.sp-filename{display:block;font-size:.62rem;color:var(--text-subtle);padding:.2rem .4rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:140px}.lib-slider{position:fixed;top:0;left:0;width:260px;height:100dvh;background:var(--surface);border-right:1px solid var(--border);transform:translate(-100%);transition:transform .25s ease;z-index:50;display:flex;flex-direction:column}.lib-slider--open{transform:translate(0)}.lib-header{display:flex;align-items:center;justify-content:space-between;padding:.85rem 1rem;border-bottom:1px solid var(--border);flex-shrink:0}.lib-title{font-size:.82rem;font-weight:600;color:var(--text)}.lib-close{background:none;border:none;color:var(--text-muted);font-size:1.1rem;cursor:pointer;line-height:1}.lib-close:hover{color:var(--text)}.lib-tabs{display:flex;border-bottom:1px solid var(--border);flex-shrink:0}.lib-tab{flex:1;padding:.45rem .5rem;font-size:.7rem;font-weight:500;color:var(--text-muted);background:transparent;border:none;border-bottom:2px solid transparent;cursor:pointer;transition:color .15s,border-color .15s}.lib-tab:hover{color:var(--text)}.lib-tab--active{color:var(--accent);border-bottom-color:var(--accent)}.lib-body{flex:1;overflow-y:auto;padding:.75rem}.lib-empty{font-size:.78rem;color:var(--text-subtle);padding:1rem .5rem}.lib-grid{display:grid;grid-template-columns:1fr 1fr;gap:.5rem}.lib-item{position:relative;border-radius:var(--radius-sm);overflow:hidden;border:1px solid var(--border);cursor:grab;transition:border-color .15s}.lib-item:hover{border-color:var(--accent)}.lib-item:active{cursor:grabbing}.lib-item img{width:100%;aspect-ratio:1;object-fit:cover;display:block}.lib-delete{position:absolute;top:3px;right:3px;width:18px;height:18px;border-radius:50%;border:none;background:#000000b3;color:var(--text-muted);font-size:.7rem;cursor:pointer;display:flex;align-items:center;justify-content:center;opacity:0;transition:opacity .15s;line-height:1}.lib-item:hover .lib-delete{opacity:1}.lib-delete:hover{color:var(--danger)}.lib-name{display:block;font-size:.58rem;color:var(--text-subtle);padding:.15rem .3rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.lib-project-group{margin-bottom:.5rem}.lib-project-header{display:flex;align-items:center;gap:.4rem;width:100%;padding:.35rem .25rem;background:transparent;border:none;cursor:pointer;color:var(--text);font-size:.72rem;font-weight:600;border-radius:var(--radius-sm);transition:background .12s}.lib-project-header:hover{background:var(--surface-raised)}.lib-chevron{font-size:.9rem;transition:transform .15s;color:var(--text-muted)}.lib-chevron--open{transform:rotate(90deg)}.lib-project-name{flex:1;text-align:left}.lib-project-count{font-size:.6rem;color:var(--text-subtle);font-weight:400}.canvas-page{background:var(--bg);overflow:hidden}.canvas-loading{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1rem;height:100dvh;color:var(--text-muted)}.canvas-loading-text{font-size:.9rem}.canvas-spinner{display:inline-block;width:24px;height:24px;border:2px solid var(--border);border-top-color:var(--accent);border-radius:50%;animation:spin .7s linear infinite}.canvas-spinner--lg{width:36px;height:36px;border-width:3px}.canvas-spinner--sm{width:14px;height:14px}@keyframes spin{to{transform:rotate(360deg)}}.canvas-status--error{color:var(--danger);margin-bottom:.5rem}.canvas-header{display:flex;align-items:center;gap:1rem;padding:.5rem 1rem;border-bottom:1px solid var(--border);background:var(--surface);flex-shrink:0;height:44px}.canvas-breadcrumb{display:flex;align-items:center;gap:.4rem;font-size:.82rem;min-width:0}.canvas-breadcrumb-link{color:var(--text-muted);text-decoration:none;white-space:nowrap;transition:color .15s}.canvas-breadcrumb-link:hover{color:var(--text)}.canvas-breadcrumb-sep{color:var(--text-subtle);font-size:.75rem;flex-shrink:0}.canvas-project-name{font-weight:600;font-size:.9rem;color:var(--text);cursor:pointer;border-bottom:1px dashed transparent;transition:border-color .15s}.canvas-project-name:hover{border-color:var(--text-subtle)}.canvas-project-name-input{font-weight:600;font-size:.9rem;color:var(--text);background:var(--surface-raised);border:1px solid var(--accent);border-radius:var(--radius-sm);padding:.1rem .4rem;outline:none;width:180px}.canvas-meta{font-size:.75rem;color:var(--text-subtle)}.canvas-header-actions{display:flex;gap:.4rem;margin-left:auto}.canvas-header-cost{font-size:.72rem;color:var(--text-subtle);font-variant-numeric:tabular-nums;padding:.15rem .5rem;background:var(--surface-raised);border-radius:var(--radius)}.canvas-header-gen{display:flex;align-items:center;gap:.4rem;font-size:.72rem;color:var(--accent)}.canvas-stage{position:relative;width:100%;height:calc(100dvh - 44px);display:flex;align-items:center;justify-content:center;background:var(--bg);overflow:hidden;overscroll-behavior:none;touch-action:none}.canvas-clip-frame{position:relative;display:inline-flex;border-radius:var(--radius);border:1px solid var(--border);box-shadow:var(--shadow-lg);will-change:transform}.canvas-viewport-wrap{position:relative;display:inline-flex;line-height:0;transform-origin:center center}.canvas-cursor--marquee{cursor:crosshair}.canvas-cursor--move{cursor:default}.canvas-cursor--move:active{cursor:grabbing}.canvas-cursor--draw{cursor:crosshair}.canvas-cursor--filter{cursor:default}.canvas-cursor--mask{cursor:crosshair}.canvas-el{background:var(--surface);display:block;-webkit-user-select:none;user-select:none}.canvas-el--hidden{visibility:hidden}.canvas-overlay{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none}.canvas-overlay--mask{opacity:.4}.canvas-overlay--hidden{opacity:0;pointer-events:none}.canvas-gen-toast{position:absolute;bottom:16px;left:50%;transform:translate(-50%);background:var(--danger);color:#fff;font-size:.8rem;padding:.4rem 1rem;border-radius:var(--radius);z-index:40;box-shadow:var(--shadow)}.btn-sm{padding:.25rem .6rem;font-size:.78rem}:root{--bg: #0a0a0a;--surface: #141414;--surface-raised: #1e1e1e;--border: #2a2a2a;--accent: #6366f1;--accent-hover: #4f52d3;--text: #f0f0f0;--text-muted: #888;--text-subtle: #555;--danger: #ef4444;--success: #22c55e;--radius-sm: 4px;--radius: 8px;--radius-lg: 12px;--font-sans: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--font-mono: "JetBrains Mono", "Fira Code", "Cascadia Code", monospace;--shadow: 0 1px 3px rgba(0, 0, 0, .5), 0 1px 2px rgba(0, 0, 0, .6);--shadow-lg: 0 10px 25px rgba(0, 0, 0, .6)}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{font-size:16px;-webkit-text-size-adjust:100%}body{background-color:var(--bg);color:var(--text);font-family:var(--font-sans);line-height:1.6;min-height:100dvh}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}button{cursor:pointer;font-family:inherit}input,textarea,select{font-family:inherit;font-size:inherit}img{max-width:100%;display:block}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.btn{display:inline-flex;align-items:center;justify-content:center;gap:.5rem;padding:.5rem 1.25rem;border-radius:var(--radius);border:none;font-size:.9rem;font-weight:500;transition:background .15s,opacity .15s;white-space:nowrap}.btn-primary{background:var(--accent);color:#fff}.btn-primary:hover{background:var(--accent-hover)}.btn-ghost{background:transparent;color:var(--text-muted);border:1px solid var(--border)}.btn-ghost:hover{color:var(--text);border-color:var(--text-muted)}.btn:disabled{opacity:.5;cursor:not-allowed}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);padding:1.5rem}.input{background:var(--surface-raised);border:1px solid var(--border);border-radius:var(--radius);color:var(--text);padding:.5rem .75rem;font-size:.9rem;outline:none;transition:border-color .15s;width:100%}.input:focus{border-color:var(--accent)}.input::placeholder{color:var(--text-subtle)}.page{min-height:100dvh;display:flex;flex-direction:column}
