:root{--blue:#435de0;--blue-dark:#3047b9;--ink:#1b2943;--muted:#8a94a8;--line:#e9edf5;--paper:#f4f6fb;--font:16px;font-family:'Microsoft YaHei UI','Microsoft YaHei',sans-serif;color:var(--ink);font-size:var(--font)}*{box-sizing:border-box}body{margin:0;overflow:hidden;background:#edf1f8}button,input,textarea{font:inherit}button{cursor:pointer;border:0;color:inherit;background:none}button:disabled{opacity:.45;cursor:default}button:focus-visible,a:focus-visible{outline:2px solid var(--blue);outline-offset:3px}input,textarea{outline:none}input:focus,textarea:focus{border-color:var(--blue)!important}input,textarea{color:var(--ink)}svg{width:23px;height:23px;fill:none;stroke:currentColor;stroke-width:1.65;stroke-linecap:round;stroke-linejoin:round;vertical-align:middle}.icon{width:42px;height:42px;display:grid;place-items:center;border-radius:12px}.icon:hover{background:#e9eefc}.primary{background:var(--blue);color:white;border-radius:13px;padding:13px 22px;font-weight:600;box-shadow:0 5px 14px #435de027}.secondary{background:#edf1fe;color:var(--blue);border-radius:12px;padding:11px 16px}.danger{color:#b65757}.muted{color:var(--muted);font-size:13px}.pill{border-radius:8px;padding:3px 7px;font-size:11px;background:#eaf0ff;color:var(--blue)}#app{max-width:600px;margin:auto;height:100dvh;background:var(--paper);display:flex;flex-direction:column;position:relative;box-shadow:0 0 90px #273f650b}.top{flex-shrink:0;height:83px;padding:22px 19px 12px;display:flex;align-items:center;gap:9px;background:#ffffffed;border-bottom:1px solid #edf0f6}.top .title{flex:1;min-width:0}.top h1{font-size:25px;margin:0;font-weight:750;letter-spacing:1px}.top.chat h1{font-size:18px;letter-spacing:0}.top small{display:block;color:var(--muted);font-size:11px;margin-top:3px}.top .back{margin-left:-10px}.top .brand-mark{width:31px;height:31px}.content{flex:1;min-height:0;overflow-y:auto;overscroll-behavior:contain;scrollbar-width:thin}.bottom{height:76px;flex-shrink:0;background:#fffffff5;border-top:1px solid var(--line);display:flex;padding:8px 8px 6px}.tab{flex:1;display:flex;align-items:center;justify-content:center;flex-direction:column;gap:5px;color:#8d97ac;font-size:11px;position:relative}.tab svg{width:25px;height:25px}.tab.active{color:var(--blue)}.tab.active:before{content:'';height:3px;width:19px;border-radius:3px;background:var(--blue);position:absolute;top:-8px}.badge{position:absolute;top:0;left:calc(50% + 9px);font-size:10px;min-width:16px;background:#ee6b76;border:2px solid white;color:white;border-radius:20px;padding:1px 3px}.search-wrap{padding:17px 18px 12px}.search{width:100%;border:1px solid var(--line);border-radius:12px;background:white;padding:12px 15px;font-size:14px}.list{padding:0 12px}.list-row{width:100%;display:flex;gap:13px;padding:17px 12px;align-items:center;text-align:left;border-bottom:1px solid #edf0f7;border-radius:14px}.list-row:hover{background:white}.list-row .copy{flex:1;min-width:0}.list-row strong{font-size:16px;font-weight:600}.list-row p{font-size:13px;color:var(--muted);margin:7px 0 0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.list-row time{font-size:10px;color:#a2aabd;align-self:flex-start;padding-top:5px}.avatar{flex-shrink:0;width:52px;height:52px;border-radius:17px;object-fit:cover;background:#e9eefc;display:grid;place-items:center;color:#5b70bd;overflow:hidden}.avatar svg{width:28px;height:28px}.avatar.service{background:#e9efff;color:var(--blue)}.avatar.mystery{background:linear-gradient(140deg,#374357,#131d30);color:#becce6}.avatar.me{background:linear-gradient(145deg,#e0e8ff,#c2d2ff);color:#526fc2}.avatar.me[data-color="1"]{background:#dbeeea;color:#4d8277}.avatar.me[data-color="2"]{background:#f5e6d7;color:#a17c52}.avatar.large{width:79px;height:79px;border-radius:25px}.row-dot{width:8px;height:8px;border-radius:50%;background:#eb6e79}.section-label{font-size:12px;letter-spacing:1px;color:#8794aa;margin:20px 24px 8px}.request-row{margin:13px 18px 18px;padding:16px;background:linear-gradient(115deg,#e9efff,#f6f8ff);border:1px solid #dde5ff;border-radius:16px;display:flex;align-items:center;gap:13px;width:calc(100% - 36px)}.request-row span:nth-child(2){flex:1;text-align:left}.empty{padding:55px 32px;text-align:center;color:var(--muted);font-size:14px;line-height:1.8}.empty svg{width:42px;height:42px;margin-bottom:15px;color:#b1bbd0}.hint{margin:16px 22px;color:#94a0b5;font-size:12px;line-height:1.7}.chat-content{padding:12px 17px 24px;background:linear-gradient(#f0f3fb,#f6f7fb)}.date-line{text-align:center;font-size:11px;color:#9aa5b9;margin:13px 0 23px}.message{display:flex;gap:9px;margin-bottom:19px;align-items:flex-start}.message .avatar{width:37px;height:37px;border-radius:12px}.message .avatar svg{width:21px;height:21px}.message.own{flex-direction:row-reverse}.bubble-wrap{max-width:calc(100% - 64px);min-width:0}.bubble{padding:12px 14px;background:white;border:1px solid #e7ecf5;border-radius:4px 16px 16px 16px;box-shadow:0 2px 5px #1b294305;font-size:var(--font);line-height:1.65;overflow-wrap:anywhere}.own .bubble{background:#e2e9ff;border-color:#d8e2ff;border-radius:16px 4px 16px 16px}.voice{display:flex;gap:13px;align-items:center;min-width:158px;max-width:100%;text-align:left;color:#314b82}.voice.playing{background:#e9efff}.voice.playing .bars i{animation:pulse .8s infinite alternate}.voice time{font-size:12px;color:#9ca7bb;margin-left:auto}.bars{height:23px;display:flex;gap:3px;align-items:center}.bars i{width:3px;border-radius:3px;background:#7f94cc;display:block}.voice-meta{display:flex;justify-content:space-between;align-items:center;padding:4px 3px;color:#8c99b3;font-size:10px}.voice-meta button{font-size:12px;color:#7789b0;padding:3px}.unheard{display:inline-block;width:5px;height:5px;border-radius:50%;background:#ec7885;margin-right:5px}.transcript{font-size:13px;color:#627087;padding:9px 10px;line-height:1.75;background:#ffffffa6;border:1px dashed #dce3f1;border-radius:10px;margin-top:7px}.quote{border-left:3px solid #c6d2f3;padding:5px 8px;margin-bottom:8px;font-size:12px;color:#8391a9}.system-message{text-align:center;color:#98a2b4;font-size:12px;margin:17px 24px;line-height:1.6}.contact-card{border:1px solid #e2e8f5;border-radius:15px;background:white;padding:12px;display:flex;align-items:center;gap:10px;text-align:left;width:100%;margin-top:8px;min-width:230px}.contact-card .avatar{width:40px;height:40px;border-radius:12px}.contact-card strong{font-size:14px}.contact-card small{display:block;font-size:10px;color:#93a0b7;margin-top:4px}.contact-card svg.chevron{width:16px;margin-left:auto}.contact-card.unavailable{opacity:.7}.time-card{background:linear-gradient(125deg,#344ed0,#7185ed);padding:18px;color:white;border-radius:15px;min-width:220px;text-align:left}.time-card p{font-size:11px;opacity:.8;margin:7px 0 14px}.time-card span{font-size:13px;border-bottom:1px solid #ffffff60;padding-bottom:2px}.composer{background:#fff;border-top:1px solid var(--line);padding:10px 11px 13px;flex-shrink:0}.compose-row{display:flex;gap:6px;align-items:flex-end}.compose-row textarea{resize:none;height:43px;max-height:80px;flex:1;min-width:0;border:1px solid #e4e9f3;background:#f6f8fc;border-radius:13px;padding:10px 12px;font-size:14px;line-height:22px}.send{height:42px;padding:0 13px;border-radius:12px;background:var(--blue);color:white;font-size:13px}.compose-row .icon{width:33px;flex-shrink:0}.reply-hints{display:flex;gap:8px;padding:0 3px 10px;overflow-x:auto}.reply-hints button{font-size:12px;white-space:nowrap;border:1px solid #e0e7fc;color:#5970ba;background:#f5f7ff;border-radius:20px;padding:7px 12px}.reply-hints .soft{border:0;color:#a3aec3;background:none;padding-left:0}.queue-hint{font-size:11px;color:#97a4bd;padding:0 10px 9px}.cover{height:170px;background:linear-gradient(145deg,#283e90,#758de0);position:relative;overflow:hidden;color:white;padding:29px 23px}.cover:before,.cover:after{content:'';position:absolute;border:1px solid #ffffff20;border-radius:50%;width:300px;height:300px;top:37px;right:-80px}.cover:after{width:220px;height:220px;top:77px;right:-40px}.cover strong{font-size:24px;font-weight:500;letter-spacing:3px}.cover p{font-size:12px;opacity:.65;letter-spacing:1px}.feed{padding:15px 15px 25px}.post{padding:19px 16px;margin-bottom:14px;border:1px solid #e5eaf4;border-radius:17px;background:white}.post-head{display:flex;gap:10px;align-items:center}.post-head .avatar{width:39px;height:39px;border-radius:12px}.post-head strong{font-size:14px}.post-head small{display:block;color:#99a5b9;font-size:10px;margin-top:4px}.post-text{font-size:15px;line-height:1.9;margin:16px 0 12px;overflow-wrap:anywhere}.post-image{width:100%;max-height:240px;object-fit:cover;border-radius:12px;display:block}.post-actions{display:flex;gap:19px;align-items:center;padding:14px 1px 0;color:#98a5bc;font-size:12px}.post-actions svg{width:18px;height:18px;margin-right:4px}.post-actions .liked{color:var(--blue)}.comments{border-radius:10px;background:#f4f6fb;padding:9px 11px;margin-top:12px;font-size:12px;line-height:1.9}.comments button{font-size:12px;color:#526fa8;padding:0}.profile-hero{padding:27px 24px;background:white;display:flex;gap:17px;align-items:center;margin-bottom:15px}.profile-hero h2{font-size:21px;margin:0 0 7px}.profile-hero p{font-size:12px;color:#939fb5;margin:0;line-height:1.8}.panel{background:white;border:1px solid var(--line);border-radius:17px;margin:15px 17px;padding:4px 17px}.setting-row{display:flex;align-items:center;gap:13px;padding:17px 0;border-bottom:1px solid var(--line);width:100%;text-align:left}.setting-row:last-child{border:0}.setting-row>span{flex:1}.setting-row small{font-size:12px;color:#8c99b2}.setting-row svg{color:#7a8faf;width:21px}.toggle{background:#d4ddeb;width:40px;height:23px;border-radius:20px;position:relative}.toggle.on{background:var(--blue)}.toggle:after{content:'';width:17px;height:17px;border-radius:50%;position:absolute;background:white;top:3px;left:3px}.toggle.on:after{left:20px}.about{padding:10px 25px;color:#929eb4;font-size:12px;line-height:1.8}.about a{color:var(--blue)}.register{height:100%;overflow:auto;background:radial-gradient(ellipse at 70% 25%,#e5eaff55,transparent 55%),#fcfdff;padding:45px 30px 25px;display:flex;flex-direction:column}.reg-brand{text-align:center;margin:20px 0 30px}.reg-brand img{height:83px;width:83px;filter:drop-shadow(0 12px 15px #435de020)}.reg-brand h1{font-size:35px;letter-spacing:8px;text-indent:8px;margin:18px 0 8px}.reg-brand p{font-size:13px;color:#929eb8;letter-spacing:2px}.register label.field{display:block;margin:15px 0;font-size:12px;color:#7f8da7}.register label.field input{width:100%;margin-top:8px;border:1px solid #e4eaf5;background:#fff;border-radius:13px;padding:14px 14px;font-size:14px}.avatars{display:flex;gap:15px;justify-content:center;margin:5px 0 15px}.avatars button{border:2px solid transparent;padding:4px;border-radius:18px}.avatars button.selected{border-color:var(--blue)}.avatars .avatar{width:42px;height:42px;border-radius:12px}.consent{font-size:11px;color:#95a0b6;line-height:1.8;display:flex;align-items:flex-start;gap:5px;margin:16px 0 20px}.consent input{accent-color:var(--blue);margin-top:4px}.register .primary{width:100%;font-size:15px}.reg-footer{text-align:center;font-size:11px;color:#a6b1c5;margin-top:auto;padding-top:30px;line-height:1.8}.error{font-size:12px;color:#c76b76;min-height:18px}.modal-backdrop{position:fixed;inset:0;background:#18264166;z-index:20;display:flex;align-items:flex-end;justify-content:center;padding:15px}.modal{background:#fff;border-radius:23px;padding:23px;width:100%;max-width:460px;max-height:85vh;overflow:auto;box-shadow:0 20px 100px #101b3550}.modal h2{font-size:20px;margin:0 0 15px}.modal p{font-size:14px;line-height:1.8;color:#7c8aa2}.modal .close{float:right;color:#9eabc0;font-size:22px;line-height:20px}.modal button.wide{width:100%;margin-top:10px;text-align:left;line-height:1.7}.modal input,.modal textarea,.modal select{width:100%;border:1px solid #dee5f1;border-radius:10px;padding:12px;margin:8px 0;font-size:14px}.modal textarea{resize:vertical;min-height:94px}.modal .actions{display:flex;gap:10px;justify-content:flex-end;margin-top:19px}.modal .profile-line{display:flex;gap:13px;align-items:center;margin-bottom:16px}.modal .profile-line h2{margin:0 0 5px}.checkline{display:flex;align-items:center;gap:8px;font-size:13px;margin:13px 0}.checkline input{width:auto}.recording{text-align:center;padding:12px}.recording svg{width:45px;height:45px;color:var(--blue)}#toast{position:fixed;bottom:100px;left:50%;transform:translateX(-50%);padding:12px 18px;background:#25354eea;color:white;border-radius:11px;font-size:13px;z-index:40;opacity:0;pointer-events:none;max-width:85vw;transition:opacity .2s}#toast.show{opacity:1}.small-note{font-size:11px;color:#9ba7bd;text-align:center;margin:20px}.locked{color:#a1abbd;font-size:12px;padding:20px;text-align:center}.mini-label{font-size:10px;color:#8d9cbb;padding:5px 0}.photo-full{width:100%;border-radius:12px}@keyframes pulse{to{transform:scaleY(.45);opacity:.6}}@media(max-height:730px){.register{padding-top:15px}.reg-brand{margin:8px 0 15px}.reg-brand img{width:62px;height:62px}.reg-brand h1{font-size:29px;margin:10px 0 5px}.reg-brand p{margin:5px}.register label.field{margin:9px 0}.avatars{margin-bottom:5px}.consent{margin:10px 0}.top{height:69px;padding-top:12px}.bottom{height:67px}}

.catalog-entry small{display:block;font-size:11px;color:#8a98b4;margin-top:6px}.catalog-summary{margin:18px;background:linear-gradient(125deg,#344dd0,#6b84dd);border-radius:18px;padding:22px;color:white;display:grid;grid-template-columns:1.4fr 1fr 1fr;gap:15px}.catalog-summary small{opacity:.7;font-size:11px}.catalog-summary strong{display:block;font-size:29px;font-weight:500;margin-top:7px}.catalog-summary progress{grid-column:1/4;width:100%;height:4px;border:0;opacity:.6}.catalog-tools{padding:0 18px}.catalog-tools>div{display:flex;gap:10px;margin:10px 0}.catalog-tools select{border:1px solid #e0e5f2;background:white;color:#617398;border-radius:10px;padding:10px;flex:1;min-width:0;font:inherit;font-size:12px}.catalog-status{text-align:right;flex-shrink:0}.catalog-status b{display:block;font-size:11px;color:#526bd6}.catalog-status small{display:block;font-size:10px;color:#9aa6b9;margin-top:5px}.catalog-summary progress::-webkit-progress-bar{background:#ffffff30}.catalog-summary progress::-webkit-progress-value{background:white}.catalog-status+.copy{min-width:0}.list-row strong small{font-weight:400;font-size:11px;color:#97a3b8}.monogram{font-family:'Microsoft YaHei',sans-serif;font-size:16px;letter-spacing:1px;background:linear-gradient(135deg,#e1e8f5,#eef1f8)}.portrait{background-repeat:no-repeat}.pager{display:flex;align-items:center;justify-content:space-between;margin:20px;font-size:12px;color:#8591a8}.dossier{display:grid;grid-template-columns:76px 1fr;font-size:12px;gap:12px;background:#f6f8fc;padding:16px;border-radius:12px;margin:15px 0;line-height:1.5}.dossier span{color:#9aa6bb}.dossier b{font-weight:400;color:#63718a}.relationship{background:#eef2fd;padding:17px;border-radius:14px;margin:15px 0}.relationship>div{display:flex;justify-content:space-between;font-size:13px}.relationship span{color:#8a9bbc;font-size:11px}.relationship progress{width:100%;height:5px;margin:12px 0;border:0}.relationship progress::-webkit-progress-bar{background:#dae2f7;border-radius:5px}.relationship progress::-webkit-progress-value{background:#5771d7;border-radius:5px}.relationship small{font-size:11px;color:#788aaf}.source-detail{font-size:11px;color:#8b9aba;margin-top:20px}.source-detail p{font-size:11px;overflow-wrap:anywhere;user-select:text}.intro-banner{padding:28px 25px;background:linear-gradient(135deg,#e6ecfc,#f2f5fb)}.intro-banner span{font-size:11px;color:#8498c2;letter-spacing:1px}.intro-banner h2{font-size:22px;font-weight:500;margin:12px 0;color:#354d83}.intro-banner p{font-size:12px;line-height:1.9;color:#8b99b1}.starter-list{padding:10px}.contact-card{min-width:0}.time-card{min-width:0;width:100%}.bubble{white-space:pre-line}.profile-line>div{min-width:0}.modal .profile-line h2{overflow-wrap:anywhere}.list-row .copy{overflow:hidden}.top small{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.post-head>div{min-width:0}.post-head small{overflow-wrap:anywhere}.reg-footer{padding-bottom:8px}

/* One actual arrival at a time, with a light settling animation. */
.message[data-new-arrival="true"]{animation:zx-arrive .24s ease-out}@keyframes zx-arrive{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
