.editor-modal-overlay{position: fixed;top: 0;left: 0;right: 0;bottom: 0;height: 100vh;height: 100dvh;z-index: var(--z-modal);display: none;background: rgba(26,26,26,0.7);backdrop-filter: blur(4px)}.editor-modal-overlay.active{display: block}.editor-modal-overlay > .editor-modal-container{position: absolute;top: 16px;left: 16px;right: 16px;bottom: 16px;max-height: calc(100vh - 32px);max-height: calc(100dvh - 32px);display: flex;flex-direction: column;background: var(--color-white);border: var(--border-width-thick) solid var(--border-color);border-radius: var(--radius);box-shadow: var(--shadow-lg);overflow: hidden}@media (min-width: 769px){.editor-modal-overlay > .editor-modal-container{inset: 24px}}.editor-modal-container{position: absolute;top: 16px;left: 16px;right: 16px;bottom: 16px;max-height: calc(100vh - 32px);max-height: calc(100dvh - 32px);display: flex;flex-direction: column;background: var(--color-white);border: var(--border-width-thick) solid var(--border-color);border-radius: var(--radius);box-shadow: var(--shadow-lg);overflow: hidden}@media (min-width: 769px){.editor-modal-container{inset: 24px}}.editor-modal-header{display: flex;flex-direction: column;background: var(--color-cream);border-bottom: var(--border-width) solid var(--border-color);flex-shrink: 0}.save-progress-overlay{position: fixed;inset: 0;z-index: 100002;display: none;align-items: center;justify-content: center;background: rgba(0,0,0,0.45);padding: 20px}.save-progress-overlay.show{display: flex}.save-progress-box{background: #fff;border: var(--border-width-thick) solid var(--border-color);border-radius: var(--radius);box-shadow: var(--shadow-lg);padding: 22px 24px;min-width: 240px;max-width: 84vw;text-align: center}.save-progress-label{font-size: 14px;font-weight: 700;color: var(--text-color);margin-bottom: 12px}.save-progress-barwrap{height: 10px;background: #eee;border: 2px solid var(--border-color);border-radius: 6px;overflow: hidden}.save-progress-bar{height: 100%;width: 0;background: var(--primary-color);transition: width .12s linear}.save-progress-bar.indeterminate{width: 40%;animation: saveProgIndet 1.1s ease-in-out infinite}@keyframes saveProgIndet{0%{transform: translateX(-110%)}100%{transform: translateX(275%)}}.save-progress-pct{margin-top: 8px;font-size: 12px;color: var(--text-light);font-variant-numeric: tabular-nums;min-height: 16px}.editor-modal-header.editor-header-2d{background: var(--craft-2d)}.editor-modal-header.editor-header-3d{background: var(--craft-3d)}.editor-modal-header.editor-header-bead{background: var(--craft-bead)}.modal-header-row1{display: flex;align-items: center;justify-content: space-between;padding: 8px 12px;border-bottom: 1px solid rgba(0,0,0,0.1)}.modal-header-type{display: flex;align-items: center;gap: 6px}.modal-header-type img,.modal-header-type svg{width: 16px;height: 16px}.modal-header-type span{font-size: 13px;font-weight: 600;color: var(--text-color)}.editor-modal-header .editor-modal-close{width: 28px;height: 28px;padding: 4px;background: transparent;border: none;border-radius: 4px;cursor: pointer;display: flex;align-items: center;justify-content: center;transition: background 0.2s}.editor-modal-header .editor-modal-close:hover{background: rgba(0,0,0,0.1)}.editor-modal-header .editor-modal-close svg{width: 18px;height: 18px;stroke: var(--text-color)}.modal-header-row2{display: flex;align-items: center;justify-content: center;padding: 12px 16px;min-height: 48px;gap: 12px}.modal-title-name{font-size: 16px;font-weight: 700;color: var(--text-color);text-align: center}.modal-title-edit-wrap{display: flex;align-items: center;justify-content: center;flex: 1;min-width: 0}.modal-title-edit-wrap input[type="text"]{flex: 1;min-width: 0;padding: 8px 12px;font-size: 15px;font-weight: 600;text-align: center;border: 2px solid var(--border-color);border-radius: 8px;background: var(--color-white);color: var(--text-color);transition: border-color 0.2s,box-shadow 0.2s}.modal-title-edit-wrap input:focus{outline: none;border-color: var(--primary-color);box-shadow: 0 0 0 3px rgba(244,230,55,0.3)}.modal-title-edit-wrap input::placeholder{color: #999;font-weight: 400}.modal-allow-copy-wrap{display: flex;align-items: center;margin-left: auto;flex-shrink: 0}.allow-copy-toggle{display: flex;flex-direction: column-reverse;align-items: center;gap: 2px;cursor: pointer;user-select: none;padding: 3px 8px;border-radius: 20px;transition: all 0.2s}.allow-copy-toggle input[type="checkbox"]{display: none}.allow-copy-slider{position: relative;width: 32px;height: 18px;background: #ccc;border-radius: 18px;transition: background 0.3s;flex-shrink: 0}.allow-copy-slider::after{content: '';position: absolute;top: 2px;left: 2px;width: 14px;height: 14px;background: #fff;border-radius: 50%;transition: transform 0.3s;box-shadow: 0 1px 3px rgba(0,0,0,0.2)}.allow-copy-toggle input:checked + .allow-copy-slider{background: #0078ff}.allow-copy-toggle input:checked + .allow-copy-slider::after{transform: translateX(14px)}.allow-copy-text{font-size: 11px;font-weight: 500;color: #888;white-space: nowrap;transition: color 0.2s}.allow-copy-toggle input:checked ~ .allow-copy-text{color: #0078ff}.editor-modal-title{font-size: 1.1rem;font-weight: 700;white-space: nowrap;overflow: hidden;text-overflow: ellipsis}.editor-modal-close{width: 44px;height: 44px;display: flex;align-items: center;justify-content: center;border: var(--border-width) solid var(--border-color);border-radius: var(--radius-sm);background: var(--color-white);cursor: pointer;font-size: 24px;font-weight: 700;transition: all var(--transition-fast);box-shadow: var(--shadow-sm);flex-shrink: 0}.editor-modal-close:hover{background: var(--color-peach);transform: translate(-2px,-2px);box-shadow: var(--shadow)}.editor-modal-close:active{transform: translate(1px,1px);box-shadow: 1px 1px 0 var(--border-color)}.editor-modal-body{flex: 1;position: relative;overflow: hidden;background: var(--bg-color)}.editor-modal-iframe{position: absolute;inset: 0;width: 100%;height: 100%;border: none}.editor-modal-loading{position: absolute;inset: 0;display: none;flex-direction: column;align-items: center;justify-content: center;gap: 16px;background: var(--bg-color);z-index: 10}.editor-modal-loading.show{display: flex}.editor-modal-loading .spinner{width: 48px;height: 48px;border-width: 4px}.like-users-modal{position: fixed;inset: 0;z-index: var(--z-modal);display: flex;align-items: center;justify-content: center;padding: 20px;background: rgba(26,26,26,0.7);opacity: 0;visibility: hidden;transition: all var(--transition)}.like-users-modal.show{opacity: 1;visibility: visible}.like-users-modal-body{padding: 16px;overflow-y: auto;flex: 1}.comments-modal{position: fixed;inset: 0;z-index: var(--z-modal);display: flex;align-items: center;justify-content: center;padding: 20px;background: rgba(26,26,26,0.7);opacity: 0;visibility: hidden;transition: all var(--transition)}.comments-modal.show{opacity: 1;visibility: visible}.like-users-modal-overlay{position: fixed;inset: 0;z-index: var(--z-overlay);display: none;align-items: center;justify-content: center;padding: 20px;background: rgba(26,26,26,0.7)}.like-users-modal-overlay.show{display: flex}.like-users-modal-box{background: var(--color-white);border: var(--border-width-thick) solid var(--border-color);border-radius: var(--radius);box-shadow: var(--shadow-lg);max-width: 400px;width: 100%;max-height: 70vh;overflow: hidden;display: flex;flex-direction: column}.like-users-modal-top{padding: 18px 20px;background: var(--color-cream);border-bottom: var(--border-width) solid var(--border-color);display: flex;align-items: center;justify-content: space-between}.like-users-modal-top h3{font-size: 1rem;font-weight: 700;margin: 0}.like-users-modal-x{width: 32px;height: 32px;font-size: 20px}.like-users-modal-list{flex: 1;overflow-y: auto;padding: 12px}.like-users-modal-user{display: flex;align-items: center;gap: 12px;padding: 10px 12px;border-radius: var(--radius-xs);text-decoration: none;color: var(--text-color);transition: background var(--transition-fast)}.like-users-modal-user:hover{background: var(--color-cream)}.like-users-modal-info{flex: 1;min-width: 0}.like-users-modal-name{font-weight: 700;font-size: 14px}.like-users-modal-count{font-size: 12px;color: var(--text-muted)}.like-users-modal-loading,.like-users-modal-empty{text-align: center;padding: 40px 20px;color: var(--text-muted);font-size: 14px}.comments-modal-overlay{display: none;position: fixed;top: 0;left: 0;right: 0;bottom: 0;background: rgba(0,0,0,0.5);z-index: var(--z-overlay);justify-content: center;align-items: center;padding: 20px}.comments-modal-overlay.show{display: flex}.comments-modal-box{background: var(--color-white);border: var(--border-width-thick) solid var(--border-color);border-radius: var(--radius);box-shadow: var(--shadow-lg);width: 100%;max-width: 480px;max-height: 80vh;overflow: hidden;display: flex;flex-direction: column}.comments-modal-top{display: flex;justify-content: space-between;align-items: center;padding: 14px 16px;border-bottom: var(--border-width) solid var(--border-color);background: var(--color-cream)}.comments-modal-top h3{margin: 0;font-size: 16px;font-weight: 700}.comments-modal-x{width: 28px;height: 28px;font-size: 18px}.comments-modal-list{flex: 1;overflow-y: auto;padding: 8px 0;min-height: 150px;max-height: 400px}.comments-modal-loading{padding: 40px 20px;text-align: center;color: var(--text-muted)}.confirm-modal-overlay{display: none;position: fixed;top: 0;left: 0;right: 0;bottom: 0;background: rgba(0,0,0,0.6);z-index: var(--z-modal-confirm);justify-content: center;align-items: center;padding: 20px}.confirm-modal-overlay.show{display: flex}.confirm-modal-box{background: var(--color-white);border: var(--border-width-thick) solid var(--border-color);border-radius: var(--radius);box-shadow: var(--shadow-lg);padding: 24px;width: 100%;max-width: 320px;text-align: center;animation: confirmModalIn 0.2s ease-out}@keyframes confirmModalIn{from{opacity: 0;transform: scale(0.9)}to{opacity: 1;transform: scale(1)}}.confirm-modal-icon{margin-bottom: 12px}.confirm-modal-icon img{width: 48px;height: 48px}.confirm-modal-message{font-size: 15px;line-height: 1.5;color: var(--text-color);margin: 0 0 20px 0}.confirm-modal-buttons{display: flex;gap: 12px;justify-content: center}.confirm-modal-btn{flex: 1;padding: 12px 20px;border: var(--border-width) solid var(--border-color);border-radius: var(--radius-xs);font-size: 14px;font-weight: 700;cursor: pointer;transition: all var(--transition-fast);box-shadow: 2px 2px 0 var(--border-color)}.confirm-modal-btn.cancel{background: var(--color-white);color: var(--text-color)}.confirm-modal-btn.cancel:hover{background: var(--color-cream)}.confirm-modal-btn.confirm{background: #e74c3c;color: white;border-color: #c0392b;box-shadow: 2px 2px 0 #c0392b}.confirm-modal-btn.confirm:hover{background: #c0392b}.confirm-modal-btn:active{transform: translate(1px,1px);box-shadow: 1px 1px 0 var(--border-color)}.follow-modal-overlay{position: fixed;inset: 0;background: rgba(0,0,0,0.5);display: flex;align-items: center;justify-content: center;z-index: var(--z-modal);padding: 20px;opacity: 0;visibility: hidden;transition: all var(--transition)}.follow-modal-overlay.show{opacity: 1;visibility: visible}.follow-modal-box{background: var(--card-bg);border: var(--border-width-thick) solid var(--border-color);border-radius: var(--radius);box-shadow: var(--shadow-lg);width: 100%;max-width: 400px;max-height: 70vh;display: flex;flex-direction: column;overflow: hidden}.follow-modal-top{display: flex;justify-content: space-between;align-items: center;padding: 16px 20px;border-bottom: var(--border-width) solid var(--border-color)}.follow-modal-top h3{font-size: 1.1rem;font-weight: 700;margin: 0}.follow-modal-x{background: none;border: none;font-size: 24px;cursor: pointer;padding: 4px 8px;border-radius: var(--radius-xs);transition: background var(--transition-fast)}.follow-modal-x:hover{background: var(--color-cream)}.follow-modal-list{overflow-y: auto;padding: 12px;flex: 1}.follow-modal-loading{text-align: center;padding: 40px 20px;color: var(--text-muted)}.follow-modal-user{display: flex;align-items: center;gap: 12px;padding: 12px;border-radius: var(--radius-sm);transition: background var(--transition-fast);text-decoration: none;color: inherit}.follow-modal-user:hover{background: var(--color-cream)}.follow-modal-avatar{width: 48px;height: 48px;border-radius: var(--radius-sm);border: var(--border-width) solid var(--border-color);overflow: hidden;background: var(--color-cream);flex-shrink: 0;display: flex;align-items: center;justify-content: center;font-weight: 700;font-size: 18px;color: var(--text-muted)}.follow-modal-avatar img{width: 100%;height: 100%;object-fit: cover}.follow-modal-avatar span{display: flex;align-items: center;justify-content: center;width: 100%;height: 100%}.follow-modal-info{flex: 1;min-width: 0}.follow-modal-name{font-weight: 700;font-size: 14px;color: var(--text-color);white-space: nowrap;overflow: hidden;text-overflow: ellipsis}.follow-modal-count{font-size: 12px;color: var(--text-muted);flex-shrink: 0}.follow-modal-empty{text-align: center;padding: 40px 20px;color: var(--text-muted)}#colorModal .count-btn{width: 40px;height: 40px;border: var(--border-width) solid var(--border-color);background: var(--color-white);border-radius: var(--radius-sm);font-size: 20px;font-weight: 700;cursor: pointer;transition: all 0.15s;box-shadow: var(--shadow-sm)}#colorModal .count-btn:hover{background: var(--primary-color)}#colorModal .count-btn:active{transform: scale(0.95)}.reviews-summary{padding: 12px 20px;border-bottom: 1px solid #e5e7eb;background: #fefce8}.reviews-avg{display: flex;align-items: center;gap: 8px}.reviews-avg-count{font-size: 13px;color: #6b7280}.reviews-modal-loading,.reviews-modal-empty{text-align: center;padding: 40px 20px;color: #9ca3af;font-size: 14px}.review-item{padding: 16px 20px;border-bottom: 1px solid #f3f4f6}.review-item:last-child{border-bottom: none}.review-header{display: flex;align-items: flex-start;gap: 10px;margin-bottom: 8px}.review-meta{flex: 1;min-width: 0}.review-author{font-weight: 600;font-size: 13px;color: #1a1a1a;text-decoration: none}.review-author:hover{text-decoration: underline}.review-rating-time{display: flex;align-items: center;gap: 8px;margin-top: 2px}.review-time{font-size: 12px;color: #9ca3af}.review-delete-btn{background: none;border: none;color: #9ca3af;font-size: 18px;cursor: pointer;padding: 0 4px;line-height: 1}.review-delete-btn:hover{color: #ef4444}.review-content{font-size: 14px;line-height: 1.6;color: #374151;word-break: break-word}.review-photos{display: flex;gap: 8px;margin-top: 10px;flex-wrap: wrap}.review-photos img{width: 80px;height: 80px;object-fit: cover;border-radius: 8px;cursor: pointer;border: 1px solid #e5e7eb;transition: transform 0.15s}.review-photos img:hover{transform: scale(1.05)}.review-form-wrap{border-top: 2px solid #FFE566;background: #fffdf5}.review-form-inner{padding: 16px 20px}.review-toggle-btn{display: flex;align-items: center;justify-content: center;gap: 6px;width: calc(100% - 40px);margin: 12px 20px;padding: 11px 16px;background: #FFE566;border: 2px solid #1a1a1a;border-radius: 10px;font-weight: 700;font-size: 14px;color: #1a1a1a;cursor: pointer;box-shadow: 2px 2px 0 #1a1a1a}.review-toggle-btn:hover{background: #ffd700}.review-toggle-btn:active{box-shadow: 0 0 0 #1a1a1a;transform: translate(2px,2px)}.review-toggle-btn .emoji-icon{width: 16px;height: 16px}.review-textarea{width: 100%;border: 1px solid #d1d5db;border-radius: 8px;padding: 10px 12px;font-size: 16px;font-family: inherit;resize: vertical;min-height: 70px;outline: none;box-sizing: border-box}.review-textarea:focus{border-color: #f59e0b;box-shadow: 0 0 0 2px rgba(245,158,11,0.15)}.review-form-bottom{display: flex;align-items: center;gap: 10px;margin-top: 10px;flex-wrap: wrap}.review-photo-label{font-size: 13px;color: #2563eb;cursor: pointer;font-weight: 600}.review-photo-label:hover{text-decoration: underline}.review-photo-hint{font-size: 12px;color: #9ca3af;flex: 1}.review-submit-btn{padding: 8px 20px;background: #FFE566;border: 2px solid #1a1a1a;border-radius: 8px;font-weight: 700;font-size: 14px;cursor: pointer;box-shadow: 2px 2px 0 #1a1a1a}.review-submit-btn:hover{background: #ffd700}.review-submit-btn:active{box-shadow: 0 0 0 #1a1a1a;transform: translate(2px,2px)}.review-photo-preview{display: flex;gap: 8px;margin-top: 8px;flex-wrap: wrap}.review-photo-thumb{width: 60px;height: 60px;object-fit: cover;border-radius: 6px;border: 1px solid #e5e7eb}