admin-import.css 9.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549
  1. /* WordPress Import Interface Styles */
  2. .import-form-container {
  3. background: white;
  4. border: 1px solid #e9ecef;
  5. border-radius: 8px;
  6. padding: 2rem;
  7. margin-bottom: 2rem;
  8. box-shadow: 0 2px 4px rgba(0,0,0,0.1);
  9. }
  10. .form-section {
  11. margin-bottom: 2rem;
  12. }
  13. .form-section h3 {
  14. margin-bottom: 1.5rem;
  15. color: #2c3e50;
  16. font-size: 1.25rem;
  17. border-bottom: 2px solid #3498db;
  18. padding-bottom: 0.5rem;
  19. }
  20. .form-row {
  21. display: grid;
  22. grid-template-columns: 1fr 1fr;
  23. gap: 1.5rem;
  24. margin-bottom: 1rem;
  25. }
  26. .form-group {
  27. margin-bottom: 1.5rem;
  28. }
  29. .form-group label {
  30. display: block;
  31. margin-bottom: 0.5rem;
  32. font-weight: 600;
  33. color: #495057;
  34. }
  35. .form-group input[type="text"],
  36. .form-group input[type="password"] {
  37. width: 100%;
  38. padding: 0.75rem;
  39. border: 1px solid #ced4da;
  40. border-radius: 4px;
  41. font-size: 1rem;
  42. transition: border-color 0.2s ease, box-shadow 0.2s ease;
  43. }
  44. .form-group input:focus {
  45. outline: none;
  46. border-color: #3498db;
  47. box-shadow: 0 0 0 3px rgba(52, 152, 219, 0.1);
  48. }
  49. .form-group input::placeholder {
  50. color: #6c757d;
  51. font-style: italic;
  52. }
  53. /* Checkbox Styles */
  54. .checkbox-group {
  55. display: grid;
  56. grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
  57. gap: 1rem;
  58. margin-bottom: 1rem;
  59. }
  60. .checkbox-label {
  61. display: flex;
  62. align-items: center;
  63. cursor: pointer;
  64. padding: 0.75rem;
  65. border: 1px solid #e9ecef;
  66. border-radius: 4px;
  67. transition: background-color 0.2s ease, border-color 0.2s ease;
  68. }
  69. .checkbox-label:hover {
  70. background-color: #f8f9fa;
  71. border-color: #3498db;
  72. }
  73. .checkbox-label input[type="checkbox"] {
  74. display: none;
  75. }
  76. .checkmark {
  77. width: 20px;
  78. height: 20px;
  79. border: 2px solid #3498db;
  80. border-radius: 4px;
  81. margin-right: 0.75rem;
  82. position: relative;
  83. transition: background-color 0.2s ease, border-color 0.2s ease;
  84. }
  85. .checkbox-label input[type="checkbox"]:checked + .checkmark {
  86. background-color: #3498db;
  87. border-color: #3498db;
  88. }
  89. .checkbox-label input[type="checkbox"]:checked + .checkmark::after {
  90. content: '✓';
  91. position: absolute;
  92. top: 50%;
  93. left: 50%;
  94. transform: translate(-50%, -50%);
  95. color: white;
  96. font-size: 14px;
  97. font-weight: bold;
  98. }
  99. /* Form Actions */
  100. .form-actions {
  101. display: flex;
  102. gap: 1rem;
  103. justify-content: flex-start;
  104. padding-top: 1.5rem;
  105. border-top: 1px solid #e9ecef;
  106. }
  107. .form-actions .btn {
  108. padding: 0.75rem 2rem;
  109. border: none;
  110. border-radius: 4px;
  111. font-size: 1rem;
  112. font-weight: 600;
  113. cursor: pointer;
  114. transition: background-color 0.2s ease, transform 0.1s ease, box-shadow 0.2s ease;
  115. text-decoration: none;
  116. display: inline-block;
  117. }
  118. .form-actions .btn:hover:not(:disabled) {
  119. transform: translateY(-2px);
  120. box-shadow: 0 4px 8px rgba(0,0,0,0.2);
  121. }
  122. .form-actions .btn:disabled {
  123. opacity: 0.6;
  124. cursor: not-allowed;
  125. transform: none;
  126. }
  127. .btn-primary {
  128. background: linear-gradient(135deg, #3498db, #2980b9);
  129. color: white;
  130. border: 1px solid #2980b9;
  131. }
  132. .btn-primary:hover:not(:disabled) {
  133. background: linear-gradient(135deg, #2980b9, #3498db);
  134. }
  135. .btn-secondary {
  136. background: linear-gradient(135deg, #95a5a6, #7f8c8d);
  137. color: white;
  138. border: 1px solid #7f8c8d;
  139. }
  140. .btn-secondary:hover:not(:disabled) {
  141. background: linear-gradient(135deg, #7f8c8d, #95a5a6);
  142. }
  143. /* Import Results */
  144. .import-results {
  145. background: white;
  146. border: 1px solid #e9ecef;
  147. border-radius: 8px;
  148. padding: 2rem;
  149. margin-bottom: 2rem;
  150. box-shadow: 0 2px 4px rgba(0,0,0,0.1);
  151. }
  152. .import-results h3 {
  153. margin-bottom: 1.5rem;
  154. color: #2c3e50;
  155. font-size: 1.25rem;
  156. }
  157. .success-summary {
  158. background: #d4edda;
  159. border: 1px solid #c3e6cb;
  160. border-radius: 4px;
  161. padding: 1rem;
  162. margin-bottom: 1.5rem;
  163. }
  164. .success-message {
  165. color: #155724;
  166. font-weight: 600;
  167. margin: 0;
  168. }
  169. .error-summary {
  170. background: #f8d7da;
  171. border: 1px solid #f5c6cb;
  172. border-radius: 4px;
  173. padding: 1rem;
  174. margin-bottom: 1.5rem;
  175. }
  176. .error-message {
  177. color: #721c24;
  178. font-weight: 600;
  179. margin: 0;
  180. }
  181. .results-details {
  182. margin-bottom: 1.5rem;
  183. }
  184. .result-item {
  185. background: #f8f9fa;
  186. border: 1px solid #e9ecef;
  187. border-radius: 4px;
  188. padding: 1rem;
  189. margin-bottom: 1rem;
  190. }
  191. .result-item h4 {
  192. margin-bottom: 0.75rem;
  193. color: #495057;
  194. font-size: 1rem;
  195. }
  196. .result-stats {
  197. display: flex;
  198. gap: 2rem;
  199. flex-wrap: wrap;
  200. }
  201. .stat {
  202. display: flex;
  203. align-items: center;
  204. gap: 0.5rem;
  205. font-size: 0.875rem;
  206. }
  207. .stat strong {
  208. font-weight: 600;
  209. }
  210. .stat.success {
  211. color: #28a745;
  212. }
  213. .stat.warning {
  214. color: #ffc107;
  215. }
  216. .stat.error {
  217. color: #dc3545;
  218. }
  219. /* Import Log */
  220. .import-log {
  221. margin-bottom: 1.5rem;
  222. }
  223. .import-log h4 {
  224. margin-bottom: 1rem;
  225. color: #495057;
  226. }
  227. .log-container {
  228. background: #f8f9fa;
  229. border: 1px solid #e9ecef;
  230. border-radius: 4px;
  231. padding: 1rem;
  232. max-height: 300px;
  233. overflow-y: auto;
  234. }
  235. .log-entry {
  236. display: flex;
  237. gap: 1rem;
  238. padding: 0.5rem 0;
  239. border-bottom: 1px solid #e9ecef;
  240. font-size: 0.875rem;
  241. }
  242. .log-entry:last-child {
  243. border-bottom: none;
  244. }
  245. .log-time {
  246. color: #6c757d;
  247. font-family: monospace;
  248. white-space: nowrap;
  249. }
  250. .log-message {
  251. color: #495057;
  252. flex: 1;
  253. }
  254. .log-entry.log-error .log-message {
  255. color: #dc3545;
  256. }
  257. .log-entry.log-warning .log-message {
  258. color: #ffc107;
  259. }
  260. .log-entry.log-info .log-message {
  261. color: #17a2b8;
  262. }
  263. /* Import Errors */
  264. .import-errors {
  265. margin-bottom: 1.5rem;
  266. }
  267. .import-errors h4 {
  268. margin-bottom: 1rem;
  269. color: #dc3545;
  270. }
  271. .error-list {
  272. background: #f8d7da;
  273. border: 1px solid #f5c6cb;
  274. border-radius: 4px;
  275. padding: 1rem;
  276. max-height: 200px;
  277. overflow-y: auto;
  278. }
  279. .error-item {
  280. color: #721c24;
  281. padding: 0.5rem 0;
  282. border-bottom: 1px solid #f5c6cb;
  283. font-size: 0.875rem;
  284. }
  285. .error-item:last-child {
  286. border-bottom: none;
  287. }
  288. /* Information Section */
  289. .info-section {
  290. background: white;
  291. border: 1px solid #e9ecef;
  292. border-radius: 8px;
  293. padding: 2rem;
  294. box-shadow: 0 2px 4px rgba(0,0,0,0.1);
  295. }
  296. .info-section h3 {
  297. margin-bottom: 1.5rem;
  298. color: #2c3e50;
  299. font-size: 1.25rem;
  300. border-bottom: 2px solid #3498db;
  301. padding-bottom: 0.5rem;
  302. }
  303. .info-content {
  304. display: grid;
  305. grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
  306. gap: 2rem;
  307. }
  308. .info-item {
  309. background: #f8f9fa;
  310. border: 1px solid #e9ecef;
  311. border-radius: 4px;
  312. padding: 1.5rem;
  313. }
  314. .info-item h4 {
  315. margin-bottom: 1rem;
  316. color: #495057;
  317. font-size: 1.1rem;
  318. }
  319. .info-item ul {
  320. margin: 0;
  321. padding-left: 1.5rem;
  322. }
  323. .info-item li {
  324. margin-bottom: 0.5rem;
  325. color: #6c757d;
  326. line-height: 1.5;
  327. }
  328. .info-item li:last-child {
  329. margin-bottom: 0;
  330. }
  331. /* Page Description */
  332. .page-description {
  333. color: #6c757d;
  334. font-size: 1rem;
  335. margin-bottom: 2rem;
  336. padding: 1rem;
  337. background: #f8f9fa;
  338. border-left: 4px solid #3498db;
  339. border-radius: 4px;
  340. }
  341. /* Loading States */
  342. .btn.loading {
  343. position: relative;
  344. pointer-events: none;
  345. }
  346. .btn.loading::after {
  347. content: '';
  348. position: absolute;
  349. top: 50%;
  350. left: 50%;
  351. width: 16px;
  352. height: 16px;
  353. margin: -8px 0 0 -8px;
  354. border: 2px solid transparent;
  355. border-top: 2px solid currentColor;
  356. border-radius: 50%;
  357. animation: spin 1s linear infinite;
  358. }
  359. @keyframes spin {
  360. 0% { transform: rotate(0deg); }
  361. 100% { transform: rotate(360deg); }
  362. }
  363. /* Alert Styles */
  364. .alert {
  365. padding: 1rem;
  366. border-radius: 4px;
  367. margin-bottom: 1.5rem;
  368. border: 1px solid transparent;
  369. }
  370. .alert-success {
  371. background: #d4edda;
  372. color: #155724;
  373. border-color: #c3e6cb;
  374. }
  375. .alert-error {
  376. background: #f8d7da;
  377. color: #721c24;
  378. border-color: #f5c6cb;
  379. }
  380. .alert-warning {
  381. background: #fff3cd;
  382. color: #856404;
  383. border-color: #ffeaa7;
  384. }
  385. /* Responsive Design */
  386. @media (max-width: 768px) {
  387. .import-form-container,
  388. .import-results,
  389. .info-section {
  390. padding: 1rem;
  391. }
  392. .form-row {
  393. grid-template-columns: 1fr;
  394. gap: 1rem;
  395. }
  396. .checkbox-group {
  397. grid-template-columns: 1fr;
  398. }
  399. .form-actions {
  400. flex-direction: column;
  401. align-items: stretch;
  402. }
  403. .form-actions .btn {
  404. width: 100%;
  405. text-align: center;
  406. }
  407. .result-stats {
  408. flex-direction: column;
  409. gap: 0.5rem;
  410. }
  411. .info-content {
  412. grid-template-columns: 1fr;
  413. gap: 1rem;
  414. }
  415. .log-entry {
  416. flex-direction: column;
  417. gap: 0.25rem;
  418. }
  419. .log-time {
  420. font-size: 0.75rem;
  421. }
  422. }
  423. /* Progress Indicator */
  424. .progress-indicator {
  425. width: 100%;
  426. height: 8px;
  427. background: #e9ecef;
  428. border-radius: 4px;
  429. overflow: hidden;
  430. margin: 1rem 0;
  431. }
  432. .progress-bar {
  433. height: 100%;
  434. background: linear-gradient(90deg, #3498db, #2980b9);
  435. border-radius: 4px;
  436. transition: width 0.3s ease;
  437. width: 0%;
  438. }
  439. /* Status Badges */
  440. .status-badge {
  441. display: inline-block;
  442. padding: 0.25rem 0.75rem;
  443. border-radius: 12px;
  444. font-size: 0.75rem;
  445. font-weight: 600;
  446. text-transform: uppercase;
  447. }
  448. .status-badge.success {
  449. background: #d4edda;
  450. color: #155724;
  451. }
  452. .status-badge.warning {
  453. background: #fff3cd;
  454. color: #856404;
  455. }
  456. .status-badge.error {
  457. background: #f8d7da;
  458. color: #721c24;
  459. }
  460. .status-badge.info {
  461. background: #d1ecf1;
  462. color: #0c5460;
  463. }