/* MoveMates v33 additions */
.invite-empty{text-align:center;padding:34px 18px;color:#7a9288}
.invite-empty .invite-emoji{font-size:34px;display:block;margin-bottom:8px}
.invite-empty strong{display:block;font-size:15px;color:#2f5d50;margin-bottom:6px}
.invite-empty p{font-size:12px;color:#8aa098;margin:0 0 16px}
.inline-input{width:100%;max-width:260px;border:1px solid #d7e5db;border-radius:8px;padding:8px 10px;font:inherit;outline:0}
#fab-record{position:fixed;right:22px;bottom:24px;z-index:250;width:56px;height:56px;border-radius:50%;background:linear-gradient(135deg,#ff8a3d,#f05d3d);color:#fff;font-size:26px;font-weight:700;box-shadow:0 10px 24px rgba(218,96,54,.35);display:grid;place-items:center;transition:transform .15s ease;cursor:pointer;border:0}
#fab-record:active{transform:scale(.94)}
.space-card .space-info small{display:block;font-size:10px;color:#8aa098;margin-top:3px}
.space-card-menu button[data-space-leave]{color:#c55b5b!important}
.setting-row .danger{color:#c55b5b!important}
.mobile-nav{display:none}
.mail-inbox.clean-mail{width:300px;max-width:calc(100vw - 24px)}
.mail-inbox.clean-mail article{border-bottom:1px solid #edf2ee}
.mail-inbox.clean-mail article:last-child{border-bottom:0}
.mail-inbox.clean-mail article p{margin:4px 0}
.mail-inbox.clean-mail article small{color:#9aa6a1}
@media(max-width:680px){
  .mobile-nav{display:flex;position:fixed;left:0;right:0;bottom:0;z-index:300;background:#fff;border-top:1px solid #e5ebe6;box-shadow:0 -8px 24px rgba(30,70,55,.08);padding:6px 4px calc(6px + env(safe-area-inset-bottom));justify-content:space-around}
  .mobile-nav .nav-item{display:flex;flex-direction:column;align-items:center;gap:2px;font-size:10px;color:#7b9189;padding:4px 10px;border-radius:10px;min-width:48px;text-decoration:none}
  .mobile-nav .nav-item span{font-size:17px;color:#8aa29a;line-height:1}
  .mobile-nav .nav-item.active{color:#2e7664;font-weight:700;background:#e8f4ec}
  .mobile-nav .nav-item.active span{color:#2e7664}
  .content-wrap{padding-bottom:96px}
  #fab-record{bottom:86px;right:18px}
}

/* v34: merged 运动数据 + 个人信息 */
.trend-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-top:20px}
.trend-grid .calendar-card{margin:0}
#records-view .record-summary{grid-template-columns:repeat(4,1fr)}
.profile-card{background:#fff;border-radius:15px;padding:24px;box-shadow:var(--shadow);max-width:720px}
.profile-avatar-row{display:flex;align-items:center;gap:16px;margin-bottom:14px}
.profile-avatar-row #profile-avatar-preview{width:72px;height:72px;flex:0 0 72px;font-size:26px;border-radius:50%}
.profile-avatar-row label{flex:1;margin:0}
.profile-card label{display:block;font-size:12px;color:#61746c;margin:12px 0}
.profile-card input,.profile-card select,.profile-card textarea{display:block;width:100%;border:1px solid #e2ebe5;border-radius:9px;padding:10px 11px;margin-top:6px;outline:0;font:inherit;background:#fff}
.profile-card textarea{min-height:74px;resize:vertical}
.profile-card select[multiple]{min-height:96px}
.profile-fields{display:grid;grid-template-columns:1fr 1fr;gap:12px}
#profile-avatar-preview img{width:100%;height:100%;object-fit:cover;border-radius:50%}
#profile-avatar-preview .avatar-placeholder{display:grid;place-items:center;width:100%;height:100%;font-size:26px;color:#fff}
@media(max-width:680px){
  .trend-grid{grid-template-columns:1fr}
  #records-view .record-summary{grid-template-columns:1fr 1fr}
  #records-view .record-summary>div:last-child{grid-column:auto}
  .profile-fields{grid-template-columns:1fr}
}

/* v35: social feed, friends, leaderboard, gamification, weather, extras */
.weather-card{background:#fff;border-radius:15px;padding:20px;box-shadow:var(--shadow);display:flex;flex-direction:column;justify-content:center}
.weather-body{display:flex;align-items:center;gap:12px;margin-top:8px}
.weather-body .weather-icon{font-size:32px}
.weather-body strong{font-size:22px;color:#2f5d50}
.weather-body p{margin:4px 0 0;font-size:12px;color:#7a9288}
.weather-loading,.weather-off{font-size:12px;color:#9aa6a1}
.data-tools{display:flex;justify-content:flex-end;margin:0 0 12px}
.range-switch{display:inline-flex;border:1px solid #dbe7df;border-radius:10px;overflow:hidden;background:#fff}
.range-switch button{padding:7px 16px;font-size:12px;color:#6b837a;background:transparent}
.range-switch button.active{background:#dcefe5;color:#2e7664;font-weight:700}
.overtrain-banner{display:flex;align-items:center;gap:8px;margin:0 0 14px;padding:11px 14px;border-radius:10px;background:#fff3ec;border:1px solid #f3c8a9;color:#b05d3a;font-size:12px;font-weight:600}
.line-chart{min-height:150px}
.trend-svg{width:100%;height:150px}
.trend-val{font-size:10px;fill:#4f8068}
.trend-label{font-size:10px;fill:#9aa6a1}
.report-card{margin-top:18px;background:linear-gradient(135deg,#fff9ed,#effaf2);border:1px solid #e3d9b8;border-radius:14px;padding:18px 20px}
.report-card h2{margin:0 0 8px;font-size:15px;color:#2f5d50}
.report-card p{margin:4px 0;font-size:12px;color:#61746c}
.report-card .report-line{font-weight:700;color:#b57543}
.report-card .outline-btn{margin-top:10px}
.challenge-tabs{display:flex;gap:18px;border-bottom:1px solid #e8eeea;margin-bottom:16px}
.challenge-tabs button{padding:9px 2px;font-size:13px;color:#82908d;position:relative;background:transparent}
.challenge-tabs button.active{color:#2e7664;font-weight:700}
.challenge-tabs button.active::after{content:'';position:absolute;left:0;right:0;bottom:-1px;height:2px;background:#3f8065;border-radius:2px}
.leaderboard-panel{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.board-card{background:#fff;border-radius:14px;padding:18px;box-shadow:var(--shadow)}
.board-card h2{margin:0 0 12px;font-size:15px;color:#2f5d50}
.rank-row{display:flex;align-items:center;gap:10px;padding:9px 0;border-bottom:1px solid #edf2ee}
.rank-row:last-child{border-bottom:0}
.rank-medal{width:28px;font-size:16px;text-align:center}
.rank-name{flex:1;font-size:13px;color:#365c51}
.rank-row strong{font-size:13px;color:#2e7664}
.friend-layout{display:grid;grid-template-columns:1fr 1fr;gap:16px;max-width:920px}
.friend-card{background:#fff;border-radius:14px;padding:18px;box-shadow:var(--shadow)}
.friend-card h2{margin:0 0 10px;font-size:15px;color:#2f5d50}
.friend-card .board-hint{font-size:11px;color:#9aa6a1;margin:-4px 0 10px}
.friend-search{display:flex;gap:8px;margin-bottom:10px}
.friend-search input{flex:1;min-width:0;border:1px solid #dfe9e1;border-radius:8px;padding:9px 11px;outline:0;font:inherit;font-size:12px;background:#fff}
.friend-search-results{display:grid;gap:6px}
.friend-search-result{display:flex;align-items:center;gap:8px;padding:8px;border:1px solid #e2ebe5;background:#f8fbf8;color:#4f866c;border-radius:8px;font-size:12px}
.friend-search-result .avatar{width:26px;height:26px;border:0}
.friend-search-result button{margin-left:auto}
.level-card{margin-top:18px;background:#fff;border-radius:14px;padding:18px 20px;box-shadow:var(--shadow);max-width:720px}
.level-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}
.level-head span{font-size:15px;font-weight:800;color:#2f5d50}
.level-head strong{font-size:15px;color:#e7653d}
.exp-track{height:10px;border-radius:999px;background:#edf3ee;overflow:hidden}
.exp-track span{display:block;height:100%;border-radius:999px;background:linear-gradient(90deg,#6ca88b,#e7a35c);transition:width .4s ease}
.level-card p{font-size:11px;color:#8aa098;margin:8px 0 0}
.badge-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-top:16px;max-width:720px}
.badge-chip{display:flex;flex-direction:column;align-items:center;gap:4px;padding:12px 6px;border:1px solid #e5ece7;border-radius:12px;background:#fbfdfb;text-align:center}
.badge-chip span{font-size:24px}
.badge-chip strong{font-size:11px;color:#61746c}
.badge-chip small{font-size:10px;color:#b7c2bd}
.badge-chip.earned{border-color:#cfe3d6;background:#f0f8f2}
.badge-chip.earned strong{color:#2e7664}
.badge-chip.earned small{color:#5c9a7c}
.custom-sports-box{padding:0 22px 14px;max-width:820px}
.sports-chips{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:10px}
.sport-chip{display:inline-flex;align-items:center;gap:6px;padding:6px 10px;border-radius:999px;background:#e5f0e8;color:#3f8065;font-size:12px;font-weight:600}
.sport-chip button{border:0;background:transparent;color:#6b9582;font-size:14px;cursor:pointer;line-height:1}
.sports-add{display:flex;gap:8px}
.sports-add input{flex:1;min-width:0;border:1px solid #dfe9e1;border-radius:8px;padding:9px 11px;outline:0;font:inherit;font-size:12px}
.profile-pop .modal-close{position:static;margin-left:auto}
.profile-pop-head{display:flex;align-items:center;gap:14px;margin:4px 0 14px}
.profile-pop-head .avatar{width:54px;height:54px;font-size:20px;flex:0 0 54px}
.profile-pop-head h2{margin:0;font-size:18px}
.profile-pop-head p{margin:4px 0 0;font-size:12px;color:#8aa098}
.profile-pop-stats{display:flex;gap:10px;margin:0 0 14px}
.profile-pop-stats span{flex:1;border:1px solid #e5ece7;border-radius:10px;padding:10px;text-align:center;font-size:11px;color:#8aa098}
.profile-pop-stats b{display:block;font-size:18px;color:#2f5d50}
.profile-pop-records{max-height:300px;overflow:auto}
@media(max-width:680px){
  .leaderboard-panel{grid-template-columns:1fr}
  .friend-layout{grid-template-columns:1fr}
  .badge-grid{grid-template-columns:repeat(3,1fr)}
  .weather-card{min-height:110px}
}

/* v37 */
.avatar-upload-row{display:flex;align-items:center;gap:8px;margin-top:8px}
.avatar-upload-row .text-btn{color:#3f8065;font-size:12px;padding:6px 10px;border:1px solid #d7e5db;border-radius:8px}
.official-panel{margin-top:18px;background:#fff;border-radius:14px;padding:20px;box-shadow:var(--shadow);max-width:820px}
.official-panel h2{margin:0 0 6px;font-size:16px;color:#2f5d50}
.official-panel p{font-size:11px;color:#9aa6a1;margin:0 0 12px}
.official-panel input,.official-panel textarea{display:block;width:100%;border:1px solid #e2ebe5;border-radius:9px;padding:10px 11px;margin:8px 0;outline:0;font:inherit}
.official-panel textarea{min-height:80px;resize:vertical}
.rand-status{display:inline-block;padding:4px 10px;border-radius:999px;font-size:11px;font-weight:700}
.rand-status.todo{background:#f0f3f1;color:#82908d}
.rand-status.ongoing{background:#e5f0e8;color:#3f8065}
.rand-status.done{background:#dcefe5;color:#2e7664}
.rand-actions{display:flex;gap:8px;margin-top:12px;flex-wrap:wrap}
.avatar-pop{z-index:300}
.avatar-view{text-align:center;padding:22px}
.avatar-view img{max-width:260px;max-height:260px;border-radius:50%;object-fit:cover}
.avatar-view .avatar{width:120px;height:120px;font-size:40px;margin:0 auto}
.board-card .board-hint{font-size:11px;color:#9aa6a1;margin:-4px 0 10px}

/* v38: data page + sidebar readability */
body.clean-sporty .space-card{background:rgba(255,255,255,.97);position:relative;z-index:1}
body.clean-sporty .space-card .eyebrow{color:#7a9288}
body.clean-sporty .space-card .space-info h3{color:#24433d}
body.clean-sporty .space-card .space-info small{color:#7a9288}
body.clean-sporty .space-card .member-count{color:#7a9288}
body.clean-sporty .tip{background:rgba(255,255,255,.95);color:#2f5d50;position:relative;z-index:1;box-shadow:0 8px 18px rgba(6,63,56,.25)}
body.clean-sporty .tip strong{color:#2f5d50}
body.clean-sporty .tip small{color:#7a9288}
body.clean-sporty .tip>span{color:#e7a35c}
.stats-cards{grid-template-columns:repeat(3,1fr)}
.stat-card{cursor:pointer;transition:transform .12s ease,box-shadow .12s ease}
.stat-card:hover{transform:translateY(-2px);box-shadow:0 14px 30px rgba(32,86,64,.14)}
.goal-card{display:flex;flex-direction:column;gap:8px}
.goal-wrap{display:flex;align-items:center;gap:10px}
.goal-ring{width:64px;height:64px;flex:0 0 64px}
.goal-ring svg{width:100%;height:100%}
.goal-card #goal-pct{font-size:15px;color:#2e7664}
.goal-card #goal-sub{font-size:11px;color:#8aa098;font-weight:600}
.charts-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-top:20px}
.charts-grid .chart-card{margin:0}
.heat-grid{display:grid;grid-template-columns:repeat(12,1fr);grid-auto-flow:column;grid-template-rows:repeat(7,1fr);gap:3px;padding:8px 0}
.heat-cell{aspect-ratio:1;border-radius:3px;background:#eef2ef}
.heat-cell.l1{background:#cfe6d8}
.heat-cell.l2{background:#7fbf9a}
.heat-cell.l3{background:#2f8f66}
.heat-legend{display:flex;align-items:center;gap:4px;justify-content:flex-end;font-size:10px;color:#9aa6a1;margin-top:6px}
.heat-legend i{width:12px;height:12px;border-radius:3px;display:inline-block}
.donut-wrap{display:flex;flex-direction:column;align-items:center;gap:12px;padding:8px 0}
.donut{position:relative;width:150px;height:150px}
.donut svg{width:100%;height:100%}
.donut-center{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center}
.donut-center strong{font-size:20px;color:#2f5d50}
.donut-center small{font-size:10px;color:#9aa6a1}
.donut-legend{display:flex;flex-wrap:wrap;gap:8px;justify-content:center;font-size:11px;color:#61746c}
.donut-legend span{display:inline-flex;align-items:center;gap:5px}
.donut-legend i{width:10px;height:10px;border-radius:3px;display:inline-block}
.stat-modal{max-width:420px}
.stat-modal-list{display:grid;gap:2px;margin-top:6px}
.stat-modal-row{display:flex;justify-content:space-between;padding:9px 2px;border-bottom:1px solid #edf2ee;font-size:13px}
.stat-modal-row span{color:#7a9288}
.stat-modal-row strong{color:#2e5d50}
@media(max-width:680px){
  .stats-cards{grid-template-columns:1fr 1fr}
  .charts-grid{grid-template-columns:1fr}
}

/* v39: empty states + FAB menu + avatar actions */
.empty-state{text-align:center;padding:30px 16px;color:#7a9288}
.empty-state .empty-emoji{font-size:34px;display:block;margin-bottom:8px}
.empty-state strong{display:block;font-size:15px;color:#2f5d50;margin-bottom:6px}
.empty-state p{font-size:12px;color:#8aa098;margin:0 0 16px}
.empty-actions{display:flex;gap:10px;justify-content:center;flex-wrap:wrap}
.fab-wrap{position:fixed;right:22px;bottom:24px;z-index:250}
#fab-record{position:static;width:56px;height:56px;border-radius:50%;background:linear-gradient(135deg,#ff8a3d,#f05d3d);color:#fff;font-size:26px;font-weight:700;box-shadow:0 10px 24px rgba(218,96,54,.35);display:grid;place-items:center;transition:transform .15s ease;cursor:pointer;border:0}
#fab-record:active{transform:scale(.94)}
.fab-menu{position:absolute;right:0;bottom:66px;background:#fff;border:1px solid #dbe7df;border-radius:14px;box-shadow:0 16px 36px rgba(30,70,55,.2);padding:6px;min-width:170px}
.fab-menu button{display:block;width:100%;text-align:left;padding:10px 12px;border:0;background:#fff;border-radius:9px;color:#365c51;font-size:13px;cursor:pointer}
.fab-menu button:hover{background:#eef7f0}
.avatar-actions{display:flex;flex-direction:column;gap:8px}
.avatar-actions .text-btn{color:#3f8065;font-size:12px;padding:7px 12px;border:1px solid #d7e5db;border-radius:8px}
#avatar-remove-btn{color:#c55b5b;border-color:#f0d8d0}
.announce-close{margin-left:8px;border:0;background:transparent;color:#b98a54;font-size:16px;cursor:pointer;line-height:1;padding:2px 4px}
@media(max-width:680px){
  .fab-wrap{right:18px;bottom:86px}
}

/* v40: IA, data tools, leaderboard, friends, profile, settings */
.range-hint{font-size:11px;color:#9aa6a1;margin-left:12px;align-self:center}
.data-tools .outline-btn{margin-left:auto}
.event-status{display:inline-block;padding:2px 8px;border-radius:999px;font-size:10px;font-weight:700;margin-left:8px;background:#eef4f0;color:#7a9288}
.event-status.joined{background:#e5f0e8;color:#3f8065}
.event-status.waitlist{background:#fff3e0;color:#b57543}
.event-status.full{background:#ffe9e4;color:#c05d45}
.lb-tools{display:flex;gap:8px;margin-bottom:4px}
.lb-tools button{padding:6px 14px;border:1px solid #dbe7df;border-radius:999px;font-size:12px;color:#6b837a;background:#fff}
.lb-tools button.active{background:#dcefe5;color:#2e7664;font-weight:700;border-color:#9dc5aa}
.friend-search select{display:block;width:100%;border:1px solid #dfe9e1;border-radius:8px;padding:8px 10px;margin-top:8px;background:#fff;font:inherit;font-size:12px;color:#365c51}
.friend-feed-row{display:flex;align-items:center;gap:10px;padding:8px 0;border-bottom:1px solid #edf2ee}
.friend-feed-row:last-child{border-bottom:0}
.friend-feed-row .avatar{width:26px;height:26px;flex:0 0 26px}
.friend-feed-row strong{display:block;font-size:12px;color:#365c51}
.friend-feed-row span{font-size:11px;color:#8aa098}
.sport-tags{display:flex;flex-wrap:wrap;gap:6px;margin:6px 0}
#sport-add{display:block;width:100%;border:1px solid #dfe9e1;border-radius:8px;padding:8px;background:#fff;font:inherit;font-size:12px}
.badge-chip.locked{opacity:.55;filter:grayscale(.7)}
.badge-chip.locked:hover{opacity:1;filter:grayscale(0)}
.group-members-card{margin-top:18px;background:#fff;border-radius:14px;padding:18px 20px;box-shadow:var(--shadow);max-width:820px}
.group-members-card h2{margin:0 0 10px;font-size:15px;color:#2f5d50}
.inline-control{display:flex;gap:8px;align-items:center}
.inline-control input{width:90px;border:1px solid #dfe9e1;border-radius:8px;padding:7px 9px;font:inherit;font-size:12px}
.weather-actions{display:flex;gap:6px;flex-wrap:wrap;margin-top:8px}
.weather-actions input{flex:1;min-width:90px;border:1px solid #dfe9e1;border-radius:8px;padding:7px 9px;font:inherit;font-size:12px}
.weather-actions .text-btn{color:#3f8065;font-size:12px;padding:6px 10px;border:1px solid #d7e5db;border-radius:8px}

/* v41: templates, report image, mood, badges tiers, weather reco */
.report-extra{font-weight:700;color:#2f8f66}
.weather-reco{margin-top:6px;font-weight:700;color:#b57543}
#record-mood{display:block;width:100%;border:1px solid #dfe9e1;border-radius:8px;padding:8px;background:#fff;font:inherit;font-size:12px}
.badge-chip.tier-3{border-color:#f2d08c;background:#fff8e6}
.badge-chip.tier-2{border-color:#cfd8e8;background:#f4f7fc}
.badge-chip.tier-1{border-color:#e8c9a8;background:#fdf4ea}

/* v42: record extras, feed photo, ongoing strip */
.record-extras{display:flex;gap:8px;margin-bottom:12px;flex-wrap:wrap}
.record-extras .outline-btn{padding:8px 12px;font-size:12px}
.photo-preview{display:block;max-width:100%;max-height:180px;border-radius:10px;margin:10px 0}
.feed-photo{margin-top:10px}
.feed-photo img{width:100%;max-height:220px;object-fit:cover;border-radius:10px;cursor:zoom-in}
#ongoing-strip .section-heading{margin-top:8px}
#ongoing-strip{margin-bottom:14px}

/* v43: official history */
.official-history{margin-top:18px;border-top:1px solid #edf2ee;padding-top:14px}
.official-history h3{margin:0 0 10px;font-size:14px;color:#2f5d50}
.official-post-row{display:flex;justify-content:space-between;gap:12px;padding:10px 0;border-bottom:1px solid #edf2ee;align-items:flex-start}
.official-post-row strong{font-size:13px;color:#365c51}
.official-post-row p{font-size:12px;color:#61746c;margin:3px 0}
.official-post-row small{font-size:10px;color:#9aa6a1}
.official-post-actions{display:flex;gap:8px;white-space:nowrap}
.official-post-actions .danger{color:#c55b5b}
