PluginProbe
MLSImport: IDX Plugin & MLS Plugin for Real Estate Listings / 7.2
MLSImport: IDX Plugin & MLS Plugin for Real Estate Listings v7.2
7.2 7.1.2 7.1.1 7.1 7.0.4 7.0.6 7.0.7 6.3.8 6.3.7 6.3.6 6.3.5 6.3.4 6.3.3 6.3.1 trunk 5.7.3 5.7.5 5.8.1 5.8.2 5.8.3 5.8.4 5.8.6 6.0.4 6.0.5 6.0.7 All 35 releases
mlsimport / public / css / mlsimport-agent.css

mlsimport-agent.css in MLSImport: IDX Plugin & MLS Plugin for Real Estate Listings 7.2, at public/css/mlsimport-agent.css

588 lines 13.5 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 /**
2 * MLSImport standalone single-agent profile.
3 *
4 * Layers on top of mlsimport-property-sections.css (which declares the :root
5 * design tokens and the shared .mlsimport-property-section card shell + sub-nav).
6 * Every selector is prefixed mlsimport-agent-. The page mirrors the property
7 * page's warm design system: clay accent, big radii, gentle shadows, a solid
8 * clay contact rail.
9 */
10
11 /* =========================================================================
12 LAYOUT — page width + two-column (content beside sticky rail)
13 ========================================================================= */
14 .mlsimport-agent-single {
15 font-family: var(--mlsimport-font);
16 color: var(--mlsimport-ink-2);
17 background: var(--mlsimport-page-bg);
18 }
19
20 .mlsimport-agent-wrap {
21 max-width: var(--mlsimport-max-width);
22 margin: 0 auto;
23 padding: 20px 26px 40px;
24 }
25
26 .mlsimport-agent-layout {
27 display: grid;
28 grid-template-columns: minmax(0, 1fr) 380px;
29 gap: 30px;
30 align-items: start;
31 margin-top: 8px;
32 }
33
34 .mlsimport-agent-layout__main {
35 min-width: 0;
36 }
37
38 /* =========================================================================
39 HERO — portrait + identity + direct contact + CTAs
40 ========================================================================= */
41 .mlsimport-agent-hero {
42 background: var(--mlsimport-card-bg);
43 border-radius: var(--mlsimport-radius-card);
44 box-shadow: var(--mlsimport-shadow-card);
45 padding: var(--mlsimport-pad);
46 display: grid;
47 grid-template-columns: 300px minmax(0, 1fr);
48 gap: 36px;
49 align-items: stretch;
50 }
51
52 .mlsimport-agent-hero__portrait {
53 position: relative;
54 border-radius: var(--mlsimport-radius-img);
55 overflow: hidden;
56 min-height: 420px;
57 background: var(--mlsimport-accent-tint);
58 }
59
60 .mlsimport-agent-hero__img {
61 position: absolute;
62 inset: 0;
63 width: 100%;
64 height: 100%;
65 object-fit: cover;
66 }
67
68 .mlsimport-agent-hero__img--empty {
69 display: grid;
70 place-items: center;
71 color: var(--mlsimport-accent);
72 }
73
74 .mlsimport-agent-hero__img--empty svg {
75 width: 84px;
76 height: 84px;
77 }
78
79 .mlsimport-agent-hero__verified {
80 position: absolute;
81 left: 14px;
82 bottom: 14px;
83 display: inline-flex;
84 align-items: center;
85 gap: 5px;
86 padding: 5px 11px;
87 border-radius: var(--mlsimport-radius-chip);
88 background: var(--mlsimport-accent);
89 color: #fff;
90 font-size: 11px;
91 font-weight: 500;
92 letter-spacing: 0.04em;
93 text-transform: uppercase;
94 line-height: 1;
95 }
96
97 .mlsimport-agent-hero__verified svg {
98 width: 13px;
99 height: 13px;
100 }
101
102 .mlsimport-agent-hero__identity {
103 display: flex;
104 flex-direction: column;
105 min-width: 0;
106 }
107
108 .mlsimport-agent-hero__eyebrow {
109 font-size: 12px;
110 font-weight: 600;
111 letter-spacing: 0.22em;
112 text-transform: uppercase;
113 color: var(--mlsimport-accent2);
114 }
115
116 .mlsimport-agent-hero__name {
117 margin: 10px 0 0;
118 font-size: 46px;
119 font-weight: var(--mlsimport-head-weight);
120 letter-spacing: -0.02em;
121 line-height: 1.02;
122 color: var(--mlsimport-ink);
123 }
124
125 .mlsimport-agent-hero__meta {
126 display: flex;
127 align-items: center;
128 gap: 8px;
129 flex-wrap: wrap;
130 margin-top: 10px;
131 font-size: 15px;
132 color: var(--mlsimport-ink-2);
133 }
134
135 .mlsimport-agent-hero__meta-item {
136 display: inline-flex;
137 align-items: center;
138 gap: 7px;
139 }
140
141 .mlsimport-agent-hero__meta-item svg {
142 width: 17px;
143 height: 17px;
144 color: var(--mlsimport-accent);
145 }
146
147 .mlsimport-agent-hero__meta-dot {
148 width: 4px;
149 height: 4px;
150 border-radius: 999px;
151 background: var(--mlsimport-muted);
152 }
153
154 .mlsimport-agent-hero__lead {
155 /* Bottom margin guarantees a gap to the contact block's border below: the
156 contact block uses margin-top:auto, which collapses to zero for a longer
157 teaser and would otherwise let the text sit right against the hairline. */
158 margin: 18px 0 24px;
159 font-size: 15px;
160 line-height: 1.7;
161 color: var(--mlsimport-ink-2);
162 max-width: 580px;
163 text-wrap: pretty;
164 }
165
166 .mlsimport-agent-hero__contact {
167 margin-top: auto;
168 padding-top: 24px;
169 border-top: 1px solid var(--mlsimport-hairline);
170 }
171
172 .mlsimport-agent-hero__contact-label {
173 font-size: 11px;
174 font-weight: 600;
175 letter-spacing: 0.08em;
176 text-transform: uppercase;
177 color: var(--mlsimport-muted);
178 margin-bottom: 14px;
179 }
180
181 .mlsimport-agent-hero__contact-grid {
182 display: grid;
183 grid-template-columns: repeat(auto-fit, minmax(210px, 1fr));
184 gap: 16px 24px;
185 }
186
187 .mlsimport-agent-contact {
188 display: flex;
189 align-items: center;
190 gap: 11px;
191 min-width: 0;
192 text-decoration: none;
193 }
194
195 .mlsimport-agent-contact__value {
196 transition: color 0.25s ease;
197 }
198
199 a.mlsimport-agent-contact:hover .mlsimport-agent-contact__value,
200 a.mlsimport-agent-contact:focus .mlsimport-agent-contact__value {
201 color: var(--mlsimport-accent2);
202 }
203
204 .mlsimport-agent-contact__icon {
205 width: 38px;
206 height: 38px;
207 flex-shrink: 0;
208 display: grid;
209 place-items: center;
210 border-radius: var(--mlsimport-radius-input);
211 background: var(--mlsimport-accent-tint-strong);
212 color: var(--mlsimport-accent2);
213 }
214
215 .mlsimport-agent-contact__icon svg {
216 width: 16px;
217 height: 16px;
218 }
219
220 .mlsimport-agent-contact__text {
221 min-width: 0;
222 }
223
224 .mlsimport-agent-contact__label {
225 display: block;
226 font-size: 10.5px;
227 color: var(--mlsimport-muted);
228 text-transform: uppercase;
229 letter-spacing: 0.07em;
230 font-weight: 500;
231 }
232
233 .mlsimport-agent-contact__value {
234 display: block;
235 margin-top: 1px;
236 font-size: 14px;
237 color: var(--mlsimport-ink);
238 font-weight: 500;
239 overflow: hidden;
240 text-overflow: ellipsis;
241 white-space: nowrap;
242 }
243
244 .mlsimport-agent-hero__cta {
245 display: flex;
246 align-items: center;
247 gap: 10px;
248 margin-top: 22px;
249 flex-wrap: wrap;
250 }
251
252 /* =========================================================================
253 BUTTONS
254 ========================================================================= */
255 .mlsimport-agent-btn {
256 display: inline-flex;
257 align-items: center;
258 justify-content: center;
259 gap: 9px;
260 padding: 13px 22px;
261 font-size: 14px;
262 font-weight: 500;
263 line-height: 1;
264 border-radius: var(--mlsimport-radius-btn);
265 cursor: pointer;
266 border: none;
267 text-decoration: none;
268 transition: background 0.2s linear, color 0.2s linear, border-color 0.2s linear, box-shadow 0.2s linear;
269 }
270
271 .mlsimport-agent-btn svg {
272 width: 16px;
273 height: 16px;
274 }
275
276 .mlsimport-agent-btn--primary {
277 background: var(--mlsimport-accent);
278 color: #fff;
279 }
280
281 .mlsimport-agent-btn--primary:hover {
282 background: var(--mlsimport-accent-hover);
283 /* Hold the text white: these CTAs are <a>, so a theme's a:hover colour rule
284 (0,1,1) would otherwise override the base #fff (0,1,0) on hover. */
285 color: #fff;
286 box-shadow: var(--mlsimport-shadow-soft);
287 }
288
289 .mlsimport-agent-btn--outline {
290 background: transparent;
291 color: var(--mlsimport-accent2);
292 border: 1.5px solid var(--mlsimport-hairline);
293 }
294
295 .mlsimport-agent-btn--outline:hover {
296 background: var(--mlsimport-accent-tint);
297 /* Hold the accent text against a theme's a:hover colour rule (see --primary). */
298 color: var(--mlsimport-accent2);
299 border-color: var(--mlsimport-accent);
300 }
301
302 /* WhatsApp keeps its own brand green — visitors recognise the button by colour,
303 so it does not follow the theme accent like the other two CTAs. */
304 .mlsimport-agent-btn--whatsapp {
305 background: #25d366;
306 color: #fff;
307 }
308
309 .mlsimport-agent-btn--whatsapp:hover {
310 background: #1da851;
311 /* Hold the text white against a theme's a:hover colour rule (see --primary). */
312 color: #fff;
313 box-shadow: var(--mlsimport-shadow-soft);
314 }
315
316 /* =========================================================================
317 SUB-NAV wrapper — spacing only; the inner .mlsimport-property-subnav keeps
318 its own sticky/scroll/active styling from the base stylesheet.
319 ========================================================================= */
320 .mlsimport-agent-subnav {
321 margin: 16px 0 8px;
322 }
323
324 /* =========================================================================
325 LISTINGS — count line + the admin-set column count (cards come from
326 mlsimport-listings.css)
327 ========================================================================= */
328
329 /* Cards per row comes from the agent_listings_per_row setting, inlined as
330 --mli-cols. The double-class selector beats the plain .mlsimport-results__grid
331 base rule, so the narrow-screen steps below have to be re-scoped at the same
332 specificity or the column count would never collapse on phones. */
333 .mlsimport-results__grid.mlsimport-agent-listings__grid {
334 grid-template-columns: repeat(var(--mli-cols, 3), 1fr);
335 }
336
337 @media (max-width: 900px) {
338 .mlsimport-results__grid.mlsimport-agent-listings__grid {
339 grid-template-columns: repeat(2, 1fr);
340 }
341 }
342
343 @media (max-width: 600px) {
344 .mlsimport-results__grid.mlsimport-agent-listings__grid {
345 grid-template-columns: 1fr;
346 }
347 }
348
349 .mlsimport-agent-listings__count {
350 margin: 0 0 16px;
351 font-size: 13px;
352 color: var(--mlsimport-muted);
353 }
354
355 /* =========================================================================
356 ABOUT — the agent's full bio (post body) inside a section card
357 ========================================================================= */
358 .mlsimport-agent-about {
359 font-size: 15px;
360 line-height: 1.75;
361 color: var(--mlsimport-ink-2);
362 }
363
364 .mlsimport-agent-about > :first-child {
365 margin-top: 0;
366 }
367
368 .mlsimport-agent-about > :last-child {
369 margin-bottom: 0;
370 }
371
372 .mlsimport-agent-about p {
373 margin: 0 0 1em;
374 }
375
376 .mlsimport-agent-about a {
377 color: var(--mlsimport-accent2);
378 text-decoration: underline;
379 }
380
381 /* =========================================================================
382 CREDENTIALS — RESO Member/Office field tiles
383 ========================================================================= */
384 .mlsimport-agent-cred-grid {
385 display: grid;
386 grid-template-columns: repeat(auto-fill, minmax(232px, 1fr));
387 gap: 12px;
388 }
389
390 .mlsimport-agent-cred {
391 padding: 13px 16px;
392 border-radius: var(--mlsimport-radius-btn);
393 background: var(--mlsimport-accent-wash);
394 border: 1px solid var(--mlsimport-hairline);
395 }
396
397 .mlsimport-agent-cred__label {
398 display: block;
399 font-size: 11px;
400 color: var(--mlsimport-muted);
401 text-transform: uppercase;
402 letter-spacing: 0.06em;
403 }
404
405 .mlsimport-agent-cred__value {
406 margin-top: 5px;
407 font-size: 14px;
408 color: var(--mlsimport-ink);
409 font-weight: 500;
410 word-break: break-word;
411 }
412
413 /* =========================================================================
414 CONTACT RAIL — sticky solid-clay lead card
415 ========================================================================= */
416 .mlsimport-agent-rail {
417 position: sticky;
418 top: 88px;
419 }
420
421 .mlsimport-agent-rail__card {
422 background: var(--mlsimport-accent);
423 color: #fff;
424 border-radius: var(--mlsimport-radius-card);
425 box-shadow: var(--mlsimport-shadow-card);
426 overflow: hidden;
427 padding: 22px 22px 24px;
428 /* Accent surface, same as the property booking rail: the shared lead-form
429 submit button reads these to render a white fill with accent-2 text, so the
430 agent "Send Message" button matches the property "Request This Tour" button. */
431 --mlsb-submit-bg: #fff;
432 --mlsb-submit-text: var(--mlsimport-accent2);
433 }
434
435 .mlsimport-agent-rail__head {
436 display: flex;
437 align-items: center;
438 gap: 12px;
439 margin-bottom: 18px;
440 }
441
442 .mlsimport-agent-rail__avatar {
443 width: 54px;
444 height: 54px;
445 flex-shrink: 0;
446 border-radius: 999px;
447 overflow: hidden;
448 position: relative;
449 border: 2px solid rgba(255, 255, 255, 0.6);
450 }
451
452 .mlsimport-agent-rail__avatar-img {
453 position: absolute;
454 inset: 0;
455 width: 100%;
456 height: 100%;
457 object-fit: cover;
458 }
459
460 .mlsimport-agent-rail__avatar-img--empty {
461 display: grid;
462 place-items: center;
463 background: rgba(255, 255, 255, 0.18);
464 color: #fff;
465 }
466
467 .mlsimport-agent-rail__avatar-img--empty svg {
468 width: 24px;
469 height: 24px;
470 }
471
472 .mlsimport-agent-rail__name {
473 display: block;
474 font-size: 16px;
475 font-weight: 500;
476 color: #fff;
477 }
478
479 .mlsimport-agent-rail__title {
480 display: block;
481 font-size: 13px;
482 color: rgba(255, 255, 255, 0.85);
483 }
484
485 .mlsimport-agent-rail__form-title {
486 font-size: 14.5px;
487 font-weight: 500;
488 color: #fff;
489 margin-bottom: 14px;
490 }
491
492 /* White fields on the clay card. */
493 .mlsimport-agent-rail__form input,
494 .mlsimport-agent-rail__form textarea {
495 width: 100%;
496 border: none;
497 border-radius: var(--mlsimport-radius-input);
498 padding: 0 15px;
499 height: 48px;
500 font-size: 14px;
501 font-family: inherit;
502 color: var(--mlsimport-ink);
503 background: #fff;
504 outline: none;
505 box-sizing: border-box;
506 /* No margin-bottom: field spacing comes from the shared
507 .mlsimport-property-lead-form flex gap (10px), same as the property form. */
508 }
509
510 .mlsimport-agent-rail__form textarea {
511 height: auto;
512 padding: 12px 15px;
513 resize: vertical;
514 }
515
516 .mlsimport-agent-rail__form .mlsimport-property-lead-form__hp {
517 display: none;
518 }
519
520 .mlsimport-agent-rail .mlsimport-property-lead-form__status {
521 margin: 10px 0 0;
522 font-size: 13px;
523 color: #fff;
524 text-align: center;
525 }
526
527 /* Success panel (shown by the lead JS on a successful submit). */
528 .mlsimport-agent-rail__success {
529 text-align: center;
530 padding: 20px 0 6px;
531 }
532
533 .mlsimport-agent-rail__success-icon {
534 width: 56px;
535 height: 56px;
536 border-radius: 999px;
537 margin: 0 auto 14px;
538 display: grid;
539 place-items: center;
540 background: rgba(255, 255, 255, 0.2);
541 color: #fff;
542 }
543
544 .mlsimport-agent-rail__success-icon svg {
545 width: 26px;
546 height: 26px;
547 }
548
549 .mlsimport-agent-rail__success-title {
550 font-size: 16px;
551 font-weight: 500;
552 color: #fff;
553 margin-bottom: 4px;
554 }
555
556 .mlsimport-agent-rail__success-text {
557 font-size: 13.5px;
558 color: rgba(255, 255, 255, 0.85);
559 }
560
561 /* =========================================================================
562 RESPONSIVE
563 ========================================================================= */
564 @media (max-width: 1024px) {
565 .mlsimport-agent-layout {
566 grid-template-columns: minmax(0, 1fr);
567 }
568
569 .mlsimport-agent-rail {
570 position: static;
571 }
572 }
573
574 @media (max-width: 720px) {
575 .mlsimport-agent-hero {
576 grid-template-columns: minmax(0, 1fr);
577 gap: 22px;
578 }
579
580 .mlsimport-agent-hero__portrait {
581 min-height: 320px;
582 }
583
584 .mlsimport-agent-hero__name {
585 font-size: 34px;
586 }
587 }
588