/** * Yoone Subscriptions 后台管理样式 * * 混装产品和订阅功能的后台管理样式 */ /* ========================================================================== 通用后台样式 ========================================================================== */ .yoone-admin-page { margin: 20px 0; } .yoone-admin-page .wrap h1 { color: #2c3e50; font-size: 28px; font-weight: 600; margin-bottom: 25px; border-bottom: 2px solid #3498db; padding-bottom: 10px; } .yoone-notice { margin: 15px 0; padding: 15px 20px; border-left: 4px solid #3498db; background: #f8f9fa; border-radius: 0 4px 4px 0; } .yoone-notice.notice-success { border-left-color: #27ae60; background: #d5f4e6; } .yoone-notice.notice-error { border-left-color: #e74c3c; background: #fadbd8; } .yoone-notice.notice-warning { border-left-color: #f39c12; background: #fef9e7; } .yoone-loading { position: relative; opacity: 0.6; pointer-events: none; } .yoone-loading::after { content: ''; position: absolute; top: 50%; left: 50%; width: 20px; height: 20px; margin: -10px 0 0 -10px; border: 2px solid #ccc; border-top-color: #3498db; border-radius: 50%; animation: yoone-spin 1s linear infinite; z-index: 1000; } @keyframes yoone-spin { to { transform: rotate(360deg); } } /* ========================================================================== 订阅管理页面样式 ========================================================================== */ .yoone-subscriptions-page .tablenav { margin: 20px 0; } .yoone-subscriptions-page .wp-list-table { border: 1px solid #e1e1e1; border-radius: 6px; overflow: hidden; box-shadow: 0 2px 10px rgba(0,0,0,0.05); } .yoone-subscriptions-page .wp-list-table th { background: linear-gradient(135deg, #f8f9fa, #e9ecef); color: #2c3e50; font-weight: 600; padding: 15px 12px; border-bottom: 2px solid #dee2e6; } .yoone-subscriptions-page .wp-list-table td { padding: 15px 12px; vertical-align: middle; border-bottom: 1px solid #f1f3f4; } .yoone-subscriptions-page .wp-list-table tr:hover { background: #f8f9fa; } .subscription-status-badge { display: inline-block; padding: 4px 12px; border-radius: 20px; font-size: 11px; font-weight: bold; text-transform: uppercase; letter-spacing: 0.5px; } .subscription-status-badge.status-active { background: linear-gradient(135deg, #27ae60, #2ecc71); color: white; box-shadow: 0 2px 8px rgba(39, 174, 96, 0.3); } .subscription-status-badge.status-paused { background: linear-gradient(135deg, #f39c12, #e67e22); color: white; box-shadow: 0 2px 8px rgba(243, 156, 18, 0.3); } .subscription-status-badge.status-cancelled { background: linear-gradient(135deg, #e74c3c, #c0392b); color: white; box-shadow: 0 2px 8px rgba(231, 76, 60, 0.3); } .subscription-status-badge.status-expired { background: linear-gradient(135deg, #95a5a6, #7f8c8d); color: white; box-shadow: 0 2px 8px rgba(149, 165, 166, 0.3); } .subscription-customer-link { color: #3498db; text-decoration: none; font-weight: 600; } .subscription-customer-link:hover { color: #2980b9; text-decoration: underline; } .subscription-billing-period { font-size: 13px; color: #7f8c8d; } .subscription-total { font-weight: bold; color: #27ae60; font-size: 16px; } .subscription-actions { display: flex; gap: 8px; flex-wrap: wrap; } .subscription-actions .button { padding: 6px 12px; font-size: 12px; font-weight: 600; border-radius: 4px; text-decoration: none; border: none; cursor: pointer; transition: all 0.3s ease; } .subscription-actions .button-primary { background: #3498db; color: white; } .subscription-actions .button-primary:hover { background: #2980b9; } .subscription-actions .button-secondary { background: #95a5a6; color: white; } .subscription-actions .button-secondary:hover { background: #7f8c8d; } .subscription-actions .button-danger { background: #e74c3c; color: white; } .subscription-actions .button-danger:hover { background: #c0392b; } /* ========================================================================== 混装产品管理页面样式 ========================================================================== */ .yoone-bundles-page .wp-list-table th, .yoone-bundles-page .wp-list-table td { padding: 15px 12px; } .bundle-name-link { color: #2c3e50; text-decoration: none; font-weight: 600; font-size: 16px; } .bundle-name-link:hover { color: #3498db; } .bundle-status-badge { display: inline-block; padding: 4px 12px; border-radius: 20px; font-size: 11px; font-weight: bold; text-transform: uppercase; letter-spacing: 0.5px; } .bundle-status-badge.status-active { background: linear-gradient(135deg, #27ae60, #2ecc71); color: white; box-shadow: 0 2px 8px rgba(39, 174, 96, 0.3); } .bundle-status-badge.status-inactive { background: linear-gradient(135deg, #95a5a6, #7f8c8d); color: white; box-shadow: 0 2px 8px rgba(149, 165, 166, 0.3); } .bundle-discount-info { font-size: 14px; color: #e74c3c; font-weight: 600; } .bundle-quantity-info { font-size: 13px; color: #7f8c8d; } /* ========================================================================== 产品编辑页面样式 ========================================================================== */ .yoone-product-data-panel { padding: 20px; } .yoone-product-data-panel h3 { margin: 0 0 20px 0; color: #2c3e50; font-size: 18px; font-weight: 600; border-bottom: 1px solid #e1e1e1; padding-bottom: 10px; } .yoone-field-group { margin-bottom: 25px; padding: 20px; background: #f8f9fa; border: 1px solid #e9ecef; border-radius: 6px; } .yoone-field-group h4 { margin: 0 0 15px 0; color: #2c3e50; font-size: 16px; font-weight: 600; } .yoone-field { margin-bottom: 20px; } .yoone-field label { display: block; margin-bottom: 8px; font-weight: 600; color: #2c3e50; font-size: 14px; } .yoone-field input[type="text"], .yoone-field input[type="number"], .yoone-field select, .yoone-field textarea { width: 100%; padding: 10px 12px; border: 1px solid #bdc3c7; border-radius: 4px; font-size: 14px; transition: border-color 0.3s ease; } .yoone-field input[type="text"]:focus, .yoone-field input[type="number"]:focus, .yoone-field select:focus, .yoone-field textarea:focus { outline: none; border-color: #3498db; box-shadow: 0 0 0 2px rgba(52, 152, 219, 0.1); } .yoone-field input[type="checkbox"] { margin-right: 8px; transform: scale(1.1); } .yoone-field .description { margin-top: 5px; font-size: 12px; color: #7f8c8d; line-height: 1.4; } .yoone-checkbox-field { display: flex; align-items: center; margin-bottom: 15px; } .yoone-checkbox-field label { margin: 0 0 0 8px; font-weight: 500; } /* 混装产品项目管理 */ .yoone-bundle-items { margin-top: 20px; } .yoone-bundle-items h4 { margin: 0 0 15px 0; color: #2c3e50; font-size: 16px; font-weight: 600; } .bundle-item-search { margin-bottom: 20px; } .bundle-item-search input { width: 70%; padding: 10px 12px; border: 1px solid #bdc3c7; border-radius: 4px 0 0 4px; font-size: 14px; } .bundle-item-search .button { padding: 10px 20px; border: 1px solid #3498db; border-left: none; border-radius: 0 4px 4px 0; background: #3498db; color: white; font-weight: 600; cursor: pointer; transition: background 0.3s ease; } .bundle-item-search .button:hover { background: #2980b9; } .bundle-items-list { border: 1px solid #e1e1e1; border-radius: 6px; overflow: hidden; } .bundle-item-row { display: flex; align-items: center; padding: 15px; border-bottom: 1px solid #f1f3f4; background: white; transition: background 0.3s ease; } .bundle-item-row:hover { background: #f8f9fa; } .bundle-item-row:last-child { border-bottom: none; } .bundle-item-image { flex: 0 0 60px; margin-right: 15px; } .bundle-item-image img { width: 60px; height: 60px; object-fit: cover; border-radius: 4px; } .bundle-item-details { flex: 1; margin-right: 15px; } .bundle-item-name { font-weight: 600; color: #2c3e50; margin-bottom: 5px; font-size: 16px; } .bundle-item-price { color: #27ae60; font-weight: bold; font-size: 14px; } .bundle-item-quantity { flex: 0 0 100px; margin-right: 15px; } .bundle-item-quantity input { width: 70px; padding: 8px; border: 1px solid #bdc3c7; border-radius: 4px; text-align: center; font-size: 14px; } .bundle-item-actions { flex: 0 0 80px; text-align: right; } .bundle-item-remove { padding: 6px 12px; background: #e74c3c; color: white; border: none; border-radius: 4px; font-size: 12px; font-weight: 600; cursor: pointer; transition: background 0.3s ease; } .bundle-item-remove:hover { background: #c0392b; } .bundle-search-results { position: absolute; top: 100%; left: 0; right: 0; background: white; border: 1px solid #e1e1e1; border-top: none; border-radius: 0 0 6px 6px; max-height: 300px; overflow-y: auto; z-index: 1000; box-shadow: 0 4px 15px rgba(0,0,0,0.1); } .bundle-search-result { display: flex; align-items: center; padding: 12px 15px; cursor: pointer; transition: background 0.3s ease; } .bundle-search-result:hover { background: #f8f9fa; } .bundle-search-result img { width: 40px; height: 40px; object-fit: cover; border-radius: 4px; margin-right: 12px; } .bundle-search-result-details { flex: 1; } .bundle-search-result-name { font-weight: 600; color: #2c3e50; margin-bottom: 3px; font-size: 14px; } .bundle-search-result-price { color: #27ae60; font-weight: bold; font-size: 12px; } /* 订阅设置样式 */ .subscription-periods-list { margin-top: 15px; } .subscription-period-row { display: flex; align-items: center; margin-bottom: 12px; padding: 12px; background: white; border: 1px solid #e9ecef; border-radius: 4px; } .subscription-period-row input[type="number"] { width: 80px; margin-right: 10px; } .subscription-period-row select { width: 120px; margin-right: 10px; } .subscription-period-remove { padding: 6px 10px; background: #e74c3c; color: white; border: none; border-radius: 4px; font-size: 11px; font-weight: 600; cursor: pointer; transition: background 0.3s ease; } .subscription-period-remove:hover { background: #c0392b; } .subscription-add-period { padding: 8px 16px; background: #27ae60; color: white; border: none; border-radius: 4px; font-size: 13px; font-weight: 600; cursor: pointer; transition: background 0.3s ease; } .subscription-add-period:hover { background: #229954; } /* ========================================================================== 订单管理页面样式 ========================================================================== */ .yoone-order-meta-box { padding: 20px; } .yoone-order-meta-box h3 { margin: 0 0 20px 0; color: #2c3e50; font-size: 18px; font-weight: 600; border-bottom: 1px solid #e1e1e1; padding-bottom: 10px; } .order-subscription-info { background: #f8f9fa; padding: 15px; border-radius: 6px; border-left: 4px solid #9b59b6; margin-bottom: 20px; } .order-subscription-info h4 { margin: 0 0 10px 0; color: #2c3e50; font-size: 16px; font-weight: 600; } .subscription-info-row { display: flex; justify-content: space-between; margin-bottom: 8px; font-size: 14px; } .subscription-info-label { font-weight: 600; color: #2c3e50; } .subscription-info-value { color: #555; } .order-bundle-info { background: #f8f9fa; padding: 15px; border-radius: 6px; border-left: 4px solid #3498db; margin-bottom: 20px; } .order-bundle-info h4 { margin: 0 0 15px 0; color: #2c3e50; font-size: 16px; font-weight: 600; } .bundle-items-list { list-style: none; padding: 0; margin: 0; } .bundle-item-info { display: flex; align-items: center; padding: 10px 0; border-bottom: 1px solid #e9ecef; } .bundle-item-info:last-child { border-bottom: none; } .bundle-item-info img { width: 40px; height: 40px; object-fit: cover; border-radius: 4px; margin-right: 12px; } .bundle-item-details { flex: 1; } .bundle-item-name { font-weight: 600; color: #2c3e50; margin-bottom: 3px; font-size: 14px; } .bundle-item-quantity, .bundle-item-price { font-size: 12px; color: #7f8c8d; } .bundle-item-price { font-weight: bold; color: #27ae60; } /* ========================================================================== 支付设置页面样式 ========================================================================== */ .yoone-payment-settings { max-width: 800px; } .yoone-payment-settings .form-table { background: white; border: 1px solid #e1e1e1; border-radius: 6px; overflow: hidden; box-shadow: 0 2px 10px rgba(0,0,0,0.05); } .yoone-payment-settings .form-table th { background: linear-gradient(135deg, #f8f9fa, #e9ecef); color: #2c3e50; font-weight: 600; padding: 20px; width: 200px; vertical-align: top; } .yoone-payment-settings .form-table td { padding: 20px; vertical-align: top; } .yoone-payment-settings input[type="text"], .yoone-payment-settings input[type="password"], .yoone-payment-settings select, .yoone-payment-settings textarea { width: 100%; max-width: 400px; padding: 10px 12px; border: 1px solid #bdc3c7; border-radius: 4px; font-size: 14px; transition: border-color 0.3s ease; } .yoone-payment-settings input[type="text"]:focus, .yoone-payment-settings input[type="password"]:focus, .yoone-payment-settings select:focus, .yoone-payment-settings textarea:focus { outline: none; border-color: #3498db; box-shadow: 0 0 0 2px rgba(52, 152, 219, 0.1); } .yoone-payment-settings .description { margin-top: 8px; font-size: 13px; color: #7f8c8d; line-height: 1.4; } .payment-test-mode { background: #fff3cd; border: 1px solid #ffeaa7; border-radius: 6px; padding: 15px; margin: 20px 0; } .payment-test-mode h4 { margin: 0 0 10px 0; color: #856404; font-size: 16px; font-weight: 600; } .payment-test-mode p { margin: 0; color: #856404; font-size: 14px; } /* ========================================================================== 响应式设计 ========================================================================== */ @media (max-width: 768px) { .yoone-admin-page .wrap h1 { font-size: 24px; } .subscription-actions, .bundle-item-row { flex-direction: column; gap: 10px; } .bundle-item-image, .bundle-item-details, .bundle-item-quantity, .bundle-item-actions { margin: 5px 0; flex: none; } .bundle-item-search input { width: 100%; border-radius: 4px; margin-bottom: 10px; } .bundle-item-search .button { width: 100%; border-radius: 4px; border: 1px solid #3498db; } .subscription-period-row { flex-direction: column; align-items: flex-start; gap: 10px; } .subscription-period-row input[type="number"], .subscription-period-row select { width: 100%; margin: 0; } .yoone-payment-settings .form-table, .yoone-payment-settings .form-table tbody, .yoone-payment-settings .form-table tr, .yoone-payment-settings .form-table th, .yoone-payment-settings .form-table td { display: block; width: 100%; } .yoone-payment-settings .form-table th { padding: 15px 15px 5px 15px; border-bottom: none; } .yoone-payment-settings .form-table td { padding: 5px 15px 15px 15px; border-bottom: 1px solid #e1e1e1; } } @media (max-width: 480px) { .yoone-field-group { padding: 15px; } .yoone-order-meta-box, .yoone-product-data-panel { padding: 15px; } .subscription-actions .button { width: 100%; text-align: center; margin-bottom: 5px; } }