.charlotte-personal,.charlotte-settings{width:min(100%,680px);margin:0 auto;text-align:left;overflow-wrap:anywhere}

.charlotte-personal label,.charlotte-settings label{display:block;margin:10px 0 4px;font-weight:600}

.charlotte-personal textarea,.charlotte-settings textarea,.charlotte-settings input:not([type=checkbox]){width:100%;min-height:44px;font:inherit;padding:10px;border:1px solid #cbd0de;border-radius:10px;box-sizing:border-box;background:#fff}

.charlotte-personal-actions,.charlotte-sources{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin:8px 0}

.charlotte-personal .btn,.charlotte-settings .btn{min-height:44px;max-width:100%;white-space:normal}

.charlotte-turn,.charlotte-memory{padding:10px 0;border-bottom:1px solid #e5e6ee}

.charlotte-turn p{white-space:pre-wrap;margin:6px 0;font-size:1rem}

.charlotte-settings h3{margin-top:18px;padding:8px 10px;border-radius:8px;background:linear-gradient(100deg,#fff1d9,#ffeafa,#e8eeff,#e4fff0)}

.charlotte-settings input[type=checkbox]{min-width:24px;min-height:24px;margin:10px;vertical-align:middle}

.charlotte-settings label:has(input[type=checkbox]){min-height:44px}

.source-chip{font-size:.85rem;background:#f0f3f9;padding:7px;border-radius:8px}

.charlotte-personal small{display:block;color:#51556a;margin:10px 0}

.charlotte-personal #charlotte-messages:empty{display:none}



/* The artwork stays intact; the button shrinks the quiet flame as one layer. */

.voice-modal .flame-toggle{display:block;width:100%;border:0;background:transparent;cursor:pointer;transition:transform .45s ease,filter .45s ease,opacity .45s ease;transform-origin:center bottom;min-height:44px;padding:0;box-shadow:none}

.voice-modal .flame-toggle[data-awake=false]{transform:scale(.9);filter:saturate(.55) brightness(.72);opacity:.65}

.voice-modal .flame-toggle[data-awake=true]{transform:scale(1);filter:none;opacity:1}

.voice-modal .flame-toggle:focus-visible{outline:3px solid #6357cf;outline-offset:3px;border-radius:18px}

.voice-modal .flame-toggle[data-awake=false] .charlotte-flame-image{animation:none!important;transform:translate(-50%,-50%)!important}

@media(prefers-reduced-motion:reduce){.voice-modal .flame-toggle{transition:none}}



.charlotte-settings select{width:100%;min-height:44px;font:inherit;padding:8px;border:1px solid #cbd0de;border-radius:10px;background:#fff}

/* Soft masks isolate the original orange, rose, violet and cyan ribbons. */

.voice-modal .flame-toggle .flame-color{z-index:3;opacity:.26;mix-blend-mode:normal;filter:drop-shadow(0 0 3px #d466d94d);pointer-events:none;animation:charlotte-ribbon 5.8s ease-in-out infinite alternate!important}

.voice-modal .flame-toggle .flame-color-warm{mask-image:linear-gradient(115deg,#000 0%,#000 24%,transparent 54%);animation-duration:6.1s!important;--drift:-1.4%;--lean:-1.1deg}

.voice-modal .flame-toggle .flame-color-rose{mask-image:linear-gradient(100deg,transparent 24%,#000 43%,transparent 68%);animation-delay:-2.2s!important;--drift:1.2%;--lean:1.2deg}

.voice-modal .flame-toggle .flame-color-violet{mask-image:linear-gradient(90deg,transparent 35%,#000 60%,transparent 81%);animation-duration:7.2s!important;animation-delay:-3.6s!important;--drift:-.9%;--lean:-.8deg}

.voice-modal .flame-toggle .flame-color-cool{mask-image:linear-gradient(105deg,transparent 48%,#000 76%);animation-duration:5.2s!important;animation-delay:-1.4s!important;--drift:1.4%;--lean:1deg}

@keyframes charlotte-ribbon{from{transform:translate(-50%,-50%) scale(.995,1);opacity:.15}to{transform:translate(calc(-50% + var(--drift)),-51.5%) scale(1.015,1.04) rotate(var(--lean));opacity:.3}}

.voice-modal .flame-toggle .flame-spark{position:absolute;z-index:4;left:calc(50% + var(--spark-x));top:67%;width:3px;height:5px;border-radius:50%;background:var(--spark-color);box-shadow:0 0 5px var(--spark-color);pointer-events:none;opacity:0;animation:charlotte-spark-rise var(--spark-time) ease-out infinite;animation-delay:var(--spark-delay)}

.spark-1{--spark-x:-27px;--spark-color:#efa638;--spark-time:5.2s;--spark-delay:-.5s;--spark-drift:-12px}.spark-2{--spark-x:20px;--spark-color:#2bbcdc;--spark-time:6.2s;--spark-delay:-2s;--spark-drift:14px}.spark-3{--spark-x:-9px;--spark-color:#e73ca6;--spark-time:4.8s;--spark-delay:-3.1s;--spark-drift:7px}.spark-4{--spark-x:32px;--spark-color:#8760e6;--spark-time:6.8s;--spark-delay:-4.8s;--spark-drift:12px}.spark-5{--spark-x:-34px;--spark-color:#e69b42;--spark-time:7.3s;--spark-delay:-2.7s;--spark-drift:-16px}.spark-6{--spark-x:4px;--spark-color:#5dd8ba;--spark-time:5.8s;--spark-delay:-4s;--spark-drift:-5px}

@keyframes charlotte-spark-rise{0%,12%{opacity:0;transform:translate(0,0) scale(.6)}28%{opacity:.65}50%{opacity:.35}75%,100%{opacity:0;transform:translate(var(--spark-drift),-120px) scale(.2)}}

.voice-modal .flame-toggle[data-awake=false] .flame-color,.voice-modal .flame-toggle[data-awake=false] .flame-spark{animation:none!important;opacity:0!important}

@media(prefers-reduced-motion:reduce){.voice-modal .flame-toggle .flame-color,.voice-modal .flame-toggle .flame-spark{animation:none!important;opacity:0!important}}



.voice-modal .flame-toggle[data-awake=true] .flame-image-front{animation:charlotte-image-idle 4.8s ease-in-out infinite alternate!important}

.voice-modal .flame-toggle[data-awake=true] .flame-image-back{animation:charlotte-image-back 6.3s ease-in-out infinite alternate!important}

@media(prefers-reduced-motion:reduce){.voice-modal .flame-toggle[data-awake=true] .flame-image-front,.voice-modal .flame-toggle[data-awake=true] .flame-image-back{animation:none!important}}



.voice-modal .flame-toggle[aria-pressed=true]{transform:scale(.56)}

.voice-modal .charlotte-restored .voice-privacy{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}



.charlotte-text{width:min(100%,720px);margin:auto;padding:12px;box-sizing:border-box}.charlotte-text textarea{width:100%;box-sizing:border-box}.charlotte-messages{overflow-wrap:anywhere}.charlotte-mic-status{font-size:14px}.voice-modal .charlotte-restored .voice-privacy{position:static;width:auto;height:auto;clip:auto;clip-path:none;overflow:visible;margin:8px;text-align:center}



.charlotte-usage-counter{display:flex;flex-direction:column;font-size:12px;line-height:1.4;font-weight:500;white-space:nowrap;color:#574564}.charlotte-usage-counter span{display:block}



/* Charlotte controls belong to the open screen, above the persistent app navigation. */

.charlotte-screen-footer{position:fixed;left:16px;right:16px;bottom:calc(var(--phone-nav-height,68px) + var(--keyboard-inset,0px) + env(safe-area-inset-bottom,0px) + 8px);display:flex;align-items:center;justify-content:space-between;gap:16px;padding:8px 0;background:rgba(255,255,255,.97);z-index:450;text-align:left}

.charlotte-screen-footer .charlotte-mode-toggle{min-height:44px;min-width:88px;background:linear-gradient(125deg,#fff2df,#f8e8f5,#e9e6fc,#e3f5fb);border:1px solid #c9b6e2;color:#503851}

.charlotte-text{padding-bottom:90px}.voice-modal .charlotte-restored{padding-bottom:90px!important}

@media(min-width:901px){.charlotte-screen-footer{left:max(256px,calc((100vw + 240px - 1100px)/2 + 16px));right:max(16px,calc((100vw - 240px - 1100px)/2 + 16px))}}

@media print{.charlotte-screen-footer{display:none!important}}



/* Familiar instant-messenger chrome, sized for today's phone screens. */

.charlotte-im{width:min(100%,780px);padding:8px 0 90px;font-family:Tahoma,Verdana,Arial,sans-serif;color:#171717}

.charlotte-im-window{background:#deded6;padding:3px;border:2px solid;border-color:#fff #656565 #656565 #fff;box-shadow:0 3px 12px #24324c22;text-align:left}

.charlotte-im-title{display:flex;align-items:center;gap:8px;padding:9px 10px;background:linear-gradient(90deg,#09296f,#1c66ae);color:#fff;font-size:15px;line-height:1.4}

.charlotte-im-title>span{color:#fff2a2;font-size:20px}.charlotte-im-title strong{font-weight:700}

.charlotte-im-toolbar{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:6px;padding:9px 10px;font-size:12px;border-bottom:1px solid #aaa}

.charlotte-im .charlotte-mic-status{font-size:12px;color:#414141;margin:0}

.charlotte-im .charlotte-messages{height:clamp(220px,37dvh,430px);overflow:auto;overscroll-behavior:contain;background:#fff;border:2px solid;border-color:#777 #fff #fff #777;margin:8px;padding:12px;scrollbar-gutter:stable;box-sizing:border-box}

.charlotte-im .charlotte-messages:empty::before{content:'Your conversation starts here.';color:#666;font-size:14px}

.charlotte-im .charlotte-turn{border:0;padding:0;margin:0 0 14px}

.charlotte-im .charlotte-im-line{font-family:Arial,sans-serif;font-size:16px;line-height:1.5;white-space:pre-wrap;overflow-wrap:anywhere;margin:0 0 8px}

.charlotte-im .from-you .charlotte-im-sender{color:#153c99}.charlotte-im .from-charlotte .charlotte-im-sender{color:#b51f2b}

.charlotte-im-compose{padding:0 8px 8px}.charlotte-im-compose label{display:block;font-size:13px;font-weight:700;margin:3px 0 6px}

.charlotte-im textarea{display:block;min-height:92px;padding:10px;border:2px solid;border-color:#777 #fff #fff #777;border-radius:0;background:#fff;font:16px/1.5 Arial,sans-serif;color:#171717;resize:vertical}

.charlotte-im textarea:focus-visible{outline:2px solid #245eb0;outline-offset:1px}

.charlotte-im-actions{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-top:8px}.charlotte-im-actions small{font-size:11px;line-height:1.5;color:#444}

.charlotte-im .charlotte-im-actions .btn{min-height:44px;min-width:88px;border:2px solid;border-color:#fff #666 #666 #fff;border-radius:0;background:#e5e5dd;color:#111;box-shadow:none;font-weight:700}

.charlotte-im .charlotte-im-actions .btn:active{border-color:#666 #fff #fff #666}.charlotte-im .charlotte-im-actions .btn:focus-visible{outline:2px solid #245eb0;outline-offset:2px}

.charlotte-im-status{font-size:12px;line-height:1.4;margin:0 3px 3px;padding:6px 8px;border:1px solid;border-color:#a0a0a0 #fff #fff #a0a0a0;background:#d8d8d0}

.charlotte-im #charlotte-retention-note{display:block;font:12px/1.5 Arial,sans-serif;color:#60636d;margin:10px 4px}

.charlotte-im .charlotte-sources{margin:0}.charlotte-im .charlotte-sources:empty{display:none}.charlotte-im .source-chip{border-radius:2px;font-size:12px}

@media(max-width:480px){.charlotte-im{padding-top:0}.charlotte-im-title{font-size:14px}.charlotte-im .charlotte-messages{margin:6px;padding:10px;height:34dvh;min-height:200px}.charlotte-im-actions small{max-width:190px}}



.voice-modal .charlotte-saying{max-width:34ch;margin:8px auto 16px;padding:0 16px;color:#79538c;font-size:clamp(15px,2vw,18px);font-weight:500;line-height:1.5;text-align:center;font-style:italic;overflow-wrap:anywhere}



.charlotte-im-window{display:flex;flex-direction:column;height:clamp(380px,calc(100dvh - 265px),700px)}

.charlotte-im .charlotte-messages{flex:1 1 auto;height:auto;min-height:100px}

.charlotte-im-title,.charlotte-im-toolbar,.charlotte-im-compose,.charlotte-im-status{flex-shrink:0}

.modal-header h2[tabindex="-1"]:focus,#page h1[tabindex="-1"]:focus{outline:none}

@media(max-width:480px){.charlotte-im-window{height:clamp(380px,calc(100dvh - 260px),700px)}.charlotte-im .charlotte-messages{height:auto;min-height:100px}}

/* Open conversation surface: one scrolling transcript and a stable composer. */
.charlotte-text.charlotte-im{font-family:Arial,sans-serif;color:#292532;background:#fff;padding:0;width:min(100%,820px);display:flex;flex-direction:column;min-height:0}
.charlotte-text .charlotte-im-window{background:#fff;border:0;box-shadow:none;padding:0;order:0;min-height:0;height:min(72dvh,760px)}
.charlotte-text .charlotte-im-title{background:#fff;color:#372a48;padding:12px 16px;font-size:20px;justify-content:space-between;border:0}
.charlotte-text .charlotte-im-title span{color:#b492ca;font-size:20px}
.charlotte-text .charlotte-chat-close{min-width:44px;min-height:44px;padding:4px;border:0;background:#fff;font-size:25px;color:#665473}
.charlotte-text .charlotte-im-toolbar{border:0;color:#75697e;padding:0 16px 8px;font-size:12px}
.charlotte-text .charlotte-messages{border:0;margin:0;padding:16px;min-height:0!important;height:auto!important;flex:1;scrollbar-gutter:auto;overflow:auto;overflow-anchor:none}
.charlotte-text .charlotte-turn{margin-bottom:24px}
.charlotte-text .charlotte-im-line{line-height:1.55;font-weight:400}
.charlotte-text .charlotte-im-sender{display:block;font-size:12px;margin-bottom:4px;color:#766284!important;font-weight:600}
.charlotte-text .from-you{background:#f7f3fa;border-radius:16px;padding:10px 14px;margin-left:28px}
.charlotte-text .from-charlotte{padding:8px 0;margin-right:10px}
.charlotte-text .charlotte-im-compose{padding:10px 14px 6px;background:#fff;flex-shrink:0;border-top:1px solid #f0ebf4}
.charlotte-text .charlotte-im-compose label{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}
.charlotte-text textarea{min-height:48px;height:48px;max-height:110px;width:100%;resize:none;border:1px solid #dacfe5;border-radius:16px;padding:11px 14px;background:#fff;font:16px/1.5 Arial,sans-serif;box-shadow:none}
.charlotte-text textarea:focus-visible{outline:2px solid #b69acc;outline-offset:1px}
.charlotte-text .charlotte-im-actions{margin-top:6px}
.charlotte-text .charlotte-im-actions small{color:#867a90}
.charlotte-text .charlotte-im-actions .btn,.charlotte-reply-choice{border:1px solid #decfe9;border-radius:16px;background:linear-gradient(115deg,#fff0ef,#fff9dc 25%,#eafbf4 50%,#edf2ff 75%,#f7eaff);color:#503863;box-shadow:0 2px 8px #bea3d51a;font:600 14px/1.35 Arial,sans-serif;min-height:44px;padding:10px 15px;cursor:pointer}
.charlotte-reply-choices{display:flex;gap:8px;flex-wrap:wrap;margin-top:10px}
.charlotte-reply-choice{position:relative;padding-right:27px;text-align:left;max-width:100%;overflow-wrap:anywhere}
.charlotte-reply-choice::after{content:'✧';position:absolute;right:9px;top:7px;color:#9d73b2;font-size:13px}
.charlotte-reply-choice:hover{box-shadow:0 0 12px #d7b9ed70}.charlotte-reply-choice:focus-visible{outline:2px solid #8864a2;outline-offset:3px}
.charlotte-reply-choice:disabled{cursor:default;opacity:.65;box-shadow:none}
.charlotte-reply-choice.is-selected{opacity:1;border:2px solid #8864a2;background:linear-gradient(115deg,#fff0ef,#fff9dc 25%,#eafbf4 50%,#edf2ff 75%,#f7eaff)}
.charlotte-reply-choice.is-selected::after{content:'✓';color:#503863}
.charlotte-text .charlotte-im-status{border:0;background:#fff;color:#7a7082;padding:4px 14px;font-size:11px;margin:0}
.charlotte-text .charlotte-screen-footer{position:static!important;inset:auto!important;order:1;flex-shrink:0;width:100%;margin:0!important;padding:7px 14px!important;background:#fff!important;border:0!important;box-shadow:none!important;font-size:11px}
.charlotte-text .charlotte-mode-toggle{min-height:36px;padding:5px 12px;font-size:14px}
.charlotte-text #charlotte-retention-note{display:none}
@media(max-width:760px){
 body.charlotte-chat-open{overflow:hidden!important;overscroll-behavior:none}
 body.charlotte-chat-open .mobile-bottom-nav{display:none!important}
 body.charlotte-chat-open #modal-root{position:fixed!important;top:var(--charlotte-chat-top,0px)!important;left:0!important;right:0!important;bottom:auto!important;height:var(--charlotte-chat-height,100dvh)!important;z-index:1200;background:#fff;overflow:hidden!important;margin:0!important;padding:0!important}
 body.charlotte-chat-open #modal-root .modal-overlay,body.charlotte-chat-open #modal-root .modal,body.charlotte-chat-open #modal-root .modal-body{height:100%!important;max-height:none!important;min-height:0!important;overflow:hidden!important;margin:0!important;padding:0!important;border:0!important;border-radius:0!important;background:#fff!important;box-sizing:border-box}
 body.charlotte-chat-open #modal-root .modal-header{display:none!important}
 body.charlotte-chat-open .charlotte-text{height:100%;width:100%;padding-top:env(safe-area-inset-top);padding-bottom:env(safe-area-inset-bottom);box-sizing:border-box}
 body.charlotte-chat-open .charlotte-im-window{height:auto;flex:1;min-height:0}
 body.charlotte-chat-open .charlotte-im-actions small{display:none}
 body.charlotte-chat-open .charlotte-im-actions{justify-content:flex-end}
}


/* Text chat: Voice sits left, away from the Send action. */
.charlotte-text .charlotte-screen-footer{justify-content:flex-start}

.charlotte-estimate-welcome{background:#fff;color:#392f46;text-align:left;padding:16px;border:1px solid #eadff0;border-radius:18px;margin:8px auto 16px;max-width:620px}.charlotte-estimate-welcome p{font:400 19px/1.5 Arial,sans-serif;margin:8px 0 12px}.charlotte-estimate-welcome small{display:block;color:#7b6b88;font:12px/1.5 Arial,sans-serif}.charlotte-estimate-welcome .charlotte-reply-choices{margin-bottom:12px}

/* A single conversational estimate opening, without an instruction card. */
.charlotte-estimate-welcome{border:0;background:transparent;padding:0 12px;margin:8px auto;text-align:center}
.charlotte-estimate-welcome .charlotte-reply-choices{justify-content:center}
.charlotte-voice:has([data-estimate-welcome]) .charlotte-saying,.charlotte-voice:has([data-estimate-welcome]) #voice-state-title{display:none}

/* Choose the estimate channel before displaying conversation controls. */
.charlotte-text:has([data-estimate-welcome]) .charlotte-im-compose,.charlotte-text:has([data-estimate-welcome]) .charlotte-screen-footer,.charlotte-text:has([data-estimate-welcome]) .charlotte-im-status{display:none}
.charlotte-text .charlotte-estimate-welcome{padding:24px 0;text-align:left}
.charlotte-text .charlotte-estimate-welcome .charlotte-reply-choices{justify-content:flex-start}

/* Main text chat retains phone navigation above the on-screen keyboard. */
@media screen and (max-width:760px){
 body.charlotte-chat-open .mobile-bottom-nav{display:grid!important;z-index:1301!important;bottom:var(--keyboard-inset,0px)!important}
 body.charlotte-chat-open #modal-root{height:calc(var(--charlotte-chat-height,100dvh) - 72px - env(safe-area-inset-bottom))!important}
 body.charlotte-chat-open .charlotte-mode-toggle{min-height:44px!important}
}


/* Compact text chat: conversation first, secondary controls disclosed. */
.charlotte-text .charlotte-im-title{padding:4px 14px;min-height:48px}
.charlotte-text .charlotte-im-toolbar{display:flex;align-items:center;justify-content:space-between;padding:0 14px;min-height:32px;position:relative;flex-shrink:0}
.charlotte-chat-options summary{cursor:pointer;min-height:44px;display:flex;align-items:center;padding:0 10px;border-radius:10px;color:#503863}
.charlotte-chat-options summary:focus-visible{outline:2px solid #8864a2;outline-offset:2px}
.charlotte-chat-options summary{border:1px solid #dacfe5;font-weight:600;min-width:64px;justify-content:center}
.charlotte-chat-options-content{position:absolute;right:14px;top:100%;z-index:30;width:min(300px,calc(100vw - 28px));padding:12px;background:#fff;border:1px solid #dacfe5;border-radius:12px;box-shadow:0 4px 16px #29253226;box-sizing:border-box}
.charlotte-chat-options:not([open]) .charlotte-chat-options-content{display:none}
.charlotte-chat-options-content small{display:block;margin-top:8px;font-size:12px;line-height:1.45}
.charlotte-text .charlotte-im-compose{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:end;gap:8px;padding:8px 14px}
.charlotte-text .charlotte-im-actions{display:flex;align-items:center;gap:6px;margin:0}
.charlotte-text .charlotte-im-actions small{display:none}
.charlotte-text .charlotte-im-actions .btn{padding:10px;min-width:44px;min-height:44px}
.charlotte-text .charlotte-im-status{padding:0 14px 4px;min-height:16px;flex-shrink:0}
.charlotte-text .charlotte-im-window{height:min(calc(100dvh - 70px),900px)}
.charlotte-text .charlotte-im-line{max-width:68ch}
body.charlotte-chat-open #modal-root .modal-header{display:none!important}
body.charlotte-chat-open #app .mobile-bottom-nav{display:none!important}
body.charlotte-chat-open{overflow:hidden!important}
@media(max-width:760px){body.charlotte-chat-open #app .mobile-bottom-nav{display:none!important}body.charlotte-chat-open #modal-root{height:var(--charlotte-chat-height,100dvh)!important;bottom:auto!important}body.charlotte-chat-open .charlotte-text{height:100%;padding-bottom:env(safe-area-inset-bottom)!important}body.charlotte-chat-open .charlotte-im-window{height:auto;flex:1;min-height:0}.charlotte-text .charlotte-im-compose{padding:8px}.charlotte-text .charlotte-messages{padding:8px 14px}.charlotte-text .charlotte-im-title{padding:2px 14px}}
