:root{--t-accent:#2c2c2e;--t-bubble:#f0f0f0;--t-bar:#ffffff;--t-card:#ffffff;--t-page:#f7f7f8;--t-border:#ebebeb;--t-hover:#f2f2f3;--t-input:#fafafa}
*{margin:0;padding:0;box-sizing:border-box;-webkit-tap-highlight-color:transparent;user-select:none;-webkit-user-select:none}
input:not([type="button"]):not([type="submit"]):not([type="reset"]):not([type="checkbox"]):not([type="radio"]):not([type="range"]):not([type="file"]):not([type="color"]),
textarea,
[contenteditable="true"],
[contenteditable="plaintext-only"]{
  -webkit-user-select:text!important;user-select:text!important;
  -webkit-touch-callout:default;touch-action:auto;
}
html,body{overflow:hidden;overscroll-behavior:none;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif}
html{background:var(--t-page) url("assets/longmiao-default-wallpaper.jpg") center/cover no-repeat}

body{background:var(--t-page) url("assets/longmiao-default-wallpaper.jpg") center/cover no-repeat;position:relative}
body::before{content:'';position:absolute;inset:0;
  background:
    linear-gradient(to bottom,#f0f0f2,transparent 8%),
    radial-gradient(ellipse 80% 50% at 30% 25%,rgba(200,200,205,.12),transparent),
    radial-gradient(ellipse 70% 60% at 70% 70%,rgba(180,180,185,.08),transparent),
    linear-gradient(to bottom,rgba(245,245,247,.6),rgba(235,235,238,.3));
  z-index:0}
body::after{content:'';position:absolute;inset:0;
  background-image:
    url("data:image/svg+xml,%3Csvg viewBox='0 0 300 300' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='a'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.65' numOctaves='4' stitchTiles='stitch'/%3E%3CfeColorMatrix type='saturate' values='0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23a)' opacity='.07'/%3E%3C/svg%3E"),
    url("data:image/svg+xml,%3Csvg viewBox='0 0 200 200' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='b'%3E%3CfeTurbulence type='turbulence' baseFrequency='.02 .08' numOctaves='2' seed='3'/%3E%3CfeColorMatrix type='saturate' values='0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23b)' opacity='.04'/%3E%3C/svg%3E");
  opacity:.8;pointer-events:none;z-index:0;mix-blend-mode:multiply}

.wrap{display:flex;flex-direction:column;width:100vw;min-height:100dvh;position:relative;z-index:1;overflow:hidden}
#bar{height:30px;background:transparent;display:flex;align-items:center;justify-content:flex-start;padding-left:16px;color:rgba(255,255,255,.9);font-size:13px;font-weight:500;letter-spacing:1px;flex-shrink:0;z-index:100}
#desk{flex:1;position:relative;overflow:hidden;z-index:1}
#pages{display:flex;height:100%;will-change:transform}
#pages.anim{transition:transform .3s cubic-bezier(.25,.46,.45,.94)}
.pg{flex:0 0 100vw;width:100vw;height:100%;display:grid;grid-template-columns:repeat(4,1fr);grid-template-rows:repeat(6,94px);justify-items:center;padding:20px 0 0 0;position:relative}
.ic{width:76px;height:86px;display:flex;flex-direction:column;align-items:center;padding-top:4px;cursor:pointer}
.ic.ghost{opacity:.15}
.ic-box{width:56px;height:56px;border-radius:14px;background:rgba(255,255,255,.55);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);display:flex;align-items:center;justify-content:center;font-size:28px;border:none;box-shadow:0 2px 8px rgba(0,0,0,.04);position:relative;overflow:hidden;display:flex;align-items:center;justify-content:center;}
.ic-lb{font-size:11px;color:#444;margin-top:5px;text-align:center;font-weight:500;text-shadow:none}
.editing .ic:not(.ghost){animation:wob .25s ease-in-out infinite alternate}
.editing .ic:nth-child(even):not(.ghost){animation-direction:alternate-reverse;animation-delay:.06s}
@keyframes wob{from{transform:rotate(-1.5deg)}to{transform:rotate(1.5deg)}}
#dots{display:flex;justify-content:center;align-items:center;height:22px;gap:7px;flex-shrink:0;z-index:10}
.dt{width:7px;height:7px;border-radius:50%;background:rgba(0,0,0,.15);transition:all .3s}
.dt.on{background:rgba(0,0,0,.5);transform:scale(1.2)}
#dock-wrap{flex-shrink:0;padding:0 12px 20px 12px;z-index:100}
#dock{height:84px;background:rgba(255,255,255,.45);backdrop-filter:blur(30px);-webkit-backdrop-filter:blur(30px);border-radius:22px;border:none;box-shadow:0 4px 20px rgba(0,0,0,.05);display:flex;align-items:center;justify-content:space-evenly;padding:0 8px}
#dock .ic{width:76px;height:auto;padding:0}
#dock .ic-lb{display:none}
#dock .ic.ghost{opacity:.15}
.editing #dock .ic:not(.ghost){animation:wob .25s ease-in-out infinite alternate}
.editing #dock .ic:nth-child(even):not(.ghost){animation-direction:alternate-reverse;animation-delay:.06s}

#app{position:fixed;inset:0;background:var(--t-page);z-index:200;transform:translateY(100%);transition:transform .35s cubic-bezier(.25,.46,.45,.94);display:flex;flex-direction:column;overflow:hidden}
#app.open{transform:translateY(0)}
#app-bar{height:44px;background:var(--t-card);display:flex;align-items:center;padding:0 8px;border-bottom:1px solid var(--t-border);flex-shrink:0;position:relative;z-index:10}
#app-back{font-size:28px;width:52px;height:var(--lm-topbar,44px);padding:0;border:none;background:none;z-index:11;cursor:pointer;line-height:1;font-weight:300;position:relative;display:flex;align-items:center;justify-content:center;touch-action:manipulation}
#app-title{position:absolute;left:0;right:0;text-align:center;font-size:16px;font-weight:600;color:#1a1a1a;pointer-events:none}
#app-body{flex:1;width:100%;min-width:0;overflow-y:auto;overflow-x:hidden;position:relative;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;touch-action:pan-y}

.app-placeholder{width:100%;height:100%;display:flex;align-items:center;justify-content:center;color:#bbb;font-size:16px}

#set-main{position:absolute;inset:0;overflow-y:auto;overflow-x:hidden;-webkit-overflow-scrolling:touch;background:var(--t-page);transition:transform .3s cubic-bezier(.25,.46,.45,.94),opacity .3s}
#set-main.set-main-fit{overflow-y:hidden;-webkit-overflow-scrolling:auto;overscroll-behavior:none;touch-action:none!important}
#set-main.pushed{transform:translateX(-30%);opacity:.5;pointer-events:none}

.set-banner{width:100%;height:200px;background:linear-gradient(135deg,#e8e8ea,#d8d8dc,#e0e0e3);position:relative;overflow:hidden;cursor:pointer;flex-shrink:0}
.set-banner-img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;pointer-events:none}

.set-content{background:var(--t-page);border-radius:16px 16px 0 0;margin-top:-16px;position:relative;z-index:1;padding-top:1px}
.set-content-plain{border-radius:0;margin-top:0;padding-top:1px}

.set-card{background:var(--t-card);margin:12px;border-radius:14px;padding:18px 20px;display:flex;align-items:center;gap:14px;box-shadow:0 1px 4px rgba(0,0,0,.03);border:1px solid var(--t-border)}
.set-avatar{width:64px;height:64px;border-radius:50%;background:linear-gradient(135deg,#e0e0e3,#d0d0d4);flex-shrink:0;overflow:hidden;cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:30px;color:#bbb;border:none}
.set-avatar img{width:100%;height:100%;object-fit:cover;display:block}
.set-info{flex:1;min-width:0}
.set-nick{font-size:18px;font-weight:600;color:#1a1a1a;outline:none;border:none;display:block;width:100%;padding:0;background:none;border-bottom:1.5px dashed transparent;line-height:1.4;min-height:25px}
.set-nick:focus{border-bottom-color:#bbb}
.set-sign{font-size:13px;color:#999;outline:none;border:none;display:block;width:100%;padding:0;margin-top:3px;background:none;border-bottom:1.5px dashed transparent;line-height:1.4;min-height:18px}
.set-sign:focus{border-bottom-color:#bbb}

.set-group{margin:12px;background:var(--t-card);border-radius:14px;overflow:hidden;box-shadow:0 1px 4px rgba(0,0,0,.03);border:1px solid var(--t-border)}
.set-item{display:flex;align-items:center;padding:15px 16px;cursor:pointer;position:relative}
.set-item:active{background:var(--t-hover)}
.set-item+.set-item{border-top:.5px solid var(--t-border)}
.set-item-icon{width:34px;height:34px;border-radius:8px;display:flex;align-items:center;justify-content:center;font-size:18px;margin-right:13px;flex-shrink:0}
.set-item-text{flex:1;font-size:15px;color:#1a1a1a}
.set-item-arrow{color:#c7c7cc;font-size:18px;margin-left:8px}

.set-sub{position:absolute;inset:0;overflow-y:auto;overflow-x:hidden;-webkit-overflow-scrolling:touch;background:var(--t-page);transform:translateX(100%);transition:transform .3s cubic-bezier(.25,.46,.45,.94);z-index:5}
.set-sub.show{transform:translateX(0)}

.noti-settings{padding:16px 12px 28px}.noti-set-group{background:var(--t-card);border:1px solid var(--t-border);border-radius:14px;overflow:hidden;margin-bottom:12px;box-shadow:0 1px 4px rgba(0,0,0,.03)}.noti-set-row{min-height:54px;padding:0 16px;display:flex;align-items:center;justify-content:space-between;gap:14px;font-size:15px;color:#1a1a1a;transition:opacity .18s}.noti-set-row+.noti-set-row{border-top:.5px solid var(--t-border)}.noti-set-row.primary{font-weight:600}.noti-set-row.disabled{opacity:.42}.noti-set-switch{position:relative;display:block;width:42px;height:24px;flex:0 0 42px}.noti-set-switch input{position:absolute;opacity:0;width:0;height:0}.noti-set-switch i{position:absolute;inset:0;border-radius:12px;background:#d1d1d3;transition:background .2s}.noti-set-switch i:after{content:'';position:absolute;width:20px;height:20px;left:2px;top:2px;border-radius:50%;background:#fff;box-shadow:0 1px 3px rgba(0,0,0,.18);transition:transform .2s}.noti-set-switch input:checked+i{background:#333}.noti-set-switch input:checked+i:after{transform:translateX(18px)}
.sub-content{padding:60px 20px 20px;text-align:center;color:#bbb;font-size:15px}
.sub-content .sub-emoji{font-size:48px;display:block;margin-bottom:16px}

.modal-mask{position:fixed;inset:0;background:rgba(0,0,0,.4);z-index:9999;display:flex;align-items:center;justify-content:center;opacity:0;transition:opacity .2s;pointer-events:none}
.modal-mask.show{opacity:1;pointer-events:auto}
.modal-box{background:var(--t-card);border-radius:16px;padding:24px 20px 16px;width:280px;text-align:center;transform:scale(.85);transition:transform .25s;box-shadow:0 10px 40px rgba(0,0,0,.12)}
.modal-mask.show .modal-box{transform:scale(1)}
.modal-title{font-size:17px;font-weight:600;color:#1a1a1a;margin-bottom:20px}
.modal-btns{display:flex;gap:10px}
.modal-btn{flex:1;padding:11px 0;border-radius:10px;border:none;font-size:15px;font-weight:500;cursor:pointer}
.modal-btn.cancel{background:var(--t-bar);color:#666}
.modal-btn.cancel:active{background:#e5e6e8}
.modal-btn.confirm{background:#333;color:#fff;font-weight:600}
.modal-btn.confirm:active{background:#555;color:#fff}

#ctx{position:fixed;z-index:500;display:none;background:rgba(36,36,38,.92);backdrop-filter:blur(40px);-webkit-backdrop-filter:blur(40px);border-radius:13px;padding:4px;min-width:170px;box-shadow:0 12px 40px rgba(0,0,0,.45)}
.ctx-i{padding:11px 16px;color:#fff;font-size:15px;border-radius:10px;cursor:pointer}
.ctx-i:active{background:rgba(255,255,255,.12)}

.hid{position:absolute;width:0;height:0;opacity:0;pointer-events:none}

.api-wrap{position:relative;min-height:100%}
.api-top{display:flex;align-items:center;justify-content:flex-end;padding:10px 16px;background:var(--t-bar);border-bottom:.5px solid var(--t-border)}
.api-top .api-add-btn{font-size:26px;color:#1a1a1a;cursor:pointer;font-weight:300;line-height:1;padding:2px 6px;border-radius:8px}
.api-top .api-add-btn:active{background:#e5e5ea}
.api-list-area{padding:12px 16px}
.api-empty{text-align:center;padding-top:80px;color:#c7c7cc}
.api-empty .big{font-size:42px;font-weight:200;opacity:.35;margin-bottom:14px;letter-spacing:2px}
.api-empty .sub{font-size:15px}
.api-empty .hint{font-size:13px;margin-top:8px;opacity:.7}
.api-card{background:var(--t-card);border-radius:12px;padding:14px 16px;margin-bottom:10px;cursor:pointer;transition:background .15s;border:1px solid var(--t-border)}
.api-card:active{background:#e8e8ed}
.api-card .aname{font-size:16px;font-weight:600;margin-bottom:3px}
.api-card .aurl{font-size:13px;color:#8e8e93;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.api-card .ainfo{font-size:12px;color:#8e8e93;margin-top:5px}

.api-detail{position:absolute;inset:0;background:var(--t-page);transform:translateX(100%);transition:transform .3s ease;overflow-y:auto;-webkit-overflow-scrolling:touch;z-index:6;padding-bottom:80px}
.api-detail.show{transform:translateX(0)}
.api-dtop{display:flex;align-items:center;padding:10px 16px;background:var(--t-bar);border-bottom:.5px solid var(--t-border);position:sticky;top:0;z-index:10}
.api-dtop .api-dback{font-size:28px;color:#1a1a1a;cursor:pointer;padding:4px 8px;border-radius:8px;font-weight:300;line-height:1}
.api-dtop .api-dback:active{background:#e5e5ea}
.api-dtop .api-dtitle{flex:1;text-align:center;font-size:16px;font-weight:600}
.api-dtop .api-dph{width:60px}
.d-card{background:var(--t-card);border-radius:12px;margin:12px 16px;padding:14px 16px}
.d-card .lb{font-size:13px;color:#8e8e93;margin-bottom:6px}
.d-card .val{font-size:15px;word-break:break-all;font-family:ui-monospace,"SF Mono","Menlo",monospace;line-height:1.5}
.key-row{display:flex;align-items:center;justify-content:space-between}
.toggle-k{color:#1a1a1a;font-size:13px;cursor:pointer;white-space:nowrap;margin-left:14px;padding:4px 10px;border-radius:6px}
.toggle-k:active{background:#e5e5ea}
.ml-title{font-size:13px;color:#8e8e93;padding:10px 20px 6px}
.ml-card{background:var(--t-card);border-radius:12px;margin:0 16px;overflow:hidden}
.ml-row{padding:12px 16px;border-bottom:.5px solid var(--t-border);font-size:15px}
.ml-row:last-child{border-bottom:none}
.ml-empty{color:#c7c7cc}
.act-zone{margin:20px 16px;text-align:center}
.act-link{display:inline-block;font-size:15px;cursor:pointer;padding:10px 28px;border-radius:10px}
.act-link:active{background:#e5e5ea}
.act-edit{color:#1a1a1a}
.act-del{color:#ff3b30}

.api-modal-bg{position:fixed;top:0;left:0;width:100%;height:100%;background:var(--t-page);z-index:10000;transform:translateX(100%);transition:transform .3s;overflow:hidden}
.api-modal-bg.show{transform:translateX(0)}
.api-modal-box{width:100%;height:100%;display:flex;flex-direction:column;background:var(--t-page)}
.api-modal-header{display:flex;align-items:center;height:50px;padding:0 12px;background:var(--t-bar);border-bottom:0.5px solid var(--t-border)}
.api-modal-back{font-size:28px;color:#333;cursor:pointer;padding:0 8px}
.api-modal-title{flex:1;text-align:center;font-size:17px;font-weight:600}
.api-modal-content{flex:1;overflow-y:auto;padding:16px;-webkit-overflow-scrolling:touch;touch-action:pan-y}
.afg{margin-bottom:14px}
.afg label{display:block;font-size:13px;color:#8e8e93;margin-bottom:5px;padding-left:2px}
.afg input{width:100%;padding:11px 12px;border:1px solid var(--t-border);border-radius:10px;font-size:15px;outline:none;background:var(--t-card);color:#1c1c1e;-webkit-user-select:text;user-select:text}
.afg input:focus{border-color:#bbb}
.afg input::placeholder{color:#c7c7cc}
.amodel-header{display:flex;align-items:center;justify-content:space-between;margin:18px 0 10px}
.amodel-header span{font-size:15px;font-weight:600}
.atxt-btn{padding:7px 16px;background:transparent;color:#1c1c1e;border:none;border-radius:8px;font-size:13px;font-weight:500;cursor:pointer}
.atxt-btn:active{background:#e5e5ea}
.atxt-btn:disabled{opacity:.4}
.afetch-box{max-height:220px;overflow-y:auto;margin-bottom:12px;border:1px solid #e5e5ea;border-radius:10px;display:none;-webkit-overflow-scrolling:touch}
.afetch-box.show{display:block}
.afetch-item{display:flex;align-items:center;justify-content:space-between;padding:10px 12px;border-bottom:.5px solid var(--t-border);font-size:14px}
.afetch-item:last-child{border-bottom:none}
.afetch-item .mn{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;margin-right:8px;color:#1c1c1e}
.aadd-m{width:30px;height:30px;display:flex;align-items:center;justify-content:center;color:#1c1c1e;font-size:22px;cursor:pointer;border-radius:50%;flex-shrink:0;font-weight:300}
.aadd-m:active{background:#e5e5ea}
.aadd-m.done{font-size:16px;pointer-events:none;color:#8e8e93}
.afetch-hint{text-align:center;padding:24px 16px;color:#8e8e93;font-size:13px;line-height:1.6}
.aadded-title{font-size:13px;color:#8e8e93;margin-bottom:6px;padding-left:2px;display:none}
.aadded-list{margin-bottom:10px}
.aadded-item{display:flex;align-items:center;justify-content:space-between;padding:9px 12px;background:var(--t-card);border-radius:8px;margin-bottom:4px;font-size:14px}
.arm-m{width:28px;height:28px;display:flex;align-items:center;justify-content:center;color:#1c1c1e;font-size:18px;cursor:pointer;border-radius:50%;flex-shrink:0}
.arm-m:active{background:#d1d1d6}
.amanual-row{display:flex;gap:8px;margin-bottom:6px}
.amanual-row input{flex:1;padding:9px 12px;border:1px solid var(--t-border);border-radius:8px;font-size:14px;outline:none;color:#1c1c1e;-webkit-user-select:text;user-select:text}
.amanual-row input:focus{border-color:#bbb}
.amanual-row input::placeholder{color:#c7c7cc}
.amanual-add{width:30px;height:30px;display:flex;align-items:center;justify-content:center;background:transparent;border-radius:8px;color:#1c1c1e;font-size:22px;cursor:pointer;flex-shrink:0;font-weight:300}
.amanual-add:active{background:#e5e5ea}
.amodal-btns{display:flex;gap:10px;margin-top:18px;padding:0}
.abtn{flex:1;text-align:center;padding:12px 0;border-radius:10px;border:none;font-size:15px;font-weight:500;cursor:pointer;transition:opacity .2s}
.abtn-cancel{background:#f0f0f0;color:#888}
.abtn-cancel:active{opacity:0.7}
.abtn-save{background:#333;color:#fff;font-weight:600}
.abtn-save:active{opacity:0.7}

/* ===== 角色管理 ===== */
.role-pg{position:fixed;top:0;left:0;right:0;bottom:0;z-index:400;background:var(--t-page);display:flex;flex-direction:column;visibility:hidden;transform:translateX(100%);transition:transform .28s ease,visibility 0s .28s}
.role-pg.show{visibility:visible;transform:translateX(0);transition:transform .28s ease,visibility 0s}

.role-back:active{opacity:.5}
.role-hplus:active{opacity:.5}

.role-search{margin:12px 16px 12px;display:flex;align-items:center;gap:8px;background:var(--t-card);border-radius:10px;padding:10px 14px}
.role-search-icon{color:#bbb;font-size:16px;flex-shrink:0}
.role-search input{border:none;outline:none;font-size:15px;flex:1;background:transparent}
.role-list{flex:1;overflow-y:auto;padding:0 16px}
.role-card{display:flex;align-items:center;padding:16px;background:var(--t-card);border-radius:12px;margin-bottom:10px;cursor:pointer;gap:14px}
.role-card:active{background:var(--t-hover)}
.role-av{width:56px;height:56px;border-radius:50%;background:#ddd;flex-shrink:0;overflow:hidden;display:flex;align-items:center;justify-content:center;font-size:22px;color:#999}
.role-av img{width:100%;height:100%;object-fit:cover;display:block}
.role-card-info{flex:1;min-width:0}
.role-card-name{font-size:17px;font-weight:500}
.role-card-desc{font-size:13px;color:#999;margin-top:4px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.role-card-dots{font-size:22px;color:#999;padding:4px 0 4px 8px;cursor:pointer;flex-shrink:0}
.role-card-dots:active{opacity:.5}
.role-empty{text-align:center;padding:60px 20px;color:#ccc;font-size:14px}
/* 角色详情页 */
.role-detail-pg{position:fixed;top:0;left:0;right:0;bottom:0;z-index:410;background:var(--t-page);display:flex;flex-direction:column;visibility:hidden;transform:translateX(100%);transition:transform .28s ease,visibility 0s .28s}
.role-detail-pg.show{visibility:visible;transform:translateX(0);transition:transform .28s ease,visibility 0s}

.rd-back:active{opacity:.5}
.rd-body{flex:1;overflow-y:auto}
.rd-avatar-section{display:flex;flex-direction:column;align-items:center;padding:30px 20px 20px}
.rd-avatar{width:100px;height:100px;border-radius:50%;background:#ddd;overflow:hidden;cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:40px;color:#999}
.rd-avatar img{width:100%;height:100%;object-fit:cover;display:block}
.rd-avatar:active{opacity:.8}
.rd-name{font-size:20px;font-weight:600;margin-top:14px;text-align:center}
.rd-menu{padding:12px 16px}
.rd-menu-card{background:var(--t-card);border-radius:12px;overflow:hidden}
.rd-menu-item{display:flex;align-items:center;padding:16px;cursor:pointer;position:relative;gap:14px}
.rd-menu-item:active{background:var(--t-hover)}
.rd-menu-item::after{content:'';position:absolute;bottom:0;left:60px;right:16px;height:.5px;background:var(--t-border)}
.rd-menu-item:last-child::after{display:none}
.rd-mi-icon{width:32px;height:32px;border-radius:8px;background:var(--t-hover);display:flex;align-items:center;justify-content:center;font-size:16px;flex-shrink:0}
.rd-mi-text{flex:1;min-width:0}
.rd-mi-title{font-size:16px}
.rd-mi-desc{font-size:12px;color:#999;margin-top:3px}
.rd-mi-arrow{color:#ccc;font-size:20px;flex-shrink:0}
/* 创建角色弹窗 */



/* ===== 角色创建页面 ===== */
.role-create-pg{position:fixed;top:0;left:0;right:0;bottom:0;z-index:420;background:var(--t-page);display:flex;flex-direction:column;transform:translateX(100%);transition:transform .3s ease;pointer-events:none;height:100vh;max-height:100vh}
.role-create-pg.show{transform:translateX(0);pointer-events:auto}


.role-create-body{flex:1;overflow-y:auto;padding:16px;-webkit-overflow-scrolling:touch;touch-action:pan-y}
.role-create-btns{display:flex;gap:10px;padding:12px 16px;background:transparent;flex-shrink:0}
.rcb-cancel,.rcb-save{flex:1;text-align:center;padding:12px 0;border-radius:10px;border:none;font-size:15px;font-weight:600;cursor:pointer}
.rcb-cancel{background:#f0f0f0;color:#888}
.rcb-cancel:active{opacity:0.7}
.rcb-save{background:#333;color:#fff}
.rcb-save:active{opacity:0.7}



.role-create-title{font-size:18px;font-weight:600;margin-bottom:18px;text-align:center}
.role-create-field{margin-bottom:14px}
.role-create-label{font-size:14px;color:#666;margin-bottom:6px}
.role-create-input{width:100%;padding:11px 14px;border:1px solid var(--t-border);border-radius:8px;font-size:15px;outline:none;-webkit-appearance:none;background:var(--t-card)}
.role-create-input:focus{border-color:var(--t-accent)}
.role-create-textarea{width:100%;padding:11px 14px;border:1px solid var(--t-border);border-radius:8px;font-size:15px;outline:none;resize:none;height:100px;font-family:inherit;-webkit-appearance:none;background:var(--t-card)}
.role-create-textarea:focus{border-color:var(--t-accent)}
.role-create-btns{display:flex;gap:12px;margin-top:18px}
html.lm-ios.lm-keyboard-open .role-create-pg.show{top:var(--lm-visual-page-top,0px);bottom:auto;height:var(--lm-visual-height);max-height:var(--lm-visual-height)}
html.lm-ios.lm-keyboard-open .role-create-body{min-height:0;flex:1 1 auto;overflow-y:auto;padding-bottom:calc(16px + env(safe-area-inset-bottom,0px));overscroll-behavior:contain}


/* 角色菜单 */
.role-ctx-bg{position:fixed;top:0;left:0;right:0;bottom:0;z-index:430;background:rgba(0,0,0,.3);display:none;align-items:center;justify-content:center}
.role-ctx-bg.show{display:flex}
.role-ctx-sheet{background:var(--t-card);border-radius:14px;width:70%;max-width:260px;overflow:hidden}
.role-ctx-item{padding:15px;text-align:center;font-size:16px;cursor:pointer;border-bottom:.5px solid var(--t-border)}
.role-ctx-item:active{background:var(--t-hover)}
.role-ctx-item:last-child{border-bottom:none}
.role-ctx-item.danger{color:#e64340}
/* 头像更换弹窗 */
.rd-av-action-bg{position:fixed;bottom:0;left:0;right:0;z-index:440;display:none;flex-direction:column}
.rd-av-action-bg.show{display:flex}
.rd-av-action-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:rgba(0,0,0,.4)}
.rd-av-action-sheet{position:relative;z-index:1;background:var(--t-card);border-radius:14px 14px 0 0}
.rd-av-item{padding:16px;text-align:center;font-size:17px;color:var(--t-accent);cursor:pointer}
.rd-av-item:active{background:var(--t-hover)}
.rd-av-item+.rd-av-item{border-top:.5px solid var(--t-border)}
.rd-av-cancel{padding:16px;text-align:center;font-size:17px;color:#333;cursor:pointer;border-top:8px solid var(--t-page)}

/* ===== 角色管理页面 ===== */
.role-pg{position:fixed;top:0;left:0;right:0;bottom:0;z-index:410;background:var(--t-page);flex-direction:column;overflow:hidden;display:none;transform:translateX(100%);transition:transform .3s cubic-bezier(.25,.46,.45,.94)}
.role-pg.show{display:flex;transform:translateX(0)}




.role-search{display:flex;align-items:center;margin:12px 16px 14px;background:rgba(118,118,128,.12);border-radius:10px;padding:7px 10px;flex-shrink:0}
.role-search-icon{margin-right:6px;font-size:15px;opacity:.4}
.role-search input{border:none;outline:none;background:transparent;font-size:16px;width:100%;font-family:inherit;color:#1c1c1e}
.role-search input::placeholder{color:#8e8e93}
.role-list{flex:1;overflow-y:auto;padding:0 16px 30px;-webkit-overflow-scrolling:touch}
.role-empty{text-align:center;color:#8e8e93;padding:80px 0;font-size:15px}
.role-card{display:flex;align-items:center;background:var(--t-card);border-radius:12px;padding:12px;margin:0 4px 10px;cursor:pointer;transition:transform .12s;border:1px solid var(--t-border)}
.role-card:active{transform:scale(.975)}
.role-av{width:46px;height:46px;border-radius:50%;background:linear-gradient(135deg,#e0e0e3,#c8c8cc);display:flex;align-items:center;justify-content:center;color:#fff;font-size:20px;font-weight:700;flex-shrink:0;overflow:hidden}
.role-av img{width:100%;height:100%;object-fit:cover}
.role-card-info{flex:1;margin-left:12px;min-width:0}
.role-card-name{font-size:16px;font-weight:600;color:#1c1c1e}
.role-card-desc{font-size:13px;color:#8e8e93;margin-top:2px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.role-card-dots{font-size:20px;color:#c7c7cc;padding:6px 2px 6px 10px;cursor:pointer}

/* ===== 角色详情页 ===== */
.role-detail-pg{position:fixed;top:0;left:0;right:0;bottom:0;z-index:420;background:var(--t-page);flex-direction:column;overflow:hidden;display:none;transform:translateX(100%);transition:transform .3s cubic-bezier(.25,.46,.45,.94)}
.role-detail-pg.show{display:flex;transform:translateX(0)}


.rd-body{flex:1;overflow-y:auto;-webkit-overflow-scrolling:touch}
.rd-avatar-section{display:flex;flex-direction:column;align-items:center;padding:24px 0 28px}
.rd-avatar{width:80px;height:80px;border-radius:50%;background:linear-gradient(135deg,#e0e0e3,#c8c8cc);display:flex;align-items:center;justify-content:center;color:#fff;font-size:32px;font-weight:700;overflow:hidden;cursor:pointer;transition:transform .15s}
.rd-avatar:active{transform:scale(.93)}
.rd-avatar img{width:100%;height:100%;object-fit:cover}
.rd-name{font-size:20px;font-weight:600;margin-top:12px;color:#1c1c1e}
.rd-menu{padding:0 20px 20px}
.rd-menu-card{background:var(--t-card);border-radius:12px;overflow:hidden}
.rd-menu-item{display:flex;align-items:center;padding:14px 16px;border-bottom:.5px solid var(--t-border);cursor:pointer;transition:background .1s}
.rd-menu-item:last-child{border-bottom:none}
.rd-menu-item:active{background:rgba(0,0,0,.04)}
.rd-mi-icon{font-size:22px;margin-right:14px;flex-shrink:0;width:28px;text-align:center}
.rd-mi-text{flex:1;min-width:0}
.rd-mi-title{font-size:16px;color:#1c1c1e;font-weight:500}
.rd-mi-desc{font-size:12px;color:#8e8e93;margin-top:2px}
.rd-mi-arrow{color:#c7c7cc;font-size:18px;flex-shrink:0}

/* ===== 角色创建弹窗 ===== */



.role-create-title{font-size:18px;font-weight:700;margin-bottom:20px;text-align:center;color:#1c1c1e}
.role-create-field{margin-bottom:14px}
.role-create-label{font-size:14px;color:#666;margin-bottom:6px;font-weight:500}
.role-create-input{width:100%;padding:11px 12px;border:1.5px solid var(--t-border);border-radius:8px;font-size:15px;outline:none;font-family:inherit;-webkit-appearance:none;box-sizing:border-box;transition:border-color .2s;background:var(--t-card)}
.role-create-input:focus{border-color:#bbb;border-width:2px}
.role-create-textarea{width:100%;padding:11px 12px;border:1.5px solid var(--t-border);border-radius:8px;font-size:14px;outline:none;resize:none;height:110px;font-family:inherit;-webkit-appearance:none;box-sizing:border-box;transition:border-color .2s;background:var(--t-card)}
.role-create-textarea:focus{border-color:#bbb;border-width:2px}
.role-create-btns{display:flex;gap:12px;margin-top:20px}





/* ===== 角色右键菜单 ===== */
.role-ctx-bg{position:fixed;top:0;left:0;right:0;bottom:0;z-index:460;background:rgba(0,0,0,.3);display:none;align-items:flex-end;justify-content:center;padding:0 0 40px}
.role-ctx-bg.show{display:flex}
.role-ctx-sheet{background:var(--t-card);border-radius:14px;width:75%;max-width:260px;overflow:hidden}
.role-ctx-item{padding:15px;text-align:center;font-size:16px;cursor:pointer;border-bottom:.5px solid var(--t-border);color:#1c1c1e;transition:background .1s}
.role-ctx-item:active{background:rgba(0,0,0,.04)}
.role-ctx-item:last-child{border-bottom:none}
.role-ctx-item.danger{color:#ff3b30}

/* ===== 头像操作弹窗 ===== */
.rd-av-action-bg{position:fixed;top:0;left:0;right:0;bottom:0;z-index:470;display:none;flex-direction:column;justify-content:flex-end}
.rd-av-action-bg.show{display:flex}
.rd-av-action-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:rgba(0,0,0,.35)}
.rd-av-action-sheet{position:relative;z-index:1;background:var(--t-card);border-radius:14px 14px 0 0;padding:8px 0;padding-bottom:env(safe-area-inset-bottom,20px)}
.rd-av-item{padding:15px;text-align:center;font-size:16px;cursor:pointer;color:#1c1c1e;transition:background .1s}
.rd-av-item:active{background:rgba(0,0,0,.04)}
.rd-av-cancel{padding:15px;text-align:center;font-size:16px;cursor:pointer;color:#ff3b30;border-top:8px solid var(--t-page);transition:background .1s}
.rd-av-cancel:active{background:rgba(0,0,0,.04)}



/* ===== 人设全屏编辑 ===== */
.rc-prompt-wrap{position:relative}
.rc-expand-btn{position:absolute;top:8px;right:8px;font-size:16px;color:#999;cursor:pointer;width:36px;height:36px;display:flex;align-items:center;justify-content:center;border-radius:6px;z-index:2;border:1.5px solid #ccc}
.rc-expand-btn:active{background:rgba(0,0,0,.06)}
.prompt-full-bg{position:fixed;top:auto;left:0;right:0;bottom:0;height:85vh;z-index:500;background:var(--t-card);display:none;flex-direction:column;border-radius:16px 16px 0 0;box-shadow:0 -2px 20px rgba(0,0,0,0.1)}
.prompt-full-bg.show{display:flex}
.prompt-full-header{display:flex;align-items:center;justify-content:flex-end;padding:10px 16px;flex-shrink:0;border-bottom:.5px solid #e5e5ea}
.prompt-full-save{font-size:15px;color:#8e8e93;font-weight:500;cursor:pointer;padding:6px 12px;border-radius:8px}
.prompt-full-save:active{background:rgba(0,0,0,.06)}
.prompt-full-body{flex:1;display:flex;padding:16px}
.prompt-full-body textarea{flex:1;border:none;outline:none;font-size:16px;font-family:inherit;resize:none;line-height:1.6;color:#1c1c1e}

/* ===== 模型设定页面 ===== */
.model-setting-pg{position:fixed;top:0;left:0;right:0;bottom:0;z-index:330;background:var(--t-page);display:none;flex-direction:column}
.ms-header{display:flex;align-items:center;padding:6px 16px 2px;background:var(--t-card);flex-shrink:0}
.ms-back{font-size:28px;cursor:pointer;padding:4px 8px;color:#1c1c1e}
.ms-title{font-size:17px;font-weight:600;margin-left:4px}
.ms-body{flex:1;overflow-y:auto;padding:16px}
.ms-section{background:var(--t-card);border-radius:12px;padding:16px;margin-bottom:12px}
.ms-label{font-size:15px;font-weight:600;color:#1c1c1e}
.ms-desc{font-size:12px;color:#8e8e93;margin-top:4px}
.ms-select{display:flex;align-items:center;justify-content:space-between;padding:12px;background:#f2f2f7;border-radius:10px;margin-top:10px;cursor:pointer}
.ms-select span:first-child{font-size:14px;color:#1c1c1e;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1}
.ms-arrow{color:#c7c7cc;font-size:18px;flex-shrink:0;margin-left:8px}
.ms-row{display:flex;align-items:center;justify-content:space-between}
.ms-picker-bg{position:fixed;top:0;left:0;right:0;bottom:0;z-index:400;background:rgba(0,0,0,.4);display:none;align-items:flex-end;justify-content:center}
.ms-picker-bg.show{display:flex}
.ms-picker-box{background:var(--t-card);border-radius:16px 16px 0 0;width:100%;max-height:60vh;display:flex;flex-direction:column}
.ms-picker-title{text-align:center;font-size:15px;font-weight:600;padding:14px;border-bottom:.5px solid #e5e5ea}
.ms-picker-list{flex:1;overflow-y:auto;-webkit-overflow-scrolling:touch;touch-action:pan-y;padding:8px 0}
.ms-picker-item{padding:14px 20px;font-size:15px;cursor:pointer}
.ms-picker-item:active{background:var(--t-hover)}
.ms-picker-item.selected{color:#1c1c1e;font-weight:600}
.ms-picker-cancel{text-align:center;padding:14px;font-size:15px;color:#8e8e93;cursor:pointer}
/* 模型设定页 */
.model-setting-pg{display:none;position:fixed;top:0;left:0;width:100%;height:100%;background:var(--t-page);flex-direction:column;z-index:920}
.model-setting-pg.show{display:flex}
.ms-header{display:flex;align-items:center;padding:12px 16px;background:var(--t-card);border-bottom:1px solid var(--t-border)}
.ms-back{font-size:28px;width:48px;height:48px;flex:0 0 48px;margin-left:-8px;padding:0;cursor:pointer;color:#333;display:flex;align-items:center;justify-content:center;line-height:1;touch-action:manipulation}
.ms-title{font-size:17px;font-weight:600;color:#333}
.ms-body{flex:1;overflow-y:auto;padding:16px}
.ms-section{background:var(--t-card);border-radius:12px;padding:14px 16px;margin-bottom:12px}
.ms-label{font-size:15px;color:#333;margin-bottom:4px}
.ms-desc{font-size:12px;color:#999;margin-top:4px}
.ms-select{display:flex;align-items:center;justify-content:space-between;cursor:pointer;margin-top:6px}
.ms-select span{font-size:14px;color:#666}
.ms-arrow{color:#ccc;font-size:14px}
.ms-section.ms-row{display:flex;align-items:center;justify-content:space-between}
.ms-section.ms-row>div:first-child{flex:1}
/* 模型选择器弹窗 */
.ms-picker-bg{display:none;position:fixed;top:0;left:0;width:100%;height:100%;background:rgba(0,0,0,.4);z-index:950;align-items:flex-end;justify-content:center}
.ms-picker-bg.show{display:flex}
.ms-picker-box{width:100%;max-height:60vh;background:var(--t-card);border-radius:16px 16px 0 0;padding:16px;display:flex;flex-direction:column}
.ms-picker-title{font-size:16px;font-weight:600;text-align:center;padding-bottom:12px;border-bottom:1px solid var(--t-border)}
.ms-picker-list{flex:1;overflow-y:auto;-webkit-overflow-scrolling:touch;touch-action:pan-y;padding:8px 0}
.ms-picker-item{padding:12px 16px;font-size:15px;color:#333;border-radius:8px;cursor:pointer}
.ms-picker-item:active{background:var(--t-hover)}
.ms-picker-item.selected{color:var(--t-accent);font-weight:600}
.ms-picker-cancel{padding:12px;font-size:15px;color:#999;cursor:pointer}
.ms-toggle{display:inline-block;width:48px;height:26px;min-width:48px;background:var(--t-border);border-radius:13px;position:relative;cursor:pointer;transition:background .3s;flex-shrink:0;vertical-align:middle}
.ms-toggle.on{background:var(--t-accent)}
.ms-toggle-dot{width:22px;height:22px;background:#fff;border-radius:50%;position:absolute;top:2px;left:2px;transition:transform .3s;box-shadow:0 1px 3px rgba(0,0,0,.2)}
.ms-toggle.on .ms-toggle-dot{transform:translateX(22px)}
.ms-slider{-webkit-appearance:none;appearance:none;width:100%;height:4px;background:var(--t-border);border-radius:2px;outline:none;margin:12px 0 4px;touch-action:none}
.ms-slider::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:26px;height:26px;background:#fff;border-radius:50%;cursor:pointer;box-shadow:0 1px 4px rgba(0,0,0,.25);border:2px solid var(--t-accent)}
#msCtxVal,#msTempVal{color:var(--t-accent);font-weight:600;cursor:pointer;border-bottom:1px dashed var(--t-accent)}
.ms-input{width:100%;height:46px;border:1px solid var(--t-border);border-radius:8px;padding:0 12px;font-size:15px;color:#333;margin-top:8px;box-sizing:border-box;outline:none;background:var(--t-input)}
.ms-input:focus{border-color:var(--t-accent)}
.ms-picker-footer{display:flex;align-items:center;justify-content:space-between;border-top:1px solid var(--t-border);margin-top:8px;padding:12px 16px}
.ms-picker-new{color:var(--t-accent);font-size:14px;font-weight:600;cursor:pointer;padding:8px 12px}
.ms-picker-new:active{opacity:.6}

.role-header{display:flex;align-items:center;height:48px;background:var(--t-card);border-bottom:1px solid var(--t-border);padding:0 16px;position:relative}
.role-back{font-size:28px;color:#333;cursor:pointer;z-index:1;font-weight:300;line-height:1;width:48px;height:48px;flex:0 0 48px;margin-left:-8px;padding:0;display:flex;align-items:center;justify-content:center;touch-action:manipulation}
.role-header-title{position:absolute;left:0;right:0;text-align:center;font-size:17px;font-weight:600;color:#333;pointer-events:none}
.role-hplus{margin-left:auto;font-size:22px;color:#333;cursor:pointer;z-index:1}

.rd-header{display:flex;align-items:center;height:48px;background:var(--t-card);border-bottom:1px solid var(--t-border);padding:0 16px;position:relative}
.rd-back{font-size:28px;color:#333;cursor:pointer;z-index:1;width:48px;height:48px;flex:0 0 48px;margin-left:-8px;display:flex;align-items:center;justify-content:center;line-height:1;touch-action:manipulation}
.rd-header-title{position:absolute;left:0;right:0;text-align:center;font-size:17px;font-weight:600;color:#333;pointer-events:none}

/* ===== 顶部状态栏 ===== */

/* ===== 记忆管理 ===== */
.memory-page{position:fixed;top:0;left:0;width:100%;height:100%;background:var(--t-page);z-index:9999;transform:translateX(100%);transition:transform .3s;overflow-y:auto;-webkit-overflow-scrolling:touch;touch-action:pan-y;overscroll-behavior:contain}
.memory-page.show{transform:translateX(0)}
.mem-header{display:flex;justify-content:space-between;align-items:center;padding:14px 20px;background:var(--t-card);border-bottom:1px solid var(--t-border);position:sticky;top:0;z-index:1;font-size:17px;font-weight:600}
#memBack{font-size:28px;color:#333;cursor:pointer;padding:0 8px;line-height:1}
#memAdd{font-size:22px;color:var(--t-accent);cursor:pointer;padding:0 8px;font-weight:700}
.mem-info{padding:12px 20px 4px;color:#999;font-size:13px}
.mem-list{padding:8px 16px 80px}
.mem-item{background:var(--t-card);border-radius:12px;padding:14px 16px;margin-bottom:10px;box-shadow:0 1px 4px rgba(0,0,0,.06)}
.mem-text{font-size:15px;color:#333;line-height:1.6;word-break:break-all}
.mem-meta{font-size:12px;color:#aaa;margin-top:8px}
.mem-acts{display:flex;gap:20px;margin-top:8px;justify-content:flex-end}
.mem-edit-btn,.mem-del-btn{font-size:13px;cursor:pointer;padding:4px 8px;border-radius:6px}
.mem-edit-btn{color:var(--t-accent)}
.mem-del-btn{color:#ff4d4f}
.mem-empty{text-align:center;padding:80px 20px;color:#bbb;font-size:16px;line-height:2}
.mem-empty small{font-size:13px;color:#ccc}
.vec-badge{display:inline-block;background:#333;color:#fff;font-size:11px;padding:2px 6px;border-radius:10px;margin-left:6px;font-weight:600;vertical-align:middle}

/* 内置工具页面 */
.tools-wrap{padding:10px 14px 24px;overflow-y:auto;-webkit-overflow-scrolling:touch}
.tool-group{background:var(--t-card);border:1px solid var(--t-border);border-radius:18px;margin-bottom:12px;box-shadow:0 4px 16px rgba(0,0,0,.035);overflow:hidden}
.tool-group-head{display:flex;align-items:center;justify-content:space-between;padding:15px 16px;cursor:pointer;min-height:54px;gap:12px}
.tool-group-left{display:flex;align-items:center;gap:12px;min-width:0;flex:1}
.tool-group-title{font-size:15px;font-weight:650;color:#222;line-height:1.25}
.tool-group-desc{font-size:12px;color:#999;margin-top:3px;line-height:1.35;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:220px}
.tool-group-chevron{width:34px;height:34px;border-radius:50%;display:flex;align-items:center;justify-content:center;color:#8f8f8f;background:#f6f6f7;flex-shrink:0;margin-left:auto;box-sizing:border-box;transition:background .18s,color .18s}
.tool-group-chevron svg{width:18px;height:18px;display:block;transition:transform .18s}.tool-group.open .tool-group-chevron{color:#555;background:#efeff0}.tool-group.open .tool-group-chevron svg{transform:rotate(180deg)}
.tool-group-body{display:none;padding:0 22px 16px}
.tool-group.open .tool-group-body{display:block}
.tool-item{background:#fafafa;border:1px solid #f0f0f1;border-radius:14px;padding:13px 14px;margin-bottom:10px;display:flex;align-items:center;justify-content:space-between;gap:10px;min-height:68px;box-sizing:border-box}
.tool-group-body .tool-item:last-child{margin-bottom:0}
.tool-info{display:flex;align-items:center;gap:12px;flex:1;min-width:0}
.tool-icon{width:40px;min-width:40px;height:40px;display:flex;align-items:center;justify-content:center;color:#4b5560}
.tool-icon img{width:33px;height:33px;display:block;object-fit:contain}
.tool-svg{width:32px;height:32px;display:block;color:#4b5560}
.tool-name{font-size:15px;font-weight:600;color:#333;line-height:1.25}
.tool-desc{font-size:12px;color:#999;margin-top:3px;line-height:1.35}
.tool-toggle{width:44px;height:26px;border-radius:13px;background:#e7e7e8;position:relative;transition:background .25s;cursor:pointer;flex-shrink:0;box-shadow:inset 0 1px 2px rgba(0,0,0,.04)}
.tool-toggle.on{background:#333}
.tool-toggle-dot{width:22px;height:22px;border-radius:50%;background:#fff;position:absolute;top:2px;left:2px;transition:transform .25s;box-shadow:0 1px 3px rgba(0,0,0,.18)}
.tool-toggle.on .tool-toggle-dot{transform:translateX(18px)}
.tool-toggle.tool-toggle-sm{width:36px;height:20px;border-radius:10px}
.tool-toggle.tool-toggle-sm .tool-toggle-dot{width:16px;height:16px;top:2px;left:2px}
.tool-toggle.tool-toggle-sm.on .tool-toggle-dot{transform:translateX(16px)}

/* 工具展开区域 */
.tool-expand{background:transparent;margin:0;padding:0;border:0;border-radius:0}
.tool-expand-row{background:#fafafa;border:1px solid #f0f0f1;border-radius:14px;padding:13px 14px;margin-bottom:10px;display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:68px;box-sizing:border-box}
.tool-expand-row:last-child{margin-bottom:10px}
.tool-expand-split{margin-top:0;padding-top:15px;border-top:1px solid #f0f0f1}
.tool-expand-text{min-width:0;flex:1}.tool-expand-label{font-size:15px;font-weight:600;color:#333;line-height:1.25}.tool-expand-desc{font-size:12px;color:#999;margin-top:4px;line-height:1.35}
.tool-expand-input{width:70px;height:34px;border:1px solid var(--t-border);border-radius:9px;text-align:center;font-size:14px;background:var(--t-card);outline:none;color:#333}
.tool-expand-input:focus{border-color:#bbb}
.tool-expand-hint{display:none}

/* 主动消息通知 */
.auto-msg-noti{position:fixed;top:12px;left:12px;right:12px;background:rgba(255,255,255,0.97);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);border-radius:16px;padding:12px 16px;box-shadow:0 4px 24px rgba(0,0,0,0.12);z-index:999999;cursor:pointer;transition:opacity .3s,transform .3s;animation:notiIn .3s ease}
@keyframes notiIn{from{transform:translateY(-100%);opacity:0}to{transform:translateY(0);opacity:1}}
.auto-msg-noti .noti-avatar{width:40px;height:40px;border-radius:10px;flex-shrink:0}
.auto-msg-noti .noti-body{flex:1;min-width:0}
.auto-msg-noti .noti-name{font-size:14px;font-weight:600;color:#333}
.auto-msg-noti .noti-text{font-size:13px;color:#666;margin-top:2px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.auto-msg-noti .noti-app{font-size:11px;color:#999;margin-top:1px}

/* 未读消息红点 */
.chat-unread{background:#f44;color:#fff;font-size:12px;min-width:20px;height:20px;line-height:20px;border-radius:10px;text-align:center;padding:0 6px;margin-top:0;font-weight:700;align-self:center;display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box}

.ic-svg{width:50%;height:50%;object-fit:contain;}

.ic-svg{width:67%;height:67%;object-fit:contain;filter:none;}
.set-item-icon svg{width:60%;height:60%;vertical-align:middle;}
.set-item-icon{display:flex;align-items:center;justify-content:center;color:transparent!important;}

/* TTS Voice */
.tts-sel{width:100%;padding:10px 12px;border:1px solid var(--t-border);border-radius:10px;font-size:14px;background:var(--t-card);color:#333}
.tts-range{width:100%;margin-top:4px;accent-color:#4fc3f7}
.tts-test-st{font-size:12px;color:#888;margin-left:10px}
.tf-cloud,.tf-mm{display:none}

.tts-hint{margin-top:8px;font-size:12px;color:#999;line-height:2}
.tts-hint-tag{display:inline-block;padding:2px 10px;margin:2px 4px;background:var(--t-hover);border-radius:12px;color:#555;font-size:12px}
.tts-hint-tag:active{background:var(--t-bar)}

.ms-picker-desc{font-size:12px;color:#999;margin-top:2px}

/* ===== 电话APP ===== */
.phone-app{display:flex;flex-direction:column;height:100%;background:var(--t-page)}
.phone-tabs{display:flex;border-bottom:1px solid var(--t-border);background:var(--t-card)}
.phone-tab{flex:1;text-align:center;padding:12px 0;font-size:14px;color:#999;border-bottom:2px solid transparent;cursor:pointer}
.phone-tab.active{color:var(--t-accent);border-bottom-color:var(--t-accent);font-weight:600}
.phone-search{padding:8px 12px;background:var(--t-card)}
.phone-search input{width:100%;padding:8px 12px;border:1px solid var(--t-border);border-radius:20px;font-size:14px;outline:none;box-sizing:border-box;background:var(--t-input)}
.phone-search input:focus{border-color:var(--t-accent)}
.phone-list{flex:1;overflow-y:auto;padding:0}
.phone-item{display:flex;align-items:center;padding:14px 16px;background:var(--t-card);border-bottom:1px solid var(--t-border);cursor:pointer;transition:background .15s}
.phone-item:active{background:var(--t-hover)}
.phone-avatar{width:48px;height:48px;border-radius:50%;background:var(--t-border);overflow:hidden;flex-shrink:0;display:flex;align-items:center;justify-content:center;font-size:22px}
.phone-avatar img{width:100%;height:100%;object-fit:cover}
.phone-info{margin-left:12px;flex:1;min-width:0}
.phone-name{font-size:15px;color:#333;font-weight:500}
.phone-num{font-size:12px;color:#999;margin-top:3px}
.phone-call-btn{width:36px;height:36px;border-radius:50%;background:var(--t-accent);display:flex;align-items:center;justify-content:center;flex-shrink:0}
.phone-call-btn svg{width:20px;height:20px}
.phone-empty{text-align:center;color:#999;padding:60px 20px;font-size:14px}

/* 通话记录 */
.call-log-item{display:flex;align-items:center;padding:14px 16px;background:var(--t-card);border-bottom:1px solid var(--t-border)}
.call-log-info{margin-left:12px;flex:1}
.call-log-name{font-size:15px;color:#333}
.call-log-detail{font-size:12px;color:#999;margin-top:3px}
.call-log-time{font-size:12px;color:#999;flex-shrink:0}
.call-log-in{color:var(--t-accent)}
.call-log-out{color:#576b95}
.call-log-miss{color:#e74c3c}

/* ===== 全屏通话界面 ===== */
.call-overlay{position:fixed;top:0;left:0;right:0;height:100dvh;z-index:99999;display:none;flex-direction:column;align-items:center;justify-content:space-between;padding:0 0 60px 0;overflow:hidden;}
.call-overlay.active{display:flex}
.call-bg{position:absolute;top:0;left:0;width:100%;height:var(--sh,900px);background-color:#f0f0f2;background-image:radial-gradient(ellipse 80% 50% at 30% 25%,rgba(200,200,205,.12),transparent),radial-gradient(ellipse 70% 60% at 70% 70%,rgba(180,180,185,.08),transparent),linear-gradient(to bottom,rgba(245,245,247,.4) 0%,rgba(235,235,238,.2) 100%)}
.call-blur{position:absolute;top:0;left:0;right:0;bottom:0;backdrop-filter:blur(30px);-webkit-backdrop-filter:blur(30px)}
.call-bg.custom-bg{background:none;background-color:transparent}
.call-bg.custom-bg~.call-blur{display:none}
.call-bg-img{position:absolute;top:0;left:0;width:100%;height:var(--sh,900px);background-size:cover;background-position:center;background-repeat:no-repeat;z-index:0}
.call-top{position:relative;z-index:1;display:flex;flex-direction:column;align-items:center;padding-top:8px}
.call-avatar-ring{display:none}
.call-avatar-img{width:100%;height:100%;border-radius:50%;background:#2a2a4a;display:flex;align-items:center;justify-content:center;font-size:48px;overflow:hidden}
.call-avatar-img img{width:100%;height:100%;object-fit:cover}
.call-name{font-size:16px;color:#333;font-weight:600;margin-bottom:4px;text-align:center;width:100%}
.call-number{font-size:12px;color:rgba(0,0,0,.45);margin-bottom:4px}
.call-status{font-size:13px;text-align:center;width:100%;color:rgba(0,0,0,.5);min-height:20px;line-height:20px}
.call-status.pulsing{animation:callPulse 1.5s ease-in-out infinite}
@keyframes callPulse{0%,100%{opacity:1}50%{opacity:.4}}

/* 通话中区域 */
.call-middle{position:relative;z-index:1;flex:0 0 auto;display:none;flex-direction:column;width:100%;padding:0 12px;overflow:hidden;margin-top:auto}
.call-middle.active{display:flex}
.call-messages{width:100%;height:50vh;overflow-y:auto;margin-bottom:12px;touch-action:pan-y;-webkit-overflow-scrolling:touch;overscroll-behavior:contain;background:rgba(255,255,255,0);border-radius:12px;padding:6px 0}
.call-msg{padding:8px 14px;margin:0;border-bottom:1px solid rgba(0,0,0,.06);font-size:14px;line-height:1.5;word-break:break-word;color:#333}
.call-msg .cm-name{font-weight:bold;font-size:13px;margin-bottom:2px}
.call-msg .cm-name.me-name{color:#333}
.call-msg.ai{}
.call-msg.me{background:rgba(0,0,0,.03)}
.call-msg.vision{text-align:center;font-style:italic;color:#888;font-size:12px;padding:4px 14px}
.call-input-row{display:flex;position:relative;width:100%;gap:6px;align-items:center;padding:0 2px}
.call-input{flex:1;min-width:0;padding:8px 12px;border-radius:24px;border:1px solid rgba(0,0,0,.15);background:rgba(255,255,255,.55);color:#333;font-size:14px;outline:none}
.call-input::placeholder{color:rgba(0,0,0,.35)}
.call-mic-btn{width:36px;height:36px;border-radius:50%;background:rgba(255,255,255,.55);border:none;display:flex;align-items:center;justify-content:center;cursor:pointer;flex-shrink:0;overflow:hidden}
.call-mic-btn.recording{background:rgba(231,76,60,.6);animation:micPulse 1s ease-in-out infinite}
@keyframes micPulse{0%,100%{transform:scale(1)}50%{transform:scale(1.15)}}
.call-send-btn{width:36px;height:36px;border-radius:50%;background:rgba(255,255,255,.55);border:none;display:flex;align-items:center;justify-content:center;cursor:pointer;flex-shrink:0;overflow:hidden}

/* 底部按钮 */
.call-bottom{display:flex;justify-content:center;padding:10px 0;z-index:1;min-height:70px;flex-shrink:0;align-items:center;gap:60px}
.call-btn{width:36px;height:36px;border-radius:50%;border:none;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:transform .15s}
.call-btn:active{transform:scale(.9)}
.call-btn-accept{background:var(--t-accent)}
.call-btn-reject{background:#e74c3c}
.call-btn-hangup{background:rgba(255,255,255,.25)}
.call-btn svg{width:16px;height:16px}
.call-timer{font-size:13px;text-align:center;width:100%;color:rgba(0,0,0,.9);font-variant-numeric:tabular-nums;margin-top:8px}


/* 通话深色壁纸自适应 */
.call-mic-btn svg *,.call-send-btn svg *{stroke:#555}
.call-action-btn{width:36px;height:36px;border-radius:50%;background:rgba(255,255,255,.55);border:none;display:flex;align-items:center;justify-content:center;cursor:pointer;flex-shrink:0;overflow:hidden;transition:background .2s,transform .15s}
.call-action-btn.active{background:#333;transform:scale(1.1)}
.call-action-btn.active svg *{stroke:#fff}
.call-overlay.call-dark .call-action-btn{background:rgba(255,255,255,.25)}
.call-overlay.call-dark .call-action-btn.active{background:rgba(255,255,255,.3)}
.call-overlay.call-dark .call-action-btn.active svg *{stroke:#fff}
.call-action-btn svg *{stroke:#555}
.call-overlay.call-dark .call-action-btn svg *{stroke:#fff}
.call-overlay.call-dark .call-name{color:#fff}
.call-overlay.call-dark .call-number{color:rgba(255,255,255,.6)}
.call-overlay.call-dark .call-status{color:rgba(255,255,255,.8)}
.call-overlay.call-dark .call-timer{color:rgba(255,255,255,.9)}
.call-overlay.call-dark .call-messages{background:rgba(0,0,0,.55)}
.call-overlay.call-dark .call-msg{color:#eee;border-bottom-color:rgba(255,255,255,.1)}
.call-overlay.call-dark .call-msg.me{background:rgba(255,255,255,.08)}
.call-overlay.call-dark .call-msg.vision{color:rgba(255,255,255,.5)}
.call-overlay.call-dark .call-btn-hangup svg{stroke:#fff}
.call-overlay.call-dark .call-input{background:rgba(255,255,255,.1);border-color:rgba(255,255,255,.2);color:#fff}
.call-overlay.call-dark .call-input::placeholder{color:rgba(255,255,255,.4)}
.call-overlay.call-dark .call-mic-btn,.call-overlay.call-dark .call-send-btn{background:rgba(255,255,255,.25)}
.call-overlay.call-dark .call-mic-btn svg *,.call-overlay.call-dark .call-send-btn svg *{stroke:#fff}
.call-overlay.call-dark .call-bottom svg *{fill:rgba(255,255,255,.7)}

/* === 通话菜单 === */
.call-menu-btn{position:absolute;top:12px;right:16px;z-index:10;width:36px;height:36px;display:flex;align-items:center;justify-content:center;cursor:pointer;color:rgba(0,0,0,.5);border-radius:50%}
.call-overlay.call-dark .call-menu-btn{color:rgba(255,255,255,.7)}
.call-menu-dropdown{position:absolute;top:52px;right:16px;z-index:11;background:rgba(255,255,255,.95);border-radius:12px;box-shadow:0 4px 16px rgba(0,0,0,.15);overflow:hidden;display:none;min-width:140px;backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px)}
.call-menu-dropdown.show{display:block}
.call-menu-item{padding:14px 20px;font-size:15px;color:#333;cursor:pointer;border-bottom:1px solid rgba(0,0,0,.06)}
.call-menu-item:last-child{border-bottom:none}
.call-menu-item:active{background:rgba(0,0,0,.05)}
.call-overlay.call-dark .call-menu-dropdown{background:rgba(30,30,30,.9)}
.call-overlay.call-dark .call-menu-item{color:rgba(255,255,255,.9);border-bottom-color:rgba(255,255,255,.1)}
.call-overlay.call-dark .call-menu-item:active{background:rgba(255,255,255,.1)}

/* STT */
.stt-section{margin:12px;padding:14px 16px;background:var(--t-card);border-radius:12px;box-shadow:0 1px 3px rgba(0,0,0,.08)}
.stt-hd{font-size:15px;font-weight:600;color:#333;display:flex;align-items:center;gap:6px;margin-bottom:12px}
.stt-hd svg{color:var(--t-accent)}
.stt-bd{display:flex;flex-direction:column;gap:10px}
.stt-row{display:flex;flex-direction:column;align-items:stretch;gap:4px}
.stt-lb{font-size:13px;color:#666;white-space:nowrap;min-width:56px}
.stt-sl{width:100%;height:34px;border:1px solid var(--t-border);border-radius:8px;padding:0 28px 0 10px;font-size:13px;background:var(--t-input);color:#333;-webkit-appearance:none;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='10' viewBox='0 0 24 24'%3E%3Cpath d='M6 9l6 6 6-6' fill='none' stroke='%23999' stroke-width='2.5'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 10px center}
.stt-ip{width:100%;height:34px;border:1px solid var(--t-border);border-radius:8px;padding:0 10px;font-size:13px;background:var(--t-input);color:#333}
.stt-ip:focus,.stt-sl:focus{border-color:var(--t-accent);outline:none}
.stt-picker-btn{display:flex;align-items:center;justify-content:space-between;padding:12px 14px;border:1px solid var(--t-border,#ddd);border-radius:10px;background:var(--t-input,#fafafa);cursor:pointer}
.stt-picker-label{font-size:14px;color:#333;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

/* === 语音输入圆点 === */
.call-dots-wrap{display:none;position:absolute;left:0;right:0;top:0;bottom:0;flex-direction:column;align-items:center;justify-content:center;gap:2px;z-index:1}
.call-dots-wrap.active{display:flex}
.call-dots-row{display:flex;align-items:center;justify-content:center;gap:10px;height:18px}
.call-dot{width:10px;height:10px;border-radius:50%;background:rgba(0,0,0,.3)}
.call-dots-wrap.talking .call-dot{animation:cdJump 1.4s ease-in-out infinite}
.call-dots-wrap.talking .call-dot:nth-child(2){animation-delay:.2s}
.call-dots-wrap.talking .call-dot:nth-child(3){animation-delay:.4s}
@keyframes cdJump{0%,80%,100%{transform:translateY(0)}40%{transform:translateY(-12px)}}
.call-dots-hint{font-size:11px;color:rgba(0,0,0,.35);white-space:nowrap}
.call-overlay.call-dark .call-dot{background:rgba(255,255,255,0)}
.call-overlay.call-dark .call-dots-hint{color:rgba(255,255,255,.4)}

.call-mic-btn{position:relative;z-index:2}



/* 灰底通话按钮 */
.call-btn.call-btn-gray{
  background:rgba(220,220,220,0.85) !important;
  width:64px;height:64px;border-radius:50%;
  display:flex;align-items:center;justify-content:center;
}
.call-btn.call-btn-gray svg{
  stroke:#333 !important;
  stroke-width:1.5 !important;
  width:28px !important;height:28px !important;
}

/* ===== 提示词与世界书页面 ===== */
#app-header-plus{
  margin-left:auto;font-size:24px;color:#333;cursor:pointer;
  padding:0 6px;line-height:44px;user-select:none;font-weight:300;
}
.pw-add-menu{
  display:none;position:fixed;
  background:var(--t-card);border-radius:10px;
  box-shadow:0 4px 20px rgba(0,0,0,.15);
  overflow:hidden;z-index:999;min-width:110px;
}
.pw-add-menu.show{display:block}
.pw-add-item{
  padding:13px 18px;font-size:15px;color:#222;
  cursor:pointer;white-space:nowrap;
}
.pw-add-item:active{background:#f2f2f2}

.pw-wrap{display:flex;flex-direction:column;height:100%;overflow:hidden}
.pw-tabs{
  display:flex;gap:10px;padding:10px 14px 0;
  flex-shrink:0;align-items:center;
}
.pw-tab-plus{
  margin-left:auto;font-size:22px;color:#666;cursor:pointer;
  width:32px;height:32px;display:flex;align-items:center;justify-content:center;
  border-radius:8px;font-weight:300;
}
.pw-tab-plus:active{background:rgba(0,0,0,.06)}
.pw-import-btn{width:32px;height:32px;display:flex;align-items:center;justify-content:center;flex:0 0 32px;border:0;border-radius:8px;background:transparent;color:#666;padding:0;cursor:pointer}
.pw-import-btn:active{background:rgba(0,0,0,.06)}
.pw-tab{
  flex:1;text-align:center;padding:9px 0;
  border-radius:10px;font-size:14px;font-weight:500;
  background:#f0f0f0;color:#888;cursor:pointer;
  transition:background .2s,color .2s;
}
.pw-tab.pw-tab-active{
  background:#333;color:#fff;
}
.pw-body{
  flex:1;overflow-y:auto;padding:10px 14px 20px;
}
.pw-empty{
  text-align:center;color:#aaa;font-size:14px;
  padding:60px 20px;line-height:1.8;
}
.pw-item{
  display:flex;align-items:center;
  background:var(--t-card);border-radius:12px;
  padding:13px 14px;margin-bottom:10px;
  box-shadow:0 1px 4px rgba(0,0,0,.07);
  cursor:pointer;width:100%;box-sizing:border-box;
  transition:transform .15s,box-shadow .15s;
  position:relative;
}
.pw-item:active{opacity:.75}
.pw-item.pw-dragging{
  opacity:.85;box-shadow:0 6px 20px rgba(0,0,0,.15);
  transform:scale(1.02);z-index:100;
}
.pw-item-main{flex:1;min-width:0}
.pw-item-name{font-size:15px;font-weight:500;color:#222;margin-bottom:3px}
.pw-item-desc{font-size:12px;color:#999;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pw-item-del{
  font-size:20px;color:#ccc;padding:4px 6px;
  cursor:pointer;flex-shrink:0;line-height:1;
}
.pw-item-del:active{color:#f44}
.role-import-btn{width:36px;height:36px;margin-left:auto;padding:0;border:0;border-radius:8px;background:transparent;color:#555;display:flex;align-items:center;justify-content:center;cursor:pointer;z-index:1}
.role-import-btn:active{background:rgba(0,0,0,.06)}

/* 弹窗 */
.pw-modal-bg{
  display:none;position:fixed;left:0;right:0;top:0;bottom:0;background:rgba(0,0,0,.4);
  z-index:9999;overflow:hidden;touch-action:pan-y;isolation:isolate;min-height:0;
}
.pw-modal-bg.show{display:flex;flex-direction:column;min-height:0}
.pw-modal-spacer{flex:1 1 auto;min-height:0}
.pw-modal-box{
  width:100%;max-width:480px;background:var(--t-card);margin:0 auto;
  flex:0 1 auto;min-height:0;max-height:calc(100% - 8px);box-sizing:border-box;border-radius:16px 16px 0 0;padding:20px 18px 30px;touch-action:pan-y;
  overflow-y:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;
}
@keyframes pwSheetUp{from{transform:translateY(100%)}to{transform:translateY(0)}}
.pw-modal-title{font-size:17px;font-weight:600;color:#222;margin-bottom:16px;text-align:center}
.pw-modal-field{margin-bottom:12px}
.pw-modal-field label{display:block;font-size:13px;color:#666;margin-bottom:5px}
.pw-modal-field input,.pw-modal-field textarea{
  width:100%;box-sizing:border-box;
  border:1px solid var(--t-border);border-radius:8px;
  padding:10px 12px;font-size:14px;color:#222;
  background:#fafafa;outline:none;font-family:inherit;
  resize:none;
}
.pw-modal-field textarea{
  height:120px;min-height:80px;max-height:35vh;overflow-y:scroll !important;-webkit-overflow-scrolling:touch;touch-action:pan-y;
}
.pw-modal-field input:focus,.pw-modal-field textarea:focus{
  border-color:#bbb;background:var(--t-card);
}
.pw-modal-btns{display:flex;gap:10px;margin-top:16px}
.pw-modal-btn{
  flex:1;padding:12px 0;border:none;border-radius:10px;
  font-size:15px;cursor:pointer;font-weight:500;
}
.pw-btn-cancel{background:var(--t-hover);color:#666}
.pw-btn-save{background:#333;color:#fff}
.pw-btn-cancel:active{background:#e0e0e0}
.pw-btn-save:active{background:#555;color:#fff}
/* 提示词升级：toggle开关 */
.pw-toggle-row{display:flex;align-items:center;justify-content:space-between;padding:4px 0}
.pw-toggle-label{font-size:14px;color:#333}
.pw-switch{position:relative;display:inline-block;width:44px;height:24px}
.pw-switch input{opacity:0;width:0;height:0}
.pw-slider{position:absolute;cursor:pointer;inset:0;background:#ccc;border-radius:24px;transition:.25s}
.pw-slider::before{content:'';position:absolute;width:18px;height:18px;left:3px;bottom:3px;background:#fff;border-radius:50%;transition:.25s}
.pw-switch input:checked+.pw-slider{background:#333}
.pw-switch input:checked+.pw-slider::before{transform:translateX(20px)}

/* 提示词升级：自定义选择器 */
.pw-pick{display:flex;align-items:center;justify-content:space-between;border:1px solid var(--t-border);border-radius:8px;padding:10px 12px;background:var(--t-input);cursor:pointer;transition:border-color .2s}
.pw-pick:active{background:var(--t-hover)}
.pw-pick-text{font-size:14px;color:#222}

/* 选项弹窗 */
.pw-opts-bg{display:none;position:fixed;left:0;right:0;top:0;bottom:0;background:transparent;z-index:10000;touch-action:none}
.pw-opts-bg.show{display:flex;align-items:center;justify-content:center}
.pw-opts-box{background:var(--t-card);border-radius:14px;width:calc(100% - 48px);max-width:320px;overflow:hidden;box-shadow:0 12px 34px rgba(0,0,0,.18)}
.pw-opt-item{padding:15px 20px;font-size:16px;color:#222;border-bottom:1px solid var(--t-border);display:flex;align-items:center;justify-content:space-between;cursor:pointer}
.pw-opt-item:last-child{border-bottom:none}
.pw-opt-item:active{background:var(--t-hover)}
.pw-opt-dot{width:20px;height:20px;border-radius:50%;border:2px solid #ccc;box-sizing:border-box;flex-shrink:0}
.pw-opt-item.pw-opt-active .pw-opt-dot{border-color:#333;background:#333;box-shadow:inset 0 0 0 3px #fff}

@media(max-width:699px){
  .pw-modal-box{animation:pwSheetUp .22s ease;max-height:calc(var(--pw-visible-height,100%) - 8px);padding-bottom:calc(30px + env(safe-area-inset-bottom,0px))}
  .pw-opts-bg.show{align-items:flex-end;justify-content:center}
  .pw-opts-box{width:100%;max-width:none;border-radius:16px 16px 0 0;padding-bottom:max(10px,env(safe-area-inset-bottom));box-shadow:0 -8px 28px rgba(0,0,0,.14)}
}
@media(min-width:700px){
  .pw-modal-bg.show{align-items:center;justify-content:center;padding:20px}
  .pw-modal-spacer{display:none}
  .pw-modal-box{
    width:min(480px,calc(100% - 40px));max-height:calc(100% - 40px);margin:0;
    border-radius:16px;padding:20px 18px 24px;box-shadow:0 12px 40px rgba(0,0,0,.16);
    animation:none;
  }
}
/* 自定义toast提示 */
.pw-toast{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%) scale(.9);background:rgba(0,0,0,.75);color:#fff;padding:12px 24px;border-radius:10px;font-size:14px;z-index:10001;opacity:0;transition:opacity .2s,transform .2s;pointer-events:none}
.pw-toast.show{opacity:1;transform:translate(-50%,-50%) scale(1)}


/* 提示词升级：列表卡片标签 */
.pw-item-tag{display:inline-block;font-size:11px;color:#666;background:rgba(0,0,0,0.06);padding:1px 8px;border-radius:10px;margin-top:3px}
.pw-item-disabled{opacity:0.45}



/* ===== 记忆向量化 bar ===== */
.mem-vec-bar{display:flex;align-items:center;margin:10px 14px 0;background:var(--t-card);border-radius:10px;padding:10px 14px;box-shadow:0 1px 4px rgba(0,0,0,.06);cursor:pointer;user-select:none;transition:border-radius .2s}
.mem-vec-bar-label{flex:1;font-size:14px;font-weight:500;color:#555}
.mem-vec-toggle{position:relative;width:40px;height:22px;flex-shrink:0}
.mem-vec-toggle input{opacity:0;width:0;height:0;position:absolute}
.mem-vec-slider{position:absolute;inset:0;border-radius:11px;background:#d0d0d0;transition:background .25s}
.mem-vec-slider::before{content:'';position:absolute;width:18px;height:18px;left:2px;top:2px;border-radius:50%;background:#fff;transition:transform .25s;box-shadow:0 1px 3px rgba(0,0,0,.18)}
.mem-vec-toggle input:checked + .mem-vec-slider{background:linear-gradient(135deg,#444,#333)}
.mem-vec-toggle input:checked + .mem-vec-slider::before{transform:translateX(18px)}
.mem-vec-expand{margin:0 14px;overflow:hidden;max-height:0;transition:max-height .3s ease,opacity .25s ease;opacity:0}
.mem-vec-expand.open{max-height:320px;opacity:1}
.mem-vec-panel{background:var(--t-card);border-radius:0 0 10px 10px;padding:12px 14px;box-shadow:0 2px 6px rgba(0,0,0,.06);border-top:1px solid var(--t-border)}
.mem-vec-row{display:flex;align-items:center;gap:8px;margin-bottom:10px}
.mem-vec-row:last-child{margin-bottom:0}
.mem-vec-row label{font-size:13px;color:#888;width:70px;flex-shrink:0}
.mem-vec-inject-inp{flex:1;border:1px solid var(--t-border);border-radius:8px;padding:6px 10px;font-size:14px;background:var(--t-input);color:#333;outline:none;text-align:center;-webkit-appearance:none;min-width:0}
.mem-vec-inject-inp:focus{border-color:var(--t-accent)}
.mem-vec-sel{flex:1;border:1px solid var(--t-border);border-radius:8px;padding:7px 10px;font-size:13px;background:var(--t-input);color:#333;outline:none;appearance:none;-webkit-appearance:none;min-width:0;overflow:hidden;text-overflow:ellipsis}
.mem-vec-sel:focus{border-color:var(--t-accent)}
.mem-vec-custom-sel{flex:1;min-width:0;border:1px solid var(--t-border);border-radius:8px;padding:7px 10px;font-size:13px;background:var(--t-input);color:#333;cursor:pointer;display:flex;align-items:center;gap:4px;position:relative;user-select:none}
.mem-vec-custom-sel:active{background:var(--t-hover)}
.mem-vec-sel-label{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.mem-vec-sel-arrow{font-size:11px;color:#aaa;flex-shrink:0;transition:transform .2s}
.mem-vec-custom-sel.open .mem-vec-sel-arrow{transform:rotate(180deg)}
.mem-vec-drop{display:none;position:absolute;left:14px;right:14px;background:var(--t-card);border:1px solid var(--t-border);border-radius:10px;box-shadow:0 4px 16px rgba(0,0,0,.12);z-index:999;max-height:240px;overflow-y:auto;-webkit-overflow-scrolling:touch;touch-action:pan-y}
.mem-vec-drop.open{display:block}
.mem-vec-drop-item{padding:11px 14px;font-size:13px;color:#444;border-bottom:1px solid var(--t-border);cursor:pointer;line-height:1.5}
.mem-vec-drop-item:last-child{border-bottom:none}
.mem-vec-drop-item:active{background:var(--t-hover)}
.mem-vec-drop-item.active{color:var(--t-accent);font-weight:600}
.mem-vec-drop-empty{color:#bbb;text-align:center}
.mem-vec-btn-row{display:flex;gap:8px;margin-top:4px}
.mem-vec-act-btn{flex:1;padding:8px 0;border-radius:8px;font-size:13px;font-weight:500;border:none;cursor:pointer;transition:background .2s,color .2s}
.mem-vec-act-btn.primary{background:#333;color:#fff}
.mem-vec-act-btn.primary:active{background:#555}
.mem-vec-act-btn.secondary{background:var(--t-page);color:#555}
.mem-vec-act-btn.secondary:active{background:var(--t-border)}
@media(prefers-color-scheme:dark){
.mem-vec-bar-label{color:#bbb}
.mem-vec-sel{color:#ddd}
.mem-vec-act-btn.secondary{color:#aaa}
.mem-vec-custom-sel{color:#ddd}
.mem-vec-drop-item{color:#ccc}
}

/* ===== 记忆管理 tab栏 ===== */
.mem-tabs{display:flex;gap:10px;padding:10px 14px 0;flex-shrink:0;align-items:center}
.mem-tab{flex:1;text-align:center;padding:9px 0;border-radius:10px;font-size:14px;font-weight:500;background:#f0f0f0;color:#888;cursor:pointer;transition:background .2s,color .2s}
.mem-tab.active{background:#333;color:#fff}
.mem-tab-action{margin-left:auto;font-size:22px;color:#666;cursor:pointer;width:32px;height:32px;display:flex;align-items:center;justify-content:center;border-radius:8px;font-weight:300}
.mem-tab-action:active{background:rgba(0,0,0,.06)}

/* ===== 历史对话卡片 ===== */
.hist-item{background:var(--t-card);border-radius:12px;padding:14px 16px;margin-bottom:10px;box-shadow:none;overflow:hidden;border:1px solid var(--t-border)}
.hist-head{display:flex;align-items:center;gap:8px;cursor:pointer;user-select:none}
.hist-date{flex:1;font-size:14px;color:#555;font-weight:500}
.hist-arrow{font-size:12px;color:#bbb;transition:transform .2s}
.hist-item.open .hist-arrow{transform:rotate(90deg)}
.hist-preview{font-size:13px;color:#999;margin-top:8px;line-height:1.5;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}
.hist-item.open .hist-preview{display:none}
.hist-detail{display:none}
.hist-item.open .hist-detail{display:block}
.hist-summary{font-size:14px;color:#444;line-height:1.7;margin-top:10px;padding:12px;background:linear-gradient(135deg,rgba(0,0,0,0.03),rgba(0,0,0,0.01));border-radius:8px;border-left:3px solid #ddd;white-space:pre-wrap}
.hist-frozen-title{font-size:13px;color:var(--t-accent);font-weight:600;margin-top:12px;padding-top:10px;border-top:1px solid var(--t-border)}
.hist-frozen{margin-top:8px}
.hist-window-more{display:block;width:100%;height:36px;margin:8px 0;border:0;border-radius:9px;background:var(--t-hover);color:#666;font-size:13px}
.hist-msg-me{background:#f0f0f2;border-radius:10px;padding:8px 12px;margin-bottom:6px;font-size:13px;color:#333;text-align:right}
.hist-msg-ai{background:var(--t-input);border-radius:10px;padding:8px 12px;margin-bottom:6px;font-size:13px;color:#444}
.hist-acts{display:flex;justify-content:flex-end;margin-top:10px}
.hist-del-btn{font-size:13px;color:#ff4d4f;cursor:pointer;padding:4px 8px;border-radius:6px}

/* 暗色适配 */
@media(prefers-color-scheme:dark){
.mem-tab{color:#777;background:#333}
.mem-tab.active{color:#fff;background:linear-gradient(135deg,#333,#444)}
.hist-date{color:#ccc}
.hist-preview{color:#888}
.hist-summary{color:#ccc;background:linear-gradient(135deg,rgba(200,230,201,0.08),rgba(200,230,201,0.02))}
.hist-msg-me{background:linear-gradient(135deg,#2a2a2e,#333);color:#ddd}
.hist-msg-ai{color:#bbb}
.hist-frozen-title{color:var(--t-accent)}
}

/* ===== 自定义输入弹窗 ===== */
.cst-dlg-bg{position:fixed;inset:0;background:rgba(0,0,0,.45);z-index:99999;display:flex;align-items:center;justify-content:center}
.cst-dlg{background:var(--t-card);border-radius:16px;padding:24px 20px 16px;width:80vw;max-width:320px;box-shadow:0 8px 32px rgba(0,0,0,.18)}
.cst-dlg-title{font-size:16px;font-weight:600;color:#333;margin-bottom:14px;text-align:center}
.cst-dlg input{width:100%;box-sizing:border-box;border:1px solid var(--t-border);border-radius:10px;padding:10px 14px;font-size:15px;background:var(--t-input);color:#333;outline:none}
.cst-dlg input:focus{border-color:var(--t-accent)}
.cst-dlg-btns{display:flex;gap:10px;margin-top:16px}
.cst-dlg-btn{flex:1;padding:10px 0;border-radius:10px;font-size:15px;cursor:pointer;border:none;text-align:center}
.cst-dlg-cancel{background:var(--t-page);color:#888}
.cst-dlg-ok{background:#333;color:#fff;font-weight:600}
.cst-dlg-msg{font-size:14px;color:#555;line-height:1.8;text-align:left;white-space:pre-wrap;max-height:60vh;overflow-y:auto;-webkit-overflow-scrolling:touch;touch-action:pan-y;overscroll-behavior:contain;padding:0 4px}

/* ===== 搜索关键词高亮 ===== */
mark.mem-hl{background:#ffe066;color:#333;border-radius:3px;padding:0 1px}
@media(prefers-color-scheme:dark){mark.mem-hl{background:#b8860b;color:#fff}}


/* ===== 大世界 world.js ===== */
.world-page{padding:16px 0 0;height:100%;overflow-y:auto;-webkit-overflow-scrolling:touch}
.world-no-role{text-align:center;padding:80px 20px}
.world-no-icon{margin-bottom:16px}
.world-no-text{font-size:15px;color:#666;margin-bottom:6px}
.world-no-sub{font-size:12px;color:#bbb;line-height:1.5}
.world-role-tabs{display:flex;gap:8px;padding:0 14px 14px;overflow-x:auto;-webkit-overflow-scrolling:touch}
.world-role-tabs::-webkit-scrollbar{display:none}
.world-role-tab{display:flex;flex-direction:column;align-items:center;gap:4px;padding:8px 12px;border-radius:12px;background:var(--t-card);border:1px solid var(--t-border);min-width:60px;cursor:pointer;transition:.2s}
.world-role-tab.active{border-color:#333;background:#f8f8f8}
.world-role-tab span{font-size:11px;color:#666;white-space:nowrap;max-width:50px;overflow:hidden;text-overflow:ellipsis}
.world-role-tab.active span{color:#1a1a1a;font-weight:500}
.world-role-av{width:32px;height:32px;border-radius:50%;object-fit:cover}
.world-role-av-empty{background:#eee;display:flex;align-items:center;justify-content:center;font-size:14px;color:#999}
.world-section-title{font-size:13px;font-weight:600;color:#1a1a1a;padding:8px 20px 10px}
.world-hist-count{font-size:11px;color:#999;font-weight:400}
.world-modules{padding:0 14px;display:flex;flex-direction:column;gap:10px}
.world-mod-card{display:flex;align-items:center;gap:14px;background:var(--t-card);border:1px solid var(--t-border);border-radius:14px;padding:16px 18px;cursor:pointer;transition:.15s}
.world-mod-card:active{background:var(--t-hover)}
.world-mod-icon{width:36px;height:36px;flex-shrink:0;color:#555}
.world-mod-icon svg{width:100%;height:100%}
.world-mod-info{flex:1;min-width:0}
.world-mod-name{font-size:14px;font-weight:600;color:#1a1a1a;margin-bottom:2px}
.world-mod-desc{font-size:12px;color:#999}
.world-mod-arrow{font-size:22px;color:#ccc;flex-shrink:0}
.world-sub-header{display:flex;align-items:center;gap:8px;padding:0 14px 14px}
.world-sub-back{width:32px;height:32px;display:flex;align-items:center;justify-content:center;font-size:24px;color:#333;cursor:pointer;border-radius:50%;background:var(--t-card);border:1px solid var(--t-border)}
.world-sub-back:active{background:var(--t-hover)}
.world-sub-header span{font-size:15px;font-weight:600;color:#1a1a1a}
.world-empty{text-align:center;padding:40px 20px;background:var(--t-card);margin:0 14px 14px;border-radius:14px;border:1px solid var(--t-border)}
.world-empty-icon{margin-bottom:12px}
.world-empty-text{font-size:14px;color:#666;margin-bottom:4px}
.world-empty-sub{font-size:12px;color:#bbb}
.world-timeline{padding:0 14px 14px}
.world-evt{display:flex;align-items:flex-start;position:relative;padding-left:52px;margin-bottom:2px}
.world-evt-time{position:absolute;left:0;top:2px;font-size:11px;color:#999;width:42px;text-align:right}
.world-evt-dot{position:absolute;left:49px;top:6px;width:8px;height:8px;border-radius:50%;background:#333;z-index:1}
.world-evt-dot::after{content:'';position:absolute;left:3.5px;top:8px;width:1px;height:calc(100% + 12px);background:#e0e0e0}
.world-evt:last-child .world-evt-dot::after{display:none}
.world-evt-body{flex:1;background:var(--t-card);border:1px solid var(--t-border);border-radius:10px;padding:10px 14px;margin-left:14px;margin-bottom:8px}
.world-evt-icon{display:inline-flex;color:#888;margin-right:6px;vertical-align:middle}
.world-evt-text{display:inline;font-size:13px;color:#444}
.world-evt-detail{font-size:12px;color:#999;margin-top:6px;white-space:pre-line;line-height:1.45}
.world-evt-hist .world-evt-dot{background:#ccc}
.world-story-desc{padding:0 20px 14px;font-size:12px;color:#999}
.world-story-empty,.world-story-list{padding:0 14px 14px}
.world-story-add{display:flex;align-items:center;justify-content:center;gap:6px;padding:14px;background:var(--t-card);border:1px dashed var(--t-border);border-radius:12px;font-size:13px;color:#888;cursor:pointer}
.world-story-add:active{background:var(--t-hover)}
.world-story-hint{text-align:center;font-size:12px;color:#bbb;margin-top:8px}
.world-story-item{background:var(--t-card);border:1px solid var(--t-border);border-radius:12px;padding:14px 16px;margin-bottom:8px;cursor:pointer}
.world-story-item:active{background:var(--t-hover)}
.world-story-title{font-size:14px;font-weight:500;color:#1a1a1a;margin-bottom:4px}
.world-story-preview{font-size:12px;color:#999;line-height:1.4}
.world-story-tag{display:inline-block;font-size:11px;color:#555;background:#f0f0f0;border-radius:4px;padding:2px 6px;margin-top:6px}
.world-coming{text-align:center;padding:60px 20px}
.world-coming-icon{width:56px;height:56px;margin:0 auto 16px;color:#ccc}
.world-coming-icon svg{width:100%;height:100%}
.world-coming-text{font-size:16px;font-weight:500;color:#666;margin-bottom:6px}
.world-coming-sub{font-size:13px;color:#bbb}
.world-editor-mask{position:fixed;inset:0;background:rgba(0,0,0,.45);z-index:99999;display:flex;align-items:center;justify-content:center;padding:20px}
.world-editor{background:var(--t-card);border-radius:16px;width:100%;max-width:360px;padding:20px;box-shadow:0 8px 32px rgba(0,0,0,.15)}
.world-editor-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px}
.world-editor-header span:first-child{font-size:16px;font-weight:600;color:#1a1a1a}
.world-editor-close{font-size:24px;color:#999;cursor:pointer;padding:0 4px}
.world-editor-title{width:100%;border:1px solid var(--t-border);border-radius:10px;padding:10px 14px;font-size:14px;margin-bottom:10px;background:var(--t-input);outline:none;box-sizing:border-box}
.world-editor-title:focus{border-color:#bbb}
.world-editor-content{width:100%;border:1px solid var(--t-border);border-radius:10px;padding:10px 14px;font-size:13px;min-height:120px;resize:vertical;background:var(--t-input);outline:none;box-sizing:border-box;line-height:1.5;touch-action:pan-y;overflow-y:auto}
.world-editor-content:focus{border-color:#bbb}
.world-editor-check{display:flex;align-items:center;gap:8px;padding:10px 0;font-size:13px;color:#555;cursor:pointer}
.world-editor-check input{width:16px;height:16px;accent-color:#333}
.world-editor-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:16px}
.world-editor-save{background:#333;color:#fff;border:none;border-radius:10px;padding:9px 20px;font-size:14px;cursor:pointer}
.world-editor-save:active{background:#555}
.world-editor-del{background:none;color:#e53935;border:1px solid #e53935;border-radius:10px;padding:9px 16px;font-size:14px;cursor:pointer}
.world-editor-del:active{background:#fff5f5}

.world-story-tags{display:flex;flex-wrap:wrap;gap:4px;margin-top:8px}
.world-story-tag{display:inline-block;font-size:11px;color:#555;background:#f0f0f0;border-radius:4px;padding:2px 6px}
.wst-on{color:#2e7d32;background:#e8f5e9}
.wst-off{color:#e53935;background:#ffebee}
.world-editor-field{margin-bottom:12px}
.world-editor-label{font-size:13px;color:#666;margin-bottom:8px}
.world-editor-types{display:flex;gap:12px}
.world-type-opt{display:flex;align-items:center;gap:5px;font-size:13px;color:#444;cursor:pointer}
.world-type-opt input{accent-color:#333}
/* 角色日常 LifeEvent v1 */
.world-life-page{background:var(--t-page);touch-action:pan-y;overscroll-behavior:contain;padding-bottom:24px}
.life-current-card{display:flex;align-items:center;gap:14px;margin:0 24px 18px;padding:18px 20px;background:var(--t-card);border:1px solid var(--t-border);border-radius:18px;box-shadow:0 2px 10px rgba(0,0,0,.025)}
.life-current-av{width:54px;height:54px;border-radius:18px;object-fit:cover;flex-shrink:0;background:#eee}
.life-current-empty{display:flex;align-items:center;justify-content:center;color:#999;font-size:20px}
.life-current-info{flex:1;min-width:0}.life-current-name{font-size:18px;font-weight:650;color:#222;margin-bottom:7px}.life-current-line{font-size:14px;color:#777;line-height:1.55;word-break:break-word}
.life-month-bar{height:54px;display:flex;align-items:center;justify-content:center;border-top:1px solid var(--t-border);border-bottom:1px solid var(--t-border);background:var(--t-card);font-size:21px;color:#333;letter-spacing:.04em;margin-bottom:22px}
.life-day-row{display:flex;align-items:center;gap:14px;margin:0 36px 18px}.life-day-dot{width:50px;height:50px;border-radius:50%;background:#333;color:#fff;display:flex;align-items:center;justify-content:center;font-size:20px}.life-day-text{font-size:15px;color:#999;letter-spacing:.08em}
.life-evt-list{margin:0 24px 12px}.life-evt-card{display:grid;grid-template-columns:58px 1fr;gap:10px;margin-bottom:14px}.life-evt-time{font-size:13px;color:#999;text-align:right;padding-top:22px}.life-evt-body{background:var(--t-card);border:1px solid var(--t-border);border-radius:17px;padding:16px 17px;box-shadow:0 2px 8px rgba(0,0,0,.025);min-width:0}.life-evt-main{display:flex;align-items:flex-start;gap:11px}.life-evt-dot{width:24px;height:24px;border:2px solid #d6d6d6;border-radius:50%;flex-shrink:0;margin-top:1px}.life-evt-title{font-size:17px;color:#222;line-height:1.45;font-weight:520;word-break:break-word}.life-evt-place{font-size:13px;color:#aaa;margin-top:5px}.life-evt-type{margin-left:auto;background:#f8f8f8;border:1px solid #eee;border-radius:999px;padding:4px 9px;font-size:11px;color:#999;white-space:nowrap}.life-evt-motive,.life-evt-detail{font-size:13px;line-height:1.65;color:#666;border-top:1px solid #f1f1f1;margin-top:10px;padding-top:10px;word-break:break-word}.life-evt-detail{color:#888}.life-evt-tags{display:flex;gap:7px;flex-wrap:wrap;margin-top:10px}.life-evt-tags span{font-size:11px;color:#888;background:#fafafa;border:1px solid #eee;border-radius:999px;padding:4px 9px}.life-evt-list.older{opacity:.9}

/* 角色日常 LifeEvent 紧凑修正 */
.life-current-card{margin:0 24px 14px!important;padding:14px 16px!important;border-radius:16px!important;gap:12px!important}
.life-current-av{width:46px!important;height:46px!important;border-radius:14px!important}.life-current-name{font-size:16px!important;margin-bottom:5px!important}.life-current-line{font-size:13px!important;line-height:1.45!important}
.life-evt-list{margin:0 24px 10px!important}.life-evt-card{grid-template-columns:48px 1fr!important;gap:8px!important;margin-bottom:12px!important}.life-evt-time{font-size:12px!important;padding-top:17px!important}.life-evt-body{padding:13px 14px!important;border-radius:15px!important}.life-evt-main{gap:9px!important}.life-evt-dot{width:21px!important;height:21px!important}.life-evt-title{font-size:15px!important;line-height:1.4!important;font-weight:520!important}.life-evt-place{font-size:12px!important;margin-top:3px!important}.life-evt-type{font-size:10px!important;padding:3px 8px!important}.life-evt-motive,.life-evt-detail{font-size:12px!important;line-height:1.55!important;margin-top:8px!important;padding-top:8px!important}.life-evt-tags{margin-top:8px!important}.life-evt-tags span{font-size:10px!important;padding:3px 8px!important}

/* 角色日常 LifeEvent v2：轻量生活窗口 */
.world-life-page{background:var(--t-page);touch-action:pan-y;overscroll-behavior:contain;padding:0 0 22px!important}
.world-life-page .world-sub-header{padding:0 14px 10px!important}
.life-current-card{display:flex!important;align-items:center!important;gap:10px!important;margin:0 14px 10px!important;padding:12px 13px!important;background:var(--t-card)!important;border:1px solid var(--t-border)!important;border-radius:15px!important;box-shadow:0 2px 8px rgba(0,0,0,.018)!important}
.life-current-av{width:40px!important;height:40px!important;border-radius:13px!important;object-fit:cover!important;flex-shrink:0!important;background:#eee!important}.life-current-empty{display:flex!important;align-items:center!important;justify-content:center!important;color:#999!important;font-size:15px!important}.life-current-info{flex:1!important;min-width:0!important}.life-current-name{font-size:14px!important;font-weight:650!important;color:#222!important;margin-bottom:4px!important}.life-current-line{font-size:12px!important;color:#777!important;line-height:1.45!important;word-break:break-word!important}
.life-space-card{margin:0 14px 12px;background:var(--t-card);border:1px solid var(--t-border);border-radius:16px;overflow:hidden;box-shadow:0 2px 8px rgba(0,0,0,.018)}.life-space-head{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:11px 12px;border-bottom:1px solid #f2f2f2}.life-space-title{font-size:13px;font-weight:650;color:#222}.life-space-sub{font-size:11px;color:#999;margin-top:3px}.life-space-head button{border:none;background:#f4f4f5;color:#444;border-radius:10px;padding:7px 10px;font-size:12px}.life-map-wrap{position:relative;width:100%;background:#f6f6f7;display:flex;align-items:center;justify-content:center;min-height:150px;max-height:260px;overflow:hidden}.life-map-wrap.scene{min-height:140px}.life-map-img{display:block;max-width:100%;max-height:260px;width:auto;height:auto;object-fit:contain}.life-map-empty{height:160px;display:flex;align-items:center;justify-content:center;color:#aaa;font-size:12px}.life-avatar-pin{position:absolute;transform:translate(-50%,-50%);width:34px;height:34px;z-index:3}.life-avatar-pin img{width:34px;height:34px;object-fit:contain;filter:drop-shadow(0 2px 5px rgba(0,0,0,.22))}.life-avatar-pin span{display:block;width:18px;height:18px;margin:8px;border-radius:50%;background:#333;box-shadow:0 2px 6px rgba(0,0,0,.25)}.life-space-foot{display:flex;justify-content:space-between;gap:10px;padding:9px 12px;font-size:11px;color:#888;border-top:1px solid #f2f2f2}.life-empty{margin:10px 14px;padding:22px 10px;text-align:center;color:#aaa;font-size:12px;background:var(--t-card);border:1px solid var(--t-border);border-radius:14px}
.life-evt-list{margin:0 14px 10px!important}.life-evt-card{display:grid!important;grid-template-columns:42px 1fr!important;gap:8px!important;margin-bottom:10px!important}.life-evt-time{font-size:11px!important;color:#aaa!important;text-align:right!important;padding-top:14px!important}.life-evt-body{background:var(--t-card)!important;border:1px solid var(--t-border)!important;border-radius:14px!important;padding:11px 12px!important;box-shadow:0 2px 7px rgba(0,0,0,.018)!important;min-width:0!important}.life-evt-main{display:flex!important;align-items:flex-start!important;gap:8px!important}.life-evt-title{font-size:13px!important;line-height:1.45!important;font-weight:600!important;color:#222!important;word-break:break-word!important}.life-evt-place{font-size:11px!important;color:#999!important;margin-top:3px!important}.life-evt-type{margin-left:auto!important;background:#f7f7f8!important;border:1px solid #eee!important;border-radius:999px!important;padding:2px 7px!important;font-size:10px!important;color:#999!important;white-space:nowrap!important}.life-evt-dot,.life-month-bar,.life-day-row{display:none!important}.life-evt-motive,.life-evt-detail{font-size:12px!important;line-height:1.55!important;color:#666!important;border-top:1px solid #f3f3f3!important;margin-top:8px!important;padding-top:8px!important;word-break:break-word!important}.life-evt-detail{color:#888!important}.life-evt-tags{display:flex!important;gap:6px!important;flex-wrap:wrap!important;margin-top:8px!important}.life-evt-tags span{font-size:10px!important;color:#888!important;background:#fafafa!important;border:1px solid #eee!important;border-radius:999px!important;padding:2px 7px!important}.life-evt-list.older{opacity:.9!important}
.life-edit-mask{position:fixed;top:0;left:0;right:0;z-index:99999;background:rgba(0,0,0,.38);display:flex;align-items:flex-end;overflow:hidden}.life-edit-box{width:100%;max-height:92%;background:#fff;border-radius:22px 22px 0 0;display:flex;flex-direction:column;overflow:hidden}.life-edit-head{height:52px;display:flex;align-items:center;justify-content:center;border-bottom:1px solid #eee;position:relative;font-size:15px;font-weight:650;color:#222;flex-shrink:0}.life-edit-head button{position:absolute;right:16px;border:none;background:transparent;font-size:24px;color:#888}.life-edit-body{padding:14px;overflow-y:auto;touch-action:pan-y;-webkit-overflow-scrolling:touch;overscroll-behavior:contain}.life-edit-actions{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:10px}.life-edit-actions button,.life-place-row button,.life-scene-row button,.life-wide-btn{border:none;border-radius:10px;background:#f2f2f3;color:#444;font-size:12px;padding:8px 10px}.life-edit-map{position:relative;background:#f6f6f7;border:1px dashed #ddd;border-radius:15px;min-height:170px;display:flex;align-items:center;justify-content:center;color:#aaa;font-size:12px;overflow:hidden;margin-bottom:10px}.life-edit-map img{max-width:100%;max-height:280px;object-fit:contain}.life-edit-place-list{display:grid;gap:7px;margin-bottom:12px}.life-place-row{display:flex;align-items:center;gap:6px;background:#f8f8f9;border:1px solid #eee;border-radius:12px;padding:8px}.life-place-row span{flex:1;min-width:0;font-size:12px;color:#333;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.life-edit-body textarea{width:100%;box-sizing:border-box;border:1px solid #e8e8e8;background:#fafafa;border-radius:13px;padding:10px 11px;margin-bottom:10px;font-size:13px;line-height:1.55;min-height:74px;resize:none;outline:none;touch-action:pan-y}.life-scene-title{font-size:12px;color:#777;margin:4px 0 8px}.life-scene-row{display:flex;gap:10px;background:#f8f8f9;border:1px solid #eee;border-radius:14px;padding:9px;margin-bottom:8px}.life-scene-thumb{width:72px;height:72px;border-radius:12px;background:#eee;display:flex;align-items:center;justify-content:center;color:#aaa;font-size:12px;overflow:hidden;flex-shrink:0}.life-scene-thumb img{width:100%;height:100%;object-fit:cover}.life-scene-row>div:last-child{flex:1;min-width:0}.life-scene-row input{width:100%;box-sizing:border-box;border:1px solid #e8e8e8;background:#fff;border-radius:10px;padding:8px;font-size:12px;margin-bottom:6px}.life-scene-row textarea{min-height:52px;margin-bottom:6px;font-size:12px}.life-small-hint{font-size:12px;color:#aaa;background:#fafafa;border:1px dashed #ddd;border-radius:12px;padding:10px;margin-bottom:8px}.life-wide-btn{width:100%;height:38px;background:#333;color:#fff}.life-edit-foot{padding:10px 14px calc(14px + env(safe-area-inset-bottom));border-top:1px solid #eee}.life-edit-foot button{width:100%;height:44px;border:none;border-radius:14px;background:#333;color:#fff;font-size:15px;font-weight:650}

/* 角色日常顶部留白与长按反馈 */
.world-life-page .world-sub-header{padding-top:14px!important}
.life-evt-card:active .life-evt-body{background:#fafafa!important}

/* 角色日常点位与论坛TA页轻量选中 */
.life-place-pills{display:flex;gap:7px;overflow-x:auto;padding:9px 12px 0;background:#fff;scrollbar-width:none}.life-place-pills::-webkit-scrollbar{display:none}.life-place-pills button{border:1px solid #e6e6e6;background:#fafafa;color:#666;border-radius:999px;padding:5px 10px;font-size:11px;white-space:nowrap}.life-place-pills button.on{background:#333;color:#fff;border-color:#333}.life-place-pills span{font-size:11px;color:#aaa;padding:4px 0 2px}.lm-ta-tabs{height:48px!important;border-top:8px solid #f7f7f8!important;background:#fff!important}.lm-ta-tab{height:40px!important;background:transparent!important;border:none!important;border-radius:0!important;color:#777!important;font-size:14px!important;font-weight:400!important;position:relative!important;box-shadow:none!important}.lm-ta-tab.on{background:transparent!important;color:#222!important;font-weight:650!important}.lm-ta-tab.on:after{content:'';position:absolute;left:34%;right:34%;bottom:0;height:2px;background:#333;border-radius:2px}.lm-ta-tab:before{display:none!important}

/* 日常页不外露点位按钮 */
.life-place-pills{display:none!important}

/* 删除TA论坛Tab选中线 */
.lm-ta-tab.on:after{display:none!important;content:none!important}

/* 场景tabs样式 */
.auto-scene-tabs{display:flex;gap:8px;padding:4px 0 12px;overflow-x:auto}
.auto-scene-tab{padding:7px 14px;border-radius:999px;background:var(--t-hover);color:#666;font-size:13px;cursor:pointer;white-space:nowrap}
.auto-scene-tab.on{background:#333;color:#fff}
.auto-scene-desc{font-size:12px;color:#999;padding:0 0 10px}
.auto-scene-pane .tool-item:first-of-type{margin-top:4px}
/* life log / manage v244 */
.life-log-card{margin:0 14px 12px;background:var(--t-card);border:1px solid var(--t-border);border-radius:15px;padding:11px 12px;box-shadow:0 2px 7px rgba(0,0,0,.018)}
.life-log-head{display:flex;align-items:flex-start;justify-content:space-between;gap:10px;margin-bottom:8px}.life-log-title{font-size:13px;font-weight:650;color:#222}.life-log-sub{font-size:11px;color:#999;margin-top:3px}.life-log-head span{font-size:11px;color:#aaa;white-space:nowrap}.life-log-focus{font-size:12px;color:#555;background:#f7f7f8;border:1px solid #eee;border-radius:10px;padding:7px 9px;margin-bottom:8px}.life-log-list{display:flex;flex-direction:column;gap:5px}.life-log-row{display:grid;grid-template-columns:18px 42px 1fr auto;gap:6px;align-items:center;font-size:11px;color:#666;line-height:1.35}.life-log-row span{color:#999}.life-log-row b{font-weight:500;color:#777}.life-log-row em{font-style:normal;color:#444;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.life-log-row i{font-style:normal;color:#aaa;max-width:84px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.life-log-row.done{opacity:.55}.life-evt-card.manage .life-evt-body{position:relative;padding-left:38px!important}.life-evt-check{position:absolute;left:11px;top:12px;width:18px;height:18px;border:1px solid #bbb;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:12px;color:#fff;background:#fff}.life-evt-card.selected .life-evt-check{background:#333;border-color:#333}.life-evt-card.selected .life-evt-body{border-color:#bbb!important;background:#fafafa!important}.life-manage-bar{position:fixed;left:14px;right:14px;bottom:14px;z-index:1200;background:rgba(255,255,255,.92);backdrop-filter:blur(16px);border:1px solid var(--t-border);border-radius:16px;padding:8px;display:grid;grid-template-columns:1fr 1fr 1fr 1fr;gap:6px;box-shadow:0 8px 24px rgba(0,0,0,.08)}.life-manage-bar button{border:none;border-radius:11px;background:#f3f3f4;color:#333;font-size:12px;padding:9px 4px}.life-manage-bar button.danger{background:#333;color:#fff}

/* 关系空间 v271 */
.rel-page{background:var(--t-page);padding-bottom:24px;touch-action:pan-y;overscroll-behavior:contain}.rel-page .world-sub-header{padding-top:14px}.rel-hero{margin:0 14px 12px;padding:15px 14px;background:var(--t-card);border:1px solid var(--t-border);border-radius:16px;box-shadow:0 2px 8px rgba(0,0,0,.018);text-align:center}.rel-pair{display:flex;align-items:center;justify-content:center;gap:10px;margin-bottom:9px}.rel-avatar{width:42px;height:42px;border-radius:15px;background:#f0f0f1;color:#777;display:flex;align-items:center;justify-content:center;font-size:15px;font-weight:650;overflow:hidden}.rel-avatar img{width:100%;height:100%;object-fit:cover}.rel-line{width:58px;height:18px;display:flex;align-items:center}.rel-line span{width:100%;height:1px;background:#d8d8d8;display:block;position:relative}.rel-line span:after{content:'';position:absolute;left:50%;top:50%;width:6px;height:6px;border-radius:50%;background:#333;transform:translate(-50%,-50%)}.rel-name{font-size:14px;font-weight:650;color:#222;margin-bottom:4px}.rel-sub{font-size:12px;color:#999}.rel-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:7px;margin:0 14px 12px}.rel-stat{background:var(--t-card);border:1px solid var(--t-border);border-radius:13px;padding:9px 4px;text-align:center}.rel-stat b{display:block;font-size:14px;color:#222;line-height:1.2;margin-bottom:3px}.rel-stat span{display:block;font-size:10px;color:#999;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.rel-empty{margin:0 14px;padding:22px 14px;background:var(--t-card);border:1px solid var(--t-border);border-radius:15px;color:#aaa;font-size:12px;text-align:center;line-height:1.6}.rel-timeline{margin:0 14px 12px}.rel-event{display:grid;grid-template-columns:54px 1fr;gap:8px;margin-bottom:10px}.rel-event-time{text-align:right;padding-top:10px}.rel-event-time span{display:block;font-size:11px;color:#777;line-height:1.3}.rel-event-time em{display:block;font-style:normal;font-size:9px;color:#bbb;line-height:1.4;word-break:break-all}.rel-event-body{background:var(--t-card);border:1px solid var(--t-border);border-radius:14px;padding:11px 12px;box-shadow:0 2px 7px rgba(0,0,0,.018);min-width:0}.rel-event-top{display:flex;align-items:flex-start;gap:8px}.rel-event-top b{font-size:13px;line-height:1.45;color:#222;font-weight:600;flex:1;min-width:0;word-break:break-word}.rel-event-top i{font-style:normal;font-size:10px;color:#888;background:#f7f7f8;border:1px solid #eee;border-radius:999px;padding:2px 7px;white-space:nowrap}.rel-event-detail{font-size:12px;line-height:1.55;color:#666;border-top:1px solid #f3f3f3;margin-top:8px;padding-top:8px;word-break:break-word}.rel-note{font-size:11px;color:#aaa;text-align:center;margin:12px 14px 0;line-height:1.5}

/* 关系空间 v272：筛选与双语细化 */
.rel-line{width:72px;height:22px;position:relative;display:flex;align-items:center;justify-content:center}.rel-line span{width:100%;height:1px;background:linear-gradient(90deg,transparent,#cfcfcf 22%,#999 50%,#cfcfcf 78%,transparent);display:block;position:relative}.rel-line span:before,.rel-line span:after{content:'';position:absolute;top:50%;width:6px;height:6px;border-radius:50%;background:#fff;border:1px solid #bbb;transform:translateY(-50%)}.rel-line span:before{left:18px}.rel-line span:after{right:18px}.rel-line span{box-shadow:none}.rel-line span>i{display:none}.rel-filters{display:flex;gap:7px;overflow-x:auto;padding:0 14px 12px;scrollbar-width:none}.rel-filters::-webkit-scrollbar{display:none}.rel-filters button{border:1px solid var(--t-border);background:var(--t-card);color:#777;border-radius:999px;padding:6px 11px;font-size:12px;white-space:nowrap}.rel-filters button.on{background:#333;color:#fff;border-color:#333}.rel-stat{cursor:pointer}.rel-stat:active{background:var(--t-hover)}.rel-bi{display:flex;flex-direction:column;gap:6px}.rel-bi-foreign{font-size:12px;line-height:1.55;color:#444;word-break:break-word}.rel-bi-cn{font-size:12px;line-height:1.55;color:#777;border-top:1px solid #f0f0f0;padding-top:6px;word-break:break-word}.rel-event[data-kind="dialog"] .rel-event-body{background:#fff}.rel-event[data-kind="dialog"] .rel-event-top i{background:#fafafa}.rel-event[data-kind="call"] .rel-event-top i,.rel-event[data-kind="gift"] .rel-event-top i,.rel-event[data-kind="music"] .rel-event-top i{color:#333;background:#f0f0f0;border-color:#e5e5e5}

/* 关系档案 v273 */
.rel-archive .rel-hero{padding-top:17px}.rel-archive .rel-name{font-size:14px}.rel-keywords{display:flex;gap:7px;overflow-x:auto;padding:0 14px 12px;scrollbar-width:none}.rel-keywords::-webkit-scrollbar{display:none}.rel-keywords span{font-size:11px;color:#666;background:var(--t-card);border:1px solid var(--t-border);border-radius:999px;padding:5px 10px;white-space:nowrap}.rel-source{font-size:10px;color:#aaa;margin-top:7px}.rel-event[data-kind="care"] .rel-event-top i,.rel-event[data-kind="milestone"] .rel-event-top i{color:#333;background:#f0f0f0;border-color:#e5e5e5}.rel-event[data-kind="tension"] .rel-event-top i{color:#777;background:#f8f8f8}.rel-event[data-kind="object"] .rel-event-top i,.rel-event[data-kind="shared"] .rel-event-top i{color:#444;background:#f3f3f3}

/* 关系空间 v274：回到第一版简洁布局 */
.rel-page .rel-keywords,.rel-page .rel-filters{display:none!important}.rel-page .rel-hero{margin-top:0}.rel-page .rel-source{font-size:11px;color:#aaa;margin-top:7px}.rel-page .rel-note{font-size:11px;color:#aaa;text-align:center;margin:12px 14px 0;line-height:1.5}.rel-line{width:72px;height:22px;position:relative;display:flex;align-items:center;justify-content:center}.rel-line span{width:100%;height:1px;background:linear-gradient(90deg,transparent,#d8d8d8 22%,#a9a9a9 50%,#d8d8d8 78%,transparent);display:block;position:relative}.rel-line span:before,.rel-line span:after{content:'';position:absolute;top:50%;width:6px;height:6px;border-radius:50%;background:#fff;border:1px solid #bbb;transform:translateY(-50%)}.rel-line span:before{left:21px}.rel-line span:after{right:21px}

.ms-label.small{font-size:13px;color:#555;margin-top:14px}
.ms-model-prompt-wrap{margin-top:12px}
.ms-textarea{width:100%;box-sizing:border-box;border:1px solid var(--t-border);border-radius:8px;background:var(--t-input);padding:10px 12px;margin-top:8px;min-height:86px;font-size:14px;line-height:1.55;color:#333;font-family:inherit;resize:none;outline:none;touch-action:pan-y}
.ms-textarea:focus{border-color:var(--t-accent)}
.ms-mode-source{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:10px}
.ms-mode-source button{height:34px;border:1px solid var(--t-border);background:var(--t-input);color:#666;border-radius:8px;font-size:13px;font-family:inherit}
.ms-mode-source button.on{background:#ececee;border-color:#cfd0d3;color:#333;font-weight:600;box-shadow:inset 0 0 0 1px rgba(0,0,0,.025)}


/* 手动生成弹窗 */
.life-gen-mask{position:fixed;inset:0;z-index:9999;background:rgba(0,0,0,.45);display:flex;align-items:flex-end;justify-content:center}
.life-gen-sheet{background:#fff;border-radius:14px 14px 0 0;width:100%;max-width:420px;padding:16px 18px 24px;max-height:80vh;overflow-y:auto}
.life-gen-head{display:flex;align-items:center;justify-content:space-between;font-size:15px;font-weight:500;margin-bottom:12px}
.life-gen-close{border:none;background:none;font-size:20px;color:#999;cursor:pointer}
.life-gen-info{font-size:12px;color:#888;margin-bottom:4px}
.life-gen-section{font-size:12px;color:#666;margin:12px 0 6px}
.life-gen-options{display:flex;gap:8px;flex-wrap:wrap}
.life-gen-opt{background:#f5f5f5;border:1px solid #e0e0e0;border-radius:8px;padding:8px 14px;font-size:13px;cursor:pointer;color:#333}
.life-gen-opt:active{background:#e8e8e8}
.life-gen-smart{width:100%;text-align:center;background:#f0f0f2}
.life-gen-custom{width:100%;padding:8px;border:1px solid #ddd;border-radius:8px;font-size:13px;margin-bottom:8px}
.life-gen-custom-go{width:100%;text-align:center;background:#333;color:#fff;border:none;border-radius:8px;padding:9px;font-size:13px}
.life-gen-custom-go:active{background:#555}
#lifeGenStatus{font-size:12px;color:#666;text-align:center;margin-top:12px;min-height:16px}

/* ===== 日常生成 FAB 悬浮按钮 ===== */
.life-gen-fab{position:fixed;right:26px;bottom:86px;width:58px;height:58px;border-radius:50%;border:none;background:#2c2c2e;color:#fff;box-shadow:0 8px 24px rgba(0,0,0,.16);z-index:9999;display:flex;align-items:center;justify-content:center;padding:0;cursor:pointer}
.life-gen-fab svg{width:28px;height:28px}
.life-gen-fab:active{transform:scale(.92)}

/* role scroll hotfix 20260710 */
.role-detail-pg,.role-pg,.rd-body,.role-list,.role-create-body{touch-action:pan-y;-webkit-overflow-scrolling:touch;overscroll-behavior:contain;}

/* global APP scroll fix 20260710, narrowed 20260711
   Keep outer app chrome locked; only real inner scroll containers may pan. */
.set-sub,.api-detail,.api-list-area,.api-wrap,.phone-list,
.role-detail-pg,.role-pg,.rd-body,.role-list,.role-create-body,
#set-main,.world-page,.lm-shop,.lm-forum,.lm-music-page,.lm-backup,
.sub-body,#taPhonePage,.diary-list-box,.bill-list,.sched-list-box,
.pwl-body,#favBody,.fav-body,.lm-bank-body,.ml-card{
  touch-action:pan-y!important;
  -webkit-overflow-scrolling:touch;
  overscroll-behavior:contain;
}

@keyframes lifeAvatarSway{0%,100%{transform:translate(-50%,-50%) rotate(0deg)}25%{transform:translate(-50%,-50%) rotate(2.5deg) translateX(1.5px)}50%{transform:translate(-50%,-50%) rotate(0deg) translateY(-1px)}75%{transform:translate(-50%,-50%) rotate(-2.5deg) translateX(-1.5px)}}
.life-avatar-pin{animation:lifeAvatarSway 3.2s ease-in-out infinite}
.life-place-note{font-size:11px;color:#999;padding:0 8px 6px;margin-top:-4px;line-height:1.4}

/* Room items in editor */
.life-items-list{padding:2px 0 4px 12px}
.life-item-row{display:flex;align-items:center;gap:6px;padding:4px 0;font-size:13px;color:#555}
.life-item-row span:first-child{font-size:10px;color:#999}
.life-item-row span:nth-child(2){flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.life-item-from{font-size:11px;color:#999;margin-right:4px}
.life-item-row button{font-size:11px;padding:2px 6px;border:1px solid #ddd;border-radius:4px;background:#fafafa;color:#666}
.life-add-item{font-size:12px;color:#888;padding:6px 12px;cursor:pointer}
.life-add-item:active{color:#333}
.life-item-icon{width:24px;height:24px;border-radius:4px;object-fit:cover;flex-shrink:0;cursor:pointer;border:1px solid #eee}
.life-item-icon-empty{width:24px;height:24px;border-radius:4px;background:#f0f0f2;border:1px dashed #ccc;display:flex;align-items:center;justify-content:center;font-size:9px;color:#aaa;flex-shrink:0;cursor:pointer}
.life-item-name{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.life-item-pin{position:absolute;width:20px;height:20px;border-radius:4px;object-fit:cover;transform:translate(-50%,-50%);border:none;box-shadow:none;cursor:grab;z-index:10;transition:transform .15s}
.life-item-pin:active{transform:translate(-50%,-50%) scale(1.3);z-index:999}
.life-item-menu{position:fixed;left:50%;top:50%;transform:translate(-50%,-50%);background:#fff;border-radius:16px;padding:14px;z-index:100000;box-shadow:0 4px 24px rgba(0,0,0,.18);min-width:200px;display:flex;flex-direction:column;gap:6px}
.life-item-menu-title{font-size:13px;color:#888;text-align:center;padding-bottom:4px}
.life-item-menu button{border:none;background:#f5f5f5;border-radius:10px;padding:10px;font-size:13px;color:#333;text-align:center}
.life-item-menu button:active{background:#e8e8e8}
.life-item-menu-del{color:#e53935!important;background:#fff5f5!important}
.life-item-menu-sep{height:1px;background:#eee;margin:4px 0}

/* ===== 关系网 ===== */
.rel-page{padding:0 0 80px 0}
.rel-graph-box{margin:8px 12px;background:var(--t-card,#fff);border-radius:14px;border:1px solid var(--t-border,#ebebeb);overflow:hidden;height:320px;position:relative;touch-action:none}
.rel-graph-inner{width:100%;height:100%;display:flex;align-items:center;justify-content:center;transform-origin:center center}

.rel-cards{padding:0 12px}
.rel-card{background:var(--t-card,#fff);border:1px solid var(--t-border,#ebebeb);border-radius:12px;padding:14px;margin-bottom:10px;transition:box-shadow .2s}
.rel-card:active{box-shadow:0 2px 12px rgba(0,0,0,.08)}
.rel-card-top{display:flex;align-items:flex-start;gap:12px}
.rel-card-avatar{width:42px;height:42px;border-radius:50%;object-fit:cover;flex-shrink:0}
.rel-card-avatar-placeholder{background:#e0e0e0;display:flex;align-items:center;justify-content:center;font-size:16px;color:#666;font-weight:500}
.rel-card-info{flex:1;min-width:0}
.rel-card-name{font-size:14px;font-weight:500;color:#1a1a1a;display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.rel-card-note{font-size:12px;color:#888;margin-top:3px;line-height:1.4;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}
.rel-card-event{font-size:11px;color:#999;margin-top:4px;padding:3px 8px;background:#f5f5f5;border-radius:6px;display:inline-block;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.rel-card-bottom{display:flex;align-items:center;gap:8px;margin-top:10px}
.rel-intimacy-bar{flex:1;height:4px;background:#f0f0f0;border-radius:2px;overflow:hidden}
.rel-intimacy-fill{height:100%;background:linear-gradient(90deg,#bbb,#555);border-radius:2px;transition:width .3s}
.rel-intimacy-num{font-size:11px;color:#999;min-width:24px;text-align:right}
.rel-type-tag{font-size:10px;padding:1px 6px;border-radius:8px;background:#f2f2f3;color:#666;white-space:nowrap}
.rel-linked-badge{font-size:9px;padding:1px 5px;border-radius:6px;background:#e8f5e9;color:#2e7d32;white-space:nowrap}
.rel-empty{text-align:center;padding:50px 20px;color:#bbb;font-size:14px;line-height:1.8}
.rel-fab{position:fixed;bottom:24px;right:20px;width:48px;height:48px;border-radius:50%;background:#333;color:#fff;display:flex;align-items:center;justify-content:center;font-size:24px;box-shadow:0 3px 12px rgba(0,0,0,.2);z-index:90;cursor:pointer;-webkit-tap-highlight-color:transparent}
.rel-fab:active{transform:scale(.92)}

/* 编辑弹窗 */
.rel-editor-mask{position:fixed;inset:0;background:rgba(0,0,0,.4);z-index:9000;display:flex;align-items:flex-end;justify-content:center}
.rel-editor-panel{width:100%;max-width:420px;max-height:88vh;background:var(--t-card,#fff);border-radius:16px 16px 0 0;padding:20px 16px 30px;overflow-y:auto;-webkit-overflow-scrolling:touch;touch-action:pan-y}
.rel-ed-title{font-size:16px;font-weight:600;color:#1a1a1a;text-align:center;margin-bottom:16px}
.rel-ed-row{margin-bottom:14px}
.rel-ed-label{font-size:12px;color:#888;margin-bottom:5px}
.rel-ed-input{width:100%;border:1px solid #e0e0e0;border-radius:8px;padding:9px 12px;font-size:14px;outline:none;background:var(--t-input,#fafafa);box-sizing:border-box}
.rel-ed-input:focus{border-color:#bbb}
.rel-ed-select{width:100%;border:1px solid #e0e0e0;border-radius:8px;padding:9px 12px;font-size:14px;outline:none;background:var(--t-input,#fafafa);-webkit-appearance:none;box-sizing:border-box}
.rel-ed-textarea{width:100%;border:1px solid #e0e0e0;border-radius:8px;padding:9px 12px;font-size:13px;outline:none;min-height:60px;resize:none;background:var(--t-input,#fafafa);box-sizing:border-box;touch-action:pan-y;overflow-y:auto;max-height:120px}
.rel-ed-textarea:focus{border-color:#bbb}
.rel-ed-range{width:100%;margin-top:4px}
.rel-ed-avatar-row{display:flex;align-items:center;gap:10px}
.rel-ed-avatar-preview{width:42px;height:42px;border-radius:50%;background:#f0f0f0;overflow:hidden;display:flex;align-items:center;justify-content:center;font-size:11px;color:#999}
.rel-ed-avatar-preview img{width:100%;height:100%;object-fit:cover}
.rel-ed-btn-sm{padding:6px 12px;border:1px solid #ddd;border-radius:8px;background:#fff;font-size:12px;color:#444;cursor:pointer}
.rel-ed-btn-sm:active{background:#f5f5f5}
.rel-ed-toggle{display:flex;align-items:center;gap:8px;font-size:12px;color:#666;cursor:pointer}
.rel-ed-toggle input{width:16px;height:16px}
.rel-ed-events{margin-top:8px;padding:8px 10px;background:#fafafa;border-radius:8px;border:1px solid #f0f0f0}
.rel-ev-item{font-size:12px;color:#666;padding:3px 0;border-bottom:1px solid #f5f5f5}
.rel-ev-item:last-child{border-bottom:none}
.rel-ev-time{color:#bbb;margin-right:6px}
.rel-ed-event-add{display:flex;gap:6px}
.rel-ed-event-add .rel-ed-input{flex:1}
.rel-ed-actions{display:flex;gap:8px;margin-top:18px;justify-content:flex-end}
.rel-ed-btn{padding:10px 20px;border:none;border-radius:10px;font-size:14px;cursor:pointer}
.rel-ed-btn-save{background:#333;color:#fff}
.rel-ed-btn-save:active{background:#555}
.rel-ed-btn-cancel{background:#f2f2f3;color:#666}
.rel-ed-btn-del{background:#fff;color:#e53935;border:1px solid #e53935;margin-right:auto}
.rel-ed-btn-del:active{background:#fff5f5}

.rel-fab-ai{bottom:80px;background:#555}
.rel-fab-ai:active{background:#777}
.rel-mount-item{display:flex;align-items:center;gap:8px;padding:7px 0;font-size:13px;color:#444;border-bottom:1px solid #f5f5f5}
.rel-mount-item input{width:16px;height:16px;flex-shrink:0}
.rel-mount-tag{display:inline-block;font-size:11px;padding:2px 8px;background:#f0f0f2;border-radius:6px;color:#666;margin:3px 4px 0 0}
.rel-ed-mount-list{margin-top:6px;min-height:0}







/* 活动空间矩形区域 v294 */
.life-area-box{position:absolute;border:1px solid rgba(45,45,48,.38);background:rgba(255,255,255,.18);border-radius:8px;pointer-events:none;z-index:1;box-shadow:inset 0 0 0 1px rgba(255,255,255,.45)}
.life-area-box span{position:absolute;left:5px;top:4px;max-width:calc(100% - 10px);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:10px;color:#333;background:rgba(255,255,255,.72);border:1px solid rgba(0,0,0,.06);border-radius:999px;padding:1px 5px;line-height:1.4}
.life-area-box.edit{border-style:dashed;background:rgba(0,0,0,.035);pointer-events:auto}
.life-point-dot{position:absolute;left:50%;top:50%;width:8px;height:8px;border-radius:50%;background:#333;transform:translate(-50%,-50%);z-index:2;pointer-events:none;box-shadow:0 1px 4px rgba(0,0,0,.2)}
.life-point-dot span{position:absolute;left:10px;top:50%;transform:translateY(-50%);max-width:84px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:10px;color:#333;background:rgba(255,255,255,.72);border:1px solid rgba(0,0,0,.06);border-radius:999px;padding:1px 5px;line-height:1.4}
.life-point-dot.edit{pointer-events:auto}
.life-place-row em{font-style:normal;font-size:10px;color:#888;background:#fff;border:1px solid #e5e5e5;border-radius:999px;padding:2px 6px;white-space:nowrap}
.life-place-row.is-area{background:#f7f7f8;border-color:#e4e4e5}
.life-area-tools{display:grid;grid-template-columns:repeat(5,1fr);gap:5px;background:#fafafa;border:1px solid #eee;border-radius:12px;padding:7px;margin:-2px 0 7px}
.life-area-tools button{border:none;background:#f0f0f1;color:#555;border-radius:9px;font-size:11px;padding:7px 2px}

/* 活动空间区域 UI 收敛 v295 */
.life-area-box span,.life-point-dot span{display:none!important}
.life-area-box{border-color:rgba(255,255,255,.58)!important;background:rgba(255,255,255,.08)!important;box-shadow:0 0 0 1px rgba(0,0,0,.18),inset 0 0 0 1px rgba(255,255,255,.32)!important;border-radius:8px!important}
.life-area-box.edit{border-style:solid!important;background:rgba(255,255,255,.11)!important}
.life-point-dot{width:7px!important;height:7px!important;background:rgba(30,30,30,.68)!important;border:1px solid rgba(255,255,255,.75)!important;box-shadow:0 1px 3px rgba(0,0,0,.22)!important}
.life-place-card{background:#fff;border:1px solid #eee;border-radius:14px;padding:10px 10px 9px;margin-bottom:8px;box-shadow:0 1px 4px rgba(0,0,0,.015)}
.life-place-main{display:flex;align-items:center;gap:8px;min-width:0}.life-place-main em{font-style:normal;font-size:10px;color:#888;background:#f7f7f8;border:1px solid #eee;border-radius:999px;padding:2px 7px;white-space:nowrap}.life-place-main b{font-size:13px;color:#333;font-weight:600;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.life-place-card .life-place-note{font-size:12px;color:#999;line-height:1.45;margin:7px 0 0;padding:0;background:transparent;border:none;word-break:break-word}
.life-place-actions{display:flex;gap:6px;margin-top:8px;overflow-x:auto;scrollbar-width:none}.life-place-actions::-webkit-scrollbar{display:none}.life-place-actions button{flex:0 0 auto;min-width:54px;height:32px;border:none;border-radius:10px;background:#f3f3f4;color:#555;font-size:12px;padding:0 9px;white-space:nowrap}
.life-area-tools{grid-template-columns:repeat(5,minmax(0,1fr))!important;gap:5px!important;background:#fafafa!important;border:1px solid #eee!important;border-radius:12px!important;padding:7px!important;margin:8px 0 4px!important}.life-area-tools button{height:31px!important;padding:0!important;font-size:12px!important;white-space:nowrap!important;min-width:0!important}
.life-add-item{font-size:12px;color:#999;padding:9px 3px 2px}.life-place-row{display:none!important}

/* 活动空间区域编辑体验 v296 */
.life-map-wrap .life-area-box{display:none!important}
.life-edit-map .life-area-box{display:block!important}
.life-map-wrap .life-point-dot{display:none!important}
.life-edit-map .life-point-dot{display:block!important}
.life-item-row{display:grid!important;grid-template-columns:38px 1fr auto auto auto!important;align-items:center!important;gap:7px!important}
.life-item-row .life-item-from{font-size:11px!important;color:#aaa!important;white-space:nowrap!important}
.life-item-row button{height:30px!important;border:1px solid #e5e5e5!important;background:#fff!important;border-radius:9px!important;font-size:12px!important;color:#555!important;padding:0 8px!important;white-space:nowrap!important}
.life-item-desc{grid-column:2 / -1;font-size:11px;color:#999;line-height:1.45;margin-top:-2px;word-break:break-word}
.life-place-actions button[data-a="toarea"]{min-width:68px}

/* 活动空间物品分区 v297 */
.life-items-block{margin-top:10px;padding-top:9px;border-top:1px solid #f0f0f0}
.life-items-title{font-size:10px;color:#aaa;letter-spacing:0;margin:0 0 6px 1px;font-weight:400}
.life-items-list{display:flex;flex-direction:column;gap:7px}
.life-item-row{display:block!important;background:#fafafa!important;border:1px solid #f0f0f0!important;border-radius:12px!important;padding:8px!important}
.life-item-top{display:flex;align-items:center;gap:8px;min-width:0}.life-item-top .life-item-icon,.life-item-top .life-item-icon-empty{width:30px!important;height:30px!important;border-radius:9px!important;flex-shrink:0!important}.life-item-top .life-item-icon-empty{display:flex;align-items:center;justify-content:center;border:1px dashed #d6d6d6;color:#aaa;font-size:12px;background:#fff}.life-item-name{font-size:13px!important;font-weight:500!important;color:#333!important;min-width:0;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.life-item-from{font-size:11px!important;color:#aaa!important;white-space:nowrap!important;font-weight:400!important}.life-item-desc{font-size:11px!important;color:#999!important;line-height:1.45!important;margin:5px 0 0 38px!important;word-break:break-word!important}.life-item-actions{display:flex;gap:6px;margin:7px 0 0 38px}.life-item-actions button{height:28px!important;min-width:48px!important;border:1px solid #e5e5e5!important;background:#fff!important;border-radius:9px!important;font-size:11px!important;color:#666!important;padding:0 8px!important;white-space:nowrap!important}.life-add-item{margin-top:8px!important;border-top:1px dashed #eee!important;padding:10px 2px 1px!important;font-size:12px!important;color:#aaa!important}

/* 活动空间物品折叠 v298 */
.life-items-title{display:flex;align-items:center;justify-content:space-between;gap:8px;min-height:26px;padding:0 1px;color:#999;cursor:pointer}.life-items-title span{font-size:10px;color:#aaa;background:#f7f7f8;border:1px solid #eee;border-radius:999px;padding:2px 7px;white-space:nowrap}.life-items-block:not(.open){padding-bottom:0}.life-items-block.open .life-items-title{margin-bottom:6px}

/* 活动空间物品名称轻量化 v299 */
.life-item-name{font-size:12px!important;font-weight:400!important;color:#555!important;line-height:1.35!important}
.life-item-from{font-size:11px!important;color:#aaa!important;font-weight:400!important}

/* 活动空间多房间图 v299 */
.life-room-tabs{display:flex;gap:6px;overflow-x:auto;padding:2px 0 10px;margin-bottom:4px}.life-room-tabs button{border:1px solid #eee;background:#f7f7f8;color:#777;border-radius:999px;padding:7px 12px;font-size:12px;white-space:nowrap}.life-room-tabs button.on{background:#333;color:#fff;border-color:#333}.life-scene-row.on{border-color:#bbb;background:#fafafa}.life-scene-row button[data-a="open"]{background:#333;color:#fff;border-color:#333}

/* 添加房间图按钮轻量化 v300 */
.life-wide-btn{background:#f2f2f3!important;color:#666!important;border:1px dashed #ccc!important;margin-top:14px!important;margin-bottom:18px!important}

/* 活动空间房间图打磨 v300 */
.life-map-pager{display:flex;align-items:center;justify-content:space-between;padding:6px 2px 0;color:#aaa;font-size:10px}.life-map-pager em{display:flex;gap:4px;font-style:normal}.life-map-pager i{width:5px;height:5px;border-radius:50%;background:#ddd;display:block}.life-map-pager i.on{background:#555}.life-scene-row button[data-a="up"],.life-scene-row button[data-a="down"]{background:#f7f7f8;color:#888}.life-scene-row>div:last-child>div{display:flex;gap:6px;flex-wrap:wrap}.life-scene-row button{padding:7px 9px}

/* 活动空间房间图交互简化 v301 */
.life-room-tabs{scrollbar-width:none;-ms-overflow-style:none}.life-room-tabs::-webkit-scrollbar{display:none}.life-map-pager{display:none!important}.life-scene-thumb{cursor:pointer}.life-scene-thumb:active{opacity:.72}

/* 活动空间图编辑区优化 v302 */
.life-map-sticky{position:sticky;top:0;z-index:3;background:#fff;padding-bottom:8px;border-bottom:1px solid #f1f1f1;margin-bottom:10px}.life-edit-map{min-height:150px;max-height:36vh}.life-edit-map img{max-height:36vh}.life-scene-row.main{background:#fff}.life-scene-row.main .life-scene-thumb{border:1px solid #eee}.life-scene-row.main button[data-a="open"]{background:#333;color:#fff;border-color:#333}.life-scene-row.main button[data-a="img"]{background:#f2f2f3;color:#666}

/* 活动空间编辑区还原非固定 + 新增点位置顶 v303 */
.life-map-sticky{position:static!important;top:auto!important;z-index:auto!important;border-bottom:none!important;margin-bottom:10px!important;padding-bottom:0!important}.life-edit-map{min-height:170px!important;max-height:none!important}.life-edit-map img{max-height:280px!important}

/* 活动空间角色图标独立页 v304 */
.life-icon-page{position:absolute;inset:52px 0 0;background:#fff;z-index:7;display:flex;flex-direction:column}.life-icon-box{padding:14px;overflow-y:auto;touch-action:pan-y;-webkit-overflow-scrolling:touch}.life-icon-head{height:42px;display:flex;align-items:center;justify-content:center;position:relative;margin-bottom:18px;color:#222;font-size:15px;font-weight:650}.life-icon-head button{position:absolute;left:0;width:38px;height:38px;border:none;border-radius:50%;background:#f3f3f4;color:#555;font-size:24px}.life-icon-preview{height:210px;border:1px dashed #ddd;border-radius:18px;background:#fafafa;display:flex;align-items:center;justify-content:center;margin-bottom:16px;color:#aaa;font-size:12px}.life-icon-preview img{max-width:78%;max-height:78%;object-fit:contain}.life-icon-actions{display:grid;gap:10px}.life-icon-actions button{height:42px;border:none;border-radius:13px;background:#f2f2f3;color:#444;font-size:13px}.life-icon-actions button:first-child{background:#333;color:#fff}

/* 活动空间角色/你的图标多状态 v300 */
.life-user-pin{position:absolute;transform:translate(-50%,-50%);width:30px;height:30px;z-index:4}.life-user-pin img{width:30px;height:30px;object-fit:contain;filter:drop-shadow(0 2px 5px rgba(0,0,0,.18))}.life-user-pin::after{display:none}.life-user-pin[data-mode="follow"]::after{background:#333}.life-avatar-pin.edit,.life-user-pin.edit{pointer-events:auto}.life-icon-current{font-size:12px;color:#777;text-align:center;margin:-8px 0 14px;line-height:1.6}.life-icon-section{border-top:1px solid #f0f0f0;padding:13px 0}.life-icon-section-title{font-size:13px;font-weight:650;color:#333;margin-bottom:10px}.life-icon-default,.life-icon-user{background:#fafafa;border:1px solid #eee;border-radius:14px;padding:10px}.life-icon-thumb{width:46px;height:46px;border-radius:12px;background:#f1f1f2;border:1px solid #e8e8e8;display:flex;align-items:center;justify-content:center;color:#aaa;font-size:11px;overflow:hidden;flex-shrink:0}.life-icon-thumb.big{width:58px;height:58px}.life-icon-thumb img{width:100%;height:100%;object-fit:contain}.life-icon-actions.inline{display:grid;grid-template-columns:1fr 1fr 1fr;gap:6px;margin-top:10px}.life-icon-actions.grid{display:grid;grid-template-columns:1fr 1fr;gap:6px;margin-top:10px}.life-icon-actions.inline button,.life-icon-actions.grid button,.life-icon-state-actions button,.life-icon-add{height:34px;border:none;border-radius:10px;background:#f0f0f1;color:#444;font-size:12px}.life-icon-actions.inline button:first-child,.life-icon-add{background:#333;color:#fff}.life-icon-states{display:grid;gap:8px}.life-icon-state{border:1px solid #eee;background:#fff;border-radius:14px;padding:10px}.life-icon-state-main{display:flex;align-items:center;justify-content:space-between;gap:10px}.life-icon-state-name{min-width:0}.life-icon-state-name b{display:block;font-size:13px;color:#222;font-weight:650}.life-icon-state-name em{display:inline-block;margin-top:4px;font-style:normal;font-size:10px;color:#999;border:1px solid #eee;border-radius:999px;padding:2px 6px}.life-icon-state-actions{display:grid;grid-template-columns:repeat(4,1fr);gap:5px;margin-top:8px}.life-icon-state-actions button[data-a="delstate"]{color:#d33}.life-icon-kw{font-size:11px;color:#888;line-height:1.5;margin-top:8px}.life-icon-add{width:100%;margin-top:10px}.life-icon-user-meta{font-size:11px;color:#888;margin-top:8px;line-height:1.5}

/* 活动空间你的图标交互 v301 */
@keyframes lifeUserSway{0%,100%{transform:translate(-50%,-50%) rotate(-1.2deg)}50%{transform:translate(-50%,-50%) rotate(1.2deg)}}
.life-user-pin{animation:lifeUserSway 3.8s ease-in-out infinite!important;touch-action:none}.life-user-pin::after{display:none!important;content:none!important}.life-user-menu-mask{position:fixed;inset:0;background:rgba(0,0,0,.25);z-index:99999;display:flex;align-items:flex-end;justify-content:center}.life-user-menu{width:100%;background:#fff;border-radius:18px 18px 0 0;padding:14px 14px max(16px,env(safe-area-inset-bottom));box-shadow:0 -8px 28px rgba(0,0,0,.12);display:grid;gap:8px}.life-user-menu-title{font-size:14px;font-weight:650;color:#222;text-align:center;padding:4px 0 8px}.life-user-menu-sub{font-size:12px;color:#888;margin:6px 2px 0}.life-user-menu button{height:40px;border:none;border-radius:12px;background:#f2f2f3;color:#333;font-size:13px}.life-user-menu button[data-a="follow"],.life-user-menu button[data-a="move"]{background:#333;color:#fff}.life-user-menu button[data-a="leave"]{color:#d33}.life-user-menu button.muted{color:#888;background:#fafafa}
.life-space-head-actions{display:flex;gap:8px;align-items:center}.life-space-head-actions button{border:0;background:#f2f2f3;color:#333;border-radius:12px;padding:8px 12px;font-size:13px}.life-icon-save{width:100%;height:48px;border:none;border-radius:14px;background:#333;color:#fff;font-size:15px;font-weight:650;margin-top:14px}


/* 活动空间图标说明与你的图标晃动 v304 */
@keyframes lifeUserImgSway{0%,100%{transform:rotate(-2.6deg) translateX(-1px)}50%{transform:rotate(2.6deg) translateX(1px)}}
.life-user-pin{animation:none!important;touch-action:none}.life-user-pin img{animation:lifeUserImgSway 2.8s ease-in-out infinite;transform-origin:50% 86%}.life-user-pin.edit img{animation:lifeUserImgSway 2.8s ease-in-out infinite}.life-icon-desc{width:100%;min-height:54px;max-height:120px;box-sizing:border-box;margin:9px 0 0;padding:9px 10px;border:1px solid #e7e7e7;border-radius:12px;background:#fff;color:#444;font-size:12px;line-height:1.55;resize:none;outline:none;overflow-y:auto;-webkit-overflow-scrolling:touch;touch-action:pan-y}.life-icon-desc:focus{border-color:#bbb;background:#fff}

/* 活动空间物品固定/携带最终样式 v309 */
.life-item-row.locked{background:#f7f7f8!important;border-style:dashed!important;opacity:.92}
.life-item-row.locked .life-item-from{color:#aaa!important}
.life-item-row.locked .life-item-name::after{content:'  固定';font-size:10px;color:#999;font-weight:400}
.life-item-row.carried:not(.locked) .life-item-name::after{content:'  携带中';font-size:10px;color:#777;font-weight:400}
.life-item-pin.locked{opacity:.82;filter:grayscale(.15);cursor:not-allowed!important}
.life-item-desc{margin:6px 0 0 0!important;padding-left:0!important}
.life-item-actions{margin:8px 0 0 0!important;display:flex!important;flex-wrap:wrap!important;gap:5px!important}
.life-item-actions button{height:30px!important;min-width:50px!important;padding:0 9px!important;font-size:11px!important;flex:0 0 auto!important}
.life-item-actions button[data-a="transparentitem"]{min-width:68px!important}
.life-item-actions .life-lock-btn{width:34px!important;min-width:34px!important;padding:0!important;border-radius:10px!important;line-height:1!important;display:inline-flex!important;align-items:center!important;justify-content:center!important;touch-action:manipulation!important}
.life-item-actions .life-lock-btn svg{width:16px;height:16px;display:block;pointer-events:none!important}
.life-item-actions .life-lock-btn svg *{pointer-events:none!important}
.life-item-row:not(.locked) .life-lock-btn{background:#fff!important;color:#aaa!important;border-color:#e5e5e5!important}
.life-item-row.locked .life-lock-btn{background:#333!important;color:#fff!important;border-color:#333!important}

/* 大世界子页/世界线强制全屏，防止聊天/论坛悬浮窗把父级顶栏重新显示出来 */
body.world-story-chrome-lock #app-bar{display:none!important}
body.world-story-chrome-lock #app-body{top:0!important}

/* 聊天APP父级顶栏硬锁，防跨软件刷新露出双顶栏 */
body.chat-chrome-lock #app-bar{display:none!important}
body.chat-chrome-lock #app-body{top:0!important}


/* 活动空间地图缩放查看 v311 */
.life-map-panzoom{touch-action:pan-y;position:relative;overflow:hidden}
.life-map-stage{position:relative;width:100%;min-height:inherit;display:flex;align-items:center;justify-content:center;transform-origin:center center;will-change:transform;transition:transform .08s linear}
.life-map-stage .life-map-img{pointer-events:none;user-select:none;-webkit-user-drag:none}
.life-map-panzoom.is-zoomed{touch-action:none}
.life-map-panzoom.is-zoomed .life-map-stage{transition:none}
.life-map-reset{position:absolute;right:8px;top:8px;width:30px;height:30px;border:none;border-radius:50%;background:rgba(255,255,255,.82);color:#555;font-size:17px;line-height:1;display:none;align-items:center;justify-content:center;box-shadow:0 2px 8px rgba(0,0,0,.08);z-index:80;backdrop-filter:blur(8px)}
.life-map-reset:active{background:#fff;transform:scale(.94)}
.life-map-panzoom.is-zoomed .life-user-pin,.life-map-panzoom.is-zoomed .life-item-pin{pointer-events:none}
.life-map-panzoom.is-zoomed .life-avatar-pin{pointer-events:auto}

/* 活动空间面对面互动 v337 */
.life-space-foot .life-space-dialog-link{border:0;background:transparent;color:#777;font-size:11px;padding:0;margin:0;line-height:1.4}
.life-space-foot .life-space-dialog-link:active{color:#222}
.life-space-bubble{position:absolute;transform:translate(-50%,-100%);max-width:58%;padding:7px 10px;border-radius:13px;background:rgba(255,255,255,.92);border:1px solid rgba(0,0,0,.06);box-shadow:0 4px 14px rgba(0,0,0,.08);font-size:12px;line-height:1.45;color:#333;z-index:75;pointer-events:none;backdrop-filter:blur(8px);animation:lifeSpaceBubbleIn .16s ease-out}
.life-space-bubble:after{content:"";position:absolute;left:50%;bottom:-5px;margin-left:-5px;width:10px;height:10px;background:rgba(255,255,255,.92);border-right:1px solid rgba(0,0,0,.06);border-bottom:1px solid rgba(0,0,0,.06);transform:rotate(45deg)}
@keyframes lifeSpaceBubbleIn{from{opacity:0;transform:translate(-50%,-92%) scale(.96)}to{opacity:1;transform:translate(-50%,-100%) scale(1)}}
.life-space-dialog-bar{position:fixed;left:10px;right:10px;bottom:max(10px,env(safe-area-inset-bottom));z-index:9999;display:flex;align-items:flex-end;gap:6px;padding:8px;background:rgba(255,255,255,.94);border:1px solid rgba(0,0,0,.06);border-radius:16px;box-shadow:0 8px 28px rgba(0,0,0,.12);backdrop-filter:blur(14px)}
.life-space-dialog-input{flex:1;min-height:34px;max-height:86px;border:1px solid #e5e5e5;border-radius:12px;background:#fafafa;color:#333;font-size:13px;line-height:1.45;padding:8px 10px;resize:none;outline:none;box-sizing:border-box;overflow-y:auto;-webkit-overflow-scrolling:touch;touch-action:pan-y}
.life-space-dialog-send,.life-space-dialog-close,.life-space-dialog-history{border:0;border-radius:12px;height:34px;padding:0 10px;font-size:12px;background:#333;color:#fff;flex-shrink:0}
.life-space-dialog-close{width:34px;padding:0;background:#f2f2f3;color:#555;font-size:18px;line-height:1}
.life-space-dialog-history{background:#f2f2f3;color:#444}
.life-space-history-mask{position:fixed;inset:0;background:rgba(0,0,0,.24);z-index:10000;display:flex;align-items:flex-end;justify-content:center}
.life-space-history-box{width:100%;max-height:72vh;background:#fff;border-radius:18px 18px 0 0;box-shadow:0 -10px 30px rgba(0,0,0,.14);display:flex;flex-direction:column;overflow:hidden}
.life-space-history-head{height:46px;display:flex;align-items:center;justify-content:space-between;padding:0 14px;border-bottom:1px solid #eee;font-size:14px;font-weight:650;color:#222}
.life-space-history-head button{border:0;background:#f2f2f3;border-radius:10px;width:32px;height:32px;color:#555;font-size:18px}
.life-space-history-body{padding:10px 12px max(18px,env(safe-area-inset-bottom));overflow-y:auto;-webkit-overflow-scrolling:touch;touch-action:pan-y}
.life-space-history-row{padding:10px 0;border-bottom:1px solid #f2f2f2;font-size:12px;line-height:1.55;color:#333}
.life-space-history-row:last-child{border-bottom:0}
.life-space-history-meta{font-size:10px;color:#999;margin-bottom:5px}
.life-space-history-user{color:#555;margin-bottom:4px}
.life-space-history-ai{color:#222}
.life-space-history-empty{padding:32px 0;text-align:center;color:#aaa;font-size:12px}

/* 活动空间对话视觉修正 v338 */
.life-space-foot .life-space-dialog-link{background:#f4f4f5!important;border-radius:8px!important;padding:3px 8px!important;color:#666!important;min-height:20px}
.life-space-bubble{width:max-content!important;min-width:96px;max-width:min(250px,68vw)!important;white-space:normal;word-break:normal;overflow-wrap:break-word;text-align:left;line-height:1.45}
.life-space-bubble.me{background:rgba(43,43,45,.9);color:#fff;border-color:rgba(0,0,0,.08)}
.life-space-bubble.me:after{background:rgba(43,43,45,.9);border-color:rgba(0,0,0,.08)}
.life-space-dialog-bar{left:12px!important;right:12px!important;gap:8px!important;padding:8px 10px!important;border-radius:18px!important;align-items:center!important}
.life-space-dialog-input{min-height:38px!important;border-radius:14px!important;font-size:14px!important;padding:9px 11px!important;background:#fff!important}
.life-space-dialog-send{height:38px!important;min-width:54px!important;border-radius:14px!important;font-size:14px!important;padding:0 13px!important}
.life-space-dialog-close{height:38px!important;width:38px!important;border-radius:14px!important}
.life-space-history-box{max-height:76vh!important;background:#f8f8f9!important}
.life-space-history-body{display:flex;flex-direction:column;gap:7px;padding:12px 12px max(18px,env(safe-area-inset-bottom))!important}
.life-space-chat-time{align-self:center;font-size:10px;color:#aaa;margin:7px 0 2px;text-align:center}
.life-space-chat-msg{display:flex;flex-direction:column;max-width:78%}
.life-space-chat-msg.me{align-self:flex-end;align-items:flex-end}.life-space-chat-msg.them{align-self:flex-start;align-items:flex-start}
.life-space-chat-name{font-size:10px;color:#999;margin:0 0 3px 4px}
.life-space-chat-bubble{padding:8px 10px;border-radius:13px;font-size:13px;line-height:1.5;box-shadow:0 1px 4px rgba(0,0,0,.025);word-break:break-word;white-space:pre-wrap}
.life-space-chat-msg.me .life-space-chat-bubble{background:#555;color:#fff;border-bottom-right-radius:5px}.life-space-chat-msg.them .life-space-chat-bubble{background:#fff;color:#333;border:1px solid #eee;border-bottom-left-radius:5px}
.life-space-history-row,.life-space-history-meta,.life-space-history-user,.life-space-history-ai{display:none!important}

/* 活动空间对话气泡边缘避让 v339 */
.life-space-bubble.below{transform:translate(-50%,8px)!important}
.life-space-bubble.below:after{top:-5px;bottom:auto;transform:rotate(225deg)}

/* 活动空间对话体验修复 v340 */
.life-space-bubble{--bubble-arrow-x:50%;}
.life-space-bubble:after{left:var(--bubble-arrow-x)!important;margin-left:-5px!important;}
.life-space-bubble.me{z-index:74;}
.life-space-bubble.them{z-index:78;}
.life-space-dialog-input{border-right:0!important;box-shadow:none!important;scrollbar-width:none;}
.life-space-dialog-input::-webkit-scrollbar{display:none;width:0;height:0;}
.life-space-dialog-send.loading{min-width:44px!important;width:44px!important;padding:0!important;display:inline-flex;align-items:center;justify-content:center;}
.life-btn-spinner,.life-space-thinking span{display:block;width:16px;height:16px;border:2px solid rgba(255,255,255,.45);border-top-color:#fff;border-radius:50%;animation:lifeSpin .75s linear infinite;}
.life-space-thinking{position:absolute;transform:translate(-50%,-120%);z-index:90;width:30px;height:30px;border-radius:999px;background:rgba(255,255,255,.86);display:flex;align-items:center;justify-content:center;box-shadow:0 4px 14px rgba(0,0,0,.12);backdrop-filter:blur(8px);pointer-events:none;}
.life-space-thinking span{border-color:rgba(0,0,0,.16);border-top-color:#333;}
@keyframes lifeSpin{to{transform:rotate(360deg)}}

/* 活动空间输入时隐藏手动生成按钮 v341 */
.life-gen-fab.hide-for-space-dialog{display:none!important}

/* 活动空间用户离屏气泡 v344 */
.life-space-bubble.me.offmap{left:auto!important;right:10px!important;top:auto!important;bottom:12px!important;transform:none!important;max-width:min(250px,70vw)!important}
.life-space-bubble.me.offmap:after{display:none!important}

/* 活动空间角色离屏气泡 v345 */
.life-space-bubble.them.offmap{left:10px!important;right:auto!important;top:12px!important;bottom:auto!important;transform:none!important;max-width:min(250px,70vw)!important}
.life-space-bubble.them.offmap:after{display:none!important}

/* space dialog voice toggle v319 */
.life-space-history-actions{display:flex;align-items:center;gap:8px}
.life-space-voice-toggle{border:0;background:#f2f2f3;border-radius:10px;width:32px;height:32px;color:#555;display:inline-flex;align-items:center;justify-content:center;padding:0;flex:0 0 32px}
.life-space-voice-toggle svg{width:17px;height:17px;display:block}
.life-space-voice-toggle.on{background:#333;color:#fff}
.life-space-voice-toggle:active{transform:scale(.96)}

/* life map zoom bubble + hi-res avatar icon v320 */
.life-map-panzoom.is-zoomed .life-space-bubble:not(.offmap){transform:none!important;width:auto!important;min-width:0!important;max-width:calc(100% - 24px)!important;left:12px!important;right:12px!important;top:12px!important;bottom:auto!important;z-index:120!important}
.life-map-panzoom.is-zoomed .life-space-bubble:not(.offmap):after{display:none!important}
.life-map-panzoom.is-zoomed .life-space-bubble.me:not(.offmap){top:auto!important;bottom:12px!important;left:12px!important;right:12px!important}
.life-avatar-pin img,.life-user-pin img{image-rendering:auto;backface-visibility:hidden;-webkit-backface-visibility:hidden}

/* space dialog bilingual + icon page isolation v321 */
.life-icon-page{z-index:160!important;overflow:hidden!important;isolation:isolate}
.life-icon-page .life-icon-box{position:relative;z-index:2;background:#fff}
.life-space-bi{display:flex;flex-direction:column;gap:5px;line-height:1.45}
.life-space-bi-orig{color:inherit;word-break:break-word}
.life-space-bi-trans{border-top:1px solid rgba(0,0,0,.08);padding-top:5px;color:rgba(0,0,0,.58);word-break:break-word}
.life-space-bubble.me .life-space-bi-trans{border-top-color:rgba(255,255,255,.18);color:rgba(255,255,255,.72)}

.life-space-bi-gap{height:8px;border-top:1px solid rgba(0,0,0,.06);margin:2px 0}
.life-space-bubble.me .life-space-bi-gap{border-top-color:rgba(255,255,255,.16)}

/* 空间对话历史管理 v325 */
.life-space-chat-pair{position:relative;display:flex;flex-direction:column;gap:3px;padding:2px 0;border-radius:12px}
.life-space-chat-pair.selected{background:rgba(0,0,0,.035)}
.life-space-sel{position:absolute;left:2px;top:18px;width:18px;height:18px;border-radius:50%;border:1px solid #ddd;background:#fff;z-index:3;box-sizing:border-box}
.life-space-sel.on{background:#333;border-color:#333}
.life-space-sel.on:after{content:'';position:absolute;left:5px;top:2px;width:5px;height:9px;border:solid #fff;border-width:0 2px 2px 0;transform:rotate(45deg)}
.life-space-chat-pair .life-space-bi{gap:4px}
.life-space-chat-pair .life-space-bi-trans{font-size:.94em}
.life-space-manage-bar{min-height:48px;height:auto;box-sizing:border-box;display:grid;grid-template-columns:1fr 1fr 1fr;gap:0;padding:8px 0 max(8px,env(safe-area-inset-bottom));border-top:1px solid #eee;background:#fff}
.life-space-manage-bar button{min-height:40px;padding:0;border:0;border-radius:0;background:transparent;color:#333;font-size:14px;line-height:1.2}
.life-space-manage-bar button[data-a="del"]{background:transparent;color:#e74c3c}
.life-space-history-mask:not(.is-manage) .life-space-manage-bar{display:none}
.life-space-history-mask:not(.is-manage) .life-space-sel{display:none}

/* activity space editor reorg + item notes v328 */
.life-current-map-actions{display:flex;gap:8px;margin:8px 0 10px}.life-current-map-actions button{flex:1;border:none;border-radius:11px;background:#f2f2f3;color:#444;font-size:12px;padding:9px 8px}.life-sub-page{position:absolute;inset:52px 0 0;background:#fff;z-index:150;display:flex;flex-direction:column;overflow:hidden}.life-sub-head{height:48px;display:flex;align-items:center;justify-content:center;position:relative;border-bottom:1px solid #f0f0f0;font-size:15px;font-weight:650;color:#222;flex-shrink:0}.life-sub-head button{position:absolute;left:12px;width:36px;height:36px;border:none;border-radius:50%;background:#f3f3f4;color:#555;font-size:22px}.life-sub-body{flex:1;overflow-y:auto;padding:14px;touch-action:pan-y;-webkit-overflow-scrolling:touch}.life-sub-body label{display:block;font-size:12px;color:#888;margin:0 0 7px 2px}.life-sub-body textarea{width:100%;box-sizing:border-box;border:1px solid #e8e8e8;background:#fafafa;border-radius:13px;padding:10px 11px;margin-bottom:12px;font-size:13px;line-height:1.55;min-height:116px;resize:none;outline:none;touch-action:pan-y}.life-sub-foot{padding:10px 14px calc(14px + env(safe-area-inset-bottom));border-top:1px solid #eee;flex-shrink:0}.life-sub-foot button{width:100%;height:44px;border:none;border-radius:14px;background:#333;color:#fff;font-size:15px;font-weight:650}.life-room-manage-page .life-scene-row{margin-bottom:10px}.life-room-manage-page:focus-within .life-sub-foot{opacity:0;pointer-events:none;height:0;padding:0;border:none;overflow:hidden;transition:opacity .15s}.life-item-note-mask{position:fixed;inset:0;background:rgba(0,0,0,.34);z-index:100002;display:flex;align-items:flex-end}.life-item-note-box{width:100%;max-height:82vh;background:#fff;border-radius:20px 20px 0 0;display:flex;flex-direction:column;overflow:hidden}.life-item-note-head{height:50px;display:flex;align-items:center;justify-content:center;position:relative;border-bottom:1px solid #eee;font-size:15px;font-weight:650;color:#222}.life-item-note-head button{position:absolute;right:14px;border:none;background:transparent;font-size:24px;color:#888}.life-item-note-body{padding:12px 14px;overflow-y:auto;touch-action:pan-y;-webkit-overflow-scrolling:touch}.life-item-note-icon{width:56px;height:56px;margin:0 auto 10px;border-radius:14px;background:#f6f6f7;display:flex;align-items:center;justify-content:center;overflow:hidden}.life-item-note-icon img{max-width:100%;max-height:100%;object-fit:contain}.life-item-note-list{max-height:44vh;overflow-y:auto;display:flex;flex-direction:column;gap:8px;margin-bottom:10px;touch-action:pan-y}.life-item-note-row{background:#fafafa;border:1px solid #eee;border-radius:12px;padding:9px 10px 5px}.life-item-note-row div{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:2px}.life-item-note-row b{font-size:12px;color:#333}.life-item-note-row em{font-style:normal;font-size:10px;color:#aaa}.life-item-note-row p{font-size:13px;color:#555;line-height:1.35;margin:0 0 1px;white-space:pre-wrap;word-break:break-word}.life-item-note-empty{text-align:center;color:#bbb;font-size:13px;padding:24px 0}.life-item-note-body textarea{width:100%;box-sizing:border-box;border:1px solid #e8e8e8;background:#fafafa;border-radius:13px;padding:10px 11px;font-size:13px;line-height:1.5;min-height:78px;resize:none;outline:none;touch-action:pan-y}.life-item-note-foot{padding:10px 14px calc(14px + env(safe-area-inset-bottom));border-top:1px solid #eee}.life-item-note-foot button{width:100%;height:42px;border:none;border-radius:14px;background:#333;color:#fff;font-size:14px;font-weight:650}


/* activity space icon preview and size v329 */
.life-icon-preview.map{position:relative;height:230px;background-size:contain;background-repeat:no-repeat;background-position:center;background-color:#f7f7f8;overflow:hidden}
.life-icon-preview.map>span{position:absolute;color:#bbb;font-size:12px}
.life-icon-preview-role,.life-icon-preview-user{position:absolute;display:flex;align-items:center;justify-content:center;transform:translate(-50%,-50%);filter:drop-shadow(0 2px 6px rgba(0,0,0,.22))}
.life-icon-preview-role{left:50%;top:52%;z-index:2}.life-icon-preview-user{left:66%;top:66%;z-index:3}
.life-icon-preview-role img,.life-icon-preview-user img{width:100%;height:100%;object-fit:contain}
.life-icon-preview-role.empty{border-radius:50%;background:#333;opacity:.18}
.life-icon-size-row{display:grid;grid-template-columns:auto 1fr 42px;align-items:center;gap:8px;margin:10px 0 2px;font-size:12px;color:#777}
.life-icon-size-row input{width:100%;accent-color:#333}.life-icon-size-row em{font-style:normal;text-align:right;color:#999}
.life-avatar-pin,.life-avatar-pin img{width:var(--life-role-icon-size,34px)!important;height:var(--life-role-icon-size,34px)!important}
.life-avatar-pin img,.life-icon-preview-role img{transform:scale(var(--life-icon-fit,1));transform-origin:50% 50%}
.life-avatar-pin span{width:calc(var(--life-role-icon-size,34px) * .53)!important;height:calc(var(--life-role-icon-size,34px) * .53)!important;margin:calc(var(--life-role-icon-size,34px) * .235)!important}
.life-user-pin,.life-user-pin img{width:var(--life-user-icon-size,30px)!important;height:var(--life-user-icon-size,30px)!important}

/* 活动空间图标顶部小滑杆 v330 */
.life-icon-size-mini{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:9px 0 12px}.life-icon-size-mini label{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:6px;background:#fafafa;border:1px solid #eee;border-radius:12px;padding:7px 8px;font-size:12px;color:#555}.life-icon-size-mini input{width:100%;accent-color:#333}.life-icon-size-mini em{font-style:normal;color:#999;font-size:11px;min-width:34px;text-align:right}

/* 活动空间图标固定保存 v331 */
.life-icon-page{overflow:hidden!important}
.life-icon-page .life-icon-box{flex:1;min-height:0;padding-bottom:16px!important}
.life-icon-fixed-save{position:sticky;bottom:0;z-index:8;background:rgba(255,255,255,.96);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border-top:1px solid #f0f0f0;padding:10px 14px max(10px,env(safe-area-inset-bottom));box-sizing:border-box}
.life-icon-fixed-save .life-icon-save{margin:0!important}

/* 新的朋友页面父顶栏硬锁 v332 */
body.new-friend-chrome-lock #app-bar{display:none!important}
body.new-friend-chrome-lock #app-body{top:0!important}

/* 内置工具语言选择器与稳定绘制 */
#toolsPg{overflow-y:auto;overflow-x:hidden;overflow-anchor:none;transform:none!important;transition:none!important}
#toolsPg .tools-wrap{overflow:visible;-webkit-overflow-scrolling:auto}
#toolsPg .tool-group,#toolsPg .tool-group-body,#toolsPg .tool-item,#toolsPg .tool-expand{overflow-anchor:none}
.tool-language-select{min-width:92px;height:38px;border:1px solid var(--t-border);border-radius:10px;background:var(--t-card);color:#333;padding:0 10px 0 13px;display:inline-flex;align-items:center;justify-content:space-between;gap:8px;font:inherit;font-size:14px;flex-shrink:0}
.tool-language-select svg{width:16px;height:16px;color:#777;flex:0 0 16px}
.tool-lang-sheet-bg{position:fixed;inset:0;z-index:100002;background:rgba(0,0,0,.36);display:flex;align-items:flex-end;touch-action:none}
.tool-lang-sheet{width:100%;max-height:74vh;background:var(--t-card);border-radius:18px 18px 0 0;display:flex;flex-direction:column;overflow:hidden;padding-bottom:env(safe-area-inset-bottom)}
.tool-lang-sheet-head{height:52px;border-bottom:1px solid var(--t-border);display:flex;align-items:center;justify-content:center;position:relative;flex:0 0 52px;font-size:15px;font-weight:650;color:#222}
.tool-lang-sheet-close{position:absolute;right:13px;top:8px;width:36px;height:36px;border:0;border-radius:50%;background:#f2f2f3;color:#666;font-size:24px;line-height:1;padding:0;display:flex;align-items:center;justify-content:center}
.tool-lang-sheet-list{overflow-y:auto;-webkit-overflow-scrolling:touch;touch-action:pan-y;padding:4px 0}
.tool-lang-option{width:100%;height:52px;border:0;border-bottom:1px solid #f0f0f1;background:var(--t-card);padding:0 20px;display:flex;align-items:center;justify-content:space-between;color:#333;font:inherit;font-size:15px;text-align:left}
.tool-lang-option:last-child{border-bottom:0}
.tool-lang-option:active{background:var(--t-hover)}
.tool-lang-option i{width:20px;height:20px;border:2px solid #aaa;border-radius:50%;box-sizing:border-box;flex:0 0 20px}
.tool-lang-option.selected i{border-color:#333;box-shadow:inset 0 0 0 4px #fff;background:#333}

/* 工具主卡二级折叠 */
.tool-item.tool-has-expand{cursor:pointer}
.tool-detail-chevron{width:24px;height:24px;display:flex;align-items:center;justify-content:center;color:#999;flex:0 0 24px;border-radius:50%;transition:transform .18s,color .18s,background .18s}
.tool-detail-chevron svg{width:16px;height:16px;display:block}
.tool-item.tool-detail-open .tool-detail-chevron{transform:rotate(180deg);color:#555;background:#f0f0f1}

.life-space-foot-left{display:flex;gap:8px;align-items:center}
.life-space-fav-link{border:0;background:#f4f4f5;border-radius:8px;padding:3px 8px;color:#666;font-size:11px;min-height:20px}
.life-space-fav-link:active{color:#222}
.life-fav-mask{position:fixed;inset:0;z-index:9998;background:rgba(0,0,0,.32);display:flex;align-items:flex-end;justify-content:center}
.life-fav-box{width:100%;max-width:460px;max-height:82vh;background:#fff;border-radius:18px 18px 0 0;display:flex;flex-direction:column;overflow:hidden}
.life-fav-head{display:flex;align-items:center;justify-content:space-between;padding:14px 16px;border-bottom:1px solid #f2f2f2;font-size:14px;font-weight:600;color:#222}
.life-fav-close{border:none;background:transparent;font-size:22px;color:#999;padding:0 4px;line-height:1}
.life-fav-body{overflow-y:auto;padding:12px 14px;-webkit-overflow-scrolling:touch;flex:1;min-height:0;overscroll-behavior:contain}
.life-fav-empty{text-align:center;padding:36px 10px;color:#aaa;font-size:12px}
.life-fav-card{background:var(--t-card);border:1px solid var(--t-border);border-radius:14px;padding:12px 13px;margin-bottom:10px}
.life-fav-card-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:6px}
.life-fav-card-date{font-size:11px;color:#999}
.life-fav-card-del{border:none;background:transparent;font-size:11px;color:#c44;padding:0}
.life-fav-card-title{font-size:14px;font-weight:520;color:#222;line-height:1.45;margin-bottom:4px}
.life-fav-card-place{font-size:11px;color:#aaa;margin-bottom:6px}
.life-fav-card-motive{font-size:12px;color:#666;line-height:1.55;border-top:1px solid #f1f1f1;padding-top:8px;margin-top:6px}
.life-fav-card-detail{font-size:12px;color:#888;line-height:1.55;border-top:1px solid #f3f3f3;padding-top:8px;margin-top:6px}
.life-fav-card-mood{display:inline-block;font-size:10px;color:#888;background:#fafafa;border:1px solid #eee;border-radius:999px;padding:2px 8px;margin-top:8px}
.life-note-read{font-style:normal;font-size:10px;color:#aaa;margin-left:6px;border:1px solid #ddd;border-radius:6px;padding:1px 4px;letter-spacing:0}

.life-item-note-row .life-note-meta{display:block;margin-top:2px;padding-top:0;margin-bottom:0;text-align:right}.life-item-note-row .life-note-meta em{font-style:normal;font-size:10px;color:#bbb}
.life-space-more-btn{border:0;background:transparent;width:32px;height:32px;display:inline-flex;align-items:center;justify-content:center;padding:0;color:#555;flex:0 0 32px;position:relative}
.life-space-more-btn svg{display:block}
.life-space-more-btn:active{opacity:.6}
.life-space-history-actions{position:relative}
.life-space-more-menu{position:absolute;top:100%;right:0;background:#fff;border-radius:8px;box-shadow:0 2px 12px rgba(0,0,0,.15);min-width:120px;padding:4px 0;z-index:100}
.life-space-menu-item{padding:10px 16px;font-size:13px;color:#333;white-space:nowrap}
.life-space-menu-item:active{background:#f5f5f5}
._spSumMgr-box{background:#f7f7f7;width:100%;height:100%;display:flex;flex-direction:column;overflow:hidden}
._spSumMgr-head{height:50px;background:#fff;display:flex;align-items:center;gap:10px;padding:0 14px;border-bottom:1px solid #e5e5e5;flex:0 0 50px;box-sizing:border-box}
._spSumMgr-back{border:0;background:transparent;font-size:22px;color:#333;padding:0 6px;line-height:1}
._spSumMgr-head span{font-size:15px;font-weight:600;color:#333}
._spSumMgr-body{flex:1;overflow-y:auto;padding:12px 12px 76px;-webkit-overflow-scrolling:touch;touch-action:pan-y;box-sizing:border-box}
._spSumMgr-top,._spSumMgr-card{background:var(--t-card,#fff);border:1px solid var(--t-border,#e5e5e5);border-radius:8px}
._spSumMgr-top{padding:13px;margin-bottom:10px}
._spSumMgr-info{font-size:13px;color:#555;margin:0}
._spSumMgr-cfg{display:block;margin-top:10px;padding-top:10px;border-top:1px solid var(--t-border,#e5e5e5)}
._spSumMgr-cfg-head{display:flex;align-items:center;gap:10px;cursor:pointer}
._spSumMgr-cfg-head>div:first-child{flex:1;min-width:0}
._spSumMgr-cfg-title{font-size:14px;color:#222;font-weight:400;line-height:1.35}
._spSumMgr-cfg-desc{font-size:11px;color:#999;line-height:1.45;margin-top:3px}
._spSumMgr-toggle{width:44px;height:26px;flex:0 0 44px;border-radius:14px;background:#ddd;position:relative;cursor:pointer}
._spSumMgr-toggle.on{background:#333}
._spSumMgr-toggle-dot{position:absolute;width:22px;height:22px;left:2px;top:2px;border-radius:50%;background:#fff;transition:left .16s}
._spSumMgr-toggle.on ._spSumMgr-toggle-dot{left:20px}
._spSumMgr-cfg-detail{display:grid;grid-template-columns:1fr 1fr;align-items:center;gap:12px;margin-top:9px;padding-top:9px;border-top:1px solid var(--t-border,#e5e5e5)}
._spSumMgr-cfg-detail input{width:100%;height:34px;border:1px solid var(--t-border,#e5e5e5);border-radius:7px;background:var(--t-input,#fafafa);text-align:center;font-size:13px;box-sizing:border-box;padding:0}
._spSumMgr-cfg-detail button{width:100%;height:34px;padding:0 11px;border:0;border-radius:7px;background:#333;color:#fff;font-size:12px;white-space:nowrap}
._spSumMgr-card.open ._spSumMgr-text{display:block;-webkit-line-clamp:unset;max-height:none;overflow:visible}
._spSumMgr-card{display:flex;gap:9px;padding:12px;margin-bottom:9px;position:relative;box-sizing:border-box}
._spSumMgr-card.chosen{background:var(--t-card,#fff)}
._spSumMgr-check{width:20px;height:20px;flex:0 0 20px;border:1.5px solid #bbb;border-radius:50%;margin-top:1px;display:flex;align-items:center;justify-content:center;box-sizing:border-box}
._spSumMgr-check.on{background:#333;border-color:#333}
._spSumMgr-check.on::after{content:"";width:5px;height:9px;border:solid #fff;border-width:0 2px 2px 0;transform:rotate(45deg);margin-top:-2px}
._spSumMgr-main{min-width:0;flex:1}
._spSumMgr-card-head{display:flex;align-items:center;gap:5px;flex-wrap:wrap;margin-bottom:0}
._spSumMgr-tag{font-size:10px;padding:2px 6px;border-radius:7px;background:var(--t-hover,#f0f0f0);color:#777;line-height:1.4}
._spSumMgr-tag.active{background:#333;color:#fff}
._spSumMgr-time{margin-left:auto;font-size:11px;color:#aaa;line-height:1.4}
._spSumMgr-text{font-size:13px;line-height:1.6;color:#333;margin-top:8px;white-space:pre-wrap;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:5;overflow:hidden}
._spSumMgr-card.open ._spSumMgr-text{display:block;-webkit-line-clamp:unset}
._spSumMgr-actions{display:flex;gap:8px;margin-top:10px;justify-content:flex-end}
._spSumMgr-edit{display:block;height:32px;padding:0 12px;border:1px solid var(--t-border,#e5e5e5);border-radius:7px;background:var(--t-hover,#f5f5f5);color:#444;font-size:12px;white-space:nowrap}
._spSumMgr-empty{text-align:center;color:#bbb;font-size:13px;padding:64px 12px}
._spSumMgr-bar{position:absolute;left:0;right:0;bottom:0;height:58px;background:var(--t-card,#fff);border-top:1px solid var(--t-border,#e5e5e5);display:flex;z-index:2;padding:0}
._spSumMgr-bar button{flex:1;border:0;background:none;color:#333;font-size:13px;min-height:0}
._spSumMgr-bar ._spSumMgr-del{color:#e64340}
._spSumMgr-selected{flex:1;display:flex;align-items:center;justify-content:center;color:#333;font-size:13px}

._spHist-head{height:50px;background:#fff;display:flex;align-items:center;gap:10px;padding:0 14px;border-bottom:1px solid #e5e5e5;flex:0 0 50px;box-sizing:border-box}
._spHist-back{border:0;background:transparent;font-size:22px;color:#333;padding:0 6px;line-height:1}
._spHist-head span{font-size:15px;font-weight:600;color:#333}
._spHist-body{flex:1;overflow-y:auto;padding:12px;-webkit-overflow-scrolling:touch;touch-action:pan-y;box-sizing:border-box}
._spHist-count{font-size:13px;color:#555;margin-bottom:10px}
._spHist-empty{text-align:center;color:#bbb;font-size:13px;padding:64px 12px}
._spHist-card{background:#fff;border:1px solid #e5e5e5;border-radius:8px;padding:12px;margin-bottom:9px;box-sizing:border-box}
._spHist-cardTop{display:flex;align-items:center;justify-content:space-between;gap:10px}
._spHist-title{font-size:13px;color:#333;font-weight:600}
._spHist-sub{font-size:11px;color:#999;margin-top:3px}
._spHist-time{font-size:11px;color:#aaa;white-space:nowrap}
._spHist-detail{display:none;margin-top:10px;padding-top:10px;border-top:1px solid #eee}
._spHist-card[data-open="1"] ._spHist-detail{display:block}
._spHist-msg{margin-bottom:8px;display:flex;flex-direction:column}
._spHist-msg.me{align-items:flex-end}
._spHist-msg.them{align-items:flex-start}
._spHist-meta{font-size:10px;color:#aaa;margin-bottom:3px}
._spHist-bubble{max-width:82%;border-radius:10px;padding:8px 10px;font-size:13px;line-height:1.5;white-space:pre-wrap;box-sizing:border-box}
._spHist-msg.me ._spHist-bubble{background:#333;color:#fff;text-align:left}
._spHist-msg.them ._spHist-bubble{background:#f2f2f2;color:#333}

.life-space-history-box{min-height:34vh}
.life-space-history-empty{min-height:150px;display:flex;align-items:center;justify-content:center}
.life-space-more-menu{top:auto;bottom:calc(100% - 8px);max-height:220px;overflow-y:auto;-webkit-overflow-scrolling:touch}

/* Fix space dialog menu: keep it inside the sheet instead of floating upward. */
.life-space-more-menu{top:100%;bottom:auto;right:0;z-index:1000;max-height:220px;overflow-y:auto;-webkit-overflow-scrolling:touch}
.life-space-history-box{min-height:36vh}
.life-space-history-head{overflow:visible}

/* Responsive application layout; the environment contract lives in viewport-shell.css. */
.wrap{width:100%;height:var(--lm-app-height)!important;min-height:0}
#dock-wrap{padding-left:max(12px,var(--lm-safe-left));padding-right:max(12px,var(--lm-safe-right));padding-bottom:max(12px,var(--lm-safe-bottom))}
#app{width:100%;height:var(--lm-app-height);inset:0}
html.lm-ios.lm-app-active body{position:fixed;inset:0;width:100%;height:var(--lm-app-height);overflow:hidden;background:var(--t-page)}
html.lm-ios.lm-app-active{background:var(--t-page)}
html.lm-ios.lm-app-active body::before{opacity:0}
html.lm-ios.lm-app-active body::after{opacity:0}
html.lm-ios.lm-app-active .wrap{background:var(--t-page)}
html.lm-ios #app{visibility:hidden;pointer-events:none;-webkit-transform:none!important;transform:none!important;transition:none!important}
html.lm-ios #app.open{visibility:visible;pointer-events:auto}
html.lm-ios.lm-app-active #app{top:0;right:0;bottom:0;left:0;width:auto;height:var(--lm-app-height);min-height:var(--lm-app-height);-webkit-backface-visibility:hidden;backface-visibility:hidden}
html.lm-ios.lm-visual-offset:not(.lm-keyboard-open) #app{top:var(--lm-visual-page-top,0px);bottom:calc(0px - var(--lm-visual-page-top,0px));height:auto}
html.lm-ios.lm-chat-visual-managed body.chat-chrome-lock #app{top:var(--lm-visual-page-top,0px);bottom:auto;height:var(--lm-visual-height);min-height:0}
#app-bar{height:calc(var(--lm-topbar) + var(--lm-safe-top));padding-top:var(--lm-safe-top);padding-left:max(8px,var(--lm-safe-left));padding-right:max(8px,var(--lm-safe-right));box-sizing:border-box}
#app-body{min-height:0;padding-right:var(--lm-safe-right);padding-bottom:var(--lm-safe-bottom);padding-left:var(--lm-safe-left);box-sizing:border-box}
#app-body>.lm-music-page{position:absolute;inset:0;width:100%!important;min-width:0;height:100%;max-width:none!important}
html.lm-keyboard-open body:not(.chat-chrome-lock) #app-body:not(.lm-forum-app){padding-bottom:var(--lm-keyboard-inset)}
html.lm-ios.lm-keyboard-open body{overscroll-behavior:none}
html.lm-ios.lm-keyboard-open #app-body{overscroll-behavior:none}
html.lm-ios.lm-ios-input-active #app-body,html.lm-ios.lm-ios-input-active #app-body>iframe{background:var(--t-page)!important}
html.lm-ios input:not([type="checkbox"]):not([type="radio"]):not([type="range"]):not([type="file"]),
html.lm-ios textarea,
html.lm-ios select,
html.lm-ios [contenteditable="true"]{font-size:16px!important}
html.lm-ios.lm-standalone:not(.lm-embedded) body.chat-chrome-lock #app{padding-top:var(--lm-safe-top);box-sizing:border-box}
html:not(.lm-ios) body.chat-chrome-lock #app-body,body.world-story-chrome-lock #app-body,body.new-friend-chrome-lock #app-body{padding-top:var(--lm-safe-top)}
body.shop-chrome-lock #app-bar,body.forum-chrome-lock #app-bar{display:none!important}
body.shop-chrome-lock #app-body,body.forum-chrome-lock #app-body{top:0!important}
html.lm-ios body.shop-chrome-lock #app-body>.lm-shop{padding-top:var(--lm-safe-top);box-sizing:border-box}
html.lm-ios body.forum-chrome-lock #app-body>.lm-forum{top:var(--lm-safe-top)}
html.lm-ios .role-header,
html.lm-ios .rd-header,
html.lm-ios .ms-header,
html.lm-ios .api-modal-header,
html.lm-ios .mem-header,
html.lm-ios .lm-role-appearance-head,
html.lm-ios .lm-ta-music-head{--lm-safe-header-height:44px}
html.lm-ios .lm-ta-music-head>.lm-ta-music-back{
  top:var(--lm-safe-top);
  height:44px;
  display:flex;
  align-items:center;
}
html.lm-ios .lm-role-appearance-head,
html.lm-ios #mcpRolePg>.lm-safe-page-header{padding-bottom:0!important}
html.lm-ios .lm-bank-head,html.lm-ios .mn-head,html.lm-ios .rl-head,html.lm-ios .lm-ta-detail-head{--lm-safe-header-height:44px}
html.lm-ios .lm-forum-search-head{--lm-safe-header-height:44px}
html.lm-ios .lm-safe-page-own-top>.lm-safe-page-header>.lm-bank-back,
html.lm-ios .lm-safe-page-own-top>.lm-safe-page-header>.mn-back,
html.lm-ios .lm-safe-page-own-top>.lm-safe-page-header>.rl-back,
html.lm-ios .lm-safe-page-own-top>.lm-safe-page-header>.lm-ta-detail-back{
  top:var(--lm-safe-top)!important;
  height:var(--lm-safe-header-height,44px);
  display:flex;
  align-items:center;
}
html.lm-ios .lm-ta-detail>.lm-ta-detail-head{
  height:calc(44px + var(--lm-safe-top))!important;
  min-height:calc(44px + var(--lm-safe-top))!important;
  padding-top:var(--lm-safe-top)!important;
  box-sizing:border-box;
}
html.lm-ios .lm-ta-detail>.lm-ta-detail-head>.lm-ta-detail-back{top:var(--lm-safe-top)!important;height:44px;display:flex;align-items:center}
html.lm-ios body.world-story-chrome-lock .world-sub-bar.lm-safe-page-header{margin-top:0!important;min-height:42px}
html.lm-ios .call-overlay{padding-top:var(--lm-safe-top);box-sizing:border-box}
html.lm-ios .call-menu-btn{top:calc(12px + var(--lm-safe-top))}
html.lm-ios .call-menu-dropdown{top:calc(52px + var(--lm-safe-top))}
.role-header,.rd-header{height:calc(48px + var(--lm-safe-top));padding-top:var(--lm-safe-top);padding-left:max(16px,var(--lm-safe-left));padding-right:max(16px,var(--lm-safe-right));box-sizing:border-box;flex-shrink:0}
.role-pg,.role-detail-pg,.role-create-pg,.model-setting-pg,.memory-page,.api-modal-bg{height:var(--lm-app-height);max-height:var(--lm-app-height)}
.api-modal-header,.ms-header{height:calc(50px + var(--lm-safe-top));min-height:calc(50px + var(--lm-safe-top));padding-top:var(--lm-safe-top);padding-bottom:0;box-sizing:border-box;flex-shrink:0}
.mem-header{height:calc(50px + var(--lm-safe-top));min-height:calc(50px + var(--lm-safe-top));padding:var(--lm-safe-top) 20px 0;box-sizing:border-box;flex-shrink:0}
#mcpRolePg .lm-safe-page-header{min-height:calc(50px + var(--lm-safe-top));padding-top:var(--lm-safe-top)!important;box-sizing:border-box}
html:not(.lm-ios) ._spSumMgr-head,html:not(.lm-ios) ._spHist-head{height:calc(50px + var(--lm-safe-top));flex-basis:calc(50px + var(--lm-safe-top));padding-top:var(--lm-safe-top);box-sizing:border-box}
html:not(.lm-ios) .lm-fsm-head,html:not(.lm-ios) .wc-sm-head{height:calc(50px + var(--lm-safe-top))!important;flex-basis:calc(50px + var(--lm-safe-top))!important;padding-top:var(--lm-safe-top);box-sizing:border-box}
html:not(.lm-ios) .lm-fsm-back,html:not(.lm-ios) .wc-sm-back{top:var(--lm-safe-top)!important}
html.lm-ios .lm-fsm-back,html.lm-ios .wc-sm-back{top:var(--lm-safe-top)!important;height:44px!important}
html.lm-ios .wc-sm-head [data-a="search"],html.lm-ios ._spHist-head [data-a="search"]{top:calc(2px + var(--lm-safe-top))!important}
html.lm-ios .lm-fsm-page .lm-fsm-body{padding-bottom:calc(76px + var(--lm-safe-bottom))!important}
html.lm-ios .lm-fsm-page:not(.selecting) .lm-fsm-body{padding-bottom:calc(12px + var(--lm-safe-bottom))!important}
html.lm-ios .wc-sm-page .wc-sm-body{padding-bottom:calc(76px + var(--lm-safe-bottom))!important}
html.lm-ios .wc-sm-page:not(.selecting) .wc-sm-body{padding-bottom:calc(12px + var(--lm-safe-bottom))!important}
html.lm-ios ._spSumMgr-box>._spSumMgr-body{padding-bottom:calc(76px + var(--lm-safe-bottom))!important}
html.lm-ios.lm-keyboard-open .model-setting-pg{overflow:hidden}
html.lm-ios.lm-keyboard-open .model-setting-pg .ms-body{padding-bottom:calc(16px + var(--lm-keyboard-inset));overscroll-behavior:contain}
html.lm-ios.lm-keyboard-open .set-sub{overscroll-behavior:contain}
html.lm-ios.lm-keyboard-open .pw-modal-bg.show,html.lm-ios.lm-keyboard-open .pw-opts-bg.show{top:var(--lm-visual-page-top,0px);bottom:auto;height:var(--lm-visual-height);max-height:var(--lm-visual-height)}
html.lm-ios.lm-keyboard-open .pw-modal-bg.show{overflow:hidden}
html.lm-ios.lm-keyboard-open .pw-modal-spacer{min-height:8px}
html.lm-ios.lm-keyboard-open .pw-modal-box{max-height:calc(100% - 8px);overflow-y:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch}
@media(min-width:700px){html.lm-ios.lm-keyboard-open .pw-modal-box{max-height:calc(100% - 40px)}}
.rd-av-action-sheet,.tool-lang-sheet,.life-user-menu{padding-bottom:max(12px,var(--lm-safe-bottom))}
.call-overlay{height:var(--lm-app-height)}
.call-bg,.call-bg-img{height:var(--lm-app-height)}
.life-manage-bar{bottom:max(14px,var(--lm-safe-bottom))}

@media(min-width:700px){
  .pg{grid-template-columns:repeat(4,minmax(76px,112px));justify-content:center;column-gap:16px}
  #dock{max-width:520px;margin:0 auto}
  .modal-box,.cst-dlg-box{max-width:420px}
}
@media(max-height:650px){
  .pg{grid-template-rows:repeat(6,82px);padding-top:8px}
  .ic{height:78px}.ic-box{width:52px;height:52px}
  #dock{height:72px}
}
