/* Rosie chat — standalone styles (loaded by the public theme AND the admin
 * dashboard, so every var() carries its brand fallback). Mobile = native
 * full-screen sheet; desktop = right slideout. */

#rchat-launch{position:fixed;right:18px;bottom:calc(18px + env(safe-area-inset-bottom,0px));z-index:110;display:flex;align-items:center;gap:8px;background:var(--ink,#1E2E44);color:#fff;border:0;border-radius:99px;padding:12px 18px;font:600 13.5px 'Inter',sans-serif;cursor:pointer;box-shadow:0 12px 34px rgba(15,24,38,.35);transition:transform .2s,background .2s,opacity .2s}
#rchat-launch:hover{transform:translateY(-2px);background:#2A3D58}
#rchat-launch svg{width:19px;height:19px;color:var(--rose-soft,#EEC8CB)}
#rchat-launch.hide{opacity:0;pointer-events:none}
/* the rose logo (rose_mark) the staff frames hand chat.js as CFG.mark: a square box so the
   pill is a 48px circle on a phone, a heavier stroke so the tulip holds at 22px, and the
   pill's own text colour (white on the accent), never the public bubble's pink */
#rchat-launch .rchat-mk{width:22px;height:22px;flex:none;color:currentColor;stroke-width:12}
.rchat-ava .rchat-mk{width:20px;height:20px;stroke-width:12}

#rchat{position:fixed;top:0;right:0;bottom:0;z-index:130;width:min(400px,100vw);background:var(--paper,#FFFBF2);box-shadow:-24px 0 60px rgba(15,24,38,.25);display:flex;flex-direction:column;transform:translateX(105%);transition:transform .32s cubic-bezier(.2,.6,.2,1)}
#rchat.open{transform:none}

