/* ==========================================
   Wendy's Hub · 工作台 v1 · CSS
   核心色：白 / 奶油黄 / 阳光黄 / 土金 / 土棕
   副色：苔绿 / 深紫
   ========================================== */
:root{
  --bg:#faf7ef;
  --bg-1:#ffffff;
  --bg-2:#f4efe1;
  --bg-3:#ebe4d0;
  --bg-warm:#f6ecd4;
  --bg-side:#f4efe1;

  --line:#e5dcc4;
  --line-2:#d6c9a4;

  --text:#1a1a1a;
  --text-2:#4a4a4a;
  --text-3:#8a7f60;

  --primary:#b8860b;
  --primary-l:#d4a017;
  --earth:#8a6a3a;
  --cream:#f0e0a8;
  --sun:#e8b537;

  --green:#6a8a3a;
  --olive:#7a8a3a;
  --purple:#7a4ba0;
  --pink:#c94a7f;

  --up:#c1272d;
  --down:#0f8a4f;

  --sb-width: 220px;
}

*{box-sizing:border-box}
html,body{margin:0;padding:0;height:100%;background:var(--bg);color:var(--text);
  font-family:'Inter','PingFang SC','Microsoft YaHei',system-ui,sans-serif;
  font-size:14.5px;line-height:1.65;-webkit-font-smoothing:antialiased}
.mono{font-family:'JetBrains Mono',ui-monospace,monospace;font-variant-numeric:tabular-nums;font-feature-settings:"tnum"}
a{color:inherit;text-decoration:none}

/* ============ 布局 · 桌面优先 ============ */
.app{display:grid;grid-template-columns:var(--sb-width) 1fr;height:100vh;overflow:hidden}

/* 汉堡按钮 · 只在移动端显示 */
.hamburger{display:none;position:fixed;top:12px;left:12px;z-index:50;
  width:40px;height:40px;border-radius:8px;background:var(--bg-1);
  border:1px solid var(--line);cursor:pointer;padding:0;
  align-items:center;justify-content:center;font-size:18px;
  box-shadow:0 2px 8px rgba(30,25,15,.08)}
.hamburger:active{background:var(--bg-2)}

/* 移动端遮罩 */
.sb-mask{display:none;position:fixed;inset:0;background:rgba(30,25,15,.5);
  z-index:40;backdrop-filter:blur(2px)}

/* ============ 侧边栏 ============ */
.sidebar{
  background:var(--bg-side);
  border-right:1px solid var(--line);
  display:flex;flex-direction:column;
  height:100vh;
  overflow-y:auto;
  padding:16px 0 12px;
}
.sb-brand{display:flex;align-items:center;gap:10px;padding:0 18px 18px;border-bottom:1px solid var(--line);margin-bottom:12px}
.sb-brand-mark{width:34px;height:34px;border-radius:9px;
  background:linear-gradient(135deg,var(--sun) 0%,var(--primary) 60%,var(--earth) 100%);
  display:flex;align-items:center;justify-content:center;color:#fff;font-size:16px;font-weight:700;
  box-shadow:0 2px 8px rgba(184,134,11,.3)}
.sb-brand-name{font-size:14px;font-weight:700;color:var(--text)}
.sb-brand-sub{font-size:10px;color:var(--text-3);letter-spacing:1.5px;text-transform:uppercase;margin-top:2px;font-weight:600}

.sb-nav{flex:1;padding:0 0}
.sb-divider{font-size:10px;color:var(--text-3);letter-spacing:2px;text-transform:uppercase;padding:14px 18px 6px;font-weight:700}
.sb-item{display:flex;align-items:center;gap:12px;padding:9px 18px;font-size:13.5px;color:var(--text-2);cursor:pointer;
  border-left:3px solid transparent;transition:all .12s}
