:root{font-family:"Microsoft YaHei","PingFang SC",sans-serif;color:#20353c;background:#f5f3ee;font-size:20px;font-synthesis:none}*{box-sizing:border-box}body{margin:0}main{max-width:850px;margin:auto;padding:56px 28px 24px}button,textarea{font:inherit}button{cursor:pointer}button:focus-visible,textarea:focus-visible{outline:3px solid #b35b28;outline-offset:5px}[hidden]{display:none!important}.heading{padding:12px 0 36px;border-top:3px solid #214e51}.edition{font-size:.8rem;color:#486269;letter-spacing:.08em}h1{font-family:"Songti SC",SimSun,serif;font-size:3.1rem;font-weight:700;letter-spacing:.12em;margin:24px 0 16px;display:flex;align-items:center;gap:24px}.seal{font-family:serif;font-size:1rem;border:2px solid #9b3d2e;color:#9b3d2e;padding:4px 5px;letter-spacing:0;transform:rotate(-5deg)}.heading p{margin:0;color:#486269;line-height:1.7}nav{display:grid;gap:16px}.entry{display:flex;align-items:center;gap:24px;padding:30px 26px;border-radius:14px;border:1px solid #c6cdcb;text-align:left;width:100%;min-height:124px;background:#fff}.story{background:#214e51;color:#fff;border-color:#214e51;box-shadow:0 8px 24px #214e5118;transition:background .15s}.story:hover{background:#183e40}.number{font-family:Georgia,serif;font-size:1.25rem;opacity:.8;align-self:flex-start;line-height:1.8}.entry-text{display:grid;gap:10px;flex:1}.entry strong{font-weight:600;font-size:1.35rem}.entry-text>span{font-size:.9rem;line-height:1.5;color:#4d6268}.story .entry-text>span{color:#e1efed}.arrow{font-size:1.8rem}.badge{font-size:.7rem;color:#526268;border:1px solid #c6cdcb;padding:6px 10px;border-radius:100px;white-space:nowrap}footer{text-align:center;margin-top:32px;color:#5f6d70;font-size:.75rem}.topbar{display:flex;align-items:center;justify-content:space-between;gap:16px}h2{font-family:"Songti SC",SimSun,serif;font-size:2rem;margin:30px 0 16px}.notice{font-size:.8rem;line-height:1.7;color:#52666b;padding-bottom:20px;border-bottom:1px solid #ccd3d0}#messages{display:grid;gap:20px;margin:24px 0}.message{max-width:90%;padding:18px 22px;border-radius:14px;background:#fff;border:1px solid #d2d9d5;line-height:1.8;overflow-wrap:anywhere;white-space:pre-wrap}.message.user{justify-self:end;background:#e0ece8;border-color:#bfceca}.speaker{display:block;font-size:.7rem;color:#536a6e;margin-bottom:4px}form label{display:block;margin:24px 0 12px;font-size:.9rem}.compose{display:flex;gap:12px;align-items:stretch}textarea{width:100%;min-height:108px;resize:vertical;border:1px solid #849c9b;border-radius:10px;padding:16px;background:#fff;color:#20353c;line-height:1.6}.primary{background:#214e51;color:white;border:0;border-radius:10px;padding:14px 22px;min-height:54px;white-space:nowrap}.primary:hover{background:#183e40}.quiet{background:transparent;color:#214e51;border:1px solid #97adaa;padding:12px 16px;border-radius:10px;min-height:48px}.actions{display:flex;gap:14px;flex-wrap:wrap;margin-top:18px}#result{border-top:2px solid #214e51;margin-top:30px;padding-top:8px}#result p{font-size:.85rem;line-height:1.7}#notes{white-space:pre-wrap;overflow-wrap:anywhere;line-height:1.9;margin:20px 0}#result button{margin:0 10px 12px 0}@media(max-width:560px){main{padding:30px 18px 24px}h1{font-size:2.5rem;gap:18px}.entry{padding:24px 18px;gap:14px;flex-wrap:wrap}.entry strong{font-size:1.2rem}.entry-text>span{font-size:.85rem}.badge{margin-left:40px}.heading{padding-bottom:28px}.topbar .edition{display:none}.compose{flex-direction:column}.message{max-width:96%}.entry-text{min-width:190px}.arrow{font-size:1.4rem}h2{font-size:1.7rem}}@media(prefers-reduced-motion:reduce){*{transition:none!important;scroll-behavior:auto!important}}
.speech-tools{display:flex;flex-wrap:wrap;gap:12px;align-items:center}.speech-tools span{font-size:.75rem;line-height:1.6;width:100%;color:#52666b}.voice-panel{margin:24px 0;padding:24px;border:1px solid #a9bfba;border-radius:14px;background:#eaf0ed}.record-button{width:100%;font-size:1.3rem;min-height:72px}.recording-now{background:#943f30}.recording-now:hover{background:#793327}#record-status{line-height:1.6;margin-bottom:10px}.voice-hint{font-size:.8rem;line-height:1.7;color:#52666b}.recording{margin-top:20px;padding-top:20px;border-top:1px solid #b9c9c4}.recording audio{width:100%;display:block;margin:12px 0}.recording a,.recording button{display:inline-block;font-size:.8rem;margin:6px 10px 6px 0;text-decoration:none}button:disabled{cursor:wait;opacity:.6}
input{font:inherit;min-width:0;width:100%;border:1px solid #849c9b;border-radius:10px;padding:14px;background:white;color:#20353c}#chat-status{font-size:.85rem;line-height:1.7;color:#425c61}input:focus-visible{outline:3px solid #b35b28;outline-offset:3px}

/* Conversation layout: full-height chat, independently scrolling history. */
.sr-only{position:absolute!important;width:1px;height:1px;padding:0!important;margin:-1px!important;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
#chat{position:fixed;inset:0;z-index:10;display:flex;flex-direction:column;height:100dvh;background:#fff;color:#242b35;font-size:18px}
.chat-header{display:flex;align-items:center;gap:24px;flex-shrink:0;padding:16px 28px;border-bottom:1px solid #edf0f3;background:#fff}
#chat .quiet{border:0;color:#596573;background:transparent;border-radius:12px;padding:10px 14px;font-size:16px;min-height:44px}
#chat .quiet:hover{background:#f1f4f6;color:#252d39}
.chat-brand{display:flex;align-items:center;gap:12px;flex:1}.chat-avatar{display:grid;place-items:center;width:42px;height:42px;background:#e8f2ef;color:#286454;border-radius:15px;font-family:SimSun,serif;font-size:25px}
#chat h2{font:600 20px/1.4 "Microsoft YaHei",sans-serif;margin:0}.chat-subtitle{font-size:13px;color:#78828b}.chat-info{position:relative;font-size:14px;color:#697581}.chat-info summary{cursor:pointer;padding:12px}.chat-info p{position:absolute;right:0;top:38px;width:min(320px,80vw);padding:20px;line-height:1.8;background:#fff;border:1px solid #e4e8ec;box-shadow:0 8px 30px #24344315;border-radius:16px;z-index:20}
.conversation{flex:1;min-height:0;overflow:auto;overscroll-behavior:contain;scroll-padding:24px}.conversation-inner,.dock-inner{width:min(100%,820px);margin:auto}.conversation-inner{padding:24px 24px 32px}.chat-date{text-align:center;color:#939aa3;font-size:13px;margin:10px 0 32px}
#chat #messages{gap:28px;margin:20px 0}#chat .message{font-size:20px;line-height:1.85;max-width:88%;padding:18px 22px;border:0;border-radius:4px 22px 22px;background:#f5f6f8;color:#27313b}#chat .message.user{background:#e9f2ee;border-radius:22px 4px 22px 22px;justify-self:end}#chat .speaker{font-size:13px;color:#75817d;margin-bottom:7px}#chat .message.assistant .speaker{color:#427366}
#chat .speech-tools{gap:2px;margin-left:6px}#chat .speech-tools span{font-size:13px;color:#8a9299;margin:0 10px}.recording-drawer{margin:24px 0 0;color:#78828d;font-size:14px}.recording-drawer summary{padding:12px 0;cursor:pointer}.recording-drawer .recording{background:#f7f8fa;border:0;padding:16px;border-radius:16px}.recording-drawer .voice-hint{font-size:14px}
.chat-dock{flex-shrink:0;padding:0 24px max(12px,env(safe-area-inset-bottom));background:#fff}.dock-inner{padding:0 24px}#chat #chat-status{font-size:14px;line-height:1.5;margin:5px 6px 10px;color:#748079}.input-card{border:1px solid #dde3e7;border-radius:24px;box-shadow:0 5px 22px #1f3b4510;background:#fff;overflow:hidden}.input-card:focus-within{border-color:#82a999;box-shadow:0 0 0 3px #eaf3ee}
#chat textarea{display:block;font-size:19px;border:0;min-height:76px;max-height:140px;resize:vertical;padding:18px 20px 8px;line-height:1.6;border-radius:0;background:transparent;outline:none}#chat textarea:disabled{background:#fafbfc}#chat textarea::placeholder{color:#9aa1a8}.input-toolbar{display:flex;gap:12px;align-items:center;padding:8px 12px 12px}.input-toolbar .record-button{width:auto;min-height:48px;border:0;border-radius:14px;padding:10px 16px;background:#f0f5f2;color:#2c6656;font-size:17px;white-space:nowrap}.input-toolbar .recording-now{background:#fbe9e5;color:#9b3929}.input-tip{font-size:12px;color:#929aa1;flex:1}#chat .primary{background:#286653;border-radius:14px;font-size:17px;min-height:48px;padding:10px 20px}#chat .primary:hover{background:#205342}#chat #send{margin-left:auto}
.record-feedback{display:flex;flex-wrap:wrap;gap:0 12px;padding:0 6px}.record-feedback p{font-size:12px;color:#7a858d;line-height:1.5;margin:7px 0 0}#chat .actions{margin-top:4px;display:flex;align-items:center;justify-content:space-between;gap:8px}#chat .actions .quiet{font-size:14px;padding:8px 10px}.save-hint{font-size:12px;color:#9aa1a8}
#chat #login{margin:0 0 24px;padding:22px;background:#f6f8f7;border:1px solid #e4ebe7;border-radius:18px}#login strong{font-size:19px;font-weight:600}#login p{font-size:14px;color:#78847d;margin:8px 0 16px}#chat #login .compose{flex-direction:row}#chat input{font-size:17px;border-color:#d5dfd9}#chat #result{border:0;padding:24px;background:#f6f8f7;border-radius:20px}#chat #result p{font-size:16px}
@media(max-width:600px){.chat-header{padding:10px 12px;gap:10px}.chat-header #back{padding:8px}.chat-avatar{width:36px;height:36px;font-size:22px}.chat-info summary{font-size:12px;padding:8px}.chat-subtitle{font-size:12px}.conversation-inner{padding:16px 16px 24px}.chat-date{margin-bottom:24px}#chat .message{font-size:19px;max-width:94%;padding:16px 18px}.chat-dock{padding:0 10px max(8px,env(safe-area-inset-bottom))}.dock-inner{padding:0}.input-tip{display:none}.input-card{border-radius:20px}#chat textarea{font-size:18px;padding:14px 16px 6px;min-height:68px}.input-toolbar{padding:6px 10px 10px}.save-hint{display:none}#chat #login{padding:16px}#chat #login .compose{flex-wrap:wrap}#chat #login input{flex:1;min-width:130px}.record-feedback p{font-size:12px}#chat .speech-tools .quiet{font-size:14px}}
@media(max-height:550px){.chat-subtitle,.chat-date,.save-hint,.input-tip{display:none}.chat-header{padding-top:6px;padding-bottom:6px}#chat textarea{min-height:48px;max-height:70px}.record-feedback{max-height:36px;overflow:auto}.chat-dock .actions{margin:0}}

/* Keep one visible status and put secondary controls in More. */
#chat .chat-subtitle{display:none}.chat-header{gap:12px;padding-top:12px;padding-bottom:12px}#chat .chat-info{order:2}#chat #finish{order:3;color:#68736e}.chat-info .more-panel{position:absolute;right:0;top:44px;width:min(360px,85vw);max-height:70dvh;overflow:auto;padding:18px;background:#fff;border:1px solid #e5eae7;border-radius:18px;box-shadow:0 12px 40px #1f35251a;z-index:30}.chat-info .more-panel>p{position:static;width:auto;padding:0;margin:0 0 16px;border:0;box-shadow:none;font-size:14px;line-height:1.8}.chat-info .recording-drawer{margin-top:12px}#chat .more-panel .speech-tools{margin:0}#chat .more-panel .speech-tools span{display:none}#chat .more-panel .quiet{font-size:16px}#chat .speaker{font-size:14px;margin-bottom:8px}.conversation-inner{padding-top:32px}#chat .message{background:#f7f8f8;border-radius:20px;line-height:1.8}#chat .message.user{border-radius:20px}#chat #messages{gap:24px}#chat #activity-status{font-size:14px;line-height:1.6;color:#63736b;margin:0 6px 8px;min-height:0}#activity-status:empty{display:none}.chat-dock{padding-bottom:max(20px,env(safe-area-inset-bottom))}.input-card{box-shadow:none;border-color:#e2e8e4;background:#fafcfb}#chat textarea{background:transparent!important;resize:none;min-height:66px}.input-toolbar{padding-top:4px}.input-toolbar .record-button{font-size:18px;min-height:52px;background:#e7f0eb}#chat #send{min-height:52px;min-width:80px}#chat #login{background:#f8faf9}#login p{display:none}#login .compose{margin-top:14px}@media(max-width:600px){.chat-header{gap:4px}#chat .chat-info summary{font-size:15px}.chat-brand{gap:8px}.chat-info .more-panel{right:-58px}.conversation-inner{padding-top:24px}.chat-dock{padding-bottom:max(12px,env(safe-area-inset-bottom))}#chat #activity-status{font-size:14px}.input-toolbar .record-button{font-size:18px}}

/* Warm portrait-first companion experience. */
body{background:#f2e9de}main{max-width:540px;padding:24px 20px;background:#fff9ef;min-height:100dvh}.companion-heading{border:0;text-align:center;padding:12px 0 8px}.companion-heading h1{display:block;font-family:"Microsoft YaHei",sans-serif;font-size:clamp(32px,8vw,46px);letter-spacing:.04em;color:#502818;margin:12px 0}.companion-heading p{font-size:19px;color:#8b6550}.companion-heading .edition{color:#a28168;letter-spacing:.14em}.welcome-portrait{position:relative;height:clamp(240px,42dvh,440px);margin:0 -20px;overflow:hidden}.welcome-portrait img{width:100%;height:100%;object-fit:cover;object-position:center 59%;mask-image:linear-gradient(to bottom,transparent,#000 8%,#000 82%,transparent)}.welcome-portrait figcaption{position:absolute;bottom:8px;left:0;right:0;text-align:center;color:#775945;font-size:14px}#home nav{gap:10px}#home .story{border:0;border-radius:60px;background:linear-gradient(120deg,#ff9c45,#ee7c32);box-shadow:0 8px 20px #e58c3926;min-height:82px;padding:16px 24px}#home .story:hover{background:#eb7e34}#home .story .number{display:none}#home .story strong{font-size:25px}#home .story .entry-text>span{font-size:14px;color:#fff7ee}#home .story .entry-text{gap:3px;min-width:0}#home .upcoming{min-height:56px;padding:10px 16px;border:0;background:#f7f0e5;gap:10px}#home .upcoming strong{font-size:17px}#home .upcoming .number,#home .upcoming .entry-text>span{display:none}#home .upcoming .badge{margin:0;font-size:12px;border:0}#home footer{margin-top:14px;font-size:12px}
#chat{max-width:540px;left:50%;right:auto;transform:translateX(-50%);width:100%;background:#fff7ed;box-shadow:0 0 80px #77502c12}.chat-header{background:#fff7ed;border:0;padding:10px 14px}#chat h2{color:#55351f}#chat .chat-avatar{background:#f1dfce;color:#9b603c}#chat .quiet{color:#825d43}.portrait-conversation{position:relative;isolation:isolate;background:#ead7c3;min-height:180px}.companion-photo{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:center 58%;z-index:-2}.portrait-conversation:after{content:"";position:absolute;inset:0;z-index:-1;pointer-events:none;background:linear-gradient(#eddcc926,transparent 60%,#fff7ed)}.portrait-label{position:absolute;bottom:10px;right:14px;font-size:12px;color:#684b3a;background:#fff8ebd9;padding:4px 9px;border-radius:20px}.portrait-conversation .conversation-inner{padding:16px 20px 30px}.portrait-conversation #messages{margin:0!important;display:block!important}.portrait-conversation:not(.show-history) .message{display:none}.portrait-conversation:not(.show-history) .message:last-child{display:block;position:relative;max-width:100%!important;max-height:180px;overflow:auto;background:#fff7eeeF!important;border:1px solid #fff!important;border-radius:28px 28px 6px 28px!important;box-shadow:0 6px 22px #704d3710;padding:16px 20px!important;font-size:21px!important;line-height:1.65!important}.portrait-conversation:not(.show-history) .speaker{display:none!important}.portrait-conversation.show-history .conversation-inner{background:#fff8eff2;min-height:100%}.portrait-conversation.show-history #messages{display:grid!important;gap:14px!important}.portrait-conversation.show-history .message{max-width:94%!important;font-size:18px!important;background:white!important}.portrait-conversation.show-history .message.user{background:#f5e6d7!important}.portrait-conversation #login{background:#fffaf4f5!important;margin:0 0 12px!important;padding:16px!important}.portrait-conversation #result{position:relative;background:#fffaf4fa!important;z-index:2}#chat .chat-dock{background:#fff7ed;padding:10px 16px max(16px,env(safe-area-inset-bottom))}.dock-inner{padding:0}#chat .input-card{border:0;background:transparent;box-shadow:none;overflow:visible}#chat .input-card:focus-within{box-shadow:none}#chat textarea{background:#fffcf6!important;border:1px solid #eadfce;min-height:56px;height:62px;max-height:120px;border-radius:16px;font-size:17px;padding:10px 14px}#chat .input-toolbar{padding:10px 0 0;gap:10px}#chat .record-button{flex:1;min-height:68px;border-radius:40px;font-size:25px;font-weight:600;color:#fff;background:linear-gradient(120deg,#ff9b43,#ed7c33);box-shadow:0 6px 14px #d9964922}#chat .recording-now{background:#e9534e;box-shadow:0 6px 14px #d74b3522}#chat #send{min-height:64px;min-width:78px;border-radius:28px;background:#fffaf3;color:#9b562a;border:1px solid #e5c6aa;font-size:19px}#chat .primary{background:#ec863c}#chat #activity-status{color:#82654e;font-size:14px}#chat .chat-info .more-panel{background:#fffcf6}.portrait-conversation.show-history .portrait-label{display:none}@media(max-height:600px){.companion-heading h1{font-size:30px}.welcome-portrait{height:210px}.portrait-conversation:not(.show-history) .message:last-child{max-height:110px;font-size:18px!important}#chat textarea{height:48px;min-height:48px}#chat .record-button{min-height:52px;font-size:21px}#chat #send{min-height:52px}.chat-header{padding-top:6px;padding-bottom:6px}}

/* Keep login and subtitles outside the portrait, leaving the face unobstructed. */
#chat > #login{flex-shrink:0;margin:0;padding:8px 16px 12px;border:0;border-radius:0;background:#fff7ed}
#chat > #login strong{display:none}
#chat > #login .compose{margin:0;flex-wrap:nowrap;gap:8px}
#chat > #login input{min-width:0;font-size:16px;padding:10px 12px}
#chat > #login .primary{font-size:16px;min-height:44px;padding:10px 14px}
.portrait-conversation:not(.show-history) #messages{display:none!important}
.portrait-conversation:not(.show-history) .conversation-inner{padding:0}
.portrait-conversation{min-height:100px}
.caption-bar{display:flex;align-items:center;gap:6px;flex-shrink:0;padding:10px 16px 4px;background:#fff7ed}
#live-caption{flex:1;min-width:0;margin:0;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden;font-size:17px;line-height:1.6;color:#594839;overflow-wrap:anywhere}
#chat #expand-caption{flex-shrink:0;padding:8px;font-size:14px;color:#906e53}
@media(max-height:650px){.caption-bar{padding-top:6px}#live-caption{font-size:16px}#chat .chat-dock{padding-top:6px;padding-bottom:max(8px,env(safe-area-inset-bottom))}#chat .record-button{min-height:52px;font-size:21px}#chat #send{min-height:52px}#chat textarea{height:48px;min-height:48px}}
