/* Reading controls affect only personal chat; shared room layout remains independent. */
:root { --solo-font-size:16px; --solo-line-height:1.75; --solo-reading-width:840px; }
#chatScreen .messages { width:100%; max-width:var(--solo-reading-width); margin-inline:auto; }
#chatScreen .bubble { font-size:var(--solo-font-size); line-height:var(--solo-line-height); }
body[data-solo-width="narrow"] { --solo-reading-width:660px; }
body[data-solo-width="wide"] { --solo-reading-width:1100px; }
body[data-solo-layout="novel"] #chatScreen .messages { gap:26px; }
body[data-solo-layout="novel"] #chatScreen .row { justify-content:stretch; }
body[data-solo-layout="novel"] #chatScreen .message-stack { width:100%; max-width:none; }
body[data-solo-layout="novel"] #chatScreen .bubble { max-width:none; width:100%; background:transparent; border:0; border-radius:0; padding:6px 0; }
body[data-solo-layout="novel"] #chatScreen .row.user .bubble { border-left:2px solid var(--accent); padding-left:16px; color:var(--muted); }
body[data-solo-background="night"] #chatScreen { background:#090b10; }
body[data-solo-background="paper"] #chatScreen { background:#f4f0e7; color:#292722; --muted:#625f58; --bot-bubble:#fffcf5; --border:#d8d3c9; }
body[data-solo-background="paper"] #chatScreen .row.bot .bubble { color:#292722; background:#fffcf5; border-color:#d8d3c9; }
body[data-solo-background="paper"][data-solo-layout="novel"] #chatScreen .bubble { background:transparent; }
.solo-data-tools { width:100%; max-width:980px; margin-inline:auto; padding:18px 28px 0; display:flex; gap:8px; flex-wrap:wrap; }
.solo-data-tools input[type="search"] { flex:1 1 240px; min-width:0; background:var(--panel); border:1px solid var(--border); color:var(--text); border-radius:10px; padding:10px 12px; font:inherit; }
.solo-button { border:1px solid var(--border); background:var(--panel-2); color:var(--text); border-radius:9px; padding:9px 12px; font:inherit; font-size:13px; cursor:pointer; }
.solo-button:hover { border-color:var(--muted); }
.solo-button:disabled { opacity:.5; cursor:default; }
.solo-field { display:flex; align-items:center; justify-content:space-between; gap:14px; margin:12px 16px; font-size:14px; }
.solo-field select { max-width:58%; color:var(--text); background:var(--panel); border:1px solid var(--border); border-radius:7px; padding:8px; font:inherit; }
#soloPinSession { margin:8px 18px 18px; }
.solo-pins { padding:0 16px; }
.solo-pin-row { display:flex; align-items:start; gap:8px; padding:12px 0; border-bottom:1px solid var(--border); }
.solo-pin-row p { flex:1; margin:0; font-size:13px; line-height:1.6; white-space:pre-wrap; overflow-wrap:anywhere; }
.solo-pin-row button { flex-shrink:0; }
.settings-group > .solo-button { margin:10px 0 12px 16px; }
.solo-note { font-size:13px; color:var(--muted); line-height:1.6; }
.solo-dialog { box-sizing:border-box; max-width:min(640px,calc(100vw - 24px)); width:100%; max-height:calc(100dvh - 32px); overflow:auto; padding:22px; border:1px solid var(--border); border-radius:16px; background:var(--panel); color:var(--text); }
.solo-dialog::backdrop { background:rgba(0,0,0,.65); }
.play-insights button, .play-insights select { min-height:40px; padding:8px 12px; margin:4px 8px 8px 0; color:var(--text); background:var(--bg); border:1px solid var(--border); border-radius:8px; font:inherit; font-size:14px; cursor:pointer; }
.play-insights button:hover, .play-insights select:focus-visible { border-color:var(--text); }
.play-insights details { border-top:1px solid var(--border); margin-top:14px; padding-top:12px; }
.play-insights summary { cursor:pointer; line-height:1.7; }
.play-insights p, .play-insights pre { overflow-wrap:anywhere; font-size:13px; line-height:1.7; }
.play-insights h3 { font-size:15px; margin-top:22px; overflow-wrap:anywhere; }
.play-insights h4 { font-size:14px; margin:12px 0 6px; }
.solo-dialog h2 { margin:0 0 16px; font-size:18px; }
.solo-dialog > p { font-size:14px; line-height:1.7; }
.solo-dialog textarea { box-sizing:border-box; width:100%; resize:vertical; min-height:150px; max-height:55dvh; color:var(--text); background:var(--bg); border:1px solid var(--border); border-radius:9px; padding:12px; font:inherit; font-size:16px; line-height:1.7; }
.solo-actions { display:flex; justify-content:flex-end; gap:8px; margin-top:16px; }
.solo-status { position:fixed; left:50%; transform:translateX(-50%); bottom:calc(24px + env(safe-area-inset-bottom)); z-index:120; width:max-content; max-width:calc(100vw - 32px); padding:12px 16px; border:1px solid #585b63; border-radius:10px; background:#252830; color:#f5f5f5; font-size:13px; line-height:1.6; box-shadow:0 8px 24px #0005; pointer-events:none; }
.solo-status[hidden],#soloStopGeneration[hidden],.solo-chat-info[hidden] { display:none; }
#soloStopGeneration { white-space:nowrap; border-color:#8b7269; background:var(--panel); }
.solo-chat-info { margin:0; padding:9px 18px; color:var(--muted); font-size:12px; line-height:1.5; border-bottom:1px solid var(--border); flex-shrink:0; }
.solo-model-info { margin-top:10px; font-size:13px; line-height:1.6; color:var(--muted); }
@media(max-width:700px) { .solo-data-tools { padding:14px 14px 0; } .solo-data-tools input[type="search"] { flex-basis:100%; font-size:16px; } .solo-status { bottom:calc(76px + env(safe-area-inset-bottom)); } #chatScreen .messages { padding-inline:16px; } .solo-field select { font-size:16px; } }
/* Explicit loading states keep missing files distinguishable from an empty gallery. */
#viewerBody { width:100%; max-width:1360px; min-height:0; margin-inline:auto; display:grid; grid-template-columns:repeat(auto-fill,minmax(260px,1fr)); align-items:start; align-content:start; gap:20px; padding:24px; }
#viewerBody > .viewer-empty,#viewerBody > .viewer-loading,#viewerBody > .viewer-load-error { grid-column:1/-1; margin:0; text-align:center; }
#viewerBody .viewer-load-error { grid-column:1/-1; padding:32px 20px; text-align:center; }
.gallery-asset { min-width:0; margin:0; }
.gallery-asset-open { display:grid; place-items:center; width:100%; min-height:0; aspect-ratio:4/5; padding:0; overflow:hidden; border:1px solid var(--border); border-radius:9px; color:var(--muted); background:var(--panel-2); cursor:zoom-in; }
.gallery-asset-open:disabled { cursor:default; }
#viewerBody .gallery-asset-open img { display:block; width:100%; max-width:none; height:100%; min-height:0; object-fit:contain; }
#viewerBody .gallery-asset-open > img,#viewerBody .gallery-asset-open > .gallery-asset-hint { grid-area:1/1; }
#viewerBody .gallery-asset-open img[hidden],.gallery-asset-hint[hidden],.gallery-asset-retry[hidden] { display:none; }
.gallery-asset-hint { display:block; padding:18px; font-size:12px; line-height:1.5; }
.gallery-asset figcaption { padding:8px 2px; font-size:12px; color:var(--muted); white-space:nowrap; text-overflow:ellipsis; overflow:hidden; }
.gallery-asset-retry { width:100%; font-size:12px; }
@media(max-width:620px) { #viewerBody { grid-template-columns:repeat(2,minmax(0,1fr)); gap:12px; padding:12px; } #viewerBody .gallery-asset-hint { padding:12px; } }
#messages .inline-img { cursor:zoom-in; }
.solo-image-dialog { width:min(1100px,calc(100vw - 24px)); max-width:calc(100vw - 24px); max-height:calc(100dvh - 24px); border:1px solid var(--border); border-radius:14px; padding:16px; background:var(--panel); color:var(--text); }
.solo-image-dialog::backdrop { background:#000c; }
.solo-image-head { display:flex; align-items:center; justify-content:space-between; gap:20px; margin-bottom:12px; }
.solo-image-head strong { min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; font-size:14px; }
.solo-image-head button { flex-shrink:0; }
.solo-image-stage { max-height:65dvh; min-height:100px; overflow:auto; text-align:center; background:#090b0f; border-radius:8px; }
.solo-image-stage img { display:block; max-width:100%; max-height:65dvh; width:auto; height:auto; margin:auto; object-fit:contain; }
.solo-image-stage.is-zoomed { text-align:left; }
.solo-image-stage.is-zoomed img { max-width:none; max-height:none; margin:0; }
.solo-image-controls { display:flex; align-items:center; gap:14px; flex-wrap:wrap; font-size:13px; }
.solo-image-controls label { display:flex; align-items:center; gap:10px; }
.solo-image-controls input { accent-color:var(--accent); }
/* Theme all personal-chat surfaces together; sidebar and settings keep their own palette. */
body[data-solo-background="paper"] #chatScreen {
  color-scheme:light; --bg:#f4f0e7; --panel:#f8f4ec; --panel-2:#ebe5d9; --text:#292722;
  --muted:#686158; --border:#d4cbbb; --accent:#b44d38; --accent-2:#97402f;
  --user-bubble:#e9dfcf; --bot-bubble:#fffcf5; --room-accent:#b44d38; --room-accent-ink:#fffaf3;
}
body[data-solo-background="paper"] #chatScreen .chat-stage,
body[data-solo-background="paper"] #chatScreen .chat-top,
body[data-solo-background="paper"] #chatScreen .composer,
body[data-solo-background="paper"] #chatScreen .suggested-replies { background:var(--bg); color:var(--text); border-color:var(--border); }
body[data-solo-background="paper"] #chatScreen .messages { background:transparent; color:var(--text); scrollbar-color:#b4a998 var(--bg); }
body[data-solo-background="paper"] #chatScreen .chat-name,
body[data-solo-background="paper"] #chatScreen .icon-btn { color:var(--text); }
body[data-solo-background="paper"] #chatScreen .row.user .bubble { color:var(--text); background:var(--user-bubble); border-color:var(--border); }
body[data-solo-background="paper"] #chatScreen .row.bot .bubble { color:var(--text); background:var(--bot-bubble); border-color:var(--border); }
body[data-solo-background="paper"][data-solo-layout="novel"] #chatScreen .row.bot .bubble,
body[data-solo-background="paper"][data-solo-layout="novel"] #chatScreen .row.user .bubble { background:transparent; color:var(--text); }
body[data-solo-background="paper"] #chatScreen #input { color:var(--text); background:var(--panel); border-color:var(--border); }
body[data-solo-background="paper"] #chatScreen #input::placeholder { color:#797166; }
body[data-solo-background="paper"] #chatScreen .tool-btn,
body[data-solo-background="paper"] #chatScreen .message-actions,
body[data-solo-background="paper"] #chatScreen .message-more-menu,
body[data-solo-background="paper"] #chatScreen .message-more-menu button,
body[data-solo-background="paper"] #chatScreen .message-action,
body[data-solo-background="paper"] #chatScreen .scenario-switcher,
body[data-solo-background="paper"] #chatScreen .scenario-arrow,
body[data-solo-background="paper"] #chatScreen .scenario-current { color:var(--text); background:var(--panel); border-color:var(--border); }
body[data-solo-background="paper"] #chatScreen .message-action:hover,
body[data-solo-background="paper"] #chatScreen .message-more-menu button:hover { background:#e7ded0; color:#292722; }
body[data-solo-background="paper"] #chatScreen .solo-invite-btn { color:#694033; background:#eee0d4; border-color:#cdb8a6; }
body[data-solo-background="paper"] #chatScreen #sendBtn { color:#fffaf3; background:#b44d38; border-color:#b44d38; }
body[data-solo-background="paper"] #chatScreen .suggested-reply { color:#694033; background:#eee0d4; border-color:#cdb8a6; }
.solo-reply-recovery { display:flex; align-items:center; justify-content:center; flex-wrap:wrap; gap:8px 12px; padding:12px 0 4px; color:var(--muted); font-size:13px; }
.solo-reply-recovery .solo-button { margin:0; }
