*,*::before,*::after{margin:0;padding:0;box-sizing:border-box;-webkit-tap-highlight-color:transparent}
:root{
  --bg:#0D0D0D;--bg2:#151715;
  --surface:#1A1A1A;--surface2:rgba(255,255,255,.07);
  --border:rgba(255,255,255,.05);--borderStrong:rgba(255,255,255,.1);
  --accent:#c8ff3e;--accentGlow:rgba(200,255,62,.15);--accentDim:rgba(200,255,62,.08);
  --accentSoft:rgba(200,255,62,.04);
  --warn:#ffa94d;--danger:#ff5c5c;
  --protein:#c8ff3e;--carbs:#5cc8ff;--fat:#ffa94d;--calories:#c89bff;
  --text:#FFFFFF;--textDim:rgba(255,255,255,.45);--textFaint:rgba(255,255,255,.2);
  --divider:#1A1C1A;
  --r:0;--rs:0;--rxs:0;
  --navH:64px;
  --fontD:'Montserrat','Oswald', 'Helvetica Neue', 'PingFang SC', 'Microsoft YaHei', system-ui, sans-serif;--fontB:'Montserrat','Helvetica Neue', 'PingFang SC', 'Microsoft YaHei', 'Noto Sans SC', system-ui, -apple-system, BlinkMacSystemFont, sans-serif;
}
html{font-size:15px;-webkit-text-size-adjust:100%}
body{
  font-family:var(--fontB);color:var(--text);
  background:
    radial-gradient(ellipse 80% 40% at 50% 0%,rgba(200,255,62,.03),transparent),
    var(--bg);
  min-height:100vh;min-height:100dvh;
  overflow-x:hidden;line-height:1.5;
  -webkit-font-smoothing:antialiased;
}
#app{max-width:480px;margin:0 auto;min-height:100vh;min-height:100dvh;position:relative;padding-bottom:calc(var(--navH) + 24px + env(safe-area-inset-bottom));background:var(--bg)}

/* ===== HEADER ===== */
.app-header{
  padding:calc(env(safe-area-inset-top) + 14px) 18px 10px;
  display:flex;align-items:center;justify-content:space-between;
  position:sticky;top:0;z-index:50;
  background:var(--bg);
  border-bottom:1px solid var(--divider);
}
.brand{font-family:var(--fontD);font-weight:700;font-size:20px;letter-spacing:2px;color:var(--text)}
.brand span{color:var(--accent)}
.header-right{display:flex;align-items:center;gap:12px}
.icon-btn{
  width:34px;height:34px;border:none;background:var(--surface);
  border-radius:0;color:var(--textDim);cursor:pointer;
  display:flex;align-items:center;justify-content:center;font-size:16px;
  transition:all .2s;
  border:1px solid var(--border);
}
.icon-btn:active{transform:scale(.9);background:var(--surface2)}

/* ===== TABS ===== */
.tab{display:none;padding:0 16px 24px;animation:tabIn .35s ease}
.tab.active{display:block}
#tab-today{padding-top:14px}
@keyframes tabIn{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}

/* ===== CARDS（图二：深灰背景色块分层，弱化边框线） ===== */
.card{
  background:var(--surface);border:1px solid rgba(255,255,255,.04);
  border-radius:var(--r);padding:16px;margin-bottom:12px;
  transition:border-color .25s;
}
.card-title{
  font-size:12px;font-weight:700;color:var(--textDim);
  text-transform:uppercase;letter-spacing:1px;margin-bottom:12px;
  display:flex;align-items:center;gap:6px;
}
.card-title::before{content:'';width:3px;height:12px;background:var(--accent);border-radius:2px}

/* ===== TODAY: DATE BAR ===== */
.date-bar{
  display:flex;align-items:center;justify-content:space-between;
  margin-bottom:8px;padding:0 2px;
}
.date-info h2{font-family:var(--fontD);font-weight:600;font-size:24px;letter-spacing:.5px}
.date-info p{font-size:12px;color:var(--textDim);margin-top:2px}
/* ===== DATE BAR ===== */
.day-toggle{
  display:flex;align-items:center;gap:0;
  background:var(--bg2);border:1px solid var(--border);
  border-radius:0;padding:0;
}
.day-toggle span{font-size:12px;font-weight:600;padding:5px 14px;border-radius:0;transition:none}
.day-toggle .active{background:var(--accent);color:#0C0E0C}
.day-toggle .inactive{display:none}

/* ===== CHECKIN GRID ===== */
.checkin-summary{
  display:flex;align-items:center;justify-content:space-between;
  margin-bottom:10px;
}
.checkin-summary .count{font-family:var(--fontD);font-size:16px;font-weight:600}
.checkin-summary .count .done{color:var(--accent)}
.checkin-summary .count .total{color:var(--textDim)}
/* checkin-grid moved to style4 section — duplicate removed */

/* ===== MACRO RINGS ===== */
.macro-rings{display:grid;grid-template-columns:repeat(2,1fr);gap:8px}
.macro-rings .macro-ring-item:nth-child(5){grid-column:1/-1;max-width:340px;width:100%;margin:0 auto}
.macro-ring-item{
  display:flex;align-items:center;gap:12px;
  background:var(--bg2);border:1px solid var(--border);
  border-radius:var(--rs);padding:12px;
}
.ring-svg{width:56px;height:56px;flex-shrink:0;position:relative}
.ring-svg svg{width:100%;height:100%}
.ring-center{
  position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);
  text-align:center;line-height:1;
}
.ring-center .rv{font-family:var(--fontD);font-size:14px;font-weight:600;display:block}
.ring-center .rt{font-size:8px;color:var(--textDim);font-family:var(--fontD)}
.ring-info{flex:1;min-width:0}
.ring-info .rl{font-size:11px;color:var(--textDim);font-weight:500}
.ring-info .rv2{font-family:var(--fontD);font-size:17px;font-weight:600;margin-top:1px}
.ring-info .rg{font-size:10px;color:var(--textFaint);margin-top:1px}
.ring-info .rg.over{color:var(--danger)}
.ring-info .rg.ok{color:var(--accent)}

/* ===== REMINDER ===== */
.reminder{
  background:linear-gradient(135deg,rgba(200,255,62,.05),rgba(200,255,62,.02));
  border:1px solid rgba(200,255,62,.1);
  border-radius:var(--rs);padding:12px 14px;
  display:flex;gap:10px;align-items:center;
}
.reminder .ri-icon{font-size:18px;flex-shrink:0;margin-top:0}
.reminder .ri-text{font-size:12px;line-height:1.5;color:var(--text)}
.reminder .ri-text b{color:var(--accent);font-weight:600}

/* ===== NUTRITION TAB ===== */
.macro-targets{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:12px}
.mt-pill{
  flex:1 1 calc(50% - 8px);min-width:0;background:var(--surface);border:1px solid var(--border);
  border-radius:var(--rs);padding:10px 8px;text-align:center;
}
.macro-targets .mt-pill:first-child{flex:1 1 100%;max-width:340px;margin:0 auto}
.mt-pill .mt-label{font-size:9px;color:var(--textDim);text-transform:uppercase;letter-spacing:.5px}
.mt-pill .mt-value{font-family:var(--fontD);font-size:18px;font-weight:600;margin-top:3px}
.mt-pill .mt-unit{font-size:10px;color:var(--textDim);font-family:var(--fontB)}
.mt-pill.p .mt-value{color:var(--protein)}
.mt-pill.c .mt-value{color:var(--carbs)}
.mt-pill.f .mt-value{color:var(--fat)}
.mt-pill.k .mt-value{color:var(--calories)}
.mt-pill.e .mt-value{color:#c8ff3e}

.meal-list{display:flex;flex-direction:column;gap:6px}
.meal-item{
  display:flex;align-items:center;justify-content:space-between;
  padding:10px 12px;background:var(--surface);border:1px solid var(--border);
  border-radius:var(--rs);transition:all .2s;
}
.meal-item.checked{border-color:rgba(200,255,62,.2);background:var(--accentDim)}
.meal-item .mi-left{display:flex;align-items:center;gap:10px}
.meal-item .mi-icon{font-size:18px}
.meal-item .mi-name{font-size:13px;font-weight:500}
.meal-item .mi-macros{font-size:10px;color:var(--textDim);margin-top:1px;font-family:var(--fontD)}
.meal-item .mi-status{font-size:11px;font-weight:600}
.meal-item.checked .mi-status{color:var(--accent)}
.meal-item:not(.checked) .mi-status{color:var(--textFaint)}
.meal-item .mi-cat{
  display:inline-block;font-size:9px;padding:1px 5px;border-radius:4px;
  background:var(--surface2);color:var(--textDim);margin-left:4px;vertical-align:middle;
}

.food-added{display:flex;flex-direction:column;gap:6px;margin-bottom:10px}
.food-added-item{
  display:flex;align-items:center;justify-content:space-between;
  padding:8px 12px;background:var(--surface2);border-radius:var(--rxs);
  animation:slideIn .3s ease;
}
@keyframes slideIn{from{opacity:0;transform:translateX(-8px)}to{opacity:1;transform:translateX(0)}}
.food-added-item .fa-info{display:flex;align-items:center;gap:8px}
.food-added-item .fa-emoji{width:20px;height:20px;flex-shrink:0;display:flex;align-items:center;justify-content:center;color:var(--accent)}
.food-added-item .fa-emoji svg{width:18px;height:18px}
.food-added-item .fa-name{font-size:12px;font-weight:500}
.food-added-item .fa-qty{font-size:10px;color:var(--textDim);margin-left:4px}
.food-added-item .fa-macros{font-size:10px;color:var(--textDim);font-family:var(--fontD)}
.food-added-item .fa-remove{
  width:22px;height:22px;border:none;background:rgba(255,92,92,.15);
  color:var(--danger);border-radius:50%;cursor:pointer;font-size:12px;
  display:flex;align-items:center;justify-content:center;
}
.food-added-item .fa-remove:active{transform:scale(.85)}

.add-food-btn{
  width:100%;padding:12px;background:var(--surface);
  border:1px dashed var(--borderStrong);border-radius:var(--rs);
  color:var(--textDim);font-size:13px;font-weight:500;cursor:pointer;
  transition:all .2s;font-family:var(--fontB);
}
.add-food-btn:active{background:var(--surface2);border-color:var(--accent)}
.add-food-btn span{color:var(--accent);font-weight:700}

/* ===== BOTTOM SHEET ===== */
.sheet-overlay{
  position:fixed;inset:0;background:rgba(0,0,0,.08);
  backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);
  z-index:90;opacity:0;pointer-events:none;transition:opacity .3s;
}
.sheet-overlay.show{opacity:1;pointer-events:auto}
.food-sheet{
  position:fixed;bottom:0;left:50%;transform:translate(-50%,100%);
  width:100%;max-width:480px;
  background:var(--bg);border:1px solid var(--borderStrong);
  border-bottom:none;border-radius:0;
  padding:16px 16px calc(20px + env(safe-area-inset-bottom));
  z-index:100;transition:transform .35s cubic-bezier(.32,.72,0,1);
  max-height:70vh;overflow-y:auto;overscroll-behavior:contain;
}
.food-sheet.show{transform:translate(-50%,0)}
.sheet-handle{
  width:36px;height:4px;background:var(--borderStrong);
  border-radius:0;margin:0 auto 14px;
}
.sheet-title{font-size:15px;font-weight:700;margin-bottom:14px;color:var(--text)}
.food-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:8px}
.food-card{
  display:flex;align-items:center;gap:10px;
  padding:12px;background:var(--bg2);border:1px solid var(--border);
  border-radius:var(--rs);cursor:pointer;transition:all .2s;
}
.food-card:active{transform:scale(.96);background:var(--accentDim);border-color:var(--accent)}
.food-card .fc-emoji{width:24px;height:24px;flex-shrink:0;display:flex;align-items:center;justify-content:center;color:var(--accent)}
.food-card .fc-emoji svg{width:22px;height:22px}
.food-card .fc-info{flex:1}
.food-card .fc-name{font-size:12px;font-weight:500}
.food-card .fc-macros{font-size:10px;color:var(--textDim);font-family:var(--fontD);margin-top:1px}
.food-card .fc-macros .fp{color:var(--protein)}
.food-card .fc-add{
  width:24px;height:24px;border-radius:50%;
  background:var(--accentDim);color:var(--accent);
  border:1px solid rgba(200,255,62,.2);
  display:flex;align-items:center;justify-content:center;
  font-size:16px;font-weight:300;flex-shrink:0;
}

