/* 《通信简史》澜字幕伙伴：纯本地、可收起、不会遮挡主要任务操作。 */
.lan-companion{--lan-accent:#77e7f5;position:fixed;z-index:8;right:18px;bottom:76px;width:min(370px,calc(100vw - 36px));padding:13px 14px 11px;border:1px solid rgba(119,231,245,.42);border-radius:17px;background:linear-gradient(140deg,rgba(8,22,41,.96),rgba(15,22,47,.94));box-shadow:0 16px 48px #0008,0 0 26px #77e7f514;backdrop-filter:blur(15px);color:#edf7ff;transition:transform .2s ease,opacity .2s ease;}
.lan-companion[data-era="1G"]{--lan-accent:#aebfd0}.lan-companion[data-era="2G"]{--lan-accent:#91e7b8}.lan-companion[data-era="3G"]{--lan-accent:#73bdff}.lan-companion[data-era="4G"]{--lan-accent:#b19aff}.lan-companion[data-era="5G"]{--lan-accent:#eacb82}.lan-companion[data-era="6G"]{--lan-accent:#f0dfaa}
.lan-companion{--lan-emotion-color:var(--lan-accent)}.lan-companion[data-emotion="curious"]{--lan-emotion-color:#6fdced}.lan-companion[data-emotion="thinking"]{--lan-emotion-color:#9bb8ef}.lan-companion[data-emotion="research"]{--lan-emotion-color:#7fc8ff}.lan-companion[data-emotion="expecting"]{--lan-emotion-color:#b09bff}.lan-companion[data-emotion="nostalgia"]{--lan-emotion-color:#d6bd83}.lan-companion[data-emotion="warm"]{--lan-emotion-color:#f0c98d}.lan-companion[data-emotion="encourage"]{--lan-emotion-color:#78ddb8}.lan-companion[data-emotion="success"],.lan-companion[data-emotion="happy"]{--lan-emotion-color:#82e0b5}.lan-companion .lan-portrait{border-color:var(--lan-emotion-color);box-shadow:0 0 16px color-mix(in srgb,var(--lan-emotion-color) 28%,transparent);transition:border-color .24s ease,box-shadow .24s ease}.lan-companion #lanEmotion{color:var(--lan-emotion-color)}
.lan-head{display:flex;align-items:center;gap:10px;min-width:0}.lan-portrait{position:relative;display:grid;place-items:center;flex:0 0 43px;width:43px;height:43px;border-radius:50%;overflow:hidden;border:1px solid var(--lan-accent);background:radial-gradient(circle at 38% 30%,#f5ffff 0,#79e9f1 11%,#315a9a 46%,#111b39 76%);color:#06182c;font-weight:800;box-shadow:0 0 17px #77e7f533}.lan-portrait span{position:relative;z-index:1}.lan-portrait i{position:absolute;inset:6px;border:1px solid #c2f8ff88;border-radius:50%;transform:rotate(-32deg) scaleX(.7)}.lan-ident{display:grid;gap:3px;min-width:0;flex:1}.lan-ident strong{font-size:.91rem}.lan-ident strong small{margin-left:5px;font-size:.7rem;font-weight:400;color:#9cb1c9}.lan-ident>span{color:var(--lan-accent);font-size:.72rem}.lan-collapse,.lan-actions button{border:1px solid #7996bd45;border-radius:8px;background:#ffffff09;color:#cbd9e8;padding:7px 9px;font-size:.72rem;cursor:pointer;min-height:36px}.lan-collapse:hover,.lan-actions button:hover{border-color:var(--lan-accent);color:white}.lan-caption{margin:10px 0 9px;padding:10px 11px;border-left:2px solid var(--lan-accent);border-radius:0 9px 9px 0;background:#ffffff06;color:#e2edf8;font-size:.84rem;line-height:1.65;max-height:7.5em;overflow:auto}.lan-actions{display:flex;flex-wrap:wrap;gap:6px}.lan-actions .lan-next{background:linear-gradient(120deg,#155673,#36326a);color:white;border-color:var(--lan-accent)}.lan-footnote{margin-top:7px;color:#8195ad;font-size:.66rem;line-height:1.4}.lan-history{margin-top:10px;max-height:220px;overflow:auto;border-top:1px solid #ffffff16;padding-top:8px}.lan-history[hidden]{display:none}.lan-history>strong{display:block;color:#a8eaf3;font-size:.75rem;margin-bottom:6px}.lan-history>button{display:block;width:100%;padding:8px;text-align:left;border:0;border-bottom:1px solid #ffffff0c;background:transparent;color:#bdcde0;font-size:.73rem;line-height:1.45;cursor:pointer}.lan-history>button:hover{background:#ffffff0a;color:white}.lan-history>p{margin:5px;color:#93a6bd;font-size:.76rem}.lan-companion.is-collapsed{width:auto;max-width:calc(100vw - 24px);padding:8px 10px}.lan-companion.is-collapsed .lan-caption,.lan-companion.is-collapsed .lan-actions,.lan-companion.is-collapsed .lan-footnote,.lan-companion.is-collapsed .lan-history{display:none}.lan-companion.is-collapsed .lan-head{gap:8px}.lan-companion.is-collapsed .lan-portrait{width:38px;height:38px;flex-basis:38px}.lan-companion.is-collapsed .lan-ident>span{display:none}.lan-companion.is-collapsed .lan-collapse{font-size:0}.lan-companion.is-collapsed .lan-collapse::after{content:'展开 +';font-size:.72rem}
body.gallery-open .lan-companion{right:16px;bottom:114px;width:min(330px,calc(100vw - 32px))}.lan-companion button:focus-visible{outline:2px solid #c6f5ff;outline-offset:2px}
@media(max-width:760px){.lan-companion{right:10px;left:10px;bottom:calc(10px + env(safe-area-inset-bottom));width:auto;padding:10px 11px;background:rgba(6,17,33,.97)}.lan-companion:not(.is-collapsed){max-height:min(38vh,300px);overflow:auto}.lan-caption{max-height:4.8em;margin:8px 0}.lan-actions{gap:5px}.lan-actions button{min-height:40px;padding:8px 10px}.lan-footnote{font-size:.64rem}.lan-history{max-height:145px}body.gallery-open .lan-companion{left:10px;right:10px;bottom:calc(10px + env(safe-area-inset-bottom));width:auto}.lan-companion.is-collapsed{left:auto;max-width:calc(100vw - 20px)}}
@media(prefers-reduced-motion:reduce){.lan-companion{transition:none}}
.lan-portrait img{width:100%;height:100%;object-fit:cover;object-position:center 24%;border-radius:inherit}.lan-portrait img[hidden]{display:none}

/* 《通信简史》澜交互双模式：剧情居中，探索时缩为可拖动陪伴卡片。 */
.lan-companion{z-index:90;max-width:calc(100vw - 24px);}
#lanCompanion[data-mode="dialogue"]{position:fixed;left:50%;top:50%;right:auto;bottom:auto;z-index:90;width:min(760px,calc(100vw - 48px));max-height:min(82vh,760px);overflow:auto;padding:clamp(20px,4vw,34px);border-color:#8feaff9c;border-radius:24px;background:linear-gradient(145deg,rgba(8,22,41,.985),rgba(17,22,49,.98));box-shadow:0 30px 100px #000b,0 0 50px #58cde522;transform:translate(-50%,-50%);pointer-events:auto}
.lan-companion[data-mode="dialogue"] .lan-head{gap:14px}.lan-companion[data-mode="dialogue"] .lan-portrait{width:66px;height:66px;flex-basis:66px}.lan-companion[data-mode="dialogue"] .lan-ident strong{font-size:1.1rem}.lan-companion[data-mode="dialogue"] .lan-ident>span{font-size:.82rem}.lan-companion[data-mode="dialogue"] .lan-caption{margin:22px 0 18px;padding:clamp(18px,3vw,28px);border-left-width:3px;font-size:clamp(1.12rem,2vw,1.42rem);line-height:1.85;max-height:min(44vh,390px);}
.lan-companion[data-mode="dialogue"] .lan-actions{justify-content:center;gap:10px}.lan-companion[data-mode="dialogue"] .lan-actions button{min-width:88px;min-height:44px;font-size:.84rem}.lan-companion[data-mode="dialogue"] .lan-next{min-width:140px;background:linear-gradient(115deg,#12627d,#484182)}.lan-companion[data-mode="dialogue"] .lan-footnote{margin-top:14px;text-align:center}.lan-companion[data-mode="dialogue"] .lan-collapse{min-height:40px;padding:8px 13px}.lan-companion[data-mode="dialogue"] .lan-open,.lan-companion[data-mode="dialogue"] .lan-position-toggle,.lan-companion[data-mode="dialogue"] .lan-hide{display:none}
body.lan-dialogue-active::before{content:"";position:fixed;inset:0;z-index:89;background:rgba(2,7,18,.38);animation:lanBackdropIn .2s ease-out}
.lan-companion[data-mode="companion"]{right:18px;bottom:18px;left:auto;top:auto;width:min(285px,calc(100vw - 28px));padding:8px 10px;border-radius:15px;cursor:pointer;}
.lan-companion[data-mode="companion"] .lan-head{gap:7px}.lan-companion[data-mode="companion"] .lan-drag-area{gap:8px}.lan-companion[data-mode="companion"] .lan-portrait{width:37px;height:37px;flex-basis:37px}.lan-companion[data-mode="companion"] .lan-ident strong{font-size:.8rem}.lan-companion[data-mode="companion"] .lan-ident strong small{display:none}.lan-companion[data-mode="companion"] .lan-ident>span{display:none}.lan-companion[data-mode="companion"] .lan-caption{display:-webkit-box;margin:7px 1px 1px;padding:5px 8px;font-size:.76rem;line-height:1.45;max-height:none;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.lan-companion[data-mode="companion"] .lan-actions,.lan-companion[data-mode="companion"] .lan-footnote,.lan-companion[data-mode="companion"] .lan-history,.lan-companion[data-mode="companion"] .lan-collapse{display:none}.lan-companion[data-mode="companion"] .lan-open,.lan-companion[data-mode="companion"] .lan-position-toggle,.lan-companion[data-mode="companion"] .lan-hide{min-height:32px;padding:5px 7px;font-size:.65rem;white-space:nowrap}.lan-companion[data-mode="companion"] .lan-open{border-color:var(--lan-accent);color:#effaff;background:#ffffff0b}.lan-companion[data-mode="companion"] .lan-position-toggle{padding-inline:5px}.lan-companion[data-mode="companion"] .lan-hide{font-size:.78rem;padding-inline:6px}
.lan-companion[data-mode="hidden"]{right:18px;bottom:18px;left:auto;top:auto;width:auto;min-width:0;padding:6px 8px;border-radius:999px;cursor:default}.lan-companion[data-mode="hidden"] .lan-drag-area,.lan-companion[data-mode="hidden"] .lan-caption,.lan-companion[data-mode="hidden"] .lan-collapse,.lan-companion[data-mode="hidden"] .lan-position-toggle,.lan-companion[data-mode="hidden"] .lan-hide,.lan-companion[data-mode="hidden"] .lan-actions,.lan-companion[data-mode="hidden"] .lan-footnote,.lan-companion[data-mode="hidden"] .lan-history{display:none}.lan-companion[data-mode="hidden"] .lan-open{display:inline-flex;min-height:34px;padding:6px 12px;border:0;background:transparent;color:#effaff}
.lan-drag-area{display:flex;align-items:center;gap:10px;min-width:0;flex:1;cursor:grab;touch-action:none;user-select:none}.lan-drag-area:active{cursor:grabbing}.lan-drag-area:focus-visible,.lan-companion button:focus-visible{outline:2px solid #c6f5ff;outline-offset:2px}.lan-open,.lan-position-toggle,.lan-hide{display:none}
.lan-companion[data-position="bottom-left"]:not([data-mode="dialogue"]){right:auto;left:18px;bottom:18px;top:auto}.lan-companion[data-position="top-left"]:not([data-mode="dialogue"]){left:18px;right:auto;top:calc(18px + env(safe-area-inset-top));bottom:auto}.lan-companion[data-position="top-right"]:not([data-mode="dialogue"]){right:18px;left:auto;top:calc(18px + env(safe-area-inset-top));bottom:auto}.lan-companion[data-position="custom"]:not([data-mode="dialogue"]){right:auto;bottom:auto}
.lan-dialogue-center{z-index:90}.lan-companion-card{transform-origin:bottom right}.lan-avatar{flex-shrink:0}
#lanCompanion[data-mode="history"]{position:fixed;left:50%;top:50%;right:auto;bottom:auto;width:min(820px,calc(100vw - 40px));max-height:min(86vh,780px);overflow:auto;padding:clamp(20px,4vw,34px);transform:translate(-50%,-50%);z-index:91;pointer-events:auto;border-color:#8feaff9c;border-radius:24px;background:linear-gradient(145deg,rgba(8,22,41,.99),rgba(17,22,49,.985));box-shadow:0 30px 100px #000b,0 0 50px #58cde522;animation:lanDialogueEnter .24s ease-out}
.lan-companion[data-mode="history"]>.lan-head,.lan-companion[data-mode="history"]>.lan-caption,.lan-companion[data-mode="history"]>.lan-actions,.lan-companion[data-mode="history"]>.lan-footnote{display:none}.lan-companion[data-mode="history"] .lan-history{display:block;max-height:none;margin:0;padding:0;border:0}.lan-companion[data-mode="history"] .lan-history[hidden]{display:block}
.lan-history-open{display:none;border:1px solid #7996bd45;border-radius:8px;background:#ffffff09;color:#cbd9e8;padding:6px 8px;min-height:32px;font-size:.68rem;cursor:pointer}.lan-history-open:hover{border-color:var(--lan-accent);color:#fff}.lan-history-reader>div:first-child{display:flex;justify-content:space-between;align-items:baseline;gap:16px;flex-wrap:wrap}.lan-history-reader>div:first-child strong{font-size:1.2rem;color:#f2f8ff}.lan-history-reader>div:first-child span{font-size:.78rem;color:#8facc5}.lan-history-reader blockquote{margin:20px 0;padding:clamp(18px,3vw,28px);border-left:3px solid var(--lan-accent);border-radius:0 12px 12px 0;background:#ffffff08;color:#edf7ff;font-size:clamp(1.08rem,2vw,1.35rem);line-height:1.85;white-space:pre-wrap}.lan-history-controls{display:flex;gap:10px;justify-content:center;position:sticky;bottom:0;padding:12px 0;background:linear-gradient(transparent,rgba(8,22,41,.98) 24%)}.lan-history-controls button,.lan-history-empty button{min-height:44px;padding:9px 16px;border:1px solid #7996bd55;border-radius:9px;background:#ffffff09;color:#edf7ff;cursor:pointer}.lan-history-controls button:hover,.lan-history-empty button:hover{border-color:var(--lan-accent)}.lan-history-controls button:disabled{opacity:.45;cursor:not-allowed}.lan-history-index{display:flex;align-items:center;gap:7px;flex-wrap:wrap;padding-top:12px;border-top:1px solid #ffffff16}.lan-history-index>span{width:100%;color:#8fa8c1;font-size:.76rem}.lan-history-index button{padding:7px 10px;border:1px solid #7996bd35;border-radius:999px;background:#ffffff06;color:#cbd9e8;font-size:.75rem;cursor:pointer}.lan-history-empty{text-align:center;padding:30px 8px}.lan-history-empty p{color:#a8bad0;line-height:1.7}
.lan-companion[data-mode="companion"] .lan-history-open{display:inline-flex;align-items:center;justify-content:center}
.lan-companion[data-mode="hidden"] .lan-history-open,.lan-companion[data-mode="dialogue"] .lan-history-open{display:none}
@media(max-width:760px){.lan-companion[data-mode="history"]{width:calc(100vw - 20px);max-height:calc(100dvh - 20px - env(safe-area-inset-top) - env(safe-area-inset-bottom));padding:17px 14px;border-radius:20px}.lan-companion[data-mode="history"] .lan-history-reader blockquote{margin:14px 0;font-size:1.02rem;line-height:1.75}.lan-history-controls{display:grid;grid-template-columns:1fr 1fr;gap:7px}.lan-history-controls button:last-child{grid-column:1/-1}.lan-history-index{max-height:22vh;overflow:auto}.lan-companion[data-mode="companion"] .lan-history-open{min-height:32px;padding:4px 6px;font-size:.62rem}}
@media(prefers-reduced-motion:reduce){.lan-companion[data-mode="history"]{animation:none}}
@keyframes lanDialogueEnter{from{opacity:0;transform:translate(-50%,-48%) scale(.97)}to{opacity:1;transform:translate(-50%,-50%) scale(1)}}@keyframes lanBackdropIn{from{opacity:0}to{opacity:1}}
@media(max-width:760px){#lanCompanion[data-mode="dialogue"]{width:calc(100vw - 24px);max-height:80vh;padding:17px 15px;border-radius:19px}.lan-companion[data-mode="dialogue"] .lan-portrait{width:54px;height:54px;flex-basis:54px}.lan-companion[data-mode="dialogue"] .lan-caption{margin:14px 0;padding:15px;font-size:1.04rem;line-height:1.75;max-height:48vh}.lan-companion[data-mode="dialogue"] .lan-actions{display:flex;justify-content:stretch}.lan-companion[data-mode="dialogue"] .lan-actions button{flex:1;min-width:0;min-height:46px}.lan-companion[data-mode="dialogue"] .lan-actions .lan-next{flex:1.4}.lan-companion[data-mode="companion"]{left:auto;right:10px;bottom:calc(10px + env(safe-area-inset-bottom));width:min(285px,calc(100vw - 20px));padding:7px 8px}.lan-companion[data-mode="hidden"]{left:auto;right:10px;bottom:calc(10px + env(safe-area-inset-bottom));}.lan-companion[data-position="bottom-left"]:not([data-mode="dialogue"]){left:10px;right:auto;bottom:calc(10px + env(safe-area-inset-bottom))}.lan-companion[data-position="top-left"]:not([data-mode="dialogue"]){left:10px;right:auto;top:calc(10px + env(safe-area-inset-top));bottom:auto}.lan-companion[data-position="top-right"]:not([data-mode="dialogue"]){right:10px;left:auto;top:calc(10px + env(safe-area-inset-top));bottom:auto}.lan-companion[data-mode="companion"] .lan-head{gap:5px}.lan-companion[data-mode="companion"] .lan-open{font-size:.62rem}.lan-companion[data-mode="companion"] .lan-hide{padding-inline:4px}}
@media(prefers-reduced-motion:reduce){.lan-companion[data-mode="dialogue"],body.lan-dialogue-active::before{animation:none;transition:none}}
/* 澜陪伴卡片统一为横向比例；点击内容推进对白，次要操作保持轻量。 */
.lan-companion[data-mode="companion"]{width:min(420px,calc(100vw - 28px));height:140px;min-height:140px;aspect-ratio:3/1;padding:9px 12px 8px;display:grid;grid-template-rows:auto minmax(0,1fr) auto;align-content:stretch;overflow:hidden;cursor:pointer}
.lan-companion[data-mode="companion"]:focus-visible,.lan-companion[data-mode="dialogue"]:focus-visible{outline:2px solid #b8f4ff;outline-offset:3px}
.lan-companion[data-mode="companion"] .lan-head{min-height:0;gap:6px;overflow:hidden}
.lan-companion[data-mode="companion"] .lan-caption{display:-webkit-box;min-height:0;margin:3px 1px;padding:4px 7px;max-height:3em;overflow:hidden;-webkit-line-clamp:2;-webkit-box-orient:vertical;font-size:.79rem;line-height:1.48}
.lan-companion[data-mode="companion"] .lan-actions{display:flex;align-items:center;justify-content:space-between;gap:8px;min-height:25px;margin:0}
.lan-card-hint{min-width:0;color:#93aec5;font-size:.68rem;line-height:1.3;user-select:none}
.lan-companion[data-mode="companion"] .lan-actions>:not(.lan-card-hint):not(.lan-skip){display:none}
.lan-companion .lan-actions .lan-skip{min-height:27px;padding:3px 8px;border-color:transparent;background:transparent;color:#9fb1c7;font-size:.67rem;white-space:nowrap;box-shadow:none}
.lan-companion .lan-actions .lan-skip:hover{border-color:#8bbdd044;background:#ffffff08;color:#e9f5ff}
.lan-companion[data-mode="dialogue"] .lan-card-hint{align-self:center;padding:0 5px;color:#9fb3ca;font-size:.76rem}
.lan-companion[data-mode="dialogue"] .lan-actions .lan-skip{min-height:32px;padding:5px 9px}
.lan-companion[data-choice-required="true"]{cursor:default}
.lan-companion[data-mode="companion"][data-choice-required="true"] .lan-card-hint{color:#f1d38c}
@media(max-width:760px){.lan-companion[data-mode="companion"]{left:auto;right:10px;bottom:calc(10px + env(safe-area-inset-bottom));width:min(420px,90vw);height:120px;min-height:120px;padding:7px 9px 6px;border-radius:14px}.lan-companion[data-mode="companion"] .lan-head{gap:4px}.lan-companion[data-mode="companion"] .lan-portrait{width:34px;height:34px;flex-basis:34px}.lan-companion[data-mode="companion"] .lan-caption{margin:2px 0;padding:3px 6px;font-size:.74rem;line-height:1.42;max-height:2.9em}.lan-companion[data-mode="companion"] .lan-actions{min-height:23px}.lan-card-hint{font-size:.64rem}.lan-companion[data-mode="companion"] .lan-actions .lan-skip{min-height:25px;padding:3px 6px;font-size:.63rem}}

/* 澜对白按整段生命周期播放入场与收束动画；句间只淡入新字幕。 */
.lan-companion[data-mode="dialogue"][data-dialogue-phase="enter"]{animation:lanDialogueEnter .24s ease-out both}
.lan-companion[data-mode="dialogue"][data-dialogue-phase="talking"]{animation:none}
.lan-companion[data-mode="companion"][data-dialogue-phase="enter"]{animation:lanCardEnter .22s ease-out both}
.lan-companion[data-mode="companion"][data-dialogue-phase="exit"]{animation:lanCardSettle .18s ease-out both}
.lan-companion[data-mode="dialogue"] .lan-caption{min-height:3.7em}
.lan-caption.lan-text-changing{animation:lanTextRefresh .22s ease-out both}
@keyframes lanCardEnter{from{opacity:0;scale:.97}to{opacity:1;scale:1}}
@keyframes lanCardSettle{from{opacity:.86;scale:.985}to{opacity:1;scale:1}}
@keyframes lanTextRefresh{from{opacity:.35;translate:0 3px}to{opacity:1;translate:0 0}}
@media(prefers-reduced-motion:reduce){.lan-companion[data-dialogue-phase="enter"],.lan-companion[data-dialogue-phase="exit"],.lan-caption.lan-text-changing{animation:none!important}}

/* 展品讲解与详情弹层同屏时，澜的中央讲解需要位于详情弹层之上。 */
#lanCompanion[data-mode="dialogue"][data-dialogue-surface="exhibit"]{z-index:120}
#lanCompanion[data-mode="dialogue"][data-dialogue-surface="modal"]{z-index:120}
.lan-voice-settings{margin-top:14px;padding-top:10px;border-top:1px solid #7996bd45;font-size:.8rem;color:#cbd9e8;cursor:auto}
.lan-voice-settings summary{cursor:pointer;padding:8px 0;color:#a8eaf3;min-height:36px}
.lan-voice-fields{display:flex;flex-wrap:wrap;gap:10px;margin:8px 0}
.lan-voice-fields label{display:grid;gap:6px;flex:1 1 140px;min-width:0}
.lan-voice-fields select{width:100%;min-width:0;min-height:44px;border:1px solid #7996bd70;border-radius:8px;background:#10243a;color:#edf5ff;padding:8px;font:inherit}
.lan-voice-buttons{display:flex;flex-wrap:wrap;gap:8px}
.lan-voice-buttons button{min-height:44px;padding:8px 12px;color:#edf5ff;background:#17354a;border:1px solid #7996bd70;border-radius:8px;cursor:pointer}
.lan-voice-settings p,.lan-voice-settings small{line-height:1.6;overflow-wrap:anywhere}
.lan-voice-settings :focus-visible{outline:2px solid #8feaff;outline-offset:3px}
.lan-voice-settings :disabled{opacity:.55;cursor:not-allowed}
.lan-companion[data-mode="companion"] .lan-voice-settings,.lan-companion.is-collapsed .lan-voice-settings{display:none}