.rchat-head{display:flex;align-items:center;gap:12px;padding:16px 18px 12px;background:var(--paper,#FFFBF2);color:var(--ink,#1E2E44);flex:none}
.rchat-head b{font-family:'Fraunces',serif;font-size:17px;display:block}
.rchat-head small{font-size:11px;color:var(--slate,#4A5A72);display:block;margin-top:1px}
/* small circle avatar for Rosie: white disc, rose mark, presence dot on the rim.
   The dot is the rose accent: no green anywhere (Lauren's brand rule). */
.rchat-ava{position:relative;width:36px;height:36px;border-radius:50%;background:#fff;box-shadow:0 2px 10px rgba(30,46,68,.10);display:flex;align-items:center;justify-content:center;flex:none}
.rchat-ava svg{width:19px;height:19px;color:var(--rose,#3879BD)}
.rchat-dot{position:absolute;right:-1px;bottom:-1px;width:10px;height:10px;border-radius:50%;background:var(--rose,#3879BD);border:2px solid var(--paper,#FFFBF2);flex:none}
.rchat-staff{margin-left:6px;flex:none;font:700 9px 'Inter',sans-serif;letter-spacing:.08em;background:var(--rose,#3879BD);color:#fff;border-radius:5px;padding:3px 6px}
.rchat-x{margin-left:auto;width:38px;height:38px;border-radius:50%;border:0;background:none;color:var(--ink,#1E2E44);font-size:15px;cursor:pointer;flex:none;transition:background .15s}
.rchat-x:hover{background:var(--blush,#FFF3D9)}

.rchat-log{flex:1;overflow-y:auto;-webkit-overflow-scrolling:touch;padding:18px 16px;display:flex;flex-direction:column;gap:10px}
.rchat-b{max-width:88%;padding:11px 15px;border-radius:16px;font-size:14.5px;line-height:1.55;overflow-wrap:break-word;animation:rchatIn .26s ease both}
@keyframes rchatIn{from{opacity:0;transform:translateY(5px)}to{opacity:1;transform:none}}
/* blinking caret while Rosie is typing a reply */
.rchat-b.typing::after{content:"";display:inline-block;width:2px;height:1.05em;margin-left:2px;vertical-align:-3px;border-radius:1px;background:var(--rose,#3879BD);animation:rchatCaret .7s steps(1,end) infinite}
@keyframes rchatCaret{50%{opacity:0}}
@media(prefers-reduced-motion:reduce){.rchat-b{animation-duration:.01ms}.rchat-b.typing::after{display:none}}
.rchat-b.bot{background:#fff;border:1px solid var(--line,#E9DFC8);border-bottom-left-radius:6px;align-self:flex-start;color:var(--ink,#1E2E44)}

/* ── MARKDOWN-LITE, THE BLOCK HALF (2026-09-13) ───────────────────────────
   A model asked what is due this week answers with a bulleted list or a pipe
   table, and until pretty() learned to read them both arrived as a run of
   dashes and vertical bars mid-sentence. These four rules are what makes the
   parsed version read; they are in chat.css rather than in the app's stylesheet
   because it is the same chat on the public site, and a table that renders on
   one and not the other is two chats. */
.rchat-b .rchat-list{margin:.45em 0;padding-left:1.15em}
.rchat-b .rchat-list li{margin:.18em 0}
.rchat-b .rchat-h{display:block;margin:.6em 0 .25em;font-weight:600}
.rchat-b .rchat-h:first-child{margin-top:0}
.rchat-b .rchat-tbl{
  width:100%;margin:.5em 0;border-collapse:collapse;font-size:13px;line-height:1.4;
  font-variant-numeric:tabular-nums;display:block;overflow-x:auto;
}
.rchat-b .rchat-tbl th,.rchat-b .rchat-tbl td{
  padding:5px 9px 5px 0;text-align:left;vertical-align:top;
  border-bottom:1px solid var(--line,#E9DFC8);
}
.rchat-b .rchat-tbl th{font-weight:600;white-space:nowrap}
.rchat-b .rchat-tbl tr:last-child td{border-bottom:0}
.rchat-b.me{background:var(--rose,#3879BD);color:#fff;border-bottom-right-radius:6px;align-self:flex-end}
/* suggested pages + inline CTAs read as elegant links: rose, weighted, never underlined */
.rchat-b.bot a{color:var(--rose-deep,#2A5F96);font-weight:600;text-decoration:none;transition:color .15s}
.rchat-b.bot a:hover{color:var(--rose,#3879BD)}
.rchat-b .rchat-btn{display:inline-block;margin-top:9px;background:var(--rose,#3879BD);color:#fff !important;border-radius:99px;padding:9px 15px;font:600 13px 'Inter',sans-serif;text-decoration:none !important;transition:background .15s}
.rchat-b .rchat-btn:hover{background:var(--rose-deep,#2A5F96)}
/* Rosie's one-tap actions say whose idea they are and where it came from (audit 2026-10-19 M3) */
.rchat-sug{margin-top:9px}
.rchat-sug + .rchat-sug{margin-top:12px}
.rchat-sug-l{display:block;font:600 11px/1.3 'Inter',sans-serif;letter-spacing:.06em;text-transform:uppercase;opacity:.72}
.rchat-b .rchat-sug .rchat-act{margin-top:5px;min-height:44px;border:0;cursor:pointer;text-align:left}
.rchat-b .rchat-act.arm{background:var(--rose-deep,#2A5F96)}
.rchat-sug-f{display:block;margin-top:5px;font-size:12px;line-height:1.4;opacity:.78}

.rchat-chips{display:flex;flex-wrap:wrap;gap:7px;align-self:flex-start;max-width:94%}
.rchat-chip{display:inline-flex;align-items:center;gap:7px;border:1px solid var(--rose,#3879BD);color:var(--rose-deep,#2A5F96);background:#fff;border-radius:99px;padding:8px 13px;font:600 12.5px 'Inter',sans-serif;cursor:pointer;transition:background .15s,color .15s}
.rchat-chip svg{width:14px;height:14px;flex:none}
.rchat-chip:hover{background:var(--rose,#3879BD);color:#fff}

.rchat-t{display:inline-flex;gap:4px;padding:3px 2px}
.rchat-t i{width:6px;height:6px;border-radius:50%;background:var(--rose-soft,#EEC8CB);animation:rchatT 1s infinite}
.rchat-t i:nth-child(2){animation-delay:.15s}.rchat-t i:nth-child(3){animation-delay:.3s}
@keyframes rchatT{0%,100%{opacity:.35;transform:translateY(0)}50%{opacity:1;transform:translateY(-3px)}}

.rchat-ctabar{flex:none;padding:9px 14px 0;background:var(--paper,#FFFBF2)}
.rchat-ctabar a{display:flex;align-items:center;justify-content:center;gap:7px;text-align:center;background:var(--blush,#FFF3D9);color:var(--rose-deep,#2A5F96);border:1px solid var(--rose-soft,#EEC8CB);border-radius:99px;padding:9px 14px;font:600 12.5px 'Inter',sans-serif;text-decoration:none;transition:background .15s,color .15s}
.rchat-ctabar a:hover{background:var(--rose,#3879BD);color:#fff}

.rchat-bar{display:flex;gap:8px;padding:12px 14px;border-top:0;background:var(--paper,#FFFBF2);flex:none}
.rchat-ctabar + .rchat-bar{padding-top:10px}
.rchat-bar input{flex:1;border:1px solid var(--line,#E9DFC8);border-radius:99px;padding:11px 16px;font:15px 'Inter',sans-serif;background:#fff;min-width:0}
.rchat-bar input:focus{outline:2px solid var(--rose,#3879BD);outline-offset:-1px}
.rchat-send{width:44px;height:44px;border-radius:50%;border:0;background:var(--rose,#3879BD);color:#fff;cursor:pointer;flex:none;display:flex;align-items:center;justify-content:center;transition:background .15s}
.rchat-send svg{width:19px;height:19px}
.rchat-send:hover{background:var(--rose-deep,#2A5F96)}
.rchat-fine{padding:8px 16px calc(10px + env(safe-area-inset-bottom,0px));font-size:10.5px;color:var(--clay,#4A5A72);text-align:center;background:var(--paper,#FFFBF2);flex:none}

/* ---- dimmed backdrop behind the mobile sheet ---- */
#rchat-veil{position:fixed;inset:0;z-index:125;background:rgba(15,24,38,.44);opacity:0;pointer-events:none;transition:opacity .28s;-webkit-tap-highlight-color:transparent}
#rchat-veil.show{opacity:1;pointer-events:auto}
@media(min-width:641px){#rchat-veil{display:none}}

/* ---- mobile: native bottom sheet — space at top, grab handle, keyboard-glued (JS
       pins the sheet to the VISUAL viewport so the input never hides behind the keyboard) ---- */
@media(max-width:640px){
  #rchat-launch span{display:none}
  #rchat-launch{padding:13px}
  /* the sheet runs all the way to the LAYOUT-viewport bottom — i.e. UNDER the
     keyboard — and JS lifts its content with --rkb (keyboard overlap + cushion),
     so there is never a gap between the chat and the keyboard */
  #rchat:not(.page){top:auto;left:0;right:0;bottom:0;width:100%;height:calc(100dvh - 58px - env(safe-area-inset-top,0px));padding-bottom:var(--rkb,0px);border-left:0;border-radius:22px 22px 0 0;box-shadow:0 -18px 60px rgba(15,24,38,.35);transform:translateY(104%);transition:transform .32s cubic-bezier(.2,.7,.2,1);will-change:transform}
  #rchat:not(.page).open{transform:none}
  #rchat:not(.page) .rchat-head{position:relative;border-radius:22px 22px 0 0;padding-top:19px}
  #rchat:not(.page) .rchat-head::before{content:'';position:absolute;top:7px;left:50%;transform:translateX(-50%);width:44px;height:4.5px;border-radius:3px;background:rgba(30,46,68,.16)}
  /* keyboard open (.kb, set by the glue loop): drop the fine print so the
     answers, starter chips, and the valuation pill all stay on screen */
  #rchat:not(.page).kb .rchat-fine{display:none}
  #rchat:not(.page).kb .rchat-head small{display:none}
  .rchat-x{width:44px;height:44px;font-size:16px}
  .rchat-b{font-size:15px}
  .rchat-bar input{font-size:16px}   /* 16px stops iOS zoom-on-focus */
  .rchat-fine{padding-bottom:calc(8px + env(safe-area-inset-bottom,0px))}
}
.rchat-log{overscroll-behavior:contain}
/* iOS-proof background lock: overflow:hidden alone still rubber-bands — fix the body
   (JS sets body.style.top to -scrollY so the page doesn't visibly jump) */
html.rchat-lock{overflow:hidden}
html.rchat-lock body{position:fixed;left:0;right:0;width:100%;overflow:hidden;overscroll-behavior:none}

/* ---- page mode: the /rosie page renders the chat inline, full-bleed ---- */
.phead-tight{padding-bottom:22px}
/* ── /rosie page: clean, claude.ai-style chat (no boxy wrapper) ───────────
   Assistant replies read like prose; your messages sit in a soft pill; a big
   rounded input rides at the bottom of the column. The site header/footer stay. */
/* ── ONE CLASS NAME, TWO DIFFERENT ELEMENTS (2026-09-13) ─────────────────
   `.rosie-page` means two things in this codebase and they collided:

     · here it is the <section> that wraps the PUBLIC /rosie page
       (themes/rose/rosie.php), where these paddings belong;
     · in the design layer it is a flag _rosie-head.php's script puts on
       <body> to say "this page carries the Rosie design layer", which is
       what scopes the dashboard's sidebar and header colours.

   The app shell loads chat.css for Rosie's panel AND carries that body flag, so
   a padding written for a section on the public site was landing on the app's
   body: 18px above the header and 48px below the content, on every tab, in
   every engine. Measured at 1334x750 in Chromium and WebKit alike, the header
   started 18px down the viewport with nothing in the gap.

   Scoped to the element each rule was written for. `section.rosie-page` cannot
   match a <body>, and the public page is untouched. */
section.rosie-page{padding:0 0 48px}
#rchat.page{position:relative;z-index:auto;inset:auto;width:100%;max-width:720px;margin:0 auto;height:auto;min-height:auto;
  transform:none;transition:none;border:0;border-radius:0;box-shadow:none;background:transparent;overflow:visible;display:block}
/* page mode is inline content: drop the slideout's z-index:130 so the sticky site
   nav (z-index:90) stays ABOVE the conversation instead of the messages painting over it */
#rchat.page .rchat-head{display:none}                 /* the page already carries its own “Ask Rosie” header */
#rchat.page .rchat-log{flex:none;overflow:visible;padding:6px 0 4px;gap:26px}
#rchat.page .rchat-b{max-width:100%;font-size:16.5px;line-height:1.72}
#rchat.page .rchat-b.bot{background:transparent;border:0;border-radius:0;padding:0;align-self:stretch;color:var(--ink,#1E2E44)}
#rchat.page .rchat-b.bot::before{content:'Rosie';display:block;font:700 11px 'Inter',sans-serif;letter-spacing:.14em;text-transform:uppercase;color:var(--rose,#3879BD);margin-bottom:6px}
#rchat.page .rchat-b.me{background:#FCEFD3;color:var(--ink,#1E2E44);border:0;border-radius:18px;padding:12px 17px;align-self:flex-end;max-width:82%}
#rchat.page .rchat-chips{margin-top:2px}
#rchat.page .rchat-ctabar{border:0;background:transparent;padding:14px 0 0}
#rchat.page .rchat-ctabar a{max-width:340px;margin:0 auto}
#rchat.page .rchat-bar{position:sticky;bottom:16px;z-index:5;background:transparent;padding:14px 0 0;margin-top:8px;gap:10px}
#rchat.page .rchat-bar input{border:1px solid var(--line,#E9DFC8);border-radius:28px;padding:17px 20px;font-size:16.5px;background:#fff;box-shadow:0 8px 30px rgba(30,46,68,.10)}
#rchat.page .rchat-bar input:focus{outline:none;border-color:var(--rose,#3879BD);box-shadow:0 8px 30px rgba(56,121,189,.18)}
#rchat.page .rchat-send{width:52px;height:52px;font-size:17px;box-shadow:0 8px 24px rgba(56,121,189,.28)}
#rchat.page .rchat-fine{background:transparent;text-align:center;padding:12px 0 0;color:var(--clay,#4A5A72)}
@media(max-width:640px){
  section.rosie-page{padding-bottom:30px}
  #rchat.page .rchat-b{font-size:16px}
  #rchat.page .rchat-bar{bottom:calc(10px + env(safe-area-inset-bottom,0px))}
}

.rchat-ctabar a svg{width:15px;height:15px;flex:none}
/* ── claude.ai-style composer on /rosie: one 768px column; a SQUARE-ish box with
   the send button inside; starter pills with icons sit UNDER the box ── */
#rchat.page{max-width:768px;display:flex;flex-direction:column}
#rchat.page .rchat-log{order:1}
#rchat.page .rchat-bar{order:2}
#rchat.page .rchat-starters{order:3}
#rchat.page .rchat-ctabar{order:4}
#rchat.page .rchat-fine{order:5}
#rchat.page .rchat-bar{display:flex;align-items:center;gap:8px;background:#fff;border:1px solid var(--line,#E9DFC8);
  border-radius:18px;padding:9px 9px 9px 20px;box-shadow:0 10px 34px rgba(30,46,68,.10);transition:border-color .15s,box-shadow .15s}
#rchat.page .rchat-bar:focus-within{border-color:var(--rose,#3879BD);box-shadow:0 10px 34px rgba(56,121,189,.16)}
#rchat.page .rchat-bar input{border:0;background:transparent;box-shadow:none;border-radius:0;padding:13px 0;font-size:17px}
#rchat.page .rchat-bar input:focus{outline:none;border:0;box-shadow:none}
#rchat.page .rchat-send{width:44px;height:44px;border-radius:13px}
#rchat.page .rchat-send svg{width:19px;height:19px}
#rchat.page .rchat-starters{display:flex;flex-wrap:wrap;justify-content:center;gap:8px;align-self:center;max-width:100%;margin-top:14px}
#rchat.page .rchat-starters .rchat-chip{border-color:var(--line,#E9DFC8);color:var(--ink,#1E2E44);border-radius:12px;padding:9px 14px;font-weight:600;background:#fff}
#rchat.page .rchat-starters .rchat-chip svg{color:var(--rose-deep,#2A5F96)}
#rchat.page .rchat-starters .rchat-chip:hover{border-color:var(--rose,#3879BD);background:#FFF8EA;color:var(--ink,#1E2E44)}
#rchat.page .rchat-ctabar{margin-top:16px}
@media(max-width:640px){
  #rchat.page .rchat-bar input{font-size:16px}
  #rchat.page .rchat-starters .rchat-chip{padding:8px 12px}
}

/* ── /rosie conversation mode: after the first message the composer docks to the
   bottom of the screen as a STICKY bar — SAME on mobile and desktop. Answers
   stream in above it and JS follows the newest line down to the input; the bar
   comes to rest just above the footer (a sliver of footer shows), and long
   answers can be scrolled up to read. claude.ai-style. ── */
#rchat.page.live{padding-bottom:28px}
#rchat.page.live .rchat-bar{position:sticky;left:auto;right:auto;transform:none;bottom:20px;z-index:40;
  width:auto;margin:22px 0 0;background:#fff;
  /* soft drop shadow + a subtle paper-white halo hugging the bar's rounded shape */
  box-shadow:0 12px 36px rgba(30,46,68,.15),0 0 22px 10px rgba(255,251,242,.65);animation:none}
#rchat.page.live .rchat-starters,#rchat.page.live .rchat-ctabar{display:none}
#rchat.page.live .rchat-fine{display:none}   /* disclaimer already shown pre-conversation; keeps the footer clear */
@media(max-width:640px){
  #rchat.page.live{padding-bottom:24px}
  #rchat.page.live .rchat-bar{bottom:calc(12px + env(safe-area-inset-bottom,0px))}
  /* opaque header on the Rosie page so answers scroll cleanly UNDER it instead
     of bleeding through the translucent, blurred site nav */
  body:has(.rosie-page) .nav{background:var(--paper);backdrop-filter:none;-webkit-backdrop-filter:none}
  /* soft paper fade hanging below the header: bubbles dissolve into it as they
     scroll up, instead of hitting a hard edge under the bar */
  body:has(.rosie-page) .nav::after{content:'';position:absolute;top:100%;left:0;right:0;height:56px;
    background:linear-gradient(var(--paper),rgba(255,251,242,0));pointer-events:none}
  /* breathing room above the conversation, and keep the newest message clear of the header */
  #rchat.page .rchat-log{padding-top:22px;padding-bottom:6px;scroll-margin-top:88px}
}

/* ── /rosie hero: same 768px column as the chat, soft card, no section border ── */
.rosie-hero{max-width:768px;margin:0 auto;padding:clamp(26px,4vw,44px) 16px 6px}
.rosie-hero-card{background:#fff;border:1px solid var(--line,#E9DFC8);border-radius:22px;
  padding:clamp(26px,4vw,40px) clamp(20px,4vw,44px);text-align:center;
  box-shadow:0 14px 44px rgba(30,46,68,.07)}
.rosie-hero-card .eyebrow{margin-bottom:10px}
.rosie-hero-card h1{font-family:'Fraunces',Georgia,serif;font-weight:600;font-size:clamp(28px,4.2vw,42px);line-height:1.12;color:var(--ink,#1E2E44)}
.rosie-hero-card h1 em{font-style:italic;color:var(--rose,#3879BD)}
.rosie-hero-card p:not(.eyebrow){margin:14px auto 0;max-width:56ch;font-size:15px;line-height:1.65;color:var(--slate,#4A5A72)}
section.rosie-page{padding-top:18px}
section.rosie-page .wrap{max-width:800px}
@media(max-width:640px){.rosie-hero{padding-left:12px;padding-right:12px}}

/* ── teaser cards inside a Rosie bubble: one design for every result kind
      (listings, sold, articles, guides, market pages). Image left, text right,
      site palette, no underlines anywhere. The bubble that carries them goes
      transparent so the cards sit directly on the page/panel. ── */
.rchat-b.cards{background:transparent;border:0;border-radius:0;padding:0;max-width:100%;align-self:stretch}
.rchat-b.cards.typing::after{display:none}
.rchat-cards{display:grid;grid-template-columns:1fr;gap:9px}
.rchat-card{display:flex;align-items:center;gap:13px;background:#fff;border:1px solid var(--line,#E9DFC8);border-radius:14px;padding:10px;text-decoration:none !important;color:var(--ink,#1E2E44);transition:border-color .18s,box-shadow .18s,transform .18s}
.rchat-card:hover{border-color:var(--rose-soft,#EEC8CB);box-shadow:0 10px 28px rgba(30,46,68,.09);transform:translateY(-1px)}
.rchat-card:active{background:#FFFBF2}
.rchat-card img{width:88px;height:66px;object-fit:cover;border-radius:9px;flex:none}
.rchat-card-ph{width:88px;height:66px;border-radius:9px;flex:none;background:var(--blush,#FFF3D9);display:flex;align-items:center;justify-content:center}
.rchat-card-ph svg{width:22px;height:22px;color:var(--rose,#3879BD)}
.rchat-card-tx{min-width:0}
.rchat-card-kind{display:block;font:700 9.5px 'Inter',sans-serif;font-style:normal;letter-spacing:.12em;text-transform:uppercase;color:var(--rose,#3879BD);margin-bottom:3px}
.rchat-card b{font-family:'Fraunces',Georgia,serif;font-weight:600;font-size:15px;line-height:1.3;display:block;color:var(--ink,#1E2E44);overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}
.rchat-card-meta{display:block;font:12.5px/1.45 'Inter',sans-serif;color:var(--slate,#4A5A72);margin-top:3px;overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}
/* the roomy /rosie page lays teasers two-up; the 400px widget stays single file */
@media(min-width:641px){
  #rchat.page .rchat-cards{grid-template-columns:repeat(2,minmax(0,1fr))}
}

/* the builder card: who made this, with a face and a door. Fades in after
   the answer; links are finger-sized; photo sits in a circle. */
.rchat-builder{display:flex;gap:14px;align-items:flex-start;background:#fff;border:1px solid var(--line,#E9DFC8);border-radius:16px;padding:14px;max-width:88%;animation:rchatBldIn .5s ease both}
@keyframes rchatBldIn{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
@media(prefers-reduced-motion:reduce){.rchat-builder{animation-duration:.01ms}}
.rchat-builder img{width:62px;height:62px;border-radius:50%;object-fit:cover;flex:none}
.rchat-bld-txt b{display:block;font:600 15px 'Inter',sans-serif}
.rchat-bld-txt span{display:block;font-size:12.5px;color:var(--rose,#3879BD);margin-top:2px}
.rchat-bld-txt small{display:block;font-size:12px;color:var(--slate,#4A5A72);margin-top:5px;line-height:1.45}
.rchat-bld-links{display:flex;flex-wrap:wrap;gap:8px;margin-top:11px}
.rchat-bld-links a{display:inline-flex;align-items:center;min-height:42px;padding:8px 15px;border-radius:99px;border:1px solid var(--line,#E9DFC8);font:600 12.5px 'Inter',sans-serif;color:var(--ink,#1E2E44);text-decoration:none !important}
.rchat-bld-links a:first-child{background:var(--ink,#1E2E44);color:#fff;border-color:var(--ink,#1E2E44)}

/* ══ the feed listing inside the chat ════════════════════════════════════
   Cards for RMLS listings are rendered by PHP (modules/mls/intent.php) and
   dropped in whole, because the courtesy attribution and the RMLS mark on
   them are licence terms, not decoration. These styles only dress markup
   they cannot change. ── */
.rchat-lwrap{background:#fff;border:1px solid var(--line,#E9DFC8);border-radius:14px;overflow:hidden}
.rchat-lcard{display:flex;align-items:stretch;gap:0;text-decoration:none !important;color:var(--ink,#1E2E44);transition:background .18s}
.rchat-lcard:hover{background:#FFFCF5}
.rlc-photo{position:relative;width:112px;flex:none;background:var(--blush,#FFF3D9);display:flex;align-items:center;justify-content:center}
.rlc-photo img{width:100%;height:100%;min-height:104px;object-fit:cover;display:block}
.rlc-ph svg{width:26px;height:26px;color:var(--rose,#3879BD)}
.rlc-status{position:absolute;left:6px;top:6px;background:rgba(255,255,255,.94);color:var(--ink,#1E2E44);border-radius:99px;padding:3px 8px;font:700 9px 'Inter',sans-serif;letter-spacing:.08em;text-transform:uppercase}
.rlc-tx{min-width:0;padding:11px 13px;display:flex;flex-direction:column;justify-content:center;gap:2px}
.rlc-price{font-family:'Fraunces',Georgia,serif;font-weight:600;font-size:16px;line-height:1.25;color:var(--ink,#1E2E44)}
.rlc-addr{font:13px/1.4 'Inter',sans-serif;color:var(--ink,#1E2E44);overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}
.rlc-specs{font:12.5px/1.45 'Inter',sans-serif;color:var(--slate,#4A5A72)}
/* the attribution line: RMLS asks for it on every card, never truncated */
.rlc-courtesy{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin-top:4px;font:11.5px/1.4 'Inter',sans-serif;color:var(--clay,#4A5A72)}
.rlc-mark{height:14px;width:auto;flex:none}
/* the broker's own words, verbatim, closed until asked for */
.rchat-lremarks{border-top:1px solid var(--line,#E9DFC8)}
.rchat-lremarks summary{cursor:pointer;padding:9px 13px;font:600 12px 'Inter',sans-serif;color:var(--rose-deep,#2A5F96);list-style:none}
.rchat-lremarks summary::-webkit-details-marker{display:none}
.rchat-lremarks summary::after{content:' +';font-weight:700}
.rchat-lremarks[open] summary::after{content:' –'}
.rchat-lremarks p{margin:0;padding:0 13px 12px;font:13px/1.6 'Inter',sans-serif;color:var(--slate,#4A5A72)}
.rchat-more{display:inline-block;font:600 12.5px 'Inter',sans-serif;color:var(--rose-deep,#2A5F96);text-decoration:none}

/* the two listing-page chips, parked above the composer for the whole visit */
.rchat-lbar{flex:none;display:flex;flex-wrap:wrap;gap:7px;padding:9px 14px 0;background:var(--paper,#FFFBF2)}
.rchat-lchip{flex:1 1 45%;min-height:44px;border:1px solid var(--rose-soft,#EEC8CB);background:#fff;color:var(--rose-deep,#2A5F96);border-radius:99px;padding:10px 12px;font:600 12.5px 'Inter',sans-serif;cursor:pointer;transition:background .15s,color .15s}
.rchat-lchip:hover{background:var(--rose,#3879BD);color:#fff;border-color:var(--rose,#3879BD)}
#rchat.page .rchat-lbar{order:3;background:transparent;padding:14px 0 0;justify-content:center}
#rchat.page .rchat-lbar .rchat-lchip{flex:0 1 auto}
#rchat.page.live .rchat-lbar{padding-top:10px}

/* the showing request: the one thing in this widget that reaches a human */
.rchat-lead{background:#fff;border:1px solid var(--rose-soft,#EEC8CB);border-radius:16px;padding:14px;display:flex;flex-direction:column;gap:8px;animation:rchatIn .26s ease both}
.rchat-lead b{font-family:'Fraunces',Georgia,serif;font-weight:600;font-size:16px}
.rchat-lead small{font-size:12px;color:var(--slate,#4A5A72);line-height:1.45;margin-top:-4px}
.rchat-lead .rl-ref{font:600 12.5px 'Inter',sans-serif;color:var(--rose-deep,#2A5F96);background:var(--blush,#FFF3D9);border-radius:8px;padding:7px 10px}
.rchat-lead .rl-f{width:100%;min-height:44px;border:1px solid var(--line,#E9DFC8);border-radius:11px;padding:11px 13px;font:15px 'Inter',sans-serif;background:#fff;box-sizing:border-box}
.rchat-lead textarea.rl-f{min-height:56px;resize:vertical;line-height:1.5}
.rchat-lead .rl-f:focus{outline:2px solid var(--rose,#3879BD);outline-offset:-1px}
.rchat-lead .rl-decoy{position:absolute;left:-9999px;width:1px;height:1px;opacity:0;pointer-events:none}
/* the bot check: Turnstile's own frame is 300px wide at its narrowest, and the
   panel is 100vw on a phone, so the box scrolls rather than pushing the panel
   sideways at 320px. Nothing shows until the widget renders. */
.rchat-lead .rl-ts{min-height:0;max-width:100%;overflow-x:auto}
.rchat-lead .rl-ts:empty{display:none}
.rchat-lead .rl-ts iframe{max-width:100%}
.rchat-lead .rl-send{min-height:46px;border:0;border-radius:99px;background:var(--rose,#3879BD);color:#fff;font:600 14px 'Inter',sans-serif;cursor:pointer;transition:background .15s}
.rchat-lead .rl-send:hover{background:var(--rose-deep,#2A5F96)}
.rchat-lead .rl-send:disabled{opacity:.6;cursor:default}
.rchat-lead .rl-err:empty{display:none}
.rchat-lead .rl-err{font:12.5px 'Inter',sans-serif;color:#B3261E}
.rchat-lead.sent{border-color:var(--line,#E9DFC8);background:var(--blush,#FFF3D9)}
@media(min-width:641px){
  #rchat.page .rchat-lwrap{max-width:520px}
}

/* the page's own heart, cloned into the chip row (see chat.js): it keeps the
   accounts layer's markup, so only the shape is ours */
.rchat-lbar .rchat-lsave{flex:1 1 45%;display:flex}
.rchat-lbar .rchat-lsave .lsave{flex:1;display:inline-flex;align-items:center;justify-content:center;gap:7px;min-height:44px;border:1px solid var(--rose-soft,#EEC8CB);background:#fff;color:var(--rose-deep,#2A5F96);border-radius:99px;padding:10px 12px;font:600 12.5px 'Inter',sans-serif;cursor:pointer}
.rchat-lbar .rchat-lsave .lsave svg{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:1.8}
.rchat-lbar .rchat-lsave .lsave.on svg{fill:currentColor}
.rchat-lbar .rchat-lsave .lsave:hover{background:var(--rose,#3879BD);color:#fff;border-color:var(--rose,#3879BD)}
/* the lettered stand-in until RMLS supplies the logo file (same shape the
   detail page uses); it disappears the moment the asset lands */
.rlc-mark-t{font:600 9.5px/1 'Inter',sans-serif;letter-spacing:.08em;border:1px solid currentColor;border-radius:4px;padding:2px 4px;flex:none}