/* ===== NUTRITION DRAWER ===== */
.nutrition-drawer{
  position:fixed;bottom:0;left:50%;transform:translate(-50%,100%);
  width:100%;max-width:480px;
  background:var(--bg);border:1px solid var(--borderStrong);
  border-bottom:none;border-radius:0;
  padding:16px 16px calc(20px + env(safe-area-inset-bottom));
  z-index:110;transition:transform .35s cubic-bezier(.32,.72,0,1);
  max-height:90vh;overflow-y:auto;-webkit-overflow-scrolling:touch;overscroll-behavior:contain;
}
.nutrition-drawer.show{transform:translate(-50%,0)}
/* 抽屉顶部遮挡条：覆盖抽屉上方露出的底层内容 */
.drawer-top-mask{
  position:fixed;left:0;right:0;top:0;
  background:transparent;
  backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);
  z-index:105;pointer-events:none;
  height:0;transition:height .35s cubic-bezier(.32,.72,0,1);
}
.exercise-drawer{
  position:fixed;bottom:0;left:50%;transform:translate(-50%,100%);
  width:100%;max-width:480px;
  background:var(--bg);border:1px solid var(--borderStrong);
  border-bottom:none;border-radius:0;
  padding:16px 16px calc(20px + env(safe-area-inset-bottom));
  z-index:110;transition:transform .35s cubic-bezier(.32,.72,0,1);
  max-height:90vh;overflow-y:auto;-webkit-overflow-scrolling:touch;overscroll-behavior:contain;
}
.exercise-drawer.show{transform:translate(-50%,0)}
.nd-sticky{position:sticky;top:0;z-index:20;background:var(--bg);margin:-16px -16px 18px;padding:16px 16px 0}
.nd-header{display:flex;align-items:center;gap:10px;margin-bottom:18px;padding:2px 0 10px}
.nd-icon{width:36px;height:36px;flex-shrink:0;display:flex;align-items:center;justify-content:center;color:var(--accent)}
.nd-icon svg{width:22px;height:22px}
.nd-title{font-size:17px;font-weight:700;color:var(--text);flex:1;min-width:0}
.nd-close{width:32px;height:32px;flex-shrink:0;background:none;border:none;cursor:pointer;color:#999;display:flex;align-items:center;justify-content:center;padding:0}
.nd-close svg{width:20px;height:20px}
.nd-close:active{opacity:.6}
.nd-fields{display:flex;flex-direction:column;gap:10px;margin-bottom:8px}
.nd-field{display:flex;align-items:center;gap:12px}
.nd-field label{font-size:13px;color:#b0b0b0;font-weight:500;width:56px;flex-shrink:0}
.nd-input-wrap{display:flex;align-items:center;gap:8px;background:var(--surface2);padding:0 12px;height:44px;flex:1;min-width:0}
.nd-input-wrap .edit-input{
  flex:1;background:none;border:none;outline:none;padding:0;
  color:var(--text);font-size:17px;font-family:var(--fontD);font-weight:600;
  -webkit-appearance:none;-moz-appearance:textfield;
}
.nd-input-wrap .edit-input::-webkit-outer-spin-button,
.nd-input-wrap .edit-input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}
.nd-input-wrap .edit-input:focus{border:none}
.nd-unit{font-size:13px;color:#666;font-family:var(--fontB);flex-shrink:0}
.nd-hint{font-size:10px;color:var(--textFaint);margin-bottom:12px;line-height:1.4}
.nd-btn-row{display:flex;gap:10px;margin-top:12px}
.nd-btn-cancel{
  flex:1;padding:12px;background:var(--surface2);color:var(--text);
  border:1px solid var(--borderStrong);border-radius:var(--rs);
  font-size:15px;font-weight:600;cursor:pointer;font-family:var(--fontB);
  transition:all .2s;
}
.nd-btn-cancel.danger{color:var(--danger);border-color:rgba(255,107,107,.35);background:rgba(255,107,107,.06)}
.nd-btn-cancel:active{transform:scale(.97);opacity:.85}
.nd-btn-row .nd-btn-confirm{flex:1;width:auto;margin-top:0}

/* ===== AI FOOD RECOGNITION DRAWER ===== */
.ai-food-drawer{
  position:fixed;bottom:0;left:50%;transform:translate(-50%,100%);
  width:100%;max-width:480px;
  background:var(--bg);border:1px solid var(--borderStrong);
  border-bottom:none;border-radius:0;
  padding:16px 16px calc(20px + env(safe-area-inset-bottom));
  z-index:120;transition:transform .35s cubic-bezier(.32,.72,0,1);
  max-height:86vh;display:flex;flex-direction:column;
}
.ai-food-drawer.show{transform:translate(-50%,0)}
.ai-tabs{display:flex;gap:8px;margin-bottom:14px;flex-shrink:0}
.ai-tab{
  flex:1;padding:11px 0;border-radius:var(--rs);
  background:var(--surface2);color:var(--textDim);
  border:1px solid var(--borderStrong);font-size:14px;font-weight:600;
  cursor:pointer;font-family:var(--fontB);transition:all .2s;
  display:flex;align-items:center;justify-content:center;gap:6px;
}
.ai-tab svg{width:17px;height:17px}
.ai-tab.active{background:rgba(255,169,77,.14);color:var(--accent);border-color:rgba(255,169,77,.4)}
/* 步骤容器：占据剩余空间，内部 flex 居中 */
.ai-step-body{
  flex:1;display:flex;flex-direction:column;justify-content:center;
  min-height:0;overflow:hidden;
}
/* 输入步骤 */
.ai-input-step{display:flex;flex-direction:column;gap:12px;animation:fadeIn .25s ease}
@keyframes fadeIn{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}
.ai-upload-box{
  border:1.5px dashed var(--borderStrong);border-radius:var(--rs);
  padding:20px 16px;text-align:center;cursor:pointer;
  transition:all .2s;background:var(--surface2);
}
.ai-upload-box:active{opacity:.7}
.ai-upload-box .ai-upload-icon{width:36px;height:36px;margin:0 auto 8px;color:var(--accent);display:flex;align-items:center;justify-content:center}
.ai-upload-box .ai-upload-icon svg{width:32px;height:32px}
.ai-upload-box .ai-upload-title{font-size:14px;font-weight:600;color:var(--text);margin-bottom:2px}
.ai-upload-box .ai-upload-sub{font-size:11px;color:var(--textFaint)}
.ai-preview{position:relative;border-radius:var(--rs);overflow:hidden}
.ai-preview img{width:100%;display:block;max-height:200px;object-fit:cover}
.ai-preview-remove{
  position:absolute;top:8px;right:8px;width:28px;height:28px;border-radius:50%;
  background:rgba(0,0,0,.6);border:none;color:#fff;cursor:pointer;
  display:flex;align-items:center;justify-content:center;
}
.ai-preview-remove svg{width:16px;height:16px}
.ai-textarea{
  width:100%;min-height:80px;resize:none;box-sizing:border-box;
  background:var(--surface2);border:1px solid var(--borderStrong);
  border-radius:var(--rs);padding:10px 12px;color:var(--text);
  font-size:14px;font-family:var(--fontB);line-height:1.5;outline:none;
}
.ai-textarea:focus{border-color:var(--accent)}
.ai-textarea::placeholder{color:var(--textFaint)}
.ai-examples{display:flex;flex-wrap:wrap;gap:6px}
.ai-example{
  font-size:11px;color:var(--textDim);background:var(--surface2);
  border:1px solid var(--borderStrong);border-radius:20px;padding:4px 10px;cursor:pointer;transition:all .2s;
}
.ai-example:active{opacity:.7}
.ai-submit-btn{
  width:100%;padding:12px 0;border:none;border-radius:var(--rs);
  background:var(--accent);color:#0a0c0a;font-size:14px;font-weight:700;
  cursor:pointer;font-family:var(--fontB);transition:all .2s;
  display:flex;align-items:center;justify-content:center;gap:8px;
}
.ai-submit-btn:disabled{opacity:.5}
.ai-submit-btn svg{width:16px;height:16px}
/* 加载步骤：居中展示 */
.ai-loading-step{display:flex;flex-direction:column;align-items:center;gap:14px;padding:26px 0;animation:fadeIn .25s ease}
.ai-progress-track{
  width:70%;max-width:240px;height:6px;border-radius:3px;
  background:var(--surface2);overflow:hidden;
}
.ai-progress-bar{
  height:100%;border-radius:3px;
  background:linear-gradient(90deg,var(--accent),var(--blue),var(--accent));
  background-size:200% 100%;
  width:0%;
  transition:width .35s ease;
}
.ai-loading-text{font-size:13px;color:var(--textDim)}
/* 结果步骤 */
.ai-result-step{display:flex;flex-direction:column;gap:12px;animation:fadeIn .25s ease}
.ai-result-card{
  background:var(--surface2);border:1px solid var(--borderStrong);
  border-radius:var(--rs);padding:14px;
}
.ai-result-foods{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:12px}
.ai-result-food{
  font-size:12px;color:var(--text);background:rgba(255,169,77,.12);
  border:1px solid rgba(255,169,77,.3);border-radius:20px;padding:4px 10px;
}
.ai-result-nutri{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}
.ai-result-nutri-item{text-align:center}
.ai-result-nutri-item .arn-val{font-size:17px;font-weight:700;font-family:var(--fontD)}
.ai-result-nutri-item .arn-val.p{color:var(--protein)}
.ai-result-nutri-item .arn-val.c{color:var(--carbs)}
.ai-result-nutri-item .arn-val.f{color:var(--fat)}
.ai-result-nutri-item .arn-val.k{color:var(--calories)}
.ai-result-nutri-item .arn-label{font-size:10px;color:var(--textFaint);margin-top:2px}
.ai-fill-btn{
  width:100%;padding:12px 0;border:none;border-radius:var(--rs);
  background:var(--accent);color:#0a0c0a;font-size:14px;font-weight:700;
  cursor:pointer;font-family:var(--fontB);transition:all .2s;
}
.ai-fill-btn:active{transform:scale(.97)}
/* 错误步骤 */
.ai-error-step{display:flex;flex-direction:column;align-items:center;gap:10px;padding:16px 0;animation:fadeIn .25s ease}
.ai-error-step .ai-error-icon{width:36px;height:36px;color:var(--danger);display:flex;align-items:center;justify-content:center}
.ai-error-step .ai-error-icon svg{width:32px;height:32px}
.ai-error-step .ai-error-text{font-size:13px;color:var(--danger);text-align:center;line-height:1.5}
.ai-error-step .ai-error-retry{
  padding:8px 20px;border:1px solid var(--borderStrong);border-radius:var(--rs);
  background:var(--surface2);color:var(--text);font-size:13px;font-weight:600;
  cursor:pointer;font-family:var(--fontB);transition:all .2s;
}
.ai-error-step .ai-error-retry:active{opacity:.7}
/* 营养抽屉中的 AI 按钮 */
.ai-ai-btn{
  width:100%;padding:12px 0;margin-bottom:12px;border:none;border-radius:var(--rs);
  background:linear-gradient(135deg,rgba(255,169,77,.2),rgba(200,155,255,.2));
  border:1px solid rgba(255,169,77,.35);color:var(--accent);
  font-size:14px;font-weight:700;cursor:pointer;font-family:var(--fontB);
  display:flex;align-items:center;justify-content:center;gap:8px;transition:all .2s;
}
.ai-ai-btn svg{width:17px;height:17px}
.ai-ai-btn:active{transform:scale(.97);opacity:.85}

/* ===== TRENDS TAB ===== */
.chart-container{position:relative;margin-top:8px}
.chart-svg{width:100%;height:auto;display:block}
.chart-labels{
  display:flex;justify-content:space-between;
  font-size:10px;color:var(--textFaint);font-family:var(--fontD);
  margin-top:6px;padding:0 4px;
}
.chart-legend{
  display:flex;align-items:center;justify-content:space-between;
  margin-bottom:8px;
}
.chart-legend .cl-current{display:flex;align-items:baseline;gap:4px}
.chart-legend .cl-current .val{font-family:var(--fontD);font-size:22px;font-weight:600}
.chart-legend .cl-current .unit{font-size:12px;color:var(--textDim)}
.chart-legend .cl-target{
  font-size:11px;color:var(--textDim);
  display:flex;align-items:center;gap:4px;
}
.chart-legend .cl-target::before{
  content:'';width:12px;height:2px;background:var(--warn);
  border-radius:1px;
}

.heatmap{display:flex;flex-direction:column;gap:4px;margin-top:8px}
.heatmap-row{display:flex;gap:4px;align-items:center}
.heatmap-day-label{font-size:9px;color:var(--textFaint);width:18px;text-align:right;font-family:var(--fontD)}
.heatmap-cells{display:flex;gap:3px;flex:1}
.heatmap-cell{
  flex:1;aspect-ratio:1;border-radius:3px;
  background:var(--surface);border:1px solid var(--border);
  transition:transform .2s;
}
.heatmap-cell.l1{background:rgba(200,255,62,.15)}
.heatmap-cell.l2{background:rgba(200,255,62,.3)}
.heatmap-cell.l3{background:rgba(200,255,62,.5)}
.heatmap-cell.l4{background:rgba(200,255,62,.8)}
.heatmap-cell.today{outline:2px solid var(--accent);outline-offset:1px}
.heatmap-legend{
  display:flex;align-items:center;gap:6px;
  font-size:10px;color:var(--textDim);margin-top:10px;justify-content:flex-end;
}
.heatmap-legend .hm-cell{width:10px;height:10px;border-radius:2px}

.week-stats{display:grid;grid-template-columns:repeat(2,1fr);gap:8px}
.ws-item{
  background:var(--surface);border:1px solid var(--border);
  border-radius:var(--rs);padding:12px;
}
.ws-item .ws-label{font-size:10px;color:var(--textDim);text-transform:uppercase;letter-spacing:.5px}
.ws-item .ws-value{font-family:var(--fontD);font-size:20px;font-weight:600;margin-top:4px}
.ws-item .ws-sub{font-size:10px;color:var(--textFaint);margin-top:2px}

.empty-state{
  text-align:center;padding:32px 16px;color:var(--textFaint);
}
.empty-state .es-icon{font-size:36px;margin-bottom:8px;opacity:.5}
.empty-state .es-text{font-size:12px}

/* ===== PLAN TAB ===== */
/* 训练日/休息日计划：时间轴卡片（按截图样式） */
.plan-timeline{position:relative;padding-left:24px}
.plan-timeline::before{
  content:'';position:absolute;left:5px;top:8px;bottom:8px;
  width:2px;background:var(--accent);opacity:.4;
}
.plan-tl-item{position:relative;margin-bottom:16px}
.plan-tl-item:last-child{margin-bottom:0}
.plan-tl-node{
  position:absolute;left:-24px;top:5px;
  width:12px;height:12px;background:var(--accent);
  box-shadow:0 0 8px rgba(200,255,62,.55);
}
.plan-tl-time{
  font-family:var(--fontD);font-size:13px;font-weight:700;
  color:var(--accent);margin-bottom:6px;letter-spacing:.5px;
}
.plan-tl-card{
  background:var(--surface);border:1px solid rgba(255,255,255,.05);
  border-radius:12px;padding:12px 14px;
}
.plan-tl-head{display:flex;align-items:flex-start;justify-content:space-between;gap:10px}
.plan-tl-title{font-size:16px;font-weight:700;color:var(--text);line-height:1.35;flex:1}
.plan-tl-actions{display:flex;gap:6px;flex-shrink:0}
.plan-tl-btn{
  width:34px;height:34px;border-radius:8px;border:1px solid var(--borderStrong);
  background:var(--surface2);color:var(--accent);cursor:pointer;
  display:flex;align-items:center;justify-content:center;
  transition:all .15s;
}
.plan-tl-btn:active{transform:scale(.9);background:var(--accentDim)}
.plan-tl-btn svg{width:16px;height:16px}
.plan-tl-btn.danger{color:var(--danger)}
.plan-tl-desc{font-size:13px;color:var(--textDim);margin-top:6px;line-height:1.5}
.plan-tl-tags{display:flex;flex-wrap:wrap;gap:6px;margin-top:10px}
.plan-tl-tag{
  padding:3px 10px;border-radius:6px;border:1px solid var(--accent);
  color:var(--accent);font-size:12px;background:rgba(200,255,62,.06);
}
/* 编辑模式 */
.plan-edit-item{
  background:var(--surface2);border:1px solid var(--borderStrong);
  border-radius:12px;padding:12px;margin-bottom:12px;
}
.plan-edit-row{display:flex;gap:8px;align-items:center;margin-bottom:8px}
.plan-edit-row .edit-input{flex:1}
.plan-edit-item .edit-input{margin-bottom:8px}
.plan-edit-item .edit-input:last-child{margin-bottom:0}
.plan-add-btn{
  width:100%;padding:12px;border:1px dashed var(--borderStrong);
  background:transparent;color:var(--textDim);border-radius:12px;
  font-size:14px;cursor:pointer;font-family:var(--fontB);margin-bottom:12px;
}
.plan-add-btn:active{background:var(--surface2);color:var(--accent)}
/* 子页面头部分段控制器（训练日/休息日） */
.subpage-header-extra{margin-left:auto;display:flex;align-items:center}
.plan-seg{display:flex;background:var(--bg2);border:1px solid var(--borderStrong);border-radius:10px;padding:3px;gap:2px}
.plan-seg-btn{
  padding:5px 14px;border:none;background:transparent;color:var(--textDim);
  font-size:13px;font-weight:600;border-radius:7px;cursor:pointer;font-family:var(--fontB);
  transition:all .2s;
}
.plan-seg-btn.active{
  background:var(--accent);color:#0a0c0a;
  box-shadow:0 0 10px rgba(200,255,62,.35);
}

/* ===== 计划编辑弹窗（Bottom Sheet，单个计划编辑/新增）===== */
.plan-sheet-overlay{
  position:fixed;inset:0;background:rgba(0,0,0,.6);
  z-index:200;opacity:0;pointer-events:none;transition:opacity .3s;
}
.plan-sheet-overlay.show{opacity:1;pointer-events:auto}
.plan-sheet{
  position:fixed;bottom:0;left:50%;transform:translate(-50%,100%);
  width:100%;max-width:480px;
  background:var(--bg);border:1px solid var(--borderStrong);
  border-bottom:none;border-radius:16px 16px 0 0;
  padding:16px 16px calc(20px + env(safe-area-inset-bottom));
  z-index:210;transition:transform .35s cubic-bezier(.32,.72,0,1);
  max-height:85vh;overflow-y:auto;-webkit-overflow-scrolling:touch;overscroll-behavior:contain;
}
.plan-sheet.show{transform:translate(-50%,0)}
.plan-sheet .sheet-handle{width:36px;height:4px;background:var(--borderStrong);border-radius:2px;margin:0 auto 14px}
.plan-sheet-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px}
.plan-sheet-title{font-size:17px;font-weight:700;color:var(--text)}
.plan-sheet-close{
  width:32px;height:32px;flex-shrink:0;background:none;border:none;cursor:pointer;
  color:#999;display:flex;align-items:center;justify-content:center;padding:0;
}
.plan-sheet-close svg{width:20px;height:20px}
.plan-sheet-close:active{opacity:.6}
.plan-sheet-fields{display:flex;flex-direction:column;gap:12px;margin-bottom:8px}
.plan-sheet-field{display:flex;flex-direction:column;gap:6px}
.plan-sheet-field label{font-size:12px;color:#b0b0b0;font-weight:500}
.plan-sheet-field .edit-input{height:46px;padding:0 14px;border-radius:10px;background:var(--surface2);border:1px solid var(--borderStrong);font-size:15px}
.plan-sheet-field textarea.edit-input{height:auto;min-height:64px;padding:12px 14px;resize:none;line-height:1.5}
.plan-sheet-field .edit-input:focus{border-color:var(--accent)}
.plan-sheet-field .edit-input::placeholder{color:#666}
.plan-sheet-row{display:flex;gap:10px}
.plan-sheet-row .plan-sheet-field{flex:1}
.plan-sheet-row .plan-sheet-field.wide{flex:1.4}
.plan-sheet-btn-row{display:flex;gap:10px;margin-top:16px}
.plan-sheet-btn{
  flex:1;padding:14px;border:none;border-radius:12px;
  font-size:15px;font-weight:600;cursor:pointer;font-family:var(--fontB);
  transition:all .2s;
}
.plan-sheet-btn:active{transform:scale(.97);opacity:.85}
.plan-sheet-btn.cancel{background:var(--surface2);color:var(--text);border:1px solid var(--borderStrong)}
.plan-sheet-btn.confirm{background:var(--accent);color:#0a0c0a}
.plan-sheet-btn.delete{background:rgba(255,107,107,.1);color:var(--danger);border:1px solid rgba(255,107,107,.35);flex:0 0 auto;padding:14px 16px}

.tip-list{display:flex;flex-direction:column;gap:8px}
.tip-item{
  display:flex;gap:10px;padding:10px 12px;
  background:var(--surface);border-radius:var(--rs);
  border-left:3px solid var(--accent);
}
.tip-item.warn{border-left-color:var(--warn)}
.tip-item.danger{border-left-color:var(--danger)}
.tip-item .ti-num{
  font-family:var(--fontD);font-weight:700;font-size:16px;
  color:var(--accent);flex-shrink:0;min-width:20px;
}
.tip-item.warn .ti-num{color:var(--warn)}
.tip-item .ti-text{font-size:12px;line-height:1.5;color:var(--text)}
.tip-item .ti-text b{color:var(--accent);font-weight:600}

.judge-box{
  background:var(--surface);border-radius:var(--rs);
  padding:12px 14px;margin-bottom:8px;
  border:1px solid var(--border);
}
.judge-box.good{border-color:rgba(200,255,62,.2)}
.judge-box.warn{border-color:rgba(255,169,77,.2)}
.judge-box .jb-title{
  font-size:12px;font-weight:700;margin-bottom:6px;
  display:flex;align-items:center;gap:6px;
}
.judge-box.good .jb-title{color:var(--accent)}
.judge-box.warn .jb-title{color:var(--warn)}
.judge-box .jb-text{font-size:12px;color:var(--textDim);line-height:1.5}

/* ===== BOTTOM NAV ===== */
/* bottom-nav moved to style4 section */

/* ===== TOAST ===== */
.toast{
  position:fixed;bottom:calc(var(--navH) + 16px + env(safe-area-inset-bottom));
  left:50%;transform:translateX(-50%) translateY(20px);
  background:var(--bg2);border:1px solid var(--borderStrong);
  backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);
  color:var(--text);font-size:13px;font-weight:500;
  padding:10px 20px;border-radius:0;
  z-index:200;opacity:0;pointer-events:none;
  transition:all .3s cubic-bezier(.32,.72,0,1);
  white-space:nowrap;
}
.toast.show{opacity:1;transform:translateX(-50%) translateY(0)}

/* ===== CELEBRATION ===== */
.celebration{
  position:fixed;inset:0;z-index:300;
  display:flex;align-items:center;justify-content:center;
  background:rgba(12,14,12,.9);backdrop-filter:blur(8px);
  opacity:0;pointer-events:none;transition:opacity .4s;
}
.celebration.show{opacity:1;pointer-events:auto}
.celebration-content{text-align:center;padding:32px;background:var(--bg2);border:1px solid var(--borderStrong);animation:celebIn .5s cubic-bezier(.34,1.56,.64,1)}
@keyframes celebIn{from{transform:scale(.5);opacity:0}to{transform:scale(1);opacity:1}}
.celebration .celeb-icon{width:80px;height:80px;margin-bottom:12px;object-fit:cover}
.celebration .celeb-title{font-family:var(--fontD);font-size:28px;font-weight:700;color:var(--accent)}
.celebration .celeb-sub{font-size:14px;color:var(--textDim);margin-top:6px}

/* ===== SETTINGS MODAL ===== */
.modal-overlay{
  position:fixed;inset:0;background:rgba(0,0,0,.6);
  z-index:90;opacity:0;pointer-events:none;transition:opacity .3s;
  display:flex;align-items:center;justify-content:center;padding:20px;
}
.modal-overlay.show{opacity:1;pointer-events:auto}
.modal{
  background:var(--bg2);border:1px solid var(--borderStrong);
  border-radius:var(--r);padding:20px;max-width:360px;width:100%;
  transform:scale(.9);transition:transform .3s cubic-bezier(.34,1.56,.64,1);
}
.modal-overlay.show .modal{transform:scale(1)}
.modal h3{font-size:16px;font-weight:700;margin-bottom:14px}
.modal-btn{
  width:100%;padding:12px;border:1px solid var(--border);
  background:var(--surface);color:var(--text);border-radius:var(--rs);
  font-size:13px;font-weight:500;cursor:pointer;margin-bottom:8px;
  font-family:var(--fontB);transition:all .2s;text-align:left;
  display:flex;align-items:center;gap:8px;
}
.modal-btn:active{background:var(--surface2)}
.modal-btn.danger{color:var(--danger);border-color:rgba(255,92,92,.2)}
.modal-close{
  width:100%;padding:12px;background:none;border:none;
  color:var(--textDim);font-size:13px;cursor:pointer;font-family:var(--fontB);
}

/* ===== DAY DETAIL MODAL ===== */
.dd-close-btn{
  position:absolute;top:10px;right:10px;z-index:10;
  width:28px;height:28px;border-radius:0;
  background:var(--bg2);border:1px solid var(--border);
  color:var(--textDim);font-size:14px;cursor:pointer;
  display:flex;align-items:center;justify-content:center;
  transition:all .2s;
}
.dd-close-btn:active{transform:scale(.9);background:var(--border)}
.dd-header{
  display:flex;align-items:center;justify-content:space-between;
  margin-bottom:14px;padding-right:30px;
}
.dd-date{font-size:17px;font-weight:700;font-family:var(--fontD)}
.dd-type{font-size:11px;padding:3px 8px;border-radius:var(--rxs);font-weight:600}
.dd-type.training{background:var(--accentDim);color:var(--accent)}
.dd-type.rest{background:rgba(92,200,255,.12);color:#5cc8ff}
.dd-metrics{
  display:flex;gap:12px;margin-bottom:14px;
}
.dd-metric{
  flex:1;background:var(--bg2);border:1px solid var(--border);
  border-radius:var(--rs);padding:10px;text-align:center;
}
.dd-metric .dd-m-label{font-size:10px;color:var(--textDim);margin-bottom:4px}
.dd-metric .dd-m-value{font-size:18px;font-weight:700;font-family:var(--fontD)}
.dd-metric .dd-m-unit{font-size:10px;color:var(--textDim)}
.dd-metric-edit{
  flex-direction:column;gap:4px;
}
.dd-m-input{
  width:100%!important;text-align:center;font-size:16px!important;
  font-weight:700;font-family:var(--fontD);padding:6px 4px!important;
  background:var(--bg);border:1px solid var(--borderStrong);
}
.dd-section-title{font-size:13px;font-weight:600;margin-bottom:8px;color:var(--text)}
/* 补卡弹窗区块标题（图一：图标+标题+右侧链接/计数） */
.dd-sec-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px;margin-top:4px}
.dd-sec-title{display:flex;align-items:center;gap:6px;font-size:13px;font-weight:600;color:var(--text)}
.dd-sec-title svg{width:15px;height:15px;color:var(--accent)}
.dd-sec-edit{font-size:11px;color:var(--accent);cursor:pointer;letter-spacing:.5px}
.dd-sec-edit:active{opacity:.7}
.dd-sec-count{font-size:11px;color:var(--textDim);font-family:var(--fontD)}
.dd-checkin-list{display:flex;flex-direction:column;gap:6px;margin-bottom:14px}
.dd-checkin-item{
  display:flex;align-items:center;gap:10px;
  padding:8px 10px;background:var(--bg2);border:1px solid var(--border);
  border-radius:var(--rs);transition:all .2s;
}
.dd-checkin-item.done{border-color:rgba(200,255,62,.2);background:var(--accentDim)}
.dd-checkin-item .dd-ci-icon{width:26px;height:26px;flex-shrink:0;display:flex;align-items:center;justify-content:center;color:var(--accent)}
.dd-checkin-item .dd-ci-icon svg{width:22px;height:22px}
.dd-checkin-item .dd-ci-info{flex:1;min-width:0}
.dd-checkin-item .dd-ci-name{font-size:13px;font-weight:500}
.dd-checkin-item .dd-ci-status{font-size:11px;color:var(--textDim)}
.dd-checkin-item.done .dd-ci-status{color:var(--accent)}
.dd-checkin-item .dd-ci-btn{
  padding:4px 10px;border-radius:var(--rxs);font-size:11px;font-weight:600;
  border:1px solid var(--border);background:var(--surface2);color:var(--text);
  cursor:pointer;transition:all .2s;white-space:nowrap;
}
.dd-checkin-item .dd-ci-btn:active{transform:scale(.92)}
.dd-checkin-item .dd-ci-btn.check{background:var(--accent);color:#0a0c0a;border-color:var(--accent)}
.dd-checkin-item .dd-ci-btn.uncheck{color:var(--danger);border-color:rgba(255,92,92,.2)}
.dd-nutrition{
  background:var(--bg2);border:1px solid var(--border);
  border-radius:var(--rs);padding:10px;margin-bottom:14px;
}
.dd-nut-row{
  display:flex;align-items:center;justify-content:space-between;
  padding:4px 0;font-size:12px;
}
.dd-nut-label{color:var(--textDim)}
.dd-nut-bar-wrap{
  flex:1;height:6px;background:var(--bg2);border-radius:0;
  margin:0 8px;overflow:hidden;
}
.dd-nut-bar{height:100%;border-radius:0;transition:width .4s}
.dd-nut-bar.p{background:var(--protein)}
.dd-nut-bar.c{background:var(--carbs)}
.dd-nut-bar.f{background:var(--fat)}
.dd-nut-bar.k{background:var(--accent)}
.dd-nut-val{font-family:var(--fontD);font-size:11px;min-width:70px;text-align:right}
.dd-nut-val .achieved{color:var(--text)}
.dd-nut-val .target{color:var(--textDim)}
.dd-no-data{font-size:12px;color:var(--textFaint);text-align:center;padding:20px 0}

/* ===== EDIT PROFILE ===== */
.profile-username-row{
  display:flex;align-items:center;gap:10px;
}
.edit-profile-btn{
  padding:3px 10px;border-radius:0;font-size:11px;font-weight:600;
  border:1px solid rgba(200,255,62,.2);background:var(--accentDim);
  color:var(--accent);cursor:pointer;transition:all .2s;font-family:var(--fontB);
  white-space:nowrap;
}
.edit-profile-btn:active{transform:scale(.92)}
.ep-field{margin-bottom:14px}
.ep-label{font-size:12px;color:var(--textDim);margin-bottom:5px;display:block}
.ep-input{
  width:100%!important;padding:10px 12px!important;
  background:var(--bg)!important;border:1px solid var(--borderStrong)!important;
  border-radius:0;color:var(--text);font-size:14px;font-family:var(--fontB);
}
.ep-input:focus{border-color:var(--accent)!important;outline:none}
.ep-avatar-section{
  display:flex;align-items:center;gap:12px;margin-bottom:16px;
}
/* ep-avatar-preview moved to style4 section */
.ep-avatar-btn{
  padding:8px 14px;border-radius:0;font-size:12px;font-weight:600;
  border:1px solid var(--border);background:var(--bg2);color:var(--text);
  cursor:pointer;transition:all .2s;
}
.ep-avatar-btn:active{transform:scale(.92)}
.ep-gender-row{display:flex;gap:8px}
.ep-gender-btn{
  flex:1;padding:8px;border-radius:0;font-size:13px;font-weight:600;
  border:1px solid var(--borderStrong);background:var(--bg);color:var(--textDim);
  cursor:pointer;transition:all .2s;text-align:center;
}
.ep-gender-btn.active{
  background:var(--accentDim);border-color:var(--accent);color:var(--accent);
}
.ep-save-btn{
  width:100%;padding:12px;border-radius:0;font-size:14px;font-weight:700;
  border:none;background:var(--accent);color:#0C0E0C;cursor:pointer;
  transition:all .2s;margin-top:6px;
}
.ep-save-btn:active{transform:scale(.97)}

/* ===== ONBOARDING WIZARD (首次登录引导) ===== */
.onboarding-overlay{
  position:fixed;inset:0;z-index:1000;
  background:var(--bg);
  display:flex;align-items:center;justify-content:center;
  padding:20px;
}
.onboarding-card{
  background:var(--bg);
  max-width:420px;width:100%;
  max-height:90vh;overflow-y:auto;
  display:flex;flex-direction:column;
}
/* 品牌Logo */
.ob-logo{
  width:56px;height:56px;
  background:var(--accent);
  display:flex;align-items:center;justify-content:center;
  margin:0 auto 20px;
}
/* 欢迎标题 */
.ob-welcome-title{
  font-family:var(--fontD);font-size:24px;font-weight:700;
  color:var(--text);text-align:center;margin-bottom:6px;
}
.ob-welcome-sub{
  font-size:14px;color:var(--textDim);text-align:center;margin-bottom:28px;
}
/* 步骤标题（STEP 01 + 标题） */
.ob-step-header{
  display:flex;align-items:center;gap:10px;margin-bottom:24px;
}
.ob-step-badge{
  background:var(--accent);color:#0a0c0a;
  font-size:11px;font-weight:700;letter-spacing:1px;
  padding:4px 10px;
  font-family:var(--fontD);
}
.ob-step-title{
  font-size:20px;font-weight:700;color:var(--text);
}
/* 头像上传 */
.ob-avatar-section{
  display:flex;flex-direction:column;align-items:center;margin-bottom:28px;
}
.ob-avatar-upload{
  width:96px;height:96px;border-radius:50%;
  border:2px dashed var(--accent);
  background:var(--surface2);
  display:flex;align-items:center;justify-content:center;
  cursor:pointer;position:relative;overflow:hidden;
  transition:all .2s;
}
.ob-avatar-upload:active{transform:scale(.95)}
.ob-avatar-upload img{width:100%;height:100%;object-fit:cover}
.ob-avatar-hint{
  font-size:12px;color:var(--textDim);margin-top:10px;
}
/* 表单字段 */
.ob-field{margin-bottom:20px}
.ob-label{font-size:13px;color:var(--textDim);font-weight:500;margin-bottom:8px;display:block}
.ob-input{
  width:100%;padding:14px 16px;
  background:var(--surface);border:1px solid transparent;
  color:var(--text);font-size:16px;font-family:var(--fontB);
  transition:border-color .2s;
  line-height:1.4;min-height:50px;
}
.ob-input[type="date"]{min-height:50px;padding:12px 16px;display:block;}
.ob-input:focus{border-color:var(--accent);outline:none}
.ob-input::placeholder{color:var(--textFaint)}
/* 数值输入（带单位） */
.ob-metric-input{
  display:flex;align-items:center;justify-content:space-between;
  background:var(--surface);border:1px solid transparent;
  padding:14px 16px;
  transition:border-color .2s;
}
.ob-metric-input:focus-within{border-color:var(--accent)}
.ob-metric-input input{
  background:transparent;border:none;outline:none;
  color:var(--text);font-size:20px;font-weight:700;font-family:var(--fontD);
  width:100%;
}
.ob-metric-input .ob-unit{
  font-size:14px;color:var(--textDim);margin-left:8px;flex-shrink:0;
}
/* 性别选择 */
.ob-gender-row{display:flex;gap:10px}
.ob-gender-btn{
  flex:1;padding:14px;font-size:15px;font-weight:600;
  border:1px solid var(--borderStrong);background:var(--surface);color:var(--textDim);
  cursor:pointer;transition:all .2s;text-align:center;
  display:flex;align-items:center;justify-content:center;gap:6px;
}
.ob-gender-btn.active{
  background:var(--accentDim);border-color:var(--accent);color:var(--accent);
}
/* 时间节奏分段控制器 */
.ob-timeline-row{display:flex;background:var(--surface);padding:4px;gap:4px}
.ob-timeline-btn{
  flex:1;padding:12px;font-size:14px;font-weight:600;
  border:1px solid transparent;background:transparent;color:var(--textDim);
  cursor:pointer;transition:all .2s;text-align:center;
}
.ob-timeline-btn.active{
  background:var(--accentDim);color:var(--accent);border-color:var(--accent);
}
/* 健身目标多选按钮 */
.ob-goal-row{display:flex;flex-wrap:wrap;gap:10px;margin-bottom:10px}
.ob-goal-btn{
  flex:1;min-width:calc(50% - 5px);padding:14px 12px;font-size:15px;font-weight:600;
  border:1px solid var(--borderStrong);background:var(--surface);color:var(--textDim);
  cursor:pointer;text-align:center;transition:all .2s;
}
.ob-goal-btn.active{
  background:var(--accentDim);border-color:var(--accent);color:var(--accent);
}
.ob-goal-btn:active{transform:scale(.97)}
.ob-goal-hint{font-size:12px;color:var(--textFaint);text-align:center;margin-top:-4px}
/* ===== 新手引导卡片 ===== */
.guide-overlay{position:fixed;inset:0;z-index:999;pointer-events:none}
.guide-overlay.active{pointer-events:auto}
.guide-backdrop{position:absolute;inset:0;background:rgba(0,0,0,.68);z-index:0}
.guide-highlight{position:absolute;border-radius:12px;box-shadow:0 0 0 9999px rgba(0,0,0,.68),0 0 0 2px rgba(200,255,62,.5);transition:all .3s ease;z-index:1;pointer-events:none}
.guide-card{position:absolute;z-index:2;background:var(--bg2);border:1px solid var(--borderStrong);padding:20px;width:280px;max-width:calc(100vw - 32px);pointer-events:auto;animation:guideIn .25s ease;box-shadow:0 12px 40px rgba(0,0,0,.5)}
@keyframes guideIn{from{opacity:0;transform:translateY(8px) scale(.96)}to{opacity:1;transform:translateY(0) scale(1)}}
.guide-card .gc-step{font-size:11px;font-weight:700;font-family:var(--fontD);color:var(--accent);letter-spacing:1px;margin-bottom:6px}
.guide-card .gc-title{font-size:16px;font-weight:700;color:var(--text);margin-bottom:6px;line-height:1.4}
.guide-card .gc-desc{font-size:13px;color:var(--textDim);line-height:1.5;margin-bottom:16px}
.guide-card .gc-actions{display:flex;align-items:center;justify-content:space-between}
.guide-card .gc-dots{display:flex;gap:5px}
.guide-card .gc-dot{width:6px;height:6px;border-radius:50%;background:var(--borderStrong);transition:background .2s}
.guide-card .gc-dot.active{background:var(--accent)}
.guide-card .gc-btn{font-size:13px;font-weight:600;padding:8px 18px;border:none;cursor:pointer;transition:all .15s;font-family:var(--fontB)}
.guide-card .gc-btn-primary{background:var(--accent);color:#0a0c0a}
.guide-card .gc-btn-primary:active{transform:scale(.95)}
.guide-card .gc-btn-ghost{background:transparent;color:var(--textDim)}
.guide-card .gc-btn-ghost:active{opacity:.6}
.guide-card .gc-arrow{position:absolute;width:0;height:0;border:8px solid transparent}
.guide-card.gc-above .gc-arrow{bottom:-16px;border-top-color:var(--bg2)}
.guide-card.gc-below .gc-arrow{top:-16px;border-bottom-color:var(--bg2)}
.guide-card.gc-left .gc-arrow{right:-16px;border-left-color:var(--bg2)}
.guide-card.gc-right .gc-arrow{left:-16px;border-right-color:var(--bg2)}
/* 欢迎页居中卡片（避免 transform 与入场动画冲突） */
.guide-card.gc-center{left:50%;top:50%;transform:translate(-50%,-50%);animation:guideInCenter .25s ease}
@keyframes guideInCenter{from{opacity:0}to{opacity:1}}
.guide-skip{position:fixed;bottom:30px;left:50%;transform:translateX(-50%);z-index:3;background:rgba(255,255,255,.1);border:none;color:rgba(255,255,255,.5);font-size:13px;padding:10px 24px;cursor:pointer;pointer-events:auto;transition:all .2s}
.guide-skip:active{opacity:.6}
/* 错误提示 */
.ob-hint{font-size:12px;color:var(--textDim);margin-top:8px}
.ob-hint b{color:var(--accent)}
/* 必填项红色错误提示 */
.ob-error{font-size:11px;color:var(--danger);margin-top:6px;display:none}
.ob-error.show{display:block}
/* 摘要卡片 */
.ob-summary{
  display:flex;background:var(--surface);margin-top:24px;
}
.ob-summary-col{
  flex:1;text-align:center;padding:16px 8px;
  border-right:1px solid var(--border);
}
.ob-summary-col:last-child{border-right:none}
.ob-summary-value{
  font-family:var(--fontD);font-size:24px;font-weight:700;color:var(--accent);
}
.ob-summary-value small{font-size:13px;color:var(--textDim);font-weight:400}
.ob-summary-label{
  font-size:11px;color:var(--textDim);margin-top:4px;
}
/* 分页指示器 */
.onboarding-steps{
  display:flex;align-items:center;justify-content:center;gap:8px;
  margin:24px 0;
}
.onboarding-step-dot{
  width:8px;height:8px;border-radius:50%;
  background:var(--borderStrong);
}
.onboarding-step-dot.active{
  background:transparent;border:1.5px solid var(--accent);
}
.onboarding-step-dot.done{
  background:var(--accent);
}
/* 按钮 */
.ob-actions{margin-top:auto}
.ob-btn{
  width:100%;padding:16px;font-size:16px;font-weight:700;
  border:none;cursor:pointer;transition:all .2s;font-family:var(--fontB);
  display:flex;align-items:center;justify-content:center;gap:6px;
}
.ob-btn-next{
  background:var(--accent);color:#0a0c0a;
}
.ob-btn-next:active{transform:scale(.98)}
.ob-btn-prev{
  background:var(--surface);color:var(--text);border:1px solid var(--borderStrong);
  margin-bottom:10px;
}
.ob-btn-prev:active{background:var(--surface2)}
/* 成功页 */
.ob-success{
  text-align:center;padding:40px 0;display:flex;flex-direction:column;align-items:center;
}
.ob-success-icon{
  width:88px;height:88px;border-radius:50%;
  border:2px solid var(--accent);
  display:flex;align-items:center;justify-content:center;
  margin-bottom:24px;
}
.ob-success-title{
  font-family:var(--fontD);font-size:26px;font-weight:700;
  color:var(--text);margin-bottom:12px;
}
.ob-success-text{
  font-size:14px;color:var(--textDim);margin-bottom:32px;line-height:1.6;
}
.ob-success-actions{width:100%}
.ob-btn-main{
  width:100%;padding:16px;font-size:16px;font-weight:700;
  background:var(--accent);color:#0a0c0a;border:none;cursor:pointer;
  transition:all .2s;font-family:var(--fontB);
}
.ob-btn-main:active{transform:scale(.98)}
.ob-btn-secondary{
  width:100%;padding:14px;font-size:14px;font-weight:600;
  background:transparent;color:var(--text);border:1px solid var(--borderStrong);
  cursor:pointer;transition:all .2s;font-family:var(--fontB);margin-top:10px;
}
.ob-btn-secondary:active{background:var(--surface2)}

/* AI Generate Plan Button in profile section header */
.fit-plan-header{
  display:flex;align-items:center;justify-content:space-between;
  margin-bottom:12px;
}
.ai-generate-btn{
  padding:6px 12px;border-radius:var(--rxs);font-size:11px;font-weight:700;
  background:var(--accent);color:#0a0c0a;border:none;
  cursor:pointer;transition:all .2s;white-space:nowrap;
  font-family:var(--fontB);letter-spacing:.5px;
}
.ai-generate-btn:active{transform:scale(.92)}
.ai-generate-btn svg{
  width:14px;height:14px;display:inline-block;vertical-align:middle;margin-right:4px;
  stroke:#0a0c0a;stroke-width:2;fill:none;stroke-linecap:round;stroke-linejoin:round;
}

/* ===== CUSTOM TAB v2（方案A：总目标置顶 + 分组卡片） ===== */
#tab-custom{padding-top:14px}
.custom-header{margin-bottom:14px}
.custom-title{font-family:var(--fontD);font-size:26px;font-weight:700;letter-spacing:2px;color:var(--text)}
.custom-sub{font-size:12px;color:var(--textDim);margin-top:4px;letter-spacing:.5px}
.custom-ai-card{
  display:flex;align-items:center;gap:12px;
  background:linear-gradient(135deg,rgba(200,255,62,.12),rgba(200,255,62,.04));
  border:1px solid rgba(200,255,62,.22);
  border-radius:var(--rs);padding:14px;margin-bottom:12px;
}
.custom-ai-icon{
  width:36px;height:36px;border-radius:10px;flex-shrink:0;
  background:var(--accent);display:flex;align-items:center;justify-content:center;
}
.custom-ai-icon svg{width:20px;height:20px;stroke:#0a0c0a;stroke-width:2;fill:none;stroke-linecap:round;stroke-linejoin:round}
.custom-ai-info{flex:1;min-width:0}
.custom-ai-title{font-size:14px;font-weight:700;color:var(--text)}
.custom-ai-sub{font-size:11px;color:var(--textDim);margin-top:2px}
.custom-progress{margin-bottom:14px}
.custom-progress-text{font-size:11px;color:var(--textDim);margin-bottom:6px}
.custom-progress-text span{color:var(--accent);font-weight:700;font-family:var(--fontD)}
.custom-progress-blocks{display:flex;gap:4px}
.custom-progress-block{width:12px;height:12px;background:#2a2a2a;border:1px solid rgba(255,255,255,.08);flex-shrink:0}
.custom-progress-block.on{background:var(--accent);border-color:var(--accent)}

/* 分组卡片通用 */
.cg-card{
  background:var(--surface);border:1px solid var(--border);
  border-radius:var(--rs);padding:14px;margin-bottom:10px;
  transition:all .2s;
}
.cg-card:active{background:var(--surface2)}
.cg-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}
.cg-title{font-size:14px;font-weight:700;color:var(--text);letter-spacing:.3px}
.cg-chip{font-size:10px;font-weight:600;padding:3px 8px;border-radius:999px}
.cg-chip.done{color:var(--accent);background:rgba(200,255,62,.12);border:1px solid rgba(200,255,62,.25)}
.cg-chip.todo{color:var(--textFaint);background:var(--bg2);border:1px solid var(--border)}

/* 总目标 Hero */
.cg-goal-row{display:flex;align-items:center;gap:20px;margin-bottom:10px}
.cg-goal{display:flex;align-items:baseline;gap:4px}
.cg-goal-val{font-family:var(--fontD);font-size:32px;font-weight:800;color:var(--accent);line-height:1}
.cg-goal-unit{font-size:12px;color:var(--textDim)}
.cg-goal-label{font-size:11px;color:var(--textDim);margin-left:6px}
.cg-goal-sep{width:1px;height:30px;background:var(--divider)}
.cg-goal-meta{font-size:11px;color:var(--textDim)}
.cg-goal-chips{display:flex;gap:6px;margin-bottom:10px;flex-wrap:wrap}

/* 每日目标 */
.cg-seg{display:flex;background:var(--bg2);border-radius:8px;padding:3px;margin-bottom:12px}
.cg-seg span{flex:1;text-align:center;font-size:11px;padding:6px 0;border-radius:6px;color:var(--textDim);cursor:pointer;font-weight:600}
.cg-seg span.on{background:var(--accent);color:#0a0c0a;font-weight:700}
.cg-mgrid{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.cg-mtile{background:var(--surface2);border-radius:8px;padding:10px 12px}
.cg-mtile-label{font-size:10px;color:var(--textDim)}
.cg-mtile-val{font-size:16px;font-weight:700;color:var(--text);font-family:var(--fontD);margin-top:2px}
.cg-mtile-val b{color:var(--accent)}

/* 训练安排行 */
.cg-row{display:flex;align-items:center;gap:11px;padding:10px 0;cursor:pointer}
.cg-row+.cg-row{border-top:1px solid var(--divider)}
.cg-row-icon{width:30px;height:30px;border-radius:9px;background:var(--surface2);border:1px solid var(--border);display:flex;align-items:center;justify-content:center;flex-shrink:0}
.cg-row-icon svg{width:15px;height:15px;stroke:var(--accent);fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.cg-row-info{flex:1;min-width:0}
.cg-row-title{font-size:12px;font-weight:600;color:var(--text)}
.cg-row-sub{font-size:10px;color:var(--textDim);margin-top:1px}
.cg-row-val{font-size:10px;color:var(--textFaint);flex-shrink:0}
.cg-row-arrow{flex-shrink:0}
.cg-row-arrow svg{width:13px;height:13px;stroke:var(--textFaint);fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}

/* 器械训练 */
.cg-chips{display:flex;gap:6px;flex-wrap:wrap}
.cg-chip-tag{font-size:11px;color:var(--text);background:var(--surface2);border:1px solid var(--borderStrong);padding:5px 11px;border-radius:999px}

/* 自动计算标签 / 编辑提示 */
.cg-auto-tag{font-size:10px;font-weight:600;color:var(--textDim);background:var(--surface2);border:1px solid var(--border);padding:3px 8px;border-radius:999px}
.cg-edit-hint{font-size:10px;font-weight:600;color:var(--accent);background:rgba(200,255,62,.08);border:1px solid rgba(200,255,62,.2);padding:3px 8px;border-radius:999px}

/* 器械训练内联计划 */
.cg-wp-split{background:var(--surface2);border:1px solid var(--border);border-radius:10px;padding:10px 12px;margin-bottom:8px}
.cg-wp-split:last-child{margin-bottom:0}
.cg-wp-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:6px}
.cg-wp-name{font-size:12px;font-weight:700;color:var(--text)}
.cg-wp-count{font-size:10px;color:var(--textFaint)}
.cg-wp-list{display:flex;flex-direction:column}
.cg-wp-row{display:flex;align-items:center;gap:8px;padding:4px 0}
.cg-wp-row+.cg-wp-row{border-top:1px solid var(--divider)}
.cg-wp-idx{width:16px;height:16px;border-radius:5px;background:var(--bg);color:var(--textFaint);font-size:9px;display:flex;align-items:center;justify-content:center;flex-shrink:0;font-family:var(--fontD)}
.cg-wp-ex{flex:1;min-width:0;font-size:12px;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cg-wp-spec{font-size:10px;color:var(--textFaint);flex-shrink:0;font-family:var(--fontD)}

/* AI Plan Preview */
.ai-preview-section{margin-bottom:16px}
.ai-preview-title{
  font-size:15px;font-weight:700;color:var(--text);
  margin-bottom:10px;padding:8px 12px;
  display:flex;align-items:center;gap:8px;
  background:linear-gradient(135deg,var(--surface2),transparent);
  border-radius:0;border-left:3px solid var(--accent);
}
.ai-preview-title svg{flex-shrink:0;opacity:0.8}
.ai-preview-card{
  background:var(--surface);border:1px solid var(--border);
  border-radius:var(--rs);padding:12px;margin-bottom:10px;
}
/* 侧边时间轴布局 */
.ai-timeline{
  display:flex;gap:0;
}
.ai-timeline-track{
  width:20px;flex-shrink:0;
  border-right:2px solid var(--border);
  padding:4px 0;
  position:relative;
}
.ai-timeline-content{
  flex:1;padding-left:8px;
}
.ai-timeline-item{
  margin-bottom:14px;padding-bottom:14px;
  border-bottom:1px dashed var(--border);
  position:relative;
  min-height:40px;
}
.ai-timeline-item:last-child{
  margin-bottom:0;padding-bottom:0;
  border-bottom:none;
}
/* 圆点隐藏，避免遮挡文字 */
.ai-timeline-dot{
  display:none;
}
.ai-timeline-time{
  font-size:13px;font-weight:700;color:var(--accent);
  font-family:var(--fontD);
  margin-bottom:3px;
  letter-spacing:0.5px;
}
.ai-timeline-title{
  font-size:14px;font-weight:600;color:var(--text);
  margin-bottom:3px;
  line-height:20px;
}
.ai-timeline-desc{
  font-size:12px;color:var(--textDim);
  line-height:18px;
  letter-spacing:0.2px;
}
.ai-preview-list{
  display:grid;grid-template-columns:repeat(7,1fr);gap:4px;margin-top:8px;
}
.ai-preview-day{
  text-align:center;padding:6px;border-radius:0;font-size:11px;
  background:var(--surface2);color:var(--textDim);
}
.ai-preview-day.active{
  background:var(--accentDim);color:var(--accent);
}
.ai-workout-group{
  margin-bottom:12px;padding:10px;
  background:var(--surface2);border-radius:0;
  border-bottom:none;
}
.ai-workout-group:last-child{
  margin-bottom:0;
}
.ai-workout-name{
  font-size:14px;font-weight:600;color:var(--accent);
  margin-bottom:8px;line-height:20px;
  padding-bottom:6px;
  border-bottom:1px solid var(--border);
}
.ai-workout-exercise{
  display:flex;justify-content:space-between;align-items:center;
  padding:6px 0;border-bottom:1px solid var(--border);
}
.ai-workout-exercise:last-child{border-bottom:none}
.ai-workout-ex-name{
  font-size:13px;color:var(--text);font-weight:500;
}
.ai-workout-ex-spec{
  font-size:12px;color:var(--textDim);font-family:var(--fontD);
  background:var(--bg);padding:2px 8px;border-radius:0;
}
.ai-nutri-row{
  display:flex;align-items:center;gap:10px;
  padding:10px 0;border-bottom:1px solid var(--border);
}
.ai-nutri-row:last-child{border-bottom:none}
.ai-nutri-day{
  flex-shrink:0;width:44px;font-size:13px;font-weight:600;color:var(--accent);
}
.ai-nutri-grid{
  flex:1;display:grid;grid-template-columns:repeat(2,1fr);gap:6px;
}
.ai-nutri-item{
  display:flex;justify-content:space-between;align-items:center;
  background:var(--bg);border-radius:0;padding:6px 10px;
  font-size:12px;color:var(--textDim);
}
.ai-nutri-item b{color:var(--text);font-family:var(--fontD);font-size:13px}
/* AI解读区域 */
.ai-interpret{
  background:linear-gradient(135deg,rgba(99,225,210,0.08),rgba(107,149,255,0.06));
  border:1px solid rgba(99,225,210,0.2);
  border-radius:0;padding:16px;margin-bottom:16px;
  position:relative;overflow:hidden;
}
.ai-interpret::before{
  content:'';position:absolute;top:0;left:0;right:0;height:3px;
  background:linear-gradient(90deg,var(--accent),var(--blue),var(--accent));
}
.ai-interpret-header{
  display:flex;align-items:center;gap:8px;margin-bottom:12px;
}
.ai-interpret-icon{
  width:32px;height:32px;border-radius:0;
  background:linear-gradient(135deg,var(--accent),var(--blue));
  display:flex;align-items:center;justify-content:center;
  flex-shrink:0;
}
.ai-interpret-icon svg{width:18px;height:18px;stroke:#fff;fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.ai-interpret-label{font-size:15px;font-weight:700;color:var(--text)}
.ai-interpret-badge{
  font-size:10px;background:var(--accentDim);color:var(--accent);
  padding:2px 8px;border-radius:0;font-weight:600;margin-left:auto;
}
.ai-interpret-body{
  font-size:13px;color:var(--textDim);line-height:1.9;
  white-space:pre-wrap;word-break:break-word;
}
.ai-interpret-body strong{color:var(--accent);font-weight:600}
.ai-interpret-highlights{
  display:grid;grid-template-columns:repeat(2,1fr);gap:8px;margin-top:12px;
}
.ai-interpret-hl{
  background:var(--surface);border-radius:0;padding:10px 12px;
  border:1px solid var(--border);
}
.ai-interpret-hl-label{font-size:11px;color:var(--textDim);margin-bottom:4px}
.ai-interpret-hl-value{font-size:14px;font-weight:700;color:var(--accent);font-family:var(--fontD)}
.ai-preview-questions{
  display:flex;flex-direction:column;gap:14px;
}
.ai-question{
  padding:12px;background:var(--surface);border-radius:var(--rs);
}
.ai-question-text{
  font-size:13px;font-weight:600;color:var(--text);margin-bottom:8px;
}
.ai-question-options{display:flex;flex-wrap:wrap;gap:6px}
.ai-option-btn{
  padding:6px 12px;border-radius:var(--rxs);font-size:12px;font-weight:600;
  border:1px solid var(--borderStrong);background:var(--bg);color:var(--textDim);
  cursor:pointer;transition:all .2s;
}
.ai-option-btn.active{
  background:var(--accentDim);border-color:var(--accent);color:var(--accent);
}

/* AI 分步问答 - 步骤条 */
.ai-stepper {
  margin-bottom: 20px;
}
.ai-stepper-bar {
  display: flex; align-items: center; gap: 6px;
  margin-bottom: 10px;
}
.ai-stepper-dot {
  width: 20px; height: 20px; border-radius: 50%;
  background: var(--surface2); border: 1px solid var(--borderStrong);
  display: flex; align-items: center; justify-content: center;
  font-size: 10px; font-weight: 700; color: var(--textFaint);
  flex-shrink: 0; font-family: var(--fontD);
  transition: all .3s;
}
.ai-stepper-dot.done {
  background: var(--accent); border-color: var(--accent); color: #0a0c0a;
}
.ai-stepper-dot.active {
  background: var(--accentDim); border-color: var(--accent); color: var(--accent);
  transform: scale(1.1);
}
.ai-stepper-line {
  flex: 1; height: 2px; background: var(--surface2);
  border-radius: 1px; overflow: hidden;
}
.ai-stepper-line-fill {
  height: 100%; width: 0; background: var(--accent);
  transition: width .4s ease;
}
.ai-stepper-line-fill.done { width: 100%; }
.ai-stepper-counter {
  font-size: 11px; color: var(--textDim); text-align: right;
  font-family: var(--fontD);
}
.ai-step-card {
  background: var(--surface); border: 1px solid var(--border);
  border-radius: var(--rs); padding: 18px 14px;
  min-height: 200px;
  animation: aiStepIn .3s ease;
}
@keyframes aiStepIn {
  from { opacity: 0; transform: translateX(12px); }
  to { opacity: 1; transform: translateX(0); }
}
.ai-step-question {
  font-size: 15px; font-weight: 700; color: var(--text);
  margin-bottom: 14px; line-height: 1.5;
}
.ai-step-options {
  display: flex; flex-direction: column; gap: 8px;
}
.ai-step-option {
  padding: 12px 14px; border-radius: 0;
  border: 1px solid var(--borderStrong); background: var(--bg);
  color: var(--text); font-size: 13px; font-weight: 500;
  cursor: pointer; transition: all .2s; text-align: left;
  width: 100%; outline: none;
}
.ai-step-option:focus-visible { outline: none; }
.ai-step-option.selected {
  background: var(--accentDim); border-color: var(--accent); color: var(--accent);
  font-weight: 600;
}
.ai-step-options-multi {
  display: flex; flex-wrap: wrap; gap: 8px;
}
.ai-step-option-multi {
  padding: 10px 16px; border-radius: 20px;
  border: 1px solid var(--borderStrong); background: var(--bg);
  color: var(--text); font-size: 13px; font-weight: 500;
  cursor: pointer; transition: all .2s; outline: none;
}
.ai-step-option-multi:focus-visible { outline: none; }
.ai-step-option-multi.selected {
  background: var(--accent); color: #0a0c0a; border-color: var(--accent);
  font-weight: 600;
}
.ai-step-nav {
  display: flex; gap: 10px; margin-top: 20px;
}
.ai-step-nav button {
  flex: 1; padding: 12px; border-radius: 0;
  font-size: 13px; font-weight: 600; cursor: pointer;
  transition: all .2s; border: none;
}
.ai-step-prev {
  background: var(--surface2); color: var(--textDim);
  border: 1px solid var(--borderStrong) !important;
}
.ai-step-next {
  background: var(--accent); color: #0a0c0a;
}
.ai-step-next:disabled {
  opacity: .4; cursor: not-allowed;
}
.ai-step-textarea {
  width: 100%; min-height: 100px;
  padding: 12px; border-radius: 0;
  border: 1px solid var(--borderStrong); background: var(--bg);
  color: var(--text); font-size: 13px; font-family: var(--fontB);
  resize: vertical; outline: none;
  transition: border-color .2s;
}
.ai-step-textarea:focus { border-color: var(--accent); }
.ai-step-textarea::placeholder { color: var(--textFaint); }
.ai-loading{
  text-align:center;padding:40px 20px;color:var(--textDim);font-size:13px;
  display:flex;flex-direction:column;align-items:center;justify-content:center;
  min-height:60vh;
}
.ai-loading-spinner{
  width:40px;height:40px;border:3px solid var(--border);
  border-top-color:var(--accent);border-radius:50%;
  animation:spin 1s linear infinite;margin:0 auto 16px;
}
@keyframes spin {to{transform:rotate(360deg)}}
.ai-actions-preview{
  display:flex;gap:10px;margin-top:20px;
}
.ai-preview-btn-cancel{
  flex:1;padding:12px;border-radius:var(--rs);font-size:14px;font-weight:600;
  background:var(--surface);color:var(--text);border:1px solid var(--borderStrong);
  cursor:pointer;
}
.ai-preview-btn-confirm{
  flex:2;padding:12px;border-radius:var(--rs);font-size:14px;font-weight:700;
  background:var(--accent);color:#0a0c0a;border:none;cursor:pointer;
}

/* ===== WORKOUT PLAN ===== */
.wplan-weekbar{display:flex;gap:8px;overflow-x:auto;padding:4px 0 14px;scrollbar-width:none;-webkit-overflow-scrolling:touch}
.wplan-weekbar::-webkit-scrollbar{display:none}
.wplan-weekdot{flex-shrink:0;width:42px;height:42px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:14px;font-weight:700;background:var(--surface2);color:var(--textDim);border:2px solid transparent;transition:all .2s;cursor:pointer}
.wplan-weekdot.active{background:var(--accent);color:#0a0c0a;border-color:var(--accent)}
.wplan-weekdot.rest{opacity:.4}
.wplan-weekdot.today{border-color:var(--accent)}
.wplan-weekday{text-align:center;font-size:11px;color:var(--textDim);margin-top:3px;font-weight:600}
.wplan-weekday.active{color:var(--accent);font-weight:700}
.wplan-weekcol{display:flex;flex-direction:column;align-items:center;gap:0;flex-shrink:0}
.wplan-template-tag{display:inline-block;font-size:10px;font-weight:600;padding:2px 8px;border-radius:10px;background:var(--surface2);color:var(--textDim);margin-top:3px;max-width:64px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:center;cursor:pointer}
.wplan-template-header{display:flex;align-items:center;gap:8px;margin-bottom:8px}
.wplan-tpl-name{font-size:16px;font-weight:700;color:var(--text)}
.wplan-tpl-edit-btn,.wplan-tag-edit-btn{flex-shrink:0;width:28px;height:28px;border-radius:6px;border:none;background:transparent;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:all .2s;color:var(--textDim);opacity:.5}
.wplan-tpl-edit-btn:hover,.wplan-tag-edit-btn:hover{opacity:1;color:var(--text);background:var(--surface2)}
.wplan-exlist{display:flex;flex-direction:column;gap:8px;margin-top:10px}
.wplan-exitem{display:flex;align-items:center;gap:8px;padding:10px 12px;background:var(--surface);border:1px solid var(--border);border-radius:var(--rs);transition:all .2s}
.wplan-exitem:active{transform:scale(.98)}
.wplan-exinfo{flex:1;min-width:0}
.wplan-exname{font-size:15px;font-weight:600;color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.wplan-exspec{font-size:12px;color:var(--textDim);margin-top:2px}
.wplan-exdots{display:flex;gap:4px;flex-shrink:0}
.wplan-exdot{width:10px;height:10px;border-radius:50%;background:var(--border);transition:all .2s}
.wplan-exdot.on{background:var(--accent)}
.wplan-exbadge{display:none;flex-shrink:0}
.wplan-exitem.done .wplan-exbadge{display:flex;color:var(--accent)}
.wplan-exbadge svg{width:18px;height:18px}
.wplan-tags{display:flex;flex-wrap:wrap;gap:4px;margin:6px 0 10px}
.wplan-tag{font-size:10px;padding:2px 8px;border-radius:8px;background:var(--surface2);color:var(--textDim);font-weight:500}
.wplan-replace-header{display:flex;gap:8px;margin-bottom:12px}
.wplan-replace-input{flex:1;padding:8px 12px;border-radius:var(--rs);border:1px solid var(--border);background:var(--surface);color:var(--text);font-size:13px;font-family:var(--fontB)}
.wplan-replace-chip{position:relative;display:flex;align-items:center;gap:6px;padding:9px 14px;border-radius:20px;background:var(--surface);border:1px solid var(--border);color:var(--textDim);font-size:13px;font-weight:600;cursor:pointer;transition:all .2s;}
.wplan-replace-chip.active{background:var(--accent);border-color:var(--accent);color:#0a0c0a}
.wplan-replace-chip:active{transform:scale(.95)}
.wplan-replace-chip .wplan-rc-tag{position:absolute;top:-6px;right:-6px;font-size:9px;padding:1px 5px;border-radius:6px;background:var(--danger);color:#fff;font-weight:700;line-height:1.3}
.wp-pref{display:flex;flex-wrap:wrap;gap:8px}
.wp-pref-chip{padding:9px 14px;border-radius:20px;background:var(--surface);border:1px solid var(--border);color:var(--textDim);font-size:13px;font-weight:600;cursor:pointer;transition:all .2s;}
.wp-pref-chip.active{background:var(--accent);border-color:var(--accent);color:#0a0c0a}
.wp-pref-chip:active{transform:scale(.95)}
/* 锻炼计划：可编辑动作样式 */
.wplan-editable{position:relative}
.wplan-ex-edit-btn,.wplan-ex-del-btn{
  flex-shrink:0;width:36px;height:36px;border-radius:8px;
  background:transparent;border:none;
  display:flex;align-items:center;justify-content:center;
  font-size:12px;opacity:.7;cursor:pointer;transition:all .2s;
  color:var(--textDim);
}
.wplan-ex-edit-btn{margin-left:auto}
.wplan-ex-edit-btn:hover,.wplan-ex-del-btn:hover{opacity:1;color:var(--text);background:var(--surface2)}
.wplan-add-ex-btn{
  display:block;width:100%;padding:12px;border-radius:var(--rs);
  border:1px dashed var(--borderStrong);background:transparent;color:var(--text);
  font-size:15px;font-weight:600;margin-top:10px;cursor:pointer;
}
.wplan-add-ex-btn:active{transform:scale(.98);background:var(--surface2)}
.wplan-replacing{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent)}
.homeWorkoutContent .we-cat-row{font-size:12px;color:var(--textDim);font-weight:600;margin-bottom:8px;opacity:.85}
.we-cat-row{font-size:12px;color:var(--textDim);font-weight:600;margin-bottom:8px;opacity:.85}
.workout-list{display:flex;flex-direction:column;gap:8px}
.workout-exercise{
  display:flex;align-items:center;gap:10px;
  padding:10px 12px;background:var(--surface);
  border:1px solid var(--border);border-radius:var(--rs);
  transition:all .2s;
}
.workout-exercise:active{background:var(--surface2)}
.workout-exercise .we-num{
  width:24px;height:24px;border-radius:50%;
  background:var(--bg2);color:var(--accent);
  font-family:var(--fontD);font-size:12px;font-weight:700;
  display:flex;align-items:center;justify-content:center;
  flex-shrink:0;border:1px solid rgba(200,255,62,.2);
}
.workout-exercise .we-info{flex:1;min-width:0}
.workout-exercise .we-name{font-size:13px;font-weight:500}
.we-type-tag{font-size:10px;color:var(--accent);font-weight:600;margin-right:4px}
.workout-exercise .we-spec{
  font-size:11px;color:var(--textDim);margin-top:2px;
  font-family:var(--fontD);
}
.workout-exercise .we-spec .we-weight{color:var(--carbs)}
.workout-exercise .we-spec .we-reps{color:var(--accent)}

/* ===== HOME WORKOUT (图二样式：标题+管理+列表项+进度块) ===== */
#homeWorkoutCard .workout-header{
  display:flex;align-items:center;justify-content:space-between;
  margin-bottom:12px;
}
#homeWorkoutCard .workout-manage-btn{
  background:none;border:none;cursor:pointer;
  color:var(--accent);font-size:13px;font-weight:600;
  font-family:var(--fontB);padding:4px 8px;
}
#homeWorkoutCard .workout-manage-btn:active{opacity:.6}
#homeWorkoutCard .workout-list{gap:0;border:1px solid var(--divider)}
#homeWorkoutCard .workout-exercise{
  display:flex;align-items:center;gap:12px;
  padding:12px 12px;background:var(--bg2);
  border:none;border-bottom:1px solid var(--divider);
  border-radius:0;
  position:relative;
  transition:background .25s;
}
#homeWorkoutCard .workout-exercise:last-child{border-bottom:none}
#homeWorkoutCard .workout-exercise:active{background:var(--surface2)}
#homeWorkoutCard .we-icon{
  width:44px;height:44px;flex-shrink:0;
  background:var(--surface2);color:var(--accent);
  display:flex;align-items:center;justify-content:center;
}
#homeWorkoutCard .we-icon svg{width:22px;height:22px}
#homeWorkoutCard .we-name{font-size:14px;font-weight:600;transition:color .25s}
#homeWorkoutCard .we-spec{font-size:11px;color:var(--textDim);margin-top:3px;font-family:var(--fontD)}
#homeWorkoutCard .we-dots{display:flex;gap:4px;flex-shrink:0;margin-left:auto}
#homeWorkoutCard .we-set-dot{
  width:10px;height:10px;border-radius:50%;background:#2a2a2a;
  border:1px solid rgba(255,255,255,.08);transition:all .2s;
}
#homeWorkoutCard .we-set-dot.on{background:var(--accent);border-color:var(--accent);box-shadow:0 0 4px var(--accentGlow)}
/* 完成状态：背景微绿 + 名称划线 + 弹跳动画 */
#homeWorkoutCard .workout-exercise.done{
  background:rgba(200,255,62,.05);
  animation:weDonePop .35s cubic-bezier(.34,1.56,.64,1);
}
#homeWorkoutCard .workout-exercise.done .we-name{
  color:var(--textDim);
  text-decoration:line-through;
  text-decoration-color:rgba(255,255,255,.25);
}
@keyframes weDonePop{
  0%{transform:scale(1)}
  40%{transform:scale(1.03)}
  100%{transform:scale(1)}
}
/* 完成勾选徽章 */
#homeWorkoutCard .we-done-badge{
  width:20px;height:20px;flex-shrink:0;
  border-radius:50%;
  background:var(--accent);color:#0C0E0C;
  display:flex;align-items:center;justify-content:center;
  opacity:0;transform:scale(.4);
  transition:opacity .25s,transform .25s cubic-bezier(.34,1.56,.64,1);
}
#homeWorkoutCard .we-done-badge svg{width:12px;height:12px}
#homeWorkoutCard .workout-exercise.done .we-done-badge{
  opacity:1;transform:scale(1);
}
/* 临时项目标签 */
#homeWorkoutCard .we-temp-tag{
  display:inline-block;margin-left:6px;
  font-size:9px;font-weight:600;
  color:var(--accent);
  background:var(--accentDim);
  border:1px solid rgba(200,255,62,.25);
  padding:1px 5px;border-radius:3px;
  vertical-align:1px;
}
/* 临时项目删除按钮 */
#homeWorkoutCard .we-del-btn{
  width:22px;height:22px;flex-shrink:0;
  border-radius:50%;
  background:var(--surface2);border:1px solid var(--border);
  color:var(--textDim);font-size:11px;cursor:pointer;
  display:flex;align-items:center;justify-content:center;
  transition:all .2s;
}
#homeWorkoutCard .we-del-btn:active{transform:scale(.9);color:var(--danger);border-color:rgba(255,92,92,.3)}
/* 临时添加按钮 */
#homeWorkoutCard .workout-add-btn{
  width:100%;margin-top:10px;
  padding:10px;
  background:none;border:1px dashed var(--borderStrong);
  border-radius:0;color:var(--textDim);
  font-size:13px;font-weight:600;cursor:pointer;
  font-family:var(--fontB);
  transition:all .2s;
}
#homeWorkoutCard .workout-add-btn:active{background:var(--surface2);color:var(--accent);border-color:var(--accent)}
.home-workout-hint{font-size:10px;color:var(--textFaint);margin-top:8px;text-align:center}

/* ===== CALENDAR ===== */
.cal-header{
  display:flex;align-items:center;justify-content:space-between;
  margin-bottom:12px;
}
.cal-nav-btn{
  width:32px;height:32px;border:1px solid var(--border);
  background:var(--surface);color:var(--textDim);
  border-radius:50%;cursor:pointer;font-size:14px;
  display:flex;align-items:center;justify-content:center;
  transition:all .2s;
}
.cal-nav-btn:active{transform:scale(.9);background:var(--surface2)}
.cal-title{
  font-family:var(--fontD);font-size:18px;font-weight:600;
  letter-spacing:.5px;
}
.cal-weekdays{
  display:grid;grid-template-columns:repeat(7,1fr);
  margin-bottom:8px;
}
.cal-weekday{
  text-align:center;font-size:11px;color:var(--textDim);
  font-family:var(--fontD);font-weight:700;padding:4px 0;letter-spacing:1px;
}
.cal-grid{
  display:grid;grid-template-columns:repeat(7,1fr);gap:4px;
}
.cal-day{
  aspect-ratio:1;border-radius:10px;
  background:var(--surface);border:1px solid var(--border);
  display:flex;flex-direction:column;align-items:center;justify-content:center;
  position:relative;transition:transform .15s ease,border-color .15s ease,box-shadow .15s ease;
  font-size:14px;font-family:var(--fontD);font-weight:600;
  color:#f5f5ef;
}
.cal-day.empty{background:none;border:none}
/* 训练日：蓝色系 */
.cal-day.train{
  background:linear-gradient(160deg,rgba(92,200,255,.14),rgba(92,200,255,.04));
  border-color:rgba(92,200,255,.35);
}
/* 休息日：橙色系 */
.cal-day.rest{
  background:linear-gradient(160deg,rgba(255,169,77,.12),rgba(255,169,77,.03));
  border-color:rgba(255,169,77,.3);
}
.cal-day.today{
  border-color:var(--accent);
  font-weight:700;
  box-shadow:inset 0 0 0 1px var(--accent),0 0 0 2px var(--accentDim);
}
/* 全部打卡完成：accent 渐变 + 发光 */
.cal-day.complete{
  background:linear-gradient(150deg,#d9ff6e,var(--accent) 55%,#9de62e);
  border-color:var(--accent);
  color:#0a0c0a;font-weight:800;
  box-shadow:0 2px 10px rgba(200,255,62,.35);
}
.cal-day.today.complete{
  box-shadow:inset 0 0 0 1px rgba(255,255,255,.35),0 0 0 2px var(--accentDim),0 3px 12px rgba(200,255,62,.5);
}
/* 完成徽标（右上角 ✓） */
.cal-day .cal-badge{
  position:absolute;top:-5px;right:-5px;width:16px;height:16px;border-radius:50%;
  background:#0a0c0a;color:var(--accent);
  font-size:10px;line-height:16px;text-align:center;font-weight:800;z-index:2;
  box-shadow:0 1px 4px rgba(0,0,0,.45);
}
/* 训练日/休息日类型小圆点（完成日不显示） */
.cal-day .cal-dot{
  position:absolute;bottom:3px;width:5px;height:5px;border-radius:50%;
}
.cal-day .cal-dot.t{background:#5cc8ff;box-shadow:0 0 4px rgba(92,200,255,.8)}
.cal-day .cal-dot.r{background:#ffa94d;box-shadow:0 0 4px rgba(255,169,77,.8)}
.cal-day.complete .cal-dot{display:none}
.cal-day.has-data{border-color:var(--borderStrong)}
.cal-day .cal-weight{
  font-size:8px;color:var(--textFaint);
  font-family:var(--fontD);margin-top:2px;
}
.cal-day.complete .cal-weight{color:rgba(10,12,10,.55)}
.cal-day.future{opacity:.3}
.cal-day.clickable{cursor:pointer}
.cal-day.clickable:hover{border-color:var(--accent)}
.cal-day.clickable:active{transform:scale(.9)}

/* ===== SHARE ===== */
.share-btn{
  display:flex;align-items:center;gap:6px;
  padding:6px 14px;background:var(--accentDim);
  border:1px solid rgba(200,255,62,.25);border-radius:20px;
  color:var(--accent);font-size:12px;font-weight:600;
  cursor:pointer;font-family:var(--fontB);transition:all .2s;
}
.share-btn:active{transform:scale(.93)}

/* ===== RESPONSIVE ===== */
@media(max-width:360px){
  .food-grid{grid-template-columns:1fr}
}
/* ===== AUTH MODAL ===== */
.auth-overlay{
  position:fixed;inset:0;background:rgba(0,0,0,.75);
  backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);
  z-index:250;display:none;opacity:0;
  align-items:center;justify-content:center;padding:20px;
}
.auth-overlay.show{display:flex;opacity:1}
.auth-box{
  background:var(--bg2);border:1px solid var(--borderStrong);
  border-radius:0;padding:28px 24px;max-width:340px;width:100%;
  transform:scale(.9) translateY(10px);transition:transform .35s cubic-bezier(.34,1.56,.64,1);
}
.auth-overlay.show .auth-box{transform:scale(1) translateY(0)}
.auth-logo{
  text-align:center;margin-bottom:20px;
}
.auth-logo .al-icon{
  width:56px;height:56px;border-radius:0;
  background:var(--accentDim);border:1px solid rgba(200,255,62,.2);
  display:inline-flex;align-items:center;justify-content:center;
  font-size:28px;margin-bottom:10px;
  object-fit:cover;
}
.auth-logo .al-title{font-family:var(--fontD);font-size:22px;font-weight:700;letter-spacing:1px}
.auth-logo .al-title span{color:var(--accent)}
.auth-logo .al-sub{font-size:12px;color:var(--textDim);margin-top:4px}
/* auth-tabs moved to style4 section */
.auth-form{display:none;animation:tabIn .3s ease}
.auth-form.active{display:block}
.auth-field{margin-bottom:14px}
.auth-field label{
  display:block;font-size:11px;color:var(--textDim);
  text-transform:uppercase;letter-spacing:.5px;margin-bottom:6px;
}
.auth-field input{
  width:100%;padding:12px 14px;background:var(--surface);
  border:1px solid var(--border);border-radius:var(--rs);
  color:var(--text);font-size:14px;font-family:var(--fontB);
  outline:none;transition:border-color .2s;
}
.auth-field input:focus{border-color:var(--accent)}
.auth-field input::placeholder{color:var(--textFaint)}
.auth-btn{
  width:100%;padding:13px;background:var(--accent);
  border:none;border-radius:var(--rs);color:#0a0c0a;
  font-size:14px;font-weight:700;cursor:pointer;
  font-family:var(--fontB);transition:all .2s;
  margin-top:4px;
}
.auth-btn:active{transform:scale(.97);opacity:.85}
.auth-btn:disabled{opacity:.5;cursor:not-allowed}
.auth-error{
  font-size:12px;color:var(--danger);text-align:center;
  margin-top:10px;display:none;
}
.auth-error.show{display:block}
.auth-hint{
  font-size:11px;color:var(--textFaint);text-align:center;
  margin-top:14px;line-height:1.5;
}
.auth-remember{
  display:flex;align-items:center;gap:8px;font-size:13px;color:var(--textDim);
  margin:8px 0 12px 0;cursor:pointer;user-select:none;padding:6px 0;
  -webkit-tap-highlight-color:rgba(200,255,62,.15);
  position:relative;
}
.auth-remember-check{
  display:inline-block;width:22px;height:22px;flex-shrink:0;
  border:2px solid rgba(255,255,255,.35);
  background:var(--surface);
  border-radius:4px;
  transition:all .2s ease;
  position:relative;
  cursor:pointer;
  box-shadow:0 0 0 0 rgba(200,255,62,.3);
}
.auth-remember-check::after{
  content:'';
  position:absolute;
  top:2px;left:6px;
  width:6px;height:12px;
  border:solid #0a0c0a;
  border-width:0 3px 3px 0;
  transform:rotate(45deg) scale(0);
  transition:transform .2s ease;
}
.auth-remember input[type="checkbox"]:checked + .auth-remember-check{
  background:var(--accent);
  border-color:var(--accent);
  box-shadow:0 0 8px rgba(200,255,62,.4);
}
.auth-remember input[type="checkbox"]:checked + .auth-remember-check::after{
  transform:rotate(45deg) scale(1);
}
.auth-remember:hover .auth-remember-check{
  border-color:rgba(255,255,255,.5);
}
.auth-remember:active .auth-remember-check{
  transform:scale(.92);
}
.auth-remember-text{
  cursor:pointer;
  line-height:1;
}

/* ===== LEAVE FEATURE ===== */
.leave-btn-sm{
  font-size:10px;color:var(--warn);padding:2px 8px;
  border:1px solid rgba(255,169,77,.25);border-radius:4px;
  cursor:pointer;background:none;display:flex;align-items:center;gap:3px;
  transition:all .2s;
}
.leave-btn-sm:active{background:rgba(255,169,77,.08);transform:scale(.95)}
.leave-overlay{
  position:fixed;inset:0;background:rgba(0,0,0,.75);
  backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);
  z-index:250;display:none;opacity:0;
  align-items:center;justify-content:center;padding:20px;
}
.leave-overlay.show{display:flex;opacity:1}
.leave-box{
  background:var(--bg2);border:1px solid var(--borderStrong);
  border-radius:0;padding:28px 24px;max-width:340px;width:100%;
  transform:scale(.9) translateY(10px);transition:transform .35s cubic-bezier(.34,1.56,.64,1);
}
.leave-overlay.show .leave-box{transform:scale(1) translateY(0)}
.leave-box h3{font-size:16px;font-weight:700;text-align:center;margin-bottom:16px}
.leave-field{margin-bottom:14px}
.leave-field label{display:block;font-size:11px;color:var(--textDim);text-transform:uppercase;letter-spacing:.5px;margin-bottom:6px}
.leave-field input{width:100%;padding:10px 12px;background:var(--surface);border:1px solid var(--border);border-radius:0;color:var(--text);font-size:14px;font-family:var(--fontB);outline:none;transition:border-color .2s}
.leave-field input:focus{border-color:var(--accent)}
.leave-field .date-row{display:flex;gap:8px;align-items:center}
.leave-field .date-row input{flex:1}
.leave-field .date-row span{color:var(--textDim);font-size:13px}
.leave-field .hint{font-size:11px;color:var(--textFaint);margin-top:4px}
.leave-btns{display:flex;gap:8px;margin-top:16px}
.leave-btns button{flex:1;padding:11px;border:none;border-radius:0;font-size:13px;font-weight:600;cursor:pointer;font-family:var(--fontB);transition:all .2s}
.leave-btns .btn-cancel{background:var(--surface2);color:var(--textDim)}
.leave-btns .btn-cancel:active{transform:scale(.97)}
.leave-btns .btn-confirm{background:var(--warn);color:#0a0c0a}
.leave-btns .btn-confirm:active{transform:scale(.97)}
.leave-btns .btn-danger{background:rgba(255,92,92,.12);color:var(--danger)}
.leave-btns .btn-danger:active{transform:scale(.97)}
.leave-vacation-card{
  background:var(--surface);border:1px solid rgba(255,169,77,.12);
  border-radius:0;padding:24px 16px;margin-bottom:12px;text-align:center;
}
.leave-vacation-card .lvc-icon{font-size:48px;margin-bottom:8px;opacity:.7}
.leave-vacation-card .lvc-title{font-size:16px;font-weight:700;color:var(--text)}
.leave-vacation-card .lvc-sub{font-size:13px;color:var(--textDim);margin-top:4px;line-height:1.6}
.leave-vacation-card .lvc-actions{display:flex;gap:8px;margin-top:14px;justify-content:center}
.leave-vacation-card .lvc-actions button{padding:8px 16px;border:none;border-radius:0;font-size:13px;font-weight:600;cursor:pointer;font-family:var(--fontB);transition:all .2s}
.leave-vacation-card .lvc-actions .lvc-btn-primary{background:var(--accent);color:#0a0c0a}
.leave-vacation-card .lvc-actions .lvc-btn-primary:active{transform:scale(.97)}
.leave-vacation-card .lvc-actions .lvc-btn-secondary{background:var(--surface2);color:var(--textDim)}
.leave-vacation-card .lvc-actions .lvc-btn-secondary:active{transform:scale(.97)}
.leave-banner-bar{
  display:flex;align-items:center;gap:8px;padding:8px 12px;margin-bottom:10px;
  background:rgba(255,169,77,.06);border:1px solid rgba(255,169,77,.12);border-radius:0;
  cursor:pointer;transition:all .2s;
}
.leave-banner-bar:active{background:rgba(255,169,77,.1)}
.leave-banner-bar .lbb-icon{font-size:16px;opacity:.7}
.leave-banner-bar .lbb-text{font-size:12px;color:var(--textDim);flex:1}
.leave-banner-bar .lbb-arrow{font-size:12px;color:var(--textFaint)}
.leave-manage-section{padding:12px 0}
.leave-manage-section .lms-title{font-size:12px;font-weight:700;color:var(--textDim);text-transform:uppercase;letter-spacing:1px;margin-bottom:10px;display:flex;align-items:center;gap:6px}
.leave-manage-section .lms-title::before{content:'';width:3px;height:11px;background:var(--warn);border-radius:2px}
.leave-item-card{
  display:flex;align-items:center;gap:10px;
  background:var(--surface);border:1px solid rgba(255,255,255,.04);border-radius:0;
  padding:12px 14px;margin-bottom:8px;
}
.leave-item-card .lic-icon{font-size:24px}
.leave-item-card .lic-main{flex:1}
.leave-item-card .lic-main .lic-date{font-size:13px;font-weight:600}
.leave-item-card .lic-main .lic-status{font-size:11px;color:var(--textDim);margin-top:2px}
.leave-item-card .lic-close{font-size:16px;color:var(--textFaint);cursor:pointer;padding:4px;transition:all .2s}
.leave-item-card .lic-close:active{color:var(--danger);transform:scale(1.2)}
.leave-empty{text-align:center;padding:12px;font-size:12px;color:var(--textFaint)}
.leave-add-btn{font-size:12px;color:var(--warn);padding:6px 12px;border:1px solid rgba(255,169,77,.3);border-radius:0;cursor:pointer;background:none;display:inline-flex;align-items:center;gap:4px;margin-top:8px;transition:all .2s}
.leave-add-btn:active{background:rgba(255,169,77,.08);transform:scale(.97)}

/* ===== USER PROFILE IN HEADER ===== */
.user-avatar{
  width:32px;height:32px;border-radius:50%;
  background:var(--surface2);border:1px solid var(--borderStrong);
  display:flex;align-items:center;justify-content:center;
  font-size:14px;font-weight:600;color:var(--accent);
  overflow:hidden;cursor:pointer;transition:all .2s;
  flex-shrink:0;
}
.user-avatar:active{transform:scale(.9)}
.user-avatar img{width:100%;height:100%;object-fit:cover}
.user-avatar.logged-out{background:var(--surface)}

/* ===== PROFILE SECTION IN SETTINGS ===== */
/* (removed .profile-section - now uses .card) */
.profile-row{
  display:flex;align-items:center;gap:12px;margin-bottom:12px;
}
.profile-info{flex:1;min-width:0}
.profile-info .pi-name{font-size:15px;font-weight:600}
.profile-info .pi-uid{font-size:11px;color:var(--textDim);margin-top:2px}
.profile-status{
  display:flex;align-items:center;gap:6px;
  font-size:11px;color:var(--accent);
}
.profile-status .ps-dot{
  width:6px;height:6px;border-radius:50%;background:var(--accent);
  animation:pulse 2s ease-in-out infinite;
}
@keyframes pulse{0%,100%{opacity:1}50%{opacity:.4}}
.logout-btn{
  width:100%;padding:11px;background:rgba(255,92,92,.08);
  border:1px solid rgba(255,92,92,.2);border-radius:var(--rs);
  color:var(--danger);font-size:13px;font-weight:500;
  cursor:pointer;font-family:var(--fontB);transition:all .2s;
}
.logout-btn:active{transform:scale(.97)}
.login-prompt-btn{
  width:100%;padding:12px;background:var(--accent);
  border:none;border-radius:var(--rs);color:#0a0c0a;
  font-size:13px;font-weight:700;cursor:pointer;
  font-family:var(--fontB);transition:all .2s;
}
.login-prompt-btn:active{transform:scale(.97)}
.sync-status{
  font-size:11px;color:var(--textDim);text-align:center;
  padding:8px;background:var(--surface);border-radius:var(--rxs);
  margin-bottom:10px;
}
.sync-status.synced{color:var(--accent)}

/* ===== PROFILE PAGE ===== */
#tab-plan{padding:8px 16px 0}
/* profile-top moved to style4 section */
/* profile-avatar-large moved to style4 section */
.profile-main-info{flex:1;min-width:0}
.profile-username{
  font-family:var(--fontD);font-size:22px;font-weight:700;
  color:var(--text);letter-spacing:.5px;line-height:1.2;
}
.profile-status-line{
  font-size:11px;color:var(--textDim);margin-top:4px;
  display:flex;align-items:center;gap:5px;cursor:pointer;
}
.profile-status-line::before{
  content:'';width:5px;height:5px;border-radius:50%;
  background:var(--accent);flex-shrink:0;
}
.profile-status-line.no-dot::before{display:none}

/* 数据统计条 */
/* profile-stats-row moved to style4 section */

/* 区块标题 */
.section-label{
  font-size:11px;font-weight:700;color:var(--textDim);
  text-transform:uppercase;letter-spacing:1.5px;
  margin-bottom:12px;padding:0 4px;
}

/* 更多功能区 - 列表式 */
.more-list{
  overflow:hidden;margin-bottom:0;
}
.more-item{
  display:flex;align-items:center;gap:12px;
  padding:14px 16px;cursor:pointer;
  border-bottom:1px solid var(--border);
  transition:background .15s;background:none;border-left:none;border-right:none;
  border-top:none;color:var(--text);font-family:var(--fontB);font-size:14px;
  width:100%;text-align:left;
}
.more-item:last-child{border-bottom:none}
.more-item:active{background:var(--surface2)}
.more-item-icon{
  width:28px;height:28px;display:flex;
  align-items:center;justify-content:center;flex-shrink:0;
}
.more-item-icon svg{
  width:18px;height:18px;
  stroke:var(--textDim);stroke-width:1.8;
  fill:none;stroke-linecap:round;stroke-linejoin:round;
}
.more-item-label{flex:1;font-weight:400}
.more-item-arrow{font-size:14px;color:var(--textFaint)}
.more-item-value{
  font-size:12px;color:var(--textDim);
  font-family:var(--fontD);margin-right:4px;
}

/* 退出登录按钮 */
.logout-btn{
  width:100%;padding:14px;
  background:rgba(255,92,92,.06);
  border:1px solid rgba(255,92,92,.15);border-radius:14px;
  color:var(--danger);font-size:14px;font-weight:500;
  cursor:pointer;font-family:var(--fontB);
  display:flex;align-items:center;justify-content:center;gap:8px;
  transition:all .2s;margin-bottom:16px;
}
.logout-btn:active{transform:scale(.97);background:rgba(255,92,92,.12)}
.logout-btn svg{
  width:16px;height:16px;stroke:var(--danger);
  stroke-width:1.8;fill:none;stroke-linecap:round;stroke-linejoin:round;
}

/* 版本信息 */
.version-footer{text-align:center;padding:16px 0 12px}
.vf-version{font-family:var(--fontD);font-size:12px;color:var(--textFaint);letter-spacing:1px}
.vf-copy{font-size:10px;color:var(--textFaint);margin-top:4px}

/* 统计周期切换 */
/* stat-period-toggle moved to style4 section */

/* ===== SUBPAGE ===== */
.subpage-overlay{
  position:fixed;top:0;left:0;right:0;bottom:0;z-index:200;
  background:var(--bg);display:none;flex-direction:column;
  max-width:480px;margin:0 auto;
}
.subpage-overlay.show{display:flex}
.subpage{
  flex:1;display:flex;flex-direction:column;overflow:hidden;min-height:0;
}
.subpage-header{
  display:flex;align-items:center;gap:12px;
  padding:calc(env(safe-area-inset-top) + 14px) 18px 10px;
  flex-shrink:0;z-index:10;
  background:var(--bg);
  border-bottom:1px solid var(--divider);
}
.subpage-back{
  background:none;border:none;color:var(--accent);font-size:16px;
  cursor:pointer;font-family:var(--fontB);padding:4px 8px;
}
.subpage-title{font-size:17px;font-weight:700;font-family:var(--fontB)}
.subpage-content{
  flex:1;overflow-y:auto;-webkit-overflow-scrolling:touch;
  padding:0 16px calc(24px + env(safe-area-inset-bottom));
  min-height:0;
}

/* ===== SPLASH SCREEN ===== */
.splash-screen{
  position:fixed;top:0;left:0;right:0;bottom:0;width:100%;height:100%;z-index:9999;
  background:#000000;
  display:flex;flex-direction:column;align-items:center;justify-content:center;
  transition:opacity .6s ease,visibility .6s ease;
}
.splash-screen.hide{opacity:0;visibility:hidden;pointer-events:none}
.splash-logo{
  width:120px;height:120px;
  animation:splashLogoIn .8s cubic-bezier(.22,1,.36,1) both;
}
@keyframes splashLogoIn{
  0%{transform:scale(.6);opacity:0}
  60%{transform:scale(1.05);opacity:1}
  100%{transform:scale(1);opacity:1}
}
.splash-name{
  font-family:'Montserrat',var(--fontD);font-size:36px;font-weight:700;
  color:#ffffff;letter-spacing:-0.5px;margin-top:30px;
  animation:splashFadeUp .8s .3s cubic-bezier(.22,1,.36,1) both;
}
.splash-name span{color:#7ED321}
.splash-slogan{
  font-family:'Montserrat',var(--fontB);font-size:15px;font-weight:400;
  color:#999999;margin-top:14px;
  letter-spacing:0.3px;
  animation:splashFadeUp .8s .5s cubic-bezier(.22,1,.36,1) both;
}
.splash-divider{
  width:44px;height:2px;background:#7ED321;
  margin-top:20px;border-radius:1px;
  animation:splashDivider .6s .7s ease both;
}
@keyframes splashFadeUp{
  0%{transform:translateY(12px);opacity:0}
  100%{transform:translateY(0);opacity:1}
}
@keyframes splashDivider{
  0%{width:0;opacity:0}
  100%{width:44px;opacity:1}
}
.splash-loader{
  position:absolute;bottom:calc(env(safe-area-inset-bottom) + 40px);
  display:flex;align-items:center;gap:6px;
  animation:splashFadeUp .6s .9s ease both;
}
.splash-loader-dot{
  width:6px;height:6px;border-radius:50%;background:rgba(255,255,255,.2);
  animation:splashLoaderDot 1.2s ease-in-out infinite;
}
.splash-loader-dot:nth-child(2){animation-delay:.15s}
.splash-loader-dot:nth-child(3){animation-delay:.3s}
@keyframes splashLoaderDot{
  0%,80%,100%{background:rgba(255,255,255,.2);transform:scale(.8)}
  40%{background:#7ED321;transform:scale(1.2)}
}

/* 编辑模式输入框 */
.edit-input{
  width:100%;padding:8px 10px;background:var(--surface2);
  border:1px solid var(--borderStrong);border-radius:var(--rxs);
  color:var(--text);font-size:14px;font-family:var(--fontB);
}
.edit-input:focus{border-color:var(--accent);outline:none}
.edit-input option{background:var(--bg2);color:var(--text)}
select.edit-input,input[type="time"].edit-input,input[type="date"].edit-input{color-scheme:dark;color:var(--text)}
input[type="time"].edit-input::-webkit-calendar-picker-indicator{filter:invert(.7)}
.edit-row{
  display:flex;gap:8px;align-items:center;margin-bottom:8px;
}
.edit-row .er-label{flex:1;font-size:13px}
.edit-row .er-input{width:100px}
.edit-save-btn{
  width:100%;padding:12px;background:var(--accent);color:#0a0c0a;
  border:none;border-radius:var(--rs);font-size:15px;font-weight:600;
  cursor:pointer;font-family:var(--fontB);margin-top:12px;
}
.edit-save-btn:active{transform:scale(.97);opacity:.85}

/* 训练日设置 */
.td-week{display:flex;gap:6px;margin-bottom:16px}
.td-day{
  flex:1;aspect-ratio:1;border-radius:50%;border:1px solid var(--borderStrong);
  background:var(--surface);color:var(--textDim);font-size:13px;font-weight:600;
  display:flex;align-items:center;justify-content:center;cursor:pointer;
  transition:all .2s;font-family:var(--fontB);
}
.td-day.active{background:var(--accent);color:#0a0c0a;border-color:var(--accent)}
.td-day:active{transform:scale(.9)}
.td-manual-list{margin-top:12px}
.td-manual-item{
  display:flex;align-items:center;justify-content:space-between;
  padding:10px;background:var(--surface2);border-radius:var(--rs);margin-bottom:6px;
}
.td-manual-item .tdm-date{font-size:13px}
.td-manual-item.tdm-inactive{opacity:.55}
.td-manual-item .tdm-type{
  display:flex;gap:4px;
}
.tdm-status{font-size:10px;padding:2px 6px;border-radius:var(--rxs);white-space:nowrap;margin-left:4px}
.tdm-status-on{background:rgba(200,255,62,.14);color:var(--accent)}
.tdm-status-off{background:var(--surface);color:var(--textFaint);border:1px solid var(--border)}
.tdm-btn{
  padding:4px 10px;border-radius:var(--rxs);border:1px solid var(--borderStrong);
  background:var(--surface);color:var(--textDim);font-size:12px;cursor:pointer;
}
.tdm-btn.active{background:var(--accent);color:#0a0c0a;border-color:var(--accent)}
/* 训练日设置：月历视图 */
.td-cal-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px}
.td-cal-title{font-size:14px;font-weight:700;color:var(--text);font-family:var(--fontB)}
.td-cal-week{display:grid;grid-template-columns:repeat(7,1fr);gap:4px;margin-bottom:4px}
.td-cal-week span{text-align:center;font-size:11px;color:var(--textDim);padding:4px 0}
.td-cal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:4px}
.tdc-cell{aspect-ratio:1;border-radius:10px;border:1px solid var(--borderStrong);display:flex;align-items:center;justify-content:center;font-size:12.5px;color:var(--text);cursor:pointer;position:relative;transition:all .15s;background:var(--surface)}
.tdc-cell.tdc-blank{border-color:transparent;background:transparent;cursor:default}
.tdc-cell:active{transform:scale(.9)}
.tdc-cell.tdc-today{border:2px solid var(--accent);font-weight:800}
.tdc-cell.tdc-def-training{border-color:rgba(200,255,62,.35);background:rgba(200,255,62,.07);color:var(--accent)}
.tdc-cell.tdc-def-rest{border-color:var(--borderStrong);color:var(--textDim)}
.tdc-cell.tdc-ov-training{border-color:var(--accent);background:var(--accent);color:#0a0c0a;font-weight:800}
.tdc-cell.tdc-ov-rest{border-color:rgba(255,92,92,.6);background:rgba(255,92,92,.14);color:#ff7b7b;font-weight:700}
.tdc-dot{display:inline-block;width:8px;height:8px;border-radius:50%;margin-right:4px;vertical-align:middle}
.tdc-dot-training{background:var(--accent)}
.tdc-dot-rest{background:rgba(255,92,92,.75)}
.tdc-dot-default{background:rgba(200,255,62,.35);border:1px solid rgba(200,255,62,.5)}
/* AI 重新生成目标按钮：渐变发光 */
.tdm-ai-btn{
  width:100%;margin-bottom:16px;padding:13px 0;
  border-radius:14px;border:none;cursor:pointer;
  background:linear-gradient(135deg,#d8ff6e 0%,var(--accent) 45%,#8fe62e 100%);
  color:#0a0c0a;font-size:14px;font-weight:700;font-family:var(--fontB);
  box-shadow:0 4px 18px rgba(200,255,62,.22),inset 0 1px 0 rgba(255,255,255,.4);
  transition:transform .15s ease,box-shadow .15s ease,filter .15s ease;
  display:flex;align-items:center;justify-content:center;gap:6px;
}
.tdm-ai-btn:active{transform:scale(.97);box-shadow:0 2px 8px rgba(200,255,62,.15)}
.tdm-ai-btn:hover{filter:brightness(1.07)}

/* ===== AI 功能 ===== */
.ai-badge{font-size:10px;color:var(--accent);border:1px solid var(--accent);border-radius:6px;padding:1px 5px;margin-left:6px;vertical-align:2px;font-weight:700}
.ai-advice-text{font-size:13px;color:var(--text);line-height:1.7;white-space:pre-wrap;word-break:break-word}
.ai-advice-meta{font-size:11px;color:var(--textFaint);margin-top:6px;line-height:1.5}
/* AI 解读今日数据统计网格 */
.ai-stats-grid{
  display:grid;grid-template-columns:repeat(4,1fr);gap:6px;
  margin-top:10px;
}
.ai-stat{
  background:var(--surface);border:1px solid var(--border);
  border-radius:var(--rxs);padding:8px 4px;text-align:center;
}
.ai-stat .ai-stat-label{
  font-size:9px;color:var(--textDim);letter-spacing:.5px;
  margin-bottom:3px;white-space:nowrap;
}
.ai-stat .ai-stat-val{
  font-size:13px;font-weight:700;font-family:var(--fontD);
}
.ai-stat .ai-stat-val.t{color:#5cc8ff}
.ai-stat .ai-stat-val.r{color:#ffa94d}
.ai-stat .ai-stat-val.k{color:#c8ff3e}
.ai-stat .ai-stat-val.c{color:#c89bff}
.ai-stat .ai-stat-val.p{color:#ffa94d}
.ai-period-bar{display:flex;gap:8px;margin-bottom:12px}
.ai-period-btn{flex:1;padding:8px 0;border-radius:var(--rs);font-size:13px;background:var(--surface2);color:var(--text);border:1px solid var(--borderStrong);cursor:pointer}
.ai-period-btn.active{background:var(--accent);color:#0a0c0a;border-color:var(--accent);font-weight:700}
.ai-summary-body{font-size:13px;color:var(--text);line-height:1.8;white-space:pre-wrap;word-break:break-word}
.ai-md-h{font-size:13px;font-weight:700;color:var(--text);margin:8px 0 4px;line-height:1.5}
.ai-md-h:first-child{margin-top:0}
.ai-md-p{font-size:13px;color:var(--text);line-height:1.7;margin:2px 0}
.ai-md-li{font-size:13px;color:var(--text);line-height:1.7;padding-left:13px;position:relative;margin:1px 0}
.ai-md-li:before{content:'·';position:absolute;left:2px}
/* AI 解读内容区：高度随文案自适应，完整展示全部解读文案（不内部滚动，随页面滚动查看） */
#aiInsightBody{max-height:none;overflow-y:visible}

/* AI 解读卡片（个人页功能区上方） */
.ai-insight-header{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-bottom:10px}
.ai-insight-title{font-size:15px;font-weight:700;color:var(--text);display:flex;align-items:center}
.ai-insight-bar{width:auto;flex:none;margin-bottom:0;gap:6px}
.ai-insight-bar .ai-period-btn{flex:none;padding:5px 12px;font-size:12px;border-radius:0}
.ai-insight-empty{display:flex;flex-direction:column;align-items:center;gap:10px;padding:20px 0 16px;text-align:center}
.ai-insight-icon{font-size:26px}
.ai-insight-tip{font-size:12px;color:var(--textDim);line-height:1.6}
.ai-insight-gen-btn{margin-top:2px;padding:9px 24px;border-radius:0;background:var(--accent);color:#0a0c0a;font-size:13px;font-weight:700;border:none;cursor:pointer;font-family:var(--fontB)}
.ai-insight-gen-btn:active{transform:scale(.96)}
.ai-insight-regen-btn{
  margin-top:14px;width:100%;padding:12px 0;
  border-radius:12px;border:none;cursor:pointer;
  font-size:13.5px;font-family:var(--fontB);font-weight:700;letter-spacing:1px;
  color:#0a0c0a;background:linear-gradient(135deg,#d8ff6e 0%,var(--accent) 45%,#8fe62e 100%);
  box-shadow:0 4px 16px var(--accentGlow);
  transition:transform .12s ease,box-shadow .12s ease,filter .12s ease;
}
.ai-insight-regen-btn:active{transform:scale(.97);box-shadow:0 2px 8px var(--accentGlow)}
.ai-insight-regen-btn:hover{filter:brightness(1.06)}
/* ===== 每日激励卡片（图一：深灰背景 + 左侧荧光绿直线竖线 + 圆角） ===== */
.motivation-card{position:relative;padding:24px 20px 18px;border-radius:12px;overflow:hidden;
  background:#171717;margin-bottom:14px;cursor:pointer;
  box-shadow:0 4px 6px -1px rgba(0,0,0,.3),0 2px 4px -2px rgba(0,0,0,.2)}
.motivation-card::before{content:'';position:absolute;left:0;top:0;bottom:0;width:3px;
  background:var(--accent)}
.motivation-card:active{background:#1c1c1c}
.motivation-quote{position:relative;z-index:1;font-size:15px;line-height:1.8;color:#ffffff;
  font-weight:600;letter-spacing:.3px;padding-right:40px;font-style:italic}
.motivation-quote .mq-mark{color:var(--accent);font-size:22px;font-weight:800;margin-right:3px;opacity:.95;font-style:normal}
.motivation-author{position:relative;z-index:1;font-size:12px;color:var(--accent);opacity:.95;
  margin-top:16px;text-align:right;padding-right:10px;letter-spacing:.5px;font-style:normal}
.motivation-author .mq-works{color:var(--textDim);opacity:.8;margin-left:2px}
.empty-login-hint{font-size:13px;color:var(--textDim);text-align:center;padding:20px 0;opacity:.7}

/* ============================================================
   风格4 · 霓绿街头 (Neon Green Street) 
   ============================================================ */
/* 状态栏 */
.status-bar {
  display: flex; align-items: center; justify-content: space-between;
  padding: 4px 18px 0;
  background: rgba(12,14,12,.98);
  font-family: var(--fontD); font-size: 12px; color: var(--text);
  letter-spacing: 0.5px;
  position: sticky; top: 0; z-index: 55;
}
.sb-time { font-weight: 700; }
.sb-icons { display: flex; align-items: center; gap: 6px; }
.sb-icons svg { width: 16px; height: 16px; stroke: var(--textDim); fill: none; }
.sb-battery { display: flex; align-items: center; gap: 2px; }
.sb-battery .b-level { width: 18px; height: 8px; border: 1px solid var(--textDim); border-radius: 1px; padding: 1px; display: flex; }
.sb-battery .b-level .b-fill { width: 75%; height: 100%; background: var(--accent); }
.sb-battery .b-tip { width: 2px; height: 4px; background: var(--textDim); }

/* 问候头部 */
.daily-hero {
  display: flex; align-items: center; justify-content: space-between;
  padding: 14px 0 12px; margin-bottom: 4px;
  border-bottom: 1px solid var(--divider);
}
.dh-greeting { font-size: 20px; font-weight: 700; letter-spacing: .3px; }
.dh-greeting span { color: var(--accent); }
.dh-sub { font-size: 11px; color: var(--textDim); margin-top: 3px; letter-spacing: .5px; }

/* 打卡进度 - 区块头部（含编辑按钮） */
.daily-goals {
  display: flex; align-items: center; justify-content: space-between;
  margin-bottom: 12px;
}
.daily-goals .edit-btn {
  background: var(--surface); border: 1px solid var(--borderStrong);
  color: var(--textDim); font-size: 11px; font-weight: 600;
  padding: 5px 14px; border-radius: var(--rs); cursor: pointer;
  font-family: var(--fontB); transition: all .2s;
}
.daily-goals .edit-btn:active { background: var(--accent); color: #0C0E0C; border-color: var(--accent); }

/* 打卡进度 - 4 环形 */
.goal-rings {
  display: grid; grid-template-columns: repeat(4, 1fr);
  gap: 6px;
}
.ring-item { text-align: center; padding: 6px 2px; }
.ring-item .ri-ring {
  position: relative; width: 100%; max-width: 78px;
  margin: 0 auto;
}
.ring-item .ri-ring svg { width: 100%; height: auto; display: block; transform: rotate(-90deg); }
.ring-item .ri-center {
  position: absolute; inset: 0;
  display: flex; align-items: center; justify-content: center;
  font-family: var(--fontD); font-size: 15px; font-weight: 700;
}
.ring-item .ri-center .ri-pct{font-size:16px;font-weight:700;line-height:1}
.ring-item .ri-center .ri-pct-sym{font-size:9px;font-weight:600;margin-left:1px;opacity:.7}
.ring-item .ri-label { font-size: 11px; color: var(--textDim); margin-top: 6px; font-weight: 500; }
.ring-item .ri-values {
  font-family: var(--fontD); font-size: 10px; margin-top: 2px;
  display: flex; align-items: baseline; justify-content: center; gap: 2px;
}
.ring-item .ri-values .cur { font-weight: 700; font-size: 12px; }
.ring-item .ri-values .sep { color: var(--textFaint); }
.ring-item .ri-values .target { color: var(--textFaint); }

/* 锻炼消耗 - 图三样式（图标 + 标题 + 进度条 + 右侧数值） */
.exercise-burn { padding: 2px 0; }
.eb-card{
  display:flex;align-items:center;gap:12px;
  padding:12px;background:var(--bg2);
  border:1px solid var(--divider);
}
.eb-icon{
  width:44px;height:44px;flex-shrink:0;
  background:var(--surface2);color:var(--accent);
  display:flex;align-items:center;justify-content:center;
}
.eb-icon svg{width:22px;height:22px}
.eb-main{flex:1;min-width:0}
.eb-label{font-size:13px;font-weight:600;margin-bottom:8px}
.eb-bar-wrap{height:8px;background:#2a2a2a;overflow:hidden}
.eb-bar{
  height:100%;background:var(--accent);
  transition:width .6s ease;
}
.eb-bar.over{background:#ff5c5c}
.eb-value{flex-shrink:0;text-align:right}
.eb-value .eb-cur{font-family:var(--fontD);font-size:22px;font-weight:700;color:var(--accent);line-height:1}
.eb-value .eb-target{font-family:var(--fontD);font-size:10px;color:var(--textDim);margin-top:3px}

/* 饮食记录 - 按餐次分组 */
.meal-list { display: flex; flex-direction: column; gap: 2px; }
.meal-group-title {
  display: flex; align-items: center; gap: 10px;
  font-size: 11px; font-weight: 600; color: var(--textDim);
  letter-spacing: .5px; margin: 10px 0 6px;
}
.meal-group-title::after { content: ''; flex: 1; height: 1px; background: var(--divider); }
.meal-item {
  display: flex; align-items: center; justify-content: space-between;
  padding: 11px 12px; background: var(--surface);
  border: 1px solid var(--border); border-radius: var(--rs);
  cursor: pointer; transition: all .2s; margin-bottom: 6px;
}
.meal-item:active { background: var(--surface2); transform: scale(.98); }
.meal-item.checked { border-color: rgba(200,255,62,.25); background: var(--accentDim); }
.meal-item .mi-left { display: flex; align-items: center; gap: 10px; min-width: 0; }
.meal-item .mi-icon { font-size: 18px; flex-shrink: 0; }
.meal-item .mi-name { font-size: 13px; font-weight: 500; }
.meal-item .mi-macros { font-size: 10px; color: var(--textDim); margin-top: 1px; font-family: var(--fontD); }
.meal-item .mi-macros b { color: #ffa94d; }
.meal-item .mi-status { font-size: 11px; font-weight: 600; flex-shrink: 0; margin-left: 8px; }
.meal-item.checked .mi-status { color: var(--accent); }
.meal-item:not(.checked) .mi-status { color: var(--textFaint); }

/* 3列打卡网格（无圆角，边框分隔，active底边指示线） */
.checkin-grid {
  display: grid; grid-template-columns: repeat(3, 1fr);
  gap: 0;
  border: 1px solid var(--divider);
}
.checkin-card {
  background: var(--bg2);
  border: none;
  border-right: 1px solid var(--divider);
  border-bottom: 1px solid var(--divider);
  padding: 16px 6px 14px;
  text-align: center; cursor: pointer;
  transition: all .25s cubic-bezier(.4,0,.2,1);
  position: relative; overflow: hidden;
  -webkit-user-select: none; user-select: none;
  border-radius: 0;
  display:flex; flex-direction:column; align-items:center; justify-content:center;
  gap:5px;
}
.checkin-card:nth-child(3n) { border-right: none; }
.checkin-card:active { transform: scale(.93); }
.checkin-card .ci-icon { font-size: 22px; line-height: 1; transition: transform .3s; display:flex;align-items:center;justify-content:center; }
.checkin-card .ci-icon svg { width:26px; height:26px; }
.checkin-card .ci-name { font-size: 11px; font-weight: 500; color: var(--text); line-height: 1.2; }
.checkin-card .ci-detail { font-size: 9px; color: var(--textDim); margin-top: 1px; line-height: 1.2; }
.checkin-card.done { background: rgba(200,255,62,.1); }
.checkin-card.done .ci-icon { transform: scale(1.05); color: var(--accent); }
.checkin-card.done .ci-name { color: var(--accent); }
.checkin-card.done .ci-detail { color: var(--accent); opacity:.7; }
/* Active态底边指示线 */
.checkin-card.done::after {
  content: ''; position: absolute; bottom: 0; left: 0; right: 0;
  height: 3px; background: var(--accent);
}
.checkin-card .ci-time {
  font-size: 8px; color: var(--accent); margin-top: 3px;
  font-family: var(--fontD); font-weight: 500;
  opacity: 0; transition: opacity .3s;
}
.checkin-card.done .ci-time { opacity: 1; }
.ci-category {
  display: inline-block; min-width: 28px;
  font-size: 8px; font-weight: 600; line-height: 1.4;
  padding: 1px 6px; border-radius: 0;
  margin-bottom: 4px; letter-spacing: .3px;
}
.ci-category.cat-meal { background: rgba(255,169,77,.18); color: #ffa94d; }
.ci-category.cat-supplement { background: rgba(126,211,33,.18); color: #7ED321; }
.ci-category.cat-workout { background: rgba(92,200,255,.18); color: #5cc8ff; }
.ci-category.cat-other { background: rgba(255,255,255,.08); color: var(--textDim); }
.ci-planned { font-size: 8px; color: var(--textFaint); margin-top: 3px; font-family: var(--fontD); font-weight: 500; }
.checkin-card.done .ci-planned { display: none; }
.ci-nutri { font-size: 9px; color: var(--textDim); margin-top: 4px; font-family: var(--fontD); font-weight: 500; }
.ci-nutri b { color: #ffa94d; font-size: 10px; }

/* Workout 训练 - 圆点替代数字 */
.workout-exercise .we-num {
  width: 24px; height: 24px; border-radius: 50%;
  background: var(--bg2); color: var(--accent);
  font-family: var(--fontD); font-size: 12px; font-weight: 700;
  display: flex; align-items: center; justify-content: center;
  flex-shrink: 0; border: 1px solid rgba(200,255,62,.2);
}
.workout-exercise .we-num-dot {
  width: 8px; height: 8px; border-radius: 50%;
  background: var(--accent);
  flex-shrink: 0;
}
.workout-exercise.done .we-num-dot { background: var(--accent); box-shadow: 0 0 6px var(--accentGlow); }

/* 底部导航 - 底部吸附式（非悬浮玻璃） */
.bottom-nav {
  position: fixed; bottom: 0; left: 0; right: 0;
  margin: 0 auto; width: 100%; max-width: 480px;
  background: var(--bg2);
  border-top: 1px solid var(--borderStrong);
  display: flex; padding: 6px 0 calc(6px + env(safe-area-inset-bottom));
  z-index: 80;
}
.nav-btn {
  flex: 1; background: none; border: none; cursor: pointer;
  display: flex; flex-direction: column; align-items: center; gap: 3px;
  padding: 6px 4px; color: var(--textFaint); transition: color .2s; position: relative;
}
.nav-btn svg { width: 22px; height: 22px; transition: transform .2s; }
.nav-btn span { font-size: 10px; font-weight: 500; letter-spacing: 1px; }
.nav-btn.active { color: var(--accent); }
.nav-btn.active svg { transform: translateY(-1px) scale(1.08); }
.nav-btn.active::after {
  content: ''; position: absolute; bottom: 2px; left: 50%; transform: translateX(-50%);
  width: 20px; height: 3px; background: var(--accent);
}
.nav-btn:active { transform: scale(.92); }

/* 登录弹窗 - 下划线切换标签 */
.auth-tabs {
  display: flex; gap: 0; background: none;
  border-radius: 0; padding: 0; margin-bottom: 18px;
  border-bottom: 1px solid var(--divider);
}
.auth-tab {
  flex: 1; padding: 10px 0; border: none; background: none;
  color: var(--textDim); font-size: 14px; font-weight: 600;
  border-radius: 0; cursor: pointer; transition: all .25s;
  font-family: var(--fontB);
  position: relative;
}
.auth-tab.active { color: var(--accent); }
.auth-tab.active::after {
  content: ''; position: absolute; bottom: -1px; left: 0; right: 0;
  height: 2px; background: var(--accent);
}
.auth-tab:active { opacity: .7; }

/* 日期详情弹窗 - 底部滑出式 */
.day-detail-sheet {
  position: fixed; bottom: 0; left: 50%; transform: translate(-50%, 100%);
  width: 100%; max-width: 480px;
  background: var(--bg); border: 1px solid var(--borderStrong);
  border-bottom: none; border-radius: 0;
  padding: 16px 16px calc(20px + env(safe-area-inset-bottom));
  z-index: 100; transition: transform .35s cubic-bezier(.32,.72,0,1);
  max-height: 82vh; overflow-y: auto; overscroll-behavior: contain;
}
.day-detail-sheet.show { transform: translate(-50%, 0); }
.dd-drag-handle {
  width: 40px; height: 4px; background: var(--borderStrong);
  border-radius: 0; margin: 0 auto 14px;
  position: sticky; top: -16px; z-index: 11;
  background: var(--bg);
  margin: -16px auto 14px;
  padding-top: 16px;
}
.day-detail-sheet .dd-close-btn {
  position: sticky; top: 10px; z-index: 10;
  float: right;
  width: 28px; height: 28px; border-radius: 0;
  background: var(--bg2); border: 1px solid var(--border);
  color: var(--textDim); font-size: 14px; cursor: pointer;
  display: flex; align-items: center; justify-content: center;
  transition: all .2s;
}
.day-detail-sheet .dd-close-btn:active { transform: scale(.9); background: var(--border); }

/* 完整日历表弹窗（年月切换 + 点击补卡） */
.fc-header{display:flex;flex-direction:column;gap:4px;margin-bottom:12px;position:sticky;top:0;z-index:11;background:var(--bg);padding:8px 0}
.fc-header-top{display:flex;justify-content:flex-end}
.fc-header-nav{display:flex;align-items:center;justify-content:space-between}
.fc-nav{width:34px;height:34px;background:var(--bg2);border:1px solid var(--border);color:var(--text);
  font-size:20px;line-height:1;cursor:pointer;border-radius:0;display:flex;align-items:center;justify-content:center}
.fc-nav:active{background:var(--accentDim);color:var(--accent)}
.fc-close{width:34px;height:34px;background:var(--bg2);border:1px solid var(--border);color:var(--textDim);
  font-size:16px;line-height:1;cursor:pointer;border-radius:0;display:flex;align-items:center;justify-content:center}
.fc-close:active{background:var(--accentDim);color:var(--accent)}
.fc-title{font-family:var(--fontD);font-size:16px;font-weight:600;color:var(--text);letter-spacing:.5px}
.fc-weekdays{display:grid;grid-template-columns:repeat(7,1fr);margin-bottom:6px}
.fc-weekday{text-align:center;font-size:11px;color:var(--textDim);padding:4px 0}
.fc-grid{display:grid;grid-template-columns:repeat(7,1fr);grid-template-rows:repeat(6,1fr);gap:4px;height:300px}
.fc-day{position:relative;display:flex;align-items:center;justify-content:center;
  font-size:13px;color:var(--text);background:var(--bg2);border:1px solid var(--border);cursor:pointer}
.fc-day.empty{background:transparent;border:none;cursor:default}
.fc-day.future{color:var(--textFaint);cursor:default}
.fc-day.today{border:1px solid var(--accent);color:var(--accent);font-weight:700}
.fc-day.has-data{background:var(--accentDim)}
.fc-day.complete{background:var(--accent);color:#0a0c0a;font-weight:700}
.fc-day.complete .fc-dot{background:#0a0c0a}
.fc-day .fc-dot{position:absolute;bottom:3px;left:50%;transform:translateX(-50%);
  width:4px;height:4px;border-radius:50%;background:var(--textDim)}
.fc-day.complete .fc-dot{background:#0a0c0a}
.fc-day:active{transform:scale(.92)}

/* 编辑资料 - 居中弹窗，霓绿边框头像 */
.ep-avatar-preview {
  width: 64px; height: 64px; border-radius: 0;
  border: 2px solid var(--accent);
  display: flex; align-items: center; justify-content: center; font-size: 28px;
  overflow: hidden; background: var(--bg2);
}
.ep-avatar-preview img { width: 100%; height: 100%; object-fit: cover; }

/* 分享弹窗 - 全屏遮罩（2.17.1 模版：居中分享图 + 保存/关闭按钮） */
.share-modal {
  position: fixed; inset: 0; z-index: 250;
  background: rgba(0,0,0,.8); backdrop-filter: blur(8px);
  -webkit-backdrop-filter: blur(8px);
  display: flex; flex-direction: column; align-items: center; justify-content: center;
  padding: 20px; opacity: 0; pointer-events: none; transition: opacity .3s;
}
.share-modal.show { opacity: 1; pointer-events: auto; }
.share-save-tip { font-size: 11px; color: var(--textDim); margin-bottom: 10px; text-align: center; }
.share-modal img {
  max-width: 100%; max-height: 70vh; border-radius: 12px;
  box-shadow: 0 8px 32px rgba(0,0,0,.5);
}
.share-modal-actions {
  display: flex; gap: 10px; margin-top: 16px;
}
.share-action-btn {
  padding: 10px 20px; border-radius: 20px; border: none;
  font-size: 13px; font-weight: 600; cursor: pointer;
  font-family: var(--fontB); transition: all .2s;
}
.share-action-btn:active { transform: scale(.93); }
.share-action-btn.save {
  background: var(--accent); color: #0a0c0a;
  box-shadow: 0 4px 16px rgba(200,255,62,.25);
}
.share-action-btn.close {
  background: var(--surface); color: var(--textDim);
  border: 1px solid var(--border);
}

/* 邀请弹窗 - 居中 */
#inviteOverlay .modal {
  max-width: 340px; position: relative;
}

/* 营养页面 - 圆形进度指示器 + 栅格+边框分隔 */
.nutrition-grid {
  display: grid; grid-template-columns: repeat(2, 1fr); gap: 0;
  border: 1px solid var(--divider); margin-bottom: 12px;
}
.nutri-grid-item {
  padding: 14px 12px;
  border-right: 1px solid var(--divider);
  border-bottom: 1px solid var(--divider);
  text-align: center;
}
.nutri-grid-item:nth-child(even) { border-right: none; }
.nutri-grid-item .ng-ring-wrap {
  display: flex; flex-direction: column; align-items: center; gap: 6px;
}
.nutri-grid-item .ng-ring {
  width: 56px; height: 56px; position: relative;
}
.nutri-grid-item .ng-ring svg { width: 100%; height: 100%; transform: rotate(-90deg); }
.nutri-grid-item .ng-ring .ng-bg { fill: none; stroke: var(--surface2); stroke-width: 6; }
.nutri-grid-item .ng-ring .ng-fg { fill: none; stroke-width: 6; stroke-linecap: butt; }
.nutri-grid-item .ng-ring .ng-fg.p { stroke: var(--protein); }
.nutri-grid-item .ng-ring .ng-fg.c { stroke: var(--carbs); }
.nutri-grid-item .ng-ring .ng-fg.f { stroke: var(--fat); }
.nutri-grid-item .ng-ring .ng-fg.k { stroke: var(--accent); }
.nutri-grid-item .ng-ring .ng-center {
  position: absolute; top: 50%; left: 50%;
  transform: translate(-50%, -50%);
  font-family: var(--fontD); font-size: 14px; font-weight: 600;
  line-height: 1;
}
.nutri-grid-item .ng-label { font-size: 11px; color: var(--textDim); }
.nutri-grid-item .ng-value { font-family: var(--fontD); font-size: 18px; font-weight: 600; margin-top: 2px; }
.nutri-grid-item .ng-value.p { color: var(--protein); }
.nutri-grid-item .ng-value.c { color: var(--carbs); }
.nutri-grid-item .ng-value.f { color: var(--fat); }
.nutri-grid-item .ng-value.k { color: var(--accent); }
.nutri-grid-item .ng-target { font-size: 10px; color: var(--textFaint); }

/* 营养页面 - 月度营养日历（日历 + 状态圆点 + 图例） */
.nutrition-cal-card { padding: 16px; }
.nutrition-calendar {}
.cal-header {
  display: flex; align-items: center; justify-content: space-between;
  margin-bottom: 12px;
}
.cal-title { font-family: var(--fontD); font-weight: 600; font-size: 18px; letter-spacing: .5px; }
.cal-nav { display: flex; gap: 8px; }
.cal-nav-btn {
  width: 30px; height: 30px; border: 1px solid var(--border);
  background: var(--surface2); color: var(--text);
  font-size: 16px; line-height: 1; cursor: pointer;
  display: flex; align-items: center; justify-content: center;
  transition: all .2s;
}
.cal-nav-btn:active { background: var(--accent); color: #0C0E0C; transform: scale(.92); }
.cal-weekdays {
  display: grid; grid-template-columns: repeat(7, 1fr); margin-bottom: 4px;
}
.cal-weekday {
  text-align: center; font-size: 11px; color: var(--textDim);
  padding: 6px 0; letter-spacing: .5px;
}
.cal-days { display: grid; grid-template-columns: repeat(7, 1fr); gap: 2px; }
.cal-day {
  position: relative; aspect-ratio: 1/1;
  display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 3px;
  border: 1px solid transparent; color: var(--text);
  font-size: 13px; font-weight: 500; cursor: pointer; transition: all .15s;
}
.cal-day:active { background: var(--surface2); }
.cal-day.other-month { color: var(--textFaint); opacity: .4; pointer-events: none; }
.cal-day.today { border-color: var(--accent); background: var(--accentDim); }
.cal-day.selected { border-color: var(--accent); }
.cal-day-num { font-family: var(--fontD); line-height: 1; }
.cal-dot { width: 6px; height: 6px; border-radius: 50%; display: block; }
.cal-dot.done { background: var(--accent); box-shadow: 0 0 6px var(--accentGlow); }
.cal-dot.missed { background: transparent; border: 1px solid var(--textDim); }
.cal-dot.training { background: var(--textFaint); }
.cal-legend {
  display: flex; gap: 16px; margin-top: 12px; padding-top: 12px;
  border-top: 1px solid var(--divider);
}
.cal-legend-item {
  display: flex; align-items: center; gap: 6px;
  font-size: 11px; color: var(--textDim);
}
.cal-legend-item .cal-dot { width: 8px; height: 8px; }

/* 营养页面 - 功能导航列表 */
.nutrition-nav-card { padding: 0; }
.nutrition-nav { display: flex; flex-direction: column; }
.nav-item {
  display: flex; align-items: center; gap: 12px; padding: 14px 16px;
  cursor: pointer; transition: background .2s; border-bottom: 1px solid var(--divider);
}
.nav-item:last-child { border-bottom: none; }
.nav-item:active { background: var(--surface2); }
.nav-icon {
  width: 38px; height: 38px; flex-shrink: 0;
  display: flex; align-items: center; justify-content: center;
  background: var(--surface2); border: 1px solid var(--border); font-size: 18px;
}
.nav-text { flex: 1; min-width: 0; }
.nav-label { font-size: 14px; font-weight: 600; }
.nav-sub { font-size: 11px; color: var(--textDim); margin-top: 2px; }
.nav-arrow { color: var(--textFaint); font-size: 18px; font-family: var(--fontD); }

/* 营养页面 - 今日营养概览（热量环 + 三大营养素比例） */
.nutrition-summary { display: flex; align-items: center; gap: 16px; }
.ns-ring-wrap { display: flex; align-items: center; gap: 12px; flex: 1; min-width: 0; }
.ns-ring { width: 72px; height: 72px; position: relative; flex-shrink: 0; }
.ns-ring svg { width: 100%; height: 100%; transform: rotate(-90deg); }
.ns-ring .ns-bg { fill: none; stroke: var(--surface2); stroke-width: 6; }
.ns-ring .ns-fg { fill: none; stroke: var(--accent); stroke-width: 6; stroke-linecap: butt; transition: stroke-dashoffset .4s; }
.ns-center {
  position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%);
  text-align: center; line-height: 1;
}
.ns-pct { font-family: var(--fontD); font-size: 18px; font-weight: 700; color: var(--accent); }
.ns-cap { font-size: 9px; color: var(--textDim); margin-top: 2px; letter-spacing: .5px; }
.ns-ring-info { flex: 1; min-width: 0; }
.ns-cal { font-size: 12px; color: var(--textDim); }
.ns-cal-val { font-family: var(--fontD); font-size: 20px; font-weight: 700; color: var(--accent); }
.ns-daytype { font-size: 11px; color: var(--textDim); margin-top: 4px; }
.ns-macros { display: flex; flex-direction: column; gap: 8px; flex-shrink: 0; min-width: 118px; }
.ns-macro { display: flex; align-items: center; gap: 6px; font-size: 11px; color: var(--textDim); }
.ns-macro b { font-family: var(--fontD); font-size: 13px; color: var(--text); margin-left: auto; }
.ns-m-dot { width: 8px; height: 8px; border-radius: 50%; }
.ns-macro.p .ns-m-dot { background: var(--protein); }
.ns-macro.c .ns-m-dot { background: var(--carbs); }
.ns-macro.f .ns-m-dot { background: var(--fat); }

/* 趋势页面 - 下划线切换周期 */
.period-underline {
  display: flex; gap: 0; border-bottom: 1px solid var(--divider);
  margin-bottom: 12px;
}
.period-underline span {
  padding: 8px 16px; font-size: 12px; font-weight: 600;
  color: var(--textDim); cursor: pointer; transition: all .2s;
  position: relative; letter-spacing: 0.5px;
}
.period-underline span.active { color: var(--accent); }
.period-underline span.active::after {
  content: ''; position: absolute; bottom: -1px; left: 0; right: 0;
  height: 2px; background: var(--accent);
}
.period-underline span:active { opacity: .7; }

/* 趋势数据卡片 - 栅格 */
.trends-grid {
  display: grid; grid-template-columns: repeat(2, 1fr); gap: 0;
  border: 1px solid var(--divider);
}
.trends-grid .tg-item {
  padding: 14px 12px;
  border-right: 1px solid var(--divider);
  border-bottom: 1px solid var(--divider);
}
.trends-grid .tg-item:nth-child(even) { border-right: none; }
.trends-grid .tg-item .tg-label { font-size: 10px; color: var(--textDim); text-transform: uppercase; letter-spacing: 0.5px; }
.trends-grid .tg-item .tg-value { font-family: var(--fontD); font-size: 22px; font-weight: 700; margin-top: 4px; }
.trends-grid .tg-item .tg-value.accent { color: var(--accent); }
.trends-grid .tg-item .tg-sub { font-size: 10px; color: var(--textFaint); margin-top: 2px; }

/* ============================================================
   趋势页面 · 全新设计（图十/图十一）
   ============================================================ */
.trends-header {
  padding: 8px 0 4px;
}
.trends-title {
  font-family: var(--fontD); font-size: 28px; font-weight: 800;
  color: var(--text); letter-spacing: 2px;
  text-transform: uppercase;
}
.trends-sub {
  font-size: 11px; color: var(--textFaint);
  letter-spacing: 1px; margin-top: 2px;
  text-transform: uppercase;
}
.trends-period-toggle {
  display: flex; gap: 0;
  border-bottom: 1px solid var(--divider);
  margin: 14px 0 18px;
}
.trends-period-toggle span {
  flex: 1; text-align: center;
  padding: 10px 0 12px;
  font-family: var(--fontD); font-size: 13px; font-weight: 700;
  letter-spacing: .5px; color: var(--textDim);
  cursor: pointer; transition: color .25s;
  position: relative;
}
.trends-period-toggle span.active { color: var(--accent); }
.trends-period-toggle span.active::after {
  content: ''; position: absolute; bottom: -1px; left: 0; right: 0;
  height: 2px; background: var(--accent);
}
.trends-period-toggle span:active { opacity: .7; }

/* ===== 趋势图表卡片 ===== */
.trend-chart-card {
  background: var(--surface);
  border: 1px solid var(--border);
  padding: 14px 14px 12px;
  margin-bottom: 14px;
}
.tc-head {
  display: flex; align-items: center; justify-content: space-between;
  gap: 8px; margin-bottom: 10px; flex-wrap: wrap;
}
.tc-title {
  font-size: 14px; font-weight: 700; color: var(--text);
  letter-spacing: .5px;
}
.tc-now {
  display: flex; align-items: baseline; gap: 3px;
  font-family: var(--fontD); font-size: 20px; font-weight: 700;
  color: var(--text); line-height: 1;
}
.tc-now .tc-unit { font-size: 11px; font-weight: 500; color: var(--textDim); }
.tc-now .tc-delta {
  font-size: 11px; font-weight: 600; margin-left: 6px;
  font-family: var(--fontB);
}
.tc-delta.down { color: var(--accent); }
.tc-delta.up { color: var(--warn); }
.tc-delta.flat { color: var(--textFaint); }
.tc-canvas-wrap {
  width: 100%; height: 150px; position: relative;
}
.tc-canvas-wrap canvas {
  width: 100%; height: 100%; display: block;
  touch-action: pan-y;
}
.tc-stats {
  display: flex; gap: 0; margin-top: 10px;
  border-top: 1px solid var(--divider); padding-top: 10px;
}
.tc-stat {
  flex: 1; text-align: center; position: relative;
}
.tc-stat:not(:last-child)::after {
  content: ''; position: absolute; right: 0; top: 20%; bottom: 20%;
  width: 1px; background: var(--divider);
}
.tc-stat .ts-label {
  font-size: 9px; color: var(--textFaint); letter-spacing: .5px;
  text-transform: uppercase;
}
.tc-stat .ts-value {
  font-family: var(--fontD); font-size: 15px; font-weight: 700;
  color: var(--text); margin-top: 2px;
}
.tc-stat .ts-value.accent { color: var(--accent); }


/* 营养达标率图例筛选按钮 */
.tc-legend {
  display: flex; gap: 6px; flex-wrap: wrap;
}
.nl-btn {
  padding: 4px 10px; font-size: 10px; font-weight: 600;
  background: var(--bg2); border: 1px solid var(--border);
  color: var(--textDim); cursor: pointer; font-family: var(--fontB);
  transition: all .2s; border-radius: 0;
}
.nl-btn:active { opacity: .7; }
.nl-btn.active { background: var(--accentDim); border-color: var(--accent); color: var(--accent); }

/* 图表 tooltip */
.tc-tooltip {
  position: absolute; z-index: 5; pointer-events: none;
  background: rgba(10,12,10,.92); border: 1px solid var(--borderStrong);
  padding: 6px 10px; font-size: 11px; color: var(--text);
  white-space: nowrap; transform: translate(-50%, -110%);
  box-shadow: 0 4px 16px rgba(0,0,0,.4);
}
.tc-tooltip .tt-date { color: var(--textDim); font-size: 10px; margin-bottom: 3px; }
.tc-tooltip .tt-row { display: flex; align-items: center; gap: 6px; margin-top: 2px; }
.tc-tooltip .tt-dot { width: 8px; height: 8px; border-radius: 50%; flex-shrink: 0; }
.tc-tooltip .tt-val { font-family: var(--fontD); font-weight: 700; }

/* KPI 卡片行：3 张方形卡片 */
.trends-kpi-row {
  display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px;
  margin-bottom: 22px;
}
.trends-kpi-card {
  background: var(--surface);
  border: 1px solid var(--border);
  padding: 18px 8px;
  text-align: center;
}
.tk-value {
  font-family: var(--fontD); font-size: 32px; font-weight: 800;
  color: var(--accent); line-height: 1;
  display: flex; align-items: baseline; justify-content: center; gap: 2px;
}
.tk-value .tk-sub {
  font-size: 16px; font-weight: 600; color: var(--textFaint);
}
.tk-label {
  font-size: 10px; color: var(--textDim);
  margin-top: 8px; letter-spacing: 1px;
  text-transform: uppercase;
}

/* 趋势通用 section */
.trends-section {
  margin-bottom: 22px;
}
.trends-section-header {
  display: flex; align-items: center; justify-content: space-between;
  margin-bottom: 14px;
}
.trends-section-title {
  font-family: var(--fontD); font-size: 15px; font-weight: 800;
  letter-spacing: 1.5px; color: var(--text);
  text-transform: uppercase;
}
.trends-section-link {
  font-size: 11px; color: var(--textDim);
  cursor: pointer; transition: color .2s;
  letter-spacing: .5px;
}
.trends-section-link:active { color: var(--accent); }

/* 训练分布卡片 */
.trends-mix-card {
  background: var(--surface);
  border: 1px solid var(--border);
  padding: 16px;
}
.trends-mix-sub {
  font-size: 11px; color: var(--textFaint);
  letter-spacing: 1.5px; margin-bottom: 16px;
  text-transform: uppercase;
}

/* 打卡日历：星期表头 + 日期网格 */
.trends-cal-weekdays {
  display: grid; grid-template-columns: repeat(7, 1fr); gap: 8px;
  margin-bottom: 8px;
}
.tcw-day {
  text-align: center; font-size: 10px; color: var(--textFaint);
  letter-spacing: 1px; font-weight: 600;
  text-transform: uppercase;
}
.trends-calendar {
  display: grid; grid-template-columns: repeat(7, 1fr); gap: 8px;
}
.tc-day {
  aspect-ratio: 1; display: flex; flex-direction: column;
  align-items: center; justify-content: center; gap: 4px;
  background: var(--bg2); border: 1px solid var(--border);
  font-family: var(--fontD); font-size: 14px; font-weight: 600;
  color: var(--text); position: relative;
}
.tc-day .tc-date { line-height: 1; font-size: 14px; }
.tc-day .tc-mark { font-size: 11px; line-height: 1; }
.tc-day.checked { background: var(--accent); color: #0C0E0C; border-color: var(--accent); }
.tc-day.checked .tc-mark { color: #0C0E0C; }
.tc-day.missed { background: rgba(120,30,30,.4); color: var(--text); border-color: rgba(255,80,80,.3); }
.tc-day.missed .tc-mark { color: #ff6b6b; }
.tc-day.today { border: 2px solid var(--accent); }
.tc-day.today.pending .tc-mark {
  width: 14px; height: 14px; border: 1.5px solid var(--accent);
  border-radius: 50%;
}
.tc-day.future { background: var(--bg2); color: var(--textDim); }
.tc-day.future .tc-mark {
  width: 10px; height: 10px; border: 1px solid var(--textFaint);
  border-radius: 50%; opacity: .5;
}

/* 周趋势：体重/体脂双卡片 */
.weekly-trends-grid {
  display: grid; grid-template-columns: repeat(2, 1fr); gap: 10px;
}
.wt-card {
  background: var(--surface);
  border: 1px solid var(--border);
  padding: 14px 12px;
}
.wt-label {
  font-size: 10px; color: var(--textDim);
  letter-spacing: 1px; margin-bottom: 6px;
  text-transform: uppercase;
}
.wt-value {
  font-family: var(--fontD); font-size: 24px; font-weight: 700;
  color: var(--text); line-height: 1;
  display: flex; align-items: baseline; gap: 3px;
  margin-bottom: 10px;
}
.wt-value .wt-unit {
  font-size: 12px; font-weight: 500; color: var(--textDim);
}
.wt-chart {
  height: 40px; position: relative;
}
.wt-chart svg { width: 100%; height: 100%; }

/* 个人页面 - 居中正方形头像（无边框） */
.profile-avatar-large {
  width: 72px; height: 72px; border-radius: 0;
  background: linear-gradient(135deg, var(--accentDim), var(--surface2));
  border: none;
  display: flex; align-items: center; justify-content: center;
  font-size: 30px; flex-shrink: 0; overflow: hidden; position: relative;
  transition: all .2s; cursor: pointer;
}
.profile-avatar-large:active { transform: scale(.93); }
.profile-avatar-large img { width: 100%; height: 100%; object-fit: cover; }
.profile-avatar-large .upload-hint {
  position: absolute; inset: 0; background: rgba(0,0,0,.65);
  display: flex; align-items: center; justify-content: center;
  font-size: 18px; opacity: 0; transition: opacity .2s;
}
.profile-avatar-large:active .upload-hint { opacity: 1; }

/* 个人页 - 统计行3列 */
.profile-stats-row {
  display: flex; padding: 14px 0; margin-top: 4px;
  border-top: 1px solid var(--divider);
  border-bottom: 1px solid var(--divider);
}
.ps-stat { text-align: center; flex: 1; position: relative; }
.ps-stat:not(:last-child)::after {
  content: ''; position: absolute; right: 0; top: 50%; transform: translateY(-50%);
  width: 1px; height: 24px; background: var(--borderStrong);
}
.ps-num { font-family: var(--fontD); font-size: 22px; font-weight: 700; color: var(--accent); line-height: 1.1; }
.ps-label { font-size: 10px; color: var(--textDim); margin-top: 4px; letter-spacing: .5px; }

/* 个人页 - 栅格菜单 */
.profile-func-grid {
  display: flex; flex-direction: column;
  border: 1px solid var(--divider);
  margin-top: 10px;
}
.pf-btn {
  display: flex; align-items: center; gap: 12px;
  cursor: pointer; padding: 14px 16px; transition: all .2s;
  background: none; border: none; color: var(--text); font-family: var(--fontB);
  border-bottom: 1px solid var(--divider);
  width: 100%; text-align: left;
}
.pf-btn:last-child { border-bottom: none; }
.pf-btn:active { background: var(--surface2); }
.pf-icon-wrap {
  width: 28px; height: 28px; border-radius: 0;
  background: none;
  display: flex; align-items: center; justify-content: center;
  flex-shrink: 0;
}
.pf-btn:active .pf-icon-wrap { background: none; }
.pf-icon-wrap svg { width: 18px; height: 18px; stroke: var(--textDim); stroke-width: 1.8; fill: none; stroke-linecap: round; stroke-linejoin: round; }
.pf-btn span { font-size: 14px; font-weight: 400; letter-spacing: .3px; flex: 1; }
.pf-arrow { font-size: 14px; color: var(--textFaint); flex: none; }

/* ===== 身体数据录入（今日体重/体脂率） ===== */
.metrics-row{display:flex;gap:10px}
.metric-input{
  flex:1;background:var(--surface);border:1px solid var(--border);
  padding:12px 14px;position:relative;
  transition:border-color .2s;
}
.metric-input:focus-within{border-color:var(--accent)}
.metric-input label{font-size:10px;color:var(--textDim);text-transform:uppercase;letter-spacing:.5px}
.metric-input .input-wrap{display:flex;align-items:baseline;gap:3px;margin-top:4px}
.metric-input input{
  width:100%;background:none;border:none;outline:none;
  font-family:var(--fontD);font-size:22px;font-weight:600;color:var(--text);
  -webkit-appearance:none;-moz-appearance:textfield;
}
.metric-input input::-webkit-outer-spin-button,
.metric-input input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}
.metric-input .unit{font-size:12px;color:var(--textDim);font-family:var(--fontB)}
.metric-input .delta{font-size:11px;margin-top:2px;font-family:var(--fontD);font-weight:500}
.delta.down{color:var(--accent)}
.delta.up{color:var(--warn)}
.delta.flat{color:var(--textDim)}

/* 确保所有卡片无圆角 */
.card, .card-title::before, .icon-btn, .day-toggle, .day-toggle span,
.metric-input, .checkin-card, .auth-box, .auth-logo .al-icon,
.food-sheet, .sheet-handle, .nutrition-drawer, .exercise-drawer,
.sheet-overlay, .modal-overlay, .modal, .modal-btn,
.dd-close-btn, .dd-metric, .dd-nut-bar-wrap, .dd-nut-bar,
.ep-avatar-preview, .ep-input, .ep-avatar-btn, .ep-gender-btn, .ep-save-btn,
.workout-tab, .workout-exercise .we-num,
.toast, .share-action-btn, .auth-btn, .auth-tab, .auth-tabs,
.pf-icon-wrap, .logout-btn,
.heatmap-cell, .ws-item, .macro-ring-item, .mt-pill, .meal-item,
.food-card, .judge-box, .onboarding-card,
.tip-item, .chart-container, .ai-stat, .ai-period-btn,
.ob-gender-btn, .ob-timeline-btn,
.ob-btn, .ob-btn-prev, .ob-btn-next, .ob-btn-main, .ob-btn-secondary,
.tdc-cell, .td-day, .tdm-btn, .edit-save-btn, .edit-input,
.splash-divider, .splash-loader-dot, .more-item {
  border-radius: 0 !important;
}
/* 移除所有 inset 圆角 - 仅针对输入型元素，排除 checkbox/radio 避免破坏原生控件 */
input:not([type="checkbox"]):not([type="radio"]),textarea,select,button{ -webkit-appearance: none; }

/* 个人信息居中 */
.profile-top { display: flex; flex-direction: column; align-items: center; gap: 12px; }
.profile-main-info { text-align: center; }
.profile-username-row { display: flex; flex-direction: column; align-items: center; gap: 6px; }

/* 下划线式周期切换器（替代按钮式） */
.stat-period-toggle {
  display: flex; align-items: center; gap: 0;
  background: none; border: none; border-radius: 0; padding: 0;
}
.stat-period-toggle span {
  font-size: 12px; font-weight: 600; padding: 6px 14px; border-radius: 0;
  cursor: pointer; transition: all .2s; color: var(--textDim);
  position: relative;
}
.stat-period-toggle span.active { color: var(--accent); }
.stat-period-toggle span.active::after {
  content: ''; position: absolute; bottom: 0; left: 4px; right: 4px;
  height: 2px; background: var(--accent);
}

/* ============================================================
   个人页面 · 全新设计（图七/图八）
   ============================================================ */
/* 1. 用户头像区（图三：圆形绿色边框头像 + 昵称 + 签名 + 头像下方编辑按钮） */
.profile-header {
  display: flex; flex-direction: column; align-items: center;
  padding: 20px 0 16px; gap: 10px;
}
.profile-avatar-large {
  width: 84px; height: 84px; border-radius: 50%;
  background: linear-gradient(135deg, var(--accentDim), var(--surface2));
  border: 3px solid var(--accent);
  display: flex; align-items: center; justify-content: center;
  font-size: 34px; flex-shrink: 0; overflow: visible; position: relative;
  transition: all .2s; cursor: pointer;
}
.profile-avatar-large:active { transform: scale(.93); }
.profile-avatar-large img { width: 100%; height: 100%; object-fit: cover; border-radius: 50%; }
/* 头像右下角相机徽章（图三） */
.profile-avatar-cam {
  position: absolute; right: -2px; bottom: -2px;
  width: 24px; height: 24px; border-radius: 50%;
  background: var(--bg); border: 2px solid var(--accent);
  display: flex; align-items: center; justify-content: center;
  color: var(--accent); pointer-events: none; z-index: 2;
}
.profile-avatar-cam svg { width: 12px; height: 12px; }
.profile-username {
  font-family: var(--fontD); font-size: 24px; font-weight: 700;
  color: var(--text); letter-spacing: .5px; line-height: 1.2;
}
.profile-status-line {
  font-size: 14px; color: var(--textDim); margin-top: 2px;
  display: flex; align-items: center; gap: 5px; cursor: pointer;
}
.profile-status-line::before {
  content: ''; width: 5px; height: 5px; border-radius: 50%;
  background: var(--accent); flex-shrink: 0;
}
.profile-status-line.no-dot::before { display: none; }
.profile-edit-btn {
  margin-top: 6px; padding: 7px 22px;
  background: transparent; border: 1px solid var(--accent);
  color: var(--accent); font-size: 13px; font-weight: 600;
  border-radius: 0; cursor: pointer; letter-spacing: 1px;
  transition: all .2s; font-family: var(--fontB);
}
.profile-edit-btn:active { background: var(--accentDim); transform: scale(.96); }

/* 2. 周/月切换Tab（下划线式） */
.profile-tabs {
  display: flex; justify-content: center; gap: 0;
  border-bottom: 1px solid var(--divider); margin-bottom: 14px;
}
.profile-tab {
  position: relative; flex: 1; max-width: 160px;
  padding: 10px 0 12px; background: none; border: none;
  font-family: var(--fontD); font-size: 13px; font-weight: 600;
  letter-spacing: 1px; color: var(--textDim); cursor: pointer;
  transition: color .2s;
}
.profile-tab.active { color: var(--accent); }
.profile-tab.active::after {
  content: ''; position: absolute; bottom: -1px; left: 0; right: 0;
  height: 2px; background: var(--accent);
}
.profile-tab:active { opacity: .7; }

/* 3. 统计卡片行（图四：图标 + 数值 + 标签） */
.profile-stats-cards {
  display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px;
  margin-bottom: 14px;
}
.ps-card {
  background: var(--surface); border: 1px solid var(--border);
  padding: 14px 8px; text-align: center; transition: all .2s;
}
.ps-card:active { background: var(--surface2); }
.ps-icon {
  width: 24px; height: 24px; margin: 0 auto 8px;
  color: var(--accent); display: flex; align-items: center; justify-content: center;
}
.ps-icon svg { width: 22px; height: 22px; }
.ps-value {
  font-family: var(--fontD); font-size: 28px; font-weight: 700;
  color: var(--accent); line-height: 1.1;
}
.ps-label {
  font-size: 10px; color: var(--textDim); margin-top: 6px;
  letter-spacing: .5px;
}

/* 4. 训练分布：横向条形图 */
.training-mix-card { padding: 16px; margin-bottom: 14px; }
.tm-header {
  display: flex; align-items: center; justify-content: space-between;
  margin-bottom: 2px;
}
.tm-title {
  font-family: var(--fontD); font-size: 14px; font-weight: 700;
  letter-spacing: 1px; color: var(--text);
}
.tm-link {
  font-size: 11px; color: var(--textDim); cursor: pointer;
  transition: color .2s;
}
.tm-link:active { color: var(--accent); }
.tm-sub {
  font-size: 10px; color: var(--textFaint); letter-spacing: 1px;
  margin-bottom: 14px; text-transform: uppercase;
}
.training-mix { display: flex; flex-direction: column; gap: 12px; }
.mix-bar { display: flex; align-items: center; gap: 10px; }
.mix-name { width: 40px; font-size: 11px; color: var(--textDim); flex-shrink: 0; }
.mix-track { flex: 1; height: 10px; background: var(--surface2); overflow: hidden; }
.mix-bar-fill {
  height: 100%; background: var(--accent); width: 0;
  transition: width .5s ease;
}
.mix-value {
  width: 22px; text-align: right; font-family: var(--fontD);
  font-size: 13px; font-weight: 700; color: var(--accent);
}

/* 5. 打卡日历：7天网格 */
.profile-calendar-card { padding: 16px; margin-bottom: 14px; }
.pc-header {
  display: flex; align-items: center; justify-content: space-between;
  margin-bottom: 14px;
}
.pc-title {
  font-family: var(--fontD); font-size: 14px; font-weight: 700;
  letter-spacing: 1px; color: var(--text);
}
.pc-link { font-size: 11px; color: var(--textDim); cursor: pointer; transition: color .2s; }
.pc-link:active { color: var(--accent); }
.pc-weekdays {
  display: grid; grid-template-columns: repeat(7, 1fr); gap: 8px;
  margin-bottom: 8px;
}
.pc-weekday {
  text-align: center; font-size: 10px; color: var(--textFaint);
  letter-spacing: 1px;
}
.profile-calendar {
  display: grid; grid-template-columns: repeat(7, 1fr); gap: 8px;
}
.pc-day {
  aspect-ratio: 1; display: flex; flex-direction: column;
  align-items: center; justify-content: center; gap: 4px;
  background: var(--bg2); border: 1px solid var(--border);
  font-family: var(--fontD); font-size: 15px; font-weight: 600;
  color: var(--text); position: relative;
}
.pc-day .pc-date { line-height: 1; }
.pc-day .pc-mark { font-size: 12px; line-height: 1; }
/* 已完成：绿色填充 + ✓ */
.pc-day.checked { background: var(--accent); color: #0C0E0C; }
.pc-day.checked .pc-mark { color: #0C0E0C; }
/* 错过：暗红填充 + ✗ */
.pc-day.missed { background: rgba(120,30,30,.5); color: var(--text); }
.pc-day.missed .pc-mark { color: #ff6b6b; }
/* 今天：绿色边框高亮 */
.pc-day.today { border: 2px solid var(--accent); }
.pc-day.today.pending .pc-mark {
  width: 10px; height: 10px; border: 1px solid var(--accent);
  border-radius: 50%;
}
/* 未来：暗色 + 灰色圆圈 */
.pc-day.future { background: var(--bg2); color: var(--textDim); }
.pc-day.future .pc-mark {
  width: 10px; height: 10px; border: 1px solid var(--textFaint);
  border-radius: 50%;
}

/* 6. 底部操作区 */
.profile-actions {
  display: flex; flex-direction: column;
  border: 1px solid var(--divider);
  margin-bottom: 20px;
}
.profile-action-btn {
  display: flex; align-items: center; gap: 12px;
  padding: 14px 16px; background: none;
  border: none; border-bottom: 1px solid var(--divider);
  color: var(--text); font-size: 14px; font-weight: 400; font-family: var(--fontB);
  cursor: pointer; transition: all .2s; text-align: left; width: 100%;
}
.profile-action-btn:last-child { border-bottom: none; }
.profile-action-btn:active { background: var(--surface2); }
.profile-action-btn .pf-arrow { margin-left: auto; }
#checkUpdateBtn .pf-arrow { margin-left: 0; }
.profile-logout {
  display: block; width: 100%; text-align: center;
  padding: 16px 8px; background: none; border: none;
  color: var(--textDim); font-size: 14px; font-family: var(--fontB);
  cursor: pointer; transition: all .2s; margin-bottom: 4px;
}
.profile-logout:active { color: var(--danger); }