/* chat-widget.css — shared floating chat for all Cotier pages */
.cw{--cw-deep:#17372e;--cw-ink:#203d34;--cw-paper:#f4f1e8;--cw-surface:#fbf9f3;--cw-rule:#d6d6c9;--cw-coral:#aa462f;--cw-mute:#647568;--cw-serif:"Instrument Serif",Georgia,serif;--cw-mono:"DM Mono",monospace;--cw-sans:"DM Sans",system-ui,sans-serif;--cw-vv:0px;font-family:var(--cw-sans);color:var(--cw-ink)}
.cw *{box-sizing:border-box}
.cw-launcher{position:fixed;right:clamp(1rem,3vw,2rem);bottom:calc(clamp(1rem,3vw,2rem) + env(safe-area-inset-bottom));z-index:900;width:3.75rem;height:3.75rem;border-radius:50%;border:0;background:var(--cw-deep);color:var(--cw-paper);display:grid;place-items:center;cursor:pointer;box-shadow:0 10px 24px -10px rgba(23,55,46,.55),0 0 0 1px rgba(244,241,232,.18) inset;transition:transform .2s ease,background .2s ease}
.cw-launcher:hover{background:#204a3d;transform:translateY(-2px)}
.cw-launcher:focus-visible{outline:3px solid var(--cw-coral);outline-offset:4px}
.cw-launcher svg{width:1.5rem;height:1.5rem}
.cw-launcher[aria-expanded="true"]{transform:scale(.88);opacity:0;pointer-events:none}
.cw-panel{position:fixed;right:clamp(1rem,3vw,2rem);bottom:calc(clamp(1rem,3vw,2rem) + env(safe-area-inset-bottom) + var(--cw-vv));z-index:901;width:min(25rem,90vw);height:min(38rem,calc(100dvh - 2.5rem - var(--cw-vv)));display:flex;flex-direction:column;background:var(--cw-surface);border:1px solid var(--cw-rule);box-shadow:0 24px 60px -24px rgba(23,55,46,.45);opacity:0;transform:translateY(12px);transition:opacity .22s ease,transform .22s ease;visibility:hidden}
.cw-panel.is-open{opacity:1;transform:none;visibility:visible}
.cw-panel[hidden]{display:none}
.cw-head,.cw-notice,.cw-form,.cw-status,.cw-recover{flex-shrink:0}
.cw-log{min-height:0}
.cw-head{display:flex;align-items:center;justify-content:space-between;gap:.75rem;padding:.9rem 1rem;background:var(--cw-deep);color:var(--cw-paper);position:relative;overflow:hidden}
.cw-head::before{content:"";position:absolute;inset:0;opacity:.08;background-image:linear-gradient(rgba(244,241,232,.45) 1px,transparent 1px),linear-gradient(90deg,rgba(244,241,232,.45) 1px,transparent 1px);background-size:34px 34px;pointer-events:none}
.cw-head>*{position:relative}
.cw-title{margin:0;font:400 1.5rem/1 var(--cw-serif);letter-spacing:-.01em}
.cw-sub{display:block;margin-top:.3rem;font:400 .7rem/1.4 var(--cw-mono);letter-spacing:.07em;text-transform:uppercase;color:#cad4c7}
.cw-close{width:2.75rem;height:2.75rem;border:1px solid rgba(244,241,232,.3);background:transparent;color:var(--cw-paper);display:grid;place-items:center;cursor:pointer;transition:background .18s,border-color .18s}
.cw-close:hover{background:rgba(244,241,232,.1);border-color:rgba(244,241,232,.6)}
.cw-close:focus-visible{outline:2px solid #e6a28c;outline-offset:2px}
.cw-close svg{width:1rem;height:1rem}
.cw-notice{margin:0;padding:.65rem 1rem;background:#ebe9de;border-bottom:1px solid var(--cw-rule);color:#4c5d51;font-size:.75rem;line-height:1.5}
.cw-log{flex:1;overflow-y:auto;overscroll-behavior:contain;padding:1rem;display:flex;flex-direction:column;gap:.75rem;outline:none}
.cw-log:focus-visible{box-shadow:inset 0 0 0 2px var(--cw-coral)}
.cw-empty{margin:auto 0 0;color:var(--cw-mute);font:400 1.15rem/1.4 var(--cw-serif)}
.cw-empty small{display:block;margin-top:.4rem;font:400 .7rem/1.5 var(--cw-mono);letter-spacing:.07em;text-transform:uppercase}
.cw-msg{max-width:85%;padding:.65rem .85rem;font-size:.9375rem;line-height:1.55;white-space:pre-wrap;overflow-wrap:anywhere;animation:cw-in .22s ease-out}
.cw-msg-user{align-self:flex-end;background:var(--cw-deep);color:var(--cw-paper)}
.cw-msg-assistant{align-self:flex-start;background:#fff;background:#f1efe4;border:1px solid var(--cw-rule);color:var(--cw-ink)}
.cw-msg-label{display:block;margin-bottom:.25rem;font:400 .65rem/1.4 var(--cw-mono);letter-spacing:.07em;text-transform:uppercase;color:var(--cw-mute)}
.cw-msg-user .cw-msg-label{color:#cad4c7}
.cw-msg-text{white-space:pre-wrap}
.cw-msg.is-failed{border-style:dashed;opacity:.9}
.cw-msg-assistant.is-incomplete{border:1px dashed var(--cw-coral)}
.cw-msg-assistant.is-incomplete .cw-msg-label{color:var(--cw-coral)}
.cw-dots{display:inline-flex;gap:.3rem;padding:.2rem 0}
.cw-dots i{width:.4rem;height:.4rem;border-radius:50%;background:var(--cw-mute);animation:cw-dot 1.1s infinite ease-in-out}
.cw-dots i:nth-child(2){animation-delay:.15s}.cw-dots i:nth-child(3){animation-delay:.3s}
.cw-status{margin:0;padding:0 1rem;min-height:0;font:400 .72rem/1.5 var(--cw-mono);letter-spacing:.04em;color:var(--cw-mute)}
.cw-status:not(:empty){padding:.5rem 1rem}
.cw-status.is-error{color:var(--cw-coral);background:#f6e9e2;border-top:1px solid #e7cbbf}
.cw-status a{color:var(--cw-coral);text-decoration:underline;text-underline-offset:.2em}
.cw-recover{display:none;gap:.5rem;padding:0 1rem .6rem;background:#f6e9e2}
.cw-recover.is-visible{display:flex}
.cw-btn{min-height:2.5rem;padding:0 .9rem;border:1px solid var(--cw-ink);background:transparent;color:var(--cw-ink);font:500 .7rem/1 var(--cw-mono);letter-spacing:.06em;text-transform:uppercase;cursor:pointer;transition:background .18s,color .18s}
.cw-btn:hover{background:var(--cw-ink);color:var(--cw-paper)}
.cw-btn-primary{background:var(--cw-coral);border-color:var(--cw-coral);color:#fff9ed}
.cw-btn-primary:hover{background:#803521;border-color:#803521}
.cw-btn:focus-visible{outline:2px solid var(--cw-coral);outline-offset:2px}
.cw-form{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:.5rem;padding:.75rem;border-top:1px solid var(--cw-rule);background:var(--cw-surface)}
.cw-input{width:100%;resize:none;max-height:8rem;min-height:2.75rem;padding:.65rem .75rem;border:1px solid #c7cabe;border-radius:0;background:var(--cw-paper);color:var(--cw-ink);font:400 1rem/1.4 var(--cw-sans);transition:border-color .18s,box-shadow .18s}
.cw-input:focus{outline:none;border-color:var(--cw-deep);box-shadow:0 0 0 1px var(--cw-deep)}
.cw-input:disabled{opacity:.6}
.cw-send{min-height:2.75rem;padding:0 1rem;border:0;background:var(--cw-coral);color:#fff9ed;font:500 .72rem/1 var(--cw-mono);letter-spacing:.06em;text-transform:uppercase;cursor:pointer;transition:background .18s,opacity .18s}
.cw-send:hover:not(:disabled){background:#803521}
.cw-send:disabled{opacity:.4;cursor:not-allowed}
.cw-send:focus-visible{outline:2px solid var(--cw-deep);outline-offset:2px}
.cw-sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
@keyframes cw-in{from{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}
@keyframes cw-dot{0%,80%,100%{opacity:.3;transform:translateY(0)}40%{opacity:1;transform:translateY(-3px)}}
@media (max-width:30em){.cw-panel{right:5vw;left:5vw;width:auto;bottom:calc(.75rem + var(--cw-vv));height:calc(100dvh - 1.5rem - var(--cw-vv))}}
@media (prefers-reduced-motion:reduce){.cw-launcher,.cw-panel,.cw-msg,.cw-btn,.cw-send,.cw-input{transition:none!important;animation:none!important}.cw-dots i{animation:none!important;opacity:.7}}
/* Conversation page keeps the original two-column ivory/forest layout.
   Reuse the connected chat rather than opening a second floating window. */
.cw--inline{width:100%;position:sticky;top:1.5rem;align-self:flex-start}
.cw--inline .cw-launcher,.cw--inline .cw-close{display:none}
.cw--inline .cw-panel{position:relative;inset:auto;z-index:auto;width:100%;height:calc(100dvh - 10rem);min-height:32rem;max-height:56rem;background:var(--cw-deep);color:var(--cw-paper);border:0;box-shadow:none;transform:none}
.cw--inline .cw-head{padding:0 0 1.25rem;border-bottom:1px solid rgba(244,241,232,.3)}
.cw--inline .cw-title{font-size:2rem}
.cw--inline .cw-sub{font-size:var(--type-mono,.758625rem)}
.cw--inline .cw-head::before{display:none}
.cw--inline .cw-notice{padding:1rem 0;background:transparent;color:#d3ddd2;border-color:rgba(244,241,232,.3);font-size:var(--type-small,.875rem)}
.cw--inline .cw-log{padding:1.5rem 0}
.cw--inline .cw-empty{color:var(--cw-paper);font-size:1.4rem}
.cw--inline .cw-empty small{color:#d3ddd2;font-size:var(--type-mono,.758625rem)}
.cw--inline .cw-msg-user{background:rgba(244,241,232,.08);border:1px solid rgba(244,241,232,.3)}
.cw--inline .cw-status:not(.is-error){color:#d3ddd2}
.cw--inline .cw-form{padding:1rem 0 0;background:transparent;border-color:rgba(244,241,232,.3)}
.cw--inline .cw-input{background:rgba(244,241,232,.04);color:var(--cw-paper);border-color:rgba(244,241,232,.5)}
.cw--inline .cw-input::placeholder{color:#c0cec0}
.cw--inline .cw-input:focus{border-color:var(--cw-paper);box-shadow:0 0 0 1px var(--cw-paper)}
@media(max-width:62.5em){.cw--inline{position:relative;top:auto}.cw--inline .cw-panel{height:min(42rem,90dvh);max-height:none}}