.sb-item:hover{background:rgba(184,134,11,.06);color:var(--text)}
.sb-item.active{background:var(--bg-warm);border-left-color:var(--primary);color:var(--earth);font-weight:600}
.sb-em{width:20px;font-size:15px;flex-shrink:0;text-align:center;line-height:1}
.sb-label{flex:1;line-height:1.2}

.sb-foot{padding:12px 18px 4px;border-top:1px solid var(--line);display:flex;justify-content:space-between;align-items:center;gap:10px}
.sb-foot-item{display:flex;align-items:center;gap:6px;font-size:10.5px;color:var(--text-3);letter-spacing:.5px}
.sb-status-dot{width:8px;height:8px;border-radius:50%;background:var(--text-3);transition:all .2s}
.sb-status-dot.online{background:var(--down);box-shadow:0 0 6px rgba(15,138,79,.5);animation:pulse 2s infinite}
.sb-status-dot.offline{background:var(--up)}
@keyframes pulse{0%,100%{opacity:1}50%{opacity:.5}}

/* ============ 主区 ============ */
.main{overflow-y:auto;height:100vh;background:var(--bg)}

/* ============ 主区 · 通用页头 ============ */
.page-head{position:sticky;top:0;background:var(--bg);z-index:10;padding:18px 32px 14px;border-bottom:1px solid var(--line);
  display:flex;align-items:baseline;justify-content:space-between;flex-wrap:wrap;gap:12px}
.page-title{margin:0;font-size:20px;font-weight:700;letter-spacing:-.3px;display:flex;align-items:center;gap:10px}
.page-title .em{font-size:22px}
.page-sub{font-size:11px;color:var(--text-3);letter-spacing:1.5px;text-transform:uppercase;font-weight:600}
.page-meta{display:flex;align-items:center;gap:12px;font-size:12px;color:var(--text-3)}
.page-meta .badge{background:var(--bg-2);border:1px solid var(--line);padding:4px 10px;border-radius:999px;font-size:11px;font-weight:500}

.page-body{padding:20px 32px 32px}

/* ============ 通用卡片 ============ */
.card{background:var(--bg-1);border:1px solid var(--line);border-radius:12px;padding:18px 20px;box-shadow:0 1px 2px rgba(30,25,15,.03)}
.card-h{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px;gap:8px;flex-wrap:wrap}
.card-title{font-size:11px;color:var(--text-3);letter-spacing:1.5px;text-transform:uppercase;font-weight:700;display:flex;align-items:center;gap:8px}
.card-title::before{content:"";width:3px;height:12px;background:var(--primary);border-radius:2px}
.card-tag{font-size:10px;color:var(--text-3);background:var(--bg-2);padding:2px 8px;border-radius:4px;letter-spacing:.5px;font-weight:600}

/* ============ 首页 · 年度进度大条 ============ */
.year-hero{background:linear-gradient(135deg,var(--sun) 0%,var(--primary) 55%,var(--earth) 100%);color:#fff;
  border-radius:14px;padding:22px 26px;margin-bottom:18px;position:relative;overflow:hidden;box-shadow:0 4px 16px rgba(184,134,11,.2)}
.year-hero::before{content:"";position:absolute;top:-40px;right:-40px;width:180px;height:180px;
  background:radial-gradient(circle,rgba(255,255,255,.15) 0%,transparent 60%);pointer-events:none}
