.conversation-replies{list-style:none;padding:0;margin:12px 0 4px;display:grid;gap:4px}
#world-choices .conversation-reply{display:grid;grid-template-columns:25px 1fr;align-items:center;gap:9px;text-align:left;width:100%;min-height:48px;padding:10px 12px;margin:0;color:#32483d;border:0;border-left:2px solid transparent;border-radius:0;background:transparent;font:14px/1.6 var(--prose);box-shadow:none}
#world-choices .conversation-reply[data-selected=true],#world-choices .conversation-reply:hover{color:#513e17;background:#bc9b5124;border-left-color:#9e7936}
#world-choices .conversation-reply:focus-visible{outline:2px solid #8c6d32;outline-offset:1px}
.reply-number{font:11px var(--title);color:#937b4c;text-align:center}
.conversation-reply small{grid-column:2;color:#746b59;font:11px/1.6 var(--prose)}
.conversation-reply:disabled{opacity:.5;cursor:default}
.choice-help{margin:10px 0 0;color:#74664c;font:10px/1.7 var(--prose)}
#cinema-controls{position:absolute;left:50%;bottom:66px;transform:translateX(-50%);display:flex;align-items:center;gap:10px;max-width:calc(100vw - 35px);padding:5px 10px;background:#142a2bdc;border:1px solid #b79b5c55;color:#ecd7a2;pointer-events:auto}
#cinema-label{font:10px/1.5 var(--title);max-width:280px}
#cinema-controls button{min-height:44px;min-width:44px;padding:6px 10px;color:#ecd7a2;background:transparent;border:1px solid #b79b5c55;font:9px var(--title)}
body[data-cinematic=dialogue] .objective-card,body[data-cinematic=dialogue] #encounter-stack,body[data-cinematic=dialogue] #action-cross{visibility:hidden}
body[data-cinematic=sequence] .objective-card{visibility:hidden}
@media(max-width:700px){#world-choices .conversation-reply{font-size:12px;min-height:48px;padding:9px 7px;grid-template-columns:20px 1fr}.choice-help{font-size:9px}#cinema-controls{bottom:192px;gap:6px;padding:3px 7px;width:calc(100vw - 34px);justify-content:space-between}#cinema-label{font-size:8px;max-width:180px}#cinema-controls button{font-size:8px;flex-shrink:0}}
#ranged-panel{position:absolute;right:25px;bottom:270px;max-width:260px;background:#142b2be8;border:1px solid #b79b5c77;padding:9px 12px;color:#ead9ae;pointer-events:auto;font:10px/1.6 var(--prose);display:flex;gap:10px;align-items:center}
#ranged-panel button{min-height:44px;color:inherit;background:transparent;border:1px solid #b79b5c66;padding:5px 10px;font:9px var(--title)}
#ranged-reticle{position:absolute;left:50%;top:50%;width:var(--spread,14px);height:var(--spread,14px);transform:translate(-50%,-50%);border:1px solid #ead5a7a8;border-radius:50%;pointer-events:none;box-shadow:0 0 1px #1b292d}
#ranged-reticle i{position:absolute;left:50%;top:50%;width:3px;height:3px;background:#f6dda0;transform:translate(-50%,-50%);border-radius:50%}
#ranged-reticle.drawing{border-color:#f2c66a}
#action-cross #ranged-fire{left:58px;top:0}#action-cross [data-ranged-action=aim]{left:116px;top:58px}#action-cross [data-ranged-action=reload]{left:58px;top:116px}#action-cross [data-ranged-action=holster]{left:0;top:58px}
#action-cross.ranged:not(.expanded) #ranged-actions button{display:none}
@media(max-width:700px){#ranged-panel{right:14px;bottom:255px;max-width:170px;padding:6px 9px;font-size:9px;flex-wrap:wrap;gap:4px}#ranged-panel button{font-size:8px;min-height:44px}}

#swim-panel{position:absolute;right:25px;bottom:265px;max-width:270px;display:flex;flex-wrap:wrap;gap:6px;padding:10px;background:#142b2be8;border:1px solid #b79b5c77;color:#ead9ae;font:10px/1.6 var(--prose);pointer-events:auto}#swim-status{flex-basis:100%}#swim-panel button{min-height:44px;padding:6px 10px;background:transparent;border:1px solid #b79b5c66;color:inherit;font:9px var(--title)}
/* The swim status and Bank action already explain the shore return. */
body:has(#swim-panel:not([hidden])) #interaction{display:none}
@media(max-width:700px){#swim-panel{right:14px;bottom:255px;max-width:180px;padding:7px;font-size:9px}#swim-panel button{font-size:8px}}

body[data-cinematic=sequence] #action-cross,body[data-cinematic=sequence] #encounter-stack,body[data-cinematic=sequence] #crosshair{visibility:hidden}

/* Keep the swim recovery notice above the Bank/stroke controls on tall phones. */
@media(max-width:700px) and (min-height:700px){body:has(#swim-panel:not([hidden])) #toast{top:318px;bottom:auto;width:calc(100% - 30px);max-width:360px;box-sizing:border-box;padding:10px 12px;pointer-events:none}}


/* A quiet left reading rail. Existing dialogue/native-dialog/choice owners
   supply state and input; this layer never advances or closes a conversation.
   Celandia reference: numbered unboxed response lines and selected-row cue. */
:root{--reading-left:max(24px,env(safe-area-inset-left));--reading-top:clamp(112px,16vh,144px);--reading-width:min(360px,calc(100vw - 48px));--reading-height:calc(100dvh - var(--reading-top) - 90px)}
#dialogue{left:var(--reading-left);right:auto;top:var(--reading-top);bottom:auto;transform:none;width:var(--reading-width);max-width:none;max-height:var(--reading-height);padding:18px 20px 14px 25px;display:flex;flex-direction:column;gap:12px;overflow:hidden;pointer-events:auto;text-align:left}
#dialogue::before{left:12px;top:16px;bottom:16px}
#dialogue #speaker{margin:0;font:600 10px/1.65 var(--title);letter-spacing:1.25px;flex-shrink:0;overflow-wrap:anywhere}
#dialogue #dialogue-text{margin:0;min-height:0;overflow:auto;overscroll-behavior:contain;scrollbar-gutter:stable;font:17px/1.65 var(--prose);color:#352d20;overflow-wrap:anywhere;white-space:normal;text-wrap:pretty}
#dialogue .dialogue-footer{margin:0;padding-top:9px;justify-content:flex-start;flex-wrap:wrap;flex-shrink:0;gap:0}
#voice-note{display:none!important}
#dialogue #next-line{min-height:44px;max-width:100%;padding:8px 0;text-align:left;font:600 11px/1.65 var(--title);color:#5b421e;overflow-wrap:anywhere}
#dialogue #next-line kbd{display:inline-block;margin-left:7px;font-size:10px}
#dialogue #next-line:focus-visible{outline:2px solid #725321;outline-offset:3px}
#world-conversation{position:fixed;inset:var(--reading-top) auto auto var(--reading-left);margin:0;width:var(--reading-width);max-width:none;max-height:var(--reading-height);overflow:auto;overscroll-behavior:contain;scrollbar-gutter:stable;padding:15px 18px 13px;text-align:left}
#world-conversation::backdrop{background:#0c211a1a;backdrop-filter:none}
#world-conversation .dialog-header{position:sticky;top:-15px;z-index:1;margin:0 0 12px;padding:0 0 9px;gap:10px;align-items:center;background:inherit}
#world-conversation #world-speaker{font:600 10px/1.65 var(--title);letter-spacing:1.2px;color:#72572d;overflow-wrap:anywhere}
#world-conversation-close{min-width:44px;min-height:44px;flex-shrink:0;padding:7px;color:#594627}
#world-conversation #world-text{margin:0 0 13px;font:17px/1.65 var(--prose);overflow-wrap:anywhere;white-space:normal;text-wrap:pretty}
#world-choices .conversation-replies{margin:8px 0 4px;gap:3px}
#world-choices .conversation-reply{grid-template-columns:18px minmax(0,1fr);gap:8px;min-height:44px;padding:9px 7px 9px 4px;font:15px/1.55 var(--prose);border-left:2px solid transparent;overflow-wrap:anywhere}
#world-choices .conversation-reply[data-selected=true],#world-choices .conversation-reply:hover{border-left-color:#8d6c2b;background:#ac85331c;color:#493719}
#world-choices .conversation-reply[data-selected=true] .reply-number{color:#684b1c;font-weight:700}
#world-choices .conversation-reply:focus-visible{outline:2px solid #775522;outline-offset:1px}
#world-choices .conversation-reply small{font:11px/1.55 var(--prose);color:#655c4a}
#world-conversation #world-choice-help{margin:10px 0 0;font:10px/1.65 var(--prose);color:#65583f}
#world-conversation>.small-note{margin:7px 0 0;font:10px/1.6 var(--prose);color:#65583f}
/* The objective/arrival annotation shares this rail. Camera preference does
   not decide whether competing cards obscure the conversation. */
body:has(#dialogue:not([hidden])) .objective-card,body:has(#world-conversation[open]) .objective-card,body:has(#chapter-banner:not([hidden])) .objective-card{visibility:hidden}
body:has(#dialogue:not([hidden])) #chapter-banner,body:has(#world-conversation[open]) #chapter-banner{visibility:hidden}
body:has(#dialogue:not([hidden])) :is(#interaction,#action-cross,#encounter-stack,#swim-panel,#ranged-panel,#crosshair,.touch-walk,#touch-jump,#toast),body:has(#world-conversation[open]) :is(#interaction,#action-cross,#encounter-stack,#swim-panel,#ranged-panel,#crosshair,.touch-walk,#touch-jump,#toast){visibility:hidden}
#chapter-banner{left:var(--reading-left);right:auto;top:var(--reading-top);bottom:auto;transform:none;width:min(340px,calc(100vw - 48px));max-height:var(--reading-height);padding:12px 15px;text-align:left;background:linear-gradient(90deg,#112b25db,#112b2566);border-left:1px solid #d3b16b8c;pointer-events:none;text-shadow:0 1px 4px #0c211e}
#chapter-banner .eyebrow{font:600 9px/1.65 var(--title);letter-spacing:1.2px;overflow-wrap:anywhere}
#chapter-banner h2{margin:6px 0;font:500 clamp(18px,1.8vw,24px)/1.4 var(--title);letter-spacing:0;overflow-wrap:anywhere}
#chapter-banner>p{font:12px/1.6 var(--prose);overflow-wrap:anywhere}
.chapter-heading h2{font-size:clamp(16px,1.6vw,22px);line-height:1.3}
@media(max-width:700px){
 :root{--reading-left:max(12px,env(safe-area-inset-left));--reading-top:140px;--reading-width:min(300px,calc(100vw - 48px));--reading-height:calc(50dvh - var(--reading-top) - 12px)}
 #dialogue{padding:13px 15px 11px 20px;gap:8px;max-height:max(155px,var(--reading-height))}
 #dialogue::before{left:9px;top:12px;bottom:12px}
 #dialogue #speaker{font-size:9px;letter-spacing:.8px;line-height:1.55}
 #dialogue #dialogue-text{font-size:16px;line-height:1.6}
 #dialogue .dialogue-footer{padding-top:6px}
 #dialogue #next-line{font-size:10px;min-height:44px;padding:8px 0}
 #world-conversation{padding:12px 14px;max-height:max(180px,var(--reading-height))}
 #world-conversation .dialog-header{top:-12px;margin-bottom:9px;padding-bottom:5px}
 #world-conversation #world-text{font-size:16px;line-height:1.6;margin-bottom:10px}
 #world-choices .conversation-reply{font-size:14px;line-height:1.55;min-height:44px;padding:9px 4px}
 #world-conversation #world-choice-help{font-size:10px;line-height:1.5}
 #world-conversation>.small-note{display:none}
 #chapter-banner{width:var(--reading-width);padding:10px 12px}
 #chapter-banner h2{font-size:19px;line-height:1.35}
 #chapter-banner .eyebrow{font-size:8px}
 #chapter-banner>p{font-size:11px}
 .chapter-heading h2{font-size:14px;line-height:1.3}
 body:has(#dialogue:not([hidden])) #cinema-controls,body:has(#world-conversation[open]) #cinema-controls{left:auto;right:12px;bottom:80px;transform:none;width:min(230px,calc(100vw - 24px));flex-wrap:wrap;justify-content:flex-end}
}
@media(max-width:700px) and (max-height:700px){:root{--reading-top:124px}#dialogue,#world-conversation{max-height:calc(100dvh - 214px)}}
@media(min-width:701px) and (max-height:560px){:root{--reading-top:100px;--reading-width:min(330px,36vw);--reading-height:calc(100dvh - 160px)}#dialogue{padding:12px 16px 10px 20px;gap:7px}#dialogue #dialogue-text,#world-conversation #world-text{font-size:16px;line-height:1.55}#world-conversation{padding:10px 14px}#chapter-banner h2{font-size:18px}}
