/* ======================================================= Polylang Addon Dashboard - Admin Panel Styles ======================================================= */ :root { --primary-color: #30b230; --secondary-color: #239d23; --background-color: #f8f9fa; --border-color: #ddd; --text-color: #222; --text-color-light: #666; --shadow: 0 2px 5px rgba(0, 0, 0, 0.05); --font-size-base: 16px; --line-height-base: 1.5; } /* License Notice */ body.languages_page_polylang-atfpp-dashboard .notice.is-dismissible { margin: 10px 20px 10px 0 !important; } /* General Wrapper */ .atfpp-dashboard-wrapper { margin: 0 auto; padding: 0 20px 0 0; max-width: 1240px; box-sizing: border-box; } .atfpp-dashboard-wrapper * { position: relative; box-sizing: border-box; font-family: Inter, Roboto, Helvetica, Arial, sans-serif; } .atfpp-dashboard-wrapper h3 { margin: 0 0 20px; padding: 0; } :is(.toplevel_page_loco-addon,.languages_page_polylang-atfpp-dashboard) #wpbody #wpbody-content { margin-top: 80px !important; margin-block-start: 80px !important; } /* ================================================ Buttons & Links ================================================ */ .atfpp-dashboard-btns-row { display: flex; gap: 10px; } .atfpp-dashboard-btn { display: inline-flex; align-items: center; gap: 5px; padding: 8px 16px; border-radius: 6px; font-weight: 500; text-decoration: none; transition: all 0.3s ease-in-out; border: 1px solid var(--border-color); background: var(--background-color); color: var(--text-color); } .atfpp-dashboard-btn:focus { box-shadow: none; } .atfpp-dashboard-btn.primary { background: var(--primary-color); color: #fff; border-color: var(--secondary-color); } .atfpp-dashboard-btn:hover { background: #efffef; color: var(--primary-color); border-color: var(--border-color); } .atfpp-dashboard-btn.svg-hover:hover svg path { stroke: var(--primary-color); } /* ================================================ Header Section ================================================ */ .atfpp-dashboard-header { display: flex; justify-content: space-between; align-items: center; background: var(--background-color); padding: 5px 20px; border-bottom: 1px solid var(--border-color); border-radius: 6px 6px 0 0; position: absolute; top: 0; left: 0; width: calc(100% + 20px); margin: 0 0 0 -20px; box-shadow: var(--shadow); height: 70px; } .atfpp-dashboard-social-icons a:focus{ box-shadow:none; } .atfpp-dashboard-header-left { display: flex; align-items: center; gap: 15px; } .atfpp-dashboard-logo-link:focus, .atfpp-dashboard-logo-link:hover { box-shadow: none; } .atfpp-dashboard-header-left img{ max-width: 170px; } .atfpp-dashboard-header-left svg { height: 50px; } .atfpp-dashboard-tab-title { display: flex; gap: 5px; font-size: 14px; } .atfpp-dashboard-header-right { display: flex; align-items: center; gap: 15px; } /* ================================================ Dashboard Layout ================================================ */ .atfpp-dashboard-dashboard { display: flex; flex-direction: column; gap: 20px; margin-top: 25px; flex: 2; } @media (min-width: 768px) { .atfpp-dashboard-dashboard { flex-direction: row; gap: 40px; } } .atfpp-dashboard-left-section { width: auto; flex: 2; margin-top: 25px; } /* ================================================ Welcome Section ================================================ */ .atfpp-dashboard-welcome { display: flex; justify-content: space-between; padding: 20px; background: #fff; border-radius: 8px; border: 1px solid var(--border-color); box-shadow: var(--shadow); gap: 5px; } .atfpp-dashboard-translation-providers{ margin-top: 24px; } .atfpp-dashboard-welcome-video { width: 100%; display: flex; align-items: center; justify-content: center; position: relative; } .atfpp-dashboard-welcome-video .play-icon { width: 54px; height: 54px; position: absolute; left: calc(50% - 27px); top: calc(50% - 27px); animation: play-icon 1s ease-in-out infinite; } .atfpp-dashboard-welcome-video img.loco-video { width: 100%; height: auto; } a.atfpp-dashboard-docs { display: flex; align-items: center; gap: 5px; margin-top: 30px; font-size: 14px; color: var(--text-color); font-weight: 500; text-decoration: underline; } a.atfpp-dashboard-docs:hover { color: var(--primary-color); } /* ================================================ Translation Providers ================================================ */ .atfpp-dashboard-providers-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); gap: 20px; } .atfpp-dashboard-provider-card { background: #fff; padding: 15px; border-radius: 8px; border: 1px solid var(--border-color); box-shadow: var(--shadow); } .atfpp-dashboard-provider-header { display: flex; justify-content: space-between; align-items: center; border-bottom: 1px solid var(--border-color); padding-bottom: 15px; } .atfpp-dashboard-provider-header img { height: 25px; } .atfpp-dashboard-badge { background: #131413; color: #fff; padding: 2px 8px; font-size: 12px; border-radius: 12px; } .atfpp-dashboard-badge.pro { background: var(--primary-color); } .atfpp-dashboard-provider-buttons { display: flex; gap: 10px; font-size: 11px; } /* ================================================ Sidebar ================================================ */ .atfpp-dashboard-sidebar { width: 548px; display: flex; flex-direction: column; gap: 20px; margin-top: 25px; flex: 1; } .atfpp-dashboard-sts-btm-service-providers > span{ font-weight: 600; white-space: nowrap; } .atfpp-dashboard-sts-btm-service-providers-list{ display: flex; flex-wrap: wrap; gap: 7px; } .atfpp-dashboard-sts-btm-service-providers-list span{ background: #f0f0f0; padding: 4px 10px; border-radius: 4px; font-weight: 500 !important; } /* Translation Status */ .atfpp-dashboard-sidebar .atfpp-dashboard-status { display: flex; justify-content: space-between; padding: 20px 20px 10px; background: #fff; border-radius: 8px; border: 1px solid var(--border-color); box-shadow: var(--shadow); flex-direction: column; } .atfpp-dashboard-sts-top { display: flex; flex-direction: column; margin: 15px 0; padding-bottom: 15px; border-bottom: 1px solid #c3c4c7; gap: 12px; font-size: 15px; } .atfpp-dashboard-sts-top span:nth-child(2n+1) { font-weight: 800; font-size: 24px; } ul.atfpp-dashboard-sts-btm { padding: 0; margin: 9px 0; } ul.atfpp-dashboard-sts-btm li { display: flex; justify-content: space-between; gap: 10px; margin-bottom: 10px; padding: 0; } ul.atfpp-dashboard-sts-btm li span:first-child { font-weight: 600; } /* Full Website Translate */ .atfpp-dashboard-translate-full .atfpp-dashboard-addon { border-bottom: 1px solid #c3c4c7; margin-bottom: 15px; padding-bottom: 15px; display: flex; gap: 15px; justify-content: space-between; align-items: center; } .atfpp-dashboard-addon.first { border-top: 1px solid #c3c4c7; padding-top: 15px; } .atfpp-dashboard-addon-l { display: flex; flex-direction: column; align-items: flex-start; gap: 3px; } .atfpp-dashboard-addon-r img { width: 72px; } .atfpp-dashboard-translate-full .installed { background: #cfd5d1; color: #7f7f7f; padding: 4px 10px; border-radius: 4px; font-weight: 500; } .atfpp-dashboard-translate-full .addon-desc { font-size: 12px; color: #838389; margin-bottom: 5px; } /* ================================================ Rate Us Section ================================================ */ .atfpp-dashboard-rate-us { background: #fff; padding: 15px; border-radius: 8px; border: 1px solid var(--border-color); box-shadow: var(--shadow); } .atfpp-dashboard-rate-us h3{ line-height: 25px; } .atfpp-dashboard-rate-us .review-link { display: inline-block; margin-top: 10px; color: #007cba; font-weight: bold; } /* ================================================ Animations ================================================ */ @keyframes play-icon { 0% { transform: scale(1); } 50% { transform: scale(1.1); } 100% { transform: scale(1); } } /*=============================================== Tab Content ================================================ */ .atfpp-dashboard-wrapper .tab-content{ display: flex; gap: 25px; } .atfpp-dashboard-free-vs-pro .header, .atfpp-dashboard-ai-translations .header, .atfpp-dashboard-license .header , .atfpp-dashboard-settings .header { display: flex; justify-content: space-between; align-items: center; } :where(.atfpp-dashboard-free-vs-pro,.atfpp-dashboard-ai-translations ,.atfpp-dashboard-license,.atfpp-dashboard-settings) .atfpp-dashboard-status { display: flex; align-items: center; gap: 10px; } :where(.atfpp-dashboard-free-vs-pro,.atfpp-dashboard-ai-translations ,.atfpp-dashboard-license,.atfpp-dashboard-settings) .atfpp-dashboard-status span{ font-size: 15px; font-weight: 600; } /* ================================================ AI Translations ================================================ */ .atfpp-dashboard-ai-translations { width: auto; flex: 2; margin-top: 25px; } .atfpp-dashboard-ai-translations-container{ background: white; padding: 24px; border-radius: 10px; border: 1px solid var(--border-color); } .atfpp-dashboard-ai-translations .description { font-size: 14px; color: #666; margin: 10px 0; } .atfpp-dashboard-ai-translations .atfpp-dashboard-translations { display: flex; flex-wrap: wrap; gap: 20px; } .atfpp-dashboard-ai-translations .atfpp-dashboard-translation-card { margin-top: 35px; position: relative; background: white; border: 1px solid var(--border-color); border-radius: 14px; padding: 13px 15px 15px 15px; text-align: start; width: 31.5%; } .atfpp-dashboard-ai-translations .atfpp-dashboard-translation-card h3{ margin-top: 12px; font-size: 1.0rem; margin-bottom: 10px; } .atfpp-dashboard-ai-translations .atfpp-dashboard-translation-card p { padding-right: 4px; } .atfpp-dashboard-ai-translations .atfpp-dashboard-translation-card .logo{ background-color: white; left: 20px; position: absolute; top: -14px; border: 1px solid var(--border-color); border-radius: 30px; padding: 4px 10px; text-align: center; display: flex; align-items: center; justify-content: center; } .atfpp-dashboard-ai-translations .atfpp-dashboard-translation-card .logo img{ width: 100%; height: 20px; } .atfpp-dashboard-ai-translations .atfpp-dashboard-translation-card .play-btn-container img { width: 100%; height: 100%; } .atfpp-dashboard-ai-translations .atfpp-dashboard-translation-card .play-btn-container a:focus { box-shadow: none; } .atfpp-dashboard-ai-translations .atfpp-dashboard-play-btn { background: #00cc66; color: white; border: none; padding: 10px; border-radius: 50%; cursor: pointer; font-size: 18px; } /* ================================================ Settings Section ================================================ */ .atfpp-dashboard-settings { width: 100%; margin-top: 25px; flex: 2; } .atfpp-dashboard-settings-container{ padding: 24px; background: #fff; border: 1px solid #ddd; border-radius: 8px; } .atfpp-dashboard-settings h1{ margin: 14px 0px 22px 0px; font-size: 22px; line-height: 25px; } .atfpp-dashboard-api-settings-container { display: flex; justify-content: space-between; align-items: flex-start; } .atfpp-dashboard-api-settings { width: 100%; } .atfpp-dashboard-api-settings label { display: block; font-weight: bold; margin: 30px 0px 10px 0px; } .atfpp-dashboard-api-settings .input-group { display: flex; align-items: center; gap: 10px; width: 100%; } .atfpp-dashboard-api-settings .input-group input { width: 60%; } .atfpp-dashboard-api-settings .input-group input[type="text"] { padding: 8px 12px; border: 1px solid var(--border-color); border-radius: 5px; margin: 0; } .atfpp-dashboard-api-settings .input-group .reset-button { width: 60px; height: 32px; padding: 0px 8px; margin: 0; flex-shrink: 0; } .atfpp-dashboard-feedback-container { margin-top: 16px; } .atfpp-dashboard-feedback-row { display: flex; align-items: center; gap: 10px; } .atfpp-dashboard-api-settings input[type="text"] { padding: 8px; border: 1px solid #ccc; border-radius: 5px; } .atfpp-dashboard-api-settings a { margin: 10px 0px 10px 0px; display: inline-block; font-size: 14px; color: #0073aa; text-decoration: none; } .atfpp-dashboard-api-settings .atfpp-dashboard-save-btn-container{ margin-top: 20px; } .atfpp-bulk-translation-post-status-options{ display: flex; align-items: center; gap: 10px; } .atfpp-bulk-translation-post-status-options input{ margin-right: 10px; width: 10px; } .atfpp-bulk-translation-post-status-options label{ margin-right: 10px; margin-block: 0px; } .atfpp-dashboard-geminiAPIkey { background-color: #fff; padding: 24px; margin-top: 25px; border-radius: 8px; border: 1px solid var(--border-color); } .atfpp-dashboard-geminiAPIkey ul{ border: 3px solid var(--primary-color); padding: 12px 28px; margin-left: 0; width: calc(80% - 5px); } .atfpp-dashboard-api-settings textarea { width: 100%; min-height: 100px; padding: 8px 12px; border: 1px solid var(--border-color); border-radius: 5px; margin: 0; font-family: inherit; resize: vertical; } .atfpp-dashboard-ai-request-container>div[class^="atfpp-dashboard-ai-"] { display: flex; gap: 1rem; margin-top: 1.5rem; } .atfpp-dashboard-ai-request-container label{ margin: 0; white-space: nowrap; min-width: 150px; } .atfpp-dashboard-ai-request-container h2{ margin: 0px 0 10px; } .atfpp-dashboard-ai-request-container p{ padding: 0; margin: 3px 0 0; } /* ================================================ Info ================================================ */ .atfpp-dashboard-info { margin-top: 70px; text-align: center; display: flex; justify-content: center; align-items: center; } .atfpp-dashboard-info-links { font-size: 14px; } .atfpp-dashboard-info-links p{ display: flex; align-items: center; gap: 10px; } .atfpp-dashboard-info .logo { width: 150px; height: 16px; margin-bottom: 10px; } .atfpp-dashboard-info .logo a:focus{ box-shadow: none; } .atfpp-dashboard-info-links a { color: #0073aa; text-decoration: none; } .atfpp-dashboard-social-icons a:focus{ text-decoration: underline; } .atfpp-dashboard-social-icons img{ margin-top: 10px; } .atfpp-dashboard-social-icons svg { width: 32px; height: 32px; } @media (max-width: 488px) and (min-width:100px){ .atfpp-dashboard-ai-translations .atfpp-dashboard-ai-translations-container .header, .atfpp-dashboard-free-vs-pro-container .header, .atfpp-dashboard-settings-container .header, .atfpp-dashboard-license-container .header{ flex-direction: column; align-items: start; padding-bottom: 10px; } .atfpp-dashboard-ai-translations .atfpp-dashboard-translations { flex-direction: column; } } @media (max-width: 767px) { .atfpp-dashboard-wrapper .tab-content{ flex-direction: column; gap: 0px; } .atfpp-dashboard-sidebar { width: auto; } .atfpp-dashboard-header { padding: 0px 11px 11px 20px; height: 145px; flex-direction: column; gap: 0px; top: 47px; } .atfpp-dashboard-welcome { flex-direction: column; } .atfpp-dashboard-welcome-text { width: calc(100% - 0px); } .atfpp-dashboard-welcome-video { width: 100%; } .atfpp-dashboard-wrapper{ padding:60px 12px 0px 0px; } .atfpp-dashboard-header-right { gap: 6px; } } @media (max-width: 766px) and (min-width:601px){ .atfpp-dashboard-header { top: 0px; } } @media (max-width: 767px) and (min-width:375px){ .atfpp-dashboard-header { height: 140px; } } @media (max-width: 1024px) { .atfpp-dashboard-header-left svg { max-width: 120px; } .atfpp-dashboard-header { gap: 15px; } .atfpp-dashboard-header-left img{ max-width: 125px; } .atfpp-dashboard-btn { padding: 8px 6px; } .atfpp-dashboard-header-right { gap: 13px; } .atfpp-dashboard-ai-translations .atfpp-dashboard-translations { gap: 7px; } } .atfpp-dashboard-settings-container .is-dismissible { display: flex; justify-content: space-between; padding-right: 0px !important; } .atfpp-dashboard-settings-container .is-dismissible .notice-dismiss{ display: flex; justify-content: end; } /* ================================================ License Pages ================================================ */ .atfpp-dashboard-license { width: 100%; margin-top: 25px; flex: 2; } button#atfpp-refresh-license-btn { color: #2271b1; border-color: #2271b1; background: #f6f7f7; vertical-align: top; height: 30px; margin-block-end: 0; margin-inline-start: 15px; display: inline-block; text-decoration: none; font-size: 13px; line-height: 2.15384615; min-height: 30px; margin: 0; padding: 0 10px; cursor: pointer; border-width: 1px; border-style: solid; -webkit-appearance: none; border-radius: 6px; white-space: nowrap; box-sizing: border-box; } .atfpp-dashboard-license-container, .atfpp-dashboard-license-pro-container { background: white; padding: 24px; border: 1px solid var(--border-color); border-radius: 8px; } .atfpp-dashboard-license h1 { margin: 14px 0px 22px 0px; font-size: 22px; line-height: 25px; } .atfpp-dashboard-license p { margin: 5px 0; font-size: 14px; } /* License Form Styles */ .atfpp-dashboard-license-field { margin-bottom: 20px; } .atfpp-dashboard-license-field label { display: block; margin-bottom: 8px; font-weight: 500; color: var(--text-color); } .atfpp-dashboard-license-field input { width: 100%; padding: 10px 12px; border: 1px solid var(--border-color); border-radius: 6px; font-size: var(--font-size-base); transition: border-color 0.2s ease; } .atfpp-dashboard-license-field input:focus { border-color: var(--primary-color); outline: none; box-shadow: 0 0 0 2px rgba(48, 178, 48, 0.1); } .atfpp-dashboard-activation-note { margin: 20px 0; color: var(--text-color-light); font-size: 12px; } .atfpp-dashboard-license .activation-note{ margin-top: 16px; } /* Pro License Container */ .atfpp-dashboard-license-pro-container { color: var(--text-color); } .atfpp-dashboard-license-pro-container ul { list-style: none; padding: 0; } .atfpp-dashboard-license-pro-container ul li { margin-bottom: 8px; } .atfpp-dashboard-license-pro-container .validity { font-weight: bold; } .atfpp-dashboard-license-pro-container .validity .valid { color: var(--primary-color); } .atfpp-dashboard-license-pro-container .license-type { font-weight: bold; } .atfpp-dashboard-license-pro-container .license-key { background: var(--background-color); padding: 5px; border-radius: 4px; display: inline-block; font-family: monospace; } /* Deactivate Button Container */ .atfpp-dashboard-license-pro-container-deactivate-btn { display: flex; justify-content: space-between; align-items: center; margin: 41px 0px 20px 0px; } .atfpp-dashboard-license-pro-container .deactivate-btn { background: #e74c3c; color: white; border: none; padding: 10px 15px; border-radius: 6px; cursor: pointer; font-size: 14px; transition: background-color 0.2s ease; } .atfpp-dashboard-license-pro-container .deactivate-btn:hover { background: #c0392b; } /* License Buttons Section */ .atfpp-dashboard-license-pro-container-buttons { margin-top: 25px; padding-top: 20px; border-top: 1px solid var(--border-color); display: flex; justify-content: space-between; margin-top: 20px; } .atfpp-dashboard-license-pro-container-buttons .btns { display: flex; gap: 15px; margin-top: 10px; } .atfpp-dashboard-license-pro-container-buttons a.atfpp-dashboard-btn { padding: 8px 16px; border-radius: 6px; font-size: 14px; font-weight: 500; text-decoration: none; transition: all 0.2s ease; } /* Form Submit Button */ .atfpp-dashboard-license-form button[type="submit"] { margin-top: 10px; } /* Responsive Adjustments */ @media (max-width: 768px) { .atfpp-dashboard-license-pro-container-deactivate-btn { flex-direction: column; gap: 15px; align-items: flex-start; } .atfpp-dashboard-license-pro-container-buttons .btns { flex-direction: column; } } /* Responsive adjustments */ @media (max-width: 768px) { .atfpp-dashboard-api-settings .input-group input { width: calc(100% - 70px); } } /* ================================================ Glossary Pages ================================================ */ .atfpp-glossary { width: 100%; margin-top: 25px; flex: 2; } .atfpp-glossary-container { padding: 24px; background: #fff; border: 1px solid var(--border-color); border-radius: 8px; } .atfpp-header h1 { font-size: 24px; margin-bottom: 30px; } .atfpp-header p { margin-bottom: 10px; } .atfpp-header ul { list-style: disc; padding-left: 20px; margin-bottom: 10px; } .atfpp-header a { color: #0073aa; text-decoration: none; } .atfpp-controls { display: flex; flex-wrap: wrap; align-items: center; gap: 10px; margin: 46px 0 20px; } .atfpp-search, .atfpp-glossary-type { padding: 8px; } .atfpp-update-btn, .atfpp-add-btn, .atfpp-import-btn, .atfpp-export-btn { padding: 8px 12px; background-color: #007cba; color: white; border: none; cursor: pointer; border-radius: 4px; } .atfpp-update-btn:hover, .atfpp-add-btn:hover, .atfpp-import-btn:hover, .atfpp-export-btn:hover { background-color: #005a8c; } .atfpp-status { font-size: 14px; color: #555; } .atfpp-alphabet { display: flex; flex-wrap: wrap; justify-content: center; gap: 8px; margin-top: 28px; border-top: 1px solid rgba(51, 135, 158, 0.2); border-bottom: 1px solid rgba(51, 135, 158, 0.2); padding: 10px 0; } .atfpp-alphabet button { min-width: 32px; padding: 6px 10px; font-size: 14px; font-weight: 500; border: none; border-radius: 4px; cursor: not-allowed; text-transform: uppercase; transition: all 0.3s ease; background-color: #fff; } .atfpp-alphabet button:not([disabled]) { color: #007cba; cursor: pointer; } .atfpp-alphabet button.active:not([disabled]) { color: #0073aa; font-weight: bold; background-color: rgba(51, 135, 158, 0.15); border-radius: 100%; } /* ================================================ Glossary Modal Styles ================================================ */ .atfpp-glossary-modal.atfpp-hidden { display: none; } .atfpp-glossary-modal { display: flex; align-items: center; justify-content: center; position: fixed; left: 0; top: 0; width: 100%; height: 100%; background: rgba(0, 0, 0, 0.5); z-index: 1005001; } .atfpp-glossary-modal-content-wrapper { display: flex; flex-direction: column; background: #fff; border-radius: 4px; max-width: 600px; width: 90%; padding: 0; box-shadow: 0 10px 30px rgba(0, 0, 0, 0.2); overflow: hidden; max-height: 85vh; } .atfpp-glossary-modal-content { padding: 5px 5px 0px 5px; border: 35px solid white; overflow-y: auto; } .atfpp-glossary-modal-actions { display: flex; justify-content: space-between; background: #fff; padding: 33px 25px 0px 0px; border-top: 1px solid #eee; position: sticky; bottom: 0; left: 0; z-index: 2; } .atfpp-glossary-modal-actions #add-glossary-term-btn { margin: 5px; } .atfpp-glossary-modal-content h2 { margin-top: 4px; margin-bottom: 20px; font-size: 22px; } .atfpp-glossary-modal-content label { display: block; font-weight: 500; } .atfpp-glossary-modal-content textarea, .atfpp-glossary-modal-content select { width: 100%; padding: 10px 12px; margin-top: 6px; border: 1px solid #ccd0d4; border-radius: 4px; font-size: 14px; font-family: inherit; resize: vertical; } .atfpp-glossary-modal-content label { margin-top: 16px; } .atfpp-glossary-modal-actions .atfpp-glossary-modal-actions-left { cursor: pointer; text-decoration: underline; } /* ================================================ Import Glossary Section (Modal Content) ================================================ */ .atfpp-import-glossary { font-family: Arial, sans-serif; margin: auto; } .atfpp-title { font-size: 20px; margin-bottom: 20px; text-align: center; } .atfpp-upload-box { display: block; cursor: pointer; margin-bottom: 20px; } .atfpp-upload-area { border: 2px dashed #c2c2c2; padding: 30px; text-align: center; border-radius: 8px; background-color: #f9f9f9; } .atfpp-upload-area img { width: 30px; height: 30px; margin-bottom: 10px; } .atfpp-upload-area span { display: block; color: #007baf; font-weight: 600; } .atfpp-help-text { font-size: 13px; color: #666; } .atfpp-download-link { color: #007baf; font-size: 14px; text-decoration: underline; cursor: pointer; } .atfpp-import-success { margin-top: 20px; padding: 15px; border: 1px solid rgb(71, 165, 191); background: rgb(245, 245, 245); border-radius: 8px; text-align: center; } .atfpp-hidden { display: none; } .atfpp-close-button { margin-top: 15px; padding: 8px 16px; background: #007baf; color: #fff; border: none; border-radius: 5px; cursor: pointer; } .atfpp-import-success-message { color: rgb(39, 173, 149); font-size: 16px; font-weight: 500; text-align: center; margin: 24px 0 12px 0; letter-spacing: 0.01em; } .atfpp-import-close-btn { display: block; margin: 20px auto 0 auto; padding: 8px 24px; background: #fff; color: #007baf; border: 1px solid #007baf; border-radius: 6px; font-size: 15px; font-weight: 500; cursor: pointer; transition: background 0.2s, color 0.2s; } .atfpp-import-close-btn:hover { background: #007baf; color: #fff; } .atfpp-import-success-icon { margin-bottom: 18px; } .atfpp-import-success-file { font-size: 15px; color: #222; margin-bottom: 10px; } #atfpp-importing-file-label { color: #222; margin-right: 4px; } #atfpp-importing-file-name { color: #222; font-weight: 500; word-break: break-all; } .atfpp-glossary-table-wrapper { overflow-x: auto; width: 100%; position: relative; } .atfpp-glossary-table { width: 100%; border-collapse: collapse; font-family: 'Segoe UI', Arial, sans-serif; } .atfpp-glossary-table thead tr:first-child th { border-bottom: none; text-align: center; font-size: 1.2em; padding: 13px 0; } .atfpp-glossary-table thead tr:nth-child(2) th { background: #222; color: #fff; font-weight: 600; text-align: left; padding: 12px 8px; } .atfpp-glossary-table th, .atfpp-glossary-table td { padding: 12px 8px; vertical-align: middle; position: relative; } .atfpp-entry-title { font-weight: 500; font-size: 1.1em; } .atfpp-entry-desc { color: #888; font-size: 0.95em; margin-top: 2px; } .atfpp-type-badge { display: inline-block; padding: 4px 8px; border-radius: 25px; font-size: 12px; font-weight: 500; } .atfpp-type-badge.general { background: #eaf6fa; } .atfpp-type-badge.name { background: #eafaf0; color: #1a7f37; } /* Edit and Delete button styles */ .atfpp-edit-btn { background: #2271b1; border: none; color: white; padding: 7px 12px; cursor: pointer; font-size: 13px; border-radius: 4px; text-decoration: none; } .atfpp-edit-btn:hover { text-decoration: underline; } .atfpp-delete-btn { background: #dc3232; border: none; color: white; padding: 7px 12px; cursor: pointer; font-size: 13px; text-decoration: none; border-radius: 4px; } .atfpp-delete-btn:hover { text-decoration: underline; } /* Delete button loading state */ .atfpp-delete-btn.atfpp-delete-loading { position: relative; opacity: 0.7; pointer-events: none; background: #dc3232; color: white; border: none; padding: 7px 12px; cursor: not-allowed; font-size: 13px; border-radius: 4px; min-width: 60px; display: flex; align-items: center; justify-content: center; } .atfpp-delete-spinner { width: 14px; height: 14px; border: 2px solid rgba(255, 255, 255, 0.3); border-top: 2px solid #ffffff; border-radius: 50%; animation: atfpp-delete-spin 0.8s linear infinite; } @keyframes atfpp-delete-spin { 0% { transform: rotate(0deg); } 100% { transform: rotate(360deg); } } /* No translation edit button */ .atfpp-edit-btn-svg { background: transparent; border: none; padding: 0; cursor: pointer; } .atfpp-edit-btn-svg img { width: 20px; height: 20px; vertical-align: middle; } /* Save/Cancel buttons in edit mode */ .atfpp-save-edit-btn { background: #2496b8; color: #fff; border: none; border-radius: 7px; padding: 5px 18px; cursor: pointer; font-weight: 600; font-size: 1em; transition: background 0.2s; } .atfpp-save-edit-btn:hover { background: #1b7a97; } .atfpp-cancel-edit-btn { background-color: transparent; color: #666; border: none; border-radius: 4px; padding: 5px 5px; cursor: pointer; font-weight: 500; transition: background 0.2s; text-decoration: underline; transition: background 0.2s; } .atfpp-cancel-edit-btn:hover { color: #414141; } .atfpp-icon-doc { display: inline-block; width: 22px; height: 22px; background: url('doc-icon.svg') center/contain no-repeat; vertical-align: middle; } .atfpp-lang-header img { width: 16px; height: 11px; vertical-align: middle; } @media (max-width: 900px) { .atfpp-glossary-table-wrapper { max-width: 100%; font-size: 0.95em; } .atfpp-glossary-table th, .atfpp-glossary-table td { padding: 8px 4px; } } .atfpp-language-filters { display: flex; gap: 16px; margin: 18px 0 18px 0; flex-wrap:wrap; } .atfpp-lang-filter-btn { display: flex; align-items: center; gap: 7px; padding: 3px 11px; border-radius: 18px; border: 1.5px solid #cce3e3; background: #f8f8f8; color: #1a3a4a; font-size: 1em; font-weight: 500; cursor: pointer; transition: background 0.2s, border-color 0.2s, color 0.2s; } .atfpp-lang-filter-btn img { background: #fff; border: 1px solid #e0e0e0; } .atfpp-lang-filter-btn.active, .atfpp-lang-filter-btn:hover { background: #eaf6fa; border-color: #7ed6df; color: #0073aa; } /* ================================================ Improved Glossary Table Editor Row Styles =============================================== */ .atfpp-glossary-edit-row { background: #eaf2f5 !important; border-bottom: 1px solid #dde6ea; border-left: none; box-shadow: none; } .atfpp-glossary-edit-row td { padding: 18px 12px 12px 12px !important; vertical-align: top !important ; } .atfpp-glossary-edit-row textarea, .atfpp-glossary-edit-row select { width: 100%; padding: 8px; border: 1px solid #ddd; border-radius: 4px; margin-top: 0; box-sizing: border-box; resize: vertical; transition: border-color 0.2s, box-shadow 0.2s; } .atfpp-glossary-edit-row textarea:focus, .atfpp-glossary-edit-row select:focus { border: 1px solid rgb(51, 135, 158) !important; box-shadow: rgb(51, 135, 158) 0px 0px 3px !important; border-radius: 2px !important; } .atfpp-glossary-edit-row .atfpp-edit-type { width: auto; min-width: 71px; padding: 3px 20px 3px 10px; border-radius: 10px; border: 1.5px solid #7ed6bf; color: #1ca97c; font-weight: 600; font-size: 0.9em; position: relative; margin-bottom: 0; margin-top: 8px; box-shadow: none; appearance: none; cursor: pointer; text-align: center; } .atfpp-glossary-edit-row .atfpp-edit-type { background-image: url("data:image/svg+xml;utf8,"); background-repeat: no-repeat; background-position: right 4px center; background-size: 18px 18px; } .atfpp-glossary-edit-row .atfpp-edit-type::-ms-expand { display: none; } .atfpp-glossary-edit-row .atfpp-edit-type:focus { border-color: #1ca97c; outline: none; box-shadow: 0 0 0 2px #1ca97c22; background: #eafaf0; } .atfpp-glossary-edit-row .atfpp-save-edit-btn { background: #2496b8; color: #fff; border: none; border-radius: 7px; font-weight: 600; font-size: 1em; cursor: pointer; margin-bottom: 0; box-shadow: 0 2px 8px #2496b81a; transition: background 0.2s; display: block; } .atfpp-glossary-edit-row .atfpp-save-edit-btn:hover { background: #1b7a97; } .atfpp-glossary-edit-row .atfpp-cancel-edit-link { color: #666; text-decoration: underline; font-size: 1em; margin-left: 0; cursor: pointer; display: block; transition: color 0.2s; } .atfpp-glossary-edit-row .atfpp-cancel-edit-link:hover { text-decoration: underline; } .atfpp-glossary-edit-row td textarea:last-child { margin-bottom: 0; } .atfpp-glossary-edit-row td:last-child, .atfpp-glossary-edit-row td:nth-last-child(2) { vertical-align: middle; } /* Fix: Only stripe visible, non-edit data rows in tbody .atfpp-glossary-table tbody tr:not(.atfpp-glossary-edit-row):nth-of-type(even) { background: #f7f7f7; } */ .atfpp-glossary-table td:first-child, .atfpp-glossary-table th:first-child { max-width: 270px; width: 270px; min-width: 180px; word-break: break-word; white-space: normal; } .atfpp-glossary-table td:not(:first-child), .atfpp-glossary-table th:not(:first-child) { text-align: center !important; vertical-align: middle !important; } .atfpp-alphabet button.active:not([disabled]) { color: #0073aa; font-weight: bold; background-color: rgba(51, 135, 158, 0.15); border-radius: 100%; } .atfpp-add-translations label { display: block; } .atfpp-add-translation { width: 100%; min-height: 32px; margin-top: 4px; } .atfpp-add-translations { display: none; opacity: 0; max-height: 0; overflow: hidden; transition: opacity 0.3s, max-height 0.4s; } .atfpp-add-translations.atfpp-show { display: flex !important; opacity: 1; max-height: 2000px; overflow: visible; transition: opacity 0.3s, max-height 0.4s; } .atfpp-add-translations.atfpp-translations-grid { display: grid !important; grid-template-columns: repeat(2, 1fr); gap: 20px 20px; margin-top: 20px; } .atfpp-translations-row { display: flex; gap: 16px; margin-bottom: 12px; } .atfpp-translation-field { flex: 1 1 0; min-width: 160px; max-width: 220px; display: flex; flex-direction: column; gap: 6px; } @media (max-width: 700px) { .atfpp-add-translations.atfpp-translations-grid { grid-template-columns: 1fr !important; } } .atfpp-glossary-table.atfpp-hide-lang-xx th.atfpp-lang-header.atfpp-lang-col-xx, .atfpp-glossary-table.atfpp-hide-lang-xx td.atfpp-lang-col-xx { display: none !important; } .atfpp-modal-close-btn { position: absolute; top: 8px; right: 17px; z-index: 10; background: transparent; border: none; font-size: 2rem; color: #888; cursor: pointer; line-height: 1; padding: 0; transition: color 0.2s; } .atfpp-modal-close-btn:hover { color: #2496b8; } .atfpp-translation-field.atfpp-hidden { display: none !important; } .atfpp-language-filters:empty { display: none; } .atfpp-glossary-table[class*="atfpp-hide-lang-"] th.atfpp-lang-header, .atfpp-glossary-table[class*="atfpp-hide-lang-"] td[class^="atfpp-lang-col-"] { display: table-cell; } .atfpp-glossary-table.atfpp-hide-lang-xx th.atfpp-lang-header.atfpp-lang-col-xx, .atfpp-glossary-table.atfpp-hide-lang-xx td.atfpp-lang-col-xx { display: none !important; } .atfpp-controls .atfpp-glossary-type { vertical-align: middle; } .atfpp-alphabet-btn.active:not([disabled]) { color: #0073aa; font-weight: bold; background-color: rgba(51, 135, 158, 0.15); border-radius: 100%; } .atfpp-glossary-table thead th { text-align: center; padding: 12px 8px; vertical-align: middle; z-index: 3; position: relative; } .atfpp-glossary-table thead th .atfpp-lang-flag { width: 20px; height: auto; vertical-align: middle; margin-right: 6px; border: 1px solid #e0e0e0; border-radius: 2px; } .atfpp-glossary-table thead th[data-lang] { font-size: 14px; white-space: nowrap; } .atfpp-action-buttons { position: sticky; right: 0; background: transparent; padding: 8px 8px; z-index: 2; display: flex; gap: 25px; justify-content: center; min-width: 100px; } .atfpp-action-buttons-header { position: sticky; right: 0; background: transparent; padding: 8px 8px; z-index: 2; display: flex; justify-content: center; min-width: 100px; } .atfpp-action-buttons-header .atfpp-actions-header-btn { margin: 0 10px !important; } .atfpp-action-buttons::before { content: ''; position: absolute; left: -10px; top: 0; bottom: 0; width: 10px; } .atfpp-edit-btn, .atfpp-delete-btn { position: relative; z-index: 3; } .atfpp-actions-cell { position: sticky; right: 0; background: #fff; z-index: 10; min-width: 120px; padding: 0; } .atfpp-action-buttons { display: flex; gap: 32px; justify-content: center; align-items: center; height: 100%; padding: 8px 8px; background: transparent; } /* Sticky Actions header and cell */ .atfpp-glossary-table th.atfpp-actions-cell, .atfpp-glossary-table td.atfpp-actions-cell { position: sticky; right: 0; background: #fff; z-index: 20; min-width: 120px; box-shadow: -2px 0 4px -2px rgba(0,0,0,0.04); } .atfpp-glossary-table thead tr:nth-child(2) th:last-child { position: sticky; right: 0; background: #222; z-index: 19; min-width: 120px; box-shadow: -2px 0 4px -2px rgba(0,0,0,0.04); } /* Sticky actions cell matches row background */ .atfpp-glossary-table td.atfpp-actions-cell { background: #fff !important; } /* .atfpp-add-translation, */ .atfpp-edit-translation { min-width: 145px; max-width: 220px; width: 100%; height: 170px; min-height: 36px; max-height: 170px; padding: 5px 6px; border-radius: 6px; font-size: 1em; resize: vertical; box-sizing: border-box; line-height: 1.4; margin: 0 auto; display: block; transition: height 0.2s ease-in-out; } /* Widen language columns */ .atfpp-glossary-table th[data-lang], .atfpp-glossary-table td[data-lang] { min-width: 120px; max-width: 180px; width: 140px; text-align: center; vertical-align: middle; padding-left: 8px; padding-right: 8px; box-sizing: border-box; } /* Make translation textareas fit the column */ /* .atfpp-edit-translation, */ .atfpp-add-translations.atfpp-translations-grid, .atfpp-add-translations.atfpp-translations-grid.atfpp-show .atfpp-add-translation { width: 100%; min-width: 100px; box-sizing: border-box; margin-top: 20px; } /* Add this to your CSS */ .atfpp-row-striped { background: #f7f7f7 !important; } /* Sticky actions cell matches row background */ .atfpp-glossary-table td.atfpp-actions-cell { background: #fff !important; } .atfpp-glossary-table tbody tr.atfpp-row-striped td.atfpp-actions-cell { background: #f7f7f7 !important; } .atfpp-glossary-table th.atfpp-actions-cell button, .atfpp-glossary-table th.atfpp-actions-cell .atfpp-actions-header-btn { width: 35px; height: 35px; border-radius: 50%; background: #eaf2f5; border: none; display: flex; align-items: center; justify-content: center; margin: 0 auto; box-shadow: none; transition: background 0.2s; cursor: pointer; padding: 0; } .atfpp-glossary-table th.atfpp-actions-cell button:hover, .atfpp-glossary-table th.atfpp-actions-cell .atfpp-actions-header-btn:hover { background: #e6eef3; } tr.atfpp-glossary-edit-row > td.atfpp-actions-cell { background-color: #eaf2f5 !important } #atfpp-no-results { text-align:center; margin: 32px 0; color: #888; font-size: 1.2em; } .atfpp-translation-error { color: rgb(219, 85, 43); font-size: 12px; margin-top: 4px; display: none; } .atfpp-edit-translation.error, .atfpp-add-translation.error, .atfpp-edit-term.error, .atfpp-add-term.error, .atfpp-edit-desc.error, .atfpp-add-desc.error { height: 126px !important; border-color: rgb(219, 85, 43) !important; } .atfpp-edit-term.error, .atfpp-add-term.error, .atfpp-edit-desc.error, .atfpp-add-desc.error { height: auto !important; min-height: 32px; } /* Glossary Loader Styles */ .atfpp-glossary-loader { position: absolute; display: flex; top: 0; left: 0; width: 100%; height: 100%; background: rgba(255, 255, 255, 0.5); z-index: 1005002; justify-content: center; align-items: center; } .atfpp-glossary-loader.active { display: flex; } .atfpp-glossary-loader-spinner { width: 50px; height: 50px; border: 3px solid #f3f3f3; border-top: 3px solid #0073aa; border-radius: 50%; animation: atfpp-spin 1s linear infinite; } @keyframes atfpp-spin { 0% { transform: rotate(0deg); } 100% { transform: rotate(360deg); } } .atfpp-openai-model-select, .atfpp-google-model-select { width: 200px; height: 32px; border-radius: 5px; border: 1px solid #ccc; font-size: 15px; vertical-align: middle; }