/* Twilio WP Plugin Admin Styles */ .twp-dashboard { margin-top: 20px; } /* Modal styles - for existing HTML modals */ .twp-modal { position: fixed; top: 0; left: 0; width: 100%; height: 100%; background-color: rgba(0, 0, 0, 0.5); display: none; align-items: center; justify-content: center; z-index: 100000; } .twp-modal[style*="flex"] { display: flex !important; } /* Modal overlay for custom modals */ .twp-modal-overlay { position: fixed !important; top: 0 !important; left: 0 !important; width: 100% !important; height: 100% !important; background: rgba(0, 0, 0, 0.7) !important; display: none; z-index: 100000 !important; align-items: center !important; justify-content: center !important; } .twp-modal-overlay.show { display: flex !important; } /* Ensure modal displays flex when shown by jQuery */ .twp-modal-overlay[style*="block"] { display: flex !important; } .twp-modal-content { background: white; border-radius: 8px; max-width: 500px; width: 90%; /* Removed max-height and overflow for ThickBox compatibility */ box-shadow: 0 10px 30px rgba(0, 0, 0, 0.3); animation: twp-modal-appear 0.3s ease; } /* When inside ThickBox, remove overflow and adjust styling */ #TB_ajaxContent .twp-modal { display: block !important; position: static; width: 100%; height: auto; background: none; } #TB_ajaxContent .twp-modal-content { max-height: none; overflow: visible; width: 100%; max-width: none; box-shadow: none; padding: 20px; box-sizing: border-box; } /* Ensure form elements don't overflow */ #TB_ajaxContent input[type="text"], #TB_ajaxContent input[type="number"], #TB_ajaxContent input[type="time"], #TB_ajaxContent input[type="url"], #TB_ajaxContent select, #TB_ajaxContent textarea { max-width: 100%; box-sizing: border-box; } /* Fix schedule modal specific issues */ #schedule-modal .twp-modal-content { overflow-x: hidden; } /* Step Configuration Modal - appears on top of Workflow Builder */ #step-config-modal { position: fixed !important; top: 0 !important; left: 0 !important; width: 100% !important; height: 100% !important; background: transparent !important; /* No background overlay - ThickBox provides it */ z-index: 100060 !important; /* Higher than ThickBox (100050) */ display: none; pointer-events: none; /* Allow clicks through to ThickBox overlay */ } #step-config-modal.show, #step-config-modal[style*="flex"] { display: flex !important; align-items: center !important; justify-content: center !important; } #step-config-modal .twp-modal-content { position: relative; background: white; border: 1px solid #ccc; box-shadow: 0 10px 30px rgba(0,0,0,0.5); max-width: 600px; width: 90%; max-height: 80vh; overflow-y: auto; padding: 20px; border-radius: 5px; pointer-events: all; /* Re-enable clicks on modal content */ } #schedule-form { max-width: 100%; } #schedule-form label { display: block; margin-bottom: 5px; } #schedule-form input[type="checkbox"] { margin-right: 5px; } @keyframes twp-modal-appear { from { opacity: 0; transform: scale(0.9) translateY(-20px); } to { opacity: 1; transform: scale(1) translateY(0); } } .twp-modal-header { padding: 20px 20px 0 20px; border-bottom: none; } .twp-modal-header h3 { margin: 0; font-size: 1.3em; color: #333; } .twp-modal-body { padding: 20px; line-height: 1.6; } .twp-modal-body p { margin: 0 0 15px 0; } .twp-modal-body p:last-child { margin-bottom: 0; } .twp-modal-footer { padding: 0 20px 20px 20px; text-align: right; } .twp-modal-close { cursor: pointer; } /* After-hours steps styling */ .after-hours-steps-container { border: 1px solid #ddd; border-radius: 4px; padding: 15px; background: #f9f9f9; } .after-hours-step-list { margin-bottom: 15px; } .after-hours-step { background: #fff; border: 1px solid #ddd; border-radius: 4px; margin-bottom: 10px; padding: 10px; } .after-hours-step:last-child { margin-bottom: 0; } .step-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 8px; font-weight: bold; } .step-number { background: #0073aa; color: white; width: 24px; height: 24px; border-radius: 50%; display: inline-flex; align-items: center; justify-content: center; font-size: 12px; margin-right: 8px; } .step-type { flex: 1; } .remove-step { color: #a00; text-decoration: none; padding: 2px 8px; } .remove-step:hover { background: #f8d7da; border-radius: 2px; } .step-details textarea, .step-details input[type="text"] { width: 100%; margin-bottom: 8px; } .add-after-hours-step { display: flex; gap: 10px; align-items: center; } .add-after-hours-step select { flex: 1; } .no-steps-message { text-align: center; color: #666; font-style: italic; padding: 20px; margin: 0; } .twp-stats-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 20px; margin-bottom: 30px; } .twp-stat-card { background: #fff; border: 1px solid #ccd0d4; border-radius: 4px; padding: 20px; text-align: center; } .twp-stat-card h3 { margin: 0 0 10px 0; font-size: 14px; color: #666; font-weight: normal; } .twp-stat-value { font-size: 32px; font-weight: bold; color: #2271b1; } .twp-recent-activity { background: #fff; border: 1px solid #ccd0d4; border-radius: 4px; padding: 20px; } .twp-recent-activity h2 { margin-top: 0; } .twp-status { display: inline-block; padding: 3px 8px; border-radius: 3px; font-size: 12px; font-weight: 600; } .twp-status.active { background: #d4f4dd; color: #00a32a; } .twp-status.inactive { background: #fef8ee; color: #996800; } /* WordPress ThickBox Modal Styles */ .twp-wp-modal-content { padding: 20px; background: #fff; } .twp-wp-modal-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 15px; padding-bottom: 10px; border-bottom: 1px solid #ddd; } .twp-wp-modal-header h2 { margin: 0; font-size: 1.3em; color: #333; } .twp-wp-modal-body { margin-bottom: 20px; line-height: 1.6; } .twp-wp-modal-body p { margin: 0 0 10px 0; } .twp-wp-modal-footer { text-align: right; padding-top: 10px; border-top: 1px solid #ddd; } /* Removed duplicate .twp-modal-content - consolidated above */ .twp-modal-content.large { max-width: 900px; } .twp-modal-content h2 { margin-top: 0; } .twp-modal-content label { display: block; margin-top: 15px; margin-bottom: 5px; font-weight: 600; } .twp-modal-content input[type="text"], .twp-modal-content input[type="number"], .twp-modal-content input[type="time"], .twp-modal-content input[type="url"], .twp-modal-content select, .twp-modal-content textarea { width: 100%; padding: 8px; border: 1px solid #ddd; border-radius: 4px; } .twp-modal-content select[multiple] { height: 120px; } .modal-buttons { margin-top: 20px; display: flex; gap: 10px; justify-content: flex-end; } /* Queue Grid */ .twp-queue-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); gap: 20px; } .twp-queue-card { background: #fff; border: 1px solid #ccd0d4; border-radius: 4px; padding: 20px; } .twp-queue-card h3 { margin-top: 0; margin-bottom: 15px; color: #2271b1; } .queue-stats { margin-bottom: 15px; } .queue-stats .stat { display: flex; justify-content: space-between; margin-bottom: 8px; padding-bottom: 8px; border-bottom: 1px solid #f0f0f0; } .queue-stats .label { color: #666; } .queue-stats .value { font-weight: 600; } .queue-actions { display: flex; gap: 10px; margin-top: 15px; } .queue-actions .button-link-delete { color: #dc3232 !important; } .queue-actions .button-link-delete:hover { color: #a00 !important; } /* Workflow Builder */ .workflow-builder-container { display: grid; grid-template-columns: 1fr 1fr; gap: 30px; margin: 20px 0; } .workflow-info-grid { display: grid; grid-template-columns: 1fr 1fr 200px; gap: 20px; margin-bottom: 20px; padding-bottom: 20px; border-bottom: 1px solid #ddd; } .workflow-steps, .workflow-preview { border: 1px solid #ddd; border-radius: 4px; padding: 15px; min-height: 400px; } .workflow-steps h3, .workflow-preview h3 { margin-top: 0; margin-bottom: 15px; padding-bottom: 10px; border-bottom: 1px solid #ddd; } .step-types-toolbar { display: grid; grid-template-columns: repeat(auto-fit, minmax(100px, 1fr)); gap: 10px; margin-bottom: 20px; padding-bottom: 15px; border-bottom: 1px solid #eee; } .step-btn { display: flex; flex-direction: column; align-items: center; padding: 10px 5px; border: 2px solid #ddd; background: #fff; border-radius: 4px; cursor: pointer; transition: all 0.2s; } .step-btn:hover { border-color: #2271b1; background: #f0f6fc; } .step-btn .dashicons { font-size: 20px; margin-bottom: 5px; } .workflow-steps-container { min-height: 200px; } .workflow-step { background: #f7f7f7; border: 1px solid #ddd; border-radius: 4px; padding: 15px; margin-bottom: 10px; position: relative; cursor: move; } .workflow-step.dragging { opacity: 0.5; transform: rotate(5deg); } .workflow-step .step-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 10px; } .workflow-step .step-type { font-weight: 600; color: #2271b1; display: flex; align-items: center; gap: 8px; } .workflow-step .step-number { background: #2271b1; color: white; border-radius: 50%; width: 20px; height: 20px; display: flex; align-items: center; justify-content: center; font-size: 12px; font-weight: bold; } .workflow-step .step-actions { display: flex; gap: 5px; } .workflow-step .step-actions button { padding: 2px 8px; font-size: 12px; } .workflow-step-content { margin-top: 10px; padding-top: 10px; border-top: 1px solid #ddd; color: #666; font-size: 14px; } /* Workflow Preview */ .workflow-flow-chart { text-align: center; } .flow-start { background: #2271b1; color: white; padding: 10px 20px; border-radius: 20px; display: inline-block; margin-bottom: 20px; font-weight: 600; } .flow-step { background: #f0f6fc; border: 2px solid #2271b1; border-radius: 8px; padding: 10px 15px; margin: 10px 0; position: relative; } .flow-step::before { content: '↓'; position: absolute; top: -15px; left: 50%; transform: translateX(-50%); background: white; padding: 0 5px; color: #2271b1; font-size: 18px; font-weight: bold; } .flow-step:first-child::before { display: none; } /* Step Configuration Forms */ #step-config-content { min-height: 200px; } .step-config-section { margin-bottom: 20px; padding-bottom: 15px; border-bottom: 1px solid #eee; } .step-config-section:last-child { border-bottom: none; } .step-config-section h4 { margin: 0 0 10px 0; color: #2271b1; } .ivr-options { border: 1px solid #ddd; border-radius: 4px; overflow: hidden; } .ivr-option { display: grid; grid-template-columns: 50px 1fr 120px 1fr 100px; align-items: center; gap: 10px; padding: 10px; border-bottom: 1px solid #ddd; background: #fafafa; } .ivr-option:last-child { border-bottom: none; } .ivr-option input[type="text"], .ivr-option select { border: 1px solid #ccc; border-radius: 3px; padding: 5px 8px; width: 100%; } .ivr-target-container { position: relative; } .ivr-target-container > * { width: 100% !important; } .add-ivr-option { padding: 10px; text-align: center; background: #f0f6fc; border-top: 2px dashed #2271b1; cursor: pointer; } .add-ivr-option:hover { background: #e6f3ff; } /* Phone Numbers Page */ .twp-numbers-actions { margin-bottom: 20px; display: flex; gap: 10px; } .twp-numbers-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); gap: 20px; margin-top: 20px; } .twp-number-card { background: #fff; border: 1px solid #ccd0d4; border-radius: 4px; padding: 20px; } .twp-number-card .number { font-size: 18px; font-weight: 600; color: #2271b1; margin-bottom: 10px; } .twp-number-card .number-info { margin-bottom: 15px; } .twp-number-card .number-info .label { color: #666; font-weight: 600; margin-right: 5px; } .twp-number-actions { display: flex; gap: 10px; margin-top: 15px; } .twp-search-form { background: #f9f9f9; border: 1px solid #ddd; border-radius: 4px; padding: 20px; margin-bottom: 20px; display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: 15px; align-items: end; } .twp-search-form label { display: block; margin-bottom: 5px; font-weight: 600; } #search-results { margin-top: 20px; } .available-number { display: flex; justify-content: space-between; align-items: center; padding: 10px 15px; border: 1px solid #ddd; border-radius: 4px; margin-bottom: 10px; background: #fff; } .available-number .number { font-weight: 600; color: #2271b1; } .available-number .capabilities { font-size: 12px; color: #666; } .available-number .price { font-weight: 600; color: #d63638; } /* Responsive Design */ @media (max-width: 768px) { .twp-stats-grid { grid-template-columns: 1fr; } .twp-queue-grid { grid-template-columns: 1fr; } .workflow-builder-container { grid-template-columns: 1fr; } } /* Loading Spinner */ .twp-spinner { display: inline-block; width: 20px; height: 20px; border: 3px solid #f3f3f3; border-top: 3px solid #2271b1; border-radius: 50%; animation: twp-spin 1s linear infinite; } @keyframes twp-spin { 0% { transform: rotate(0deg); } 100% { transform: rotate(360deg); } } /* Notification Styles */ .twp-notice { padding: 12px; margin: 15px 0; border-left: 4px solid; background: #fff; } .twp-notice.success { border-color: #00a32a; background: #d4f4dd; } .twp-notice.error { border-color: #d63638; background: #f4e2e2; } .twp-notice.warning { border-color: #dba617; background: #fef8ee; }