:root{--ff-primary: #5f4f69;--ff-primary-hover: #6042d9;--ff-primary-active: #6019d3;--ff-hover: #f0ecff;--ff-light-blue-active: #dfd1f6;--ff-black: #1a1a1a;--ff-white: #ffffff;--ff-gray: #70747b;--ff-light-gray: #f4f3f2;--ff-light-gray-text: #d9d9d9;--ff-border: #e6e6e6;--ff-disabled: #9d9d9d;--ff-error: #ff0000;--ff-success: #00ac26;--ff-link: #6146ca;--ff-alert: #ffeec1;--ff-info-bg: #fff4d8;--ff-orange: #ff8a00;--ff-yellow: #ffe32b;--ff-price-bg: #ffe32b;--ff-price-prefix: #8c7f23;--ff-marquee-bg: #be93fe;--ff-radius-sm: 6px;--ff-radius-md: 8px;--ff-radius-lg: 16px;--ff-radius-xl: 24px;--ff-radius-pill: 32px;--ff-font-family: "Inter", ui-sans-serif, system-ui, -apple-system, sans-serif;--ff-font-size-xs: 12px;--ff-font-size-sm: 14px;--ff-font-size-base: 16px;--ff-font-size-lg: 18px;--ff-font-size-xl: 20px;--ff-h1-size: 32px;--ff-h1-weight: 900;--ff-h1-line-height: 40px;--ff-h2-size: 24px;--ff-h2-weight: 900;--ff-h2-line-height: 32px;--ff-h3-size: 21px;--ff-h3-weight: 400;--ff-h3-line-height: 24px;--ff-t1-size: 16px;--ff-t1-weight: 400;--ff-t1-line-height: 24px;--ff-t2-size: 14px;--ff-t2-weight-regular: 400;--ff-t2-weight-bold: 700;--ff-t2-line-height: 24px;--ff-t3-size: 12px;--ff-t3-weight-regular: 400;--ff-t3-weight-medium: 500;--ff-t3-line-height: 16px;--ff-title-size: 12px;--ff-title-weight: 500;--ff-title-line-height: 16px;--ff-title-transform: uppercase;--ff-title-letter-spacing: .72px;--ff-space-1: 4px;--ff-space-2: 8px;--ff-space-3: 12px;--ff-space-4: 16px;--ff-space-5: 20px;--ff-space-6: 24px;--ff-space-8: 32px;--ff-space-10: 40px;--ff-space-12: 48px;--ff-shadow-sm: 0 1px 2px rgba(0, 0, 0, .05);--ff-shadow-md: 0 4px 6px rgba(0, 0, 0, .07);--ff-shadow-lg: 0 10px 15px rgba(0, 0, 0, .1);--ff-transition-fast: .15s ease;--ff-transition-normal: .2s ease;--ff-z-toolbar: 50;--ff-z-dropdown: 100;--ff-z-lightbox: 150;--ff-z-modal-backdrop: 200;--ff-z-modal: 210;--ff-z-tooltip: 300;--ff-z-toast: 400}.pb-editor-btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--ff-space-2);padding:10px 20px;font-family:var(--ff-font-family);font-size:var(--ff-t1-size);font-weight:500;line-height:var(--ff-t1-line-height);border:none;border-radius:var(--ff-radius-md);cursor:pointer;transition:background var(--ff-transition-fast),color var(--ff-transition-fast),opacity var(--ff-transition-fast)}.pb-editor-btn--primary{background:var(--ff-primary);color:var(--ff-white)}.pb-editor-btn--primary:hover{background:var(--ff-primary-hover)}.pb-editor-btn--primary:active{background:var(--ff-primary-active)}.pb-editor-btn--primary:disabled{background:var(--ff-disabled);cursor:not-allowed;opacity:.5}.pb-editor-btn--secondary{background:var(--ff-white);color:var(--ff-primary);border:1px solid var(--ff-primary)}.pb-editor-btn--secondary:hover{background:var(--ff-hover);border-color:transparent}.pb-editor-btn--secondary:active{background:var(--ff-light-blue-active);border-color:transparent;color:var(--ff-primary-active)}.pb-editor-btn--secondary:disabled{border-color:var(--ff-disabled);color:var(--ff-disabled);cursor:not-allowed;opacity:.5}.pb-editor-btn--ghost{background:transparent;color:var(--ff-primary)}.pb-editor-btn--ghost:hover{background:var(--ff-hover)}.pb-editor-btn--ghost:active{background:var(--ff-light-blue-active)}.pb-editor-btn--negative{background:var(--ff-error);color:var(--ff-white)}.pb-editor-btn--negative:hover{opacity:.9}.pb-editor-btn--sm{padding:6px 12px;font-size:var(--ff-t2-size)}.pb-editor-btn:focus-visible{outline:2px solid var(--ff-link);outline-offset:2px}.pb-editor-input{display:block;width:100%;max-width:360px;padding:10px 12px;font-family:var(--ff-font-family);font-size:var(--ff-t1-size);line-height:var(--ff-t1-line-height);color:var(--ff-black);background:var(--ff-white);border:1px solid var(--ff-border);border-radius:var(--ff-radius-md);transition:border-color var(--ff-transition-fast),box-shadow var(--ff-transition-fast)}.pb-editor-input::placeholder{color:var(--ff-disabled)}.pb-editor-input:focus{outline:none;border-color:var(--ff-link);box-shadow:0 0 0 2px #6146ca26}.pb-editor-input--error{border-color:var(--ff-error)}.pb-editor-input--error:focus{border-color:var(--ff-error);box-shadow:0 0 0 2px #ff00001a}.pb-editor-input:disabled{background:var(--ff-light-gray);color:var(--ff-disabled);cursor:not-allowed}.pb-editor-field-error{color:var(--ff-error);font-size:var(--ff-t3-size);line-height:var(--ff-t3-line-height);margin-top:4px}.pb-editor-modal-backdrop{position:fixed;inset:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:var(--ff-z-modal-backdrop)}.pb-editor-modal{background:var(--ff-white);border-radius:var(--ff-radius-lg);box-shadow:var(--ff-shadow-lg);padding:var(--ff-space-6);max-width:480px;width:100%;z-index:var(--ff-z-modal)}.pb-editor-modal__title{font-size:var(--ff-h3-size);font-weight:700;line-height:var(--ff-h3-line-height);margin:0 0 var(--ff-space-3)}.pb-editor-modal__body{font-size:var(--ff-t1-size);line-height:var(--ff-t1-line-height);color:var(--ff-gray);margin-bottom:var(--ff-space-6)}.pb-editor-modal__footer{display:flex;justify-content:flex-end;gap:var(--ff-space-3)}.pb-editor-progress{width:100%;max-width:360px;height:8px;background:var(--ff-light-gray);border-radius:var(--ff-radius-pill);overflow:hidden}.pb-editor-progress__fill{height:100%;border-radius:var(--ff-radius-pill);transition:width .3s ease}.pb-editor-progress__fill--primary{background:var(--ff-primary)}.pb-editor-progress__fill--success{background:var(--ff-success)}.pb-editor-progress__fill--error{background:var(--ff-error)}.pb-editor-alert{display:flex;gap:var(--ff-space-3);padding:var(--ff-space-3) var(--ff-space-4);border-radius:var(--ff-radius-md);font-size:var(--ff-t2-size);line-height:var(--ff-t2-line-height);max-width:480px}.pb-editor-alert--info{background:var(--ff-info-bg);color:var(--ff-black)}.pb-editor-alert--success{background:#e6f7ec;color:var(--ff-success)}.pb-editor-alert--error{background:#ffe6e6;color:var(--ff-error)}.pb-editor-alert--warning{background:var(--ff-alert);color:var(--ff-orange)}.pb-editor-checkbox{display:flex;align-items:center;gap:var(--ff-space-2);cursor:pointer;font-size:var(--ff-t1-size)}.pb-editor-checkbox input[type=checkbox]{width:18px;height:18px;accent-color:var(--ff-primary);border-radius:var(--ff-radius-sm);cursor:pointer}.pb-editor-tooltip-wrapper{position:relative;display:inline-block}.pb-editor-tooltip{position:absolute;bottom:calc(100% + 8px);left:50%;transform:translate(-50%);background:var(--ff-black);color:var(--ff-white);font-size:var(--ff-t3-size);line-height:var(--ff-t3-line-height);padding:var(--ff-space-1) var(--ff-space-2);border-radius:var(--ff-radius-sm);white-space:nowrap;z-index:var(--ff-z-tooltip)}.pb-editor-tooltip:after{content:"";position:absolute;top:100%;left:50%;transform:translate(-50%);border:5px solid transparent;border-top-color:var(--ff-black)}.pb-editor-spinner{width:40px;height:40px;border:3px solid var(--ff-border);border-top-color:var(--ff-primary);border-radius:50%;animation:pb-editor-spin .8s linear infinite}@keyframes pb-editor-spin{to{transform:rotate(360deg)}}.pb-editor-toast-container{position:fixed;top:20px;right:20px;z-index:var(--ff-z-toast);display:flex;flex-direction:column;gap:var(--ff-space-2);pointer-events:none}.pb-editor-toast{padding:10px 20px;border-radius:var(--ff-radius-md);color:var(--ff-white);font-size:var(--ff-t2-size);font-weight:500;box-shadow:var(--ff-shadow-md);opacity:0;transition:opacity .3s;pointer-events:auto}.pb-editor-toast--error{background:var(--ff-error)}.pb-editor-toast--success{background:var(--ff-success)}.pb-editor-toast--info{background:var(--ff-black)}.print-app{--bg: var(--ff-light-gray, #f4f3f2);--bg-dark: #1a1a2e;--accent: var(--ff-yellow, #ffe32b);--accent-hover: #c9a500;--text: var(--ff-black, #1a1a1a);--text-light: var(--ff-white, #fff);--text-muted: var(--ff-disabled);--border: var(--ff-border, #e6e6e6)}.print-app *{margin:0;padding:0;box-sizing:border-box}.print-app{font-family:var(--ff-font-family, "Inter", -apple-system, BlinkMacSystemFont, sans-serif);background:var(--bg);color:var(--text);line-height:1.6}.print-app .header{position:fixed;top:0;left:0;right:0;height:64px;background:#fffffff2;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;padding:0 48px;z-index:var(--ff-z-dropdown)}.print-app .header-logo{font-size:24px;font-weight:800;color:var(--text);text-decoration:none;letter-spacing:-1px}.print-app .header-logo span{color:var(--accent-hover)}.print-app .header-nav{display:flex;gap:32px}.print-app .header-nav a{color:var(--text-muted);text-decoration:none;font-size:14px;font-weight:500;transition:color .2s}.print-app .header-nav a:hover,.print-app .header-nav a.active{color:var(--text)}.print-app .header-actions{display:flex;gap:12px;align-items:center}.print-app .header-cart{position:relative;display:flex;align-items:center;text-decoration:none;color:var(--text);padding:6px;border-radius:var(--ff-radius-md);transition:background .2s}.print-app .header-cart:hover{background:#0000000d}.print-app .cart-badge{position:absolute;top:-2px;right:-4px;background:var(--accent-hover);color:var(--ff-white);font-size:10px;font-weight:700;min-width:18px;height:18px;border-radius:9px;text-align:center;line-height:18px;padding:0 4px}.print-app .btn{padding:8px 20px;border-radius:var(--ff-radius-sm);font-size:14px;font-weight:500;text-decoration:none;border:1px solid transparent;cursor:pointer;font-family:inherit;transition:all .2s;display:inline-flex;align-items:center;gap:6px}.print-app .btn-outline{border-color:var(--border);color:var(--text);background:transparent}.print-app .btn-outline:hover{border-color:var(--text)}.print-app .btn-primary{background:var(--accent);color:var(--text);border:none;font-weight:600}.print-app .btn-primary:hover{background:var(--accent-hover)}.print-app .btn-back-cart{display:inline-flex;align-items:center;gap:4px;padding:6px 16px;border-radius:var(--ff-radius-md);font-size:13px;font-weight:600;color:var(--text-muted);text-decoration:none;border:1px solid var(--border);background:var(--ff-white);transition:all .2s;cursor:pointer;white-space:nowrap}.print-app .btn-back-cart:hover{border-color:var(--accent);color:var(--text);background:#fffef5}.print-app .order-page{max-width:1200px;margin:60px auto;padding:0 48px;display:flex;gap:48px;align-items:flex-start}.print-app .order-hero{flex:1.2}.print-app .order-hero img{width:100%;border-radius:var(--ff-radius-lg)}.print-app .order-form{flex:1}.print-app .order-form h2{font-size:28px;font-weight:800;margin-bottom:32px}.print-app .form-group{margin-bottom:24px}.print-app .form-group label{display:block;font-size:12px;font-weight:600;color:var(--text-muted);text-transform:uppercase;letter-spacing:.5px;margin-bottom:8px}.print-app .form-select{width:100%;padding:12px 16px;border:1px solid var(--border);border-radius:var(--ff-radius-md);font-size:15px;font-family:inherit;background:var(--ff-white);appearance:none;cursor:pointer;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%236b7280' stroke-width='2'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 12px center}.print-app .form-select:focus{outline:2px solid var(--ff-link, #6146ca);outline-offset:2px;border-color:var(--ff-link, #6146ca)}.print-app .qty-row{display:flex;align-items:center}.print-app .qty-btn-big{width:44px;height:44px;border:1px solid var(--border);border-radius:var(--ff-radius-md);background:var(--ff-white);font-size:20px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .15s}.print-app .qty-btn-big:hover{border-color:var(--accent)}.print-app .qty-input{width:60px;height:44px;border:1px solid var(--border);border-radius:var(--ff-radius-md);text-align:center;font-size:16px;font-weight:600;font-family:inherit;margin:0 8px}.print-app .qty-input:focus{outline:2px solid var(--ff-link, #6146ca);outline-offset:2px;border-color:var(--ff-link, #6146ca)}.print-app .price-badge{display:inline-block;padding:12px 28px;background:var(--accent);border-radius:50px;font-size:24px;font-weight:700;margin-top:32px}.print-app .btn-create-order{margin-top:16px;width:100%;padding:14px;background:var(--ff-primary);color:var(--ff-white);border:none;border-radius:var(--ff-radius-md);font-size:16px;font-weight:600;cursor:pointer;font-family:inherit;display:flex;align-items:center;justify-content:center;gap:8px;transition:background .2s}.print-app .btn-create-order:hover{background:var(--ff-primary-active)}.print-app .editor-page{display:none;flex-direction:column;min-height:calc(100vh - 64px);background:var(--ff-light-gray)}.print-app .editor-top{padding:28px 40px 0}.print-app .editor-title{font-size:32px;font-weight:800;border-bottom:2px solid var(--ff-black);display:inline-block;padding-bottom:4px;cursor:text;outline:none;min-width:200px;color:var(--ff-black)}.print-app .editor-title:empty:before{content:"Введите название проекта";color:var(--ff-black);font-style:italic;opacity:.5}.print-app .editor-title:focus:before{content:none}.print-app .editor-content{flex:1;padding:20px 40px 100px}.print-app .group-card{background:var(--ff-white);border-radius:var(--ff-radius-lg);padding:28px 32px;margin-bottom:24px;box-shadow:0 1px 3px #0000000a}.print-app .group-header{display:flex;align-items:center;gap:12px;margin-bottom:20px;flex-wrap:wrap}.print-app .group-label{font-size:16px;font-weight:700;margin-right:4px}.print-app .group-badge{display:inline-flex;align-items:center;padding:4px 12px;background:var(--ff-light-gray);border-radius:20px;font-size:13px;font-weight:500;color:var(--ff-gray)}.print-app .group-actions{margin-left:auto;display:flex;gap:10px}.print-app .group-btn{display:inline-flex;align-items:center;gap:5px;padding:6px 14px;border:1px solid var(--border);border-radius:var(--ff-radius-md);background:var(--ff-white);font-size:13px;font-weight:500;cursor:pointer;font-family:inherit;color:var(--text-muted);transition:all .2s}.print-app .group-btn:hover{border-color:var(--ff-gray);color:var(--text)}.print-app .group-btn-upload{background:var(--ff-primary);color:var(--ff-white);border-color:var(--ff-primary)}.print-app .group-btn-upload:hover{background:var(--ff-primary-active);border-color:var(--ff-primary-active);color:var(--ff-white)}.print-app .drop-zone{border:2px dashed var(--ff-border);border-radius:var(--ff-radius-lg);padding:60px 40px;text-align:center;background:#fafaf8;transition:all .2s;cursor:pointer}.print-app .drop-zone.drag-over{border-color:var(--accent);background:#fffef5}.print-app .drop-zone h3{font-size:16px;font-weight:600;color:var(--text-muted);margin-bottom:16px}.print-app .drop-zone-btn{padding:10px 24px;background:#4a4a5a;color:var(--ff-white);border:none;border-radius:var(--ff-radius-md);font-size:14px;font-weight:500;cursor:pointer;font-family:inherit;display:inline-flex;align-items:center;gap:8px;transition:background .2s}.print-app .drop-zone-btn:hover{background:#3a3a4a}.print-app .photo-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,180px));gap:12px}.print-app .photo-card{position:relative;cursor:pointer;padding-bottom:24px}.print-app .photo-thumb{position:relative;overflow:hidden;background:var(--ff-light-gray)}.print-app .photo-thumb img{width:100%;height:100%;object-fit:cover;display:block}.print-app .photo-backdrop{position:absolute;inset:0;background:#0006;z-index:1;display:none}.print-app .photo-card:hover .photo-backdrop{display:block}.print-app .photo-delete-btn{position:absolute;top:0;right:0;width:40px;height:40px;background:none;border:none;cursor:pointer;z-index:2;display:none;align-items:center;justify-content:center;padding:8px}.print-app .photo-card:hover .photo-delete-btn{display:flex}.print-app .photo-delete-btn:hover svg{opacity:.7}.print-app .photo-delete-btn svg{width:24px;height:24px;color:var(--ff-white)}.print-app .photo-copies-badge{position:absolute;bottom:6px;right:6px;z-index:3;background:var(--ff-white);color:var(--ff-black);font-size:13px;font-weight:700;min-width:24px;height:24px;line-height:24px;text-align:center;border-radius:var(--ff-radius-sm);padding:0 6px;pointer-events:none;box-shadow:var(--ff-shadow-sm)}.print-app .photo-qty-pill{position:absolute;bottom:8px;left:50%;transform:translate(-50%);z-index:2;display:none}.print-app .photo-card:hover .photo-qty-pill{display:block}.print-app .photo-card:hover .photo-copies-badge{display:none}.print-app .dpi-warning-print{position:absolute;top:6px;left:6px;z-index:4;width:24px;height:24px;display:flex;align-items:center;justify-content:center;font-size:18px;line-height:1;border-radius:4px;background:#ffc107eb;color:var(--ff-black);cursor:help;pointer-events:auto;box-shadow:0 1px 3px #0000004d}.print-app .dpi-warning-print.critical{background:#ea4335eb;color:var(--ff-white)}.print-app .dpi-warning-print .dpi-tooltip{display:none;position:absolute;top:110%;left:0;background:#000000d9;color:var(--ff-white);font-size:11px;padding:4px 8px;border-radius:4px;white-space:nowrap;pointer-events:none}.print-app .dpi-warning-print:hover .dpi-tooltip{display:block}.print-app .photo-qty-inner{display:flex;align-items:center;background:var(--ff-white);border-radius:var(--ff-radius-pill);height:32px;overflow:hidden}.print-app .photo-qty-btn{width:40px;height:32px;background:none;border:none;cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--ff-primary);transition:opacity .15s;padding:0}.print-app .photo-qty-btn:hover{opacity:.7}.print-app .photo-qty-btn.disabled{color:var(--ff-disabled);cursor:default}.print-app .photo-qty-btn svg{width:12px;height:12px}.print-app .photo-qty-val{width:25px;font-size:16px;font-weight:700;color:var(--ff-black);text-align:center;border:none;background:none;font-family:inherit;padding:0;-moz-appearance:textfield}.print-app .photo-qty-val::-webkit-outer-spin-button,.print-app .photo-qty-val::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.print-app .photo-name{padding:4px 0 0;font-size:12px;color:var(--text-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.print-app .viewer-overlay{display:none;position:fixed;inset:0;background:#14141a;z-index:var(--ff-z-lightbox);flex-direction:column;align-items:center;justify-content:center;overflow:hidden}.print-app .viewer-overlay.open{display:flex}.print-app .viewer-close{position:absolute;top:20px;right:24px;width:40px;height:40px;background:#ffffff1f;border:none;border-radius:50%;color:var(--ff-white);font-size:24px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background .2s;z-index:10}.print-app .viewer-close:hover{background:#ffffff40}.print-app .viewer-nav{position:absolute;top:50%;transform:translateY(-50%);width:48px;height:48px;background:#ffffff1a;border:none;border-radius:50%;color:var(--ff-white);font-size:26px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background .2s;z-index:10}.print-app .viewer-nav:hover{background:#ffffff38}.print-app .viewer-nav.prev{left:20px}.print-app .viewer-nav.next{right:20px}.print-app .viewer-main{position:relative;display:flex;align-items:center;justify-content:center}.print-app .viewer-img-area{position:relative;user-select:none;-webkit-user-select:none;overflow:hidden}.print-app .viewer-img-area img{display:block;max-width:none}.print-app .crop-mask{position:absolute;background:#0000008c;pointer-events:none}.print-app .crop-rect{position:absolute;border:2px solid rgba(100,160,255,.8);cursor:move;z-index:3}.print-app .crop-handle{position:absolute;width:14px;height:14px;background:var(--ff-white);border:2px solid var(--ff-border);border-radius:50%;z-index:4}.print-app .crop-handle.tl{top:-7px;left:-7px;cursor:nw-resize}.print-app .crop-handle.tr{top:-7px;right:-7px;cursor:ne-resize}.print-app .crop-handle.bl{bottom:-7px;left:-7px;cursor:sw-resize}.print-app .crop-handle.br{bottom:-7px;right:-7px;cursor:se-resize}.print-app .crop-handle.tm{top:-7px;left:50%;transform:translate(-50%);cursor:n-resize}.print-app .crop-handle.bm{bottom:-7px;left:50%;transform:translate(-50%);cursor:s-resize}.print-app .crop-handle.ml{top:50%;left:-7px;transform:translateY(-50%);cursor:w-resize}.print-app .crop-handle.mr{top:50%;right:-7px;transform:translateY(-50%);cursor:e-resize}.print-app .viewer-angle-control{display:inline-flex;align-items:center;gap:8px;padding:4px 12px;background:#ffffff1a;border:1px solid rgba(255,255,255,.12);border-radius:var(--ff-radius-md)}.print-app .viewer-angle-control label{color:#ffffffb3;font-size:12px;white-space:nowrap}.print-app .viewer-angle-control input[type=range]{width:110px;height:4px;accent-color:#64a0ff;cursor:pointer}.print-app .viewer-angle-control .angle-val{color:var(--ff-white);font-size:12px;font-weight:600;min-width:38px;text-align:center}.print-app .viewer-angle-control button{background:none;border:1px solid rgba(255,255,255,.2);border-radius:4px;color:#fff9;font-size:11px;padding:2px 6px;cursor:pointer}.print-app .viewer-angle-control button:hover{background:#ffffff26;color:var(--ff-white)}.print-app .viewer-toolbar{position:absolute;bottom:0;left:0;right:0;background:#0009;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);padding:14px 28px;display:flex;align-items:center;gap:12px;flex-wrap:wrap;z-index:10}.print-app .viewer-toolbar-item{display:inline-flex;align-items:center;gap:5px;padding:6px 14px;background:#ffffff1f;border:1px solid rgba(255,255,255,.15);border-radius:var(--ff-radius-md);color:var(--ff-white);font-size:13px;font-weight:500;cursor:pointer;font-family:inherit;transition:background .2s;white-space:nowrap}.print-app .viewer-toolbar-item:hover{background:#fff3}.print-app .viewer-toolbar-item.filename{background:none;border:none;cursor:default;font-weight:600;font-size:14px;max-width:120px;overflow:hidden;text-overflow:ellipsis}.print-app .viewer-toolbar-item.delete{background:#dc262699;border-color:#dc262666}.print-app .viewer-toolbar-item.delete:hover{background:#dc2626cc}.print-app .viewer-dpi-indicator.warning{background:#ffc107b3;border-color:#ffc10780}.print-app .viewer-dpi-indicator.critical{background:#dc262699;border-color:#dc262666}.print-app .viewer-dpi-indicator.good{background:#22c55e80;border-color:#22c55e4d}.print-app .viewer-quality-banner{position:absolute;top:16px;left:16px;z-index:10;display:none;align-items:center;gap:8px;padding:8px 16px;border-radius:var(--ff-radius-md);font-size:14px;color:var(--ff-black);pointer-events:none}.print-app .viewer-quality-banner.warning{display:flex;background:#ffeec1f2}.print-app .viewer-quality-banner.critical{display:flex;background:#fecacaf2}.print-app .viewer-quality-banner .vqb-icon{width:20px;height:20px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:700;color:var(--ff-white);flex-shrink:0}.print-app .viewer-quality-banner.warning .vqb-icon{background:var(--ff-orange)}.print-app .viewer-quality-banner.critical .vqb-icon{background:var(--ff-error)}.print-app .viewer-toolbar-spacer{flex:1}.print-app .viewer-qty{display:inline-flex;align-items:center;gap:6px}.print-app .viewer-qty-btn{width:30px;height:30px;background:#ffffff26;border:1px solid rgba(255,255,255,.2);border-radius:var(--ff-radius-md);color:var(--ff-white);font-size:18px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background .15s}.print-app .viewer-qty-btn:hover{background:#ffffff4d}.print-app .viewer-qty-val{font-size:15px;font-weight:700;color:var(--ff-white);min-width:20px;text-align:center}.print-app .viewer-dropdown{position:relative;display:inline-block}.print-app .viewer-dropdown-menu{display:none;position:absolute;bottom:100%;left:0;margin-bottom:6px;background:var(--ff-white);border-radius:var(--ff-radius-lg);box-shadow:var(--ff-shadow-lg);min-width:160px;z-index:20;overflow:hidden}.print-app .viewer-dropdown-menu.open{display:block}.print-app .viewer-dropdown-item{display:block;width:100%;padding:10px 18px;border:none;background:none;font-size:14px;font-weight:500;color:var(--ff-black);cursor:pointer;text-align:left;font-family:inherit;transition:background .15s}.print-app .viewer-dropdown-item:hover{background:var(--ff-light-gray)}.print-app .viewer-dropdown-item.active{color:var(--ff-primary);font-weight:600}.print-app .editor-bottom{position:fixed;bottom:0;left:0;right:0;background:var(--ff-white);border-top:1px solid var(--border);padding:12px 40px;display:flex;align-items:center;justify-content:space-between;z-index:50}.print-app .editor-bottom-left{display:flex;align-items:center;gap:16px}.print-app .btn-add-group{padding:10px 20px;border:1px solid var(--border);border-radius:var(--ff-radius-md);background:var(--ff-white);font-size:14px;cursor:pointer;font-family:inherit;display:flex;align-items:center;gap:6px;color:var(--text-muted);font-weight:500;transition:all .2s}.print-app .btn-add-group:hover{border-color:var(--text);color:var(--text)}.print-app .editor-bottom-right{display:flex;align-items:center;gap:16px}.print-app .photo-counter{display:flex;align-items:center;gap:6px;font-size:14px;color:var(--text-muted);font-weight:500}.print-app .photo-counter svg{width:18px;height:18px}.print-app .editor-price{display:inline-block;padding:8px 20px;background:var(--accent);border-radius:50px;font-size:16px;font-weight:700}.print-app .btn-cart-editor{padding:10px 24px;border:1px solid var(--border);border-radius:var(--ff-radius-md);background:var(--ff-white);font-size:14px;cursor:pointer;font-family:inherit;display:flex;align-items:center;gap:6px;font-weight:500;transition:all .2s}.print-app .btn-cart-editor:hover{border-color:var(--accent)}.print-app .btn-save-exit{padding:10px 24px;background:var(--ff-white, #fff);color:var(--ff-primary);border:1px solid var(--ff-primary);border-radius:var(--ff-radius-md);font-size:14px;font-weight:600;cursor:pointer;font-family:inherit;transition:background .2s}.print-app .btn-save-exit:hover{background:var(--ff-hover);border-color:transparent}.print-app .btn-save-exit:active{background:var(--ff-light-blue-active);border-color:transparent;color:var(--ff-primary-active)}.print-app .modal-overlay{display:none;position:fixed;inset:0;background:#00000073;z-index:var(--ff-z-modal-backdrop);align-items:center;justify-content:center}.print-app .modal-overlay.open{display:flex}.print-app .modal-box{background:var(--ff-white);border-radius:var(--ff-radius-lg);padding:32px;width:420px;max-width:90vw;box-shadow:var(--ff-shadow-lg)}.print-app .modal-form-group{margin-bottom:18px}.print-app .modal-form-group label{display:block;font-size:12px;font-weight:600;color:var(--text-muted);text-transform:uppercase;letter-spacing:.5px;margin-bottom:6px}.print-app .modal-form-group select{width:100%;padding:10px 14px;border:1px solid var(--border);border-radius:var(--ff-radius-md);font-size:14px;font-family:inherit;background:var(--ff-white);appearance:none;cursor:pointer;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%236b7280' stroke-width='2'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 12px center}.print-app .modal-actions{display:flex;gap:10px;margin-top:24px}.print-app .modal-btn{flex:1;padding:10px;border-radius:var(--ff-radius-md);font-size:14px;font-weight:600;cursor:pointer;font-family:inherit;border:none;transition:all .2s}.print-app .modal-btn-primary{background:var(--ff-primary);color:var(--ff-white)}.print-app .modal-btn-primary:hover{background:var(--ff-primary-active)}.print-app .modal-btn-cancel{background:var(--ff-light-gray);color:var(--text)}.print-app .modal-btn-cancel:hover{background:var(--ff-border)}@media(max-width:1100px){.print-app .photo-grid{grid-template-columns:repeat(auto-fill,minmax(130px,170px))}}@media(max-width:900px){.print-app .header-nav{display:none}.print-app .header{padding:0 20px}.print-app .order-page{flex-direction:column;padding:0 20px;margin:32px auto;gap:32px}.print-app .editor-top{padding:20px 16px 0}.print-app .editor-content{padding:16px 16px 100px}.print-app .group-card{padding:20px 16px}.print-app .group-header{flex-direction:column;align-items:flex-start}.print-app .group-actions{margin-left:0}.print-app .editor-bottom{padding:12px 16px;flex-wrap:wrap;gap:12px}.print-app .editor-bottom-right{flex-wrap:wrap;gap:10px}.print-app .viewer-toolbar{padding:10px 14px;gap:8px}}@media(max-width:640px){.print-app .photo-grid{grid-template-columns:repeat(auto-fill,minmax(110px,1fr));gap:10px}}.print-app .mobile-upload-overlay{display:none;position:fixed;inset:0;background:#000000b3;z-index:var(--ff-z-modal-backdrop);align-items:center;justify-content:center}.print-app .mobile-upload-overlay.open{display:flex}.print-app .mobile-upload-box{background:#2a2a3a;border-radius:var(--ff-radius-lg);padding:40px;width:520px;max-width:92vw;color:var(--ff-white);text-align:center;position:relative}.print-app .mobile-upload-box h2{font-size:22px;font-weight:700;margin-bottom:8px}.print-app .mobile-upload-close{position:absolute;top:16px;right:16px;width:32px;height:32px;background:#ffffff1a;border:none;border-radius:50%;color:var(--ff-white);font-size:20px;cursor:pointer;display:flex;align-items:center;justify-content:center}.print-app .mobile-upload-close:hover{background:#fff3}.print-app .mobile-upload-steps{display:flex;align-items:center;justify-content:center;gap:12px;margin:24px 0 20px;color:#ffffffb3;font-size:13px}.print-app .mobile-upload-step{display:flex;flex-direction:column;align-items:center;gap:6px;max-width:120px}.print-app .mobile-upload-step svg{width:32px;height:32px;opacity:.8}.print-app .mobile-upload-step-arrow{font-size:20px;opacity:.5;margin-top:-10px}.print-app .mobile-upload-qr{background:var(--ff-white);border-radius:var(--ff-radius-lg);padding:16px;display:inline-block;margin:16px 0}.print-app .mobile-upload-qr img{width:220px;height:220px;display:block}.print-app .mobile-upload-link{margin-top:16px;color:#fff9;font-size:13px}.print-app .mobile-upload-link-row{display:flex;align-items:center;gap:8px;margin-top:8px;justify-content:center}.print-app .mobile-upload-link-input{background:#ffffff1a;border:1px solid rgba(255,255,255,.15);border-radius:var(--ff-radius-md);color:var(--ff-white);padding:8px 14px;font-size:13px;font-family:inherit;width:320px;max-width:60vw;text-overflow:ellipsis;outline:none}.print-app .mobile-upload-link-input:focus{border-color:#ffffff4d}.print-app .mobile-upload-copy-btn{padding:8px 16px;background:var(--ff-yellow);color:var(--ff-black);border:none;border-radius:var(--ff-radius-md);font-size:13px;font-weight:600;cursor:pointer;font-family:inherit;white-space:nowrap}.print-app .mobile-upload-copy-btn:hover{background:#e6b800}.print-app .mobile-upload-status{margin-top:16px;font-size:13px;color:#ffffff80}.print-app .mobile-upload-new-count{display:inline-block;padding:2px 10px;background:var(--ff-success);color:var(--ff-white);border-radius:var(--ff-radius-lg);font-size:12px;font-weight:600;margin-left:6px}.print-app .group-btn-phone{background:#e8f5e9;color:#2e7d32}.print-app .group-btn-phone:hover{background:#c8e6c9}.print-app .drop-zone-btn-phone{display:inline-flex;align-items:center;gap:6px;margin-top:8px;padding:10px 22px;background:#e8f5e9;color:#2e7d32;border:none;border-radius:var(--ff-radius-lg);font-size:14px;font-weight:600;cursor:pointer}.print-app .drop-zone-btn-phone:hover{background:#c8e6c9}.print-app .group-btn-yadisk{background:#ffdb4d;color:var(--ff-black)}.print-app .group-btn-yadisk:hover{background:#ffd000}.print-app .drop-zone-btn-yadisk{display:inline-flex;align-items:center;gap:6px;margin-top:8px;padding:10px 22px;background:#ffdb4d;color:var(--ff-black);border:none;border-radius:var(--ff-radius-lg);font-size:14px;font-weight:600;cursor:pointer}.print-app .drop-zone-btn-yadisk:hover{background:#ffd000}.print-app .yadisk-overlay{display:none;position:fixed;inset:0;background:#000000b3;z-index:var(--ff-z-modal-backdrop);align-items:center;justify-content:center}.print-app .yadisk-overlay.open{display:flex}.print-app .yadisk-box{background:var(--ff-white);border-radius:var(--ff-radius-lg);padding:32px;width:520px;max-width:92vw;text-align:center;position:relative}.print-app .yadisk-box h2{font-size:20px;font-weight:700;margin-bottom:8px}.print-app .yadisk-box p{font-size:13px;color:var(--ff-gray);margin-bottom:20px}.print-app .yadisk-close{position:absolute;top:12px;right:12px;width:32px;height:32px;background:var(--ff-light-gray);border:none;border-radius:50%;font-size:18px;cursor:pointer;display:flex;align-items:center;justify-content:center}.print-app .yadisk-close:hover{background:var(--ff-border)}.print-app .yadisk-input{width:100%;padding:12px 16px;border:1px solid var(--ff-border);border-radius:var(--ff-radius-md);font-size:14px;font-family:inherit;outline:none}.print-app .yadisk-input:focus{border-color:var(--ff-link, #6146ca);outline:2px solid var(--ff-link, #6146ca);outline-offset:2px}.print-app .yadisk-btn{margin-top:16px;padding:12px 32px;background:var(--ff-yellow);color:var(--ff-black);border:none;border-radius:var(--ff-radius-md);font-size:15px;font-weight:600;cursor:pointer;font-family:inherit}.print-app .yadisk-btn:hover{background:#e6b800}.print-app .yadisk-btn:disabled{opacity:.5;cursor:not-allowed}.print-app .yadisk-status{margin-top:12px;font-size:13px;color:var(--ff-gray)}.print-app .yadisk-progress{margin-top:8px;height:4px;background:var(--ff-light-gray);border-radius:2px;overflow:hidden}.print-app .yadisk-progress-bar{height:100%;background:var(--ff-yellow);transition:width .3s;width:0}.book-uploader{--bg-main: var(--ff-light-gray, #f4f3f2);--bg-panel: var(--ff-white, #ffffff);--bg-hover: #f7f8fa;--bg-active: #eef1f5;--accent: var(--ff-yellow, #ffe32b);--accent-hover: #c9a500;--accent-dark: #b89800;--text-primary: var(--ff-black, #1a1a1a);--text-secondary: var(--ff-gray, #70747b);--text-muted: var(--ff-disabled);--border: var(--ff-border, #e6e6e6);--border-light: #e8eaed;--danger: var(--ff-error, #ff0000);--danger-hover: #cc0000;--success: var(--ff-success, #00ac26);--info: #4285f4;--purple: var(--ff-primary, #5f4f69);--radius-sm: var(--ff-radius-sm, 6px);--radius-md: var(--ff-radius-md, 8px);--radius-lg: var(--ff-radius-lg, 16px);--shadow-sm: var(--ff-shadow-sm, 0 1px 3px rgba(0,0,0,.08));--shadow-md: var(--ff-shadow-md, 0 2px 8px rgba(0,0,0,.1));--shadow-lg: var(--ff-shadow-lg, 0 4px 20px rgba(0,0,0,.12));font-family:var(--ff-font-family, "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif);max-width:100%;margin:0 auto;padding:24px 40px 120px;background:var(--bg-panel);border-radius:24px}.page-loading{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:80px 20px;color:var(--text-muted)}.spinner{width:40px;height:40px;border:3px solid var(--border, #dadce0);border-top-color:var(--accent, #ffe32b);border-radius:50%;animation:spin .8s linear infinite;margin-bottom:12px}.upload-header{display:flex;flex-direction:column;gap:12px;margin-bottom:24px}.upload-title-input{font-size:32px;font-weight:900;border:none;border-bottom:3px solid var(--text-primary);background:none;color:var(--text-primary);outline:none;padding:4px 0 8px;font-family:inherit;max-width:100%;transition:all .2s}.upload-title-input::placeholder{color:var(--ff-black);font-weight:900}.upload-title-input:hover{background:var(--bg-hover)}.upload-title-input:focus{background:none;border-bottom-color:var(--ff-link, #6146ca)}.upload-title-row{display:flex;align-items:center;gap:12px}.upload-title-actions{display:none;gap:8px;align-items:center;flex-shrink:0}.upload-title-actions.visible{display:flex}.btn-title-save{height:36px;padding:0 16px;background:var(--ff-primary);color:var(--ff-white);border:none;border-radius:var(--ff-radius-md, 8px);font-size:14px;font-weight:600;cursor:pointer;font-family:inherit;transition:background .2s}.btn-title-save:hover{background:var(--ff-primary-hover)}.btn-title-save:active{background:var(--ff-primary-active)}.btn-title-cancel{height:36px;padding:0 16px;background:var(--ff-white);color:var(--ff-primary);border:1px solid var(--ff-border, #dadce0);border-radius:var(--ff-radius-md, 8px);font-size:14px;font-weight:600;cursor:pointer;font-family:inherit;transition:all .2s}.btn-title-cancel:hover{background:var(--ff-hover);border-color:transparent}.btn-title-cancel:active{background:var(--ff-light-blue-active);border-color:transparent;color:var(--ff-primary-active)}.upload-tags{display:flex;flex-wrap:wrap;gap:8px;align-items:center}.upload-tag{display:inline-flex;align-items:center;gap:4px;padding:8px 16px;background:var(--ff-light-gray);border:none;border-radius:32px;font-size:12px;font-weight:500;color:#70747b}.upload-tag svg{width:14px;height:14px;opacity:.6}.btn-download-templates{display:inline-flex;align-items:center;gap:6px;padding:8px 16px;border-radius:32px;background:var(--ff-white);color:var(--ff-primary);font-size:12px;font-weight:500;border:1px solid var(--ff-primary);cursor:pointer;font-family:inherit;transition:all .2s}.btn-download-templates svg{width:14px;height:14px}.btn-download-templates:hover{background:var(--ff-hover);border-color:transparent}.btn-download-templates:active{background:var(--ff-light-blue-active);border-color:transparent;color:var(--ff-primary-active)}.product-section{margin-bottom:24px}.product-section-header{display:flex;align-items:center;gap:16px;margin-bottom:16px}.product-section-header h3{font-size:16px;font-weight:400;color:var(--ff-black)}.btn-product-menu{width:32px;height:32px;border-radius:50%;border:1px solid var(--ff-border);background:var(--ff-white);font-size:18px;color:var(--text-secondary);cursor:pointer;display:flex;align-items:center;justify-content:center;letter-spacing:0;transition:all .2s}.btn-product-menu:hover{border-color:var(--text-secondary)}.product-dropdown{position:absolute;top:40px;left:0;z-index:100;background:var(--ff-white);border-radius:var(--ff-radius-md);box-shadow:var(--ff-shadow-lg);padding:4px 0;min-width:220px}.product-dropdown-item{display:flex;align-items:center;gap:10px;width:100%;padding:10px 16px;border:none;background:none;font-size:14px;font-family:inherit;cursor:pointer;color:var(--text-primary);transition:background .15s}.product-dropdown-item:hover{background:var(--bg-hover)}.product-dropdown-item.danger{color:var(--danger)}.product-dropdown-item.danger:hover{background:#fef0ef}.confirm-overlay{position:fixed;inset:0;z-index:var(--ff-z-toast);background:#00000073;display:flex;align-items:center;justify-content:center;animation:confirmFadeIn .2s ease}@keyframes confirmFadeIn{0%{opacity:0}to{opacity:1}}.confirm-card{background:var(--ff-white);border-radius:var(--ff-radius-lg);padding:36px 40px 28px;min-width:340px;max-width:420px;text-align:center;box-shadow:var(--ff-shadow-lg);animation:confirmSlideIn .25s ease}@keyframes confirmSlideIn{0%{transform:scale(.92) translateY(10px);opacity:0}to{transform:none;opacity:1}}.confirm-icon{width:56px;height:56px;margin:0 auto 18px;background:#ffb020;border-radius:var(--ff-radius-lg);transform:rotate(45deg);display:flex;align-items:center;justify-content:center}.confirm-icon span{transform:rotate(-45deg);font-size:28px;font-weight:800;color:var(--ff-white);line-height:1}.confirm-title{font-size:22px;font-weight:700;color:var(--text-primary, #1a1a1a);margin-bottom:8px}.confirm-text{font-size:15px;color:var(--text-secondary, #5f6368);margin-bottom:28px;line-height:1.4}.confirm-buttons{display:flex;gap:12px;justify-content:center}.confirm-btn{padding:12px 36px;border-radius:var(--ff-radius-md);font-size:15px;font-weight:600;font-family:inherit;cursor:pointer;transition:background .15s,border-color .15s}.confirm-btn-no{background:var(--ff-white);color:var(--text-primary, #1a1a1a);border:1.5px solid #d0d0d0}.confirm-btn-no:hover{border-color:#aaa;background:#fafafa}.confirm-btn-yes{background:var(--ff-primary);color:var(--ff-white);border:1.5px solid var(--ff-primary)}.confirm-btn-yes:hover{background:var(--ff-primary-hover);border-color:var(--ff-primary-hover)}.batch-progress-overlay{position:fixed;inset:0;z-index:var(--ff-z-toast);background:#00000073;display:flex;align-items:center;justify-content:center;animation:confirmFadeIn .2s ease}.batch-progress-card{background:var(--ff-white);border-radius:var(--ff-radius-lg);padding:28px 32px 24px;width:480px;max-width:92vw;max-height:80vh;box-shadow:var(--ff-shadow-lg);animation:confirmSlideIn .25s ease;display:flex;flex-direction:column}.batch-progress-header{display:flex;align-items:center;gap:12px;margin-bottom:16px}.batch-progress-spinner{width:28px;height:28px;border:3px solid var(--border, #dadce0);border-top-color:var(--ff-primary);border-radius:50%;animation:spin .8s linear infinite;flex-shrink:0}.batch-progress-spinner.done{animation:none;border-color:#34a853;border-top-color:#34a853}.batch-progress-title{font-size:18px;font-weight:700;color:var(--text-primary, #1a1a1a)}.batch-progress-subtitle{font-size:13px;color:var(--text-secondary, #5f6368);margin-bottom:12px}.batch-progress-bar-wrap{height:8px;background:var(--bg-active, #eef1f5);border-radius:4px;overflow:hidden;margin-bottom:16px}.batch-progress-bar{height:100%;background:var(--ff-primary);border-radius:4px;transition:width .3s ease;width:0%}.batch-progress-bar.done{background:#34a853}.batch-progress-log{flex:1;overflow-y:auto;max-height:300px;border:1px solid var(--border-light, #e8eaed);border-radius:var(--ff-radius-md);padding:8px 0;margin-bottom:16px;font-size:13px;line-height:1.6}.batch-progress-log::-webkit-scrollbar{width:6px}.batch-progress-log::-webkit-scrollbar-track{background:transparent}.batch-progress-log::-webkit-scrollbar-thumb{background:var(--border, #dadce0);border-radius:3px}.batch-log-item{padding:3px 12px;display:flex;align-items:flex-start;gap:8px}.batch-log-item.success .batch-log-icon{color:#34a853}.batch-log-item.error .batch-log-icon{color:#ea4335}.batch-log-item.warning .batch-log-icon{color:#e6a700}.batch-log-item.info .batch-log-icon{color:#4285f4}.batch-log-icon{flex-shrink:0;width:18px;text-align:center;font-weight:700}.batch-log-text{color:var(--text-secondary, #5f6368);word-break:break-word}.batch-log-text strong{color:var(--text-primary, #1a1a1a);font-weight:600}.batch-progress-summary{display:flex;gap:16px;justify-content:center;margin-bottom:16px}.batch-summary-item{text-align:center;font-size:13px;color:var(--text-secondary, #5f6368)}.batch-summary-item .num{font-size:22px;font-weight:800;display:block;line-height:1.2}.batch-summary-item .num.ok{color:#34a853}.batch-summary-item .num.err{color:#ea4335}.batch-summary-item .num.skip{color:#e6a700}.batch-progress-close{display:block;width:100%;padding:12px;border-radius:var(--ff-radius-md);font-size:15px;font-weight:600;font-family:inherit;cursor:pointer;background:var(--ff-primary);color:var(--ff-white);border:none;transition:background .15s}.batch-progress-close:hover{background:var(--ff-primary-hover)}.batch-progress-close:disabled{opacity:.5;cursor:default}.btn-add-book{display:inline-flex;align-items:center;gap:8px;padding:16px 24px;background:var(--ff-primary);color:var(--ff-white);border:none;border-radius:var(--ff-radius-md);font-size:14px;font-weight:700;cursor:pointer;font-family:inherit;margin-top:16px;transition:all .2s}.btn-add-book:hover{background:var(--ff-primary-hover)}.slots-grid{display:flex;flex-wrap:wrap;gap:24px 0;position:relative}.slot-card{width:132px;border:none;border-radius:0;overflow:visible;cursor:pointer;background:none;position:relative;display:flex;flex-direction:column;gap:0;margin-right:20px}.slot-card[data-slot-type=cover]{cursor:default}.slot-card.filled .slot-thumb{outline-color:var(--ff-primary)}.slot-card.uploading{border-color:#ffe32b}.slot-thumb{width:100%;background:var(--ff-white);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;padding:6px;overflow:visible;position:relative;border:1px solid rgba(0,0,0,.1);border-radius:4px;outline:1px solid transparent;transition:outline-color .15s}.slot-card:hover .slot-thumb{outline-color:var(--ff-primary)}.slot-thumb img{width:100%;height:100%;object-fit:contain;position:absolute;inset:0}.slot-thumb-spinner{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;background:var(--ff-white);z-index:1}.slot-thumb-spinner:after{content:"";width:24px;height:24px;border:3px solid #dadce0;border-top-color:#ffe32b;border-radius:50%;animation:spin .8s linear infinite}.slot-thumb img.loaded+.slot-thumb-spinner,.slot-thumb img.error+.slot-thumb-spinner{display:none}.slot-thumb .slot-icon{color:#9aa0a6;line-height:0;margin-bottom:2px}.slot-thumb .slot-icon svg{width:24px;height:24px;display:block}.slot-thumb .slot-formats{font-size:9px;color:#9aa0a6;font-weight:500;line-height:1.2}.slot-thumb .slot-dims{font-size:9px;color:#9aa0a6;line-height:1.2;text-align:center}.slot-upload-progress{position:absolute;inset:0;background:#ffffffd9;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px}.slot-upload-progress .spinner{width:28px;height:28px;margin:0}.slot-upload-progress-text{font-size:11px;color:#ffe32b;font-weight:600;line-height:1}.slot-upload-progress-bar{position:absolute;bottom:0;left:0;right:0;height:4px;background:#0000001a;border-radius:0 0 8px 8px;overflow:hidden}.slot-upload-progress-bar-fill{height:100%;background:#ffe32b;border-radius:0 0 8px 8px;transition:width .15s ease;width:0%}.slot-info{padding:0;text-align:center}.slot-label{display:none}.slot-dims{font-size:10px;color:#9aa0a6;line-height:1.4;text-align:center}.slot-filename{font-size:12px;font-weight:500;color:var(--ff-black);margin-top:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;text-align:center}.slot-card.filled .slot-info{padding:0;background:none}.slot-card.filled .slot-label,.slot-card.filled .slot-dims{display:none}.slot-warning{position:absolute;bottom:4px;right:4px;z-index:2;width:22px;height:22px;border-radius:5px;background:#ffc107eb;color:var(--ff-black);display:flex;align-items:center;justify-content:center;cursor:help;font-size:14px;line-height:1;box-shadow:var(--ff-shadow-sm)}.slot-warning-tooltip{display:none;position:absolute;bottom:100%;margin-bottom:4px;background:var(--ff-black);color:var(--ff-white);font-size:11px;padding:6px 10px;border-radius:var(--ff-radius-sm);white-space:nowrap;z-index:10;pointer-events:none;right:0}.slot-warning:hover .slot-warning-tooltip{display:block}.slot-hover-label{text-align:center;color:#00000040;font-size:11px;font-weight:400;white-space:nowrap;line-height:1;margin-top:1px}.slot-delete{position:absolute;top:-8px;right:-8px;width:32px;height:32px;background:var(--ff-error);border:2px solid var(--ff-white);border-radius:50%;color:var(--ff-white);cursor:pointer;display:none;align-items:center;justify-content:center;font-size:16px;z-index:4}.slot-card.filled:hover .slot-delete{display:flex}.slot-delete:hover{background:#c00}.slot-delete-spread{position:absolute;top:-8px;right:-8px;width:32px;height:32px;background:var(--ff-error);border:2px solid var(--ff-white);border-radius:50%;color:var(--ff-white);cursor:pointer;display:none;align-items:center;justify-content:center;font-size:16px;z-index:4}.slot-card:not(.filled):hover .slot-delete-spread{display:flex}.slot-delete-spread:hover{background:#c00}.slot-edit{position:absolute;top:-8px;left:-8px;width:32px;height:32px;background:var(--ff-primary);border:2px solid var(--ff-white);border-radius:50%;color:var(--ff-white);cursor:pointer;display:none;align-items:center;justify-content:center;z-index:4}.slot-card:hover .slot-edit{display:flex}.slot-edit:hover{background:var(--ff-primary-active)}.slot-editor-badge{display:inline-block;vertical-align:middle;margin-left:3px;color:#00000040;line-height:1;pointer-events:auto;cursor:default;position:relative}.slot-editor-badge .slot-editor-tooltip{position:absolute;bottom:100%;left:50%;transform:translate(-50%);margin-bottom:4px;background:#000000b3;color:var(--ff-white);font-size:11px;padding:5px 9px;border-radius:5px;white-space:nowrap;z-index:10;pointer-events:none;opacity:0;visibility:hidden;transition:opacity .2s ease,visibility .2s ease}.slot-editor-badge:hover .slot-editor-tooltip{opacity:1;visibility:visible;transition-delay:.5s}.slot-insert-btn{position:absolute;right:-20px;top:0;z-index:10;width:20px;height:100%;border:none;background:none;cursor:pointer;font-size:20px;font-weight:300;color:#9aa0a6;display:flex;align-items:center;justify-content:center;opacity:0;pointer-events:none;padding:0;margin:0;transition:opacity .15s}.slots-grid:hover .slot-insert-btn{opacity:.4;pointer-events:auto}.slot-insert-btn:hover{opacity:1!important;color:var(--ff-primary)}.slot-add-btn{width:80px;border:2px dashed #dadce0;border-radius:var(--ff-radius-md);background:none;cursor:pointer;flex-shrink:0;display:flex;align-items:center;justify-content:center;color:#9aa0a6;transition:border-color .2s,color .2s,background .2s;align-self:flex-start}.slot-add-btn:hover{border-color:var(--ff-primary);color:var(--ff-primary);background:#5f4f690a}.slot-add-btn svg{width:28px;height:28px;stroke:currentColor;fill:none;stroke-width:1.8}.slot-card.filled[data-slot-type=spread]{cursor:grab;-webkit-user-select:none;user-select:none}.slot-card.filled[data-slot-type=spread]:active{cursor:grabbing}.slot-card[draggable=true] img{pointer-events:none}body.is-dragging,body.is-dragging .slot-card,body.is-dragging .slot-add-btn,body.is-dragging .slots-grid{cursor:grabbing!important}body.is-dragging .slot-insert-btn{opacity:0!important;pointer-events:none!important}body.is-dragging .slot-add-btn{visibility:hidden!important;pointer-events:none!important}.slot-card.dragging{opacity:0!important;pointer-events:none!important}body.is-dragging .slot-card{transition:transform .2s ease}body.is-dragging .slot-card.dragging{transition:none}.action-overlay{position:fixed;inset:0;z-index:var(--ff-z-modal-backdrop);background:#ffffff8c;display:flex;align-items:center;justify-content:center;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.action-overlay-box{background:var(--ff-white);border-radius:var(--ff-radius-lg);padding:28px 36px;box-shadow:var(--ff-shadow-lg);display:flex;align-items:center;gap:14px;font-size:15px}.action-overlay-spinner{width:22px;height:22px;border:3px solid #dadce0;border-top-color:#ffe32b;border-radius:50%;animation:spin .7s linear infinite}.lightbox{display:none;position:fixed;inset:0;z-index:var(--ff-z-lightbox)}.lightbox.open{display:flex;flex-direction:column}.lightbox-backdrop{position:absolute;inset:0;background:#000c}.lightbox-body{position:relative;flex:1;display:flex;align-items:center;justify-content:center;padding:20px 80px;z-index:1}.lightbox-img-wrap{position:relative;max-width:90vw;max-height:calc(100vh - 100px);display:flex;align-items:center;justify-content:center;background:var(--ff-white);border:1px dashed rgba(255,0,100,.3)}.lightbox-img-wrap img{display:block}.lightbox-close{position:absolute;top:16px;right:16px;z-index:2;width:40px;height:40px;border:none;background:#ffffff26;border-radius:50%;cursor:pointer;display:flex;align-items:center;justify-content:center}.lightbox-close:hover{background:#ffffff4d}.lightbox-close svg{color:#ffffff80}.lightbox-arrow{position:absolute;top:50%;transform:translateY(-50%);z-index:2;width:48px;height:48px;border:none;background:none;cursor:pointer;display:flex;align-items:center;justify-content:center}.lightbox-arrow:hover svg{color:var(--ff-white)}.lightbox-arrow svg{color:#ffffff80;transition:color .2s}.lightbox-arrow.prev{left:12px}.lightbox-arrow.prev svg{transform:rotate(180deg)}.lightbox-arrow.next{right:12px}.lightbox-bar{position:relative;z-index:2;display:flex;align-items:center;justify-content:center;gap:16px;padding:12px 24px;background:#0009;flex-shrink:0}.lightbox-filename{color:var(--ff-white);font-size:14px;font-weight:600}.lightbox-warn{display:inline-flex;align-items:center;gap:6px;padding:6px 16px;background:#f5c800;color:var(--ff-black);border-radius:20px;font-size:13px;font-weight:600}.lightbox-warn svg{width:20px;height:20px;flex-shrink:0}.lightbox-btn{display:inline-flex;align-items:center;gap:6px;padding:8px 16px;border:none;border-radius:32px;font-size:13px;font-weight:600;cursor:pointer;font-family:inherit}.lightbox-btn-edit{background:var(--ff-primary);color:var(--ff-white)}.lightbox-btn-edit:hover{background:var(--ff-primary-active)}.lightbox-btn-replace{background:var(--ff-white);color:var(--ff-primary)}.lightbox-btn-replace:hover{background:#f0f0f0}.lightbox-btn-delete{background:var(--ff-error);color:var(--ff-white)}.lightbox-btn-delete:hover{background:#c00}.bottom-bar.bottom-bar--uploader{position:fixed;bottom:0;left:0;right:0;background:var(--ff-white);display:flex;align-items:center;justify-content:space-between;padding:20px 48px;gap:20px;z-index:90;border-top:none;height:auto}.bottom-bar.bottom-bar--uploader:before{content:"";position:absolute;top:-32px;left:0;right:0;height:32px;pointer-events:none;background:linear-gradient(180deg,#fff0,#00000012)}.bottom-bar-left,.bottom-bar-right{display:flex;align-items:center;gap:12px}.btn-batch-upload{display:flex;align-items:center;gap:8px;height:48px;padding:0 24px;border:1px solid var(--ff-primary);border-radius:var(--ff-radius-md);background:var(--ff-white);color:var(--ff-primary);font-size:14px;font-weight:700;cursor:pointer;font-family:inherit;transition:all .2s}.btn-batch-upload:hover{background:var(--ff-hover);border-color:transparent}.btn-batch-upload:active{background:var(--ff-light-blue-active);border-color:transparent;color:var(--ff-primary-active)}.btn-batch-upload svg{width:16px;height:16px}.btn-info-naming{width:32px;height:32px;border-radius:50%;border:none;background:var(--ff-primary, #5f4f69);display:flex;align-items:center;justify-content:center;cursor:pointer;position:relative;color:var(--ff-white);transition:all .2s;padding:0}.btn-info-naming:hover{opacity:.85}.info-tooltip{display:none;position:absolute;bottom:100%;left:50%;transform:translate(-50%);background:var(--ff-black);color:var(--ff-white);padding:10px 14px;border-radius:var(--ff-radius-md);font-size:12px;font-weight:400;white-space:nowrap;margin-bottom:8px;box-shadow:var(--ff-shadow-md);z-index:200;max-width:380px;white-space:normal;line-height:1.5}.btn-info-naming:hover .info-tooltip{display:block}.bar-books{display:flex;align-items:center;gap:6px;height:48px;padding:8px 16px;background:var(--ff-light-gray);border:none;border-radius:var(--ff-radius-md);font-size:24px;font-weight:900;line-height:32px;color:var(--text-primary)}.bar-books svg{width:24px;height:24px;color:var(--text-primary);opacity:1}.bar-price{height:48px;padding:8px 16px;background:#ffe32b;border-radius:var(--ff-radius-md);font-size:24px;font-weight:900;line-height:32px;color:var(--text-primary);display:flex;align-items:center}.btn-submit{padding:16px 24px;background:var(--ff-primary);color:var(--ff-white);border:none;border-radius:var(--ff-radius-md);font-size:14px;font-weight:700;cursor:pointer;font-family:inherit;display:flex;align-items:center;gap:8px;transition:background .2s}.btn-submit:hover{background:var(--ff-primary-hover)}.btn-submit:active{background:var(--ff-primary-active)}.btn-submit:disabled{opacity:.5;cursor:not-allowed}.btn-submit svg{width:18px;height:18px}.btn-save-exit{height:48px;padding:0 24px;background:var(--ff-white);color:var(--ff-primary);border:1px solid var(--ff-primary);border-radius:var(--ff-radius-md);font-size:14px;font-weight:700;cursor:pointer;font-family:inherit;transition:all .2s}.btn-save-exit:hover{background:var(--ff-hover);border-color:transparent}.btn-save-exit:active{background:var(--ff-light-blue-active);border-color:transparent;color:var(--ff-primary-active)}.btn-save-exit:disabled{opacity:.7;cursor:default}.btn-add-to-cart{background:var(--ff-primary);color:var(--ff-white);border-color:var(--ff-primary)}.btn-add-to-cart:hover{background:var(--ff-primary-hover, #2d9995);border-color:transparent;color:var(--ff-white)}.btn-add-to-cart:disabled{opacity:.5;cursor:not-allowed;background:var(--ff-primary);color:var(--ff-white)}.btn-spinner{display:inline-block;width:16px;height:16px;border:2px solid #dadce0;border-top-color:var(--ff-primary);border-radius:50%;animation:spin .8s linear infinite;vertical-align:middle;margin-right:8px}.btn-edit-params{display:flex;align-items:center;gap:6px;padding:8px 16px;border:1px solid var(--ff-primary);border-radius:32px;background:var(--ff-white);color:var(--ff-primary);font-size:12px;font-weight:500;cursor:pointer;font-family:inherit;transition:all .2s}.btn-edit-params:hover{background:var(--ff-hover);border-color:transparent}.btn-edit-params:active{background:var(--ff-light-blue-active);border-color:transparent;color:var(--ff-primary-active)}.btn-edit-params svg{width:14px;height:14px}.modal-overlay{position:fixed;inset:0;background:#00000080;z-index:var(--ff-z-lightbox);display:flex;align-items:center;justify-content:center}.modal{background:var(--ff-white);border-radius:var(--ff-radius-lg);padding:32px;max-width:480px;width:90%;max-height:80vh;overflow-y:auto;box-shadow:var(--ff-shadow-lg)}.modal h2{font-size:22px;font-weight:700;margin-bottom:24px}.modal .modal-label{font-size:11px;font-weight:600;color:#5f6368;text-transform:uppercase;letter-spacing:.5px;margin-bottom:6px;display:block}.modal .modal-select{width:100%;padding:10px 14px;border:1px solid #dadce0;border-radius:var(--ff-radius-md);font-size:14px;font-family:inherit;background:var(--ff-white);color:var(--ff-black);appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%236b7280' stroke-width='2'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 12px center}.modal .modal-select:focus{outline:2px solid var(--ff-link, #6146ca);outline-offset:2px;border-color:var(--ff-link, #6146ca)}.modal .modal-counter{display:flex;align-items:center;gap:0}.modal .modal-counter button{width:40px;height:40px;border:1px solid #dadce0;background:var(--ff-white);font-size:18px;cursor:pointer;font-family:inherit;display:flex;align-items:center;justify-content:center;transition:border-color .2s}.modal .modal-counter button:first-child{border-radius:8px 0 0 8px}.modal .modal-counter button:last-child{border-radius:0 8px 8px 0}.modal .modal-counter button:hover{border-color:var(--ff-link, #6146ca)}.modal .modal-counter input{width:56px;height:40px;text-align:center;font-size:16px;font-weight:600;border:1px solid #dadce0;border-left:0;border-right:0;font-family:inherit;background:var(--ff-light-gray)}.modal .modal-counter input:focus{outline:none}.modal-footer{display:flex;align-items:center;gap:12px;margin-top:24px;padding-top:16px;border-top:1px solid var(--ff-border)}.modal-footer .modal-price{padding:8px 20px;background:#ffe32b;border-radius:32px;font-size:18px;font-weight:700;color:var(--ff-black)}.modal-footer .btn-modal-ok{padding:10px 28px;background:var(--ff-primary);color:var(--ff-white);border:none;border-radius:var(--ff-radius-md);font-size:14px;font-weight:600;cursor:pointer;font-family:inherit;transition:background .2s}.modal-footer .btn-modal-ok:hover{background:var(--ff-primary-hover)}.modal-close{position:absolute;top:16px;right:16px;width:32px;height:32px;border:none;background:none;cursor:pointer;font-size:24px;color:#9aa0a6;display:flex;align-items:center;justify-content:center}.modal-close:hover{color:var(--ff-black)}@media(max-width:768px){.book-uploader{padding:20px 16px 120px}.slots-grid{gap:10px 0}.slot-card{width:120px;margin-right:10px}.bottom-bar.bottom-bar--uploader{padding:12px 16px 16px}.upload-title-input{font-size:24px}}@media(max-width:480px){.slot-card{width:calc(50% - 5px)}}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}.pb-editor{--bg-main: var(--ff-light-gray);--bg-panel: var(--ff-white);--bg-toolbar: var(--ff-white);--bg-hover: var(--ff-hover);--bg-active: var(--ff-light-blue-active);--bg-canvas: #d6d9dd;--accent: var(--ff-primary);--accent-hover: var(--ff-primary-hover);--accent-dark: var(--ff-primary-active);--text-primary: var(--ff-black);--text-secondary: var(--ff-gray);--text-muted: var(--ff-disabled);--border: var(--ff-border);--border-light: var(--ff-border);--shadow-sm: var(--ff-shadow-sm);--shadow-md: var(--ff-shadow-md);--shadow-lg: var(--ff-shadow-lg);--radius-sm: var(--ff-radius-sm);--radius-md: var(--ff-radius-md);--radius-lg: var(--ff-radius-lg);--danger: var(--ff-error);--danger-hover: #d93025;--success: var(--ff-success);--info: var(--ff-link);--header-h: 48px;--icon-sidebar-w: 56px;--panel-w: 260px;--bottom-bar-h: 44px;--strip-h: 90px;display:flex;flex-direction:column;height:100%}body{font-family:var(--ff-font-family);background:var(--ff-light-gray);color:var(--ff-black);font-size:13px;line-height:1.4}body.editor-mode{height:100vh;display:flex;flex-direction:column;overflow:hidden;-webkit-user-select:none;user-select:none}.top-header{display:flex;align-items:center;height:56px;background:var(--bg-toolbar);border-bottom:1px solid var(--border);padding:0 16px;flex-shrink:0;z-index:50}.top-header .logo{font-weight:700;font-size:22px;color:#555;margin-right:24px;letter-spacing:-.03em;display:flex;align-items:center;gap:2px}.top-header .logo .dot-r{color:#e53935}.top-header .logo .dot-g{color:#43a047}.top-header .logo .dot-b{color:#1e88e5}.top-header .logo .dot-y{color:#fdd835}.hdr-back{display:flex;align-items:center;justify-content:center;width:36px;height:36px;border:none;background:none;cursor:pointer;color:var(--text-secondary);margin-right:8px;border-radius:50%;transition:background .15s;flex-shrink:0}.hdr-back:hover{background:var(--bg-hover);color:var(--text-primary)}.btn-back-cart{display:inline-flex;align-items:center;gap:4px;padding:5px 14px;border-radius:6px;font-size:12px;font-weight:600;color:var(--text-secondary);text-decoration:none;border:1px solid var(--border-color, #ddd);background:var(--bg-panel, #fff);transition:all .2s;cursor:pointer;white-space:nowrap;margin-left:4px}.btn-back-cart:hover{border-color:var(--accent);color:var(--text-primary);background:var(--bg-hover)}.header-actions{display:flex;align-items:center;gap:0}.header-actions .hdr-btn{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;padding:6px 14px;background:none;border:none;font-size:11px;font-family:inherit;color:var(--text-secondary);cursor:pointer;transition:all .15s;min-width:52px}.header-actions .hdr-btn:hover{color:var(--text-primary)}.header-actions .hdr-btn:disabled{opacity:.35;cursor:default}.header-actions .hdr-btn svg{width:20px;height:20px;stroke:currentColor;fill:none}.header-actions .hdr-sep{width:1px;height:32px;background:var(--border-light);margin:0 8px}.header-project{display:flex;flex-direction:column;padding:4px 16px;border-left:1px solid var(--border-light);margin-left:8px}.header-project .proj-name{font-weight:700;font-size:13px;color:var(--text-primary)}.header-project .proj-status{font-size:11px;color:var(--text-muted)}.header-spacer{flex:1}.header-right{display:flex;align-items:center;gap:0}.header-right .hdr-btn-right{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;padding:6px 14px;background:none;border:none;font-size:11px;font-family:inherit;color:var(--text-secondary);cursor:pointer;transition:all .15s}.header-right .hdr-btn-right:hover{color:var(--text-primary)}.header-right .hdr-btn-right svg{width:20px;height:20px;stroke:currentColor;fill:none}.btn-cart{padding:10px 24px;background:var(--accent);border:none;border-radius:var(--radius-md);font-size:14px;font-weight:700;color:var(--ff-white);cursor:pointer;font-family:inherit;transition:background .15s;display:flex;align-items:center;gap:8px;margin-left:12px}.btn-cart svg{width:20px;height:20px}.btn-cart:hover{background:var(--accent-hover)}.user-menu-wrap{position:relative;margin-left:8px}.user-menu-btn{display:flex;align-items:center;gap:6px;padding:4px 10px 4px 4px;background:none;border:1px solid var(--border-light);border-radius:20px;cursor:pointer;font-family:inherit;font-size:12px;color:var(--text-secondary);transition:all .15s}.user-menu-btn:hover{border-color:var(--border);background:var(--bg-hover)}.user-avatar-sm{width:28px;height:28px;border-radius:50%;background:var(--bg-active);display:flex;align-items:center;justify-content:center;font-weight:700;font-size:12px;color:var(--text-secondary);overflow:hidden}.user-avatar-sm img{width:100%;height:100%;object-fit:cover}.user-dropdown{position:absolute;top:calc(100% + 6px);right:0;background:var(--bg-panel);border:1px solid var(--border);border-radius:var(--radius-md);box-shadow:var(--shadow-lg);min-width:180px;padding:6px 0;z-index:var(--ff-z-dropdown);display:none}.user-dropdown.open{display:block}.user-dropdown .ud-header{padding:10px 14px;border-bottom:1px solid var(--border-light);font-size:13px}.user-dropdown .ud-header strong{display:block}.user-dropdown .ud-header small{color:var(--text-muted);font-size:11px}.user-dropdown a,.user-dropdown button{display:flex;align-items:center;gap:8px;width:100%;padding:8px 14px;background:none;border:none;font-size:13px;font-family:inherit;color:var(--text-primary);text-decoration:none;cursor:pointer;transition:background .1s}.user-dropdown a:hover,.user-dropdown button:hover{background:var(--bg-hover)}.user-dropdown .ud-sep{height:1px;background:var(--border-light);margin:4px 0}.user-dropdown .ud-logout{color:var(--danger)}.user-dropdown svg{width:16px;height:16px;stroke:currentColor;fill:none;stroke-width:1.5}.main-layout{display:flex;flex:1;overflow:hidden}.bottom-bar{display:flex;align-items:center;height:var(--bottom-bar-h);background:var(--bg-panel);border-top:1px solid var(--border);padding:0 16px;flex-shrink:0;z-index:20;color:var(--text-secondary);font-size:13px;margin-top:auto}.bottom-bar .bb-left,.bottom-bar .bb-center,.bottom-bar .bb-right{display:flex;align-items:center;gap:0}.bottom-bar .bb-left{flex:1;justify-content:flex-start}.bottom-bar .bb-center{flex:0 0 auto}.bottom-bar .bb-right{flex:1;justify-content:flex-end;gap:8px}.bb-view-tab{padding:0 14px;height:var(--bottom-bar-h);border:none;background:none;font-size:13px;font-family:inherit;color:var(--text-muted);cursor:pointer;position:relative;transition:color .15s}.bb-view-tab:hover{color:var(--text-primary)}.bb-view-tab.active{color:var(--accent-dark);font-weight:600}.bb-view-tab.active:after{content:"";position:absolute;bottom:0;left:14px;right:14px;height:3px;background:var(--accent);border-radius:2px 2px 0 0}.bb-view-sep{width:1px;height:20px;background:var(--border);margin:0 4px}.bb-page-nav{display:flex;align-items:center;gap:6px}.bb-page-nav button{width:28px;height:28px;border:none;border-radius:4px;background:none;cursor:pointer;font-size:14px;display:flex;align-items:center;justify-content:center;color:var(--text-secondary);transition:background .15s}.bb-page-nav button:hover{background:var(--bg-hover)}.bb-page-nav button:disabled{opacity:.3;cursor:default}.bb-page-info{font-size:13px;color:var(--text-primary);min-width:100px;text-align:center}.bb-btn{padding:4px 10px;border:1px solid var(--border);border-radius:4px;background:none;font-size:12px;cursor:pointer;font-family:inherit;color:var(--text-secondary)}.bb-btn:hover{background:var(--bg-hover)}.bb-btn.active{background:var(--info);color:#fff;border-color:var(--info)}.zoom-controls{display:flex;align-items:center;gap:2px}.zoom-controls button{width:26px;height:26px;border:none;border-radius:4px;background:none;cursor:pointer;font-size:14px;color:var(--text-secondary);display:flex;align-items:center;justify-content:center;transition:background .15s}.zoom-controls button:hover{background:var(--bg-hover)}.zoom-controls .zoom-label{font-size:12px;color:var(--text-primary);min-width:36px;width:44px;text-align:center;border:1px solid transparent;background:transparent;border-radius:4px;padding:2px 0;outline:none;font-family:inherit;cursor:pointer}.zoom-controls .zoom-label:hover{border-color:var(--border)}.zoom-controls .zoom-label:focus{border-color:var(--accent);cursor:text;background:var(--bg-main)}.bb-zoom-icon{font-size:14px;color:var(--text-muted);margin-right:4px}.bb-sep{width:1px;height:20px;background:var(--border);margin:0 8px}.bb-hide-btn{padding:6px 14px;border:none;border-radius:6px;background:#888;font-size:12px;font-family:inherit;color:#fff;cursor:pointer;transition:background .15s}.bb-hide-btn:hover{background:#666}.theme-toggle{position:relative;width:50px;height:26px;margin-left:12px;margin-right:4px;flex-shrink:0;display:inline-flex;align-items:center}.theme-toggle input{opacity:0;width:0;height:0;position:absolute}.theme-toggle-track{position:absolute;inset:0;background:#d1d5db;border-radius:13px;cursor:pointer;transition:background .3s ease;display:flex;align-items:center;justify-content:space-between;padding:0 6px}.theme-toggle-track .toggle-icon-sun{width:14px;height:14px;color:#f59e0b;opacity:1;transition:opacity .3s}.theme-toggle-track .toggle-icon-moon{width:14px;height:14px;color:#94a3b8;opacity:.5;transition:opacity .3s}.theme-toggle-circle{position:absolute;top:3px;left:3px;width:20px;height:20px;background:#fff;border-radius:50%;box-shadow:0 1px 3px #0003;transition:transform .3s cubic-bezier(.4,0,.2,1);pointer-events:none;z-index:1}.header-project .proj-name{outline:none;cursor:text;padding:2px 4px;border-radius:4px;min-width:60px;max-width:200px}.header-project .proj-name:hover{background:var(--bg-hover)}.header-project .proj-name:focus{background:var(--bg-panel);box-shadow:0 0 0 2px var(--accent)}.header-project .proj-status.saved{color:var(--success)}.header-project .proj-status.saving{color:var(--accent-dark)}.hdr-product-btn{display:flex;align-items:center;gap:6px;padding:6px 12px;border-radius:var(--radius-md);border:1px solid var(--border);background:var(--bg-panel);color:var(--text-primary);font-size:13px;font-family:inherit;font-weight:500;cursor:pointer;transition:all .2s;white-space:nowrap}.hdr-product-btn:hover{background:var(--bg-toolbar)}.hdr-product-btn.active{border-color:var(--accent);box-shadow:0 0 0 2px #5f4f6933}.product-dropdown{display:none;position:absolute;top:calc(100% + 6px);left:0;background:var(--bg-panel);border:1px solid var(--border);border-radius:var(--radius-lg);padding:16px;min-width:280px;box-shadow:var(--shadow-lg);z-index:var(--ff-z-dropdown)}.product-dropdown.open{display:block}.pd-section{margin-bottom:12px}.pd-section:last-child{margin-bottom:0}.pd-label{display:block;font-size:11px;font-weight:600;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.5px;margin-bottom:6px}.pd-select{width:100%;padding:8px 10px;border:1px solid var(--border);border-radius:var(--radius-md);font-size:13px;font-family:inherit;background:var(--bg-main);color:var(--text-primary);cursor:pointer;transition:border-color .2s}.pd-select:focus{border-color:var(--accent);outline:none}.pd-price{margin-top:12px;padding:8px 12px;background:var(--ff-price-bg);border-radius:var(--radius-md);font-size:13px;font-weight:600;color:var(--text-primary);text-align:center}.top-header{overflow:visible}.hdr-btn-right span,.btn-cart span{pointer-events:none}@media(max-width:1199px){.hdr-btn-right{min-width:40px;padding:4px 8px!important}.hdr-btn-right span{display:none}.btn-cart{padding:10px 14px!important;gap:0!important}.btn-cart span{display:none}.btn-cart svg{width:22px;height:22px}.user-menu-btn #userNameShort{display:none}.user-menu-btn svg{display:none}.header-actions{gap:4px!important}.header-actions .hdr-btn{min-width:auto;padding:4px 8px!important}.header-actions .hdr-btn span{display:none}.header-actions .hdr-btn svg{width:18px;height:18px}}@media(max-width:899px){.theme-toggle{margin-left:4px;margin-right:2px}.header-project{display:none!important}.hdr-product-btn span{display:none}}#fileInput,#slotFileInput,.rotation-bar{display:none}.rotation-bar.visible{display:flex}.text-style-bar{display:none}.text-style-bar.visible{display:flex}@keyframes spin{to{transform:rotate(360deg)}}body,.top-header,.icon-sidebar,.icon-sidebar .sidebar-icon,.left-panel,.bottom-bar,.canvas-scroll,.all-pages-view,.page-strip,.float-toolbar,.effects-panel,.layers-dropdown,.frame-mask-panel,.project-modal,.context-toolbar,.user-dropdown,.bb-view-tab,.bb-btn,.hdr-btn-right,.layer-item,.template-card,.clipart-item,.frame-card{transition:background-color .3s ease,color .3s ease,border-color .3s ease}.icon-sidebar{width:72px;background:var(--bg-panel);border-right:1px solid var(--border);display:flex;flex-direction:column;align-items:center;padding:4px 0;gap:0;flex-shrink:0;z-index:20}.icon-sidebar .sidebar-icon{display:flex;flex-direction:column;align-items:center;justify-content:center;width:72px;height:60px;border:none;background:none;cursor:pointer;color:var(--ff-gray);gap:4px;transition:all .15s}.icon-sidebar .sidebar-icon svg{width:24px;height:24px;stroke:currentColor;fill:none;stroke-width:1.5}.icon-sidebar .sidebar-icon .si-label{font-size:10px;font-weight:500;white-space:nowrap;color:inherit}.icon-sidebar .sidebar-icon:hover{background:var(--bg-hover);color:var(--text-primary)}.icon-sidebar .sidebar-icon.active{background:var(--ff-black);color:var(--ff-white)}.sidebar-mode-toggle{border-top:1px solid var(--border);padding-top:4px;margin-top:0}.sidebar-mode-toggle svg{opacity:.7}.sidebar-mode-toggle:hover svg{opacity:1}.mode-modal-overlay{display:none;position:fixed;inset:0;background:#00000080;z-index:var(--ff-z-modal);justify-content:center;align-items:center;backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px)}.mode-modal-overlay.visible{display:flex}.mode-modal{background:var(--ff-white);border-radius:20px;width:440px;max-width:90vw;box-shadow:0 20px 60px #0000004d;overflow:hidden;animation:modeModalIn .25s ease-out;font-family:var(--ff-font-family, "Inter", ui-sans-serif, system-ui, -apple-system, sans-serif)}@keyframes modeModalIn{0%{opacity:0;transform:scale(.92) translateY(12px)}to{opacity:1;transform:scale(1) translateY(0)}}.mode-modal-icon{display:flex;justify-content:center;padding:32px 0 0}.mode-modal-icon .mm-circle{width:64px;height:64px;border-radius:50%;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#fc0,#ff9500)}.mode-modal-icon .mm-circle svg{width:32px;height:32px;stroke:var(--ff-white);fill:none;stroke-width:2}.mode-modal-body{padding:20px 32px 8px;text-align:center}.mode-modal-body h3{font-size:20px;font-weight:700;color:var(--ff-black);margin:0 0 12px;letter-spacing:-.3px}.mode-modal-body p{font-size:14px;line-height:1.6;color:#555;margin:0 0 8px}.mode-modal-body .mm-warning{display:inline-flex;align-items:center;gap:6px;background:#fff8e1;border:1px solid #ffe082;border-radius:var(--ff-radius-lg);padding:10px 16px;font-size:13px;color:#6d4c00;margin-top:8px;line-height:1.5;text-align:left}.mode-modal-body .mm-warning svg{flex-shrink:0;width:20px;height:20px;stroke:#f59e0b;fill:none;stroke-width:2}.mode-modal-actions{display:flex;gap:10px;padding:20px 32px 28px;justify-content:center}.mode-modal-actions button{padding:11px 28px;border-radius:var(--ff-radius-lg);font-size:14px;font-weight:600;cursor:pointer;font-family:inherit;border:none;transition:all .15s}.mode-modal-actions .mm-cancel{background:var(--ff-light-gray);color:#555}.mode-modal-actions .mm-cancel:hover{background:#e5e5e5}.mode-modal-actions .mm-confirm{background:linear-gradient(135deg,#fc0,#f5b800);color:var(--ff-black);box-shadow:0 2px 8px #ffcc004d}.mode-modal-actions .mm-confirm:hover{box-shadow:0 4px 16px #ffcc0073;transform:translateY(-1px)}.left-panel{width:0;background:var(--bg-panel);border-right:1px solid var(--border);overflow-y:auto;overflow-x:hidden;transition:width .2s ease;flex-shrink:0;z-index:15}.left-panel.open{width:var(--panel-w)}.left-panel .panel-section{display:none;padding:12px}.left-panel .panel-section.active{display:block}.panel-title{font-size:13px;font-weight:600;color:var(--text-primary);margin-bottom:10px;padding-bottom:6px;border-bottom:1px solid var(--border-light)}.context-toolbar{display:none;align-items:center;gap:4px;padding:4px 8px;background:var(--bg-toolbar);border-bottom:1px solid var(--border-light);flex-shrink:0;flex-wrap:wrap;min-height:36px}.context-toolbar.visible{display:flex}.context-toolbar select,.context-toolbar input[type=number]{padding:4px 6px;border:1px solid var(--border);border-radius:var(--radius-sm);font-size:12px;font-family:inherit;background:var(--bg-main)}.context-toolbar input[type=color]{width:26px;height:26px;border:2px solid var(--border);border-radius:var(--radius-sm);padding:1px;cursor:pointer}.ctx-btn{padding:4px 8px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg-main);font-size:12px;font-weight:600;cursor:pointer;font-family:inherit;color:var(--text-primary)}.ctx-btn:hover{background:var(--bg-hover)}.ctx-btn.active{background:var(--info);color:var(--ff-white);border-color:var(--info)}.ctx-sep{width:1px;height:20px;background:var(--border-light);margin:0 4px}.ctx-label{font-size:11px;color:var(--text-secondary);margin-right:2px}.ctx-btn.danger{color:var(--danger);border-color:var(--danger)}.ctx-btn.danger:hover{background:var(--danger);color:var(--ff-white)}.all-pages-view{flex:1;overflow-y:auto;padding:24px 24px 80px;background:var(--bg-canvas);display:flex;flex-direction:column;align-items:center;gap:28px}.all-spread{position:relative;cursor:pointer;border:3px solid transparent;border-radius:var(--ff-radius-sm);padding:3px;transition:border-color .2s,box-shadow .2s}.all-spread:hover{border-color:var(--accent);box-shadow:0 2px 16px #0000001f}.all-spread.all-spread-active{border-color:var(--info);box-shadow:0 0 0 3px #4285f433}.all-spread-pages{display:flex;flex-direction:row;overflow:hidden;border-radius:3px;box-shadow:0 1px 4px #0000001a}.all-spread-page{position:relative;background:var(--ff-white);overflow:hidden}.all-spread-spine{width:2px;background:#0000001f;flex-shrink:0}.all-spread-label{text-align:center;font-size:12px;color:var(--text-muted);margin-top:8px;font-weight:500;pointer-events:none}.all-spread-actions{position:absolute;top:10px;left:6px;right:6px;display:none;justify-content:space-between;z-index:5;pointer-events:none}.all-spread:hover .all-spread-actions{display:flex}.all-spread-btn{padding:5px 14px;font-size:11px;font-weight:600;border:none;border-radius:5px;cursor:pointer;font-family:inherit;text-transform:uppercase;pointer-events:all;letter-spacing:.3px;box-shadow:0 1px 4px #00000026}.all-spread-btn-edit{background:var(--accent);color:var(--ff-black)}.all-spread-btn-edit:hover{background:var(--accent-hover)}.all-spread-btn-dup{background:#ffffffeb;color:var(--text)}.all-spread-btn-dup:hover{background:var(--ff-white)}.float-toolbar{display:none;position:absolute;z-index:100;background:var(--ff-white);border:1px solid var(--ff-border);border-radius:var(--ff-radius-md);padding:4px 6px;box-shadow:0 2px 12px #00000026;align-items:center;gap:1px;pointer-events:auto}.float-toolbar.visible{display:flex;flex-wrap:wrap;justify-content:center}.ft-zoom-group{display:inline-flex;align-items:center;gap:2px;flex-shrink:0}.float-toolbar:before{content:"";position:absolute;top:-7px;left:50%;transform:translate(-50%);border-left:7px solid transparent;border-right:7px solid transparent;border-bottom:7px solid var(--ff-border)}.float-toolbar:after{content:"";position:absolute;top:-6px;left:50%;transform:translate(-50%);border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid var(--ff-white)}.ft-btn{display:flex;align-items:center;justify-content:center;gap:4px;padding:6px 7px;border:none;border-radius:4px;background:none;color:#555;font-size:12px;font-family:inherit;cursor:pointer;white-space:nowrap;transition:background .15s,color .15s}.ft-btn:hover{background:var(--ff-light-gray);color:#222}.ft-btn.danger{color:var(--ff-disabled)}.ft-btn.danger:hover{background:#fef0ef;color:#d93025}.ft-btn svg{width:22px;height:22px;stroke:currentColor;fill:none;stroke-width:1.5}.ft-sep{width:1px;height:24px;background:var(--ff-border);margin:0 3px;flex-shrink:0}.ft-scale-label{font-size:12px;color:#555;min-width:36px;text-align:center;font-weight:500}.ft-opacity-group{display:flex;align-items:center;gap:2px}.ft-opacity-group button{width:24px;height:24px;border:none;border-radius:4px;background:none;color:#555;font-size:16px;cursor:pointer;display:flex;align-items:center;justify-content:center;font-weight:500}.ft-opacity-group button:hover{background:var(--ff-light-gray);color:#222}.ft-opacity-group svg{flex-shrink:0}.page-strip{height:var(--strip-h);background:var(--bg-panel);border-top:1px solid var(--border);display:flex;align-items:center;padding:6px 12px;gap:6px;overflow-x:auto;flex-shrink:0;transition:height .25s ease,padding .25s ease,opacity .25s ease;scrollbar-width:none}.page-strip::-webkit-scrollbar{display:none}.page-strip.hidden{height:0;padding:0 12px;overflow:hidden;opacity:0;border-top:none}.page-strip .strip-spread{display:flex;flex-direction:column;align-items:center;gap:3px;cursor:pointer;flex-shrink:0}.page-strip .strip-spread .spread-label{font-size:9px;color:var(--text-muted);font-weight:600;white-space:nowrap}.page-strip .strip-spread .spread-pages{display:flex;gap:1px;border:2px solid var(--border);border-radius:var(--radius-sm);overflow:hidden;transition:all .15s}.page-strip .strip-spread .spread-page{background:var(--ff-white);position:relative;overflow:hidden;flex-shrink:0}.page-strip .strip-spread .spread-divider{width:1px;background:var(--border-light);align-self:stretch}.page-strip .strip-spread:hover .spread-pages{border-color:var(--info)}.page-strip .strip-spread.active .spread-pages{border-color:var(--info);border-width:2px;box-shadow:0 0 0 2px #4285f433}.page-strip .strip-spread.active .spread-label{color:var(--info)}.page-strip .strip-spread.dragging{opacity:.25;transform:scale(.85);transition:opacity .2s,transform .2s;pointer-events:none}.page-strip .strip-spread{position:relative;transition:margin .25s cubic-bezier(.4,0,.2,1)}.page-strip .strip-spread[draggable=true]{cursor:grab}.page-strip .strip-spread[draggable=true]:active{cursor:grabbing}.strip-drop-placeholder{width:0;height:60px;flex-shrink:0;border-radius:var(--ff-radius-sm);background:#4285f41f;border:2px dashed var(--info);transition:width .25s cubic-bezier(.4,0,.2,1),opacity .2s;opacity:0;overflow:hidden;align-self:flex-end;margin-bottom:0;pointer-events:none;box-sizing:border-box}.strip-drop-placeholder.visible{opacity:1}.page-strip .strip-add{width:50px;height:55px;border:2px dashed var(--border);border-radius:var(--radius-sm);background:none;cursor:pointer;flex-shrink:0;font-size:20px;color:var(--text-muted);display:flex;align-items:center;justify-content:center}.page-strip .strip-add:hover{border-color:var(--info);color:var(--info)}.strip-insert-btn{width:22px;height:55px;border:none;background:none;cursor:pointer;flex-shrink:0;font-size:18px;color:var(--text-muted);display:flex;align-items:center;justify-content:center;opacity:0;transition:opacity .15s;padding:0;margin:0 -3px;position:relative;z-index:5;align-self:flex-end}.strip-insert-btn:hover{opacity:1;color:var(--info)}.page-strip:hover .strip-insert-btn{opacity:.4}.strip-insert-btn:hover{opacity:1!important}.strip-add-arrow{width:56px;height:60px;border:2px dashed var(--border);border-radius:var(--radius-sm);background:none;cursor:pointer;flex-shrink:0;display:flex;align-items:center;justify-content:center;color:var(--text-muted);transition:all .2s;margin-left:2px;align-self:flex-end}.strip-add-arrow:hover{border-color:var(--info);color:var(--info);background:#4285f40f}.strip-add-arrow svg{width:28px;height:28px;stroke:currentColor;fill:none;stroke-width:1.8}.spread-hover-actions{position:absolute;top:-4px;right:-4px;display:flex;gap:3px;opacity:0;transition:opacity .15s;z-index:10}.strip-spread:hover .spread-hover-actions{opacity:1}.spread-hover-action{width:22px;height:22px;border-radius:50%;border:none;cursor:pointer;font-size:12px;display:flex;align-items:center;justify-content:center;padding:0;line-height:1;box-shadow:0 1px 3px #0000004d}.spread-hover-action.duplicate{background:var(--info);color:var(--ff-white)}.spread-hover-action.delete{background:var(--ff-error);color:var(--ff-white)}.spread-hover-action:hover{transform:scale(1.2)}.upload-buttons-row{display:flex;gap:8px;margin-bottom:10px}.upload-btn-card{flex:1;display:flex;align-items:center;justify-content:center;gap:6px;padding:9px 6px;border:1.5px solid var(--border);border-radius:var(--radius-md);background:var(--bg-panel);cursor:pointer;transition:all .15s;font-family:inherit;font-size:11px;font-weight:500;color:var(--text-secondary);white-space:nowrap}.upload-btn-card:hover{border-color:var(--info);background:#4285f40a;color:var(--text-primary)}.upload-btn-card svg{width:16px;height:16px;flex-shrink:0;opacity:.65}.upload-btn-card:hover svg{opacity:.9}.photo-upload-area{border:2px dashed var(--border);border-radius:var(--radius-md);padding:14px;text-align:center;cursor:pointer;transition:all .15s;margin-bottom:10px}.photo-upload-area:hover{border-color:var(--info);background:#4285f408}.photo-upload-area .upload-icon{font-size:24px;margin-bottom:4px}.photo-upload-area .upload-text{font-size:11px;color:var(--text-secondary)}.photo-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:4px}.photo-grid.photo-grid-large{grid-template-columns:repeat(3,1fr)}.photo-thumb-wrap{position:relative}.photo-thumb-wrap .photo-rotate-btn{position:absolute;top:1px;right:1px;width:16px;height:16px;border-radius:50%;background:#00000080;color:var(--ff-white);border:none;cursor:pointer;font-size:9px;display:flex;align-items:center;justify-content:center;opacity:0;transition:opacity .15s;z-index:5}.photo-thumb-wrap:hover .photo-rotate-btn{opacity:1}.photo-thumb{width:100%;aspect-ratio:3/2;object-fit:cover;border-radius:4px;cursor:grab;border:1.5px solid transparent;transition:border-color .15s}.photo-thumb:hover{border-color:var(--info)}.photo-processing{position:absolute;inset:0;background:#ffffff8c;display:flex;align-items:center;justify-content:center;border-radius:var(--radius-sm)}.photo-processing:after{content:"";width:18px;height:18px;border:2px solid var(--info);border-top-color:transparent;border-radius:50%;animation:spin .6s linear infinite}.upload-progress{display:none;align-items:center;gap:8px;margin:6px 0;font-size:11px;color:var(--text-secondary)}.upload-progress.active{display:flex}.upload-progress-bar{flex:1;height:4px;background:var(--border-light);border-radius:2px;overflow:hidden}.upload-progress-fill{height:100%;background:var(--info);border-radius:2px;transition:width .3s ease;width:0%}.upload-progress-text{white-space:nowrap;font-weight:500;min-width:60px;text-align:right}.photo-thumb-wrap.loading .photo-thumb{opacity:.5;filter:blur(1px)}.photo-thumb-wrap.loading .photo-processing{display:flex}.photo-thumb-wrap .photo-processing{display:none}.tpl-filter{padding:8px 12px}.tpl-filter-label{font-size:12px;font-weight:600;color:var(--text-primary);margin-bottom:6px}.tpl-filter-select{width:100%;padding:8px 12px;font-size:13px;font-family:inherit;border:1px solid var(--border);border-radius:var(--ff-radius-md);background:var(--bg-panel);color:var(--text-primary);cursor:pointer;outline:none;appearance:auto}.tpl-filter-select:focus{border-color:var(--info)}.template-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:10px;padding:8px 12px}.template-card{position:relative;border-radius:var(--ff-radius-md);cursor:pointer;transition:all .15s;background:var(--ff-white);border:1px solid var(--ff-border);overflow:hidden;padding:6px}.template-card:hover{border-color:var(--info);box-shadow:0 2px 8px #00000014;transform:translateY(-1px)}.template-preview{width:100%;aspect-ratio:1/1;background:var(--ff-white);border-radius:4px;position:relative;overflow:hidden}.template-preview .tpl-slot{position:absolute;background:var(--ff-border);border-radius:2px;border:1.5px solid var(--ff-white);box-sizing:border-box}.tpl-section{margin-bottom:12px}.tpl-section-title{font-size:13px;font-weight:600;color:var(--text-primary);padding:8px 12px;-webkit-user-select:none;user-select:none}.tpl-section-title.tpl-collapsible{cursor:pointer;display:flex;align-items:center;gap:6px;border-radius:var(--ff-radius-sm);transition:background .15s}.tpl-section-title.tpl-collapsible:hover{background:var(--bg-hover, #f0f0f0)}.tpl-type-tabs{display:flex;gap:4px;padding:4px 12px 8px}.tpl-type-tab{padding:5px 12px;font-size:12px;border-radius:var(--ff-radius-sm);cursor:pointer;white-space:nowrap;transition:all .15s;font-weight:500;background:var(--bg-panel, #f5f5f5);color:var(--text-secondary, #666)}.tpl-type-tab:hover{background:var(--ff-border)}.tpl-type-tab.active{background:var(--ff-yellow);color:var(--ff-black);font-weight:600}.tpl-badge-type{background:#e0f0ef!important;color:#2a8a87!important}.tpl-theme-tabs{display:flex;flex-wrap:wrap;gap:4px;padding:4px 12px 8px}.tpl-theme-tab{padding:4px 10px;font-size:11px;border-radius:14px;cursor:pointer;white-space:nowrap;transition:all .15s;background:var(--bg-panel, #f5f5f5);color:var(--text-secondary, #666);border:1px solid transparent}.tpl-theme-tab:hover{background:var(--ff-border)}.tpl-theme-tab.active{background:var(--ff-primary, #5f4f69);color:var(--ff-white);font-weight:600}.tpl-count-filter{display:flex;gap:4px;padding:0 12px 8px}.tpl-count-btn{padding:3px 10px;font-size:11px;border-radius:var(--ff-radius-lg);cursor:pointer;transition:all .15s;background:var(--bg-panel, #f5f5f5);color:var(--text-secondary, #666)}.tpl-count-btn:hover{background:var(--ff-border)}.tpl-count-btn.active{background:var(--text-primary, #333);color:var(--ff-white);font-weight:600}.tpl-db-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:10px;padding:0 12px 8px}.tpl-db-card{border-radius:var(--ff-radius-md);cursor:pointer;transition:all .15s;background:var(--ff-white);border:1px solid var(--ff-border);overflow:hidden;padding:6px}.tpl-db-card:hover{border-color:var(--info);box-shadow:0 2px 8px #00000014;transform:translateY(-1px)}.tpl-db-thumb{width:100%;border-radius:var(--ff-radius-sm);overflow:hidden}.tpl-db-info{padding:4px 2px 2px}.tpl-db-name{font-size:11px;font-weight:600;color:var(--text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tpl-db-badges{display:flex;gap:4px;margin-top:3px}.tpl-badge{font-size:10px;padding:1px 6px;border-radius:var(--ff-radius-md);background:var(--ff-light-gray);color:var(--text-secondary, #888)}.tpl-template-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:10px;padding:0 12px 8px}.tpl-full-card{border-radius:var(--ff-radius-lg);cursor:default;transition:all .15s;background:var(--ff-white);border:1px solid var(--ff-border);overflow:hidden;display:flex;flex-direction:column}.tpl-full-card:hover{border-color:var(--info);box-shadow:0 2px 12px #0000001a;transform:translateY(-1px)}.tpl-full-thumb{width:100%;background:#f5f5f5;position:relative;overflow:hidden;border-radius:10px 10px 0 0}.tpl-full-thumb .tpl-slot{position:absolute;background:var(--ff-border);border-radius:2px;border:1.5px solid var(--ff-white);box-sizing:border-box}.tpl-full-info{padding:8px 10px 4px}.tpl-full-name{font-size:12px;font-weight:600;color:var(--text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tpl-full-meta{display:flex;gap:8px;margin-top:2px;font-size:10px;color:var(--text-secondary, #888)}.tpl-full-actions{display:flex;gap:6px;padding:6px 10px 10px;margin-top:auto}.tpl-full-btn{padding:5px 10px;border:none;border-radius:var(--ff-radius-sm);font-size:11px;font-weight:600;cursor:pointer;font-family:inherit;transition:all .15s}.tpl-full-btn-eye{background:none;border:1px solid var(--ff-border);color:var(--ff-primary, #5f4f69);width:30px;padding:5px;display:flex;align-items:center;justify-content:center}.tpl-full-btn-eye:hover{background:var(--ff-primary, #5f4f69);color:var(--ff-white);border-color:var(--ff-primary, #5f4f69)}.tpl-full-btn-apply{flex:1;background:var(--ff-yellow);color:var(--ff-black)}.tpl-full-btn-apply:hover{background:#f0c000}.template-bar{display:flex;align-items:center;gap:8px;padding:0 8px}.tpl-edit-input{padding:5px 10px;border:1px solid var(--border);border-radius:var(--ff-radius-sm);font-size:13px;font-family:inherit;width:180px;background:var(--bg-panel);color:var(--text-primary)}.tpl-edit-select{padding:5px 8px;border:1px solid var(--border);border-radius:var(--ff-radius-sm);font-size:12px;font-family:inherit;background:var(--bg-panel);color:var(--text-primary);max-width:160px}.tpl-edit-save{padding:6px 14px;border:none;border-radius:var(--ff-radius-sm);background:var(--ff-yellow);font-weight:600;font-size:12px;cursor:pointer;font-family:inherit;white-space:nowrap}.tpl-edit-save:hover{background:#f0c000}.tpl-edit-back{display:flex;align-items:center;gap:4px;padding:5px 10px;font-size:12px;color:var(--text-secondary);text-decoration:none;border:1px solid var(--border);border-radius:var(--ff-radius-sm);white-space:nowrap}.tpl-edit-back:hover{background:var(--bg-hover, #f5f5f5)}.clipart-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:8px}.clipart-item{aspect-ratio:1;display:flex;align-items:center;justify-content:center;font-size:48px;cursor:grab;border:2px solid var(--border-light);border-radius:var(--radius-sm);transition:all .15s;background:var(--ff-white);position:relative}.clipart-item:hover{border-color:var(--info);transform:translateY(-1px);box-shadow:0 2px 8px #0000001f}.clipart-item .clip-fav{position:absolute;top:4px;right:4px;font-size:14px;color:#bbb;cursor:pointer}.bg-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:6px}.bg-item{aspect-ratio:4/3;border:2px solid var(--border-light);border-radius:var(--radius-sm);cursor:pointer;transition:all .15s}.bg-item:hover{border-color:var(--info)}.bg-item.active{border-color:var(--info);box-shadow:0 0 0 2px #4285f433}.layer-list{display:flex;flex-direction:column;gap:1px}.layer-item{display:flex;align-items:center;gap:8px;padding:8px 10px;border-radius:var(--radius-sm);cursor:grab;transition:all .12s;border:1px solid transparent;background:var(--ff-white)}.layer-item:hover{background:var(--bg-hover)}.layer-item.active{background:#e8f0fe;border-color:var(--info)}.layer-item.dragging{opacity:.4}.layer-item.drag-over-top{border-top:2px solid var(--info)}.layer-item.drag-over-bottom{border-bottom:2px solid var(--info)}.layer-drag-handle{cursor:grab;color:var(--text-muted);font-size:14px;flex-shrink:0;-webkit-user-select:none;user-select:none;line-height:1}.layer-thumb{width:36px;height:36px;border-radius:4px;background:var(--bg-hover);display:flex;align-items:center;justify-content:center;overflow:hidden;flex-shrink:0;font-size:16px;border:1px solid var(--border-light)}.layer-thumb img{width:100%;height:100%;object-fit:cover}.layer-info{flex:1;min-width:0}.layer-type{font-size:9px;color:var(--text-muted);text-transform:uppercase;font-weight:600;letter-spacing:.03em}.layer-name{font-size:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--text-primary)}.layer-actions{display:flex;gap:3px;flex-shrink:0}.layer-btn{width:28px;height:28px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--ff-white);cursor:pointer;font-size:13px;display:flex;align-items:center;justify-content:center;color:var(--text-secondary);transition:all .12s}.layer-btn:hover{background:var(--bg-active);color:var(--text-primary);border-color:var(--text-muted)}.layer-btn.del{color:var(--text-muted)}.layer-btn.del:hover{background:var(--danger);color:var(--ff-white);border-color:var(--danger)}.frames-panel{display:flex;flex-direction:column;gap:8px}.frames-panel select,.frames-panel input{width:100%}.frame-preview-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:4px}.frame-option{aspect-ratio:1;border:2px solid var(--border-light);border-radius:var(--radius-sm);cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:18px;background:var(--ff-white)}.frame-option:hover{border-color:var(--info)}.format-section{display:flex;flex-direction:column;gap:8px}.format-section label{font-size:11px;font-weight:500;color:var(--text-secondary)}.format-section select{width:100%;padding:6px 8px;border:1px solid var(--border);border-radius:var(--radius-sm);font-size:12px;font-family:inherit;background:var(--bg-main)}.bg-category{border-bottom:1px solid var(--border-light)}.bg-cat-header{display:flex;align-items:center;gap:8px;padding:10px 12px;cursor:pointer;font-size:13px;color:var(--text-primary);transition:background .12s}.bg-cat-header:hover{background:var(--bg-hover)}.bg-cat-dot{width:8px;height:8px;border-radius:50%;background:#ccc;flex-shrink:0}.bg-cat-arrow{margin-left:auto;font-size:11px;transition:transform .2s}.bg-cat-header.open .bg-cat-arrow{transform:rotate(180deg)}.bg-cat-body{display:none;padding:8px 12px}.bg-cat-body.open{display:block}.bg-color-row{display:grid;grid-template-columns:repeat(2,1fr);gap:8px}.bg-color-card{width:100%;aspect-ratio:1.4;border-radius:var(--radius-sm);cursor:pointer;border:2px solid transparent;transition:all .15s;position:relative}.bg-color-card:hover{transform:translateY(-1px);border-color:var(--info);box-shadow:0 2px 8px #0000001f}.bg-color-card.active{border-color:var(--info);box-shadow:0 0 0 2px #4285f44d}.bg-color-card .bg-fav{position:absolute;top:4px;right:4px;font-size:14px;color:#fff9;cursor:pointer}.bg-edit-btn{width:100%;padding:10px;margin-top:12px;border:none;border-radius:var(--radius-md);background:var(--accent);color:var(--ff-black);font-size:13px;font-weight:600;cursor:pointer;font-family:inherit}.bg-edit-btn:hover{background:var(--accent-hover)}.masks-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:8px}.mask-card{aspect-ratio:1;border-radius:var(--radius-sm);cursor:pointer;border:2px solid var(--border-light);overflow:hidden;position:relative;background:#000;display:flex;align-items:center;justify-content:center}.mask-card:hover{border-color:var(--info);transform:translateY(-1px)}.mask-card svg{width:80%;height:80%;fill:var(--ff-white)}.mask-card .mask-fav{position:absolute;top:4px;right:4px;font-size:14px;color:#bbb;cursor:pointer}.frames-category{border-bottom:1px solid var(--border-light)}.frames-cat-header{display:flex;align-items:center;gap:8px;padding:10px 12px;cursor:pointer;font-size:13px;color:var(--text-primary);transition:background .12s}.frames-cat-header:hover{background:var(--bg-hover)}.frames-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:8px;padding:4px 0}.frame-card{aspect-ratio:1.2;border-radius:var(--radius-sm);cursor:pointer;position:relative;background:#fafafa;overflow:hidden;border:2px solid var(--border-light)}.frame-card:hover{transform:translateY(-1px);box-shadow:0 2px 8px #0000001f;border-color:var(--info)}.frame-card .frame-preview{width:100%;height:100%;display:flex;align-items:center;justify-content:center;padding:8px}.frame-card .frame-inner{width:80%;height:80%;background:var(--ff-border)}.frame-card .frame-inner.frame-thin{border:2px solid}.frame-card .frame-inner.frame-thick{border:5px solid}.frame-card .frame-inner.frame-double{border:3px double}.frame-card .frame-inner.frame-polaroid{border:3px solid var(--ff-white);border-bottom-width:12px;box-shadow:0 1px 3px #0003}.frame-card .frame-inner.frame-rounded{border:3px solid var(--ff-gray);border-radius:var(--ff-radius-md)}.frame-card .frame-inner.frame-circle{border:3px solid var(--ff-gray);border-radius:50%}.frame-card .frame-inner.frame-shadow{box-shadow:3px 3px 6px #0000004d}.frame-card .frame-inner.frame-none{border:1px dashed #ccc}.frame-card .mask-fav{position:absolute;top:4px;right:4px;font-size:14px;color:#bbb;cursor:pointer}.effects-panel{display:none;position:absolute;z-index:101;background:var(--ff-white);border:1px solid var(--ff-border);border-radius:var(--ff-radius-lg);padding:14px 16px 10px;box-shadow:0 4px 20px #0000002e;width:520px;pointer-events:auto}.effects-panel.visible{display:block}.effects-panel .ep-sliders{display:flex;flex-direction:column;gap:8px;margin-bottom:12px}.effects-panel .ep-slider-row{display:flex;align-items:center;gap:10px;font-size:12px;color:#555}.effects-panel .ep-slider-icon{width:20px;height:20px;flex-shrink:0;display:flex;align-items:center;justify-content:center}.effects-panel .ep-slider-label{min-width:85px;font-weight:500}.effects-panel .ep-slider-input{flex:1;-webkit-appearance:none;appearance:none;height:4px;background:var(--ff-border);border-radius:2px;outline:none}.effects-panel .ep-slider-input::-webkit-slider-thumb{-webkit-appearance:none;width:16px;height:16px;background:var(--accent);border-radius:50%;cursor:pointer;box-shadow:0 1px 3px #0003}.effects-panel .ep-slider-reset{width:24px;height:24px;border:none;background:none;cursor:pointer;color:var(--ff-disabled);font-size:16px;border-radius:50%;display:flex;align-items:center;justify-content:center}.effects-panel .ep-slider-reset:hover{background:var(--ff-light-gray);color:#555}.effects-panel .ep-presets{display:flex;align-items:center;gap:0;position:relative}.effects-panel .ep-presets-scroll{display:flex;gap:6px;overflow-x:auto;scroll-behavior:smooth;padding:4px 0;scrollbar-width:none}.effects-panel .ep-presets-scroll::-webkit-scrollbar{display:none}.effects-panel .ep-preset{flex-shrink:0;width:68px;cursor:pointer;text-align:center;border-radius:var(--ff-radius-sm);transition:all .15s}.effects-panel .ep-preset:hover{transform:translateY(-2px)}.effects-panel .ep-preset.active .ep-preset-name{color:var(--accent-dark);font-weight:600}.effects-panel .ep-preset-thumb{width:68px;height:48px;border-radius:4px;overflow:hidden;background:var(--ff-border);margin-bottom:3px;border:2px solid transparent}.effects-panel .ep-preset.active .ep-preset-thumb{border-color:var(--accent)}.effects-panel .ep-preset-thumb img{width:100%;height:100%;object-fit:cover}.effects-panel .ep-preset-name{font-size:10px;color:var(--ff-gray);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.effects-panel .ep-arrow{width:28px;height:28px;border:none;background:#ffffffe6;border-radius:50%;cursor:pointer;font-size:16px;color:var(--accent-dark);display:flex;align-items:center;justify-content:center;box-shadow:0 1px 4px #0000001f;flex-shrink:0;z-index:2}.effects-panel .ep-arrow:hover{background:var(--ff-white);color:var(--accent)}.layers-dropdown{display:none;position:absolute;z-index:102;background:var(--ff-white);border:1px solid var(--ff-border);border-radius:var(--ff-radius-md);padding:6px 0;box-shadow:0 4px 16px #00000026;min-width:200px}.layers-dropdown.visible{display:block}.layers-dropdown .ld-item{display:flex;align-items:center;gap:10px;padding:8px 16px;cursor:pointer;font-size:13px;color:#444;transition:background .12s}.layers-dropdown .ld-item:hover{background:var(--bg-hover)}.layers-dropdown .ld-item svg{width:20px;height:20px;flex-shrink:0}.frame-mask-panel{display:none;position:absolute;z-index:101;background:var(--ff-white);border:1px solid var(--ff-border);border-radius:var(--ff-radius-md);padding:8px 12px;box-shadow:0 2px 12px #00000026;align-items:center;gap:10px;pointer-events:auto}.frame-mask-panel.visible{display:flex}.frame-mask-panel .fmp-group{display:flex;align-items:center;gap:4px}.frame-mask-panel .fmp-icon{width:20px;height:20px;flex-shrink:0}.frame-mask-panel .fmp-btn{width:24px;height:24px;border:none;border-radius:4px;background:none;color:#555;font-size:16px;cursor:pointer;display:flex;align-items:center;justify-content:center}.frame-mask-panel .fmp-btn:hover{background:var(--ff-light-gray)}.frame-mask-panel .fmp-val{font-size:12px;min-width:36px;text-align:center;color:#444;font-weight:500}.frame-mask-panel .fmp-clear{padding:6px 12px;border:1px solid var(--accent);border-radius:var(--ff-radius-sm);background:#fffde7;color:var(--accent-dark);font-size:12px;cursor:pointer;font-family:inherit;font-weight:500;white-space:nowrap}.frame-mask-panel .fmp-clear:hover{background:var(--accent);color:var(--ff-black)}.canvas-area{flex:1;display:flex;flex-direction:column;overflow:hidden;background:var(--bg-canvas);position:relative}.canvas-scroll{flex:1;overflow:auto;display:flex;align-items:center;justify-content:center;padding:20px}.spread-wrapper{display:flex;flex-direction:row;align-items:stretch;flex-shrink:0;box-shadow:var(--shadow-lg)}.page-container{position:relative;background:#fff;flex-shrink:0;overflow:hidden}.zoom-wrapper{position:relative;transform-origin:0 0}.spread-spine{width:2px;background:#999;flex-shrink:0;z-index:2}.spread-crease-line{position:absolute;top:0;width:0;height:100%;border-left:1px dashed rgba(0,0,0,.15);pointer-events:none;z-index:9999}.spread-wrapper.cover-mode,.spread-wrapper.trumo-mode{position:relative}.trumo-panel{position:relative;overflow:hidden;flex-shrink:0}.page-item{position:absolute;cursor:move;outline:1px solid transparent;outline-offset:0px;transition:outline-color .1s}.page-item:hover{outline-color:#96969659}.page-item.selected{outline:1.5px solid var(--editor-selection)}.page-item img{pointer-events:none;display:block}.page-item.text-item{background:transparent;min-width:40px;min-height:20px}.text-content{width:100%;height:100%;outline:none;overflow:visible;word-wrap:break-word;white-space:pre-wrap;padding:0;cursor:move;-webkit-user-select:none;user-select:none}.text-content[contenteditable=true]{cursor:text;-webkit-user-select:auto;user-select:auto}.clipart-content{width:100%;height:100%;display:flex;align-items:center;justify-content:center}.page-slot{position:absolute;border:2px dashed var(--border);background:var(--bg-hover);cursor:pointer;border-radius:var(--radius-sm);overflow:visible;transition:border-color .15s}.page-slot:hover{border-color:#bbb}.page-slot.selected{border-color:var(--editor-selection);border-style:solid}.page-slot.filled{border:none;border-radius:0;overflow:hidden}.page-slot.filled:hover{outline:2px solid rgba(150,150,150,.35);outline-offset:-2px}.page-slot.filled.selected{outline:2px solid var(--editor-selection);outline-offset:-2px;border:none}.page-slot img{pointer-events:none;display:block}.page-slot .slot-placeholder{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;color:var(--text-muted)}.slot-icon{font-size:28px;margin-bottom:4px}.slot-text{font-size:11px}.page-slot.drop-target{border-color:var(--success);background:#34a85314}.page-item.drop-target{outline:3px dashed var(--info);outline-offset:2px}.photo-inner-wrap{position:absolute;top:0;left:0;width:100%;height:100%;overflow:hidden;pointer-events:none}.photo-inner-wrap img{position:absolute;top:0;left:0;display:block;pointer-events:none}.photo-inner-wrap.panning{overflow:visible!important}.photo-inner-wrap.panning>img{opacity:.35}.pan-sharp-mask{position:absolute;top:0;left:0;width:100%;height:100%;overflow:hidden;pointer-events:none;z-index:2}.pan-sharp-mask>img{pointer-events:none;display:block}.page-item.panning-item,.page-slot.panning-slot{z-index:100!important}.page-slot.panning-slot,.page-container.panning-active,.cover-content-area.panning-active{overflow:visible!important}.product-overlay{position:absolute;pointer-events:none;z-index:50;border:1px dashed rgba(0,0,0,.15)}.product-overlay img{width:100%;height:100%;object-fit:contain;display:block}.page-container.drop-hover{outline:3px dashed var(--info);outline-offset:-3px}:root{--editor-selection: #26c6da;--editor-handle-border: var(--ff-white);--editor-pan-circle-bg: rgba(38, 198, 218, .7);--editor-pan-circle-hover: rgba(38, 198, 218, .85);--editor-dpi-warn: rgba(255,193,7,.95);--editor-dpi-critical: rgba(234,67,53,.95);--editor-crop-warn: rgba(255,152,0,.95)}.photo-pan-circle{position:absolute;top:50%;left:50%;width:60px;height:60px;transform:translate(-50%,-50%);border-radius:50%;background:var(--editor-pan-circle-bg);border:2.5px solid var(--editor-handle-border);box-shadow:0 1px 6px #00000059;cursor:grab;z-index:12;display:flex;align-items:center;justify-content:center;-webkit-user-select:none;user-select:none;transition:opacity .15s,background .15s}.photo-pan-circle:hover{background:var(--editor-pan-circle-hover)}.photo-pan-circle:active{cursor:grabbing}.photo-pan-circle svg{width:26px;height:26px;fill:var(--editor-handle-border);pointer-events:none}.dpi-warning{position:absolute;top:6px;left:6px;z-index:11;width:44px;height:44px;display:flex;align-items:center;justify-content:center;font-size:28px;line-height:1;border-radius:var(--ff-radius-md);background:var(--editor-dpi-warn);color:var(--ff-black);cursor:help;pointer-events:auto;box-shadow:0 2px 6px #0006}.dpi-warning.critical{background:var(--editor-dpi-critical);color:var(--ff-white)}.dpi-warning .dpi-tooltip{display:none;position:absolute;top:110%;left:0;background:#000000e0;color:var(--ff-white);font-size:15px;font-weight:600;padding:8px 12px;border-radius:var(--ff-radius-sm);white-space:nowrap;pointer-events:none}.dpi-warning:hover .dpi-tooltip{display:block}.crop-warning{position:absolute;top:6px;right:6px;z-index:11;width:44px;height:44px;display:flex;align-items:center;justify-content:center;font-size:26px;line-height:1;border-radius:var(--ff-radius-md);background:var(--editor-crop-warn);color:var(--ff-white);cursor:help;pointer-events:auto;box-shadow:0 2px 6px #0006;animation:cropWarnPulse 2s ease-in-out infinite}.crop-warning .crop-tooltip{display:none;position:absolute;top:110%;right:0;background:#000000e0;color:var(--ff-white);font-size:15px;font-weight:600;padding:8px 12px;border-radius:var(--ff-radius-sm);white-space:nowrap;pointer-events:none}.crop-warning:hover .crop-tooltip{display:block}.slot-badge-overlay{position:absolute;pointer-events:none;z-index:12}@keyframes cropWarnPulse{0%,to{opacity:1}50%{opacity:.6}}.resize-handle{position:absolute;width:22px;height:22px;background:var(--editor-selection);border:2.5px solid var(--editor-handle-border);border-radius:50%;z-index:10;box-shadow:0 1px 4px #00000059}.resize-handle.nw{top:-11px;left:-11px;cursor:nw-resize}.resize-handle.ne{top:-11px;right:-11px;cursor:ne-resize}.resize-handle.sw{bottom:-11px;left:-11px;cursor:sw-resize}.resize-handle.se{bottom:-11px;right:-11px;cursor:se-resize}.resize-handle.n{top:-11px;left:50%;transform:translate(-50%);cursor:ns-resize;width:34px;height:22px;border-radius:11px}.resize-handle.s{bottom:-11px;left:50%;transform:translate(-50%);cursor:ns-resize;width:34px;height:22px;border-radius:11px}.resize-handle.e{top:50%;right:-11px;transform:translateY(-50%);cursor:ew-resize;width:22px;height:34px;border-radius:11px}.resize-handle.w{top:50%;left:-11px;transform:translateY(-50%);cursor:ew-resize;width:22px;height:34px;border-radius:11px}.resize-handle.n:before,.resize-handle.s:before,.resize-handle.e:before,.resize-handle.w:before{content:"";position:absolute;inset:-10px}.rotate-handle-line{position:absolute;top:-30px;left:50%;width:2px;height:30px;background:var(--editor-selection);transform:translate(-50%);z-index:10;pointer-events:none}.rotate-handle-bar{position:absolute;top:-60px;left:50%;transform:translate(-50%);width:32px;height:32px;background:var(--editor-selection);border:2.5px solid var(--editor-handle-border);border-radius:50%;z-index:11;box-shadow:0 1px 4px #00000059;cursor:grab;display:flex;align-items:center;justify-content:center}.rotate-handle-bar:active{cursor:grabbing}.rotate-handle-bar svg{width:20px;height:20px;fill:var(--editor-handle-border);pointer-events:none}.cover-spine{flex-shrink:0;z-index:2;position:relative;background:linear-gradient(90deg,#d0d0d0,#e8e8e8 20%,#f0f0f0,#e8e8e8 80%,#d0d0d0);box-shadow:inset 2px 0 4px #00000026,inset -2px 0 4px #00000026}.cover-spine-label{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%) rotate(-90deg);white-space:nowrap;font-size:8px;color:#999;text-transform:uppercase;letter-spacing:1px;pointer-events:none}.cover-bleed-zone{position:absolute;pointer-events:none;z-index:3}.cover-bleed-zone.bleed-top{top:0;left:0;right:0;border-bottom:1px dashed rgba(255,0,0,.3);background:repeating-linear-gradient(45deg,transparent,transparent 3px,rgba(255,0,0,.03) 3px,rgba(255,0,0,.03) 6px)}.cover-bleed-zone.bleed-bottom{bottom:0;left:0;right:0;border-top:1px dashed rgba(255,0,0,.3);background:repeating-linear-gradient(45deg,transparent,transparent 3px,rgba(255,0,0,.03) 3px,rgba(255,0,0,.03) 6px)}.cover-bleed-zone.bleed-left{top:0;bottom:0;left:0;border-right:1px dashed rgba(255,0,0,.3);background:repeating-linear-gradient(45deg,transparent,transparent 3px,rgba(255,0,0,.03) 3px,rgba(255,0,0,.03) 6px)}.cover-bleed-zone.bleed-right{top:0;bottom:0;right:0;border-left:1px dashed rgba(255,0,0,.3);background:repeating-linear-gradient(45deg,transparent,transparent 3px,rgba(255,0,0,.03) 3px,rgba(255,0,0,.03) 6px)}.cover-spine-guide{position:absolute;top:0;bottom:0;pointer-events:none;z-index:3;background:linear-gradient(90deg,#b4b4b426,#dcdcdc40 50%,#b4b4b426);border-left:1px dashed rgba(0,0,0,.2);border-right:1px dashed rgba(0,0,0,.2)}.cover-spine-guide-label{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%) rotate(-90deg);white-space:nowrap;font-size:8px;color:#0000004d;text-transform:uppercase;letter-spacing:1px;pointer-events:none}.cover-safe-zone{position:absolute;pointer-events:none;z-index:3;border:1px dashed rgba(0,150,0,.25)}.trumo-score-line{flex-shrink:0;z-index:2;position:relative;background:repeating-linear-gradient(90deg,#b48c6426,#b48c6440,#b48c6414,#b48c6426 3px);border-left:1px dashed rgba(139,69,19,.3);border-right:1px dashed rgba(139,69,19,.3)}.trumo-score-label{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%) rotate(-90deg);font-size:7px;color:#8b451380;text-transform:uppercase;letter-spacing:1px;pointer-events:none;white-space:nowrap}.trumo-fold-zone{position:absolute;pointer-events:none;z-index:3;background:repeating-linear-gradient(45deg,transparent,transparent 3px,rgba(255,0,0,.03) 3px,rgba(255,0,0,.03) 6px)}.trumo-fold-zone.fold-top{top:0;left:0;right:0;border-bottom:1px dashed rgba(255,0,0,.3)}.trumo-fold-zone.fold-bottom{bottom:0;left:0;right:0;border-top:1px dashed rgba(255,0,0,.3)}.trumo-fold-zone.fold-left{top:0;bottom:0;left:0;border-right:1px dashed rgba(255,0,0,.3)}.trumo-fold-zone.fold-right{top:0;bottom:0;right:0;border-left:1px dashed rgba(255,0,0,.3)}.trumo-panel-label{position:absolute;top:8px;left:50%;transform:translate(-50%);font-size:9px;color:#0003;z-index:4;text-transform:uppercase;pointer-events:none;white-space:nowrap}.trumo-safety-zone{position:absolute;pointer-events:none;z-index:3;border:1px dashed rgba(0,150,0,.2)}.frame-none img{border-radius:0}.frame-thin{border:2px solid;border-radius:0}.frame-thick{border:5px solid;border-radius:0}.frame-rounded img{border-radius:12px}.frame-circle img{border-radius:50%}.frame-shadow{box-shadow:0 4px 12px #0003}.frame-double{border:3px double;border-radius:0}.frame-polaroid{border:8px solid white;border-bottom-width:24px;box-shadow:0 2px 8px #00000026}.frame-dotted{border:3px dotted;border-radius:0}.frame-dashed{border:3px dashed;border-radius:0}.frame-groove{border:4px groove;border-radius:0}.frame-ridge{border:4px ridge;border-radius:0}.frame-inset-frame{border:4px inset;border-radius:0}.frame-outset{border:4px outset;border-radius:0}.frame-dotted-thick{border:5px dotted;border-radius:0}.frame-dashed-thick{border:5px dashed;border-radius:0}.frame-groove-thick{border:6px groove;border-radius:0}.frame-ridge-thick{border:6px ridge;border-radius:0}.frame-double-thin{border:2px double;border-radius:0}.frame-double-thick{border:6px double;border-radius:0}.frame-layered-2{border:3px solid;box-shadow:0 0 0 2px #fff,0 0 0 4px currentColor;border-radius:0}.frame-layered-3{border:2px solid;box-shadow:0 0 0 3px #fff,0 0 0 5px currentColor,0 0 0 8px #fff,0 0 0 10px currentColor;border-radius:0}.frame-inset-border{border:6px solid;box-shadow:inset 0 0 0 2px #fff;border-radius:0}.frame-mat{border:12px solid #f5f0eb;box-shadow:inset 0 0 0 1px #ccc,0 0 0 1px #999;border-radius:0}.frame-passepartout{border:16px solid #f0ece4;box-shadow:inset 0 0 0 1px #bbb,0 0 0 2px #333,0 0 0 4px #bbb;border-radius:0}.frame-gallery{border:20px solid #fff;box-shadow:0 0 0 1px #ddd,0 4px 16px #00000026;border-radius:0}.frame-offset-outline{border:2px solid #333;outline:2px solid #333;outline-offset:4px;border-radius:0}.frame-offset-outline-thin{border:1px solid #999;outline:1px solid #999;outline-offset:3px;border-radius:0}.frame-offset-double{outline:2px solid #333;outline-offset:6px;border:2px solid #333;box-shadow:0 0 0 3px #fff;border-radius:0}.frame-stamp{border:2px solid #333;outline:2px dashed #333;outline-offset:4px;border-radius:0}.frame-shadow-soft{box-shadow:0 2px 20px #0000001f}.frame-shadow-hard{box-shadow:5px 5px #0003}.frame-shadow-left{box-shadow:-6px 6px 12px #0003}.frame-shadow-bottom{box-shadow:0 8px 16px #00000040}.frame-shadow-all{box-shadow:0 0 20px #00000040}.frame-shadow-inner{box-shadow:inset 0 0 15px #0000004d}.frame-shadow-inner-deep{box-shadow:inset 0 0 30px #00000080}.frame-shadow-float{box-shadow:0 12px 28px #00000026,0 4px 8px #0000001a}.frame-shadow-layered{box-shadow:0 1px 1px #00000014,0 2px 2px #00000014,0 4px 4px #00000014,0 8px 8px #00000014,0 16px 16px #00000014}.frame-neumorphic{border-radius:12px;background:#e0e0e0;box-shadow:8px 8px 16px #bebebe,-8px -8px 16px #fff}.frame-neumorphic-inset{border-radius:12px;background:#e0e0e0;box-shadow:inset 8px 8px 16px #bebebe,inset -8px -8px 16px #fff}.frame-glow-blue{box-shadow:0 0 8px #2196f3,0 0 20px #2196f366;border:1px solid #2196f3}.frame-glow-pink{box-shadow:0 0 8px #e91e63,0 0 20px #e91e6366;border:1px solid #e91e63}.frame-glow-green{box-shadow:0 0 8px #4caf50,0 0 20px #4caf5066;border:1px solid #4caf50}.frame-glow-purple{box-shadow:0 0 8px #9c27b0,0 0 20px #9c27b066;border:1px solid #9c27b0}.frame-glow-gold{box-shadow:0 0 8px gold,0 0 20px #ffd70066;border:1px solid #ffd700}.frame-glow-white{box-shadow:0 0 8px #fff,0 0 20px #ffffff80;border:1px solid rgba(255,255,255,.8)}.frame-neon-cyan{box-shadow:0 0 5px #0ff,0 0 10px #0ff,0 0 20px #0ff,0 0 40px #09f;border:2px solid #0ff}.frame-neon-magenta{box-shadow:0 0 5px #f0f,0 0 10px #f0f,0 0 20px #f0f,0 0 40px #f0a;border:2px solid #f0f}.frame-neon-orange{box-shadow:0 0 5px #f60,0 0 10px #f60,0 0 20px #f60,0 0 40px #f30;border:2px solid #ff6600}.frame-gradient-sunset{padding:4px;background:linear-gradient(135deg,#f093fb,#f5576c,#ffd200)}.frame-gradient-ocean{padding:4px;background:linear-gradient(135deg,#667eea,#764ba2)}.frame-gradient-mint{padding:4px;background:linear-gradient(135deg,#a8edea,#fed6e3)}.frame-gradient-fire{padding:4px;background:linear-gradient(135deg,#f12711,#f5af19)}.frame-gradient-rainbow{padding:4px;background:linear-gradient(135deg,red,#f80,#ff0,#0f0,#08f,#80f)}.frame-gradient-gold{padding:5px;background:linear-gradient(145deg,#bf953f,#fcf6ba,#b38728,#fbf5b7,#aa771c)}.frame-gradient-silver{padding:5px;background:linear-gradient(145deg,silver,#f5f5f5,#a8a8a8,#e8e8e8,#989898)}.frame-gradient-bronze{padding:5px;background:linear-gradient(145deg,#cd7f32,#f4d9a0,#b8860b,#daa520,#8b6914)}.frame-gradient-rosegold{padding:5px;background:linear-gradient(145deg,#b76e79,#f0d0d5,#c9a0a0,#f5e1e3,#a06060)}.frame-gradient-rounded{padding:4px;background:linear-gradient(135deg,#667eea,#764ba2);border-radius:12px}.frame-vintage{border:3px solid #8b7355;box-shadow:inset 0 0 20px #8b73554d,0 0 0 1px #a08060}.frame-sepia-border{border:6px solid #d4a76a;box-shadow:inset 0 0 10px #00000026,0 2px 6px #0003}.frame-antique{border:5px solid #8b6914;box-shadow:0 0 0 2px #d4a76a,0 0 0 5px #8b6914,inset 0 0 15px #0003}.frame-daguerreotype{border:8px solid;border-color:#a08060 #8b6914 #6b4e13 #a08060;box-shadow:inset 0 0 20px #0006}.frame-polaroid-vintage{border:10px solid #f5f0e8;border-bottom-width:30px;box-shadow:0 2px 8px #0003}.frame-film{border:8px solid #222;box-shadow:inset 0 0 0 2px #444,0 0 0 1px #000}.frame-burnt-edges{box-shadow:inset 0 0 30px #50280080,inset 0 0 60px #0000004d;border-radius:2px}.frame-retro-tv{border:8px solid #333;border-radius:16px;box-shadow:inset 0 0 10px #00000080,0 4px 8px #0000004d}.frame-gold-classic{border:5px solid;border-color:#d4a76a #b8860b #8b6914 #d4a76a;box-shadow:0 0 0 1px #6b4e13,inset 0 0 0 1px #fce4a8}.frame-silver-classic{border:5px solid;border-color:#d0d0d0 #a8a8a8 #808080 #d0d0d0;box-shadow:0 0 0 1px #666,inset 0 0 0 1px #eee}.frame-copper{border:5px solid;border-color:#d4946a #b87333 #8b5a2b #d4946a;box-shadow:0 0 0 1px #6b3a1a,inset 0 0 0 1px #f0c8a0}.frame-wood-light{border:6px solid #c4a882;box-shadow:inset 0 0 0 1px #a08060,0 0 0 1px #8b7355}.frame-wood-dark{border:6px solid #5c3a1e;box-shadow:inset 0 0 0 1px #3e2510,0 0 0 1px #2a1a0a}.frame-wood-walnut{border:6px solid #6b4226;box-shadow:inset 0 0 0 1px #8b5a36,0 0 0 1px #3e2510}.frame-rounded-sm{border-radius:4px;border:2px solid}.frame-rounded-lg{border-radius:20px;border:2px solid}.frame-rounded-xl{border-radius:32px;border:3px solid}.frame-squircle{border-radius:22%;border:2px solid #999}.frame-oval{border-radius:50%/40%;border:2px solid #999}.frame-arch{border-radius:50% 50% 0 0;border:3px solid}.frame-modern-pill{border:2px solid #e0e0e0;border-radius:24px;box-shadow:0 2px 8px #0000001a}.frame-vignette{box-shadow:inset 0 0 40px #00000080}.frame-vignette-strong{box-shadow:inset 0 0 60px #000000b3}.frame-spotlight{box-shadow:inset 0 0 80px 20px #0009}.frame-dreamy{box-shadow:0 0 15px #ffffff80,inset 0 0 15px #ffffff4d;border:1px solid rgba(255,255,255,.5)}.frame-emboss{box-shadow:inset 2px 2px 4px #ffffff80,inset -2px -2px 4px #0000004d;border:1px solid #ccc}.frame-deboss{box-shadow:inset -2px -2px 4px #ffffff4d,inset 2px 2px 6px #0006;border:1px solid #aaa}.frame-modern-thin{border:1px solid #e0e0e0;box-shadow:0 1px 3px #00000014}.frame-modern-rounded{border:2px solid #e0e0e0;border-radius:8px;box-shadow:0 2px 8px #0000001a}.frame-hairline{border:1px solid;border-radius:0}.frame-pastel-pink{border:5px solid #f8bbd0}.frame-pastel-blue{border:5px solid #bbdefb}.frame-pastel-green{border:5px solid #c8e6c9}.frame-pastel-yellow{border:5px solid #fff9c4}.frame-pastel-lilac{border:5px solid #e1bee7}.frame-pastel-peach{border:5px solid #ffe0b2}.frame-coral{border:5px solid #ff7f7f}.frame-teal{border:5px solid #009688}.frame-burgundy{border:5px solid #800020}.frame-olive{border:5px solid #808000}.book-preview-overlay{position:fixed;inset:0;background:url(/wood-table.jpg) center/cover no-repeat #3a2415;box-shadow:inset 0 0 200px 60px #00000073;z-index:var(--ff-z-toast);display:flex;flex-direction:column;align-items:center;justify-content:center;opacity:0;transition:opacity .3s ease}.book-preview-overlay.visible{opacity:1}.book-preview-close{position:absolute;top:18px;right:18px;width:40px;height:40px;border:1px solid rgba(255,255,255,.1);background:#0006;backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);color:#fffc;font-size:22px;border-radius:50%;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background .2s,transform .15s;z-index:10;line-height:1}.book-preview-close:hover{background:#0000008c;transform:scale(1.08)}.book-scene{position:relative;display:flex;align-items:center;justify-content:center}.book-3d-wrapper{position:relative;transition:width .6s ease}.book-shadow{position:absolute;left:4px;right:4px;bottom:-18px;height:30px;background:radial-gradient(ellipse 100% 100% at 50% 0%,rgba(0,0,0,.35) 0%,rgba(0,0,0,.15) 40%,transparent 70%);border-radius:50%;filter:blur(8px);z-index:-1;pointer-events:none}.book-3d-wrapper:after{content:"";position:absolute;left:-8px;right:-8px;bottom:-22px;height:40px;background:radial-gradient(ellipse 110% 100% at 50% 0%,rgba(0,0,0,.25) 0%,transparent 65%);border-radius:50%;filter:blur(12px);z-index:-2;pointer-events:none}.stpf-page{background:#fff;overflow:hidden!important;box-sizing:border-box}.stpf-page.cover-page{background:#fff}.book-scene-pen{position:absolute;right:60px;bottom:50px;width:280px;height:20px;transform:rotate(-32deg);transform-origin:center center;z-index:5;pointer-events:none;filter:drop-shadow(3px 4px 6px rgba(0,0,0,.45))}.book-scene-pen:before{content:"";position:absolute;left:0;top:0;width:220px;height:20px;background:linear-gradient(180deg,#1a1a2e,#2d2d44 20%,#4a4a6a,#2d2d44 50%,#1a1a2e 70%,#16162a);border-radius:3px 0 0 3px;border-right:4px solid #c0a050}.book-scene-pen:after{content:"";position:absolute;left:224px;top:3px;width:0;height:0;border-top:7px solid transparent;border-bottom:7px solid transparent;border-left:45px solid #2a2a3a}.book-scene-pen-clip{position:absolute;top:-4px;left:10px;width:70px;height:5px;background:linear-gradient(180deg,#d4b060,#a8883c);border-radius:1px;pointer-events:none}.book-scene-pen-band{position:absolute;top:0;left:148px;width:8px;height:20px;background:linear-gradient(180deg,#c0a050,#e8d08a 40%,#c0a050);pointer-events:none}.book-preview-container{position:relative;overflow:visible;border-radius:2px}#stPageFlipBook{position:relative;transition:margin-left .6s ease}.cover-wrap{position:relative;padding:6px;background:linear-gradient(135deg,#7a6548,#5c4833,#4a3928);border-radius:4px;box-shadow:0 2px 10px #0006}.cover-wrap .spread-page{border-radius:2px}.spread-page{position:relative;overflow:hidden;background:#fff;flex-shrink:0}.spread-fold{position:absolute;top:0;left:50%;width:1px;height:100%;background:linear-gradient(180deg,#0000000a,#0000001f 15%,#00000026,#0000001f 85%,#0000000a);z-index:5;pointer-events:none}.spread-fold:before{content:"";position:absolute;top:0;bottom:0;left:-8px;width:16px;background:linear-gradient(90deg,transparent 0%,rgba(0,0,0,.03) 35%,rgba(0,0,0,.06) 50%,rgba(0,0,0,.03) 65%,transparent 100%);pointer-events:none}.spread-page .preview-zoom-wrapper{position:relative;transform-origin:0 0}.spread-page .page-item,.spread-page .page-slot{pointer-events:none!important;cursor:default!important}.spread-page .slot-placeholder{display:none!important}.spread-page .text-content{cursor:default!important}.spread-page .pan-circle,.spread-page .photo-zoom-slider-wrap{display:none!important}.book-preview-nav{display:flex;align-items:center;gap:20px;margin-top:36px;padding:10px 24px;background:#00000059;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);border-radius:28px;border:1px solid rgba(255,255,255,.08);box-shadow:0 4px 16px #0003}.book-preview-nav button{width:44px;height:44px;border:none;background:#ffffff1a;color:#ffffffd9;font-size:20px;border-radius:50%;cursor:pointer;transition:background .2s,transform .15s;display:flex;align-items:center;justify-content:center}.book-preview-nav button:hover{background:#fff3;transform:scale(1.05)}.book-preview-nav button:active{transform:scale(.96)}.book-preview-nav button:disabled{opacity:.25;cursor:default;transform:none}.book-preview-nav button:disabled:hover{background:#ffffff1a;transform:none}.book-preview-nav .preview-page-indicator{color:#ffffffbf;font-size:13px;min-width:110px;text-align:center;font-weight:500;letter-spacing:.3px}@keyframes bookSceneEntrance{0%{opacity:0;transform:scale(.92) translateY(20px)}to{opacity:1;transform:scale(1) translateY(0)}}.book-preview-overlay.visible .book-scene{animation:bookSceneEntrance .5s cubic-bezier(.22,1,.36,1) forwards}.book-preview-overlay.visible .book-preview-nav{animation:bookSceneEntrance .5s cubic-bezier(.22,1,.36,1) .1s both}.project-modal-overlay{display:none;position:fixed;inset:0;background:#0000008c;z-index:var(--ff-z-modal-backdrop);justify-content:center;align-items:center}.project-modal-overlay.visible{display:flex}.project-modal{background:var(--ff-white);border-radius:var(--ff-radius-lg);width:680px;max-width:92vw;max-height:80vh;display:flex;flex-direction:column;box-shadow:var(--ff-shadow-lg);overflow:hidden}.pm-header{display:flex;align-items:center;justify-content:space-between;padding:20px 24px 16px;border-bottom:1px solid var(--border-light)}.pm-header h2{font-size:18px;font-weight:700;color:var(--text-primary)}.pm-close{width:32px;height:32px;border-radius:8px;border:none;background:none;cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--text-secondary);font-size:20px}.pm-close:hover{background:var(--bg-hover)}.pm-body{padding:20px 24px;overflow-y:auto;flex:1}.pm-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}.pm-card{border:2px solid var(--border-light);border-radius:var(--ff-radius-lg);overflow:hidden;cursor:pointer;transition:all .2s;position:relative;background:var(--ff-white)}.pm-card:hover{border-color:var(--accent);box-shadow:0 4px 16px #0000001a}.pm-card-thumb{width:100%;aspect-ratio:4/3;background:var(--bg-main);display:flex;align-items:center;justify-content:center;overflow:hidden}.pm-card-thumb img{width:100%;height:100%;object-fit:contain;padding:8px}.pm-card-thumb svg{width:48px;height:48px;stroke:var(--text-muted);fill:none;stroke-width:1.2}.pm-card-info{padding:10px 12px}.pm-card-info .pm-name{font-size:13px;font-weight:600;color:var(--text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.pm-card-info .pm-product{font-size:11px;color:var(--accent-dark, #b8960a);margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-weight:500}.pm-card-info .pm-date{font-size:11px;color:var(--text-muted);margin-top:2px}.pm-card-del{position:absolute;top:6px;right:6px;width:26px;height:26px;border-radius:50%;border:none;background:#0000008c;color:#fff;cursor:pointer;display:none;align-items:center;justify-content:center;font-size:14px;line-height:1}.pm-card:hover .pm-card-del{display:flex}.pm-card-del:hover{background:var(--ff-error)}.pm-card-new{border:2px dashed var(--border);border-radius:12px;cursor:pointer;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;padding:24px;color:var(--text-secondary);transition:all .2s;min-height:180px}.pm-card-new:hover{border-color:var(--accent);color:var(--text-primary);background:var(--bg-hover)}.pm-card-new svg{width:40px;height:40px;stroke:currentColor;fill:none;stroke-width:1.5}.pm-card-new span{font-size:13px;font-weight:500}.order-overlay{position:fixed;inset:0;z-index:var(--ff-z-modal-backdrop);background:#0000008c;display:none;align-items:center;justify-content:center;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px)}.order-overlay.open{display:flex}.order-modal{background:var(--bg-panel);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);max-width:420px;width:95vw;position:relative}.order-modal-close{position:absolute;top:12px;right:12px;background:none;border:none;cursor:pointer;color:var(--text-secondary);font-size:24px;line-height:1;padding:4px;border-radius:50%;z-index:1}.order-modal-close:hover{color:var(--danger);background:var(--bg-hover)}.order-modal-body{padding:40px 32px;text-align:center}.order-success{display:none}.order-success.active{display:block}.mobile-upload-overlay{display:none;position:fixed;inset:0;background:#000000b3;z-index:var(--ff-z-modal-backdrop);align-items:center;justify-content:center}.mobile-upload-overlay.open{display:flex}.mobile-upload-box{background:#2a2a3a;border-radius:16px;padding:40px;width:520px;max-width:92vw;color:#fff;text-align:center;position:relative}.mobile-upload-box h2{font-size:22px;font-weight:700;margin-bottom:8px}.mobile-upload-close{position:absolute;top:16px;right:16px;width:32px;height:32px;background:#ffffff1a;border:none;border-radius:50%;color:#fff;font-size:20px;cursor:pointer;display:flex;align-items:center;justify-content:center}.mobile-upload-close:hover{background:#fff3}.mobile-upload-steps{display:flex;align-items:center;justify-content:center;gap:12px;margin:24px 0 20px;color:#ffffffb3;font-size:13px}.mobile-upload-step{display:flex;flex-direction:column;align-items:center;gap:6px;max-width:120px}.mobile-upload-step svg{width:32px;height:32px;opacity:.8}.mobile-upload-step-arrow{font-size:20px;opacity:.5;margin-top:-10px}.mobile-upload-qr{background:#fff;border-radius:12px;padding:16px;display:inline-block;margin:16px 0}.mobile-upload-qr img{width:220px;height:220px;display:block}.mobile-upload-link{margin-top:16px;color:#fff9;font-size:13px}.mobile-upload-link-row{display:flex;align-items:center;gap:8px;margin-top:8px;justify-content:center}.mobile-upload-link-input{background:#ffffff1a;border:1px solid rgba(255,255,255,.15);border-radius:8px;color:#fff;padding:8px 14px;font-size:13px;font-family:inherit;width:320px;max-width:60vw;text-overflow:ellipsis;outline:none}.mobile-upload-link-input:focus{border-color:#ffffff4d}.mobile-upload-copy-btn{padding:8px 16px;background:var(--ff-yellow);color:var(--ff-black);border:none;border-radius:var(--ff-radius-md);font-size:13px;font-weight:600;cursor:pointer;font-family:inherit;white-space:nowrap}.mobile-upload-copy-btn:hover{background:#e6b800}.mobile-upload-status{margin-top:16px;font-size:13px;color:#ffffff80}.mobile-upload-new-count{display:inline-block;padding:2px 10px;background:var(--ff-success);color:var(--ff-white);border-radius:var(--ff-radius-lg);font-size:12px;font-weight:600;margin-left:6px;animation:pulse-green 1.5s infinite}@keyframes pulse-green{0%,to{opacity:1}50%{opacity:.6}}[data-theme=dark] .theme-toggle-track{background:#374151}[data-theme=dark] .theme-toggle-track .toggle-icon-sun{opacity:.4}[data-theme=dark] .theme-toggle-track .toggle-icon-moon{opacity:1;color:#fbbf24}[data-theme=dark] .theme-toggle-circle{transform:translate(24px);background:#1f2937;box-shadow:0 1px 3px #0006}[data-theme=dark]{--bg-main: #1a1a2e;--bg-panel: #16213e;--bg-toolbar: #1a1a2e;--bg-hover: #1f2b47;--bg-active: #253352;--bg-canvas: #0f0f1a;--accent: #ffcc00;--accent-hover: #ffd633;--accent-dark: #e6b800;--text-primary: #e8eaed;--text-secondary: #9aa0a6;--text-muted: #6b7280;--border: #2d3748;--border-light: #374151;--shadow-sm: 0 1px 3px rgba(0,0,0,.25);--shadow-md: 0 2px 8px rgba(0,0,0,.3);--shadow-lg: 0 4px 20px rgba(0,0,0,.4);--danger: #f87171;--danger-hover: #ef4444;--success: #4ade80;--info: #60a5fa}[data-theme=dark] .top-header .logo{color:#ccc}[data-theme=dark] .icon-sidebar .sidebar-icon{color:#9aa0a6}[data-theme=dark] .icon-sidebar .sidebar-icon.active{background:#fc0;color:#1a1a2e}[data-theme=dark] .float-toolbar{background:#1e293b;border-color:#374151}[data-theme=dark] .float-toolbar:before{border-bottom-color:#374151}[data-theme=dark] .float-toolbar:after{border-bottom-color:#1e293b}[data-theme=dark] .ft-btn{color:#9aa0a6}[data-theme=dark] .ft-btn:hover{background:#253352;color:#e8eaed}[data-theme=dark] .ft-btn.danger{color:#888}[data-theme=dark] .ft-btn.danger:hover{background:#3b1c1a;color:#f87171}[data-theme=dark] .ft-sep{background:#374151}[data-theme=dark] .ft-scale-label,[data-theme=dark] .ft-opacity-group button{color:#9aa0a6}[data-theme=dark] .ft-opacity-group button:hover{background:#253352;color:#e8eaed}[data-theme=dark] .bb-hide-btn{background:#4b5563;color:#e8eaed}[data-theme=dark] .bb-hide-btn:hover{background:#6b7280}[data-theme=dark] .effects-panel{background:#1e293b;border-color:#374151}[data-theme=dark] .effects-panel .ep-slider-row{color:#9aa0a6}[data-theme=dark] .effects-panel .ep-slider-reset{color:#6b7280}[data-theme=dark] .effects-panel .ep-slider-reset:hover{background:#253352;color:#9aa0a6}[data-theme=dark] .effects-panel .ep-preset-name{color:#9aa0a6}[data-theme=dark] .effects-panel .ep-arrow:hover{background:#253352}[data-theme=dark] .layers-dropdown{background:#1e293b;border-color:#374151}[data-theme=dark] .layers-dropdown .ld-item{color:#c9cdd3}[data-theme=dark] .frame-mask-panel{background:#1e293b;border-color:#374151}[data-theme=dark] .frame-mask-panel .fmp-btn{color:#9aa0a6}[data-theme=dark] .frame-mask-panel .fmp-btn:hover{background:#253352}[data-theme=dark] .frame-mask-panel .fmp-val{color:#c9cdd3}[data-theme=dark] .frame-mask-panel .fmp-clear{background:#332d00;color:#ffd633}[data-theme=dark] .frame-mask-panel .fmp-clear:hover{background:#fc0;color:#1a1a2e}[data-theme=dark] .project-modal{background:#1e293b}[data-theme=dark] .pm-card{background:#16213e;border-color:#374151}[data-theme=dark] .pm-card-del:hover{background:#dc2626}[data-theme=dark] .template-card{background:#1e293b;border-color:#374151}[data-theme=dark] .template-preview{background:#1e293b}[data-theme=dark] .template-preview .tpl-slot{background:#374151;border-color:#1e293b}[data-theme=dark] .tpl-db-card{background:#1e293b;border-color:#374151}[data-theme=dark] .tpl-theme-tab{background:#16213e;color:#9ca3af}[data-theme=dark] .tpl-theme-tab:hover{background:#1e293b}[data-theme=dark] .tpl-count-btn{background:#16213e;color:#9ca3af}[data-theme=dark] .tpl-count-btn:hover{background:#1e293b}[data-theme=dark] .tpl-count-btn.active{background:#e8eaed;color:#1a1a2e}[data-theme=dark] .tpl-badge{background:#374151;color:#9ca3af}[data-theme=dark] .tpl-section-title.tpl-collapsible:hover,[data-theme=dark] .clipart-item,[data-theme=dark] .frame-card{background:#1e293b}[data-theme=dark] .frame-card .frame-inner{background:#374151}[data-theme=dark] .bg-cat-dot{background:#4b5563}[data-theme=dark] .layer-item{background:#16213e}[data-theme=dark] .layer-item.active{background:#1e3a5f}[data-theme=dark] .layer-btn{background:#16213e}[data-theme=dark] .btn-cart,[data-theme=dark] .bg-edit-btn,[data-theme=dark] .all-spread-btn-edit{color:#1a1a2e}[data-theme=dark] .all-spread-btn-dup{background:#1e293be6;color:#e8eaed}[data-theme=dark] .all-spread-btn-dup:hover{background:#1e293b}[data-theme=dark] .header-project .proj-name:focus{background:#16213e}[data-theme=dark] .header-project .proj-status.saved{color:#4ade80}[data-theme=dark] #photoSort{background:#16213e!important;color:#9aa0a6!important}[data-theme=dark] #ftPhotoZoomLabel,[data-theme=dark] #ftRotationLabel{color:#9aa0a6!important}[data-theme=dark] .float-toolbar input[type=range]{accent-color:var(--accent)!important}[data-theme=dark] .spread-spine{background:#6b7280}[data-theme=dark] .cover-spine-label{color:#6b7280}