.yh-label{font-size:10px;letter-spacing:2px;text-transform:uppercase;opacity:.85;font-weight:700;margin-bottom:6px}
.yh-top{display:flex;align-items:baseline;justify-content:space-between;gap:16px;flex-wrap:wrap;margin-bottom:10px}
.yh-val{font-size:32px;font-weight:700;font-family:'JetBrains Mono';letter-spacing:-.5px;line-height:1}
.yh-val small{font-size:14px;font-weight:500;opacity:.85;margin-left:6px}
.yh-note{font-size:12px;opacity:.9}
.yh-bar{background:rgba(255,255,255,.2);border-radius:5px;height:7px;overflow:hidden;margin-top:4px}
.yh-bar > div{height:100%;background:#fff;border-radius:5px;transition:width .5s ease}
.yh-sub{font-size:11.5px;opacity:.9;margin-top:8px}

/* ============ 首页 · KPI 卡片网格 ============ */
.kpi-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:18px}
@media (max-width:900px){.kpi-grid{grid-template-columns:repeat(2,1fr)}}
.kpi{background:var(--bg-1);border:1px solid var(--line);border-radius:10px;padding:14px 16px;position:relative;overflow:hidden}
.kpi::before{content:"";position:absolute;top:0;left:0;right:0;height:3px}
.kpi.k1::before{background:var(--pink)}
.kpi.k2::before{background:var(--olive)}
.kpi.k3::before{background:var(--green)}
.kpi.k4::before{background:var(--up)}
.kpi-lbl{font-size:10px;color:var(--text-3);letter-spacing:1px;text-transform:uppercase;font-weight:700;margin-bottom:4px}
.kpi-val{font-size:22px;font-weight:700;font-family:'JetBrains Mono';letter-spacing:-.3px}
.kpi-sub{font-size:11px;color:var(--text-3);margin-top:3px}
.kpi-sub .up{color:var(--down);font-weight:600}
.kpi-sub .down{color:var(--up);font-weight:600}

/* ============ 首页 · 双列布局 ============ */
.home-grid{display:grid;grid-template-columns:1.4fr 1fr;gap:16px}
@media (max-width:900px){.home-grid{grid-template-columns:1fr}}

/* ============ 首页 · 今日行动线 ============ */
.today-line{background:var(--bg-1);border:1px solid var(--line);border-radius:12px;padding:16px 20px}
.tl-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}
.tl-title{font-size:11px;color:var(--earth);letter-spacing:1.5px;text-transform:uppercase;font-weight:700;display:flex;align-items:center;gap:8px}
.tl-title::before{content:"✨"}
.tl-count{font-size:11px;color:var(--text-3);font-family:'JetBrains Mono';font-weight:600}

