/* Player-led conversations: the existing messenger in the game's blue-grey palette. */
:root{--social-font:"Noto Serif SC","Songti SC","STSong","SimSun",serif;--social-size:16px;--social-leading:1.85;--social-ink:#293e58;--social-mist:#dbe4ec;--social-paper:#f5f2e9;--social-line:#aab9ca;--social-navy:#304864}
.messenger,.text-companion{font-family:var(--social-font);color:var(--social-ink);background:var(--social-paper);border:1px solid var(--social-line);border-radius:4px;box-shadow:0 16px 45px #101e343d,inset 0 0 0 5px #b2c0ce26}
.messenger{grid-template-columns:clamp(160px,18vw,245px) minmax(0,1fr);height:calc(100dvh - 116px);min-height:480px}
.messenger .chat-contacts{background:linear-gradient(135deg,#c5d2df,#dce4ec);border-right:1px solid var(--social-line)}
.messenger .chat-contacts header{position:relative;background:#edf0f266;border-color:var(--social-line)}
.messenger .chat-contacts header::after{content:'❦';position:absolute;right:16px;top:18px;color:#8297af;font-size:25px}
.messenger .chat-contact{border-color:#a6b7c944;transition:background .15s}
.messenger .chat-contact.active{background:#b7c9dcaa;box-shadow:inset 3px 0 var(--social-navy)}
.messenger .chat-contact:hover{background:#c6d5e6aa}
.messenger .chat-main,.text-companion{background:linear-gradient(120deg,#f6f3eced,#e7ecf2ef),url('/assets/ui-parts/paper-grain.webp') center/cover}
.messenger .chat-header,.text-companion header{background:#e4eaf2d9;border-color:var(--social-line);min-height:68px}
.messenger .chat-header h2{font-weight:500;color:var(--social-navy)}
.messenger .chat-header button,.messenger .chat-header-actions button,.text-companion button{background:#e4eaf2;color:var(--social-navy);border-color:var(--social-line)}
.messenger .chat-avatar,.messenger .avatar-initial{background:#ccd9e7;color:#405b7c;border-color:var(--social-line)}
.messenger .chat-thread,.text-thread{padding:24px clamp(12px,2.5vw,34px);scrollbar-color:#8fa5bb transparent;overflow-anchor:auto}
.messenger .chat-message{gap:12px;margin-bottom:24px}
.messenger .chat-message>div{max-width:min(78%,640px)}
.messenger .chat-message .chat-bubble,.messenger .chat-bubble.emoji,.text-companion .text-message p,.messenger .chat-composer textarea,.text-companion .text-compose textarea{font-family:var(--social-font);font-size:var(--social-size);font-weight:400;line-height:var(--social-leading);letter-spacing:.01em}
.messenger .chat-bubble{background:var(--social-paper);border-color:#c2c7cd;border-radius:2px 12px 12px;padding:12px 16px;color:var(--social-ink);box-shadow:0 3px 9px #283c5610}
.messenger .outgoing .chat-bubble{background:#d6e2ef;border-color:#b0c4d9;border-radius:12px 2px 12px 12px}
.messenger .chat-bubble.emoji{border:1px solid #b0c4d9;background:#d6e2ef}
.messenger .chat-message small,.text-companion .text-message small{font-size:11px;font-weight:400;line-height:1.6;color:#6a7f99}
.messenger .text-message-actions{gap:8px;flex-wrap:wrap;opacity:.8}
.messenger .text-message-actions button{color:#566e8b;font-size:11px}
.messenger .chat-composer,.text-compose{background:linear-gradient(90deg,#e8edf4,#f4f2ed);border-color:var(--social-line);padding:14px 20px}
.messenger .chat-composer textarea,.text-companion .text-compose textarea{background:#fffdf780;border:1px solid #b0c0d0!important;border-radius:4px;padding:10px 12px;min-height:65px;height:76px;color:var(--social-ink);outline-offset:2px}
.messenger .chat-tools button,.messenger .chat-tool{color:#465f7e;font-size:12px;min-height:28px}
.messenger .chat-send-row{flex-wrap:wrap;margin-top:10px;gap:10px}
.messenger .chat-send,.messenger .chat-receive{font:inherit;font-size:14px;min-height:40px;padding:8px 22px;border:1px solid var(--social-navy);border-radius:3px}
.messenger .chat-send{background:var(--social-paper);color:var(--social-navy)}
.messenger .chat-receive{background:var(--social-navy);color:#f5f2e9}
.messenger button:disabled,.text-companion button:disabled{opacity:.45;cursor:default}
.messenger button:focus-visible,.text-companion button:focus-visible,.prompt-picker select:focus-visible{outline:2px solid #698ab0;outline-offset:3px}
.messenger .chat-send-row input{accent-color:var(--social-navy)}
.messenger .chat-picker,.messenger .text-batch,.text-companion .text-batch{background:#dbe4ee;border-color:var(--social-line)}
.text-companion .text-message{border-color:#b7c4d3;background:var(--social-paper);border-radius:3px 12px 12px;max-width:min(85%,640px)}
.text-companion .text-message.outgoing{background:#d6e2ef}
.prompt-picker{display:flex;align-items:center;gap:12px;flex-wrap:wrap;padding:9px 20px;background:#e0e7efd9;color:#38506d;border-block:1px solid #aab9ca66;flex:none}
.prompt-picker label{display:flex;align-items:center;gap:10px;margin:0;font-size:12px;min-width:0}
.prompt-picker select{margin:0;width:min(230px,44vw);padding:6px 10px;background:#f6f3ec;color:#304864;border:1px solid #aab9ca;border-radius:2px;font:inherit}
.prompt-picker button{background:transparent;color:#38506d;border:0;font:inherit;font-size:12px;padding:7px}
.prompt-manager nav{display:flex;flex-wrap:wrap;gap:8px;max-height:180px;overflow:auto;margin:18px 0}
.prompt-manager nav button{border:1px solid #aab9ca;background:#dfe6ef;color:#304864;padding:8px 12px;font:inherit;font-size:13px}
.prompt-manager textarea{font-size:16px;line-height:1.85;min-height:210px;resize:vertical}
.prompt-manager form label{display:grid;gap:8px;margin:16px 0}
.companion-ornament{position:relative;display:flex;align-items:center;justify-content:center;gap:20px;max-width:560px;min-height:130px;margin:30px auto;color:#b4c6d8;opacity:.85}
.companion-ornament i{width:23%;height:1px;background:linear-gradient(90deg,transparent,#a2b8ce,transparent)}
.companion-ornament b{font:40px Georgia;font-weight:400;border:1px solid #a2b8ce66;border-radius:50%;width:68px;height:68px;display:grid;place-items:center}
.companion-ornament small{position:absolute;bottom:0;font:9px Georgia;letter-spacing:.2em}
body.immersive .vn-social>.prompt-picker{position:relative;z-index:15;margin:0;background:#dce5edeb}
@media(max-width:700px){
 body[data-page="letters"] .main{padding:0 8px 16px!important}.messenger{grid-template-columns:1fr;height:calc(100dvh - 90px);min-height:520px;max-height:none}
 .messenger .chat-contacts{display:flex;flex-direction:row;overflow-x:auto;overflow-y:hidden;max-height:76px;border-right:0;border-bottom:1px solid var(--social-line);flex:none}
 .messenger .chat-contacts header{padding:8px 10px;min-width:88px;flex:none;border-bottom:0}.messenger .chat-contacts h1{font-size:16px;margin:0}.messenger .chat-contacts header>small,.messenger .chat-contacts h1 small,.messenger .chat-contacts header::after,.messenger .chat-contacts footer{display:none}
 .messenger .chat-contacts header>button{font-size:10px;padding:5px 0}.messenger .chat-contact{flex:none;min-width:110px;padding:8px;min-height:68px;gap:7px}.messenger .chat-contact small{max-width:76px;font-size:9px}.messenger .chat-contact b{font-size:12px}.messenger .chat-avatar{width:30px;height:35px}
 .messenger{grid-template-rows:76px minmax(0,1fr)}.messenger .chat-header{padding:10px 12px}.messenger .chat-header h2{font-size:18px}.messenger .chat-header-actions button{padding:5px}
 .messenger .chat-thread{padding:16px 10px}.messenger .chat-message{gap:7px;margin-bottom:18px}.messenger .chat-message>div{max-width:calc(100% - 42px)}.messenger .chat-bubble{padding:10px 12px}
 .messenger .chat-composer{padding:10px}.messenger .chat-tools{gap:8px;margin-bottom:6px}.messenger .chat-tools button,.messenger .chat-tool{font-size:10px}.messenger .chat-send-row>small{flex-basis:100%;order:3}.messenger .chat-receive{margin-left:auto}.messenger .chat-send,.messenger .chat-receive{padding:6px 17px}
 .prompt-picker{padding:7px 10px;gap:5px}.prompt-picker select{width:145px}.prompt-picker button{font-size:11px}
 .text-companion{margin:8px 0;height:calc(100dvh - 150px)}.text-companion header{padding:12px;flex-wrap:wrap;gap:8px}.text-companion h1{font-size:20px}.text-companion header>div:last-child{flex-wrap:wrap}.text-thread{padding:15px}.text-compose{padding:10px}.text-compose>div{flex-wrap:wrap}.text-compose small{flex-basis:100%}
 body[data-mode="letters"] #rotate-device,body[data-mode="interlude"] #rotate-device,body[data-mode="settings"] #rotate-device{display:none!important}
 body[data-mode="letters"],body[data-mode="interlude"],body[data-mode="settings"]{overflow:auto!important;min-width:0}
 body[data-mode="letters"] .game-shell,body[data-mode="interlude"] .game-shell,body[data-mode="settings"] .game-shell{min-width:0!important;grid-template-columns:56px minmax(0,1fr)}
 body[data-mode="letters"] .sidebar,body[data-mode="interlude"] .sidebar,body[data-mode="settings"] .sidebar{width:56px!important;min-width:0!important}
 body[data-mode="letters"] .nav-item span,body[data-mode="interlude"] .nav-item span,body[data-mode="settings"] .nav-item span{display:none}
 body[data-mode="letters"] .brand span:last-child,body[data-mode="interlude"] .brand span:last-child,body[data-mode="settings"] .brand span:last-child{display:none}
 body[data-mode="letters"] .main,body[data-mode="interlude"] .main,body[data-mode="settings"] .main{min-width:0!important;width:auto!important}
 .interlude-page{padding:14px 8px}.interlude-cards{grid-template-columns:repeat(2,minmax(0,1fr))}.interlude-card{padding:6px;grid-template-columns:35px minmax(0,1fr);gap:4px}.interlude-card>div{width:35px}.interlude-card b{font-size:11px}.interlude-card small{font-size:9px}.mode-options{grid-template-columns:1fr}.mode-options>button{min-height:100px}
}
@media(max-height:550px) and (orientation:landscape){.messenger{height:calc(100dvh - 56px);min-height:320px}.messenger .chat-header{min-height:48px;padding:7px 12px}.messenger .chat-composer{padding:7px 12px}.messenger .chat-composer textarea{height:45px;min-height:45px}.messenger .chat-send-row{margin-top:6px}.messenger .chat-tools{margin-bottom:4px}.prompt-picker{padding:4px 12px}.prompt-picker select{padding:3px 8px}.messenger .chat-thread{padding:12px}.messenger .chat-message{margin-bottom:15px}}

@media(max-width:700px){body[data-mode="letters"] #app,body[data-mode="letters"] #modal-root,body[data-mode="letters"] #toast,body[data-mode="interlude"] #app,body[data-mode="interlude"] #modal-root,body[data-mode="interlude"] #toast,body[data-mode="settings"] #app,body[data-mode="settings"] #modal-root,body[data-mode="settings"] #toast{visibility:visible;pointer-events:auto}}
/* Keep the prompt selector clear of the existing VN tools. */
body.immersive .vn-social>.prompt-picker{position:fixed;top:12px;left:20px;max-width:calc(100vw - 480px);padding:6px 10px;border:1px solid #aab9ca88;z-index:12}
body.immersive .vn-social>.prompt-picker select{width:170px}
@media(max-width:1050px) and (orientation:landscape){body.immersive .vn-social>.prompt-picker{top:7px;left:12px;max-width:calc(100vw - 350px);font-size:11px}body.immersive .vn-social>.prompt-picker select{width:140px}}
@media(max-width:700px) and (orientation:portrait){body.immersive .vn-social>.prompt-picker{top:58px;left:8px;max-width:calc(100vw - 16px)}body.immersive .vn-social .story-cast{top:20%!important}}
@media(max-height:550px) and (orientation:landscape){
 .messenger .chat-header{padding:6px 12px;min-height:46px}.messenger .chat-header h2{font-size:16px;margin:0 0 2px}.messenger .chat-header small{font-size:9px}
 .messenger .chat-header-actions button{min-height:30px;max-height:36px;padding:4px 8px}
 .messenger .chat-composer{padding:6px 12px}.messenger .chat-composer textarea{margin:0!important;height:40px;min-height:40px}
 .messenger .chat-tools{margin:0 0 4px;gap:10px}.messenger .chat-tools button,.messenger .chat-tools label{margin:0;padding:0;min-height:22px;line-height:1.2}
 .messenger .chat-send-row{margin:5px 0 0}.messenger .chat-send,.messenger .chat-receive{min-height:32px;padding:4px 15px;font-size:12px}.messenger .chat-send-row label{margin:0}
 .messenger .prompt-picker{padding:4px 12px}.messenger .prompt-picker label{line-height:1.2}.messenger .prompt-picker select{height:28px;min-height:28px}.messenger .prompt-picker button{padding:3px}
 .messenger .chat-thread{min-height:65px}
}
@media(max-width:700px){
 body[data-mode="letters"] .sidebar nav,body[data-mode="interlude"] .sidebar nav,body[data-mode="settings"] .sidebar nav{padding-inline:3px}
 body[data-mode="letters"] .sidebar .nav-item,body[data-mode="interlude"] .sidebar .nav-item,body[data-mode="settings"] .sidebar .nav-item{width:50px;min-width:0;justify-content:center;padding:9px 5px;gap:0}
 body[data-mode="letters"] .sidebar .nav-item svg,body[data-mode="interlude"] .sidebar .nav-item svg,body[data-mode="settings"] .sidebar .nav-item svg{width:19px;margin:0}
}
@media(max-width:380px){
 .messenger .chat-header{padding:7px 9px;min-height:55px;gap:5px}.messenger .chat-header h2{font-size:16px}.messenger .chat-header small{font-size:9px}
 .messenger .chat-header-actions{gap:4px}.messenger .chat-header-actions button{padding:4px 6px;min-height:32px}.messenger .chat-header-actions [data-act="chat-settings"]{font-size:18px;letter-spacing:0}
 .messenger .prompt-picker{gap:4px;padding:6px 9px}.messenger .prompt-picker select{width:120px}.messenger .prompt-picker button{font-size:0;padding:4px}.messenger .prompt-picker button::after{content:'管理';font-size:11px}
 .messenger .chat-thread{min-height:100px}.messenger .chat-composer{padding:8px}.messenger .chat-tools{gap:6px}.messenger .chat-tools button,.messenger .chat-tool{font-size:9px}
}
.chapter-edition{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin:0 0 20px;padding:12px 16px;border:1px solid #aab9ca77;background:#dbe4ec12;color:#dbe4ec;font-size:14px;line-height:1.8}

/* Optional controls sit lightly over the scene instead of covering it with paper. */
body.immersive .vn-social>.prompt-picker{background:rgba(23,35,54,.14);border-color:rgba(217,228,239,.28);color:#edf0ee;backdrop-filter:blur(4px);box-shadow:none;border-radius:3px}
body.immersive .vn-social>.prompt-picker select{background:rgba(23,35,54,.16);color:#edf0ee;border-color:rgba(217,228,239,.35);box-shadow:none;max-width:100%;min-height:30px}
body.immersive .vn-social>.prompt-picker select option{background:#29394c;color:#f3f0e8}
body.immersive .vn-social>.prompt-picker button{background:transparent;background-image:none;border:0;border-image:none;box-shadow:none;color:#edf0ee;padding:6px;opacity:.85}
body.immersive .vn-social>.prompt-picker button:hover{opacity:1;text-decoration:underline;text-underline-offset:4px}
body.immersive .vn-social>.prompt-picker button:focus-visible,body.immersive .vn-social>.prompt-picker select:focus-visible{outline:2px solid #b8cee4;outline-offset:3px}
.illustration-prompt-entry{margin:0 0 20px}.illustration-prompt-entry .prompt-picker,.illustration-prompts .prompt-picker{padding:10px 0;background:transparent;border:0;gap:10px}
.illustration-prompts>p{font-size:13px;line-height:1.8;color:#415772}.illustration-prompts .prompt-picker select{max-width:100%}
body[data-page="settings"] .api-forms{grid-template-columns:repeat(2,minmax(0,1fr));gap:20px;align-items:start}
body[data-page="settings"] .api-forms>.optional-art-api{grid-column:1/-1}
body[data-page="settings"] .api-forms>.api-form{min-width:0;margin:0}
@media(max-width:760px){body[data-page="settings"] .api-forms{grid-template-columns:minmax(0,1fr)}.illustration-prompts .prompt-picker label{flex-wrap:wrap}}
