/* ===== qunmai-live app shell ===== */
*{box-sizing:border-box}
html,body{margin:0;padding:0;background:#E9E3D6;color:var(--ink);font-family:"PingFang SC","Helvetica Neue","Microsoft YaHei","Noto Sans SC",sans-serif}
button,input,textarea{font-family:inherit}
button{cursor:pointer}
a{color:var(--navy)}
.shell{width:100%;max-width:480px;min-height:100vh;margin:0 auto;background:var(--cream);box-shadow:0 0 50px rgba(10,30,60,.12);display:flex;flex-direction:column;position:relative}
.appbar{position:sticky;top:0;z-index:30;background:var(--navy);color:#fff;padding:12px 16px;display:flex;align-items:center;gap:10px}
.appbar .brand{display:flex;align-items:center;gap:9px;min-width:0}
.appbar .mark{width:30px;height:30px;border-radius:8px;background:linear-gradient(140deg,#E4C766,#C9A227);color:#081426;display:flex;align-items:center;justify-content:center;font-family:Inter,Arial,sans-serif;font-weight:900;font-size:11px;letter-spacing:-.3px}
.appbar b{font-family:"Songti SC",serif;font-size:17px;letter-spacing:2px}
.appbar span{font-size:8px;letter-spacing:1.5px;color:#C9A227;display:block}
.appbar .right{margin-left:auto;display:flex;gap:6px;align-items:center}
.appbar .pillbtn{border:1px solid rgba(255,255,255,.25);background:transparent;color:#DCE5F0;padding:5px 8px;border-radius:7px;font-size:10px}
.main{flex:1;overflow-y:auto;scrollbar-width:none;position:relative;padding-bottom:76px}
.main::-webkit-scrollbar{display:none}
.main.no-nav{padding-bottom:20px}
.nav{position:sticky;bottom:0;z-index:20;background:rgba(255,253,248,.98);border-top:1px solid var(--line);display:flex;padding:6px 6px 8px;backdrop-filter:blur(8px)}
.nav button{flex:1;border:0;background:transparent;color:#8B94A4;font-size:9px;display:flex;flex-direction:column;align-items:center;gap:2px;padding:3px 0}
.nav button i{font-style:normal;font-size:18px;line-height:1}
.nav button.on{color:var(--navy);font-weight:700}.nav button.on i{color:var(--gold)}
.page-head{display:flex;align-items:center;gap:10px;padding:12px 16px 4px;color:var(--navy)}
.page-head .back{width:30px;height:30px;border-radius:50%;border:1px solid var(--line);background:#fff;color:var(--navy);font-size:17px;display:flex;align-items:center;justify-content:center;flex:0 0 auto}
.page-head .ttl{flex:1;min-width:0}.page-head h1{font-size:17px;margin:0;font-family:"Songti SC",serif;letter-spacing:.4px}.page-head .sub{font-size:9px;color:#8B94A4;margin-bottom:1px}
.page-head .right{margin-left:auto;display:flex;gap:6px}
.content{padding:0 16px 18px}
.btn:disabled{opacity:.45;cursor:not-allowed}
.btn.tiny{padding:5px 8px;font-size:10px;border-radius:7px}
.avatar-img{width:38px;height:38px;border-radius:50%;object-fit:cover;display:block;background:#16325C}
.avatar-img.sm{width:28px;height:28px}
.avatar-img.lg{width:64px;height:64px}
.avatar-img.xl{width:88px;height:88px}
.muted{color:#8B94A4}
.row-between{display:flex;align-items:center;justify-content:space-between;gap:10px}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.field{margin-top:6px}.field label{display:block;font-size:9.5px;color:#8B94A4;margin-bottom:3px}
.input,select.input{width:100%;border:1px solid var(--line);border-radius:10px;padding:9px 10px;font-family:inherit;font-size:11px;color:#17233A;background:#fff;resize:vertical}
.empty{border:1px dashed var(--line);border-radius:12px;padding:18px;text-align:center;color:#8B94A4;font-size:11px;line-height:1.7;background:#fff}
.post-card{cursor:pointer}
.pinned{color:#8A6D1B;font-size:9px;font-weight:700}
.chip{display:inline-flex;align-items:center;gap:4px;padding:5px 9px;border-radius:999px;border:1px solid var(--line);background:#fff;color:#6B7588;font-size:10px;margin:2px 4px 2px 0}
.chip.on{background:var(--gold);border-color:var(--gold);color:#111;font-weight:700}
.actionbar{position:sticky;bottom:0;background:#FFFDF8;border-top:1px solid var(--line);padding:8px 12px 12px;display:flex;gap:8px;z-index:15}
.actionbar .btn{flex:1}
.modal-mask{position:fixed;inset:0;background:rgba(6,18,38,.48);z-index:80;display:flex;align-items:center;justify-content:center;padding:24px}
.modal{background:#FFFDF8;border-radius:16px;padding:16px;width:100%;max-width:340px;box-shadow:0 18px 50px rgba(0,0,0,.3)}
.modal h3{margin:0 0 6px;font-family:"Songti SC",serif;color:var(--navy);font-size:16px}.modal .body{font-size:11px;line-height:1.7;color:#5C6779}.modal .acts{display:flex;gap:8px;margin-top:12px}
.toast{position:fixed;left:50%;bottom:88px;transform:translateX(-50%);background:rgba(10,30,60,.94);color:#fff;font-size:10px;padding:7px 12px;border-radius:999px;z-index:90;white-space:nowrap;animation:fade .2s}
.switch{width:42px;height:24px;border-radius:20px;background:#DCD5C6;border:0;position:relative;flex:0 0 auto}.switch:after{content:"";position:absolute;left:3px;top:3px;width:18px;height:18px;border-radius:50%;background:#fff;transition:.15s}.switch.on{background:var(--green)}.switch.on:after{left:21px}
.group-cover{background:linear-gradient(145deg,#0A1E3C,#16325C);color:#fff;border-radius:16px;padding:16px;position:relative;overflow:hidden}
.group-cover:after{content:"";position:absolute;right:-50px;top:-60px;width:170px;height:170px;border-radius:50%;background:radial-gradient(circle,rgba(228,199,102,.25),transparent 70%)}
.group-cover .eyebrow{font-size:9px;letter-spacing:2px;color:#E4C766}.group-cover h1{font-family:"Songti SC",serif;font-size:20px;margin:4px 0 6px}.group-cover p{font-size:10px;color:#C9D6EA;margin:0;line-height:1.7}
.avatar-banner{background:linear-gradient(135deg,#FBF4E2,#F4EAD3);border:1px solid #E8D9B4;border-radius:12px;padding:10px;margin-top:10px}
.avatar-banner .ai-label{font-size:8.5px;letter-spacing:1.5px;color:#8A6D1B;font-weight:800}
.avatar-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:10px}
.avatar-style{border:2px solid var(--line);border-radius:14px;padding:8px;background:#fff;cursor:pointer;text-align:center}
.avatar-style.on{border-color:var(--gold);box-shadow:0 0 0 2px rgba(201,162,39,.18)}
.avatar-style canvas{width:100%;aspect-ratio:1;border-radius:50%;background:#F3EDDF;display:block}
.avatar-style b{display:block;font-size:11px;color:var(--navy);margin-top:5px}
.avatar-style span{display:block;font-size:9px;color:#8B94A4}
.avatar-preview{display:flex;align-items:center;gap:12px}
.avatar-preview .big{width:84px;height:84px;border-radius:50%;overflow:hidden;background:#F3EDDF;border:1px solid var(--line)}
.avatar-preview .big img,.avatar-preview .big canvas{width:100%;height:100%;object-fit:cover;display:block}
.upload{display:block;border:1px dashed #D8C9A8;background:#FBF4E2;border-radius:12px;padding:14px;text-align:center;color:#7B6B45;font-size:11px;line-height:1.7;margin-top:10px;cursor:pointer}
.upload input{display:none}
.admin-stat{display:flex;gap:14px;margin-top:10px}.admin-stat div{flex:1;background:rgba(255,255,255,.1);border-radius:10px;padding:8px}.admin-stat b{display:block;font-size:18px;color:#E4C766}.admin-stat span{font-size:9px;color:#9FB2CC}
.setting-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 0;border-bottom:1px solid #F0E9DB}.setting-row:last-child{border-bottom:0}
.style-options{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:6px}.style-options button{border:1px solid var(--line);border-radius:10px;background:#fff;padding:10px 8px;text-align:left;font-size:11px;color:var(--navy)}.style-options button.on{border-color:var(--gold);background:#FBF4E2;font-weight:700}
.login-hero{background:linear-gradient(150deg,#0A1E3C,#16325C);color:#fff;padding:34px 20px 26px;position:relative;overflow:hidden}.login-hero:after{content:"";position:absolute;right:-70px;top:-80px;width:220px;height:220px;border-radius:50%;background:radial-gradient(circle,rgba(228,199,102,.28),transparent 70%)}
.login-hero .eyebrow{font-size:9px;letter-spacing:2px;color:#E4C766}.login-hero h1{font-family:"Songti SC",serif;font-size:25px;line-height:1.35;margin:6px 0 8px}.login-hero p{font-size:11px;color:#C9D6EA;line-height:1.8;margin:0}
.login-form{padding:18px 16px}
.loading{padding:40px 16px;text-align:center;color:#8B94A4;font-size:12px}
.err{color:#B03A2E;font-size:10px;margin-top:6px}
.mt6{margin-top:6px}.mt8{margin-top:8px}.mt10{margin-top:10px}.mt12{margin-top:12px}.mt16{margin-top:16px}
@media (max-width:520px){.shell{max-width:100%;box-shadow:none}.appbar{padding:10px 12px}.content{padding:0 12px 18px}.page-head{padding:10px 12px 4px}}
@media (min-width:760px){body{padding:20px 0}.shell{min-height:calc(100vh - 40px);border-radius:22px;overflow:hidden}.appbar{border-radius:22px 22px 0 0}}

.bubble{white-space:pre-wrap}


.ai-reason{display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}

/* ===== mobile readability & auth ===== */
.auth-tabs{display:flex;background:#EFE7D7;border-radius:14px;padding:4px;margin-bottom:16px}
.auth-tabs button{flex:1;border:0;background:transparent;color:#7A8292;font-size:15px;font-weight:700;padding:11px 8px;border-radius:11px}
.auth-tabs button.on{background:#fff;color:var(--navy);box-shadow:0 2px 8px rgba(10,30,60,.08)}
.auth-divider{display:flex;align-items:center;gap:12px;color:#B0A58E;font-size:12px;margin:16px 0}
.auth-divider:before,.auth-divider:after{content:"";height:1px;background:var(--line);flex:1}
.auth-note{text-align:center;margin-top:12px;font-size:12px;color:#8B94A4;line-height:1.6}

@media (max-width:520px){
  html{-webkit-text-size-adjust:100%}
  body{font-size:16px}
  .appbar{padding:12px 14px;gap:10px;min-height:58px}
  .appbar .mark{width:34px;height:34px;font-size:12px;border-radius:9px}
  .appbar b{font-size:20px;letter-spacing:2px}
  .appbar span{font-size:10px;letter-spacing:1.2px}
  .appbar .pillbtn{font-size:12px;padding:8px 10px;border-radius:9px;min-height:36px}
  .page-head{padding:14px 14px 6px;gap:12px}
  .page-head h1{font-size:22px;line-height:1.3}
  .page-head .sub{font-size:12px;line-height:1.5}
  .page-head .back{width:38px;height:38px;font-size:22px;border-radius:12px}
  .page-head .icon-btn{width:38px;height:38px;font-size:20px}
  .content{padding:0 14px 22px}
  .card{padding:16px;border-radius:16px}
  .small{font-size:14px;line-height:1.65}
  .tiny{font-size:12px;line-height:1.6}
  .h2{font-size:17px}
  .post-card{padding:16px;border-radius:16px;margin-top:12px}
  .post-card .title{font-size:18px;line-height:1.45;margin:8px 0 6px}
  .post-card .excerpt{font-size:14px;line-height:1.65}
  .post-meta{font-size:12px;gap:6px}
  .post-foot{font-size:13px;gap:12px;padding-top:10px}
  .tag{font-size:11px;padding:4px 9px;margin:3px 4px 3px 0}
  .pill{font-size:11px;padding:4px 9px}
  .btn{font-size:15px;padding:13px 16px;min-height:46px;border-radius:12px}
  .btn.sm{font-size:13px;padding:8px 12px;min-height:38px;border-radius:9px}
  .btn.tiny{font-size:12px;min-height:34px}
  .btn.block{margin-top:12px}
  .input,textarea.input,select.input{font-size:16px;padding:13px 14px;min-height:48px;border-radius:12px;line-height:1.5}
  .field{margin-top:12px}
  .field label{font-size:13px;margin-bottom:6px;color:#5E6879}
  .chip{font-size:13px;padding:8px 13px;border-radius:999px}
  .list-item{padding:14px 0;gap:12px}
  .av{width:44px;height:44px;font-size:18px}
  .av.sm{width:32px;height:32px;font-size:13px}
  .avatar-img{width:44px;height:44px}
  .avatar-img.sm{width:32px;height:32px}
  .avatar-img.lg{width:72px;height:72px}
  .group-cover{padding:20px;border-radius:18px}
  .group-cover .eyebrow{font-size:10px;letter-spacing:1.6px}
  .group-cover h1{font-size:24px;line-height:1.35;margin:6px 0 8px}
  .group-cover p{font-size:14px;line-height:1.7}
  .group-cover .stats b{font-size:22px}
  .group-cover .stats span{font-size:11px}
  .avatar-banner{padding:14px;border-radius:14px}
  .avatar-banner .ai-label{font-size:11px;letter-spacing:1.2px}
  .avatar-banner .small{font-size:14px;line-height:1.65}
  .ai-label{font-size:11px}
  .quote{font-size:14px;line-height:1.7}
  .lock{font-size:14px;line-height:1.75;padding:18px}
  .empty{font-size:14px;line-height:1.7;padding:24px 16px}
  .search{font-size:14px;padding:11px 12px;border-radius:12px}
  .search input{font-size:16px}
  .sheet-option{padding:14px;border-radius:13px}
  .sheet-option b{font-size:16px}
  .sheet-option .ico{width:40px;height:40px;font-size:19px}
  .bubble{font-size:14px;line-height:1.75;padding:11px 13px;max-width:92%}
  .cite{font-size:11px;line-height:1.6}
  .chat{gap:10px}
  .toast{font-size:13px;padding:10px 16px;bottom:96px;max-width:90vw;white-space:normal;text-align:center}
  .nav{padding:8px 8px calc(10px + env(safe-area-inset-bottom));min-height:66px}
  .nav button{font-size:12px;gap:3px;padding:4px 0}
  .nav button i{font-size:22px}
  .main{padding-bottom:88px}
  .main.no-nav{padding-bottom:24px}
  .actionbar{padding:10px 14px calc(14px + env(safe-area-inset-bottom));gap:8px}
  .actionbar .btn{font-size:14px;min-height:46px}
  .login-hero{padding:34px 20px 26px}
  .login-hero .eyebrow{font-size:11px;letter-spacing:1.6px}
  .login-hero h1{font-size:32px;line-height:1.35;margin:8px 0 12px}
  .login-hero p{font-size:15px;line-height:1.75}
  .login-form{padding:20px 16px 32px}
  .login-form .card{margin-top:16px}
  .auth-tabs{position:sticky;top:0;z-index:2}
  .modal-mask{padding:18px}
  .modal{max-width:360px;border-radius:18px;padding:20px}
  .modal h3{font-size:20px;margin-bottom:8px}
  .modal .body{font-size:15px;line-height:1.7}
  .modal .acts{margin-top:16px;gap:10px}
  .modal .btn{font-size:14px;min-height:44px}
  .avatar-preview .big{width:96px;height:96px}
  .avatar-style{padding:10px;border-radius:16px}
  .avatar-style b{font-size:14px;margin-top:7px}
  .avatar-style span{font-size:11px}
  .upload{font-size:14px;line-height:1.7;padding:18px 14px}
  .style-options button{font-size:14px;padding:12px 10px}
  .setting-row{padding:14px 0}
  .admin-stat b{font-size:22px}
  .admin-stat span{font-size:11px}
  .avatar-grid{gap:12px}
  .stats b{font-size:20px}
  .stats span{font-size:11px}
}

.chip{flex:0 0 auto;white-space:nowrap}
.page-head .back{line-height:1;padding-bottom:2px}

/* ===== 今日 / 通知 / 发帖推送 ===== */
.notif-btn{position:relative}
.notif-btn em{position:absolute;top:-5px;right:-5px;min-width:16px;height:16px;padding:0 4px;border-radius:999px;background:#B03A2E;color:#fff;font-size:9px;font-style:normal;line-height:16px;text-align:center;border:1px solid #fff}
.today-hero{background:linear-gradient(145deg,#0A1E3C,#16325C);color:#fff;border-radius:18px;padding:22px 18px;position:relative;overflow:hidden}
.today-hero:after{content:"";position:absolute;right:-30px;top:-40px;width:150px;height:150px;border-radius:50%;background:radial-gradient(circle,rgba(228,199,102,.23),transparent 65%)}
.today-hero .eyebrow{font-size:11px;letter-spacing:1.5px;color:#E4C766;position:relative}
.today-hero h1{font-size:22px;line-height:1.4;margin:8px 0 8px;font-family:"Songti SC",serif;position:relative}
.today-hero p{font-size:13px;line-height:1.6;color:#C9D6EA;margin:0;position:relative}
.today-hero .btn{position:relative;margin-top:12px}
.notif-card{background:#fff;border:1px solid var(--line);border-left:3px solid transparent;border-radius:13px;padding:13px;margin-top:10px;cursor:pointer}
.notif-card.unread{border-left-color:var(--gold);background:#FFFDF6}
.notif-type{font-size:10px;font-weight:800;letter-spacing:1px;color:#8A6D1B;background:#FBF4E2;border:1px solid #E8D9B4;border-radius:999px;padding:3px 8px}
.notif-dot{width:8px;height:8px;border-radius:50%;background:var(--gold);display:inline-block}
.notif-reason{margin-top:8px;background:#F7F2E7;border-radius:8px;padding:7px 9px;font-size:12px;line-height:1.6;color:#6B5A2A}
.push-toggle{display:flex;gap:10px;align-items:flex-start;background:#fff;border:1px solid var(--line);border-radius:14px;padding:14px;margin-top:10px;cursor:pointer}
.push-toggle input{width:20px;height:20px;margin:1px 0 0;accent-color:var(--gold);flex:0 0 auto}
.push-toggle span{display:block}
.push-toggle b{display:block;font-size:14px;color:var(--navy)}
.push-toggle small{display:block;font-size:12px;line-height:1.6;color:#7A8292;margin-top:3px}
.push-status{margin-top:10px;background:#F0F7F2;border:1px solid #CFE3D6;border-radius:9px;padding:8px 10px;font-size:12px;color:#2E7D5B}
.nav button{font-size:11px}

.appbar .pillbtn{white-space:nowrap;flex:0 0 auto}
.appbar .notif-btn{min-width:38px;justify-content:center}
@media (max-width:520px){.appbar{gap:6px}.appbar .pillbtn{font-size:11px;padding:7px 8px}.nav button{font-size:10.5px}.nav button i{font-size:21px}}

/* ===== 活动 ===== */
.activity-fields{margin-top:12px;padding-top:12px;border-top:1px dashed var(--line)}
.activity-card{border:1px solid #E8D9B4;background:#FFFDF6;border-radius:13px;padding:12px;margin-top:10px;cursor:pointer}
.activity-in-post{margin-top:10px;background:transparent;border:0;padding:0}
.activity-in-post .card{padding:0}
.activity-card .btn{display:inline-block}
@media (max-width:520px){
  .activity-fields .grid2{grid-template-columns:1fr}
  .activity-fields .input{min-width:0;max-width:100%}
}
/* ===== post attachments ===== */
.attach-summary{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px;font-size:12px;color:#5E6A7D}
.attach-summary span{color:#C4CBD8}
.attach-block{margin-top:10px;padding:12px;border:1px solid #E8D9B4;background:#FFFDF6;border-radius:13px}
.attach-kicker{font-size:10px;letter-spacing:1.2px;color:#8A6D1B;font-weight:800;text-transform:uppercase}
.attach-title{font-size:15px;font-weight:800;color:#17233A;line-height:1.4;margin-top:5px}
.attach-gallery{display:grid;grid-template-columns:repeat(3,1fr);gap:5px;margin-top:8px}
.attach-gallery img{width:100%;aspect-ratio:1;object-fit:cover;border-radius:9px;background:#eee}
.attach-thumbs{display:flex;gap:6px;flex-wrap:wrap;margin-top:8px}
.attach-thumb{position:relative;width:58px;height:58px}
.attach-thumb img{width:100%;height:100%;object-fit:cover;border-radius:9px}
.attach-thumb button{position:absolute;top:-5px;right:-5px;width:20px;height:20px;border-radius:50%;border:0;background:#0A1E3C;color:#fff;font-size:12px;line-height:20px;padding:0}
.attach-file-row{display:flex;align-items:center;gap:9px;padding:8px 0;border-top:1px dashed #E6E9EF;margin-top:6px;text-decoration:none;color:inherit}
.attach-file-row:first-of-type{border-top:0}
.attach-link{display:block;text-decoration:none;color:inherit}
.poll-options{display:flex;flex-direction:column;gap:7px;margin-top:9px}
.poll-option{position:relative;display:flex;align-items:center;justify-content:space-between;gap:8px;border:1px solid #E2E6EE;background:#fff;border-radius:11px;padding:11px 12px;overflow:hidden;text-align:left;font-size:14px;color:#263248}
.poll-option .poll-fill{position:absolute;left:0;top:0;bottom:0;background:#F6EBCB;z-index:0;transition:width .25s}
.poll-option .poll-label,.poll-option .poll-count{position:relative;z-index:1}
.poll-option.mine{border-color:#C9A227;background:#FFFDF6}
.poll-option:disabled{opacity:.8}
.poll-count{font-size:11px;color:#7B8494;white-space:nowrap}
.signup-people{display:flex;align-items:center;gap:5px;margin-top:8px;flex-wrap:wrap}
.signup-people .av{width:24px;height:24px;font-size:9px}
.attach-editor{border-top:1px dashed #E6E9EF;padding-top:10px;margin-top:10px}
.attach-picker{display:flex;flex-direction:column;gap:8px}
.attach-picker button{display:flex;flex-direction:column;align-items:flex-start;gap:2px;text-align:left;border:1px solid #E6E9EF;background:#fff;border-radius:12px;padding:12px 14px;color:#263248}
.attach-picker button b{font-size:15px}
.attach-picker button span{font-size:12px;color:#8B94A4}
.attach-picker button:disabled{opacity:.45}
@media (max-width:520px){.attach-gallery{grid-template-columns:repeat(3,1fr)}}
/* ===== AI overview ===== */
.ai-card{border-top:1px dashed #E6E9EF;padding:11px 0;cursor:pointer}
.ai-card:first-of-type{border-top:0;padding-top:4px}
.ai-card-title{font-size:15px;font-weight:800;color:#17233A;line-height:1.45;margin-top:4px}
.ai-reason{font-size:12px;line-height:1.55;color:#5E6A7D;background:#FBF7EC;border-radius:8px;padding:7px 8px;margin-top:6px}
.ai-card-meta{font-size:11px;color:#8B94A4;margin-top:5px}
.ai-group{display:inline-block;font-size:10px;color:#8A6D1B;background:#F6EBCB;padding:2px 7px;border-radius:999px}
.ai-actions{display:flex;gap:6px;margin-top:7px}
.ai-person-row{display:flex;align-items:flex-start;gap:10px;min-width:0}
.ai-person-row>.grow{min-width:0}
.ai-person-row .tiny{line-height:1.5}
.ai-person-btn{flex:none;margin-top:1px;white-space:nowrap;padding:6px 9px}
.ai-person-reason{font-size:12px;line-height:1.5;color:#5E6A7D;margin-top:4px}
.invite-box{display:flex;gap:12px;align-items:flex-start;margin-top:10px}
.invite-qr{width:128px;height:128px;border-radius:10px;background:#fff;flex:none}
.invite-box .grow{min-width:0}
.invite-box .input{font-size:11px}
.appbar .group-pill{max-width:112px;overflow:hidden;text-overflow:ellipsis}
.appbar .manage-btn{color:#E4C766;border-color:rgba(201,162,39,.5);font-weight:700}
@media (max-width:380px){
  .appbar .group-pill{max-width:86px}
  .appbar .manage-btn{display:none}
}
.zodiac-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-top:8px}
.zodiac-item{display:flex;flex-direction:column;align-items:center;gap:3px;border:2px solid transparent;background:#fff;border-radius:12px;padding:6px 2px;color:#263248}
.zodiac-item img{width:46px;height:46px;border-radius:50%;display:block}
.zodiac-item span{font-size:11px;color:#6B7484}
.zodiac-item.on{border-color:#C9A227;background:#FFF9E8}
.profile-hero{cursor:pointer;padding:14px}
.profile-av{cursor:pointer;flex:none}
.profile-av .av,.profile-av .avatar-img{width:52px;height:52px;font-size:20px}
.profile-name{font-size:18px;font-weight:800;font-family:'Songti SC',serif;line-height:1.2}
.profile-side{text-align:right;flex:none;margin-left:6px}
.memory-card{border:1px solid #E8E2D2}
.memory-text{font-size:15px;font-weight:700;line-height:1.55;color:#17233A;margin-top:8px}
.memory-evidence{margin-top:6px;font-size:11px;color:#6B7484}
.memory-evidence summary{cursor:pointer}
.role-gold{color:#8A6412;background:#F7E8B6;border-radius:999px;padding:1px 6px;font-weight:800;font-size:11px}
.group-code{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:28px;font-weight:800;letter-spacing:3px;color:#8A6412;margin-top:3px}
.contact-list{background:#fff;border:1px solid var(--line);border-radius:14px;overflow:hidden;margin-top:2px}
.contact-row{display:flex;align-items:center;gap:10px;padding:10px 12px;border-bottom:1px solid #EEF0F4;cursor:pointer;min-height:58px}
.contact-row:last-child{border-bottom:0}
.contact-row .grow{min-width:0}
.contact-row .tiny{margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.contact-arrow{color:#C4CBD8;font-size:17px;flex:none}
.feed-head{display:flex;align-items:baseline;justify-content:space-between;gap:12px;padding:2px 2px 10px}
.feed-head h1{font-family:'Songti SC',serif;font-size:22px;line-height:1.25;color:var(--navy);margin:0;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.feed-head span{font-size:11px;color:#8B94A4;flex:none}
.feed-tip{display:flex;align-items:center;justify-content:space-between;gap:8px;background:#FFF9E8;border:1px solid #EADFC2;border-radius:12px;padding:8px 10px;margin-bottom:10px;font-size:12px;color:#5E6879}
.feed{background:#fff;border:1px solid #ECE8DE;border-radius:16px;overflow:hidden}
.feed-post{padding:15px 16px;border-bottom:1px solid #F0ECE3;cursor:pointer}
.feed-post:last-child{border-bottom:0}
.feed-author{display:flex;align-items:center;gap:8px}
.feed-author .av,.feed-author .avatar-img{width:32px;height:32px;font-size:13px}
.feed-name{font-size:13px;font-weight:800;color:#17233A;line-height:1.3}
.feed-sub{font-size:10px;color:#8B94A4;line-height:1.35;margin-top:1px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.feed-time{font-size:10px;color:#A3AAB6;flex:none;margin-left:auto}
.feed-title{font-size:17px;font-weight:800;line-height:1.45;color:#17233A;margin:10px 0 5px;font-family:'Songti SC',serif}
.feed-title .pinned{color:#8A6412;background:#F7E8B6;border-radius:4px;padding:1px 5px;font-family:sans-serif;font-size:10px;vertical-align:2px}
.feed-excerpt{font-size:14px;line-height:1.65;color:#4E596B;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden;white-space:pre-wrap}
.feed-post .attach-summary{margin-top:7px}
.feed-foot{display:flex;gap:20px;margin-top:10px;padding-top:8px;border-top:1px solid #F5F1E9}
.feed-foot button{border:0;background:transparent;padding:0;font-size:12px;color:#8B94A4;display:flex;align-items:center;gap:4px}
.feed-head{display:flex;align-items:center;gap:8px;padding:2px 2px 10px;justify-content:space-between}
.feed-titleline{display:flex;align-items:baseline;gap:8px;min-width:0;flex:1}
.feed-titleline h1{font-family:'Songti SC',serif;font-size:22px;line-height:1.25;color:var(--navy);margin:0;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.feed-titleline span{font-size:11px;color:#8B94A4;flex:none}
.feed-compose{border:0;border-radius:9px;background:linear-gradient(140deg,#E4C766,#C9A227);color:#081426;font-size:12px;font-weight:800;padding:7px 9px;white-space:nowrap;flex:none}
.feed-more{text-align:center;color:#9AA2AF;font-size:11px;padding:16px 0 4px}
.comments-sheet{background:#fff;border:1px solid #ECE8DE;border-radius:16px;overflow:hidden}
.comments-head{padding:13px 16px 8px;border-bottom:1px solid #F2EEE6;font-size:14px;color:#17233A}
.comments-head b{font-size:15px}
.comments-head span{color:#8B94A4;font-weight:400;font-size:12px;margin-left:3px}
.comment-list{padding:0 16px}
.comment-row{display:flex;gap:10px;padding:13px 0;border-bottom:1px solid #F5F1E9}
.comment-row:last-child{border-bottom:0}
.comment-row .av,.comment-row .avatar-img{width:34px;height:34px;font-size:14px}
.comment-name{font-size:12px;font-weight:800;color:#17233A}
.comment-text{font-size:14px;line-height:1.65;color:#3B4658;margin-top:3px;white-space:pre-wrap}
.comment-meta{display:flex;align-items:center;gap:10px;margin-top:4px;font-size:10px;color:#9AA2AF}
.comment-meta button{border:0;background:transparent;padding:0;color:#9AA2AF;font-size:10px}
.comment-compose{padding:10px 16px 14px;background:#FBFAF6;border-top:1px solid #F0ECE3}
.comment-compose .av,.comment-compose .avatar-img{width:32px;height:32px;font-size:13px}
.slim-back{width:32px;height:32px;border-radius:50%;border:1px solid #E8E1D2;background:#fff;color:var(--navy);font-size:18px;line-height:1;display:flex;align-items:center;justify-content:center;margin-bottom:8px}
.avatar-img.avatar-felt{filter:saturate(.78) sepia(.12) brightness(1.04)}
.avatar-img.avatar-pixel{filter:contrast(1.25) saturate(1.2);image-rendering:pixelated;border-radius:26%}
.avatar-img.avatar-figurine{filter:contrast(1.12) brightness(1.04) saturate(1.1);box-shadow:0 3px 0 rgba(10,30,60,.18)}
.avatar-img.avatar-clay{filter:saturate(1.35) contrast(1.08)}
.av.avatar-felt{box-shadow:inset 0 0 0 2px rgba(255,248,230,.55)}
.av.avatar-pixel{border-radius:26%;box-shadow:0 2px 0 rgba(10,30,60,.25)}
.av.avatar-figurine{box-shadow:inset 0 -3px 0 rgba(0,0,0,.18),0 2px 0 rgba(201,162,39,.35)}
.av.avatar-clay{box-shadow:inset 0 0 0 2px rgba(255,255,255,.28)}
.avatar-crop-card{background:#fff;border:1px solid #ECE8DE;border-radius:18px;padding:16px;text-align:center}
#avatarCrop{width:100%;max-width:300px;aspect-ratio:1;border-radius:50%;touch-action:none;cursor:grab;background:#F2EEE4}
.avatar-zoom{display:flex;align-items:center;gap:10px;margin-top:8px}
.avatar-zoom input[type=range]{flex:1;accent-color:#C9A227}
.av.avatar-felt{background-image:radial-gradient(circle at 30% 25%,rgba(255,255,255,.22),transparent 42%),repeating-linear-gradient(35deg,rgba(255,255,255,.06) 0 2px,transparent 2px 5px)}
.av.avatar-pixel{background-image:repeating-linear-gradient(0deg,rgba(255,255,255,.07) 0 2px,transparent 2px 6px),repeating-linear-gradient(90deg,rgba(0,0,0,.08) 0 2px,transparent 2px 6px);border-radius:26%}
.av.avatar-figurine{background-image:linear-gradient(145deg,rgba(255,255,255,.35),transparent 44%,rgba(0,0,0,.15))}
.av.avatar-clay{background-image:radial-gradient(circle at 35% 25%,rgba(255,255,255,.25),transparent 45%),repeating-radial-gradient(circle at 70% 70%,rgba(255,255,255,.05) 0 2px,transparent 2px 6px)}
/* 桌面端：固定一屏高的应用框，内容在框内滚动；手机端保持原有页面滚动 */
@media (min-width:760px){
  html,body{height:100%;overflow:hidden}
  body{padding:20px 0}
  .shell{height:calc(100vh - 40px);min-height:0;max-height:calc(100vh - 40px);overflow:hidden}
  .main{flex:1 1 auto;min-height:0;overflow-y:auto}
  .nav{flex:0 0 auto}
}
.appbar.appbar-secondary{gap:8px;padding-left:10px}
.appbar-back{width:32px;height:32px;border-radius:50%;border:1px solid rgba(255,255,255,.22);background:rgba(255,255,255,.06);color:#fff;font-size:18px;line-height:1;display:flex;align-items:center;justify-content:center;flex:0 0 auto;padding:0}
.appbar-title{min-width:0;display:flex;flex-direction:column}
.appbar-title b{font-family:'Songti SC',serif;font-size:18px;line-height:1.25;letter-spacing:.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.appbar-title span{font-size:9px;color:#9FB2CC;line-height:1.3;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.main.secondary .content{padding-top:12px}
@media (max-width:520px){.appbar-title b{font-size:20px}.appbar-back{width:34px;height:34px}.main.secondary .content{padding-top:12px}}
.input::placeholder,input::placeholder{color:#A3AAB6;opacity:1}
.ai-scope-btn{padding:7px 10px;font-size:12px;font-weight:800}
.ai-person-arrow{color:#C4CBD8;font-size:18px;line-height:1;flex:none;margin-top:10px}
.ai-scope-switch{display:inline-flex;align-items:center;gap:2px;padding:2px;border:1px solid #ECE6D8;border-radius:999px;background:#F7F2E7;flex:none}
.ai-scope-switch button{border:0;background:transparent;color:#8B94A4;border-radius:999px;padding:5px 8px;font-size:11px;line-height:1.3;white-space:nowrap}
.ai-scope-switch button.on{background:#fff;color:#0A1E3C;font-weight:800;box-shadow:0 1px 3px rgba(10,30,60,.12)}
.ai-ask-row{align-items:stretch}
.ai-ask-row .input{min-height:42px;padding:10px 12px;font-size:14px;line-height:1.35}
.ai-ask-row .btn{min-height:42px;padding:0 14px;font-size:13px;border-radius:10px;flex:none}
@media (max-width:520px){
  .ai-scope-switch button{font-size:12px;padding:6px 8px}
  .ai-ask-row .input{min-height:44px;font-size:15px;padding:10px 12px}
  .ai-ask-row .btn{min-height:44px;font-size:14px;padding:0 14px}
}
.post-actions{display:flex;align-items:center;gap:24px;margin-top:12px;padding-top:10px;border-top:1px solid #F2EEE6}
.post-actions button{border:0;background:transparent;padding:0;color:#7C8697;font-size:13px;line-height:1.4;display:flex;align-items:center;gap:4px}
.post-actions button:active{color:#8A6412}
.comment-compose-row{display:flex;align-items:stretch;gap:8px}
.comment-compose-row .input{min-height:44px;padding:10px 12px;font-size:14px;line-height:1.35}
.comment-compose-row .btn{min-height:44px;padding:0 15px;font-size:13px;border-radius:10px;flex:none}
.comment-compose-foot{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-top:6px}
.ai-reply-link{border:1px solid #E8D9B4;background:#FFFDF7;color:#8A6412;border-radius:999px;padding:5px 9px;font-size:11px;font-weight:700}
.comment-compose .comment-list{border-top:1px solid #F2EEE6}
@media (max-width:520px){
  .post-actions{gap:26px}
  .post-actions button{font-size:14px}
  .comment-compose-row .input{min-height:46px;font-size:15px;padding:10px 12px}
  .comment-compose-row .btn{min-height:46px;font-size:14px;padding:0 15px}
}
.like-btn{position:relative;overflow:visible}
.like-btn.liked{color:#B8861B!important}
.like-btn.liked .like-ico{color:#D4A32A}
.like-btn.pop .like-ico{animation:likePop .32s ease}
@keyframes likePop{0%{transform:scale(1)}40%{transform:scale(1.45)}70%{transform:scale(.92)}100%{transform:scale(1)}}
.like-star{position:absolute;left:50%;top:50%;color:#E4C766;font-size:13px;line-height:1;pointer-events:none;animation:likeStar .68s ease-out forwards}
@keyframes likeStar{0%{opacity:0;transform:translate(-50%,-50%) scale(.4)}20%{opacity:1}100%{opacity:0;transform:translate(calc(-50% + var(--dx)),calc(-50% + var(--dy))) scale(1.15)}}
.comment-compose-row{align-items:center}
.comment-compose-row>.av,.comment-compose-row>.avatar-img{width:36px;height:36px;font-size:14px;align-self:center}
.comment-row{gap:10px}
.comment-row .av,.comment-row .avatar-img{width:36px;height:36px;font-size:14px;margin-top:1px}
.comment-name{font-size:13px}
.comment-text{font-size:14px}
.form-section-label{font-size:10px;letter-spacing:1.2px;color:#8A6D1B;font-weight:800;margin-top:12px;padding-top:10px;border-top:1px dashed #E6E9EF}
.form-section-label:first-of-type{margin-top:8px;padding-top:0;border-top:0}
.dims-edit{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.dim-edit-row{min-width:0}
.dim-edit-row label{font-size:11px;color:#5E6879}
.dim-edit-row .input{margin-top:5px;min-height:40px;padding:8px 9px;font-size:12px}
.dim-edit-row .switch{transform:scale(.88);transform-origin:right center}
@media (max-width:520px){
  .dims-edit{gap:10px 8px}
  .dim-edit-row .input{font-size:14px;min-height:44px;padding:9px 10px}
}
.me-card{padding:0 16px}
.me-row{display:flex;align-items:center;gap:12px;padding:15px 0;border-top:1px solid #F2EEE6;cursor:pointer}
.me-row:first-child{border-top:0}
.me-title{font-size:14px;font-weight:700;color:#17233A;line-height:1.4}
.me-sub{font-size:11px;color:#8B94A4;line-height:1.5;margin-top:2px}
.me-count{min-width:20px;height:20px;padding:0 6px;border-radius:999px;background:#C9A227;color:#fff;font-size:11px;font-weight:800;display:flex;align-items:center;justify-content:center;flex:none}
.me-links{display:flex;gap:8px}
.me-link{flex:1;border:1px solid #E6E0D2;background:#fff;color:#5E6879;border-radius:10px;padding:10px 8px;font-size:12px;font-weight:700}
.me-link.gold{background:#C9A227;border-color:#C9A227;color:#fff}
.me-logout{display:block;margin:24px auto 8px;border:0;background:transparent;color:#9AA3B2;font-size:12px;padding:8px 12px}
.profile-role{font-size:10px;color:#E4C766;border:1px solid rgba(201,162,39,.55);border-radius:999px;padding:3px 6px;line-height:1.2}
.profile-edit{font-size:11px;color:#C9D6EA;margin-top:6px}
@media (max-width:520px){.me-title{font-size:15px}.me-sub{font-size:12px}.me-link{font-size:13px;padding:11px 8px}}
.profile-role{display:inline-block}
.profile-edit{display:block}
