/* Shared component contract. Page styles own layout; shared selectors avoid ID lists. */
body.memora-ui {
  --ds-bg:#18181b; --ds-nav:#121214; --ds-surface:#222225; --ds-raised:#2d2d32; --ds-hover:#38383e;
  --ds-text:#f1f1f3; --ds-secondary:#c0c0c8; --ds-muted:#a8a8b2; --ds-line:transparent; --ds-control-line:#57575f;
  --ds-accent:#eeeef1; --ds-accent-hover:#fff; --ds-on-accent:#202024; --ds-accent-soft:#34343a;
  --ds-primary:#f1f1f3; --ds-primary-hover:#fff; --ds-on-primary:#202024;
  --ds-radius:16px; --ds-radius-card:20px; --ds-radius-input:999px; --ds-radius-textarea:18px;
  --ds-radius-pill:999px; --ds-radius-sm:12px; --ds-radius-md:18px; --ds-radius-lg:24px;
  --ui-bg:var(--ds-surface); --ui-panel:var(--ds-raised); --ui-text:var(--ds-text); --ui-muted:var(--ds-secondary);
  --ui-line:transparent; --ui-accent:var(--ds-accent); --workspace-mint:var(--ds-secondary); --workspace-accent:var(--ds-accent);
  --teal:var(--ds-secondary); --cyan:var(--ds-secondary); --coral:var(--ds-secondary); --lav:var(--ds-accent);
  background:var(--ds-bg); color:var(--ds-text);
}
body.memora-ui::before,body.memora-ui::after { background:none; animation:none; }
body.memora-ui ::selection { background:#60606a; color:#fff; }
body.memora-ui button { border-radius:var(--ds-radius-pill) !important; border-color:transparent; }
body.memora-ui :where(button,a,input,textarea,select,summary):focus-visible { outline:2px solid var(--ds-accent) !important; outline-offset:3px; }
body.memora-ui :where(.primary-button,.primary-action,.button.primary,a.primary,button.primary,.auth-submit,.welcome-submit,.ui-primary,.chat-persona-primary,button[value=save],button[value=continue]) {
  min-height:44px; border:0 !important; border-radius:999px !important; background:var(--ds-primary) !important; color:var(--ds-on-primary) !important; box-shadow:none;
}
body.memora-ui :where(.primary-button,.primary-action,.button.primary,a.primary,button.primary,.auth-submit,.welcome-submit,.ui-primary,.chat-persona-primary,button[value=save],button[value=continue]):hover:not(:disabled) { background:#fff !important; }
body.memora-ui :where(.secondary-button,.secondary-action,.button.dark,.button.ghost,.secondary,.ui-secondary,.chat-persona-secondary,.open-chat,.voice-select,button[value=cancel]) {
  min-height:44px; border:0 !important; border-radius:999px !important; background:var(--ds-raised) !important; color:var(--ds-text) !important; box-shadow:none;
}
body.memora-ui :where(.secondary-button,.secondary-action,.button.dark,.button.ghost,.secondary,.ui-secondary,.chat-persona-secondary,.voice-select,button[value=cancel]):hover:not(:disabled) { background:var(--ds-hover) !important; }
body.memora-ui :where(.danger-action,.delete-button,.danger) { color:var(--ds-secondary); background:var(--ds-raised); border:0; border-radius:999px; }
body.memora-ui .ui-row { border:0; border-radius:999px; min-height:48px; background:transparent; color:var(--ds-text); }
body.memora-ui .ui-row:hover { background:var(--ds-raised); }
body.memora-ui :where(dialog:not(.workspace-details),.mobile-sheet,[role=menu]) { border:0 !important; outline:0; border-radius:24px !important; background:var(--ds-surface) !important; color:var(--ds-text); box-shadow:0 24px 80px #0008; }
body.memora-ui dialog:not(.workspace-details) { max-width:calc(100% - 32px); max-height:calc(100dvh - 32px); overflow:auto; }
body.memora-ui dialog::backdrop { background:#08080bb3; backdrop-filter:blur(4px); }
body.memora-ui dialog.workspace-details { border:0 !important; border-radius:24px 0 0 24px !important; width:390px; max-width:100%; height:100dvh; max-height:100dvh; background:var(--ds-surface) !important; box-shadow:-16px 0 56px #0004; }
body.memora-ui :where(.ui-dialog-head,.ui-dialog-actions,.chat-persona-actions) { background:var(--ds-surface); }
body.memora-ui :where(.ui-dialog-actions,.chat-persona-actions) { position:sticky; bottom:0; z-index:3; padding:16px 20px; border:0; gap:10px; }
body.memora-ui :where(.chat-persona-dialog,.settings-dialog,.chat-edit-dialog) { padding:24px; }
body.memora-ui .chat-persona-dialog .chat-persona-actions { padding:16px 0 0; }
body.memora-ui :where(.chat-persona-choice,.persona-card,.story-card,.character-result,.recommendation-card,.continue-item) { border:0 !important; border-radius:18px; }
body.memora-ui .chat-persona-choice { background:var(--ds-bg); }
body.memora-ui .chat-persona-choice:has(input:checked) { background:var(--ds-raised); box-shadow:none; }
body.memora-ui .chat-persona-eyebrow { color:var(--ds-muted); }
body.memora-ui :where(input:not([type=checkbox]):not([type=radio]):not([type=range]):not([type=file]),textarea,select) { border-color:transparent; color:var(--ds-text); border-radius:999px; }
body.memora-ui textarea { border-radius:18px !important; }
body.memora-ui :where(input[type=checkbox],input[type=radio],input[type=range]) { accent-color:var(--ds-primary); }
body.memora-ui :where(.search-field,.search-box,.workspace-history-search):focus-within { box-shadow:0 0 0 2px var(--ds-control-line); }
body.memora-ui :where(.filter-row,.chat-tabs,.privacy-toggle,.auth-tabs,.welcome-tabs) { border:0 !important; padding:0; background:transparent; }
body.memora-ui :where(.filter-row,.chat-tabs,.privacy-toggle,.auth-tabs,.welcome-tabs) button { border:0 !important; border-radius:999px; background:var(--ds-surface); color:var(--ds-secondary); }
body.memora-ui :where(.filter-row,.chat-tabs,.privacy-toggle,.auth-tabs,.welcome-tabs) :where(button.active,button[aria-selected=true]) { background:var(--ds-primary) !important; color:var(--ds-on-primary) !important; }
body.memora-ui :where(.eyebrow,.section-kicker,.feature-status,.panel-author) { color:var(--ds-secondary); }
body.memora-ui :where(.visibility-badge,.story-badge,.card-active,.avatar-status,.status) { background:var(--ds-raised) !important; color:var(--ds-secondary) !important; border-color:transparent; }
body.memora-ui :where(.icon-button,.workspace-icon,.delete-chat,.comment-delete,.dialog-close,.ui-icon,.message-menu>summary) { width:44px; height:44px; min-width:44px; min-height:44px; flex-shrink:0; border:0; border-radius:50%; color:var(--ds-secondary); }
body.memora-ui :where(.voice-preview,.voice-save,.speech-player,.message-voice.is-playing) { color:var(--ds-text) !important; }
body.memora-ui .voice-row:nth-child(n) .voice-preview { background:var(--ds-raised); color:var(--ds-text); border-radius:50%; }
body.memora-ui .voice-tabs { gap:6px; padding:0 20px 12px; border:0; }
body.memora-ui .voice-tabs button { min-height:44px; padding:8px 14px; border:0; background:var(--ds-raised); }
body.memora-ui .voice-tabs button[aria-selected=true] { background:var(--ds-primary); color:var(--ds-on-primary); }
body.memora-ui .voice-save { width:44px; min-width:44px; }
body.memora-ui .voice-select { min-height:44px; }
body.memora-ui .voice-list { max-height:45dvh; }
body.memora-ui .voice-unavailable { padding:28px 16px; text-align:center; color:var(--ds-secondary); }
body.memora-ui .voice-unavailable a { display:inline-flex; margin-top:12px; }
body.memora-ui .wallpaper-swatch { border:0; border-radius:16px; }
body.memora-ui .color-swatch { width:44px; height:44px; min-width:44px; border:0; }
body.memora-ui :where(.wallpaper-swatch,.color-swatch)[aria-pressed=true] { outline:2px solid var(--ds-secondary); outline-offset:3px; }
body.memora-ui .appearance-preview { border-radius:18px; }
body.memora-ui .appearance-preview span { border-radius:14px; }
body.memora-ui #sendButton,body.memora-ui .ui-send { min-height:44px; min-width:44px; width:44px; height:44px; border:0 !important; border-radius:50% !important; background:var(--ds-primary) !important; color:var(--ds-on-primary) !important; }
body.memora-ui #sendButton:hover:not(:disabled),body.memora-ui .ui-send:hover:not(:disabled) { background:#fff !important; }
body.memora-ui #attachImageButton { background:transparent !important; color:var(--ds-secondary) !important; }
body.memora-ui.workspace-chat .composer { border:1px solid var(--ds-control-line); background:var(--ds-raised); }
body.memora-ui.workspace-chat .composer button { flex-shrink:0; }
body.memora-ui.workspace-chat .message.user .message-text { border-radius:18px; }
body.memora-ui.workspace-chat .message-text { line-height:1.65; }
body.memora-ui.workspace-chat .message { margin-bottom:22px; }
body.memora-ui.workspace-chat .message-meta .message-voice { width:40px; height:40px; min-width:40px; padding:10px; }
body.memora-ui.workspace-chat .message-menu { margin-top:2px; }
body.memora-ui.workspace-chat .message-menu[open] .message-actions { border:0 !important; border-radius:20px; background:var(--ds-raised); padding:6px; gap:2px; box-shadow:0 12px 36px #0007; width:min(260px,calc(100vw - 48px)); }
body.memora-ui.workspace-chat .message-menu .message-actions button { width:100%; height:auto; min-height:44px; flex:0 0 auto; border-radius:999px; color:var(--ds-text); font-size:13px; }
body.memora-ui.workspace-chat .message-menu .message-actions [data-message-action=delete] { color:var(--ds-muted); margin-top:6px; }
body.memora-ui .reply-preference { display:grid; grid-template-columns:1fr; gap:8px; margin-top:18px; }
body.memora-ui .reply-preference select { width:100%; min-height:44px; padding:10px 14px; border:0; background:var(--ds-raised); color:var(--ds-text); border-radius:999px; }
body.memora-ui .reply-preference option,body.memora-ui .reply-preference optgroup { background:var(--ds-surface); color:var(--ds-text); }
body.memora-ui .setting-help { display:block; color:var(--ds-muted); font-size:12px; line-height:1.5; margin:6px 0 0; }
body.memora-ui .chat-context-panel h2 { margin-top:18px; }
body.memora-ui .chat-recovery { display:flex; flex-wrap:wrap; align-items:center; gap:10px; background:var(--ds-surface); border:0; border-radius:20px; padding:12px 16px; margin:0 auto 12px; max-width:800px; }
body.memora-ui .chat-recovery p { margin:0; flex:1 1 250px; font-size:13px; line-height:1.5; }
body.memora-ui .chat-recovery a { color:var(--ds-secondary); font-size:13px; text-underline-offset:3px; }
body.memora-ui .help-main { max-width:760px; margin:0 auto; padding:32px 24px 64px; }
body.memora-ui .help-main section { margin-top:24px; padding:24px; border-radius:24px; background:var(--ds-surface); }
body.memora-ui .help-main p { color:var(--ds-secondary); line-height:1.7; }
body.memora-ui .help-header { display:flex; align-items:center; gap:16px; max-width:760px; margin:auto; padding:20px 24px; }
body.memora-ui .help-header a { text-decoration:none; color:var(--ds-text); }
body.memora-ui .help-contact { display:inline-flex; padding:12px 18px; text-decoration:none; }
@media(max-width:780px) {
  body.memora-ui :where(input:not([type=checkbox]):not([type=radio]):not([type=range]),textarea,select) { font-size:16px !important; }
  body.memora-ui :where(button,.primary-button,.secondary-button,.primary-action,.secondary-action,.ui-primary,.ui-secondary) { min-height:44px; }
  body.memora-ui .workspace-icon { width:44px; height:44px; }
  body.memora-ui dialog:not(.workspace-details) { width:calc(100% - 24px); max-width:calc(100% - 24px); max-height:calc(100dvh - 24px); }
  body.memora-ui #voiceDialog { inset:auto; margin:auto; width:calc(100% - 24px); max-width:calc(100% - 24px); height:auto !important; max-height:calc(100dvh - 24px); border-radius:24px !important; }
  body.memora-ui #voiceDialog[open] { display:block; }
  body.memora-ui .voice-list { min-height:180px; max-height:45dvh; }
  body.memora-ui :where(.chat-persona-dialog,.settings-dialog,.chat-edit-dialog) { padding:20px; }
  body.memora-ui .chat-persona-options { max-height:48dvh; overflow:auto; }
  body.memora-ui .chat-persona-actions { align-items:stretch; gap:12px; }
  body.memora-ui .chat-persona-actions>span { display:flex; gap:8px; }
  body.memora-ui .chat-persona-actions button { flex:1; padding:10px 16px; }
  body.memora-ui .voice-search { flex-wrap:wrap; }
  body.memora-ui .voice-search label { flex:1 1 100%; min-height:44px; }
  body.memora-ui #voiceLanguage { width:100%; max-width:none; flex:1; min-height:44px; padding:8px 12px; }
  body.memora-ui .ui-range { grid-template-columns:84px minmax(0,1fr) 42px; }
  body.memora-ui .color-options { flex-wrap:wrap; }
  body.memora-ui .help-main { padding:8px 16px 32px; }
  body.memora-ui .help-main section { padding:20px; }
}
/* Integration with legacy page styles. */
body.memora-ui [hidden] { display:none !important; }
body.memora-ui.workspace-catalog .story-card { border-radius:20px; }
body.memora-ui.workspace-catalog .story-card:has(.character-owner-menu[open]) { overflow:visible; z-index:8; }
body.memora-ui.workspace-catalog .character-owner-menu { position:static; }
body.memora-ui.workspace-catalog .character-owner-actions { right:12px; bottom:56px; max-width:calc(100% - 24px); border-radius:20px; }
body.memora-ui.workspace-catalog .save-story,body.memora-ui.workspace-catalog #clearStorySearch { flex:0 0 44px; width:44px; height:44px; min-height:44px; }
body.memora-ui .character-story { border-radius:18px; }
body.memora-ui .ui-row #panelVoiceName { display:block; max-width:100%; margin-top:3px; }
@media(max-width:780px) {
  body.memora-ui .character-visual { grid-row:1 / span 2; }
  body.memora-ui .character-entry { width:100%; justify-items:stretch; margin-top:12px; }
  body.memora-ui .character-entry .character-tags { justify-content:flex-start; }
  body.memora-ui .character-chat-actions { width:100%; }
  body.memora-ui .character-grid { padding-top:8px; }
}
body.memora-ui.workspace-chat .chat-main,body.memora-ui.workspace-chat .group-chat-main { overflow:clip; }

/* Final discovery/profile layout overrides. */
body.memora-ui.workspace-catalog .character-feed-rail-wrap { position:relative; }
body.memora-ui.workspace-catalog .character-feed-rail { display:flex; gap:16px; overflow-x:auto; overflow-y:hidden; scroll-snap-type:x proximity; scrollbar-width:none; padding:2px 2px 9px; }
body.memora-ui.workspace-catalog .character-feed-rail::-webkit-scrollbar { display:none; }
body.memora-ui.workspace-catalog .character-feed-rail .story-card { flex:0 0 calc((100% - 32px) / 3); min-width:0; scroll-snap-align:start; }
body.memora-ui.workspace-catalog .character-feed-rail-wrap:is(:hover,:focus-within) .rail-control { opacity:1; transform:translateY(-50%) scale(1); }
body.memora-ui.workspace-catalog .character-feed-rail-wrap .rail-control { opacity:0; }
body.memora-ui .chat-ai-disclaimer { max-width:760px; margin:0 auto 10px; padding:8px 14px; color:var(--ds-muted); text-align:center; font-size:11px; line-height:1.45; }
body.memora-ui .character-entry .character-tags { margin:0; flex-wrap:wrap; }
@media (max-width:780px) {
  body.memora-ui.workspace-catalog .character-feed-rail .story-card { flex-basis:min(78vw, 300px); }
  body.memora-ui.workspace-catalog .character-feed-rail-wrap .rail-control { opacity:.88; transform:translateY(-50%) scale(1); }
  body.memora-ui .character-visual { width:112px; height:112px; min-height:0; }
  body.memora-ui .character-entry { width:100%; margin-top:0; }
  body.memora-ui .character-entry .character-chat-actions { width:min(100%, 340px); margin:0 auto; }
}
body.memora-ui .reply-preference select { background:var(--ds-raised) !important; padding:12px 16px !important; }
body.memora-ui .chat-persona-choice { border-radius:18px !important; }
body.memora-ui #voiceDialog { inset:0; margin:auto; }

body.memora-ui input:not([type=checkbox]):not([type=radio]):not([type=range]):not([type=file]),body.memora-ui select { border-radius:999px !important; }
body.memora-ui dialog textarea { background:var(--ds-bg) !important; padding:12px; }
body.memora-ui .settings-actions .danger-action,body.memora-ui #deleteAccount,body.memora-ui .settings-character-item [data-remove] { background:transparent !important; color:var(--ds-muted) !important; font-weight:400; }
body.memora-ui #clearLocalData { margin-top:12px; }
body.memora-ui .chats-main .page-header { padding-bottom:16px; }
body.memora-ui .chats-main .recent-section { padding-top:16px; }

/* Classic editor and chat surface refinements. */
body.memora-ui.classic-page .classic-main { max-width:920px; }
body.memora-ui.classic-page .classic-voice { border-color:var(--ds-line); }
body.memora-ui.classic-page .classic-voice .secondary-button { background:var(--ds-raised) !important; color:var(--ds-text) !important; }
body.memora-ui.classic-page .classic-voice .secondary-button:hover:not(:disabled) { background:var(--ds-hover) !important; }
body.memora-ui.workspace-chat .chat-main { background:rgba(25,27,32,.42) !important; }
body.memora-ui.workspace-chat .chat-wallpaper { z-index:0 !important; }
body.memora-ui.workspace-chat .chat-main > :not(.chat-wallpaper) { position:relative; z-index:1; }
body.memora-ui.workspace-chat .chat-header {
  background:rgba(25,27,32,.56) !important;
  border-bottom:1px solid rgba(255,255,255,.13) !important;
  -webkit-backdrop-filter:blur(22px) saturate(145%) !important;
  backdrop-filter:blur(22px) saturate(145%) !important;
}
body.memora-ui.workspace-chat .chat-header::before { display:block !important; background:linear-gradient(105deg,rgba(255,255,255,.08),transparent 42%,rgba(196,223,211,.04)) !important; }
body.memora-ui.workspace-chat .mobile-identity > div:last-child { display:flex; align-items:center; min-height:36px; }
body.memora-ui.workspace-chat .mobile-identity strong { line-height:1.25; }
body.memora-ui .chat-ai-disclaimer { display:none !important; }
