/* SpicyChat chat hierarchy, spacing and controls, using Amorist's established palette. */
/* The shared DiscoveryShell (sidebar, header, drawer) stays visible; the chat fills the space beside/below it.
   Shell metrics mirror discovery-shell.css: sidebar 224px; header 78px, 72px at <=1023px, 68px at <=539px. */
.discovery-root.feed-chat-route:has(.spicy-chat) > .discovery-mobile-nav { display:none; }
.discovery-root.feed-chat-route.mobile-detail-route:has(.spicy-chat) > .discovery-header { display:flex; }
.discovery-root.feed-chat-route:has(.spicy-chat) > :is(.discovery-header,.discovery-sidebar) { top:var(--chat-viewport-top,0px); }
.discovery-root.feed-chat-route:has(.spicy-chat.is-compact) > .discovery-header { visibility:hidden; }
.discovery-root.feed-chat-route .parity-chat-layout.spicy-chat { --chat-ease:cubic-bezier(.2,.8,.2,1); --chat-shell-left:224px; --chat-shell-header:78px; --chat-content-height:calc(var(--chat-height,100dvh) - var(--chat-shell-header)); position:fixed; left:var(--chat-shell-left); right:0; bottom:auto; top:calc(var(--chat-top,0px) + var(--chat-shell-header)); z-index:20; display:block; width:auto; max-width:none; height:var(--chat-content-height); min-height:0; margin:0; overflow:hidden; color:#37283f; color-scheme:light; background:#fbf8ff; }
@media(max-width:1023px) { .discovery-root.feed-chat-route .parity-chat-layout.spicy-chat { --chat-shell-left:0px; --chat-shell-header:72px; } }
@media(max-width:539px) { .discovery-root.feed-chat-route .parity-chat-layout.spicy-chat { --chat-shell-header:68px; } }
.discovery-root.feed-chat-route .parity-chat-layout.spicy-chat.is-compact { --chat-shell-header:0px; }
.discovery-root.feed-chat-route .spicy-chat::before { display:none; }
.discovery-root.feed-chat-route .spicy-chat .parity-chat-card { position:absolute;inset:0;width:100%;height:100%;min-height:0;max-width:none;margin:0;padding:0;border:0;border-radius:0;box-shadow:none;background:#fbf8ff;overflow:visible; }
.discovery-root.feed-chat-route .spicy-chat.art-visible .parity-chat-card { background:linear-gradient(#fbf8ffdf,#fbf8ffed),var(--chat-art,none) center/cover no-repeat; }
.discovery-root.feed-chat-route .spicy-chat .chat-topbar { width:100%;height:56px;min-height:56px;padding:0 24px;border:0;border-bottom:1px solid #e9e2ef;background:#fff;z-index:3;flex:none; }.spicy-chat-header-inner { display:flex;align-items:center;gap:8px;width:100%;max-width:800px;margin:auto; }.spicy-character-button { display:flex;align-items:center;gap:12px;padding:0;border:0;background:none;color:#37283f;cursor:pointer;text-align:left; }.spicy-character-button .parity-chat-avatar { width:36px;height:36px; }.spicy-character-button h1 { margin:0!important;font-size:20px!important;font-weight:600!important; }.spicy-character-button small { display:block;font-size:12px;color:#92819d;margin-top:2px; }.chat-toolbar-spacer { flex:1; }
.discovery-root.feed-chat-route .spicy-chat .chat-topbar .icon-button { display:grid;place-items:center;border:1px solid #e0d3ed;background:white;color:#7b5c8e;width:36px;height:36px;min-width:36px;border-radius:50%;padding:7px;cursor:pointer; }
.spicy-message-viewport { position:relative;flex:1;min-height:0;display:flex;flex-direction:column; }
.discovery-root.feed-chat-route .spicy-chat .message-area { flex:1;min-height:0;overflow-y:auto;padding:20px max(24px,calc((100% - 800px)/2)) 24px;background:none;scrollbar-color:#d5c6e3 transparent;overflow-anchor:none;overscroll-behavior:contain; }
.discovery-root.feed-chat-route .spicy-chat .parity-chat-intro { display:flex;flex-direction:column;align-items:center;text-align:center;border:0;background:none;box-shadow:none;margin:0 auto 24px;padding:0 30px;max-width:740px; }.spicy-chat .parity-chat-intro .parity-chat-avatar { width:80px;height:80px;border-radius:14px;margin:0 0 8px; }.discovery-root.feed-chat-route .spicy-chat .parity-chat-intro h2 { margin:0 0 8px;font-size:16px;font-weight:500; }.spicy-chat .parity-profile-tags { justify-content:center;gap:5px; }.discovery-root.feed-chat-route .spicy-chat .parity-profile-tags span { padding:6px 13px;font-size:13px;border:0;border-radius:22px;background:#eee5f7;color:#796585; }.discovery-root.feed-chat-route .spicy-chat .parity-chat-intro p { font-size:14px;color:#877493;margin:8px 0 0;line-height:1.6; }.discovery-root.feed-chat-route .spicy-chat .parity-chat-intro .spicy-fiction-notice { font-size:12px;color:#92819d;line-height:1.5;margin:28px 0 0; }
.discovery-root.feed-chat-route .spicy-chat .message { display:flex;width:100%;max-width:100%;margin:0 0 16px;padding:0;border:0;background:none; }.chat-message-column { width:fit-content;max-width:min(680px,85%);min-width:min(240px,100%);padding:12px 14px 8px;background:#f0e9f7;border:1px solid #e9dff1;border-radius:4px 22px 22px 4px; }.spicy-message-header { display:flex;align-items:center;gap:10px;margin-bottom:10px; }.spicy-message-header .parity-chat-avatar,.spicy-user-avatar { display:grid;place-items:center;width:44px;height:44px;border-radius:8px;object-fit:cover;background:#e1d0f3;color:#9462bc; }.spicy-message-header>strong { flex:1;min-width:0;font-size:16px;font-weight:550; }.discovery-root.feed-chat-route .spicy-chat .parity-message-content { width:100%;max-width:none;padding:0;border:0;border-radius:0;background:none;box-shadow:none; }.discovery-root.feed-chat-route .spicy-chat .parity-message-content>p { font-size:var(--chat-font-size,16px);line-height:1.5;color:#4d3b59;overflow-wrap:anywhere; }.discovery-root.feed-chat-route .spicy-chat .parity-message-content em { color:#8a759e; }.discovery-root.feed-chat-route .spicy-chat .message.user { justify-content:flex-end; }.spicy-chat .message.user .chat-message-column { background:#ead9fc;border-color:#dcc3f4;border-radius:22px 4px 4px 22px; }.discovery-root.feed-chat-route .spicy-chat .message.user .parity-message-content { padding:0;background:none;border:0;border-radius:0; }.discovery-root.feed-chat-route .spicy-chat .message.user .parity-message-content>p { color:#55316f; }.discovery-root.feed-chat-route .spicy-chat .message.user .parity-message-content em { color:#785393; }
.discovery-root.feed-chat-route .spicy-chat .parity-message-icon { display:grid;place-items:center;min-width:26px;width:26px;min-height:26px;height:26px;padding:3px;border:0;background:none;color:#8b749b;border-radius:5px;cursor:pointer; }.spicy-message-header>.parity-message-icon { transform:rotate(90deg); }.discovery-root.feed-chat-route .spicy-chat .parity-message-meta { min-height:26px;padding-top:8px;color:#9980ab;font-size:11px; }.discovery-root.feed-chat-route .spicy-chat .parity-message-icon:hover { background:#ddcbea; }
.discovery-root.feed-chat-route .spicy-chat .composer-wrap { position:relative;padding:18px 24px 12px;border:0;background:#fbf8ff;flex:none;z-index:2; }.spicy-composer-inner { max-width:800px;margin:auto;width:100%; }.discovery-root.feed-chat-route .spicy-chat .composer { display:flex;align-items:flex-end;gap:10px;padding:0;border:0;border-radius:0;box-shadow:none;background:none; }.discovery-root.feed-chat-route .spicy-chat .composer:focus-within { border:0;box-shadow:none; }.discovery-root.feed-chat-route .spicy-chat .composer textarea { width:100%;flex:1;min-width:0;box-sizing:border-box;min-height:44px;max-height:140px;overflow-y:hidden;margin:0;padding:10px 12px;border:1px solid #ddcfe8;border-radius:12px;background:#fff;color:#37283f;font-size:16px;line-height:22px;resize:none;outline:none;transition:border-color 180ms,box-shadow 180ms; }.discovery-root.feed-chat-route .spicy-chat .composer textarea:focus { border-color:#9954ed;box-shadow:0 0 0 3px #9954ed10; }.spicy-chat .composer textarea::placeholder { color:#9a87a7; }
.discovery-root.feed-chat-route .spicy-chat .composer .icon-button,.discovery-root.feed-chat-route .spicy-chat .send-button { display:grid;place-items:center;width:36px;height:36px;min-width:36px;min-height:36px;margin-bottom:4px;padding:7px;border:0;border-radius:50%;background:#eee4f7;color:#8a5baa;cursor:pointer; }.discovery-root.feed-chat-route .spicy-chat .composer .spicy-autogenerate { width:28px;min-width:28px;background:none;border:0!important; }.discovery-root.feed-chat-route .spicy-chat .send-button:not(:disabled) { background:#9954ed;color:white; }.spicy-chat .send-button:disabled { opacity:.45;cursor:default; }
.discovery-root.feed-chat-route .spicy-chat .chat-disclosure { margin:7px 0 0;font-size:10px;line-height:1.5;color:#a18dac; }.chat-sr-only { position:absolute!important;width:1px!important;height:1px!important;overflow:hidden!important;clip-path:inset(50%);white-space:nowrap; }
.spicy-chat-menu-wrap,.spicy-tools-wrap { position:relative; }.spicy-chat-menu { position:absolute;right:0;top:42px;width:252px;padding:8px;background:white;border:1px solid #e6d9ef;border-radius:10px;box-shadow:0 12px 32px #38204620;animation:spicy-pop 180ms var(--chat-ease);z-index:8; }.spicy-chat-menu>button { display:flex;align-items:center;gap:18px;width:100%;padding:12px 10px;border:0;border-radius:6px;background:none;color:#5e466e;text-align:left;font-size:14px;cursor:pointer; }.spicy-chat-menu>button:hover { background:#f3eafb; }.spicy-chat-menu>button small { display:block;margin-top:5px;font-size:12px;color:#9b88a7; }.spicy-chat-menu button:disabled { opacity:.5;cursor:default; }.spicy-tools-menu { top:auto;bottom:50px;left:0;right:auto;width:220px; }
.discovery-root.feed-chat-route .spicy-chat .chat-jump-latest { bottom:12px;left:50%; }.chat-typing { display:flex;align-items:center;gap:5px;padding:16px 20px;width:fit-content;border-radius:4px 18px 18px;background:#f0e9f7; }.chat-typing>span { width:6px;height:6px;border-radius:50%;background:#9954ed;animation:spicy-typing 1200ms ease-in-out infinite; }.chat-typing>span:nth-child(2) { animation-delay:150ms; }.chat-typing>span:nth-child(3) { animation-delay:300ms; }
.spicy-chat .message-arriving { animation:spicy-message-in 220ms var(--chat-ease) both; }.spicy-chat button { transition:background-color 180ms,color 180ms,opacity 180ms,box-shadow 180ms; }.spicy-chat button:active:not(:disabled) { scale:.98; }.discovery-root.feed-chat-route:has(.spicy-chat) .dialog[open] { animation:spicy-pop 200ms cubic-bezier(.2,.8,.2,1); }.discovery-root.feed-chat-route:has(.spicy-chat) .dialog::backdrop { animation:spicy-fade 180ms ease; }
@keyframes spicy-message-in { from { opacity:0;transform:translateY(7px); } to { opacity:1;transform:translateY(0); } }
@keyframes spicy-pop { from { opacity:0;transform:translateY(5px) scale(.985); } to { opacity:1;transform:translateY(0) scale(1); } }
@keyframes spicy-fade { from { opacity:0; } to { opacity:1; } }
@keyframes spicy-typing { 0%,60%,100% { opacity:.4;transform:translateY(0); } 30% { opacity:1;transform:translateY(-3px); } }
@media(max-width:720px) {
 .discovery-root.feed-chat-route .spicy-chat .chat-topbar { height:58px;min-height:58px;padding:0 14px; }.spicy-character-button h1 { font-size:16px!important; }.spicy-character-button small { font-size:11px; }.spicy-character-button { gap:8px; }
 .discovery-root.feed-chat-route .spicy-chat .message-area { padding:18px 12px; }.discovery-root.feed-chat-route .spicy-chat .parity-chat-intro { padding:0 14px; }.spicy-chat .parity-chat-intro .parity-chat-avatar { width:72px;height:72px; }.discovery-root.feed-chat-route .spicy-chat .parity-profile-tags span { padding:5px 10px;font-size:11px; }.discovery-root.feed-chat-route .spicy-chat .parity-chat-intro .spicy-fiction-notice { font-size:11px;margin-top:22px; }
 .chat-message-column { width:fit-content;max-width:92%;min-width:min(200px,100%);padding:12px;border-radius:4px 18px 18px 4px; }.spicy-message-header .parity-chat-avatar,.spicy-user-avatar { width:36px;height:36px; }.spicy-message-header>strong { font-size:15px; }.discovery-root.feed-chat-route .spicy-chat .parity-message-content>p { line-height:1.6; }
 .discovery-root.feed-chat-route .spicy-chat .composer-wrap { padding:12px 12px max(6px,env(safe-area-inset-bottom)); }.discovery-root.feed-chat-route .spicy-chat .composer { gap:7px; }.discovery-root.feed-chat-route .spicy-chat .composer textarea { font-size:16px; }.discovery-root.feed-chat-route .spicy-chat .chat-disclosure { font-size:9px; }.spicy-chat-menu { width:240px; }
}
@media(prefers-reduced-motion:reduce) { .spicy-chat *,.discovery-root.feed-chat-route:has(.spicy-chat) .dialog,.discovery-root.feed-chat-route:has(.spicy-chat) .dialog::backdrop { animation:none!important;transition:none!important;scroll-behavior:auto!important; } }
.spicy-message-menu-wrap { position:relative; }.spicy-message-menu-wrap>.parity-message-icon { transform:rotate(90deg); }.spicy-message-menu { width:155px;top:30px; }.spicy-message-menu>button { padding:10px; }

.discovery-root.feed-chat-route:has(.spicy-chat) .membership-model-control select{background:white;color:#53405f;border:1px solid #decde9;border-radius:8px;padding:10px}

.discovery-root.feed-chat-route .spicy-chat .composer .spicy-image-generate{width:26px;min-width:26px;background:none;opacity:.5;cursor:not-allowed}.discovery-root.feed-chat-route .spicy-chat .composer .spicy-record.is-recording{background:#9954ed;color:white;animation:spicy-record-pulse 1.2s ease-in-out infinite}@keyframes spicy-record-pulse{50%{box-shadow:0 0 0 5px #9954ed25}}@media(max-width:720px){.discovery-root.feed-chat-route .spicy-chat .composer{gap:5px}.discovery-root.feed-chat-route .spicy-chat .composer .spicy-image-generate{display:none}.discovery-root.feed-chat-route .spicy-chat .composer .spicy-autogenerate{min-width:36px;width:36px;padding:7px}}

/* Notices above the composer never take more than a quarter of the chat; send errors are one compact row. */
.discovery-root.feed-chat-route .spicy-chat .spicy-composer-notices { max-height:calc(var(--chat-content-height,100dvh) * .25);overflow-y:auto;overscroll-behavior:contain; }
.spicy-composer-notices:empty { display:none; }
.discovery-root.feed-chat-route .spicy-chat .spicy-composer-notices .notice { display:flex;flex-direction:row;align-items:center;gap:8px;margin:0 0 8px;padding:8px 12px;font-size:13px;line-height:18px; }
.discovery-root.feed-chat-route .spicy-chat .spicy-composer-notices .chat-inline-status { margin:0 0 6px; }
.spicy-chat-error { display:flex;align-items:center;gap:6px;max-height:52px;margin:0 0 8px;padding:5px 5px 5px 12px;border:1px solid #e8cde6;border-radius:10px;background:#fcf3fa;color:#7a3f6d;font-size:13px;line-height:18px; }
.spicy-chat-error>p { flex:1;min-width:0;margin:0;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden; }
.spicy-chat-error>button { flex:none;min-height:32px;border:0;border-radius:8px;background:none;color:#8950c0;font:inherit;font-weight:600;cursor:pointer; }
.spicy-chat-error>.spicy-chat-error-retry { padding:0 10px;background:#efe3fa; }.spicy-chat-error>.spicy-chat-error-retry:hover:not(:disabled) { background:#e5d2f7; }
.spicy-chat-error>.spicy-chat-error-dismiss { width:32px;padding:0;font-size:18px;line-height:1;color:#9a7aa9; }.spicy-chat-error>.spicy-chat-error-dismiss:hover { background:#f1e4f6; }
.spicy-chat-error>button:disabled { opacity:.5;cursor:default; }
.spicy-message-failed { color:#a24c7f; }.spicy-inline-retry { min-height:24px;padding:0 4px;border:0;border-radius:4px;background:none;color:#8950c0;font:inherit;font-weight:600;text-decoration:underline;cursor:pointer; }.spicy-inline-retry:disabled { opacity:.5;cursor:default; }

/* Popovers stay inside short/narrow viewports. The message menu flips upward near the bottom (data-placement). */
.discovery-root.feed-chat-route .spicy-chat .spicy-chat-menu { max-width:calc(100vw - 24px);max-height:calc(var(--chat-content-height,100dvh) - 110px);overflow-y:auto;overscroll-behavior:contain; }
.discovery-root.feed-chat-route .spicy-chat .spicy-tools-menu { max-height:calc(var(--chat-content-height,100dvh) - 130px); }
.spicy-message-menu[data-placement="up"] { top:auto;bottom:30px; }