.tl-item{display:flex;align-items:center;gap:10px;padding:9px 4px;border-bottom:1px dashed var(--line);cursor:pointer;transition:background .12s}
.tl-item:last-child{border-bottom:none}
.tl-item:hover{background:var(--bg-2);border-radius:6px;margin:0 -4px;padding-left:8px;padding-right:8px}
.tl-check{width:18px;height:18px;border:1.5px solid var(--line-2);border-radius:4px;flex-shrink:0;background:#fff;position:relative;transition:all .15s}
.tl-item.done .tl-check{background:var(--down);border-color:var(--down)}
.tl-item.done .tl-check::after{content:"✓";position:absolute;top:-2px;left:2px;color:#fff;font-size:12px;font-weight:700}
.tl-text{flex:1;font-size:13px;color:var(--text-2);transition:all .15s}
.tl-item.done .tl-text{color:var(--text-3);text-decoration:line-through}
.tl-tag{font-size:9.5px;padding:2px 7px;border-radius:3px;font-weight:700;letter-spacing:.3px;flex-shrink:0}
.tl-t-read{background:rgba(106,138,58,.15);color:var(--green)}
.tl-t-fit{background:rgba(122,138,58,.15);color:var(--olive)}
.tl-t-learn{background:rgba(122,75,160,.15);color:var(--purple)}
.tl-t-media{background:rgba(201,74,127,.15);color:var(--pink)}
.tl-t-stock{background:rgba(193,39,45,.15);color:var(--up)}
.tl-t-life{background:rgba(184,134,11,.15);color:var(--primary)}

/* ============ 首页 · 热力图 ============ */
.heat-card{background:var(--bg-1);border:1px solid var(--line);border-radius:12px;padding:16px 20px}
.heat-title{font-size:11px;color:var(--text-3);letter-spacing:1.5px;text-transform:uppercase;font-weight:700;margin-bottom:10px}
.heat-title b{color:var(--earth)}
.heat-cells{display:grid;grid-template-columns:repeat(14,1fr);gap:3px;margin-bottom:10px}
.hc{aspect-ratio:1;border-radius:2px;background:var(--bg-3)}
.hc.l1{background:#e0e8b8}
.hc.l2{background:#b8c88a}
.hc.l3{background:#8ea85a}
.hc.l4{background:#6a8a3a}
.heat-legend{display:flex;align-items:center;gap:6px;font-size:10.5px;color:var(--text-3);justify-content:flex-end}
.heat-legend .hc{width:10px;height:10px;aspect-ratio:auto}

/* ============ 分类小卡（首页快速入口） ============ */
.quick-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-top:16px}
@media (max-width:900px){.quick-grid{grid-template-columns:repeat(2,1fr)}}
.quick{background:var(--bg-1);border:1px solid var(--line);border-radius:10px;padding:12px 14px;cursor:pointer;transition:all .15s}
.quick:hover{transform:translateY(-1px);box-shadow:0 4px 12px rgba(30,25,15,.06);border-color:var(--line-2)}
.quick-head{display:flex;align-items:center;gap:8px;margin-bottom:6px}
.quick-em{font-size:16px}
.quick-name{font-size:12.5px;font-weight:600;color:var(--text)}
.quick-desc{font-size:11px;color:var(--text-3);line-height:1.5}

/* ============ 年度计划页 ============ */
.goals-tabs{display:flex;gap:2px;flex-wrap:wrap;margin-bottom:16px;padding-bottom:8px;border-bottom:1px solid var(--line)}
.goals-tab{padding:6px 12px;font-size:12px;color:var(--text-3);cursor:pointer;border-radius:6px;font-weight:600;letter-spacing:.3px}
.goals-tab:hover{background:var(--bg-2);color:var(--text-2)}
.goals-tab.active{background:var(--bg-warm);color:var(--earth)}
.goals-tab .num{margin-left:6px;font-family:'JetBrains Mono';font-size:10.5px;opacity:.7}

.goals-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}
@media (max-width:800px){.goals-grid{grid-template-columns:1fr}}
.goal-card{background:var(--bg-1);border:1px solid var(--line);border-radius:10px;padding:14px 16px;position:relative;border-left:3px solid var(--primary);transition:all .12s}
.goal-card:hover{box-shadow:0 3px 10px rgba(30,25,15,.06)}
.goal-card.done{opacity:.7;background:linear-gradient(90deg,#eef4e5 0%,#fff 100%)}
.goal-card.done .goal-title{text-decoration:line-through;color:var(--text-3)}

.gc-c-health{border-left-color:#6a8a3a}
.gc-c-learn{border-left-color:#7a4ba0}
.gc-c-work{border-left-color:#b8860b}
.gc-c-social{border-left-color:#e8b537}
.gc-c-year{border-left-color:#8a6a3a}
.gc-c-exp{border-left-color:#c94a7f}
.gc-c-atom{border-left-color:#2b8a8a}
.gc-c-love{border-left-color:#c1272d}
.gc-c-family{border-left-color:#e8b537}

.goal-head{display:flex;align-items:flex-start;gap:8px;margin-bottom:8px}
.goal-title{flex:1;font-size:13.5px;font-weight:600;color:var(--text);line-height:1.5}
.goal-actions{display:flex;gap:4px;opacity:0;transition:opacity .15s;flex-shrink:0}
.goal-card:hover .goal-actions{opacity:1}
.goal-actions button{background:transparent;border:1px solid var(--line);color:var(--text-3);width:24px;height:24px;border-radius:4px;cursor:pointer;font-size:12px;padding:0;display:flex;align-items:center;justify-content:center}
.goal-actions button:hover{background:var(--bg-2);color:var(--text-2)}
.goal-actions button.del:hover{color:var(--up);border-color:rgba(193,39,45,.3);background:rgba(193,39,45,.05)}

.goal-meta{display:flex;align-items:center;gap:10px;font-size:11px;color:var(--text-3);margin-bottom:8px;flex-wrap:wrap}
.goal-type-badge{font-size:9.5px;padding:2px 6px;border-radius:3px;background:var(--bg-2);color:var(--text-3);font-weight:600;letter-spacing:.3px;text-transform:uppercase}

.goal-progress{margin-top:6px}
.gp-bar{background:var(--bg-3);height:6px;border-radius:3px;overflow:hidden;position:relative}
.gp-bar > div{height:100%;background:linear-gradient(90deg,var(--primary),var(--sun));border-radius:3px;transition:width .3s}
.gp-text{display:flex;justify-content:space-between;align-items:baseline;margin-top:4px;font-size:11px;color:var(--text-3);font-family:'JetBrains Mono'}
.gp-text b{color:var(--text);font-size:12px;font-weight:600}

.goal-input{width:60px;background:var(--bg-2);border:1px solid var(--line);border-radius:4px;padding:2px 6px;font-family:'JetBrains Mono';font-size:12px;color:var(--text);text-align:center}
.goal-input:focus{outline:none;border-color:var(--primary);background:#fff}

.add-goal-btn{background:transparent;border:1.5px dashed var(--line-2);border-radius:8px;padding:14px;color:var(--text-3);
  font-size:12.5px;font-weight:600;cursor:pointer;width:100%;transition:all .12s;font-family:inherit}
.add-goal-btn:hover{border-color:var(--primary);color:var(--primary);background:rgba(184,134,11,.05)}

/* ============ Coming Soon 占位页 ============ */
.coming{padding:60px 20px;text-align:center;color:var(--text-3)}
.coming-em{font-size:48px;margin-bottom:14px;opacity:.6}
.coming-title{font-size:18px;font-weight:700;color:var(--text);margin-bottom:6px}
.coming-desc{font-size:13px;max-width:400px;margin:0 auto;line-height:1.7}

/* ============ 嵌入持股 iframe ============ */
.stock-frame{width:100%;height:calc(100vh - 60px);border:none;display:block}

/* ============ 目标编辑弹窗 ============ */
.goal-modal-mask{position:fixed;inset:0;background:rgba(30,25,15,.4);z-index:100;
  display:flex;align-items:flex-start;justify-content:center;padding:60px 20px 20px;
  overflow-y:auto;backdrop-filter:blur(3px);animation:fadeIn .15s ease}
@keyframes fadeIn{from{opacity:0}to{opacity:1}}
.goal-modal{background:var(--bg-1);border:1px solid var(--line);border-radius:14px;
  max-width:640px;width:100%;box-shadow:0 20px 60px rgba(30,25,15,.25);
  animation:slideUp .2s ease;display:flex;flex-direction:column;max-height:calc(100vh - 80px)}
@keyframes slideUp{from{transform:translateY(20px);opacity:0}to{transform:translateY(0);opacity:1}}

.gm-head{display:flex;align-items:center;justify-content:space-between;
  padding:16px 22px;border-bottom:1px solid var(--line);background:var(--bg-warm);
  border-radius:14px 14px 0 0}
.gm-head h3{margin:0;font-size:16px;font-weight:700;color:var(--earth)}
.gm-close{background:transparent;border:1px solid var(--line);color:var(--text-3);
  width:28px;height:28px;border-radius:6px;cursor:pointer;font-size:14px;padding:0;
  display:flex;align-items:center;justify-content:center}
.gm-close:hover{background:var(--bg-2);color:var(--text)}

.gm-body{padding:20px 22px;overflow-y:auto;flex:1}
.gm-field{margin-bottom:14px}
.gm-field label{display:block;font-size:10.5px;color:var(--text-3);
  letter-spacing:1px;text-transform:uppercase;font-weight:700;margin-bottom:5px}
.gm-field input,.gm-field select,.gm-field textarea{width:100%;
  background:#fff;border:1.5px solid var(--line);border-radius:6px;
  padding:8px 12px;font-size:13.5px;font-family:inherit;color:var(--text);
  transition:border-color .12s}
.gm-field input:focus,.gm-field select:focus,.gm-field textarea:focus{
  outline:none;border-color:var(--primary);box-shadow:0 0 0 3px rgba(184,134,11,.12)}
.gm-field textarea{resize:vertical;min-height:60px;font-family:inherit;line-height:1.55}
.gm-row{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.gm-row .gm-field:only-child{grid-column:1/-1}
@media (max-width:520px){.gm-row{grid-template-columns:1fr}}
.gm-row.three{grid-template-columns:1fr 1fr 1fr}
@media (max-width:520px){.gm-row.three{grid-template-columns:1fr}}

.gm-foot{display:flex;justify-content:space-between;align-items:center;
  padding:14px 22px;border-top:1px solid var(--line);background:var(--bg-2);
  border-radius:0 0 14px 14px;gap:10px;flex-wrap:wrap}
.gm-del{background:transparent;border:1px solid var(--line-2);color:var(--text-3);
  padding:7px 14px;border-radius:6px;cursor:pointer;font-size:12px;font-family:inherit}
.gm-del:hover{color:var(--up);border-color:rgba(193,39,45,.4);background:rgba(193,39,45,.05)}
.gm-actions{display:flex;gap:8px}
.gm-cancel{background:#fff;border:1px solid var(--line-2);color:var(--text);
  padding:8px 16px;border-radius:6px;cursor:pointer;font-size:13px;font-family:inherit}
.gm-cancel:hover{background:var(--bg-2)}
.gm-save{background:var(--primary);color:#fff;border:none;
  padding:8px 20px;border-radius:6px;cursor:pointer;font-size:13px;font-weight:600;font-family:inherit}
.gm-save:hover{background:#a0740a}

/* ============ Toast 提示 ============ */
.toast{position:fixed;bottom:24px;left:50%;transform:translateX(-50%);
  background:var(--down);color:#fff;padding:10px 20px;border-radius:8px;
  font-size:13px;font-weight:600;box-shadow:0 8px 24px rgba(15,138,79,.35);
  z-index:200;opacity:0;pointer-events:none;transition:opacity .2s}
.toast.show{opacity:1}
.toast.err{background:var(--up);box-shadow:0 8px 24px rgba(193,39,45,.35)}

/* ==========================================
   移动端响应式 · < 720px
   ========================================== */
@media (max-width: 720px) {
  html, body { font-size: 14px; }

  /* 布局改成单列，侧边栏改成抽屉 */
  .app { grid-template-columns: 1fr; }

  /* 显示汉堡按钮 */
  .hamburger { display: flex; }

  /* 侧边栏改成侧滑抽屉 */
  .sidebar {
    position: fixed;
    top: 0;
    left: 0;
    bottom: 0;
    width: 260px;
    z-index: 50;
    transform: translateX(-100%);
    transition: transform .25s ease;
    box-shadow: 4px 0 20px rgba(30,25,15,.15);
  }
  .sidebar.open { transform: translateX(0); }
  .sb-mask.show { display: block; }

  /* 主区留出汉堡按钮空间 */
  .main {
    height: 100vh;
    padding-top: 4px;
  }
  .page-head {
    padding: 14px 16px 12px 60px; /* 左侧留 60px 给汉堡按钮 */
    flex-direction: column;
    align-items: flex-start;
    gap: 8px;
  }
  .page-title { font-size: 17px; }
  .page-title .em { font-size: 20px; }
  .page-sub { font-size: 10px; }
  .page-meta { flex-wrap: wrap; gap: 8px; }
  .page-meta .badge { padding: 3px 8px; font-size: 10.5px; }

  .page-body { padding: 14px 16px 28px; }

  /* 年度进度大条 */
  .year-hero { padding: 18px 20px; margin-bottom: 14px; }
  .yh-val { font-size: 26px; }
  .yh-top { flex-direction: column; align-items: flex-start; gap: 6px; }

  /* KPI 卡片 · 2 列 */
  .kpi-grid { grid-template-columns: repeat(2, 1fr); gap: 8px; margin-bottom: 14px; }
  .kpi { padding: 12px 14px; }
  .kpi-val { font-size: 18px; }
  .kpi-lbl { font-size: 9.5px; }

  /* 双列改单列 */
  .home-grid { grid-template-columns: 1fr; gap: 12px; }

  /* 今日行动线 */
  .today-line { padding: 14px 16px; }
  .tl-item { padding: 10px 4px; } /* 增大手指点击面积 */
  .tl-text { font-size: 13px; }
  .tl-check { width: 22px; height: 22px; } /* 更大好点 */

  /* 热力图格子小一点 */
  .heat-cells { gap: 2px; }
  .heat-card { padding: 14px 16px; }

  /* 快速入口 · 2 列 */
  .quick-grid { grid-template-columns: repeat(2, 1fr); }
  .quick { padding: 10px 12px; }

  /* 年度计划 · Tabs 可横向滚动 */
  .goals-tabs {
    flex-wrap: nowrap;
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
    padding-bottom: 10px;
    scrollbar-width: none;
  }
  .goals-tabs::-webkit-scrollbar { display: none; }
  .goals-tab { flex-shrink: 0; padding: 7px 12px; font-size: 12px; }

  /* 目标卡 · 1 列 */
  .goals-grid { grid-template-columns: 1fr; gap: 10px; }
  .goal-card { padding: 12px 14px; }
  .goal-title { font-size: 13px; }
  .goal-actions { opacity: 1; } /* 手机上没 hover，永久显示 */
  .goal-actions button { width: 30px; height: 30px; } /* 手指友好 */
  .goal-meta { font-size: 10.5px; gap: 8px; }
  .goal-input { width: 68px; padding: 4px 8px; font-size: 13px; } /* 更大好按 */

  /* 编辑弹窗 · 全屏 */
  .goal-modal-mask { padding: 0; align-items: stretch; }
  .goal-modal {
    max-width: 100%;
    max-height: 100vh;
    border-radius: 0;
    height: 100vh;
  }
  .gm-head { border-radius: 0; padding: 14px 18px; }
  .gm-body { padding: 16px 18px; }
  .gm-row { grid-template-columns: 1fr; gap: 10px; }
  .gm-foot { border-radius: 0; padding: 12px 18px; }
  .gm-field input, .gm-field select, .gm-field textarea { font-size: 15px; padding: 10px 12px; }
  /* 15px 是 iOS 上不会自动缩放的最小字号 */

  /* 侧边栏内部 */
  .sb-brand { padding: 0 20px 16px; }
  .sb-item { padding: 12px 20px; font-size: 14px; }
  .sb-em { font-size: 17px; }
  .sb-divider { padding: 16px 20px 6px; font-size: 10px; }

  /* 持股 iframe */
  .stock-frame { height: calc(100vh - 100px); }

  /* Toast 位置调整 */
  .toast { bottom: 20px; padding: 10px 18px; font-size: 12.5px; max-width: calc(100vw - 40px); text-align: center; }
}

/* ==========================================
   更小屏（< 400px）· iPhone SE 等
   ========================================== */
@media (max-width: 400px) {
  .kpi-grid { grid-template-columns: 1fr 1fr; }
  .quick-grid { grid-template-columns: 1fr; }
  .kpi-val { font-size: 17px; }
  .yh-val { font-size: 22px; }
}
