PluginProbe ʕ •ᴥ•ʔ
GPTranslate – Multilingual AI Translation for WordPress: Automatically Translate Websites / 2.18
GPTranslate – Multilingual AI Translation for WordPress: Automatically Translate Websites v2.18
2.33.6 2.33.5 2.33.2 2.32.10 2.33 2.33.1 2.32.6 2.32.7 2.32.8 trunk 2.10.3 2.10.4 2.10.5 2.10.6 2.11 2.12 2.13 2.14 2.14.1 2.15 2.15.1 2.16.1 2.16.2 2.17 2.18 2.18.1 2.18.2 2.19 2.20 2.21 2.22 2.23 2.24 2.25 2.25.1 2.25.2 2.26 2.27 2.27.10 2.27.5 2.28 2.28.1 2.29 2.30 2.31 2.32 2.32.5
gptranslate / assets / css / admin.css
gptranslate / assets / css Last commit date
admin.css 6 months ago bootstrap.min.css 6 months ago crawler.css 6 months ago select2.min.css 6 months ago
admin.css
608 lines
1 #wpbody-content > h1 {
2 color: #1d2327;
3 font-size: 2em;
4 margin: 0;
5 margin-left: -20px;
6 background: #FFF;
7 padding: 20px;
8 border: 1px solid #c3c4c7;
9 }
10
11 div.notice {
12 margin: 5px 20px 5px 0;
13 }
14
15 h2.nav-tab-wrapper {
16 margin-top: 20px;
17 }
18
19 img.gptranslate-plugin-icon {
20 width: 64px;
21 height: 64px;
22 }
23
24 /* Labels */
25 .gpt-label {
26 display: inline-block;
27 padding: 2px 8px;
28 font-size: 1em;
29 font-weight: 600;
30 color: #fff;
31 background-color: #0073aa; /* WordPress blue */
32 border-radius: 12px;
33 vertical-align: middle;
34 white-space: nowrap;
35 }
36
37 /* Success label */
38 .gpt-label-success {
39 background-color: #46b450;
40 }
41
42 /* Danger label */
43 .gpt-label-danger {
44 background-color: #dc3232;
45 }
46
47 /* Warning label */
48 .gpt-label-warning {
49 background-color: #ffb900;
50 color: #000;
51 }
52
53 /* Buttons */
54 .gpt-button {
55 display: inline-block;
56 padding: 6px 12px;
57 font-size: 14px;
58 font-weight: 600;
59 color: #fff;
60 background-color: #0073aa;
61 border: none;
62 border-radius: 2px;
63 cursor: pointer;
64 text-decoration: none;
65 transition: background-color 0.2s;
66 }
67
68 .gpt-button:hover {
69 background-color: #006799;
70 text-decoration: none;
71 }
72
73 /* Button variants */
74 .gpt-button-danger {
75 background-color: #dc3232;
76 }
77
78 .gpt-button-danger:hover {
79 background-color: #b81b1b;
80 }
81
82 .gpt-button-success {
83 background-color: #46b450;
84 }
85
86 .gpt-button-success:hover {
87 background-color: #3ea145;
88 }
89
90 /* Table styling */
91 .gpt-table {
92 width: 100%;
93 border-collapse: collapse;
94 margin-bottom: 20px;
95 }
96
97 .gpt-table th, .gpt-table td {
98 padding: 8px 10px;
99 border: 1px solid #ccc;
100 text-align: left;
101 }
102
103 .gpt-table th {
104 background-color: #f9f9f9;
105 font-weight: 600;
106 }
107
108 .form-table th {
109 vertical-align: top;
110 text-align: left;
111 padding: 20px 10px 10px 10px;
112 width: 200px;
113 line-height: 1.3;
114 font-weight: 600;
115 border-left: 1px solid #2271b1;
116 border-left-width: 4px;
117 box-shadow: 0 1px 1px rgba(0, 0, 0, .04);
118 }
119
120 .form-table td {
121 box-shadow: 0 1px 1px rgba(0, 0, 0, .04);
122 }
123
124 /* Edit record translation */
125 #wpfooter {
126 display: none !important;
127 }
128
129 input[name=pagelink], input[name=translated_alias], div.gptcard {
130 width: 60%;
131 }
132
133 @media ( max-width : 1024px) {
134 input[name=pagelink], div.gptcard {
135 width: 100%;
136 }
137 }
138
139 div.accordion-body {
140 max-height: 800px;
141 overflow: auto;
142 }
143
144 /* Search */
145 div.gptcard-header button, div.gptcard-header input {
146 font-weight: normal;
147 }
148
149 input[name=search] {
150 width: 50%;
151 }
152
153 /* Container */
154 form.form-filter-container {
155 display: flex;
156 justify-content: space-between;
157 margin-bottom: 10px;
158 position: relative;
159 }
160
161 .translations-container {
162 max-width: 100%;
163 padding: 1rem;
164 font-family: sans-serif;
165 }
166
167 *.doublesize-icon {
168 font-size: 18px;
169 font-weight: 700;
170 margin-left: 5px;
171 }
172
173 #search-input {
174 min-width: 300px;
175 }
176
177 #search-input+button {
178 margin-right: 1px;
179 }
180
181 /* Card */
182 .gptcard {
183 border: 1px solid #ddd;
184 border-radius: 6px;
185 margin-bottom: 1rem;
186 background-color: #fff;
187 box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
188 }
189
190 /* Card header */
191 .gptcard-header {
192 background-color: #f5f5f5;
193 padding: 0.75rem 1rem;
194 border-bottom: 1px solid #ddd;
195 font-weight: bold;
196 }
197
198 /* Accordion toggle area */
199 .accordion-toggle {
200 display: flex;
201 align-items: center;
202 gap: 1rem;
203 }
204
205 /* Input group */
206 .input-group {
207 display: flex;
208 align-items: center;
209 gap: 0.5rem;
210 flex-wrap: nowrap;
211 width: 100%;
212 }
213
214 .input-group-text {
215 background-color: #e9ecef;
216 padding: 0.5rem 0.75rem;
217 border-radius: 4px;
218 font-size: 0.875rem;
219 }
220
221 #migraterow span.input-group label {
222 white-space: nowrap;
223 }
224
225 table.widefat input.form-check-input {
226 margin: 0;
227 }
228
229 /* Card body */
230 .gptcard-body {
231 padding: 1rem;
232 }
233
234 div.translation-row.translation-row-hidden {
235 display: none;
236 }
237
238 /* Buttons */
239 .btn {
240 display: inline-block;
241 padding: 0.375rem 0.75rem;
242 border-radius: 2px;
243 border: none;
244 font-size: 0.875rem;
245 cursor: pointer;
246 }
247
248 .btn-sm {
249 font-size: 0.75rem;
250 padding: 0.25rem 0.5rem;
251 }
252
253 .btn-primary {
254 background-color: #2271b1;
255 color: white;
256 }
257
258 .btn-success {
259 background-color: #198754;
260 color: white;
261 }
262
263 .btn-danger {
264 background-color: #dc3545;
265 color: white;
266 }
267
268 .btn-warning {
269 background-color: #ffc107;
270 color: black;
271 }
272
273 span.icon-refresh {
274 display: inline-block;
275 }
276
277 button.group-sync.btn-invisible {
278 display: none;
279 }
280
281 button.group-sync span.icon-refresh.icon-working {
282 animation: spin 2s infinite linear;
283 }
284
285 @keyframes spin {
286 0% {
287 transform: rotate(0deg);
288 }
289 100% {
290 transform: rotate(360deg);
291 }
292 }
293
294 /* Badges */
295 .badge {
296 display: inline-block;
297 padding: 0.35em 0.65em;
298 font-size: 1em;
299 font-weight: 600;
300 border-radius: 3px;
301 margin-bottom: 0.25rem;
302 }
303
304 /* Colori di stato */
305 .bg-primary {
306 background-color: #2271b1;
307 color: #FFFFFF;
308 }
309
310 .bg-success {
311 background-color: #28a745;
312 color: #FFFFFF;
313 }
314
315 .bg-danger {
316 background-color: #dc3545;
317 color: #FFFFFF;
318 }
319
320 .bg-warning {
321 background-color: #ffc107;
322 color: #212529;
323 }
324
325 .bg-info {
326 background-color: #17a2b8;
327 color: #FFFFFF;
328 }
329
330 /* Textarea */
331 .translation-row textarea {
332 width: 198px;
333 height: 60px;
334 }
335
336 /* Translation row */
337 .translation-row {
338 padding-top: 1rem;
339 margin-top: 1rem;
340 display: flex;
341 align-items: center;
342 column-gap: 10px;
343 align-items: center;
344 position: relative;
345 }
346
347 .translation-row label.gpt-label.badge {
348 position: absolute;
349 right: 1px;
350 top: 0;
351 font-size: 12px;
352 }
353
354 /* Tooltips */
355 .custom-tooltip {
356 position: absolute;
357 top: 0;
358 left: 0;
359 z-index: 9999;
360 background: #333;
361 color: #fff;
362 padding: 6px 10px;
363 font-size: 0.85em;
364 border-radius: 4px;
365 max-width: 250px;
366 box-shadow: 0 2px 6px rgba(0, 0, 0, 0.2);
367 pointer-events: none;
368 opacity: 0;
369 transition: opacity 0.2s ease;
370 white-space: normal;
371 }
372
373 /* Settings with switchers */
374 a.nav-tab:focus {
375 box-shadow: none;
376 }
377
378 div.tab-content > p:first-child,
379 div.tab-content > p:last-child {
380 text-align: right;
381 margin-right: 20px;
382 }
383
384 #config-gptranslate table.form-table {
385 margin-top: -40px;
386 }
387
388 table.form-table th.settings-label-separator {
389 border: none;
390 background: #2271b1;
391 color: #FFF;
392 text-align: center;
393 padding: 0;
394 vertical-align: middle;
395 border-left: 4px solid #2271b1;
396 }
397
398 table.widefat.fixed.striped a:focus {
399 box-shadow: none;
400 }
401
402 table tr.alt_translations_0 {
403 display: none;
404 }
405
406 .toggle-import {
407 background: #FFF;
408 padding: 4px 5px;
409 }
410
411 .wp-admin input[type=file] {
412 border: 1px solid #CCC;
413 border-radius: 4px;
414 padding-left: 5px;
415 }
416
417 div.exportimportbtns {
418 display: flex;
419 justify-content: flex-end;
420 margin-top: -40px;
421 column-gap: 5px;
422 margin-right: 20px;
423 }
424
425 #add-repeatable-row {
426 float: right;
427 }
428
429 #bulk-delete-btn, #toggle-migration {
430 margin-right: 10px;
431 }
432
433 #migraterow {
434 width: 50%;
435 margin-bottom: 10px;
436 background: #FFF;
437 padding: 5px 10px;
438 border-radius: 4px;
439 }
440
441 #migraterow .input-group {
442 width: auto;
443 margin-right: 10px;
444 }
445
446 #migraterow .button {
447 margin-right: 5px;
448 }
449
450 /* Pagination */
451 .tablenav-pages {
452 margin-top: 20px;
453 }
454
455 .tablenav-pages .button {
456 margin-right: 5px;
457 padding: 5px 10px;
458 text-decoration: none;
459 }
460
461 .tablenav-pages .current-page {
462 font-weight: bold;
463 background-color: #0073aa;
464 color: #fff;
465 }
466
467 div.action-buttons-toolbar {
468 margin: 5px 0 10px;
469 }
470
471 input[name='import_file'] {
472 margin-left: 5px;
473 }
474
475 #translations_json {
476 display: none !important;
477 }
478
479 .wp-core-ui .button-warning,
480 .wp-core-ui .button-warning:focus,
481 .wp-core-ui .button-warning:active {
482 background: #f15116;
483 border-color: #d43900;
484 color: #fff;
485 }
486
487 .wp-core-ui .button-warning:hover {
488 background: #d43900;
489 border-color: #d43900;
490 color: #fff;
491 }
492
493 .wp-core-ui .button-warning.button-crawler {
494 position: absolute;
495 top: 40px;
496 right: 0;
497 box-shadow: none;
498 }
499
500 div.wrap:has(input.button-crawler) {
501 position: relative;
502 }
503
504 div.wrap:has(#notranslations-notice) .button-warning.button-crawler {
505 top: -60px;
506 }
507
508 @media (max-width: 782px) {
509 .wp-core-ui .button-warning.button-crawler {
510 top: 50px;
511 }
512 }
513
514 @media (max-width: 1280px) { body.toplevel_page_gptranslate, body.gptranslate_page_gptranslate-settings { min-width: 1280px; overflow-x: auto }}
515
516 /* GPTranslate iOS switch */
517 .wrapper {
518 position: relative;
519 display: inline-block;
520 width: 52px;
521 height: 28px;
522 vertical-align: middle;
523 cursor: pointer;
524 }
525
526 .wrapper input[type="radio"] {
527 position: absolute;
528 opacity: 0;
529 pointer-events: none;
530 }
531
532 .wrapper > label {
533 position: absolute;
534 top: 0;
535 left: 0;
536 height: 100%;
537 width: 50%;
538 cursor: pointer;
539 }
540 .wrapper > label:last-child {
541 left: 50%;
542 }
543
544 .wrapper > label > span {
545 position: absolute !important;
546 width: 1px;
547 height: 1px;
548 overflow: hidden;
549 clip: rect(1px,1px,1px,1px);
550 }
551
552 .wrapper::before {
553 content: "";
554 position: absolute;
555 inset: 0;
556 background: #bdbdbd;
557 border-radius: 999px;
558 transition: background-color 0.25s ease, box-shadow 0.25s ease;
559 box-shadow: inset 0 0 3px rgba(0,0,0,0.25);
560 pointer-events: none;
561 }
562
563 .wrapper::after {
564 position: absolute;
565 top: 3px;
566 left: 3px;
567 width: 22px;
568 height: 22px;
569 border-radius: 50%;
570 background: #fff;
571 box-shadow: 0 1px 4px rgba(0,0,0,0.3);
572 transition: transform 0.28s cubic-bezier(0.45,1.6,0.45,1), color 0.2s ease;
573 pointer-events: none;
574 display: flex;
575 align-items: center;
576 justify-content: center;
577 font-size: 14px;
578 font-weight: bold;
579 content: "";
580 }
581
582 .wrapper:has(> label:first-child > input:checked)::after {
583 content: "";
584 color: #2196f3;
585 }
586
587 .wrapper:has(> label:first-child > input:checked)::before {
588 background: #2196f3;
589 box-shadow: 0 0 0 3px rgba(33,150,243,0.18);
590 }
591 .wrapper:has(> label:first-child > input:checked)::after {
592 transform: translateX(24px);
593 }
594
595 .wrapper:has(> label:last-child > input:checked)::before {
596 background: #bdbdbd;
597 }
598 .wrapper:has(> label:last-child > input:checked)::after {
599 transform: translateX(0);
600 }
601
602 .wrapper:hover::before {
603 box-shadow: 0 0 0 3px rgba(33,150,243,0.12);
604 }
605 .wrapper input[type="radio"]:focus-visible + span {
606 outline: 2px solid rgba(33,150,243,0.45);
607 outline-offset: 2px;
608 }