/* 基础重置与变量 */
*{margin:0;padding:0;box-sizing:border-box}
body{font-family:'Microsoft YaHei',sans-serif;background:#f5f7fa;min-height:100vh;padding:20px 15px;color:#333;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}
input,textarea,[contenteditable]{-webkit-user-select:text;user-select:text}
:root{--primary:#4a6cf7;--danger:#e74c3c;--success:#4caf50;--bg:#f5f7fa;--text:#333;--text-light:#888;--border:#eee}

/* 通用按钮 */
.btn{padding:10px 20px;border:none;border-radius:8px;font-size:15px;cursor:pointer;transition:opacity .2s;display:inline-block;text-align:center}
.btn-primary{background:var(--primary);color:#fff}
.btn-danger{background:var(--danger);color:#fff}
.btn-cancel{background:#eee;color:#333}
.btn:hover{opacity:.85}

/* 登录/注册 */
.auth-container{display:none;max-width:400px;margin:80px auto;background:#fff;border-radius:16px;padding:30px;box-shadow:0 4px 20px rgba(0,0,0,.08)}
.auth-container h2{text-align:center;margin-bottom:24px;color:#1a1a2e}
.form-group{margin-bottom:16px}
.form-group label{display:block;margin-bottom:6px;font-weight:500;color:#555}
.form-group input{width:100%;padding:10px 14px;border:1px solid #ddd;border-radius:8px;font-size:15px;outline:none}
.form-group input:focus{border-color:var(--primary)}
.phone-row{display:flex;gap:10px}
.phone-row input{flex:1}
.get-code-btn{background:var(--primary);color:#fff;border:none;padding:10px 16px;border-radius:8px;font-size:14px;cursor:pointer;white-space:nowrap}
.get-code-btn:disabled{background:#aaa;cursor:not-allowed}
.auth-btn{width:100%;padding:12px;background:var(--primary);color:#fff;border:none;border-radius:8px;font-size:16px;cursor:pointer;margin-top:8px}
.auth-error{color:var(--danger);text-align:center;margin-top:10px;font-size:14px}

/* 主界面 */
.main-container{display:none;max-width:600px;margin:0 auto}
.user-bar{display:flex;align-items:center;gap:8px;margin-bottom:16px}
.user-bar .left-group{display:flex;align-items:center;gap:8px;flex:1;cursor:pointer}
.user-avatar{width:36px;height:36px;border-radius:50%;object-fit:cover;background:#ddd}
.user-info{font-weight:500;font-size:14px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.text-btn{background:0 0;border:1px solid #ddd;padding:4px 12px;border-radius:16px;cursor:pointer;font-size:13px;color:#555;white-space:nowrap}
h1{font-size:24px;text-align:center;margin-bottom:16px;color:#1a1a2e}
.location-status{display:flex;align-items:center;justify-content:center;gap:8px;margin-bottom:18px;font-size:14px;color:#666}
.location-dot{width:10px;height:10px;border-radius:50%;background:#ccc;animation:pulse 1.5s infinite}
.location-dot.success{background:#4caf50}
@keyframes pulse{0%{box-shadow:0 0 0 0 rgba(76,175,80,.4)}70%{box-shadow:0 0 0 8px rgba(76,175,80,0)}100%{box-shadow:0 0 0 0 rgba(76,175,80,0)}}
.relocate-btn{background:0 0;border:1px solid var(--primary);color:var(--primary);padding:2px 10px;border-radius:12px;font-size:12px;cursor:pointer;margin-left:8px}
.search-box{margin-bottom:16px}
.search-input-wrap{display:flex;background:#fff;border-radius:25px;box-shadow:0 2px 10px rgba(0,0,0,.08);overflow:hidden}
.search-input{flex:1;border:none;padding:12px 18px;font-size:15px;outline:none}
.search-btn{background:var(--primary);color:#fff;border:none;padding:0 20px;font-size:15px;cursor:pointer;white-space:nowrap}

/* 分类导航 */
.category-nav{display:flex;gap:8px;padding:8px 0;margin-bottom:16px;overflow-x:auto;white-space:nowrap;-webkit-overflow-scrolling:touch;scrollbar-width:none;-ms-overflow-style:none}
.category-nav::-webkit-scrollbar{display:none}
@media (min-width:768px){.category-nav{flex-wrap:wrap;justify-content:center;overflow-x:visible;white-space:normal}}
.category-btn{background:#f0f0f0;border:none;padding:6px 14px;border-radius:16px;font-size:13px;white-space:nowrap;cursor:pointer;color:#555;transition:background .2s,color .2s;flex-shrink:0}
.category-btn.active{background:var(--primary);color:#fff}

/* 地点列表 */
.place-list{background:#fff;border-radius:16px;padding:8px 0;box-shadow:0 4px 20px rgba(0,0,0,.06);overflow:hidden}
.place-item{display:flex;flex-direction:column;padding:14px 20px;border-bottom:1px solid var(--border);cursor:pointer}
.place-name{font-weight:600;font-size:16px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:#1a1a2e;margin-bottom:6px}
.place-meta{display:flex;align-items:center;justify-content:space-between;font-size:13px;color:var(--text-light)}
.place-address{flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-right:8px}
.place-distance{font-weight:600;color:var(--primary);background:#f0f4ff;padding:2px 10px;border-radius:20px;white-space:nowrap}
.loading,.empty{text-align:center;padding:40px;color:#999}
.error{color:var(--danger);text-align:center;padding:20px}

/* 全屏 Overlay */
.full-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:rgba(0,0,0,.3);z-index:200;display:none;align-items:stretch;justify-content:center}
.full-panel{background:#fff;width:100%;max-width:600px;height:100%;display:flex;flex-direction:column;box-shadow:0 -4px 20px rgba(0,0,0,.15);overflow:hidden;position:relative}
.full-header{display:flex;align-items:center;padding:16px 20px;border-bottom:1px solid var(--border);background:var(--primary);color:#fff;gap:12px}
.full-header h3{flex:1;font-size:18px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}
.full-back,.full-close{flex-shrink:0;background:rgba(255,255,255,.3);border:none;color:#fff;font-size:18px;width:30px;height:30px;border-radius:50%;cursor:pointer;display:flex;align-items:center;justify-content:center}
.room-like-area{display:flex;align-items:center;gap:6px;margin-left:10px}
.room-like-btn{background:0 0;border:none;cursor:pointer;font-size:18px;display:flex;align-items:center;justify-content:center;filter:grayscale(1) opacity(.5);transition:filter .2s}
.room-like-btn.liked{filter:none}
.room-like-count{font-size:14px;color:#fff}
.full-body{flex:1;overflow-y:auto;padding:15px;display:flex;flex-direction:column}
.load-indicator{text-align:center;padding:10px;color:#999;font-size:13px}

/* 浮动按钮 */
.floating-btn{position:absolute;right:20px;width:40px;height:40px;border-radius:50%;background:rgba(74,108,247,.8);color:#fff;border:none;font-size:20px;cursor:pointer;display:none;align-items:center;justify-content:center;box-shadow:0 2px 8px rgba(0,0,0,.2);z-index:10}
.floating-btn.show{display:flex}
#scrollToBottomBtn,#scrollToTopBtn,#privateScrollToBottomBtn{bottom:80px}

/* 消息气泡 */
.message{display:flex;gap:8px;max-width:85%;margin-bottom:10px;cursor:pointer}
.message.self{align-self:flex-end;flex-direction:row-reverse;margin-right:0;margin-left:auto}
.message.other{align-self:flex-start}
.msg-avatar{width:32px;height:32px;border-radius:50%;object-fit:cover;background:#ddd;flex-shrink:0;cursor:pointer}
.msg-content{display:flex;flex-direction:column;min-width:0}
.message-bubble{padding:10px 14px;border-radius:18px;font-size:15px;line-height:1.4;word-break:break-word;-webkit-user-select:text;user-select:text;-webkit-touch-callout:default}
.self .message-bubble{background:var(--primary);color:#fff;border-bottom-right-radius:4px}
.other .message-bubble{background:#f0f0f0;color:#333;border-bottom-left-radius:4px}
.reply-indicator{font-size:12px;color:#888;margin-bottom:2px;cursor:default;user-select:none}
.message-meta{display:flex;align-items:baseline;gap:8px;margin-top:4px;font-size:11px;color:#999}
.self .message-meta{justify-content:flex-end}

.msg-like-area{display:flex;align-items:center;gap:6px;margin-top:4px}
.msg-like-btn{background:0 0;border:none;cursor:pointer;font-size:16px;display:flex;align-items:center;justify-content:center;filter:grayscale(1) opacity(.5);transition:filter .2s}
.msg-like-btn.liked{filter:none}
.msg-like-count{font-size:12px;color:#888}

/* 输入区域 */
.chat-input-area{display:flex;padding:12px 16px;border-top:1px solid var(--border);gap:10px}
.chat-input{flex:1;border:1px solid #ddd;border-radius:16px;padding:8px 14px;font-size:15px;outline:none;resize:none;overflow-y:hidden;line-height:1.4;max-height:120px;min-height:40px;font-family:inherit}
.chat-input:focus{border-color:var(--primary)}
.chat-send-btn{background:var(--primary);color:#fff;border:none;border-radius:25px;padding:0 20px;font-size:15px;cursor:pointer;white-space:nowrap}
.chat-empty{text-align:center;color:#aaa;padding:30px;font-size:14px}

/* 评论相关 */
.parent-msg-container{border-bottom:1px solid var(--border);margin-bottom:10px}
.comment-toolbar{display:flex;align-items:center;gap:8px;margin-bottom:12px;scroll-margin-top:8px}
.sort-btn{background:#f0f0f0;border:none;padding:6px 14px;border-radius:14px;cursor:pointer;font-size:13px;font-weight:500}
.sort-btn.active{background:var(--primary);color:#fff}
.view-parent-btn{padding:8px 0;font-size:14px;color:var(--primary);cursor:pointer;text-align:center;border-bottom:1px solid var(--border);margin-bottom:10px}

/* 足迹、我喜欢、私聊列表通用项 */
.footprint-item{display:flex;align-items:center;padding:14px 0;border-bottom:1px solid var(--border);cursor:pointer}
.footprint-item>div:first-of-type{flex:1;min-width:0}
.footprint-name{font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex:1}
.footprint-time{font-size:12px;color:#999;margin-left:10px;white-space:nowrap;flex-shrink:0}
.last-msg{font-size:13px;color:#888;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block}

.liked-msg-item{display:flex;align-items:center;gap:10px;padding:12px 0;border-bottom:1px solid var(--border);cursor:pointer}
.liked-msg-item img{width:32px;height:32px;border-radius:50%;object-fit:cover;background:#ddd}
.liked-msg-content{flex:1;min-width:0}
.liked-msg-nickname{font-weight:500;font-size:14px}
.liked-msg-text{font-size:13px;color:#666;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block}
.liked-msg-room{font-size:12px;color:#999;white-space:nowrap;flex-shrink:0}

.liked-tabs{display:flex;gap:10px;margin-bottom:16px}
.liked-tab{background:#f0f0f0;border:none;padding:8px 20px;border-radius:16px;cursor:pointer;font-size:14px}
.liked-tab.active{background:var(--primary);color:#fff}

/* 模态框 */
.modal-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:rgba(0,0,0,.4);z-index:300;display:none;align-items:center;justify-content:center}
.modal{background:#fff;width:90%;max-width:360px;border-radius:16px;padding:24px}
.modal h2{margin-bottom:20px;font-size:20px}
.modal input,.modal textarea{width:100%;padding:10px 14px;border:1px solid #ddd;border-radius:8px;margin-bottom:12px;font-size:15px}
.modal textarea{resize:vertical;min-height:60px}
.modal-btns{display:flex;gap:10px;justify-content:center;margin-top:10px;flex-wrap:wrap}
.modal-btns button{padding:8px 20px;border-radius:8px;border:none;cursor:pointer;font-size:14px}

/* 用户主页 */
.user-home-content{padding:20px;text-align:center}
.user-home-avatar{width:80px;height:80px;border-radius:50%;object-fit:cover;background:#ddd;margin-bottom:12px}
.user-home-nickname{font-size:22px;font-weight:700;color:#1a1a2e;margin-bottom:8px}
.user-home-signature{font-size:15px;color:#888;margin-bottom:20px;white-space:pre-wrap}
.user-home-like-area{display:flex;align-items:center;justify-content:center;margin-bottom:24px;gap:8px}
.user-like-btn{font-size:32px;border:none;background:0 0;cursor:pointer;filter:grayscale(1) opacity(.5);transition:filter .2s}
.user-like-btn.liked{filter:none;animation:heartBeat .6s ease-in-out}
@keyframes heartBeat{0%{transform:scale(1)}25%{transform:scale(1.3)}50%{transform:scale(1)}75%{transform:scale(1.3)}100%{transform:scale(1)}}
.user-likes-count{font-size:20px;font-weight:700;color:var(--danger)}
.user-home-buttons{margin:16px 0;display:flex;gap:10px;justify-content:center;flex-wrap:wrap}
.user-home-public-msgs{text-align:left;margin-top:10px;border-top:1px solid var(--border);padding-top:12px}
.public-msg-item{padding:10px 0;border-bottom:1px solid var(--border);cursor:pointer;transition:background .2s}
.public-msg-time{font-size:13px;color:#888;margin-bottom:4px}
.public-msg-text{font-size:15px;color:#333}
.public-msg-likes{font-size:12px;color:#999}

/* 编辑资料/手机号 */
.profile-edit-content,.phone-edit-content{padding:20px;max-width:400px;margin:0 auto}
.profile-avatar-section{display:flex;flex-direction:column;align-items:center;margin-bottom:24px}
.profile-edit-avatar{width:80px;height:80px;border-radius:50%;object-fit:cover;background:#ddd;margin-bottom:10px}
.profile-change-avatar-btn{color:var(--primary);cursor:pointer;font-size:14px}
.profile-form-group{margin-bottom:16px}
.profile-form-group label{display:block;margin-bottom:6px;font-weight:500;color:#555}
.profile-form-group input,.profile-form-group textarea{width:100%;padding:10px 14px;border:1px solid #ddd;border-radius:8px;font-size:15px;outline:none}
.profile-form-group textarea{resize:vertical;min-height:60px}
.profile-change-phone-btn{background:0 0;border:1px solid var(--primary);color:var(--primary);padding:8px 16px;border-radius:16px;font-size:14px;cursor:pointer;display:block;margin:0 auto 20px}
.profile-form-buttons{display:flex;gap:10px;justify-content:center;margin-top:20px}

/* 图标按钮等 */
.icon-btn{width:36px;height:36px;padding:0;display:flex;align-items:center;justify-content:center;font-size:20px;border-radius:50%;background:#f0f0f0;border:none;margin-left:6px}

/* 我的消息 */
.my-message-item{padding:14px 16px;border-bottom:1px solid var(--border);cursor:pointer;background:#fff;transition:background .2s}
.my-message-header{display:flex;justify-content:space-between;margin-bottom:8px;font-size:13px;color:#888}
.my-message-room{color:var(--primary);font-weight:500}
.my-message-time{white-space:nowrap}
.my-message-text{font-size:15px;color:#333;margin-bottom:6px;word-break:break-word;line-height:1.4}
.my-message-meta{font-size:12px;color:#999}
.msg-comments-preview{margin-top:8px;padding-left:8px;border-left:2px solid var(--primary);font-size:13px;color:#666}
.msg-comment-item{margin-bottom:4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.msg-comment-item strong{color:var(--primary);margin-right:4px}
.toggle-public-btn{background:0 0;border:none;cursor:pointer;padding:2px 4px;border-radius:4px;transition:background .2s;display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px}

/* 屏蔽 */
.blocked-tag{background:#999;color:#fff;border-radius:4px;padding:0 4px;font-size:12px;margin-left:6px}

/* 私信横幅 */
.private-msg-banner{position:fixed;top:20px;right:20px;z-index:10000;background:rgba(0,0,0,.85);color:#fff;border-radius:12px;padding:12px 16px;opacity:0;transform:translateX(20px);transition:opacity .3s,transform .3s;cursor:pointer;box-shadow:0 4px 12px rgba(0,0,0,.3);display:flex;align-items:center;gap:10px;max-width:300px;font-size:14px}
.private-msg-banner.show{opacity:1;transform:translateX(0)}
.banner-close{font-size:18px;line-height:1;cursor:pointer;color:#ccc;padding:0 4px}
.banner-content{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

/* Toast */
.toast-container{position:fixed;top:20px;left:50%;transform:translateX(-50%);z-index:9999;display:flex;flex-direction:column;align-items:center;gap:10px;pointer-events:none;max-width:90vw}
.toast{padding:12px 24px;border-radius:20px;font-size:15px;text-align:center;white-space:normal;word-break:break-word;backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);background:rgba(0,0,0,.55);color:#fff;box-shadow:0 8px 32px rgba(0,0,0,.2);opacity:0;transform:translateY(-10px);transition:opacity .3s,transform .3s;pointer-events:auto;max-width:90vw;display:inline-block}
.toast.show{opacity:1;transform:translateY(0)}
.toast-error{background:rgba(231,76,60,.7)}
.toast-success{background:rgba(76,175,80,.7)}
.toast-info{background:rgba(0,0,0,.55)}

/* 底部菜单 */
.action-sheet-backdrop{position:fixed;top:0;left:0;right:0;bottom:0;background:rgba(0,0,0,.4);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);z-index:10001;display:flex;align-items:flex-end;justify-content:center;opacity:0;transition:opacity .3s}
.action-sheet-backdrop.show{opacity:1}
.action-sheet{width:100%;max-width:500px;margin:0 10px 20px;background:rgba(255,255,255,.9);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);border-radius:20px;overflow:hidden;transform:translateY(100%);transition:transform .3s}
.action-sheet.show{transform:translateY(0)}
.action-sheet-actions{display:flex;flex-direction:column}
.action-sheet-btn{background:0 0;border:none;padding:16px;font-size:16px;text-align:center;border-bottom:1px solid rgba(0,0,0,.1);cursor:pointer;color:#333}
.action-sheet-btn.danger{color:var(--danger);font-weight:500}
.action-sheet-cancel{background:0 0;border:none;padding:16px;font-size:16px;text-align:center;width:100%;cursor:pointer;color:#888;font-weight:500}

/* 确认弹窗 */
.confirm-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:rgba(0,0,0,.3);backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);z-index:10002;display:flex;align-items:center;justify-content:center;opacity:0;transition:opacity .3s}
.confirm-overlay.show{opacity:1}
.confirm-dialog{background:rgba(255,255,255,.95);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);border-radius:20px;padding:24px;width:80%;max-width:320px;text-align:center;transform:scale(.9);transition:transform .3s;box-shadow:0 8px 32px rgba(0,0,0,.2)}
.confirm-dialog.show{transform:scale(1)}
.confirm-title{font-size:18px;font-weight:600;color:#333;margin-bottom:12px}
.confirm-message{font-size:15px;color:#666;margin-bottom:24px;line-height:1.5}
.confirm-buttons{display:flex;gap:12px;justify-content:center}
.confirm-buttons button{padding:10px 24px;border-radius:12px;border:none;font-size:15px;cursor:pointer;transition:opacity .2s}
.confirm-cancel-btn{background:#f0f0f0;color:#333}
.confirm-ok-btn{background:var(--primary);color:#fff}
.confirm-ok-btn.danger{background:var(--danger)}

/* 加载动画 */
@keyframes dotBounce{0%,80%,100%{transform:scale(0)}40%{transform:scale(1)}}
.loading-dots{display:flex;justify-content:center;align-items:center;gap:6px;padding:30px 0}
.loading-dots span{width:10px;height:10px;background-color:var(--primary);border-radius:50%;display:inline-block;animation:dotBounce 1.4s infinite ease-in-out both}
.loading-dots span:nth-child(1){animation-delay:-.32s}
.loading-dots span:nth-child(2){animation-delay:-.16s}
.loading-dots span:nth-child(3){animation-delay:0s}

/* 未读徽章 */
.unread-badge{background:var(--danger);color:#fff;border-radius:10px;padding:0 6px;font-size:12px;margin-left:6px;display:inline-block;vertical-align:middle;line-height:1.4}

/* 私聊提示条 */
.private-chat-notice{background:#fff3cd;color:#856404;text-align:center;padding:10px;font-size:14px;border-top:1px solid #ffeeba;margin:0}

/* 悬停效果（仅桌面端） */
@media (hover:hover){
  .text-btn:hover{background:#f0f0f0}
  .place-item:hover,.footprint-item:hover,.liked-msg-item:hover,.public-msg-item:hover,.my-message-item:hover{background:#f9f9f9}
  .toggle-public-btn:hover{background:#f0f0f0}
  .banner-close:hover{color:#fff}
  .icon-btn:hover{background:#e0e0e0}
  .action-sheet-btn:hover,.action-sheet-cancel:hover{background:rgba(0,0,0,.05)}
}

/* 触摸反馈 */
.text-btn:active,.place-item:active,.footprint-item:active,.liked-msg-item:active,.public-msg-item:active,.my-message-item:active,
.toggle-public-btn:active,.banner-close:active,.icon-btn:active,.action-sheet-btn:active,.action-sheet-cancel:active{opacity:.7;transition:opacity .1s}

/* 移动端去除按钮点击高亮 */
.btn,.user-like-btn,.toggle-public-btn,.block-btn,.action-sheet-btn,.action-sheet-cancel,.category-btn,.sort-btn{-webkit-tap-highlight-color:transparent;outline:none}