/** * MLS Import Field Selector Styles * * Styles for the MLS field selection interface with tabular layout, * filtering controls, and interactive elements. * * @package MLSImport * @subpackage MLSImport/css * @since 1.0.0 * * Layout notes: a rounded card wraps a save-status line, stats and filter bars, * a fixed-layout table of RESO fields, and jQuery-UI sortable styling. * Brand accent colour throughout is #e85d3c (warm orange). */ /* Container for the entire field selector interface */ .mlsimport-field-selector-container { margin: 20px 0; max-width: 100%; background: #fff; box-shadow: 0 0 0 1px rgba(28, 25, 23, 0.05), 0 5px 22px rgba(28, 25, 23, 0.05); border-radius: 18px; } /* Stats bar styles */ .mlsimport-field-stats { padding: 15px; border-top-right-radius: 18px; border-top-left-radius: 18px; background: #f3efe7; border-bottom: 1px solid rgba(28, 25, 23, 0.18); display: flex; align-content: center; align-items: center; flex-wrap: nowrap; gap: 10px; justify-content: space-between; } .mlsimport-button-action-wrapper{ display: flex; gap: 10px; flex-direction: row; flex-wrap: wrap; } .mlsimport-field-stats ul { display: flex; margin: 0; padding: 0; list-style: none; } .mlsimport-field-stats li { margin-right: 30px; font-weight: 500; font-size: 14px; } /* Filter bar styles */ .mlsimport-field-filters { display: flex; align-items: center; padding: 15px; background: #f3efe7; border-bottom: 1px solid rgba(28, 25, 23, 0.18); margin-bottom: 0px; } .mlsimport-field-filter { margin-right: 15px; max-width: 250px; } /* Alphabetical filter styles */ .mlsimport-alpha-filters { display: flex; flex-wrap: wrap; padding: 10px 15px; background: #f3efe7; border-bottom: 1px solid rgba(28, 25, 23, 0.18); } .mlsimport-alpha-filter { display: inline-block; margin: 2px; padding: 5px 8px; background: #fff; border: 1px solid rgba(28, 25, 23, 0.12); border-radius: 999px; text-decoration: none; color: #e85d3c; font-size: 13px; } /* Currently selected letter: filled orange. */ .mlsimport-alpha-filter.active { background: #e85d3c; border-color: #e85d3c; color: #fff; } .mlsimport-alpha-filter:hover { background: #f3efe7; color: #e85d3c; } .mlsimport-alpha-filter.active:hover { background: #e85d3c; border-color: #e85d3c; color: #fff; } .mlsimport-reset-filter { display: inline-block; margin: 2px 0 2px 10px; padding: 5px 8px; background: #f3efe7; border: 1px solid rgba(28, 25, 23, 0.18); border-radius: 999px; text-decoration: none; color: #6b6358; font-size: 13px; } .mlsimport-reset-filter:hover { background: #f3efe7; border-color: rgba(28, 25, 23, 0.18); color: #1c1917; } /* Table styles */ .mlsimport-fields-table { width: 100%; border-collapse: collapse; border-spacing: 0; table-layout: fixed; } /* Sticky table header: stays pinned 32px down to clear the WP admin bar, raised above rows with z-index so it overlaps content while scrolling. */ .mlsimport-fields-table thead { background: #f3efe7; position: sticky; top: 32px; /* Account for WP admin bar */ z-index: 10; } /* Inside the onboarding wizard there's no admin bar offset, so pin at 0. */ .mlsimport-wizard-wrap .mlsimport-fields-table thead{ top:0px; } .mlsimport-fields-table th { padding: 15px; text-align: left; color: #6b6358; font-weight: 500; font-size: 13px; } .mlsimport-fields-table td { padding: 17px 15px; border-bottom: 1px solid rgba(28, 25, 23, 0.12); vertical-align: middle; word-break: break-word; overflow-wrap: break-word; } .mlsimport-fields-table tr:hover td { background: #f3efe7; } .mlsimport-row-actions .field-name{ display: inline-block; } .save-indicator{ width: 16px; height: 16px; } /* Mandatory field styles */ /* Required RESO fields get a light-peach row tint (and a darker hover). */ .mlsimport-mandatory-row { background-color: #fde4d8; } .mlsimport-mandatory-row:hover td { background-color: rgba(232, 93, 60, 0.18) !important; } .mlsimport-mandatory-indicator { color: #e85d3c; margin-right: 5px; font-size: 14px; } /* Column widths (table-layout is fixed, so these percentages/px are enforced). */ .mlsimport-field-name { width: 30%; } .mlsimport-field-import, .mlsimport-field-admin { width: 75px; text-align: left; } .mlsimport-field-label, .mlsimport-field-postmeta { width: 20%; } .mlsimport-field-taxonomy { width: 20%; } .mlsimport-field-actions { width: 140px; text-align: center; } /* Form input styles */ .mlsimport-fields-table input[type="text"] { width: 90%; padding: 8px; border: 1px solid rgba(28, 25, 23, 0.12); border-radius: 10px; } .mlsimport-fields-table select { width: 90%; } /* Field name and explanation */ .mlsimport-field-name { position: relative; } .mlsimport-field-name .field-name{ display: inline-block; width: auto; } .field-name { display: block; font-weight: 500; margin-bottom: 5px; font-size: 13px; } .field-explanation { font-size: 12px; color: #6b6358; line-height: 1.4; margin-top: 5px; padding: 5px 0; } /* Bulk action buttons */ .mlsimport-bulk-actions { display: flex; flex-wrap: wrap; gap: 10px; padding: 15px; background: #f3efe7; border-bottom: 1px solid rgba(28, 25, 23, 0.18); } .mlsimport-bulk-button { padding: 8px 15px; background: #1c1917; border: none; border-radius: 999px; color: #fff; cursor: pointer; font-size: 13px; } .mlsimport-bulk-button.secondary { background: #fff; border: 1px solid rgba(28, 25, 23, 0.12); color: #1c1917; } .mlsimport-bulk-button:hover { background: #33302b; box-shadow: 0 10px 24px -10px rgba(0, 0, 0, .45); } .mlsimport-bulk-button.secondary:hover { background: #f3efe7; border-color: rgba(28, 25, 23, 0.18); } /* The queue status stays in normal document flow so failures and Retry remain visible without transient toast timing or cross-script state. Routine saving/saved feedback is the inline per-control indicator below instead. */ /* Hidden per request (2026-08-19): the live save-status strip is not shown on the import page. JS still writes into it (harmless on a hidden element). */ .mlsimport-field-save-status { display: none; } .mlsimport-field-save-status.is-error { color: #c02617; } /* Per-control save feedback: an inline spinner next to the edited control while the change is on the wire, then a fading green tick on success or a persistent red cross on failure. */ .mlsimport-save-indicator { box-sizing: border-box; display: inline-block; margin-left: 5px; width: 16px; height: 16px; vertical-align: middle; text-align: center; line-height: 16px; } .mlsimport-save-indicator.is-spinning { border: 2px solid #e85d3c; border-top-color: transparent; border-radius: 50%; animation: mlsimport-field-save-spin 1s linear infinite; } .mlsimport-save-indicator.is-success { color: #2faa6a; font-size: 16px; } .mlsimport-save-indicator.is-error { color: #c02617; font-size: 16px; } @keyframes mlsimport-field-save-spin { 0% { transform: rotate(0deg); } 100% { transform: rotate(360deg); } } .mlsimport-field-save-recovery { margin-left: 8px !important; } .mlsimport-no-fields td { padding: 30px; text-align: center; color: #9a9285; } /* Drag and drop styles */ /* jQuery-UI sortable: the row being dragged (helper). */ .ui-sortable-helper { background: #fff; border: 1px solid #e85d3c; box-shadow: 0 2px 5px rgba(28, 25, 23, 0.15); } /* Dashed drop-target gap; forced visible to show where the row will land. */ .ui-sortable-placeholder { visibility: visible !important; background: #fde4d8; border: 1px dashed #e85d3c; height: 50px; } /* Responsive styles */ /* At WP's 782px mobile breakpoint: stack the stats/filters vertically and let the wide fields table scroll horizontally instead of overflowing. */ @media screen and (max-width: 782px) { .mlsimport-field-stats ul { flex-direction: column; } .mlsimport-field-stats li { margin-right: 0; margin-bottom: 10px; } .mlsimport-field-filters { flex-direction: column; align-items: stretch; } .mlsimport-field-filter { margin-right: 0; margin-bottom: 10px; max-width: 100%; } .mlsimport-fields-table { display: block; overflow-x: auto; } } /* row oers */ /* Per-row reorder controls: inline, no-wrap group of move buttons. */ .mlsimport-row-actions { text-align: center; white-space: nowrap; display: inline; margin-right: 10px; } .mlsimport-move-btn { display: inline-block; width: 28px; height: 28px; margin: 0 2px; padding: 0; background: #f3efe7; border: 1px solid rgba(28, 25, 23, 0.18); border-radius: 999px; color: #6b6358; text-align: center; cursor: pointer; } .mlsimport-move-btn:hover { background: #e85d3c; border-color: #e85d3c; color:#fff; } /* Tooltip styling for move buttons */ /* JS-positioned tooltip for the up/down move buttons; very high z-index keeps it above the sticky table header and card chrome. */ .mlsimport-move-tooltip { background: #1c1917; color: #fff; padding: 6px 10px; border-radius: 10px; box-shadow: 0 2px 5px rgba(28, 25, 23, 0.3); font-size: 12px; /* max-width: 200px; */ z-index: 10000; width: auto; max-width: none; display: flex; width: auto; float: left; transition: all 1s ease-out; }