/* Venice chat-first UI study, 2026-10-25. Concept only. */
.sandy-concept{--sandy-section-gap:28px;--chat-surface:#101e2c;--chat-bubble:#192a39;--chat-visitor:#253a50;--chat-border:#637787;--chat-shadow:0 16px 60px #0002;background:var(--bg);color:var(--text)}
:root[data-theme=light] .sandy-concept{--chat-surface:#fff;--chat-bubble:#f5f3ed;--chat-visitor:#e9eef4;--chat-border:#7d8d9a;--chat-shadow:0 16px 60px #172b4209}
.sandy-concept,.sandy-concept :is(h1,h2,h3,h4,p,button,input,textarea,label,a,span,strong){font-family:Inter,system-ui,sans-serif}
.sandy-concept main{width:min(1040px,calc(100% - 64px));margin:24px auto 0;padding-bottom:28px}
.sandy-concept main>section+section{margin-top:var(--sandy-section-gap)}
.sandy-concept [hidden]{display:none!important}
.sandy-concept :is(button,a,textarea,input):focus-visible{outline:3px solid var(--accent);outline-offset:3px}
.sandy-concept .sandy-hero{position:relative;display:flex;flex-direction:column;width:100%;height:min(820px,calc(100svh - 48px));min-height:700px;margin:0;overflow:hidden;isolation:isolate;border:1px solid var(--line);border-radius:24px;background:var(--chat-surface);box-shadow:var(--chat-shadow);scroll-margin-top:16px}
.sandy-concept .sandy-area-header{position:relative;display:grid;place-items:center;flex:none;height:156px;padding:24px 80px 46px;isolation:isolate;transition:height .36s cubic-bezier(.2,.8,.2,1),padding .36s}
.sandy-concept .sandy-area-photo{position:absolute;inset:0;z-index:-2;width:100%;height:100%;object-fit:cover;object-position:50% 12%}
.sandy-concept .sandy-area-header:after{content:"";position:absolute;inset:0;z-index:-1;background:linear-gradient(180deg,#0b1b2a66,#0b1b2a96)}
.sandy-concept .sandy-area-header h1{margin:0;text-align:center;font-size:36px;line-height:1.15;letter-spacing:-.04em;font-weight:700;color:#fff;text-shadow:0 2px 14px #06142145}
.sandy-concept .sandy-area-header .theme-toggle{position:absolute;right:18px;top:18px;width:38px;min-width:38px;height:38px;min-height:38px;padding:8px;background:#142b40d9;border:1px solid #ffffff80;color:#fff;backdrop-filter:blur(8px)}
.sandy-concept .sandy-area-header .theme-toggle span{display:none}
.sandy-concept .sandy-chat{position:relative;display:flex;flex-direction:column;flex:1;min-height:0;padding:0;border:0;background:var(--chat-surface);border-radius:0;overflow:visible}
.sandy-concept .sandy-welcome{flex:none;display:flex;flex-direction:column;align-items:center;text-align:center;margin-top:-62px;position:relative;z-index:1;padding:0 24px 18px}
.sandy-concept .sandy-welcome-portrait{display:block;width:136px;height:136px;border:6px solid var(--chat-surface);border-radius:50%;object-fit:cover;object-position:50% 18%;box-shadow:0 10px 28px #0b1b2a18}
.sandy-concept .sandy-welcome h2{font-size:29px;line-height:1.15;letter-spacing:-.035em;margin:13px 0 10px}
.sandy-concept .sandy-salutation{display:flex;align-items:center;justify-content:center;gap:5px;flex-wrap:wrap;margin:0;font-size:13px;color:var(--muted)}
.sandy-concept .sandy-salutation img{width:142px;height:auto}
.sandy-concept .sandy-chat-header{display:none;flex:none;align-items:center;gap:10px;padding:12px 28px;border-bottom:1px solid var(--line)}
.sandy-concept .sandy-header-portrait{width:36px;height:36px;object-fit:cover;object-position:center 16%;border-radius:50%}
.sandy-concept .sandy-chat-heading{flex:1;min-width:0}
.sandy-concept .sandy-chat-header h2{font-size:15px;line-height:1.2;letter-spacing:-.015em;margin:0 0 4px}
.sandy-concept .sandy-chat-header p{margin:0;font-size:11px;line-height:1.5;color:var(--muted)}
.sandy-concept .sandy-close{display:grid;place-items:center;width:44px;height:44px;border:0;background:transparent;color:var(--muted);border-radius:50%;cursor:pointer}
.sandy-concept .sandy-close:hover{background:var(--chat-bubble)}
.sandy-concept .sandy-close svg{width:20px;height:20px}
.sandy-concept .sandy-chat-messages{flex:1;min-height:0;overflow-x:hidden;overflow-y:auto;overscroll-behavior:contain;padding:2px 32px 20px;scrollbar-width:thin;scrollbar-color:var(--chat-border) transparent;overflow-wrap:anywhere}
.sandy-concept .sandy-chat-message{position:relative;width:fit-content;max-width:min(84%,660px);margin:0 0 18px 40px;padding:16px 19px;background:var(--chat-bubble);border:0;border-radius:20px 20px 20px 5px;animation:sandy-message-in .24s ease-out}
.sandy-concept .sandy-chat-message>strong{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}
.sandy-concept .sandy-message-avatar{position:absolute;left:-40px;bottom:0;width:29px;height:29px;border-radius:50%;object-fit:cover;object-position:center 16%}
.sandy-concept .sandy-chat-message p{font-size:15px;line-height:1.65;letter-spacing:-.009em;margin:0}
.sandy-concept .sandy-chat-message p+p,.sandy-concept .sandy-chat-message ul+p{margin-top:12px}
.sandy-concept .sandy-chat-message ul{font-size:15px;line-height:1.6;margin:12px 0;padding-left:19px}
.sandy-concept .sandy-chat-message li+li{margin-top:8px}
.sandy-concept .sandy-chat-message--visitor{background:var(--chat-visitor);margin-left:auto;margin-right:0;max-width:75%;border-radius:20px 20px 5px 20px}
.sandy-concept .sandy-chat-message--grouped{margin-top:-9px;border-top-left-radius:8px}
.sandy-concept .sandy-chat-message--grouped.sandy-chat-message--visitor{border-top-right-radius:8px;border-top-left-radius:20px}
.sandy-concept .sandy-hero[data-ui-started=false] .sandy-chat-message{margin:0 auto;max-width:620px;padding:18px 24px;border-radius:18px;text-align:left}
.sandy-concept .sandy-hero[data-ui-started=false] .sandy-message-avatar{display:none}
.sandy-concept .sandy-chat-composer{flex:none;width:100%;max-width:716px;margin:0 auto;padding:12px 28px 14px;background:var(--chat-surface)}
.sandy-concept .sandy-composer-label{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}
.sandy-concept .sandy-topic-tiles{display:grid;grid-template-columns:1fr 1fr;gap:9px;margin-bottom:16px}
.sandy-concept .sandy-topic-tiles button{display:flex;align-items:center;gap:10px;min-height:48px;padding:11px 17px;background:var(--chat-bubble);border:1px solid var(--line);border-radius:13px;color:var(--text);font:600 14px/1.2 Inter,system-ui,sans-serif;white-space:nowrap;text-align:left;cursor:pointer;transition:background .18s,border-color .18s,transform .18s}
.sandy-concept .sandy-topic-tiles svg{width:21px;height:21px;flex:none;color:var(--accent)}
@media(hover:hover){.sandy-concept .sandy-topic-tiles button:hover{border-color:var(--chat-border);background:var(--chat-visitor);transform:translateY(-1px)}}
/* Pills and message box 20% shorter (Matthew, 2026-10-25): pills 35, box 45, send 35. */
.sandy-concept .sandy-compose-row{display:flex;align-items:center;gap:10px;padding:4px;border:1px solid var(--chat-border);border-radius:28px;background:var(--chat-surface);box-shadow:0 3px 12px #0b1b2a05}
.sandy-concept .sandy-compose-row:focus-within{border-color:var(--text);box-shadow:0 0 0 3px color-mix(in srgb,var(--text) 8%,transparent)}
.sandy-concept .sandy-compose-row textarea{display:block;flex:1;min-width:0;width:100%;height:35px;min-height:35px;max-height:88px;resize:none;border:0;padding:5px 10px 6px;background:transparent;color:var(--text);font:400 16px/1.5 Inter,system-ui,sans-serif;border-radius:22px}
.sandy-concept .sandy-compose-row textarea:focus-visible{outline:0}
.sandy-concept .sandy-compose-row textarea::placeholder{color:var(--muted);opacity:1}
.sandy-concept .sandy-send{display:grid;place-items:center;flex:none;width:35px;height:35px;border-radius:50%;border:0;background:#f15b40;color:#faf7f0;cursor:pointer;transition:opacity .2s,transform .2s}
.sandy-concept .sandy-send:disabled{opacity:.4;cursor:default}
.sandy-concept .sandy-send:not(:disabled):hover{transform:translateY(-1px)}
.sandy-concept .sandy-send svg{width:18px;height:18px}
.sandy-concept .sandy-send .sandy-send-arrow{display:none}
.sandy-concept .sandy-send[data-has-draft=true] .sandy-send-wave{display:none}
.sandy-concept .sandy-send[data-has-draft=true] .sandy-send-arrow{display:block}
.sandy-concept .sandy-preview-status{font-size:10px;line-height:1.5;margin:6px 0 0;color:var(--muted);text-align:center}
.sandy-concept .sandy-notes-timing{font-size:11px;line-height:1.5;margin:8px 0 0;color:var(--muted);text-align:center}
.sandy-concept .sandy-hero[data-ui-started=true] .sandy-area-header{height:78px;padding:18px 76px}
.sandy-concept .sandy-hero[data-ui-started=true] .sandy-area-header h1{font-size:24px}
.sandy-concept .sandy-hero[data-ui-started=true] .sandy-welcome,.sandy-concept .sandy-hero[data-ui-started=true] .sandy-topic-tiles{display:none}
.sandy-concept .sandy-hero[data-ui-started=true] .sandy-chat-header{display:flex}
.sandy-concept .sandy-hero[data-ui-started=true] .sandy-chat-messages{padding-top:24px}
.sandy-concept .sandy-chat-status:empty{display:none}
.sandy-concept .sandy-chat-status{flex:none;margin:0;padding:0 28px 12px;font-size:13px;line-height:1.6;color:var(--muted)}
.sandy-concept .sandy-chat[data-state=typing]>.sandy-chat-status,.sandy-concept .sandy-chat[data-state=connecting]>.sandy-chat-status,.sandy-concept .sandy-chat[data-state=streaming]>.sandy-chat-status{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}
.sandy-concept .sandy-typing{display:none;flex:none;align-items:flex-end;gap:10px;padding:0 32px 12px}
.sandy-concept .sandy-chat:is([data-state=typing],[data-state=connecting]) .sandy-typing{display:flex}
.sandy-concept .sandy-typing img{width:29px;height:29px;border-radius:50%;object-fit:cover;object-position:center 16%}
.sandy-concept .sandy-typing>span{display:flex;align-items:center;gap:4px;padding:15px 17px;border-radius:18px 18px 18px 5px;background:var(--chat-bubble)}
.sandy-concept .sandy-typing i{width:5px;height:5px;background:var(--muted);border-radius:50%;animation:sandy-dot 1.2s infinite ease-in-out}
.sandy-concept .sandy-typing i:nth-child(2){animation-delay:.15s}.sandy-concept .sandy-typing i:nth-child(3){animation-delay:.3s}
.sandy-concept .sandy-chat-recovery,.sandy-concept .sandy-chat-ended{flex:none;display:flex;gap:12px;flex-wrap:wrap;padding:0 28px 20px}
.sandy-concept .sandy-chat-recovery .pill,.sandy-concept .sandy-chat-ended .pill{min-height:44px;font-size:13px}
.sandy-concept .sandy-chat[data-state=busy] .sandy-chat-status{margin:auto 28px 20px;padding:24px;border:1px solid var(--line);border-radius:16px;background:var(--chat-bubble);font-size:16px;color:var(--text)}
.sandy-concept .sandy-chat[data-state=busy] .sandy-chat-recovery{margin-bottom:auto;justify-content:center}
.sandy-concept .sandy-chat[data-state=dropped] .sandy-chat-status,.sandy-concept .sandy-chat[data-state=ended] .sandy-chat-status{margin:0 28px 16px;padding:14px 18px;border-radius:14px;background:var(--chat-bubble);color:var(--text)}
.sandy-concept .assistant-message-interrupted{display:block;margin-top:8px;color:var(--muted);font-size:12px;line-height:1.5}
.sandy-concept .sandy-text-button{border:0;padding:3px 0;background:none;color:var(--accent);font:500 13px/1.5 Inter,system-ui,sans-serif;text-decoration:underline;text-underline-offset:4px;cursor:pointer;text-align:left;min-height:44px}
.sandy-concept .sandy-suggestions-wrap{position:relative;min-width:0}
.sandy-concept .sandy-suggestions{display:flex;flex-wrap:nowrap;gap:8px;overflow-x:auto;max-width:100%;margin:0 0 12px;padding:4px;scroll-snap-type:x mandatory;overscroll-behavior-x:contain;scrollbar-width:none}
.sandy-concept .sandy-suggestions::-webkit-scrollbar{display:none}
.sandy-concept .sandy-suggestions button{flex:0 0 auto;min-height:35px;max-width:calc(100% - 24px);padding:6px 15px;scroll-snap-align:start;border:1px solid var(--chat-border);border-radius:999px;background:var(--chat-surface);color:var(--text);font:500 13px/1.4 Inter,system-ui,sans-serif;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;cursor:pointer}
/* No stuck highlight on phones (Matthew, 2026-10-25: "some of the pills are highlighting"): hover color only where there
   is a real mouse, no grey tap flash, and no focus ring after a tap (keyboard users still get theirs). */
@media(hover:hover){.sandy-concept .sandy-suggestions button:hover{background:var(--chat-bubble)}}
.sandy-concept .sandy-suggestions button,.sandy-concept [data-sandy-question]{-webkit-tap-highlight-color:transparent}
.sandy-concept .sandy-suggestions button:focus:not(:focus-visible),.sandy-concept [data-sandy-question]:focus:not(:focus-visible){outline:none;box-shadow:none}
.sandy-concept .sandy-suggestions button:disabled,.sandy-concept .sandy-mobile-actions button:disabled{opacity:.45;cursor:default}
.sandy-concept .sandy-suggestions-wrap[data-more=true]:after{content:"";position:absolute;right:0;top:0;bottom:12px;width:24px;pointer-events:none;background:linear-gradient(90deg,transparent,var(--chat-surface))}
.sandy-concept .sandy-mobile-actions{display:none}
.sandy-concept .sandy-guide-heading{padding:26px 0 6px;scroll-margin-top:20px}
.sandy-concept .sandy-guide-heading .eyebrow{font-size:11px;color:var(--accent);margin:0 0 8px}
.sandy-concept .sandy-guide-heading h2{font-size:36px;line-height:1.15;letter-spacing:-.04em;margin:0 0 10px}
.sandy-concept .sandy-guide-heading>p:last-child{font-size:15px;color:var(--muted);margin:0}
.sandy-concept main>.site-header{position:static;width:100%;padding:20px 0 14px;margin-top:36px;min-height:60px;background:transparent;border:0;border-bottom:1px solid var(--line)}
.sandy-concept main>.site-header .brand img{width:180px}
/* Back to the chat (Matthew, 2026-10-25: the floating bar was "a bit obnoxious"): Sandy's photo in a circle, lower right.
   The label stays for screen readers; without a portrait the arrow shows instead. */
.sandy-concept .sandy-ask-bar{position:fixed;z-index:20;right:calc(16px + env(safe-area-inset-right,0px));bottom:calc(20px + env(safe-area-inset-bottom,0px));display:flex;align-items:center;justify-content:center;width:64px;height:64px;padding:0;background:#172b42;color:#fff;border:3px solid var(--text);border-radius:50%;overflow:hidden;box-shadow:0 10px 30px rgba(5,19,34,.5),0 3px 8px rgba(5,19,34,.35);cursor:pointer} /* ring: navy in light, white in dark */
.sandy-concept .sandy-ask-bar[hidden]{display:none}
.sandy-concept .sandy-ask-bar img{width:100%;height:100%;border-radius:50%;object-fit:cover;object-position:center 16%}
.sandy-concept .sandy-ask-bar span{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
.sandy-concept .sandy-ask-bar svg{display:none;width:28px;height:28px}
.sandy-concept .sandy-ask-bar:has(img[hidden]) svg{display:block}
.sandy-concept .sandy-ask-bar:focus-visible{outline:3px solid var(--accent);outline-offset:3px}
.sandy-concept .concept-note{display:flex;align-items:center;gap:18px;flex-wrap:wrap;margin-top:20px}
.sandy-concept .sandy-demo-tools{font-size:12px}
.sandy-concept .sandy-demo-tools summary{cursor:pointer;text-decoration:underline;min-height:32px}
.sandy-concept .sandy-demo-tools select{font:inherit;padding:8px;border:1px solid var(--chat-border);border-radius:8px;background:var(--chat-surface);color:var(--text)}
.sandy-concept .sandy-number{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-top:8px}
.sandy-concept .sandy-copy-status{font-size:12px;color:var(--muted)}
.sandy-concept .sandy-reminder-call{display:inline-flex;align-items:center;justify-content:center;padding:12px 18px;border-radius:12px;min-height:52px;text-decoration:none}
.sandy-concept .sandy-reminder-call .sandy-action-detail{font-size:23px;font-weight:700;font-variant-numeric:tabular-nums}
.sandy-concept .inquiry-form .pill--outline{background:transparent}
@keyframes sandy-dot{0%,60%,100%{transform:translateY(0);opacity:.45}30%{transform:translateY(-4px);opacity:1}}
@keyframes sandy-message-in{from{opacity:0;transform:translateY(7px)}to{opacity:1;transform:translateY(0)}}
@media(max-width:760px){
 .sandy-concept main{width:100%;margin:0;padding-bottom:20px}
 .sandy-concept .sandy-hero{height:100svh;min-height:650px;border:0;border-radius:0;box-shadow:none;scroll-margin:0}
 .sandy-concept .sandy-area-header{height:132px;padding:calc(24px + env(safe-area-inset-top,0px)) 36px 32px}
 .sandy-concept .sandy-area-header h1{font-size:27px;letter-spacing:-.035em;white-space:nowrap}
 .sandy-concept .sandy-area-header .theme-toggle{top:8px;right:8px;width:32px;min-width:32px;height:32px;min-height:32px;padding:7px}
 .sandy-concept .sandy-welcome{margin-top:-48px;padding-bottom:18px}
 .sandy-concept .sandy-welcome-portrait{width:108px;height:108px;border-width:5px}
 .sandy-concept .sandy-welcome h2{font-size:25px;margin:9px 0 9px}
 .sandy-concept .sandy-salutation{gap:4px;font-size:11px}
 .sandy-concept .sandy-salutation img{width:130px}
 .sandy-concept .sandy-chat-messages{padding:0 16px 16px}
 .sandy-concept .sandy-hero[data-ui-started=false] .sandy-chat-message{font-size:14px;padding:16px 18px;max-width:100%;border-radius:18px}
 .sandy-concept .sandy-chat-message{margin-left:33px;max-width:calc(100% - 38px);padding:13px 15px;border-radius:18px 18px 18px 5px}
 .sandy-concept .sandy-chat-message p,.sandy-concept .sandy-chat-message ul{font-size:14px;line-height:1.6}
 .sandy-concept .sandy-message-avatar{left:-33px;width:26px;height:26px}
 .sandy-concept .sandy-chat-message--visitor{margin-left:auto;max-width:84%;border-radius:18px 18px 5px 18px}
 .sandy-concept .sandy-chat-composer{padding:8px 16px 14px} /* room under the message box (Matthew, 2026-10-25) */
 .sandy-concept .sandy-topic-tiles{gap:8px;margin-bottom:13px}
 .sandy-concept .sandy-topic-tiles button{padding:11px 12px;font-size:13px;min-height:46px;gap:9px}
 .sandy-concept .sandy-topic-tiles svg{width:20px;height:20px}
 .sandy-concept .sandy-compose-row{gap:4px;padding:4px}
 .sandy-concept .sandy-compose-row textarea{padding-left:12px}
 .sandy-concept .sandy-preview-status{font-size:9px}
 .sandy-concept .sandy-hero[data-ui-started=true] .sandy-area-header{height:76px;padding:calc(12px + env(safe-area-inset-top,0px)) 42px 12px}
 .sandy-concept .sandy-hero[data-ui-started=true] .sandy-area-header h1{font-size:21px}
 .sandy-concept .sandy-chat-header{padding:8px 16px;gap:8px;flex-wrap:wrap}
 .sandy-concept .sandy-chat-heading{flex:1}
 .sandy-concept .sandy-chat-header h2{font-size:14px}
 .sandy-concept .sandy-chat-header p{font-size:10px}
 .sandy-concept .sandy-header-portrait{width:32px;height:32px}
 .sandy-concept .sandy-close{width:36px;height:36px}
 .sandy-concept .sandy-mobile-actions{display:flex;flex-basis:100%;gap:8px;align-items:center;white-space:nowrap}
 .sandy-concept .sandy-mobile-actions .sandy-text-button{font-size:11px;min-height:36px}
 .sandy-concept .sandy-mobile-actions>span{color:var(--muted);font-size:11px}
 .sandy-concept .sandy-hero[data-ui-started=true] .sandy-chat-messages{padding-top:18px}
 .sandy-concept .sandy-suggestions button{font-size:12px;padding:6px 13px}
 .sandy-concept .sandy-typing{padding-inline:16px;gap:8px}
 .sandy-concept .sandy-typing img{width:26px;height:26px}
 .sandy-concept .sandy-chat-status{padding-inline:16px}
 .sandy-concept .sandy-chat[data-state=busy] .sandy-chat-status{margin-inline:16px;font-size:15px}
 .sandy-concept .sandy-chat[data-state=dropped] .sandy-chat-status,.sandy-concept .sandy-chat[data-state=ended] .sandy-chat-status{margin-inline:16px;font-size:12px}
 .sandy-concept .sandy-chat-recovery,.sandy-concept .sandy-chat-ended{padding-inline:16px}
 .sandy-concept .sandy-guide-heading,.sandy-concept main>.site-header{width:calc(100% - 40px);margin-inline:auto}
 .sandy-concept .sandy-guide-heading{padding-block:24px 6px}
 .sandy-concept .sandy-guide-heading h2{font-size:30px}
 .sandy-concept .sandy-guide-heading>p:last-child{font-size:14px}
 .sandy-concept .sandy-inquiry-layout{grid-template-columns:1fr;padding:20px;gap:24px}
 .sandy-concept .sandy-form-pane{padding:18px}
 .sandy-concept .concept-note{padding-bottom:100px}
 .sandy-concept .sandy-hero[data-keyboard=true]{height:var(--sandy-chat-height);min-height:0;position:fixed;left:0;right:0;top:var(--sandy-vv-top,0px);z-index:40;box-shadow:0 0 0 100vmax var(--chat-surface)} /* pinned to the visible area while typing; the page around it is covered in the chat's own color */
 .sandy-concept .sandy-hero[data-keyboard=true] .sandy-area-header{height:48px;padding:8px 40px}
 .sandy-concept .sandy-hero[data-keyboard=true] .sandy-area-header h1{font-size:18px}
 .sandy-concept .sandy-hero[data-keyboard=true] .sandy-chat-header{padding-block:4px}
 .sandy-concept .sandy-hero[data-keyboard=true] .sandy-chat-header p,.sandy-concept .sandy-hero[data-keyboard=true] .sandy-preview-status{display:none}
}
@media(max-width:360px){
 .sandy-concept .sandy-area-header h1{font-size:24px}
 .sandy-concept .sandy-hero[data-ui-started=true] .sandy-area-header h1{font-size:18px}
 .sandy-concept .sandy-topic-tiles button{font-size:12px;padding-inline:10px;gap:7px}
 .sandy-concept .sandy-salutation{gap:4px;font-size:10px}
 .sandy-concept .sandy-salutation img{width:120px}
 .sandy-concept .sandy-reminder-call .sandy-action-detail{font-size:22px}
}
@media(max-height:740px) and (max-width:760px){
 .sandy-concept .sandy-area-header{height:110px}
 .sandy-concept .sandy-welcome-portrait{width:92px;height:92px}
 .sandy-concept .sandy-welcome{margin-top:-38px;padding-bottom:12px}
 .sandy-concept .sandy-welcome h2{font-size:23px;margin-block:7px}
 .sandy-concept .sandy-hero[data-ui-started=false] .sandy-chat-message{padding:13px 16px}
 .sandy-concept .sandy-chat-message p{font-size:13px;line-height:1.55}
}
@media(prefers-reduced-motion:reduce){.sandy-concept *{scroll-behavior:auto!important;animation:none!important;transition:none!important}}

/* Existing secondary inquiry styles. */
.sandy-concept .sandy-inquiry-section{margin-bottom:0}
.sandy-concept .sandy-inquiry-layout{display:grid;grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr);gap:40px;padding:32px;margin:0;align-items:start}
.sandy-concept .sandy-inquiry-intro h2{font-size:30px;line-height:1.2;letter-spacing:-.035em;margin:12px 0 20px}
.sandy-concept .sandy-inquiry-intro>p:not(.eyebrow){font-size:15px;line-height:1.7;color:var(--muted)}
.sandy-concept .sandy-form-pane{background:var(--bg);border:1px solid var(--line);border-radius:13px;padding:24px}
.sandy-concept .sandy-form-layout.inquiry-layout{display:block;padding:0}
.sandy-concept .sandy-form-layout .inquiry-intro h3{margin:0 0 6px;font-size:21px;letter-spacing:-.025em;line-height:1.3}
.sandy-concept .sandy-form-layout .inquiry-intro>p{margin:0 0 22px;font-size:14px;line-height:1.6}
.sandy-concept .inquiry-field label{font-size:13px}
/* The existing contact field standard, without changing shared files. */
.sandy-concept .inquiry-field input,.sandy-concept .inquiry-field textarea{min-height:48px;padding:11px 12px;border:1px solid #52616d;border-radius:8px;background:var(--bg);font:400 16px/1.5 Inter,system-ui,sans-serif}
.sandy-concept .sandy-inquiry-reminder{display:grid;grid-template-columns:140px minmax(0,1fr);align-items:stretch;gap:20px;margin-top:32px;padding-top:28px;border-top:1px solid var(--line)}
.sandy-concept .sandy-reminder-portrait{position:relative;min-height:180px;border-radius:12px;overflow:hidden}
.sandy-concept .sandy-reminder-portrait>img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:center 0%}
.sandy-concept .sandy-inquiry-reminder>div{min-width:0}
.sandy-concept .sandy-inquiry-reminder h3{font-size:22px;line-height:1.25;margin:0 0 12px}
.sandy-concept .sandy-inquiry-reminder p{font-size:14px;line-height:1.65;color:var(--muted);margin:0 0 16px}
.sandy-concept .sandy-reminder-call{display:inline-flex;flex-direction:column;gap:4px;min-height:52px;padding:10px 12px;font-size:13px;text-decoration:none}
.sandy-concept .sandy-reminder-call .sandy-action-detail{font-size:12px;font-weight:500;font-variant-numeric:tabular-nums}
@media(max-width:360px){.sandy-concept .sandy-inquiry-reminder{gap:14px;grid-template-columns:112px minmax(0,1fr)}.sandy-concept .sandy-inquiry-reminder h3{font-size:20px}}
@media(max-width:760px){.sandy-concept .sandy-inquiry-reminder{grid-template-columns:minmax(0,1fr) minmax(166px,1.45fr);gap:14px}}
@media(max-width:360px){.sandy-concept .sandy-inquiry-reminder{grid-template-columns:1fr}.sandy-concept .sandy-reminder-portrait{height:220px;min-height:0}.sandy-concept .sandy-reminder-portrait>img{object-position:center 0%}}
/* Phones (Matthew, 2026-10-25): a square photo with the blurb beside it, then the call button across the full width
   below both, so the number fits on one line. The text column's children join the grid (display: contents). */
@media(max-width:760px){
 .sandy-concept .sandy-inquiry-reminder{grid-template-columns:130px minmax(0,1fr);grid-template-areas:"title title" "photo blurb" "call call" "copy copy";column-gap:14px;row-gap:0;align-items:stretch} /* title above, photo and blurb side by side */
 .sandy-concept .sandy-inquiry-reminder>div:not(.sandy-reminder-portrait){display:contents}
 .sandy-concept .sandy-reminder-portrait{grid-area:photo;width:130px;height:auto;min-height:0} /* stretches to the blurb: edges line up */
 .sandy-concept .sandy-reminder-portrait>img{object-position:center 0%}
 .sandy-concept .sandy-inquiry-reminder h3{grid-area:title;margin:0 0 14px;font-size:22px}
 .sandy-concept .sandy-inquiry-reminder p{grid-area:blurb;margin:0;align-self:center}
 .sandy-concept .sandy-reminder-call{grid-area:call;width:100%;margin-top:18px;flex-direction:row}
 .sandy-concept .sandy-reminder-call .sandy-action-detail{white-space:nowrap}
 .sandy-concept .sandy-inquiry-reminder .sandy-number{grid-area:copy;justify-content:center}
}

/* Place cards under a reply (2026-10-25): a swipeable row of link cards, picture on top, Website and Map below. */
.sandy-concept .sandy-place-cards{display:flex;gap:10px;overflow-x:auto;margin:12px -4px 0;padding:2px 4px 6px;scroll-snap-type:x mandatory;overscroll-behavior-x:contain}
.sandy-concept .sandy-place-card{flex:0 0 220px;display:flex;flex-direction:column;scroll-snap-align:start;border:1px solid var(--line);border-radius:12px;overflow:hidden;background:var(--panel)}
.sandy-concept .sandy-place-cards:has(.sandy-place-card:only-child) .sandy-place-card{flex-basis:min(100%,280px)}
.sandy-concept .sandy-place-card img{display:block;width:100%;height:auto;aspect-ratio:16/9;object-fit:cover;background:var(--bg)}
.sandy-concept .sandy-place-body{display:flex;flex:1;flex-direction:column;gap:2px;padding:10px 12px 8px}
.sandy-concept .sandy-place-kind{font-size:11px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}
.sandy-concept .sandy-place-name{font-size:14px;font-weight:600;line-height:1.35;color:var(--text)}
.sandy-concept .sandy-place-address{font-size:12px;line-height:1.4;color:var(--muted)}
/* Text links, not pills (Matthew, 2026-10-25: the buttons looked like reply pills), styled like the header's Email notes. */
.sandy-concept .sandy-place-links{display:flex;gap:20px;margin-top:auto;padding-top:4px}
.sandy-concept .sandy-place-links a{display:inline-flex;align-items:center;min-height:40px;font-size:13px;font-weight:600;color:var(--accent);text-decoration:underline;text-underline-offset:3px}
.sandy-concept .sandy-place-links a::after{content:"\2197";margin-left:4px;text-decoration:none;font-weight:400}
.sandy-concept .sandy-place-links a:focus-visible{outline:2px solid var(--accent);outline-offset:2px}



/* Chat-first place cards retain the original data and links. */
.sandy-concept .sandy-place-card{flex-basis:210px;border-radius:14px;background:var(--chat-surface)}
.sandy-concept .sandy-place-links a{gap:4px;text-decoration:none}
.sandy-concept .sandy-place-links a>span:first-child{text-decoration:underline;text-underline-offset:3px}
.sandy-concept .sandy-place-links a:after{content:none}
.sandy-concept .sandy-place-links .link-arrow{display:inline-block;text-decoration:none}
.sandy-concept .sandy-place-cards{animation:sandy-message-in .28s ease-out}
@media(max-width:760px){.sandy-concept .sandy-place-card{flex-basis:200px}.sandy-concept .sandy-place-name{font-size:13px}.sandy-concept .sandy-place-cards{margin-right:-7px}}

@media(max-width:760px){.sandy-concept .sandy-inquiry-layout{grid-template-columns:1fr;padding:20px;gap:24px}}
.sandy-concept .sandy-reminder-call .sandy-action-detail{font-size:23px;font-weight:700}
:root[data-theme=light] .sandy-concept .inquiry-field input,:root[data-theme=light] .sandy-concept .inquiry-field textarea{background:#fff;color:#172b42;border-color:#bac4cc}
/* Comfortable targets for secondary controls, including phones. */
.sandy-concept .sandy-area-header .theme-toggle{width:44px;min-width:44px;height:44px;min-height:44px}
.sandy-concept .sandy-close{width:44px;height:44px}
.sandy-concept .sandy-mobile-actions .sandy-text-button{min-height:44px}
@media(min-width:761px) and (max-height:800px){
 .sandy-concept main{margin-top:16px}
 .sandy-concept .sandy-hero{height:calc(100svh - 32px);min-height:620px}
 .sandy-concept .sandy-area-header{height:132px;padding-bottom:36px}
 .sandy-concept .sandy-welcome{margin-top:-50px;padding-bottom:12px}
 .sandy-concept .sandy-welcome-portrait{width:112px;height:112px}
 .sandy-concept .sandy-welcome h2{margin-block:8px;font-size:26px}
}
@media(max-width:760px){
 .sandy-concept .sandy-hero[data-keyboard=true] .sandy-welcome,
 .sandy-concept .sandy-hero[data-keyboard=true] .sandy-topic-tiles{display:none}
 .sandy-concept .sandy-hero[data-keyboard=true] .sandy-chat-header{display:flex}
 .sandy-concept .sandy-hero[data-keyboard=true][data-ui-started=false] .sandy-chat-messages{padding-top:12px}
}

/* Phone-safe theme control and a single slim conversation toolbar. */
.sandy-concept .sandy-welcome-name{position:relative;display:flex;align-items:center;justify-content:center;width:100%;max-width:620px;min-height:44px;margin:10px 0 8px;padding-inline:54px}
.sandy-concept .sandy-welcome-name h2{margin:0}
.sandy-concept .sandy-theme-toggle{position:static;order:3;display:inline-flex;flex:none;align-items:center;justify-content:center;width:44px;min-width:44px;height:44px;min-height:44px;padding:11px;border:1px solid var(--line);border-radius:50%;background:var(--chat-bubble);color:var(--text)}
.sandy-concept .sandy-theme-toggle span{display:none}
.sandy-concept .sandy-welcome-name>.sandy-theme-toggle{position:absolute;right:0;top:50%;transform:translateY(-50%)}
.sandy-concept .sandy-chat-header{flex-wrap:nowrap;padding:8px 20px;gap:8px}
.sandy-concept .sandy-header-portrait{order:0}
.sandy-concept .sandy-chat-heading{order:1}
.sandy-concept .sandy-close{order:4;flex:none}
.sandy-concept .sandy-mobile-actions{order:2;display:flex;flex:none;flex-basis:auto;gap:4px;margin-left:auto;align-items:center}
.sandy-concept .sandy-chat-action{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;min-width:50px;min-height:44px;padding:3px 6px;border:0;border-radius:9px;background:none;color:var(--text);font:500 10px/1.1 Inter,system-ui,sans-serif;white-space:nowrap;cursor:pointer;text-decoration:none}
.sandy-concept .sandy-chat-action svg{width:18px;height:18px;color:var(--muted)}
.sandy-concept .sandy-chat-action:hover{background:var(--chat-bubble)}
.sandy-concept .sandy-chat-action:disabled{opacity:.45;cursor:default}
@media(max-width:760px){
 .sandy-concept .sandy-area-header{height:calc(132px + env(safe-area-inset-top,0px));padding-inline:20px}
 .sandy-concept .sandy-hero[data-ui-started=true] .sandy-area-header{height:calc(76px + env(safe-area-inset-top,0px));padding-inline:20px}
 .sandy-concept .sandy-area-header h1{white-space:normal}
 .sandy-concept .sandy-welcome-name{margin:6px 0 8px;padding-inline:50px}
 .sandy-concept .sandy-chat-header{padding:5px 12px;gap:4px;min-height:54px}
 .sandy-concept .sandy-header-portrait{width:28px;height:28px;margin-right:3px}
 .sandy-concept .sandy-chat-heading{min-width:0;flex:1}
 .sandy-concept .sandy-chat-header h2{font-size:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;margin:0}
 .sandy-concept .sandy-chat-header .sandy-chat-heading>p{display:none}
 .sandy-concept .sandy-mobile-actions{gap:0;flex-basis:auto;margin-left:0}
 .sandy-concept .sandy-chat-action{min-width:44px;padding-inline:3px;font-size:10px}
 .sandy-concept .sandy-chat-action[data-sandy-suggestion=agent]{min-width:54px}
 .sandy-concept .sandy-theme-toggle{padding:12px}
 .sandy-concept .sandy-theme-toggle svg{width:18px;height:18px}
 .sandy-concept .sandy-hero[data-keyboard=true] .sandy-area-header{height:calc(48px + env(safe-area-inset-top,0px));padding-inline:20px}
}
@media(max-height:740px) and (max-width:760px){.sandy-concept .sandy-area-header{height:calc(110px + env(safe-area-inset-top,0px))}}

/* Spell out the human real estate role, including the compact phone toolbar. */
@media(max-width:760px){
 .sandy-concept .sandy-chat-action[data-sandy-suggestion=agent]{width:72px;min-width:72px}
 .sandy-concept .sandy-chat-action[data-sandy-suggestion=agent]>span{max-width:66px;white-space:normal;text-align:center;line-height:1.1}
}

/* Give the labeled actions more breathing room without restoring a second row. */
.sandy-concept .sandy-chat-header{padding-block:9px}
.sandy-concept .sandy-chat-action{min-height:52px;font-size:11px;gap:4px}
.sandy-concept .sandy-chat-action svg{width:20px;height:20px}
@media(max-width:760px){
 .sandy-concept .sandy-chat-header{padding-block:8px}
 .sandy-concept .sandy-chat-action{width:44px;min-width:44px;min-height:54px;padding:3px;font-size:11px;gap:3px}
 .sandy-concept .sandy-chat-action>span{max-width:38px;white-space:normal;line-height:1.1;text-align:center}
 .sandy-concept .sandy-chat-action[data-sandy-suggestion=agent]{width:72px;min-width:72px}
 .sandy-concept .sandy-chat-action[data-sandy-suggestion=agent]>span{max-width:66px}
}

/* A quiet scroll hint in a subtle strip. */

/* One phone-screen welcome. No scroll snap back to it (Matthew, 2026-10-28): the chat is its own page now. */
@media(max-width:760px){
 .sandy-concept .sandy-hero{height:100vh;height:100dvh;min-height:0;scroll-margin:0}
}
@media(max-width:760px){
 .sandy-concept .sandy-hero[data-compact-height=true] .sandy-welcome{display:none}
 .sandy-concept .sandy-hero[data-compact-height=true] .sandy-chat-header{display:flex}
 .sandy-concept .sandy-hero[data-compact-height=true][data-keyboard=false] .sandy-area-header{height:calc(64px + env(safe-area-inset-top,0px));padding:8px 20px}
 .sandy-concept .sandy-hero[data-compact-height=true] .sandy-area-header h1{font-size:21px}
 .sandy-concept .sandy-hero[data-compact-height=true][data-ui-started=false] .sandy-chat-messages{padding-top:10px}
}

/* On phones, the conversation replaces the title band and clears the camera/status area. */
.sandy-concept{--sandy-safe-top:env(safe-area-inset-top,0px)}
@media(max-width:760px){
 .sandy-concept .sandy-hero:is([data-ui-started=true],[data-keyboard=true],[data-compact-height=true]){padding-top:var(--sandy-safe-top)}
 .sandy-concept .sandy-hero:is([data-ui-started=true],[data-keyboard=true],[data-compact-height=true]) .sandy-area-header{display:none}
}

/* Icon-only chat actions, retaining the approved bar height and accessible names. */
.sandy-concept .sandy-chat-action,.sandy-concept .sandy-chat-action[data-sandy-suggestion=agent]{width:44px;min-width:44px;min-height:54px;padding:5px;gap:0}
.sandy-concept .sandy-chat-action svg{width:23px;height:23px;stroke-width:1.7}

/* The chat is part of the page, so it has no close affordance. */
.sandy-concept .sandy-close{display:none}

/* Very short keyboard viewports prioritize the input over optional reply hints. */
@media(max-width:760px){
 .sandy-concept .sandy-hero[data-short-keyboard=true] .sandy-suggestions-wrap,
 .sandy-concept .sandy-hero[data-short-keyboard=true] .sandy-notes-timing{display:none}
 .sandy-concept .sandy-hero[data-short-keyboard=true] .sandy-chat-header{padding-block:2px;min-height:48px}
 .sandy-concept .sandy-hero[data-short-keyboard=true] .sandy-chat-action{min-height:44px}
 .sandy-concept .sandy-hero[data-short-keyboard=true] .sandy-chat-messages{padding-block:0}
 .sandy-concept .sandy-hero[data-short-keyboard=true] .sandy-compose-row textarea{max-height:35px;overflow-y:auto}
}

/* Film box spans the guide column like every other box on desktop (Matthew, 2026-10-26). */
.sandy-concept .preview-film{max-width:none}
/* A small lift on the message box so it stands out, in the manner of Claude's composer (Matthew, 2026-10-26). */
.sandy-concept .sandy-compose-row{box-shadow:0 1px 2px #0b1b2a0f,0 4px 16px #0b1b2a14}
.sandy-concept .sandy-compose-row:focus-within{box-shadow:0 0 0 3px color-mix(in srgb,var(--text) 8%,transparent),0 4px 16px #0b1b2a14}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]) .sandy-concept .sandy-compose-row{box-shadow:0 1px 2px #0006,0 4px 16px #0008}}
:root[data-theme="dark"] .sandy-concept .sandy-compose-row{box-shadow:0 1px 2px #0006,0 4px 16px #0008}
/* Salutation without the Realty Wave lockup (2026-10-26): plain text under her name, a touch larger. */
.sandy-concept .sandy-salutation{font-size:14px;font-weight:500}


/* Ask About Here front-door identity, local concept, 2026-10-27. */
.sandy-concept .aah-logo-light{display:none}
.sandy-concept .aah-logo-dark{display:block}
:root[data-theme=light] .sandy-concept .aah-logo-light{display:block}
:root[data-theme=light] .sandy-concept .aah-logo-dark{display:none}
.sandy-concept .sandy-welcome-name{margin:10px 0 8px;max-width:620px}
.sandy-concept .sandy-salutation{font-size:12px;font-weight:500;color:var(--muted);line-height:1.5}
.sandy-concept .sandy-reminder-call{gap:12px;padding:7px 16px 7px 7px}
.sandy-concept .aah-call-icon{width:44px;height:44px;flex:none}
.sandy-concept .aah-footer-brand{height:auto;max-width:260px;display:block}
.sandy-concept .site-footer .aah-footer-brand img{width:260px;max-width:100%;height:auto}
@media(max-width:760px){
 .sandy-concept .sandy-welcome{padding-bottom:12px}
 .sandy-concept .sandy-welcome-name{margin:6px 0 0;padding-inline:48px}
 .sandy-concept .sandy-salutation{font-size:11px}
 .sandy-concept .sandy-chat-header .sandy-chat-heading>p{display:block;font-size:9px;line-height:1.4;margin-top:2px}
 .sandy-concept .aah-header-extra{display:none}
 .sandy-concept .aah-call-icon{width:40px;height:40px}
 .sandy-concept .sandy-reminder-call{gap:8px;padding-right:12px}
}

.sandy-concept .aah-footer-platform{display:flex;align-items:center;gap:5px;margin:4px 0 14px;font-size:11px;color:var(--muted)}
.sandy-concept .site-footer .aah-footer-platform img{width:95px;height:auto}

/* Footer brand signature uses the approved callout and local place motion. */
.sandy-concept .aah-footer-brand{margin-inline:auto;--aah-logo-surface:#101e2c;--aah-logo-ink:#faf7f0;--aah-logo-placeholder:#b6c0c9;--aah-logo-border:#637787;--aah-send-fill:#f15b40;--aah-send-ink:#fff}
:root[data-theme=light] .sandy-concept .aah-footer-brand{--aah-logo-surface:#fff;--aah-logo-ink:#172b42;--aah-logo-placeholder:#657585;--aah-logo-border:#7d8d9a;--aah-send-fill:#f15b40;--aah-send-ink:#fff}
.sandy-concept .site-footer{--aah-footer-mark-width:260px;--aah-footer-mark-height:calc(var(--aah-footer-mark-width) * 132 / 560)}
.sandy-concept .aah-footer-logo{display:block;width:var(--aah-footer-mark-width);max-width:100%;height:auto}
.sandy-concept .site-footer .footer-social a{height:var(--aah-footer-mark-height);min-height:var(--aah-footer-mark-height);padding:8px 10px;gap:4px}
.sandy-concept .aah-footer-platform{justify-content:center}
.sandy-concept .aah-footer-cursor{opacity:0}
.sandy-concept .aah-footer-brand[data-footer-animating=true] .aah-footer-cursor{opacity:1;animation:aah-footer-caret .75s steps(1) infinite}
@keyframes aah-footer-caret{0%,45%{opacity:1}46%,100%{opacity:0}}
@media(prefers-reduced-motion:reduce){.sandy-concept .aah-footer-cursor{display:none}}

/* Phones center the local footer; larger screens override alignment below. */
.sandy-concept .site-footer .footer-top{flex-direction:column;align-items:center;text-align:center;gap:28px}
.sandy-concept .site-footer .footer-top>div:first-child{width:100%}
.sandy-concept .site-footer .footer-menu{justify-content:center}
.sandy-concept .site-footer .footer-channel{align-self:center;align-items:center;text-align:center}
.sandy-concept .site-footer .footer-bottom{justify-content:center;text-align:center}
/* Keep the configured phone number on one readable line beside the brand icon. */
.sandy-concept .sandy-inquiry-reminder{grid-template-columns:130px minmax(0,1fr);grid-template-areas:"title title" "photo blurb" "call call";column-gap:14px;row-gap:0}
.sandy-concept .sandy-inquiry-reminder>div:not(.sandy-reminder-portrait){display:contents}
.sandy-concept .sandy-reminder-portrait{grid-area:photo;width:130px;height:auto;min-height:0}
.sandy-concept .sandy-inquiry-reminder h3{grid-area:title;margin-bottom:14px}
.sandy-concept .sandy-inquiry-reminder p{grid-area:blurb;margin:0;align-self:center}
.sandy-concept .sandy-reminder-call{grid-area:call;width:100%;margin-top:18px;flex-direction:row;white-space:nowrap}
.sandy-concept .sandy-reminder-call .sandy-action-detail{white-space:nowrap}
@media(max-width:360px){.sandy-concept .sandy-reminder-call .sandy-action-detail{font-size:20px}}

/* Standalone brand beside social icons and the menu beneath them. */
.sandy-concept .site-footer .footer-channel{max-width:100%;min-width:0;gap:18px}
.sandy-concept .site-footer .footer-channel .footer-menu{margin:0;max-width:100%}
@media(min-width:761px){
 .sandy-concept .site-footer .footer-top{flex-direction:row;align-items:flex-end;text-align:left;gap:32px}
 .sandy-concept .site-footer .footer-top>div:first-child{width:max-content;max-width:100%;flex:0 1 auto;min-width:0}
 .sandy-concept .site-footer .aah-footer-brand{display:block;max-width:260px;margin-inline:auto;margin-bottom:0}
 .sandy-concept .site-footer .aah-footer-logo{transform:translateY(calc(var(--aah-footer-mark-width) * 23.15 / 560))}
 .sandy-concept .site-footer .aah-footer-platform{justify-content:center;margin-top:18px;margin-bottom:0;min-height:19.2px}
 .sandy-concept .site-footer .footer-menu{justify-content:flex-start}
 .sandy-concept .site-footer .footer-channel{align-self:flex-end;flex:none}
 .sandy-concept .site-footer .footer-bottom{justify-content:flex-start;text-align:left}
}

/* The first input is the brand callout; an active conversation uses the normal composer. */
.sandy-concept .sandy-entry-outline,.sandy-concept .sandy-brand-prompt{display:none;pointer-events:none}
.sandy-concept .sandy-hero[data-ui-started=false]:not([data-keyboard=true]):not([data-compact-height=true]){height:auto;min-height:0}
.sandy-concept .sandy-hero[data-ui-started=false]:not([data-keyboard=true]):not([data-compact-height=true]) .sandy-chat-messages{flex:none;overflow:visible;padding-bottom:10px}
.sandy-concept .sandy-hero[data-ui-started=false] .sandy-chat-composer{padding-top:8px}
.sandy-concept .sandy-welcome-name{margin-bottom:0}
.sandy-concept .sandy-hero[data-ui-started=false]:not([data-keyboard=true]) .sandy-compose-row{position:relative;isolation:isolate;min-height:49.3px;padding:1.65px;gap:6px;border-radius:26px;--entry-border:var(--chat-border);border-color:transparent;background:transparent;box-shadow:none}
.sandy-concept .sandy-hero[data-ui-started=false] .sandy-compose-row:focus-within{--entry-border:var(--text)}
.sandy-concept .sandy-hero[data-ui-started=false]:not([data-keyboard=true]) .sandy-entry-outline{display:block;position:absolute;left:-1px;top:-1px;width:calc(100% + 2px);height:calc(100% + 22px);overflow:visible;z-index:-1;fill:var(--chat-surface);stroke:var(--entry-border);stroke-width:1;stroke-linejoin:round;filter:drop-shadow(0 1px 2px #0b1b2a0f) drop-shadow(0 4px 16px #0b1b2a14)}
.sandy-concept .sandy-hero[data-ui-started=false]:not([data-keyboard=true]) .sandy-compose-row:focus-within .sandy-entry-outline{stroke-width:2}
.sandy-concept .sandy-hero[data-ui-started=false]:not([data-keyboard=true]) .sandy-brand-prompt{display:block;position:absolute;left:20px;top:50%;transform:translateY(-50%);color:var(--muted);font-size:24px;line-height:1.25;white-space:nowrap}
.sandy-concept .sandy-brand-prompt strong{font-weight:700}
/* The place is the placeholder: the cursor starts where it begins, and typing replaces only the place (Matthew, 2026-10-29). */
.sandy-concept .sandy-hero[data-ui-started=false] .sandy-compose-row:has(textarea:not(:placeholder-shown)) .sandy-brand-place{visibility:hidden}
.sandy-concept .sandy-hero[data-ui-started=false]:not([data-keyboard=true]) .sandy-compose-row textarea{min-height:44px;height:44px;padding:8px 12px;font-size:20px;line-height:28px}
.sandy-concept .sandy-hero[data-ui-started=false]:not([data-keyboard=true]) .sandy-compose-row textarea::placeholder{color:transparent}
/* Match the brand circle visually while preserving the 44 px touch target. */
.sandy-concept .sandy-hero[data-ui-started=false]:not([data-keyboard=true]) .sandy-send{width:44px;height:44px;background:radial-gradient(circle at center,#f15b40 0 18px,transparent 18.2px);color:#faf7f0}
.sandy-concept .sandy-hero[data-ui-started=false]:not([data-keyboard=true]) .sandy-send:disabled{opacity:1}
.sandy-concept .sandy-hero[data-ui-started=false]:not([data-keyboard=true]) .sandy-send svg{width:23px;height:23px}
.sandy-concept .sandy-hero[data-ui-started=false]:not([data-keyboard=true]) .sandy-preview-status{margin-top:21px}
.sandy-concept .sandy-hero[data-ui-started=false][data-keyboard=true]:not([data-short-keyboard=true]) .sandy-chat-composer{padding-bottom:24px}
@media(max-width:760px){
 .sandy-concept .sandy-hero[data-ui-started=false] .sandy-chat-messages{padding-bottom:4px}
 .sandy-concept .sandy-hero[data-ui-started=false]:not([data-keyboard=true]) .sandy-brand-prompt{font-size:22px}
}
@media(max-width:360px){.sandy-concept .sandy-hero[data-ui-started=false]:not([data-keyboard=true]) .sandy-brand-prompt{font-size:20px}}
@media(min-width:761px) and (max-width:900px){
 .sandy-concept .site-footer .footer-top nav.footer-menu{display:grid;grid-template-columns:repeat(3,max-content)}
 .sandy-concept .site-footer .aah-footer-platform{min-height:50.4px;align-items:flex-end}
}

/* Quiet welcome guidance and the configured phone alternative. */
.sandy-concept .sandy-entry-hint,.sandy-concept .sandy-entry-call{display:none}
.sandy-concept .sandy-hero[data-ui-started=false]:not([data-keyboard=true]):not([data-compact-height=true]) .sandy-entry-hint{display:block;margin:22px 0 0;color:var(--muted);font-size:12px;line-height:1.5;text-align:center}
.sandy-concept .sandy-hero[data-ui-started=false]:not([data-keyboard=true]):not([data-compact-height=true]) .sandy-entry-call{display:flex;flex-direction:column;align-items:center;gap:6px;width:fit-content;max-width:100%;margin:8px auto 0;color:var(--muted);font-size:12px;line-height:1.5}
.sandy-concept .sandy-entry-call>p{margin:0;font-size:12px;line-height:1.5}
.sandy-concept .sandy-entry-phone-pill{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:44px;padding:8px 14px;border:1px solid var(--chat-border);border-radius:999px;background:transparent;color:var(--text);font-size:13px;font-weight:600;line-height:1.5;text-decoration:none}
.sandy-concept .sandy-entry-phone-pill svg{width:16px;height:16px;flex:none;color:var(--text)}
.sandy-concept .sandy-entry-call [data-sandy-phone-text]{white-space:nowrap;font-variant-numeric:tabular-nums}
.sandy-concept .sandy-entry-phone-pill:hover{background:var(--chat-bubble)}
.sandy-concept[data-assistant-has-phone=false] .sandy-entry-call{display:none!important}
.sandy-concept .sandy-hero[data-ui-started=false]:not([data-keyboard=true]) .sandy-preview-status{margin-top:4px}

/* Remove stacked footer margins between the endorsement and socials on phones. */
@media(max-width:760px){
 .sandy-concept .site-footer .footer-top{gap:20px}
 .sandy-concept .site-footer .aah-footer-brand,
 .sandy-concept .site-footer .aah-footer-platform{margin-bottom:0}
 .sandy-concept .site-footer .footer-channel{margin-top:0}
}

/* Match the canonical brand waveform relative to its circular area. */
.sandy-concept .sandy-send{padding:0}
.sandy-concept .sandy-send .sandy-send-wave,
.sandy-concept .sandy-hero[data-ui-started=false]:not([data-keyboard=true]) .sandy-send .sandy-send-wave{width:100%;height:100%}
/* The round button is coral with an ivory symbol in both themes (brand guidelines: "the round waveform area is coral
   with a white symbol in both themes"), for the waveform, the send arrow and the voice stop. */
/* Voice (2026-10-28): while talking the round button ends voice (a square), with a soft pulse while listening or
   speaking. Reduced motion keeps a still ring. */
.sandy-concept .sandy-send .sandy-send-stop{display:none}
.sandy-concept .sandy-send:is([data-voice=starting],[data-voice=listening],[data-voice=speaking]) .sandy-send-wave{display:none}
.sandy-concept .sandy-send:is([data-voice=starting],[data-voice=listening],[data-voice=speaking]) .sandy-send-stop{display:block;width:18px;height:18px}
.sandy-concept .sandy-send:is([data-voice=listening],[data-voice=speaking]){animation:sandy-voice-pulse 1.6s ease-out infinite}
.sandy-concept .sandy-send[data-voice=speaking]{animation-duration:1s}
@keyframes sandy-voice-pulse{0%{box-shadow:0 0 0 0 rgba(241,91,64,.5)}100%{box-shadow:0 0 0 12px rgba(241,91,64,0)}}
@media (prefers-reduced-motion:reduce){.sandy-concept .sandy-send:is([data-voice=listening],[data-voice=speaking]){animation:none;box-shadow:0 0 0 3px rgba(241,91,64,.5)}}

/* The welcome waveform follows the smaller brand circle, including its internal spacing. */
.sandy-concept .sandy-hero[data-ui-started=false]:not([data-keyboard=true]) .sandy-send .sandy-send-wave{width:36px;height:36px}
/* VOICE MODE (Matthew, 2026-10-28: "people are accustomed now to the interface changing when you're in voice mode").
   The chat panel becomes a call screen: Sandy's portrait with a ring that follows whoever is talking, her current line
   as a caption, and mute, type instead and end. Leaving returns to the chat with every spoken exchange in it. */
.sandy-concept .sandy-voice{position:absolute;inset:0;z-index:20;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:0;padding:28px 24px max(28px,env(safe-area-inset-bottom));background:var(--chat-surface);text-align:center;animation:sandy-voice-in .28s ease-out}
.sandy-concept .sandy-voice[hidden]{display:none}
@keyframes sandy-voice-in{from{opacity:0;transform:scale(.985)}to{opacity:1;transform:none}}
.sandy-concept .sandy-voice-area{margin:0 0 auto;font-size:12px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}
.sandy-concept .sandy-voice-stage{position:relative;display:grid;place-items:center;width:232px;height:232px;margin:24px 0 18px}
.sandy-concept .sandy-voice-portrait{position:relative;z-index:1;width:176px;height:176px;border-radius:50%;object-fit:cover;object-position:50% 18%;border:5px solid var(--chat-surface)}
.sandy-concept .sandy-voice-ring{position:absolute;inset:22px;border-radius:50%;background:var(--chat-bubble);border:2px solid var(--chat-border);transform:scale(calc(1 + var(--sandy-voice-level,0) * .2));transition:transform .08s linear,background-color .3s,border-color .3s}
.sandy-concept .sandy-voice-ring--soft{inset:4px;background:none;border-width:1px;opacity:.5;transform:scale(calc(1 + var(--sandy-voice-level,0) * .1))}
.sandy-concept .sandy-voice[data-voice=speaking] .sandy-voice-ring{background:#f15b4022;border-color:#f15b40}
.sandy-concept .sandy-voice[data-voice=speaking] .sandy-voice-ring--soft{background:none;border-color:#f15b40}
.sandy-concept .sandy-voice[data-voice=listening]:not([data-muted=true]) .sandy-voice-ring--soft{animation:sandy-voice-breathe 2.4s ease-in-out infinite}
.sandy-concept .sandy-voice[data-voice=starting] .sandy-voice-ring--soft{animation:sandy-voice-breathe 1.2s ease-in-out infinite}
@keyframes sandy-voice-breathe{0%,100%{opacity:.25;scale:1}50%{opacity:.7;scale:1.06}}
.sandy-concept .sandy-voice-name{margin:0;font-size:24px;line-height:1.2;letter-spacing:-.02em}
.sandy-concept .sandy-voice-status{min-height:22px;margin:6px 0 0;font-size:14px;color:var(--muted)}
.sandy-concept .sandy-voice-caption{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:4;overflow:hidden;width:100%;max-width:520px;min-height:4.8em;margin:18px 0 auto;font-size:17px;line-height:1.55;letter-spacing:-.01em;color:var(--text)}
.sandy-concept .sandy-voice-caption[data-who=you]{color:var(--muted);font-style:italic}
.sandy-concept .sandy-voice-controls{display:flex;gap:22px;margin-top:22px}
.sandy-concept .sandy-voice-button{display:grid;place-items:center;width:60px;height:60px;padding:0;border:1px solid var(--chat-border);border-radius:50%;background:var(--chat-bubble);color:var(--text);cursor:pointer;transition:transform .15s,background-color .2s}
.sandy-concept .sandy-voice-button:hover{transform:translateY(-1px)}
.sandy-concept .sandy-voice-button:focus-visible{outline:3px solid #f15b40;outline-offset:3px}
.sandy-concept .sandy-voice-button svg{width:24px;height:24px}
.sandy-concept .sandy-voice-button .sandy-voice-mic-off,.sandy-concept .sandy-voice-button[aria-pressed=true] .sandy-voice-mic{display:none}
.sandy-concept .sandy-voice-button[aria-pressed=true] .sandy-voice-mic-off{display:block}
.sandy-concept .sandy-voice-button[aria-pressed=true]{background:var(--text);color:var(--chat-surface);border-color:var(--text)}
.sandy-concept .sandy-voice-end{background:#f15b40;border-color:#f15b40;color:#faf7f0}
@media (max-width:760px){.sandy-concept .sandy-voice-stage{width:204px;height:204px}.sandy-concept .sandy-voice-portrait{width:152px;height:152px}.sandy-concept .sandy-voice-caption{font-size:16px}}
@media (max-height:620px){.sandy-concept .sandy-voice-stage{width:150px;height:150px;margin:12px 0 10px}.sandy-concept .sandy-voice-portrait{width:112px;height:112px}.sandy-concept .sandy-voice-ring{inset:16px}.sandy-concept .sandy-voice-caption{-webkit-line-clamp:2;min-height:3.1em;margin-top:10px}}
@media (prefers-reduced-motion:reduce){.sandy-concept .sandy-voice,.sandy-concept .sandy-voice-ring,.sandy-concept .sandy-voice-ring--soft{animation:none!important;transition:none;transform:none}}
/* "Talk to a real estate agent" as a pill at the end of the suggestions, in coral outline so it reads as an action. */
.sandy-concept .sandy-suggestions button.sandy-suggestion-agent{border-color:#f15b40;color:var(--text);font-weight:600}
/* EMAIL ME, centered at the top of the chat (Matthew, 2026-10-28): a labelled pill in the middle of the header. */
.sandy-concept .sandy-chat-header{position:relative}
.sandy-concept .sandy-hero .sandy-chat-header .sandy-mobile-actions{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);margin:0;gap:0}
.sandy-concept .sandy-hero .sandy-chat-header .sandy-chat-action{flex-direction:row;gap:7px;width:auto;min-width:0;min-height:38px;padding:0 15px;border:1px solid var(--chat-border);border-radius:999px;font:600 13px/1 Inter,system-ui,sans-serif}
.sandy-concept .sandy-hero .sandy-chat-header .sandy-chat-action svg{width:17px;height:17px;color:#f15b40}
.sandy-concept .sandy-hero .sandy-chat-header .sandy-chat-action>span{max-width:none;white-space:nowrap}
@media (max-width:360px){.sandy-concept .sandy-hero .sandy-chat-header .sandy-chat-action{padding:0 9px;font-size:11.5px;gap:4px;min-height:36px}.sandy-concept .sandy-hero .sandy-chat-header .sandy-chat-action svg{width:15px;height:15px}}
/* The chat header shows Sandy's portrait only (Matthew, 2026-10-28: "do we really need Sandy up there?"); her name
   stays as the chat's accessible heading. */
.sandy-concept .sandy-chat-header #sandy-chat-title{position:absolute;width:1px;height:1px;margin:0;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
/* Her header portrait matches the theme switch on the other side (44 px). */
.sandy-concept .sandy-hero .sandy-chat-header .sandy-header-portrait{width:44px;height:44px;flex:none}
/* Voice controls (Matthew, 2026-10-28): the microphone is the coral button while it is live and turns neutral when
   muted, so it reads as on or off; Back to chat and End are quiet neutral buttons. */
.sandy-concept .sandy-voice-end{background:var(--chat-bubble);border-color:var(--chat-border);color:var(--text)}
.sandy-concept .sandy-voice-mute{background:#f15b40;border-color:#f15b40;color:#faf7f0}
.sandy-concept .sandy-voice-button.sandy-voice-mute[aria-pressed=true]{background:var(--chat-bubble);border-color:var(--chat-border);color:var(--muted)}
/* "Listening…" in brand coral, one coral in both themes (Matthew, 2026-10-28). At 19px bold it is large text, so coral
   meets the 3:1 large-text contrast on white (3.3:1) and on navy (5.1:1). */
.sandy-concept .sandy-voice[data-voice=listening]:not([data-muted=true]) .sandy-voice-status{color:#f15b40;font-size:19px;font-weight:700;line-height:22px}
/* The branded callout is the resting welcome only. Once typing turns the page into messaging (a phone with the box
   focused), the box is a plain message input (Matthew, 2026-10-28). */
/* The caret, and typed text, start exactly at the A of "Ask About" (Matthew, 2026-10-28). */
.sandy-concept .sandy-hero[data-ui-started=false]:not([data-keyboard=true]) .sandy-compose-row textarea{padding-left:18.35px}
/* The welcome callout in the brand primary style (Matthew, 2026-10-28): "Ask About" navy bold (ivory on dark), the
   place regular in the brand's muted "here" grey, #657585 on light and #B6C0C9 on dark. */
.sandy-concept{--sandy-place-ink:#b6c0c9}
:root[data-theme=light] .sandy-concept{--sandy-place-ink:#657585}
.sandy-concept .sandy-hero[data-ui-started=false]:not([data-keyboard=true]) .sandy-brand-prompt{color:var(--sandy-place-ink)}
.sandy-concept .sandy-hero[data-ui-started=false]:not([data-keyboard=true]) .sandy-brand-prompt strong{color:var(--text)}
/* Sandy's header photo is the way back to the welcome screen. */
.sandy-concept .sandy-header-home{display:grid;place-items:center;flex:none;padding:0;border:0;border-radius:50%;background:none;cursor:pointer}
.sandy-concept .sandy-header-home:focus-visible{outline:3px solid #f15b40;outline-offset:2px}
.sandy-concept .sandy-header-home:hover .sandy-header-portrait{opacity:.85}
/* Line breaks inside a reply are kept (an agent's name, then phone, email and license on their own lines), and phone
   numbers and emails are links (2026-10-28). */
.sandy-concept .sandy-chat-message p{white-space:pre-line}
.sandy-concept .sandy-chat-message a{color:inherit;font-weight:600;text-decoration:underline;text-decoration-color:#f15b40;text-underline-offset:3px;overflow-wrap:anywhere}

/* THE CHAT PAGE (Matthew, 2026-10-28): a started chat, talk or type, fills the screen over the landing page, which keeps
   its place underneath. The back arrow with Sandy's photo (top left) or the browser's Back returns to it. */
html[data-sandy-chat-page=true],html[data-sandy-chat-page=true] body{overflow:hidden}
/* The chat page never runs taller than the visible screen (Matthew, 2026-10-29: the voice controls sat under Chrome's
   bottom toolbar on an iPhone). The measured height can be stale when a browser's toolbars change without a resize. */
html[data-sandy-chat-page=true] .sandy-concept .sandy-hero{position:fixed;left:0;right:0;top:var(--sandy-vv-top,0px);z-index:40;width:100%;height:min(var(--sandy-chat-height,100dvh),100dvh);min-height:0;margin:0;border:0;border-radius:0;box-shadow:0 0 0 100vmax var(--chat-surface)}
/* Nothing of the landing page shows behind the chat page, even when the phone keyboard shifts the visible area
   (Matthew, 2026-10-28): the page keeps its layout (and scroll place) but is hidden, in the chat's own colour. */
html[data-sandy-chat-page=true] body{visibility:hidden;background:var(--chat-surface)}
html[data-sandy-chat-page=true] .sandy-concept .sandy-hero{visibility:visible}
.sandy-concept .sandy-header-home{display:flex;align-items:center;gap:2px;padding:2px 6px 2px 0;border-radius:999px;color:var(--text)}
.sandy-concept .sandy-back-arrow{width:24px;height:24px;flex:none}
/* A paused chat waits behind the welcome: only the greeting shows, as on a fresh start. */
.sandy-concept .sandy-hero[data-paused=true] .sandy-chat-messages>:not(:first-child),
.sandy-concept .sandy-hero[data-paused=true] :is([data-sandy-suggestions-wrap],[data-sandy-mobile-actions],.sandy-typing,.sandy-chat-status,[data-sandy-recovery],[data-sandy-ended],[data-sandy-voice]){display:none!important}
/* The floating circle while a chat is paused: the one coral ring. */
.sandy-concept .sandy-ask-bar[data-paused=true]{border-color:#f15b40;animation:sandy-chat-waiting 2.4s ease-out infinite}
/* A coral pulse behind the circle while a chat is waiting (Matthew, 2026-10-28); still for reduced motion. */
@keyframes sandy-chat-waiting{0%{box-shadow:0 10px 30px rgba(5,19,34,.5),0 3px 8px rgba(5,19,34,.35),0 0 0 0 rgba(241,91,64,.6)}70%,100%{box-shadow:0 10px 30px rgba(5,19,34,.5),0 3px 8px rgba(5,19,34,.35),0 0 0 16px rgba(241,91,64,0)}}
@media(prefers-reduced-motion:reduce){.sandy-concept .sandy-ask-bar[data-paused=true]{animation:none}}
/* The callout's place-as-placeholder geometry, measured in fitBrandPrompt (2026-10-29). */
.sandy-concept .sandy-hero[data-ui-started=false]:not([data-keyboard=true]) .sandy-brand-prompt{top:var(--brand-top,50%);transform:var(--brand-shift,translateY(-50%));line-height:28px}
/* One line only (Matthew, 2026-10-29: "allow the words to extend on a single line without growing the box"): the box
   starts where the place starts, so longer questions scroll sideways inside it and never run under "Ask About".
   3 px of padding keeps the cursor whole (at 0 the box clipped it to a sliver, seen on desktop 2026-10-29). */
.sandy-concept .sandy-hero[data-ui-started=false]:not([data-keyboard=true]) .sandy-compose-row textarea{margin-left:var(--brand-indent,0);padding-left:3px;font-size:var(--brand-size,20px);white-space:pre;overflow:hidden;overflow-wrap:normal}
/* FLOATING MESSAGE BOX (Matthew, 2026-10-29): in a chat the conversation runs the full height and scrolls under the
   message box and the pills, which float on frosted glass. --sandy-float-h is the measured stack under the messages. */
.sandy-concept .sandy-hero[data-ui-started=true] .sandy-chat-messages{margin-bottom:calc(-1 * var(--sandy-float-h,0px));padding-bottom:calc(20px + var(--sandy-float-h,0px))}
/* One frosted card, like Claude's (Matthew, 2026-10-29): Sandy's pills along the top, "Message Sandy…" and the round
   button below. The message box inside it drops its own outline. */
.sandy-concept .sandy-hero[data-ui-started=true] .sandy-chat-composer{position:relative;z-index:2;width:calc(100% - 24px);margin:0 auto 12px;padding:8px;border:1px solid var(--chat-border);border-radius:26px;background:color-mix(in srgb,var(--chat-surface) 80%,transparent);-webkit-backdrop-filter:blur(16px) saturate(1.3);backdrop-filter:blur(16px) saturate(1.3);box-shadow:0 1px 2px #0b1b2a0f,0 6px 24px #0b1b2a1f}
.sandy-concept .sandy-hero[data-ui-started=true] .sandy-suggestions{margin:0 0 4px}
.sandy-concept .sandy-hero[data-ui-started=true] .sandy-compose-row{border-color:transparent;background:transparent;box-shadow:none}
/* The down arrow: shown when scrolled away from the newest message; rings coral once when something new arrives. */
.sandy-concept .sandy-jump{position:absolute;left:50%;bottom:calc(100% + 6px);z-index:3;display:grid;place-items:center;width:40px;height:40px;padding:0;border:1px solid var(--chat-border);border-radius:50%;background:color-mix(in srgb,var(--chat-surface) 80%,transparent);-webkit-backdrop-filter:blur(14px) saturate(1.3);backdrop-filter:blur(14px) saturate(1.3);color:var(--text);box-shadow:0 2px 10px #0b1b2a1f;cursor:pointer;opacity:0;pointer-events:none;transform:translate(-50%,6px);transition:opacity .2s ease,transform .2s ease;-webkit-tap-highlight-color:transparent}
.sandy-concept .sandy-jump[data-show=true]{opacity:1;pointer-events:auto;transform:translate(-50%,0)}
.sandy-concept .sandy-jump svg{width:20px;height:20px}
.sandy-concept .sandy-jump[data-fresh=true]{border-color:#f15b40;animation:sandy-chat-waiting 2.4s ease-out 1}
.sandy-concept .sandy-jump:focus-visible{outline:3px solid #f15b40;outline-offset:2px}
@media(prefers-reduced-motion:reduce){.sandy-concept .sandy-jump{transition:none}.sandy-concept .sandy-jump[data-fresh=true]{animation:none}}
/* GLASS HEADER (Matthew, 2026-10-29, like Claude's): a frosted bar with a soft drop shadow; the conversation runs up
   behind it. --sandy-head-h is the measured header height. */
.sandy-concept .sandy-hero[data-ui-started=true] .sandy-chat-header{z-index:3;margin-bottom:calc(-1 * var(--sandy-head-h,0px));border-bottom:1px solid color-mix(in srgb,var(--chat-border) 60%,transparent);background:color-mix(in srgb,var(--chat-surface) 78%,transparent);-webkit-backdrop-filter:blur(16px) saturate(1.3);backdrop-filter:blur(16px) saturate(1.3);box-shadow:0 1px 2px #0b1b2a14,0 4px 14px #0b1b2a1a}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]) .sandy-concept .sandy-hero[data-ui-started=true] .sandy-chat-header{box-shadow:0 1px 2px #0000003d,0 4px 14px #00000052}}
:root[data-theme="dark"] .sandy-concept .sandy-hero[data-ui-started=true] .sandy-chat-header{box-shadow:0 1px 2px #0000003d,0 4px 14px #00000052}
.sandy-concept .sandy-hero[data-ui-started=true] .sandy-chat-messages{padding-top:calc(18px + var(--sandy-head-h,0px))}
/* RAISED CONTROLS, like Claude's (Matthew, 2026-10-29): on the glass header and in the bottom card the controls are a
   slightly different fill instead of a heavy outline, lighter on dark and a soft warm grey on light. The back arrow and
   Sandy's photo are one button; all three header buttons are 44 px tall. */
.sandy-concept{--sandy-raise:#1d2d3d;--sandy-raise-2:#283a4c}
:root[data-theme=light] .sandy-concept{--sandy-raise:#f1efe9;--sandy-raise-2:#fff}
.sandy-concept .sandy-hero[data-ui-started=true] :is(.sandy-header-home,.sandy-chat-header .sandy-chat-action,.sandy-chat-header .sandy-theme-toggle){box-sizing:border-box;height:44px;min-height:44px;border:0;background:var(--sandy-raise)}
.sandy-concept .sandy-hero[data-ui-started=true] .sandy-header-home{display:flex;gap:2px;padding:4px 4px 4px 8px;border-radius:999px}
.sandy-concept .sandy-hero[data-ui-started=true] .sandy-header-home .sandy-header-portrait{width:36px;height:36px}
.sandy-concept .sandy-hero[data-ui-started=true] .sandy-chat-header .sandy-theme-toggle{width:44px}
.sandy-concept .sandy-hero[data-ui-started=true] .sandy-chat-composer{border-color:transparent;background:color-mix(in srgb,var(--sandy-raise) 88%,transparent)}
.sandy-concept .sandy-hero[data-ui-started=true] .sandy-suggestions button{background:var(--sandy-raise-2)}
.sandy-concept .sandy-hero[data-ui-started=true] .sandy-suggestions button:not(.sandy-suggestion-agent){border-color:transparent}
.sandy-concept .sandy-jump{border-color:transparent;background:color-mix(in srgb,var(--sandy-raise) 88%,transparent)}
/* No outline on the glass header bar, only its soft shadow; the bottom card has a slight bevel, a light top edge and a
   darker bottom edge, like Claude's message box (Matthew, 2026-10-29). */
.sandy-concept .sandy-hero[data-ui-started=true] .sandy-chat-header{border-bottom:0}
.sandy-concept .sandy-hero[data-ui-started=true] .sandy-chat-composer{box-shadow:inset 0 1px 0 #ffffff1f,inset 0 -1px 0 #00000040,0 1px 2px #0000003d,0 6px 24px #00000052}
:root[data-theme=light] .sandy-concept .sandy-hero[data-ui-started=true] .sandy-chat-composer{box-shadow:inset 0 1px 0 #fff,inset 0 -1px 0 #0b1b2a24,0 0 0 1px #0b1b2a0f,0 2px 4px #0b1b2a14,0 8px 28px #0b1b2a29}
/* The chat header 10% taller (Matthew, 2026-10-29): 62 to 68 px on desktop, 60 to 66 px on a phone; unchanged while typing. */
.sandy-concept .sandy-hero[data-ui-started=true]:not([data-keyboard=true]) .sandy-chat-header{padding-block:12px}
@media(max-width:760px){.sandy-concept .sandy-hero[data-ui-started=true]:not([data-keyboard=true]) .sandy-chat-header{padding-block:11px}}
/* One centred column on wide screens (Matthew, 2026-10-29): the conversation lines up with the 716 px message card,
   Sandy on the column's left, the visitor on its right; the scroll bar stays at the window edge. */
@media(min-width:761px){.sandy-concept .sandy-hero[data-ui-started=true] .sandy-chat-messages{padding-inline:max(32px,calc((100% - 716px) / 2))}}
/* The pier banner above a desktop chat a little taller (Matthew, 2026-10-29): 78 to 96 px. */
@media(min-width:761px){.sandy-concept .sandy-hero[data-ui-started=true] .sandy-area-header{height:96px}}
/* Sandy's circle rides the right edge of the page column on wide screens (Matthew, 2026-10-29): centred on the edge of
   the 1040 px column, never closer than 16 px to the window. Phones keep it in the corner. */
@media(min-width:761px){.sandy-concept .sandy-ask-bar{right:max(16px,calc((100% - 1040px) / 2 - 32px))}}
/* In the card the "more pills" fade ends in the card's own colour, not the page's (Matthew, 2026-10-29: it read as a
   dark shadow block above the round button), and a pill row with no pills takes no room. */
.sandy-concept .sandy-hero[data-ui-started=true] .sandy-suggestions-wrap[data-more=true]:after{background:linear-gradient(90deg,transparent,var(--sandy-raise))}
.sandy-concept .sandy-suggestions-wrap:not(:has(button)){display:none}
/* Larger reading size in a chat (Matthew, 2026-10-29, like the Claude app): 17 px on every screen, for Sandy's replies,
   lists and the visitor's messages, and the message box. The welcome greeting matches it (Matthew, same day). */
.sandy-concept .sandy-chat-message :is(p,ul){font-size:17px;line-height:1.55}
.sandy-concept .sandy-hero[data-ui-started=true] .sandy-compose-row textarea{font-size:17px}
/* EDITORIAL READING SIZES (Matthew, 2026-10-29: "a little small"), in step with the chat's 17 px. Body paragraphs 17 px,
   intro lines 19 px (18 on a phone), secondary notes 15 px. Small caps labels, captions, sources and meta lines stay small. */
body.sandy-concept :is(.rw-history-copy p:not(.rw-area-eyebrow),.rw-area-story,.sandy-inquiry-intro p:not(.eyebrow)){font-size:17px;line-height:1.6}
body.sandy-concept :is(.sandy-guide-heading p:not(.eyebrow),.rw-area-intro){font-size:19px;line-height:1.5}
body.sandy-concept :is(.rw-map-heading p,.rw-school-intro p,.rw-area-fact p,.sandy-inquiry-reminder p,.inquiry-intro p){font-size:15px;line-height:1.55}
@media(max-width:760px){body.sandy-concept :is(.sandy-guide-heading p:not(.eyebrow),.rw-area-intro){font-size:18px}}
/* School numbers on a phone (Matthew, 2026-10-29: "squished" in three 88 px columns): one row per figure, the figure
   on the left, its label and source on the right, divided by hairlines. Wide screens keep the three columns. */
@media(max-width:760px){
 body.sandy-concept .rw-school-metrics{grid-template-columns:1fr;gap:0}
 body.sandy-concept .rw-school-metrics>div{display:grid;grid-template-columns:88px 1fr;grid-template-areas:"value label" "value detail";column-gap:16px;align-items:center;padding:14px 0;border-top:1px solid var(--line)}
 body.sandy-concept .rw-school-metrics>div:first-child{border-top:0;padding-top:4px}
 body.sandy-concept .rw-school-metrics dt{grid-area:label;align-self:end;margin:0;font-size:14px}
 body.sandy-concept .rw-school-metrics dd:not(.rw-stat-detail){grid-area:value;margin:0;font-size:32px;line-height:1}
 body.sandy-concept .rw-school-metrics .rw-stat-detail{grid-area:detail;align-self:start;margin:2px 0 0;font-size:13px}
}
/* Place card links: only the word is underlined, never the arrow (Matthew, 2026-10-29). The chat's general link rule
   underlined the whole link, arrow included. */
.sandy-concept .sandy-chat-message .sandy-place-links a{text-decoration:none}
