/* Helm — Claude Design 重設計:新增/編輯表單(.fpage 單一捲動層)+ 設定(.set)。
   核心:整片覆蓋背景(蓋掉 header+分頁)→ 背後無第二捲層;只有 .fpage__scroll 一個捲動層;
   頂 bar flex:0 永不捲(取消/儲存一定點得到)。 */

/* ===== 手機:整頁推進、全螢幕覆蓋 ===== */
.fpage {
  position: fixed; inset: 0; z-index: 120;   /* 蓋過 tab bar(100)與 FAB(90) */
  background: var(--surface-canvas);
  background-image: var(--texture-paper); background-size: var(--texture-paper-size);
  display: flex; flex-direction: column;
  animation: fpage-push var(--dur-sheet) var(--ease-out);
}
@keyframes fpage-push { from { transform: translateX(14%); opacity: 0; } to { transform: none; opacity: 1; } }

.fpage__panel { flex: 1 1 auto; min-height: 0; display: flex; flex-direction: column; }

/* 固定頂 bar(flex:0,永不捲);頂部留白避開瀏海/動態島 */
.fpage__bar {
  flex: 0 0 auto; z-index: 2;
  display: grid; grid-template-columns: 1fr auto 1fr; align-items: center;
  padding: max(env(safe-area-inset-top), 18px) 10px 12px;
  background: var(--surface-card); border-bottom: 1px solid var(--line);
}
.fpage__cancel {
  justify-self: start; display: inline-flex; align-items: center; gap: 3px;
  background: none; border: none; cursor: pointer; padding: 8px;
  color: var(--text-secondary); font-family: var(--font-sans); font-size: var(--fs-body);
  border-radius: var(--radius-sm); transition: color var(--dur-fast) var(--ease-standard);
}
.fpage__cancel:hover { color: var(--text-primary); }
.fpage__cancel:disabled { opacity: 0.5; cursor: default; }
.fpage__cancel i { font-size: 1.05rem; }
.fpage__title { font-family: var(--font-serif); font-weight: 600; font-size: var(--fs-title-3); color: var(--text-primary); white-space: nowrap; }
.fpage__save {
  justify-self: end; display: inline-flex; align-items: center; gap: 6px;
  min-height: 36px; padding: 8px 10px;
  background: none; border: none; cursor: pointer;
  color: var(--brand); font-family: var(--font-sans); font-weight: 600; font-size: var(--fs-body);
  border-radius: var(--radius-sm); transition: color var(--dur-fast) var(--ease-standard);
}
.fpage__save:hover { color: var(--accent-brass); }
.fpage__save:disabled { cursor: default; }
.fpage__save[aria-busy="true"] { color: var(--text-tertiary); }
.fpage__save-spin {
  width: 14px; height: 14px; border-radius: 50%;
  border: 2px solid color-mix(in oklab, currentColor 30%, transparent);
  border-top-color: currentColor; animation: fpage-spin 0.7s linear infinite;
}
@keyframes fpage-spin { to { transform: rotate(360deg); } }

/* 唯一捲動層 */
.fpage__scroll {
  flex: 1 1 auto; min-height: 0;
  overflow-y: auto; -webkit-overflow-scrolling: touch; overscroll-behavior: contain;
}
.fpage__scroll::-webkit-scrollbar { width: 0; }
.fpage__body { padding: 16px 16px max(env(safe-area-inset-bottom), 32px); display: flex; flex-direction: column; gap: 14px; }

.fpage__card {
  background: var(--surface-card);
  border: 1px solid var(--line);
  border-radius: var(--radius-lg);
  padding: 16px 16px 18px;
  box-shadow: var(--shadow-sm, 0 1px 2px rgba(0,0,0,0.04));
}
.fpage__card-head { display: flex; align-items: baseline; justify-content: space-between; gap: 10px; padding: 2px 2px 14px; }
.fpage__card-hint { font-size: var(--fs-caption); color: var(--text-tertiary); }
.fpage__fields { display: flex; flex-direction: column; gap: 16px; }
.fpage__fx { margin-top: 8px; font-size: var(--fs-caption); color: var(--value-positive); font-variant-numeric: tabular-nums; }

.fpage__danger { margin-top: 4px; padding: 4px 2px 0; }
.fpage__confirm {
  display: flex; flex-direction: column; gap: 12px;
  background: var(--surface-card); border: 1px solid var(--line);
  border-radius: var(--radius-lg); padding: 16px;
}
.fpage__confirm-q { margin: 0; font-size: var(--fs-label); color: var(--text-primary); text-align: center; }
.fpage__confirm-row { display: flex; gap: 10px; }

/* ===== 桌面(≥760px):.fpage 變半透明 scrim + 置中浮層;內部 bar/scroll 單一捲動層完全沿用 ===== */
@media (min-width: 760px) {
  .fpage {
    z-index: 120;
    background: var(--surface-scrim, rgba(6,12,9,0.5));
    background-image: none;
    display: grid; place-items: center;
    padding: 32px; animation: fpage-fade var(--dur-sheet) var(--ease-out);
  }
  @keyframes fpage-fade { from { opacity: 0; } to { opacity: 1; } }
  .fpage__panel {
    flex: 0 1 auto;
    width: min(560px, 100%); max-height: 100%;
    background: var(--surface-canvas);
    background-image: var(--texture-paper); background-size: var(--texture-paper-size);
    border: 1px solid var(--line); border-radius: var(--radius-xl, 24px);
    box-shadow: var(--shadow-lg, 0 24px 60px rgba(0,0,0,0.28));
    overflow: hidden;
    animation: dpanel-pop var(--dur-sheet) var(--ease-out);
  }
  @keyframes dpanel-pop { from { transform: translateY(12px) scale(0.99); opacity: 0; } to { transform: none; opacity: 1; } }
  .fpage__bar { padding: 18px 16px 14px; }
}

/* ===== 設定 → 外觀 ===== */
.set { display: flex; flex-direction: column; gap: 16px; }
.set__card {
  background: var(--surface-card); border: 1px solid var(--line);
  border-radius: var(--radius-lg); padding: 16px 16px 18px;
  box-shadow: var(--shadow-sm, 0 1px 2px rgba(0,0,0,0.04));
}
.set__card--muted { box-shadow: none; }
.set__head { padding: 2px 2px 12px; }
.set__row { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 0 2px 12px; }
.set__row-title { font-family: var(--font-sans); font-weight: 600; font-size: var(--fs-body); color: var(--text-primary); }
.set__row-sub { font-size: var(--fs-label); color: var(--text-secondary); margin-top: 2px; }
.set__soonrow {
  display: flex; align-items: center; gap: 12px; padding: 12px 2px;
  color: var(--text-secondary); font-size: var(--fs-body);
  border-top: 1px solid var(--line-faint, var(--line));
}
.set__soonrow:first-of-type { border-top: none; }
.set__soonrow i { font-size: 1.25rem; color: var(--text-tertiary); }
.set__soonrow em { margin-left: auto; font-style: normal; font-size: var(--fs-overline); letter-spacing: var(--ls-overline); text-transform: uppercase; color: var(--text-tertiary); }

/* 設定 → 個人資料 */
.set__note { color: var(--text-secondary); font-size: 13px; line-height: 1.6; margin: 0 0 0.6rem; }
.set__inp { width: 100%; padding: 0.7rem 0.85rem; background: var(--surface-card); color: var(--text-primary);
  border: 1px solid var(--line); border-radius: var(--radius-md); font-family: inherit; font-size: 15px; -webkit-appearance: none; appearance: none; }
.set__area { width: 100%; padding: 0.7rem 0.85rem; background: var(--surface-card); color: var(--text-primary);
  border: 1px solid var(--line); border-radius: var(--radius-md); font-family: inherit; font-size: 15px; line-height: 1.5; resize: vertical; }

/* ===== 換匯參考 + 定期定額換匯追蹤 ===== */
.fx-now { display: flex; align-items: baseline; gap: 8px; margin: 2px 0 14px; }
.fx-now__unit { font-size: var(--fs-label); color: var(--text-secondary); }
.fx-now__rate { font-family: var(--font-display); font-size: 2rem; color: var(--text-primary); font-variant-numeric: tabular-nums; }

.fx-range { margin: 4px 0 2px; }
.fx-range__track { position: relative; height: 8px; border-radius: 999px; background: linear-gradient(90deg, var(--value-positive-soft), var(--surface-hover), var(--value-caution-soft)); }
.fx-range__marker { position: absolute; top: 50%; width: 14px; height: 14px; border-radius: 50%; background: var(--brand); border: 2px solid var(--surface-card); transform: translate(-50%, -50%); box-shadow: 0 1px 3px rgba(0,0,0,0.35); }
.fx-range__labels { display: flex; justify-content: space-between; align-items: center; margin-top: 8px; font-size: var(--fs-caption); color: var(--text-tertiary); font-variant-numeric: tabular-nums; }
.fx-zone { font-weight: 700; font-size: var(--fs-label); }
.fx-zone--low { color: var(--value-positive); }
.fx-zone--mid { color: var(--text-secondary); }
.fx-zone--high { color: var(--value-caution); }

.fx-note { margin: 12px 0 0; font-size: var(--fs-label); color: var(--text-secondary); line-height: 1.5; }
.fx-disclaim { margin: 8px 0 0; font-size: var(--fs-caption); color: var(--text-tertiary); }

.fx-tips { margin: 0; padding-left: 18px; display: flex; flex-direction: column; gap: 9px; }
.fx-tips li { font-size: var(--fs-label); color: var(--text-secondary); line-height: 1.55; }
.fx-tips b { color: var(--text-primary); font-weight: 600; }

.fx-addbtn { display: inline-flex; align-items: center; gap: 4px; background: none; border: none; cursor: pointer; color: var(--brand); font-family: var(--font-sans); font-size: var(--fs-label); font-weight: 600; padding: 2px 4px; }

.fx-avg { background: var(--surface-sunken); border-radius: var(--radius-md); padding: 12px 14px; display: flex; flex-direction: column; gap: 6px; margin-bottom: 12px; }
.fx-avg__row { display: flex; justify-content: space-between; align-items: baseline; gap: 10px; font-size: var(--fs-label); color: var(--text-secondary); }
.fx-avg__main span:last-child { font-size: var(--fs-body); color: var(--text-primary); font-weight: 600; }
.fx-avg__cmp { font-size: var(--fs-caption); color: var(--text-tertiary); margin-top: 2px; }

.fx-addform { display: flex; flex-direction: column; gap: 12px; background: var(--surface-sunken); border-radius: var(--radius-md); padding: 14px; margin-bottom: 12px; }
.fx-addform__row { display: flex; gap: 10px; }

.fx-list { display: flex; flex-direction: column; }
.fx-empty { font-size: var(--fs-label); color: var(--text-tertiary); line-height: 1.5; margin: 4px 0 0; }
.fx-row { display: flex; align-items: center; gap: 10px; padding: 10px 2px; border-top: 1px solid var(--line-faint, var(--line)); }
.fx-row:first-child { border-top: none; }
.fx-row__main { flex: 1 1 auto; min-width: 0; display: flex; flex-direction: column; gap: 2px; }
.fx-row__date { font-size: var(--fs-caption); color: var(--text-tertiary); }
.fx-row__amt { font-size: var(--fs-label); color: var(--text-primary); font-variant-numeric: tabular-nums; }
.fx-row__rate { font-size: var(--fs-label); color: var(--text-secondary); font-variant-numeric: tabular-nums; width: 56px; text-align: right; }
.fx-row__del { background: none; border: none; cursor: pointer; color: var(--text-tertiary); padding: 6px; font-size: 1.05rem; }
.fx-row__del:hover { color: var(--value-negative); }

/* 總覽的換匯參考卡(可點開) */
.ov-fxcard { width: 100%; text-align: left; background: var(--surface-card); border: 1px solid var(--line); border-radius: var(--radius-lg); padding: 16px; cursor: pointer; display: flex; align-items: center; justify-content: space-between; gap: 12px; box-shadow: var(--shadow-sm, 0 1px 2px rgba(0,0,0,0.04)); font-family: inherit; }
.ov-fxcard:hover { background: var(--surface-hover); }
.ov-fxcard__l { display: flex; flex-direction: column; gap: 3px; }
.ov-fxcard__title { font-size: var(--fs-label); color: var(--text-secondary); }
.ov-fxcard__rate { font-family: var(--font-display); font-size: 1.4rem; color: var(--text-primary); font-variant-numeric: tabular-nums; }
.ov-fxcard__r { display: flex; align-items: center; gap: 8px; }
.ov-fxcard__zone { font-size: var(--fs-label); font-weight: 700; }
.ov-fxcard__chev { color: var(--text-tertiary); font-size: 1.1rem; }

/* ───────────── 現金流(收入 / 支出 / 投入) ───────────── */
.cf-amt--pos { color: var(--value-positive, #3a8a5f); }
.cf-amt--neg { color: var(--value-negative, #c1503b); }
.cf-amt--inv { color: var(--accent-brass); }

.cf-hero__rows { margin-top: 12px; display: flex; flex-direction: column; gap: 9px; }
.cf-hero__row { display: flex; align-items: baseline; justify-content: space-between; font-size: var(--fs-label); color: var(--text-secondary); }
.cf-hero__row .t-num { font-variant-numeric: tabular-nums; font-weight: 600; }
.cf-hero__row--big > span:first-child { color: var(--text-primary); font-weight: 600; }
.cf-hero__row--big .t-num { font-size: var(--fs-title-3); font-weight: 700; }
.cf-hero__line { height: 1px; background: var(--line-faint); margin: 2px 0; }
.cf-hero__note { margin-top: 14px; font-size: var(--fs-caption); color: var(--text-tertiary); line-height: 1.55; }

.cf-sec { margin-top: 14px; }
.cf-sec__head { display: flex; align-items: baseline; justify-content: space-between; }
.cf-sec__sum { font-variant-numeric: tabular-nums; font-weight: 700; font-size: var(--fs-body); }
.cf-sec__hint { margin-top: 6px; font-size: var(--fs-caption); color: var(--text-tertiary); line-height: 1.45; }

.cf-list { margin-top: 10px; display: flex; flex-direction: column; }
.cf-row { display: flex; align-items: center; justify-content: space-between; gap: 12px; width: 100%;
  text-align: left; background: none; border: none; font: inherit; color: inherit; cursor: pointer;
  padding: 11px 4px; border-top: 1px solid var(--line-faint); }
.cf-list > .cf-row:first-child { border-top: none; }
.cf-row--static { cursor: default; }
.cf-row__l { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.cf-row__name { font-size: var(--fs-label); color: var(--text-primary); display: flex; align-items: center; gap: 6px; }
.cf-row__auto { font-size: 0.6875rem; color: var(--accent-brass); border: 1px solid var(--line-strong); border-radius: 4px; padding: 0 5px; line-height: 1.6; font-weight: 600; }
.cf-row__sub { font-size: var(--fs-caption); color: var(--text-tertiary); }
.cf-row__amt { font-variant-numeric: tabular-nums; font-weight: 600; font-size: var(--fs-label); white-space: nowrap; }
.cf-empty { padding: 8px 4px; font-size: var(--fs-caption); color: var(--text-tertiary); }
.cf-mile { font-variant-numeric: tabular-nums; font-weight: 700; color: var(--text-secondary); white-space: nowrap; }

.cf-add { margin-top: 12px; width: 100%; display: flex; align-items: center; justify-content: center; gap: 6px;
  background: var(--surface-sunken); border: 1px dashed var(--line-strong); border-radius: var(--radius-lg, 12px);
  color: var(--text-secondary); font-size: var(--fs-label); padding: 11px; cursor: pointer; font-family: inherit; }
.cf-add i { color: var(--accent-brass); }

.cf-editor { margin-top: 12px; padding-top: 14px; border-top: 1px solid var(--line); display: flex; flex-direction: column; gap: 10px; }
.cf-editor__btns { display: flex; align-items: center; justify-content: space-between; gap: 10px; margin-top: 2px; }
.cf-editor__spacer { flex: 0 0 auto; }
.cf-editor__right { display: flex; gap: 8px; margin-left: auto; }

.cf-notice { padding: 8px 4px; font-size: var(--fs-label); color: var(--text-secondary); line-height: 1.7; }

/* ───────────── 目標(存錢目標 + 進度條) ───────────── */
.goal-intro { display: block; margin-bottom: 2px; }
.goal { margin-top: 12px; }
.goal__head { display: flex; align-items: baseline; justify-content: space-between; width: 100%; background: none; border: none; padding: 0; cursor: pointer; font: inherit; color: inherit; }
.goal__name { font-size: var(--fs-body); font-weight: 600; color: var(--text-primary); }
.goal__pct { font-variant-numeric: tabular-nums; font-weight: 700; color: var(--accent-brass); }
.goal__bar { margin-top: 10px; height: 8px; border-radius: 999px; background: var(--surface-sunken); overflow: hidden; }
.goal__fill { height: 100%; border-radius: 999px; background: var(--accent-brass); transition: width .3s ease; }
.goal__fill--done { background: var(--value-positive, #3a8a5f); }
.goal__nums { margin-top: 10px; display: flex; align-items: baseline; justify-content: space-between; gap: 10px; flex-wrap: wrap; }
.goal__nums .t-num { font-variant-numeric: tabular-nums; color: var(--text-primary); font-weight: 600; }
.goal__of { color: var(--text-tertiary); font-weight: 400; }
.goal__eta { font-size: var(--fs-caption); color: var(--text-secondary); }
.goal__eta--done { color: var(--value-positive, #3a8a5f); font-weight: 600; }
.goal__eta--muted { color: var(--text-tertiary); }
.goal__hint { font-size: var(--fs-caption); color: var(--accent-brass); margin-top: 2px; }
.goal-form { margin-top: 12px; display: flex; flex-direction: column; gap: 10px; }
.goal-alloc { display: flex; justify-content: space-between; align-items: baseline; gap: 10px; margin-top: 8px; font-size: var(--fs-label); color: var(--text-secondary); }
.goal-alloc .t-num { font-variant-numeric: tabular-nums; font-weight: 600; }

/* 換匯工具:統計列 + 建議框 + 帳面盈虧 */
.fx-stats { display: flex; flex-wrap: wrap; gap: 8px 16px; margin-top: 12px; font-size: var(--fs-caption); color: var(--text-tertiary); align-items: baseline; }
.fx-stats .t-num { color: var(--text-secondary); font-weight: 600; }
.fx-advice { margin-top: 12px; padding: 10px 12px; border-radius: var(--radius-lg, 12px); background: var(--surface-sunken); display: flex; flex-direction: column; gap: 3px; border-left: 3px solid var(--accent-brass); }
.fx-advice--low { border-left-color: var(--value-positive, #3a8a5f); }
.fx-advice--high { border-left-color: var(--value-negative, #c1503b); }
.fx-advice__tag { font-size: var(--fs-caption); font-weight: 700; color: var(--accent-brass); }
.fx-advice__txt { font-size: var(--fs-label); color: var(--text-primary); line-height: 1.55; }
.fx-pl--up { color: var(--value-positive, #3a8a5f); }
.fx-pl--down { color: var(--value-negative, #c1503b); }

/* 理財工具:可點的工具卡 */
.tool-card { width: 100%; text-align: left; background: var(--surface-card); border: 1px solid var(--line); border-radius: var(--radius-lg, 12px); padding: 14px 16px; margin-top: 10px; cursor: pointer; display: flex; align-items: center; gap: 12px; font-family: inherit; }
.tool-card > i { font-size: 1.4rem; color: var(--accent-brass); flex: 0 0 auto; }
.tool-card__l { flex: 1 1 auto; display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.tool-card__name { font-size: var(--fs-label); font-weight: 600; color: var(--text-primary); }
.tool-card__desc { font-size: var(--fs-caption); color: var(--text-tertiary); }
.tool-card__chev { color: var(--text-tertiary); font-size: 1.1rem; flex: 0 0 auto; }

/* 標頭右側:設定 icon + 已同步 直排 */
.app-header__right { display: flex; flex-direction: column; align-items: flex-end; gap: 4px; }

/* 理財工具 hub:即將推出的工具卡 */
.tool-soon-list { margin-top: 12px; display: flex; flex-direction: column; gap: 8px; }
.tool-soon { display: flex; align-items: center; gap: 12px; padding: 14px; border-radius: var(--radius-lg, 12px); background: var(--surface-card); border: 1px solid var(--line); opacity: .68; }
.tool-soon > i { font-size: 1.3rem; color: var(--text-tertiary); }
.tool-soon__l { display: flex; flex-direction: column; gap: 2px; flex: 1 1 auto; min-width: 0; }
.tool-soon__name { font-size: var(--fs-label); color: var(--text-secondary); font-weight: 600; }
.tool-soon__desc { font-size: var(--fs-caption); color: var(--text-tertiary); }
.tool-soon__tag { font-size: 0.6875rem; color: var(--text-tertiary); border: 1px solid var(--line-strong); border-radius: 999px; padding: 2px 8px; white-space: nowrap; }

/* 淨值趨勢折線圖(總覽) */
.ov-trend__label { margin-top: 16px; color: var(--text-tertiary); display: block; }
.ov-trendchart { height: 150px; margin-top: 6px; position: relative; }

/* 退休工具:模式切換 + 模式說明 */
.fire-seg { display: flex; gap: 4px; background: rgba(127, 127, 127, .10); border-radius: 10px; padding: 4px; margin: 2px 0 12px; }
.fire-seg__btn { flex: 1 1 0; border: 0; background: transparent; padding: 8px 10px; border-radius: 8px; font-family: inherit; font-size: var(--fs-label); color: var(--text-tertiary); cursor: pointer; }
.fire-seg__btn.is-on { background: var(--surface-card); color: var(--text-primary); font-weight: 600; box-shadow: 0 1px 3px rgba(0, 0, 0, .15); }
.fire-desc { font-size: var(--fs-caption); color: var(--text-secondary); line-height: 1.6; margin-bottom: 14px; padding: 10px 12px; border-radius: 10px; background: rgba(127, 127, 127, .07); }
.fire-desc p { margin: 0 0 6px; }
.fire-desc p:last-child { margin-bottom: 0; }
.fire-desc b { color: var(--text-primary); font-weight: 600; }
.fire-reset { margin-top: 14px; width: 100%; display: inline-flex; align-items: center; justify-content: center; gap: 6px; background: transparent; border: 1px solid var(--line); border-radius: 10px; padding: 9px 12px; font-family: inherit; font-size: var(--fs-caption); color: var(--text-tertiary); cursor: pointer; }
.fire-reset:active { background: rgba(127, 127, 127, .08); }

/* 報稅:計算明細 */
.tax-break { margin: 14px 0 4px; border-top: 1px solid var(--line); padding-top: 12px; }
.tax-row { display: flex; justify-content: space-between; align-items: baseline; gap: 12px; font-size: var(--fs-caption); color: var(--text-secondary); padding: 3px 0; }
.tax-row > span:first-child { color: var(--text-tertiary); }
.tax-row--sum { font-size: var(--fs-label); font-weight: 600; color: var(--text-primary); border-top: 1px dashed var(--line); margin-top: 4px; padding-top: 7px; }
.tax-row--sum > span:first-child { color: var(--text-primary); }

/* 保障體檢:總覽 + 檢查清單 */
.prot-sum { display: flex; flex-direction: column; gap: 2px; margin-top: 4px; }
.prot-sum__row { display: flex; align-items: center; justify-content: space-between; gap: 12px; width: 100%; background: transparent; border: 0; border-radius: 8px; padding: 9px 10px; font-family: inherit; cursor: pointer; }
.prot-sum__row.is-on { background: rgba(127, 127, 127, .10); }
.prot-sum__name { font-size: var(--fs-label); color: var(--text-primary); }
.prot-sum__stat { font-size: var(--fs-caption); font-weight: 600; white-space: nowrap; }
.prot-stat--ok { color: var(--value-positive, #3a8a5f); }
.prot-stat--warn { color: var(--accent-brass); }
.prot-sum__note { font-size: var(--fs-caption); color: var(--text-tertiary); line-height: 1.55; margin: 12px 2px 0; }
.prot-sum__note b { color: var(--text-secondary); }
.prot-check { display: flex; flex-direction: column; gap: 8px; margin: 14px 0 4px; }
.prot-check__item { display: flex; align-items: flex-start; gap: 10px; text-align: left; width: 100%; background: rgba(127, 127, 127, .05); border: 1px solid var(--line); border-radius: 10px; padding: 12px; font-family: inherit; font-size: var(--fs-caption); color: var(--text-tertiary); line-height: 1.5; cursor: pointer; }
.prot-check__item.is-on { background: rgba(58, 138, 95, .10); border-color: var(--value-positive, #3a8a5f); color: var(--text-secondary); }
.prot-check__item > i { font-size: 1.3rem; flex: 0 0 auto; color: var(--text-tertiary); }
.prot-check__item.is-on > i { color: var(--value-positive, #3a8a5f); }
.prot-check__item b { color: var(--text-primary); }

/* 總覽:行動建議(自動健檢) */
.ov-adv__head { display: flex; align-items: baseline; justify-content: space-between; }
.ov-adv { display: flex; flex-direction: column; gap: 8px; margin-top: 4px; }
.ov-adv__item { display: flex; align-items: flex-start; gap: 10px; padding: 10px 12px; border-radius: 10px; background: rgba(127, 127, 127, .06); border-left: 3px solid var(--line-strong, #888); }
.ov-adv__item > i { font-size: 1.25rem; flex: 0 0 auto; margin-top: 1px; }
.ov-adv__txt { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.ov-adv__txt > b { font-size: var(--fs-label); color: var(--text-primary); font-weight: 600; }
.ov-adv__txt > span { font-size: var(--fs-caption); color: var(--text-secondary); line-height: 1.5; }
.adv--high { border-left-color: var(--value-negative, #c1503b); }
.adv--high > i { color: var(--value-negative, #c1503b); }
.adv--mid { border-left-color: var(--accent-brass, #cbac74); }
.adv--mid > i { color: var(--accent-brass, #cbac74); }
.adv--low { border-left-color: var(--text-tertiary, #9aa); }
.adv--low > i { color: var(--text-tertiary, #9aa); }
.adv--good { border-left-color: var(--value-positive, #3a8a5f); }
.adv--good > i { color: var(--value-positive, #3a8a5f); }
.ov-adv__note { font-size: var(--fs-caption); color: var(--text-tertiary); margin: 10px 2px 0; line-height: 1.5; }

/* ════════ 個股健檢 StockScreen ════════ */
.stk-search { display: flex; gap: 8px; align-items: stretch; }
.stk-search > :first-child { flex: 1; }
.stk-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 12px; }
.stk-name { font-size: 1.125rem; font-weight: 600; color: var(--text-primary); }
.stk-code { font-size: 0.8125rem; color: var(--text-tertiary); margin-left: 8px; }
.stk-fresh { font-size: 0.7188rem; color: var(--text-tertiary); text-align: right; line-height: 1.5; white-space: nowrap; }
.stk-score { display: flex; align-items: baseline; gap: 6px; margin-top: 14px; flex-wrap: wrap; }
.stk-score__num { font-size: 2rem; font-weight: 600; line-height: 1; }
.stk-score__of { font-size: 0.8125rem; color: var(--text-tertiary); }
.stk-score__verdict { font-size: 0.7813rem; color: var(--text-secondary); margin-left: 6px; display: inline-flex; align-items: center; gap: 6px; }
.stk-cats { display: flex; flex-direction: column; gap: 16px; }
.stk-cat__row { display: flex; align-items: center; gap: 10px; }
.stk-cat__label { font-size: 0.875rem; font-weight: 600; color: var(--text-primary); }
.stk-cat__sub { font-size: 0.7188rem; color: var(--text-tertiary); }
.stk-cat__pct { margin-left: auto; font-size: 0.8125rem; color: var(--text-secondary); }
.stk-cat__conflict { margin: 6px 0 0 21px; padding: 7px 10px; border-radius: var(--radius-sm); background: var(--value-caution-soft); font-size: 0.75rem; color: var(--text-secondary); line-height: 1.5; }
.stk-cat__note { margin: 5px 0 0 21px; font-size: 0.7188rem; color: var(--text-tertiary); line-height: 1.5; }
.stk-items { margin: 8px 0 0 21px; display: flex; flex-direction: column; }
.stk-item { border-top: 1px solid var(--line-faint); }
.stk-item:first-child { border-top: 0; }
.stk-item__btn { width: 100%; display: flex; align-items: center; gap: 9px; background: none; border: 0; padding: 8px 0; cursor: pointer; text-align: left; font-size: 0.7813rem; }
.stk-item__name { color: var(--text-secondary); }
.stk-item__val { margin-left: auto; color: var(--text-tertiary); }
.stk-item__btn > .ph { color: var(--text-tertiary); font-size: 0.875rem; }
.stk-item__desc { font-size: 0.7813rem; color: var(--text-secondary); line-height: 1.65; padding: 2px 0 10px 20px; }
.stk-disclaim { background: var(--surface-sunken); }
.stk-disclaim .t-overline { display: inline-flex; align-items: center; gap: 5px; }
.stk-note { font-size: 0.7188rem; color: var(--text-tertiary); line-height: 1.6; margin: 8px 0 0; }
.stk-note:first-of-type { margin-top: 4px; }
/* 個股回測「如果早幾年買?」 */
.stk-bt__head { width: 100%; display: flex; align-items: center; justify-content: space-between; background: none; border: 0; padding: 0; cursor: pointer; color: var(--text-primary); }
.stk-bt__head > .ph { color: var(--text-tertiary); }
.stk-bt { margin-top: 12px; }
.stk-bt__segs { display: flex; gap: 6px; margin-bottom: 8px; }
.stk-bt__seg { flex: 1; padding: 8px 4px; border: 1px solid var(--line-strong); border-radius: 8px; background: var(--surface-card); color: var(--text-secondary); font-size: 0.7188rem; font-weight: 600; cursor: pointer; }
.stk-bt__seg.is-on { background: var(--accent-brass); border-color: var(--accent-brass); color: #fff; }
.stk-bt__in { display: flex; align-items: center; gap: 8px; border: 1px solid var(--line-strong); border-radius: 9px; background: var(--surface-card); padding: 0 12px; margin-bottom: 4px; }
.stk-bt__sym { font-size: 0.85rem; font-weight: 700; color: var(--text-tertiary); }
.stk-bt__in input { flex: 1; border: 0; background: none; color: var(--text-primary); font-size: 1rem; font-weight: 600; padding: 10px 0; outline: none; min-width: 0; }
.stk-bt__inhint { font-size: 0.7rem; color: var(--text-tertiary); flex-shrink: 0; }
.stk-bt__rows { margin-top: 4px; }
.stk-bt__val { margin-top: 10px; padding: 9px 11px; background: var(--surface-sunken); border-radius: 9px; }
.stk-bt__valh { font-size: 0.72rem; font-weight: 700; color: var(--text-secondary); margin-bottom: 5px; display: flex; gap: 5px; align-items: center; }
.stk-bt__valh > .ph { color: var(--accent-brass); }
.stk-bt__caveat { font-size: 0.6875rem; line-height: 1.5; color: var(--text-tertiary); margin: 4px 0 8px; }
.stk-bt__cap { font-size: 0.6875rem; line-height: 1.5; color: var(--text-tertiary); margin: 6px 0 0; }
.stk-bt__seg:disabled { opacity: 0.4; cursor: not-allowed; }

/* ════════ 流派觀察名單 WatchlistScreen ════════ */
.wl-style__head { display: flex; align-items: center; gap: 9px; }
.wl-style__head > .ph { font-size: 1.25rem; color: var(--accent-brass); }
.wl-style__label { font-size: 1rem; font-weight: 600; color: var(--text-primary); }
.wl-style__sub { font-size: 0.75rem; color: var(--text-tertiary); }
.wl-style__blurb { font-size: 0.7813rem; color: var(--text-secondary); line-height: 1.6; margin: 8px 0 12px; }
.wl-picks { display: flex; flex-direction: column; }
.wl-pick { display: flex; flex-direction: column; width: 100%; border-top: 1px solid var(--line-faint); }
.wl-pick:first-child { border-top: 0; }
.wl-pick__row { display: flex; align-items: center; width: 100%; }
.wl-pick__main { display: flex; align-items: center; gap: 10px; flex: 1; min-width: 0; background: none; border: 0; padding: 11px 0; cursor: pointer; text-align: left; }
.wl-pick__star { flex-shrink: 0; background: none; border: 0; padding: 8px 2px 8px 9px; margin-left: 4px; cursor: pointer; color: var(--text-tertiary); font-size: 1.0625rem; line-height: 1; align-self: center; }
.wl-pick__star .ph { display: block; }
.wl-pick__star.is-on { color: var(--accent-brass); }
/* 流派名單:每檔迷你回測預覽(點開即時抓 10 年、比大盤;教材、非投資建議)*/
.wl-mini { padding: 0 0 8px; margin-top: -2px; }
.wl-mini__toggle { display: inline-flex; align-items: center; gap: 5px; background: none; border: 0; padding: 2px 0 6px; cursor: pointer; color: var(--accent-brass); font-size: 0.6875rem; font-weight: 600; }
.wl-mini__body { background: var(--surface-sunken); border-radius: 8px; padding: 8px 10px; margin-bottom: 4px; }
.wl-mini__msg { font-size: 0.7188rem; color: var(--text-tertiary); }
.wl-mini__segs { display: flex; gap: 6px; margin-bottom: 7px; }
.wl-mini__seg { font-size: 0.6875rem; padding: 2px 10px; border-radius: 14px; border: 1px solid var(--line); background: none; color: var(--text-secondary); cursor: pointer; }
.wl-mini__seg.is-on { background: var(--accent-brass); color: #fff; border-color: var(--accent-brass); }
.wl-mini__seg:disabled { opacity: .4; cursor: default; }
.wl-mini__stat { display: flex; justify-content: space-between; align-items: baseline; font-size: 0.75rem; color: var(--text-secondary); padding: 1px 0; }
.wl-mini__stat--bench { color: var(--text-tertiary); font-size: 0.7188rem; }
.wl-mini__note { font-size: 0.6563rem; line-height: 1.55; color: var(--text-tertiary); margin: 6px 0 0; }
.wl-pick__l { display: flex; flex-direction: column; gap: 3px; flex: 1; min-width: 0; }
.wl-pick__name { font-size: 0.875rem; font-weight: 500; color: var(--text-primary); display: flex; align-items: center; gap: 7px; flex-wrap: wrap; }
.wl-pick__code { font-size: 0.75rem; color: var(--text-tertiary); font-weight: 400; }
.wl-pick__warn { font-size: 0.6563rem; color: var(--value-negative); border: 1px solid var(--value-negative); border-radius: 4px; padding: 0 5px; opacity: .82; }
.wl-pick__why { font-size: 0.75rem; color: var(--text-secondary); }
.wl-pick__chev { color: var(--text-tertiary); font-size: 0.9375rem; flex-shrink: 0; }
.wl-empty { font-size: 0.7813rem; color: var(--text-tertiary); padding: 6px 0; }
.wl-excl { display: flex; flex-wrap: wrap; gap: 7px; margin-top: 10px; }
.wl-excl__row { display: inline-flex; align-items: center; gap: 8px; background: var(--surface-card); border: 1px solid var(--line-faint); border-radius: 999px; padding: 5px 11px; cursor: pointer; }
.wl-excl__name { font-size: 0.75rem; color: var(--text-secondary); }
.wl-excl__reason { font-size: 0.6875rem; color: var(--text-tertiary); }

/* ════════ 爆雷/警示股紅色警語(個股健檢)════════ */
.stk-flagcard { background: #8a2e26; border: 0; }
.stk-flag { display: flex; gap: 11px; align-items: flex-start; }
.stk-flag > .ph { font-size: 1.5rem; color: #fff; flex-shrink: 0; margin-top: 1px; }
.stk-flag__txt { display: flex; flex-direction: column; gap: 4px; }
.stk-flag__txt b { font-size: 0.9063rem; color: #fff; }
.stk-flag__txt span { font-size: 0.75rem; color: #fdeae8; line-height: 1.55; }
.stk-flag__cav { color: #f3cfca !important; font-size: 0.6875rem !important; }

/* ════════ 我的觀察清單 WatchScreen + 加入觀察按鈕 ════════ */
.stk-watch { display: inline-flex; align-items: center; gap: 7px; margin-top: 14px; padding: 9px 15px; border-radius: 999px; border: 1px solid var(--line-strong); background: var(--surface-sunken); color: var(--text-secondary); font-size: 0.8125rem; cursor: pointer; }
.stk-watch > .ph { font-size: 1rem; }
.stk-watch--on { border-color: var(--accent-brass); color: var(--accent-brass); }
.wt-list { display: flex; flex-direction: column; }
.wt-row { display: flex; flex-direction: column; border-top: 1px solid var(--line-faint); }
.wt-row:first-child { border-top: 0; }
.wt-row__top { display: flex; align-items: stretch; }
.wt-row__main { flex: 1; min-width: 0; display: flex; align-items: center; gap: 11px; background: none; border: 0; padding: 12px 0; cursor: pointer; text-align: left; }
.wt-row__l { display: flex; flex-direction: column; gap: 3px; flex: 1; min-width: 0; }
.wt-row__name { font-size: 0.875rem; font-weight: 500; color: var(--text-primary); display: flex; align-items: center; gap: 7px; flex-wrap: wrap; }
.wt-row__code { font-size: 0.75rem; color: var(--text-tertiary); font-weight: 400; }
.wt-row__flag { font-size: 0.6563rem; color: var(--value-negative); }
.wt-row__sub { font-size: 0.75rem; color: var(--text-secondary); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; max-width: 100%; }
.wt-row__score { font-size: 1.25rem; font-weight: 600; flex-shrink: 0; }
.wt-row__del { background: none; border: 0; color: var(--text-tertiary); padding: 0 2px 0 12px; cursor: pointer; font-size: 1rem; flex-shrink: 0; }
/* 目標買價 / 買區狀態(自己設的參考價、非買賣訊號)*/
.wt-tgt { padding: 0 0 9px; }
.wt-tgt__toggle { display: flex; align-items: center; gap: 6px; width: 100%; background: none; border: 0; padding: 2px 0 4px; cursor: pointer; color: var(--text-secondary); font-size: 0.7188rem; }
.wt-tgt__toggle > .ph:first-child { color: var(--accent-brass); }
.wt-tgt__unset { color: var(--text-tertiary); }
.wt-zone { font-weight: 600; }
.wt-zone--in { color: #3a9e72; }
.wt-zone--below { color: #3d7fd9; }
.wt-zone--above { color: var(--text-tertiary); }
.wt-tgt__edit { background: var(--surface-sunken); border-radius: 8px; padding: 9px 10px; margin: 2px 0; }
.wt-tgt__hint { font-size: 0.6563rem; line-height: 1.55; color: var(--text-tertiary); margin: 0 0 8px; }
.wt-tgt__inputs { display: flex; align-items: center; gap: 6px; }
.wt-tgt__sym { font-size: 0.75rem; color: var(--text-tertiary); flex-shrink: 0; }
.wt-tgt__tilde { color: var(--text-tertiary); flex-shrink: 0; }
.wt-tgt__inputs input { flex: 1; min-width: 0; font-size: 0.8125rem; padding: 6px 8px; border: 1px solid var(--line); border-radius: 7px; background: rgba(0,0,0,0.18); color: var(--text-primary); }
.wt-tgt__btns { display: flex; gap: 8px; margin-top: 8px; }
.wt-tgt__save { background: var(--accent-brass); color: #fff; border: 0; border-radius: 8px; padding: 6px 16px; font-size: 0.8125rem; font-weight: 600; cursor: pointer; }
.wt-tgt__clear { background: none; border: 1px solid var(--line); color: var(--text-secondary); border-radius: 8px; padding: 6px 14px; font-size: 0.8125rem; cursor: pointer; }
.wt-empty { text-align: center; padding: 18px 8px; display: flex; flex-direction: column; align-items: center; gap: 8px; }
.wt-empty > .ph { font-size: 2.125rem; color: var(--text-tertiary); }
.wt-empty p { font-size: 0.875rem; color: var(--text-primary); margin: 0; }
.wt-empty span { font-size: 0.7813rem; color: var(--text-tertiary); line-height: 1.6; }

/* ════════ 目前股價(名單/觀察清單)════════ */
.wl-pick__price { font-size: 0.875rem; font-weight: 600; color: var(--text-primary); flex-shrink: 0; margin-left: 6px; }
.wt-row__r { display: flex; flex-direction: column; align-items: flex-end; flex-shrink: 0; gap: 1px; }
.wt-row__price { font-size: 0.75rem; color: var(--text-secondary); }

/* ════════ 股價走勢圖 + 價格(個股健檢)════════ */
.stk-px-row { display: flex; align-items: baseline; gap: 10px; margin: 4px 0 10px; }
.stk-px { font-size: 1.875rem; font-weight: 700; line-height: 1; }
.stk-px-chg { font-size: 0.9375rem; font-weight: 600; }
.stk-chart { height: 150px; position: relative; }
.stk-px-note { font-size: 0.7188rem; color: var(--text-tertiary); line-height: 1.5; margin: 10px 0 0; }

/* ════════ 現金記錄 編輯/刪除(AddEdit 記一筆清單)════════ */
.cf-row--tap { width: 100%; background: none; border: 0; cursor: pointer; text-align: left; font: inherit; }
.cf-row__edit { color: var(--text-tertiary); font-size: 0.875rem; margin-left: 10px; flex-shrink: 0; }
.ct-edit { display: flex; flex-direction: column; gap: 8px; padding: 11px; border: 1px solid var(--accent-brass); border-radius: var(--radius-md, 10px); margin: 4px 0; background: var(--surface-sunken); }
.ct-edit__btns { display: flex; gap: 8px; }
.ct-edit__btns > * { flex: 1; }

/* 淨值趨勢提示小字 */
.ov-trend__hint { color: var(--text-tertiary); font-weight: 400; }

/* ════════ AI 財務教練 ChatScreen ════════ */
.chat-body { display: flex; flex-direction: column; gap: 12px; padding-bottom: 8px; }
.chat-intro { font-size: 0.75rem; color: var(--text-tertiary); line-height: 1.6; background: var(--surface-sunken); border-radius: var(--radius-md, 10px); padding: 10px 12px; margin: 0; }
.chat-starters { display: flex; flex-direction: column; gap: 8px; }
.chat-starter { text-align: left; background: var(--surface-card); border: 1px solid var(--line); border-radius: 999px; padding: 10px 14px; font-size: 0.8125rem; color: var(--text-secondary); cursor: pointer; }
.chat-msg { display: flex; gap: 8px; align-items: flex-start; }
.chat-msg--user { justify-content: flex-end; }
.chat-msg__icon { color: var(--accent-brass); font-size: 1.125rem; flex-shrink: 0; margin-top: 4px; }
.chat-bubble { max-width: 82%; padding: 10px 13px; border-radius: var(--radius-md, 12px); font-size: 0.8438rem; line-height: 1.65; white-space: pre-wrap; word-break: break-word; }
.chat-msg--user .chat-bubble { background: var(--accent-brass); color: #1a1a1a; border-bottom-right-radius: 4px; }
.chat-msg--assistant .chat-bubble { background: var(--surface-sunken); color: var(--text-primary); border-bottom-left-radius: 4px; }
.chat-bubble--think { color: var(--text-tertiary); }
.chat-inputbar { flex: 0 0 auto; display: flex; align-items: flex-end; gap: 8px; padding: 10px 14px calc(env(safe-area-inset-bottom) + 10px); border-top: 1px solid var(--line); background: var(--surface-card); }
.chat-input { flex: 1; resize: none; max-height: 120px; border: 1px solid var(--line-strong); border-radius: var(--radius-md, 10px); padding: 10px 12px; font-size: 0.875rem; font-family: inherit; background: var(--surface-sunken); color: var(--text-primary); }
.chat-deep { flex-shrink: 0; display: inline-flex; flex-direction: column; align-items: center; gap: 1px; background: none; border: 1px solid var(--line-strong); border-radius: var(--radius-md, 10px); padding: 6px 9px; font-size: 0.625rem; color: var(--text-tertiary); cursor: pointer; }
.chat-deep--on { border-color: var(--accent-brass); color: var(--accent-brass); }
.chat-deep > .ph { font-size: 1rem; }

/* ════════ 文件金庫 DocsScreen ════════ */
.doc-list { display: flex; flex-direction: column; }
.doc-row { display: flex; align-items: stretch; border-top: 1px solid var(--line-faint); }
.doc-row:first-child { border-top: 0; }
.doc-row__main { flex: 1; min-width: 0; display: flex; align-items: center; gap: 10px; background: none; border: 0; padding: 12px 0; cursor: pointer; text-align: left; }
.doc-row__l { display: flex; flex-direction: column; gap: 3px; flex: 1; min-width: 0; }
.doc-row__name { font-size: 0.875rem; font-weight: 500; color: var(--text-primary); display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.doc-row__type { font-size: 0.6875rem; color: var(--accent-brass); border: 1px solid var(--line-strong); border-radius: 4px; padding: 0 6px; }
.doc-row__sub { font-size: 0.75rem; color: var(--text-tertiary); }
.doc-row__edit { color: var(--text-tertiary); font-size: 0.9375rem; flex-shrink: 0; }
.doc-row__open { display: inline-flex; align-items: center; padding: 0 2px 0 12px; color: var(--accent-brass); font-size: 1.125rem; flex-shrink: 0; text-decoration: none; }

/* 文件金庫:上傳區 */
.doc-drop { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 6px; padding: 26px 16px; border: 1.5px dashed var(--line-strong); border-radius: var(--radius-lg, 12px); cursor: pointer; text-align: center; transition: border-color .15s, background .15s; }
.doc-drop:hover { border-color: var(--accent-brass); background: var(--surface-hover); }
.doc-drop > .ph { font-size: 1.875rem; color: var(--accent-brass); }
.doc-drop__t { font-size: 0.875rem; font-weight: 600; color: var(--text-primary); }
.doc-drop__s { font-size: 0.75rem; color: var(--text-tertiary); }
.doc-drop--busy { cursor: default; border-style: solid; background: var(--surface-sunken); }
.doc-drop--busy:hover { border-color: var(--line-strong); }
.doc-drop__spin { width: 24px; height: 24px; border: 2.5px solid var(--line-faint); border-top-color: var(--accent-brass); border-radius: 50%; animation: doc-spin .8s linear infinite; }
@keyframes doc-spin { to { transform: rotate(360deg); } }
.doc-manual { display: block; width: 100%; margin-top: 12px; background: none; border: 0; color: var(--text-tertiary); font-size: 0.8125rem; text-decoration: underline; cursor: pointer; }
.doc-manual:disabled { opacity: .5; cursor: default; }
.doc-verify { display: flex; align-items: center; gap: 5px; font-size: 0.7813rem; color: var(--accent-brass); margin: 0 0 10px; }

/* ════════ 保障規劃 ProtectionScreen ════════ */
.pl-disc { font-size: 0.7188rem; line-height: 1.6; color: var(--text-tertiary); background: var(--surface-sunken); border-radius: 10px; padding: 10px 12px; margin: 0 0 4px; }
.pl-note { font-size: 0.75rem; line-height: 1.6; color: var(--text-tertiary); margin: 8px 0 0; }
.pl-warn { font-size: 0.75rem; line-height: 1.6; color: var(--text-secondary); margin: 12px 0 0; display: flex; gap: 6px; background: var(--surface-sunken); border-radius: 8px; padding: 9px 11px; }
.pl-warn > .ph, .pl-ok > .ph { flex-shrink: 0; margin-top: 1px; }
.pl-warn > .ph { color: var(--accent-brass); }
.pl-big { display: flex; align-items: baseline; gap: 8px; margin: 4px 0 2px; }
.pl-big__num { font-size: 1.875rem; font-weight: 700; color: var(--text-primary); letter-spacing: -0.5px; }
.pl-big__unit { font-size: 0.75rem; color: var(--text-tertiary); }
.pl-sl { margin-top: 12px; }
.pl-sl__top { display: flex; justify-content: space-between; font-size: 0.7813rem; color: var(--text-secondary); margin-bottom: 4px; }
.pl-sl__top b { color: var(--text-primary); }
.pl-sl__range { width: 100%; accent-color: var(--accent-brass); }
.pl-row { display: flex; justify-content: space-between; align-items: center; font-size: 0.8438rem; color: var(--text-secondary); padding: 7px 0; border-bottom: 1px solid var(--line-faint); }
.pl-row b { color: var(--text-primary); font-size: 0.9375rem; }
.pl-row--gap { border-bottom: 0; }
.pl-row--gap b { color: var(--accent-brass); }
.pl-zero { color: #d04f4f !important; }
.pl-toggle { display: flex; align-items: center; gap: 8px; font-size: 0.8125rem; color: var(--text-secondary); margin: 12px 0 0; cursor: pointer; }
.pl-toggle input { width: 16px; height: 16px; accent-color: var(--accent-brass); flex-shrink: 0; }
.pl-ok { font-size: 0.7813rem; line-height: 1.6; color: var(--text-secondary); margin: 10px 0 0; display: flex; gap: 6px; }
.pl-ok > .ph { color: #3a9e72; }
.pl-foot { font-size: 0.7188rem; line-height: 1.6; color: var(--text-tertiary); margin: 4px 0 0; }

/* 保障規劃:扶養 stepper / 對比 */
.pl-deps { display: flex; flex-direction: column; gap: 2px; margin: 4px 0 8px; }
.pl-step { display: flex; justify-content: space-between; align-items: center; font-size: 0.8125rem; color: var(--text-secondary); padding: 5px 0; }
.pl-step__ctrl { display: flex; align-items: center; gap: 12px; }
.pl-step__ctrl button { width: 28px; height: 28px; border-radius: 7px; border: 1px solid var(--line-strong); background: var(--surface-card); color: var(--text-primary); font-size: 1rem; cursor: pointer; line-height: 1; }
.pl-step__ctrl button:disabled { opacity: .35; cursor: default; }
.pl-step__ctrl b { min-width: 16px; text-align: center; color: var(--text-primary); font-size: 0.9375rem; }
.pl-hint { font-size: 0.7188rem; line-height: 1.6; color: var(--text-tertiary); margin: 6px 0 0; }
.pl-comp { display: flex; gap: 8px; margin-top: 12px; }
.pl-comp__col { flex: 1; border-radius: 10px; padding: 10px 11px; display: flex; flex-direction: column; gap: 3px; }
.pl-comp__col--good { background: rgba(58,158,114,0.12); }
.pl-comp__col--bad { background: rgba(208,79,79,0.12); }
.pl-comp__h { font-size: 0.6875rem; font-weight: 600; opacity: 0.85; }
.pl-comp__col--good .pl-comp__h { color: #3a9e72; }
.pl-comp__col--bad .pl-comp__h { color: #d04f4f; }
.pl-comp__col b { font-size: 0.8438rem; color: var(--text-primary); }
.pl-comp__col > span:last-child { font-size: 0.6875rem; color: var(--text-tertiary); line-height: 1.5; }

/* 保障規劃:怎麼補缺口 · 市場上的選擇(類型層級教育) */
.pl-fill__area { border: 1px solid var(--line); border-radius: 10px; margin-top: 8px; overflow: hidden; background: var(--surface-card); }
.pl-fill__area--gap { border-color: rgba(217,138,61,0.45); }
.pl-fill__head { width: 100%; display: flex; align-items: center; gap: 8px; padding: 11px 12px; background: none; border: 0; cursor: pointer; text-align: left; color: var(--text-primary); }
.pl-fill__name { font-size: 0.875rem; font-weight: 600; flex-shrink: 0; }
.pl-fill__badge { margin-left: auto; font-size: 0.6875rem; color: var(--text-tertiary); white-space: nowrap; }
.pl-fill__badge--gap { color: var(--accent-brass); font-weight: 600; }
.pl-fill__head > .ph { color: var(--text-tertiary); flex-shrink: 0; font-size: 0.9rem; }
.pl-fill__body { padding: 2px 12px 12px; }
.pl-type { border-top: 1px solid var(--line); padding: 11px 0 2px; }
.pl-type:first-child { border-top: 0; }
.pl-type__name { font-size: 0.8125rem; font-weight: 700; color: var(--text-primary); margin-bottom: 4px; }
.pl-type__blurb { font-size: 0.75rem; line-height: 1.65; color: var(--text-secondary); margin: 0 0 6px; }
.pl-type__line { font-size: 0.7188rem; line-height: 1.6; color: var(--text-secondary); margin: 3px 0; }
.pl-type__line > b, .pl-type__cmp > b { color: var(--text-tertiary); font-weight: 600; margin-right: 6px; }
.pl-type__cmp { font-size: 0.7188rem; line-height: 1.6; color: var(--text-secondary); margin: 6px 0 0; background: var(--surface-sunken); border-radius: 7px; padding: 7px 9px; }
.pl-type__eg, .pl-type__bm { font-size: 0.7188rem; line-height: 1.65; color: var(--text-secondary); margin: 7px 0; padding: 8px 10px; border-radius: 8px; }
.pl-type__eg { background: rgba(61,127,217,0.10); }
.pl-type__bm { background: rgba(58,158,114,0.11); }
.pl-type__tag { display: flex; align-items: center; gap: 5px; font-size: 0.6563rem; font-weight: 700; margin-bottom: 3px; letter-spacing: 0.02em; }
.pl-type__eg .pl-type__tag { color: #3d7fd9; }
.pl-type__bm .pl-type__tag { color: #3a9e72; }
.pl-type__tag > .ph { font-size: 0.85rem; }
/* 保障規劃:看懂保單 checklist(條款紅旗)+ 查詢目錄分組 */
.pl-rp { list-style: none; margin: 10px 0 0; padding: 0; }
.pl-rp__item { padding: 10px 0; border-top: 1px solid var(--line); }
.pl-rp__item:first-child { border-top: 0; }
.pl-rp__q { display: flex; align-items: flex-start; gap: 7px; font-size: 0.8125rem; font-weight: 700; color: var(--text-primary); }
.pl-rp__n { flex-shrink: 0; width: 18px; height: 18px; border-radius: 50%; background: var(--accent-brass); color: #fff; font-size: 0.625rem; font-weight: 700; display: flex; align-items: center; justify-content: center; margin-top: 1px; }
.pl-rp__plain { font-size: 0.7188rem; line-height: 1.65; color: var(--text-secondary); margin: 5px 0 0 25px; }
.pl-rp__flag { font-size: 0.7188rem; line-height: 1.6; color: var(--text-secondary); margin: 5px 0 0 25px; padding: 6px 9px; background: rgba(208,79,79,0.10); border-radius: 7px; display: flex; gap: 5px; }
.pl-rp__flag > .ph { color: #d04f4f; flex-shrink: 0; margin-top: 1px; }
.pl-dir__g { margin-top: 12px; }
.pl-dir__t { font-size: 0.7188rem; font-weight: 700; color: var(--text-secondary); margin: 0 0 6px; }
.pl-docbtn { width: 100%; margin-top: 10px; padding: 11px; border: 1px solid var(--line-strong); border-radius: 9px; background: var(--surface-sunken); color: var(--text-primary); font-size: 0.78rem; font-weight: 600; cursor: pointer; display: flex; align-items: center; justify-content: center; gap: 7px; }
.pl-docbtn > .ph { color: var(--accent-brass); font-size: 1rem; }
.pl-docbtn:active { opacity: 0.7; }
/* 房地產:自住勾選 / 三路決策卡 / 升息紅字 */
.re-chk { display: flex; gap: 8px; align-items: flex-start; font-size: 0.75rem; line-height: 1.55; color: var(--text-secondary); margin: 4px 0 10px; cursor: pointer; }
.re-chk input { margin-top: 2px; flex-shrink: 0; width: 16px; height: 16px; accent-color: var(--accent-brass); }
.re-path { border: 1px solid var(--line); border-radius: 10px; padding: 10px 12px; margin-top: 8px; background: var(--surface-card); }
.re-path__h { font-size: 0.8125rem; font-weight: 700; color: var(--text-primary); display: flex; align-items: center; gap: 6px; }
.re-path__n { width: 19px; height: 19px; border-radius: 50%; background: var(--surface-sunken); color: var(--accent-brass); font-size: 0.7rem; font-weight: 700; display: flex; align-items: center; justify-content: center; flex-shrink: 0; }
.re-path__b { font-size: 0.7188rem; line-height: 1.65; color: var(--text-secondary); margin: 6px 0 0; }
.re-good { color: #3a9e72; font-weight: 700; margin-right: 2px; }
.re-bad { color: #d98a3d; font-weight: 700; margin: 0 2px 0 4px; }
.re-up { color: #d04f4f; font-size: 0.92em; font-weight: 600; }
.re-sync { display: flex; gap: 7px; align-items: flex-start; font-size: 0.7188rem; line-height: 1.6; color: var(--text-secondary); background: rgba(58,158,114,0.10); border: 1px solid rgba(58,158,114,0.25); border-radius: 9px; padding: 9px 11px; margin-bottom: 10px; }
.re-sync > .ph { color: #3a9e72; flex-shrink: 0; margin-top: 1px; font-size: 0.95rem; }
.pl-fill__tip { font-size: 0.7188rem; line-height: 1.6; color: var(--text-secondary); margin: 10px 0 2px; display: flex; gap: 6px; }
.pl-fill__tip > .ph { color: var(--accent-brass); flex-shrink: 0; margin-top: 1px; }
/* 保障重做:行動清單 / 小抄 / 稅務 / 完整試算 toggle */
.pl-act { border: 1px solid var(--line-faint); border-radius: 12px; padding: 10px 12px; margin-top: 8px; }
.pl-act--gap { border-color: rgba(208,79,79,0.4); background: rgba(208,79,79,0.05); }
.pl-act--partial { border-color: rgba(217,138,61,0.4); }
.pl-act__head { display: flex; align-items: center; gap: 9px; width: 100%; background: none; border: 0; padding: 0; cursor: pointer; text-align: left; }
.pl-act__pill { font-size: 0.6563rem; font-weight: 700; padding: 2px 8px; border-radius: 20px; flex-shrink: 0; }
.pl-act__pill--gap { background: rgba(208,79,79,0.16); color: #d04f4f; }
.pl-act__pill--partial { background: rgba(217,138,61,0.18); color: #d98a3d; }
.pl-act__pill--have { background: rgba(58,158,114,0.16); color: #3a9e72; }
.pl-act__pill--na { background: var(--surface-sunken); color: var(--text-tertiary); }
.pl-act__name { font-size: 0.9375rem; font-weight: 600; color: var(--text-primary); flex: 1; }
.pl-act__head > .ph { color: var(--text-tertiary); flex-shrink: 0; }
.pl-act__line { font-size: 0.75rem; line-height: 1.55; color: var(--text-secondary); margin: 6px 0 0; }
.pl-act__body { margin-top: 10px; padding-top: 10px; border-top: 1px dashed var(--line-faint); display: flex; flex-direction: column; gap: 8px; }
.pl-act__heads { font-size: 0.7188rem; line-height: 1.6; color: var(--text-secondary); background: rgba(217,138,61,0.1); border-radius: 8px; padding: 8px 10px; margin: 0; display: flex; gap: 6px; }
.pl-act__heads > .ph { color: var(--accent-brass); flex-shrink: 0; margin-top: 2px; }
.pl-act__row { font-size: 0.75rem; line-height: 1.6; color: var(--text-secondary); margin: 0; }
.pl-act__row b { display: block; color: var(--text-primary); font-size: 0.6875rem; margin-bottom: 1px; }
.pl-act__script { font-size: 0.75rem; line-height: 1.65; color: var(--text-primary); background: var(--surface-sunken); border-left: 3px solid var(--accent-brass); border-radius: 0 8px 8px 0; padding: 8px 10px; }
.pl-act__ask { font-size: 0.75rem; }
.pl-act__ask ul { margin: 4px 0 0; padding-left: 18px; color: var(--text-secondary); line-height: 1.6; }
.pl-act__ask li { margin-bottom: 2px; }
.pl-act__tag { display: inline-flex; align-items: center; gap: 5px; font-size: 0.6875rem; font-weight: 700; color: var(--accent-brass); margin-bottom: 3px; }
.pl-cheat { font-family: ui-monospace, "SF Mono", Menlo, monospace; font-size: 0.6875rem; line-height: 1.7; color: var(--text-primary); background: var(--surface-sunken); border-radius: 10px; padding: 12px; margin: 10px 0 0; white-space: pre-wrap; word-break: break-word; overflow-x: auto; }
.pl-copy { display: inline-flex; align-items: center; gap: 6px; margin-top: 10px; padding: 9px 16px; border: 0; border-radius: 10px; background: var(--accent-brass); color: #fff; font-size: 0.8125rem; font-weight: 600; cursor: pointer; }
.pl-tax { margin-top: 8px; }
.pl-tax__q { font-size: 0.8125rem; font-weight: 600; color: var(--text-primary); }
.pl-tax__a { font-size: 0.7188rem; line-height: 1.6; color: var(--text-secondary); margin: 2px 0 0; }
.pl-more { display: flex; align-items: center; justify-content: center; gap: 7px; width: 100%; margin: 4px 0; padding: 11px; border: 1px dashed var(--line); border-radius: 12px; background: none; color: var(--text-secondary); font-size: 0.8125rem; font-weight: 600; cursor: pointer; }
.pl-where { margin-top: 14px; border-top: 1px solid var(--line); padding-top: 12px; }
.pl-where__h { font-size: 0.75rem; font-weight: 600; color: var(--text-secondary); margin-bottom: 8px; display: flex; gap: 6px; align-items: center; }
.pl-where__h > .ph { color: var(--accent-brass); }
.pl-where__row { display: flex; flex-direction: column; gap: 2px; padding: 8px 10px; border-radius: 8px; background: var(--surface-sunken); margin-bottom: 6px; text-decoration: none; }
.pl-where__name { font-size: 0.78rem; font-weight: 600; color: var(--text-primary); display: flex; align-items: center; gap: 5px; }
.pl-where__name > .ph { font-size: 0.8rem; color: var(--text-tertiary); }
.pl-where__note { font-size: 0.6875rem; line-height: 1.5; color: var(--text-tertiary); }

/* 換匯:台銀買賣牌價 + 日圓換算 */
.fx-ba { margin-top: 14px; }
.fx-ba__hd { font-size: 0.6875rem; color: var(--text-tertiary); margin-bottom: 6px; font-weight: 600; }
.fx-ba__grid { display: grid; grid-template-columns: 1fr 1fr; gap: 6px; }
.fx-ba__cell { background: var(--surface-sunken); border-radius: 8px; padding: 7px 9px; display: flex; flex-direction: column; gap: 1px; }
.fx-ba__cell--ask { background: rgba(203,172,116,0.14); }
.fx-ba__lbl { font-size: 0.6875rem; color: var(--text-tertiary); }
.fx-ba__cell b { font-size: 0.9375rem; color: var(--text-primary); }
.fx-ba__hint { font-size: 0.625rem; color: var(--text-tertiary); }
.fx-ba__note { font-size: 0.6875rem; line-height: 1.55; color: var(--text-tertiary); margin: 8px 0 0; }
.fx-100yen { font-size: 0.7813rem; color: var(--text-secondary); margin: 3px 0 0; }
/* 換匯計算機 + 價差透明 */
.fx-calc { margin-top: 14px; padding: 12px; border: 1px solid var(--line); border-radius: 11px; background: var(--surface-sunken); }
.fx-calc__h { font-size: 0.78rem; font-weight: 700; color: var(--text-primary); display: flex; align-items: center; gap: 6px; margin-bottom: 9px; }
.fx-calc__h > .ph { color: var(--accent-brass); }
.fx-calc__seg { display: flex; gap: 6px; }
.fx-calc__seg--sm { margin-top: 8px; }
.fx-calc__btn { flex: 1; padding: 8px 6px; border: 1px solid var(--line-strong); border-radius: 8px; background: var(--surface-card); color: var(--text-secondary); font-size: 0.75rem; font-weight: 600; cursor: pointer; }
.fx-calc__btn.is-on { background: var(--accent-brass); border-color: var(--accent-brass); color: #fff; }
.fx-calc__in { display: flex; align-items: center; gap: 8px; border: 1px solid var(--line-strong); border-radius: 9px; background: var(--surface-card); padding: 0 12px; margin-top: 8px; }
.fx-calc__sym { font-size: 0.85rem; font-weight: 700; color: var(--text-tertiary); flex-shrink: 0; }
.fx-calc__amt { flex: 1; border: 0; background: none; color: var(--text-primary); font-size: 1.05rem; font-weight: 600; padding: 11px 0; outline: none; min-width: 0; }
.fx-calc__out { margin-top: 10px; }
.fx-calc__res { display: flex; justify-content: space-between; align-items: baseline; }
.fx-calc__res > span { font-size: 0.78rem; color: var(--text-secondary); }
.fx-calc__res > b { font-size: 1.15rem; color: var(--text-primary); }
.fx-calc__line { font-size: 0.7188rem; color: var(--text-tertiary); margin-top: 5px; }
.fx-calc__line b { color: var(--text-secondary); }
.fx-calc__cost { font-size: 0.7188rem; line-height: 1.5; color: var(--text-secondary); margin-top: 7px; padding: 7px 9px; background: rgba(208,79,79,0.10); border-radius: 7px; display: flex; gap: 5px; align-items: baseline; }
.fx-calc__cost > .ph { color: #d04f4f; flex-shrink: 0; }
.fx-calc__cost b { color: var(--text-primary); }
.fx-calc__tip { font-size: 0.7188rem; line-height: 1.6; color: var(--text-tertiary); margin: 10px 0 0; }

/* 個股健檢:技術面總結 + 指標細節 */
.stk-tech-sum { display: flex; gap: 6px; font-size: 0.7813rem; line-height: 1.6; color: var(--text-secondary); margin: 0 0 10px; padding: 9px 11px; background: var(--surface-sunken); border-radius: 8px; }
.stk-tech-sum > .ph { color: var(--accent-brass); flex-shrink: 0; margin-top: 2px; }
.stk-tech-detail { font-size: 0.7188rem; color: var(--text-tertiary); padding: 0 0 8px 26px; margin-top: -3px; letter-spacing: .2px; }

/* 個股健檢:資料比對(跨來源)*/
.cc-ok { display: flex; gap: 6px; font-size: 0.7813rem; line-height: 1.6; color: var(--text-secondary); margin: 0; }
.cc-ok > .ph { color: #3a9e72; flex-shrink: 0; margin-top: 2px; }
.cc-warn { display: flex; gap: 6px; font-size: 0.7813rem; color: var(--value-negative); margin: 0 0 6px; }
.cc-warn > .ph { flex-shrink: 0; margin-top: 2px; }
.cc-row { font-size: 0.8125rem; color: var(--text-secondary); padding: 3px 0 3px 20px; }
.cc-row b { color: var(--text-primary); }
.cc-note { font-size: 0.6875rem; color: var(--text-tertiary); line-height: 1.5; margin: 8px 0 0; }

/* ── 個股健檢:公司業務 / 同業比較 / 本夢比 / 新聞 / AI 客觀分析 ── */
.stk-biz { font-size: 0.8125rem; color: var(--text-primary); line-height: 1.7; margin: 0; }
.stk-biz__rev { font-size: 0.75rem; color: var(--text-secondary); line-height: 1.6; margin: 8px 0 0; }
.stk-biz__rev b { color: var(--text-tertiary); font-weight: 600; }

.stk-peer { display: flex; flex-direction: column; gap: 2px; }
.stk-peer__row { display: grid; grid-template-columns: 4.5em auto auto 1fr; align-items: baseline; gap: 8px; padding: 7px 0; border-top: 1px solid var(--line-faint); }
.stk-peer__row:first-child { border-top: 0; }
.stk-peer__label { font-size: 0.7813rem; color: var(--text-secondary); }
.stk-peer__mine { font-size: 0.875rem; font-weight: 700; color: var(--text-primary); }
.stk-peer__med { font-size: 0.75rem; color: var(--text-tertiary); }
.stk-peer__read { text-align: right; font-size: 0.7188rem; color: var(--accent-brass); }
/* 重檢:四面向白話結論 / 同業綜合 / 美股52週位階 / 流派圖例+分數 */
.stk-cat__verdict { font-size: 0.7188rem; color: var(--text-secondary); margin: 1px 0 0 19px; font-weight: 600; }
.stk-peer__synth { font-size: 0.75rem; line-height: 1.55; color: var(--text-primary); font-weight: 600; background: var(--surface-sunken); border-radius: 8px; padding: 8px 10px; margin-bottom: 10px; }
.stk-px-pos { font-size: 0.7188rem; line-height: 1.55; color: var(--text-secondary); margin: 8px 0 0; }
.stk-px-pos b { color: var(--text-primary); }
.stk-px-pos__sub { font-size: 0.6563rem; color: var(--text-tertiary); margin-top: 2px; line-height: 1.5; }
.wl-legend { font-size: 0.6875rem; line-height: 1.7; color: var(--text-tertiary); margin: 8px 0 0; }
.wl-legend b { color: var(--text-secondary); }
.wl-legend__i { display: inline-flex; align-items: center; gap: 3px; margin: 0 7px 0 2px; white-space: nowrap; }
.wl-pick__score { font-size: 0.6563rem; font-weight: 700; padding: 1px 6px; border-radius: 7px; margin-left: 6px; background: var(--surface-sunken); color: var(--text-secondary); }
.wl-pick__score--green { background: rgba(58,158,114,0.18); color: #3a9e72; }
.wl-pick__score--yellow { background: rgba(217,138,61,0.18); color: #d98a3d; }
.wl-pick__score--red { background: rgba(208,79,79,0.16); color: #d04f4f; }
/* 重檢尾巴:健檢機械收尾/位階尺/技術分工 + 流派 why 註記/今日漲跌/稀少/用法 */
.stk-howto { font-size: 0.75rem; line-height: 1.6; color: var(--text-secondary); margin: 8px 0 0; background: var(--surface-sunken); border-radius: 8px; padding: 8px 10px; }
.stk-howto b { color: var(--text-primary); }
.stk-ladder { font-size: 0.6875rem; line-height: 1.5; color: var(--accent-brass); margin-bottom: 5px; font-weight: 600; }
.stk-tech-split { font-size: 0.7188rem; line-height: 1.55; color: var(--text-secondary); margin: 0 0 8px; }
.stk-tech-split b { color: var(--text-primary); }
.wl-howto { font-size: 0.6875rem; line-height: 1.6; color: var(--text-secondary); margin: 8px 0 0; }
.wl-howto b { color: var(--text-primary); }
.wl-pick__note { display: block; font-size: 0.6563rem; line-height: 1.5; color: var(--accent-brass); margin-top: 1px; }
.wl-pick__note--warn { color: var(--value-negative); }
.wl-pick__pricecol { display: flex; flex-direction: column; align-items: flex-end; gap: 1px; flex-shrink: 0; margin-left: 6px; }
.wl-pick__pricecol .wl-pick__price { margin-left: 0; }
.wl-pick__chg { font-size: 0.625rem; }
.wl-scarce { font-size: 0.6875rem; line-height: 1.55; color: var(--text-secondary); margin: 8px 0 0; padding: 6px 9px; background: var(--surface-sunken); border-radius: 8px; }
.stk-peers { display: flex; flex-wrap: wrap; align-items: center; gap: 7px; margin: 12px 0 2px; }
.stk-peers__lbl { font-size: 0.7188rem; color: var(--text-tertiary); }
.stk-peer-chip { padding: 6px 12px; border-radius: 999px; border: 1px solid var(--line-strong); background: var(--surface-sunken); color: var(--text-secondary); font-size: 0.7813rem; cursor: pointer; }
.stk-peer-chip:active { background: var(--surface-raised, #eee); }

.stk-dream { font-size: 0.7813rem; color: var(--text-secondary); line-height: 1.75; margin: 0; }
.stk-dream b { color: var(--text-primary); }

.stk-news { display: flex; flex-direction: column; }
.stk-news__item { display: flex; flex-direction: column; gap: 4px; padding: 11px 0; border-top: 1px solid var(--line-faint); text-decoration: none; }
.stk-news__item:first-child { border-top: 0; }
.stk-news__title { font-size: 0.8125rem; color: var(--text-primary); line-height: 1.5; }
.stk-news__meta { display: flex; align-items: center; gap: 6px; font-size: 0.6875rem; color: var(--text-tertiary); }
.stk-news__meta > .ph { font-size: 0.75rem; }

.stk-ai__trigger { width: 100%; display: flex; align-items: center; gap: 12px; padding: 14px; border-radius: var(--radius-sm); border: 1px solid var(--accent-brass); background: var(--value-caution-soft); cursor: pointer; text-align: left; }
.stk-ai__trigger > .ph-sparkle { font-size: 1.375rem; color: var(--accent-brass); flex-shrink: 0; }
.stk-ai__trigger > .ph-caret-right { margin-left: auto; color: var(--text-tertiary); font-size: 1rem; flex-shrink: 0; }
.stk-ai__trigger-l { display: flex; flex-direction: column; gap: 3px; }
.stk-ai__trigger-l b { font-size: 0.875rem; color: var(--text-primary); }
.stk-ai__trigger-l span { font-size: 0.7188rem; color: var(--text-secondary); line-height: 1.5; }
.stk-ai__confirm { padding: 4px 0 2px; }
.stk-ai__warn { font-size: 0.7813rem; color: var(--text-secondary); line-height: 1.6; margin: 0 0 12px; }
.stk-ai__warn b { color: var(--value-negative); }
.stk-ai__btns { display: flex; gap: 10px; }
.stk-ai__go { display: inline-flex; align-items: center; gap: 6px; padding: 11px 20px; border-radius: 999px; border: 0; background: var(--accent-brass); color: #fff; font-size: 0.8438rem; font-weight: 600; cursor: pointer; }
.stk-ai__go > .ph { font-size: 0.9375rem; }
.stk-ai__cancel { padding: 11px 18px; border-radius: 999px; border: 1px solid var(--line-strong); background: none; color: var(--text-secondary); font-size: 0.8438rem; cursor: pointer; }
.stk-ai__body { display: flex; flex-direction: column; gap: 11px; }
.stk-ai__sec { font-size: 0.7813rem; color: var(--text-secondary); line-height: 1.7; margin: 0; }
.stk-ai__sec b { display: block; font-size: 0.75rem; color: var(--accent-brass); margin-bottom: 2px; letter-spacing: .3px; }
.stk-ai__foot { font-size: 0.6875rem; color: var(--text-tertiary); line-height: 1.5; margin: 2px 0 0; }
.stk-ai__bar { display: flex; align-items: center; justify-content: space-between; margin-top: 14px; padding-top: 11px; border-top: 1px solid var(--line-faint); }
.stk-ai__cost { font-size: 0.6875rem; color: var(--text-tertiary); }
.stk-ai__redo { padding: 6px 13px; border-radius: 999px; border: 1px solid var(--line-strong); background: none; color: var(--text-secondary); font-size: 0.75rem; cursor: pointer; }

/* 個股健檢:中文名稱查股 → 多筆選擇 */
.stk-choose { display: flex; flex-direction: column; }
.stk-choose__row { display: flex; align-items: center; gap: 10px; width: 100%; padding: 12px 0; border: 0; border-top: 1px solid var(--line-faint); background: none; cursor: pointer; text-align: left; }
.stk-choose__row:first-child { border-top: 0; }
.stk-choose__name { font-size: 0.875rem; color: var(--text-primary); }
.stk-choose__code { color: var(--text-tertiary); font-size: 0.7813rem; }
.stk-choose__row > .ph { margin-left: auto; color: var(--text-tertiary); font-size: 0.9375rem; }

/* 現金流:分類分組 + 甜甜圈圖 */
.cf-chart { margin: 12px 0 4px; }
.cf-grp-wrap { margin-top: 2px; }
.cf-grp-wrap:first-child { margin-top: 0; }
.cf-grp { display: flex; align-items: center; gap: 8px; padding: 12px 0; width: 100%; background: none; border: 0; border-top: 1px solid var(--line-faint); cursor: pointer; text-align: left; }
.cf-grp-wrap:first-child .cf-grp { border-top: 0; }
.cf-grp__caret { color: var(--text-tertiary); font-size: 0.8125rem; flex-shrink: 0; }
.cf-grp--open .cf-grp__caret { color: var(--accent-brass); }
.cf-grp__dot { width: 9px; height: 9px; border-radius: 50%; flex-shrink: 0; }
.cf-grp__name { font-size: 0.8438rem; font-weight: 600; color: var(--text-primary); display: inline-flex; align-items: center; gap: 6px; }
.cf-grp__n { font-size: 0.6875rem; color: var(--text-tertiary); }
.cf-grp__sum { margin-left: auto; font-size: 0.8125rem; font-weight: 600; }
.cf-row--grp { padding-left: 19px; }
.cf-grp-wrap .cf-row--grp:last-child { padding-bottom: 4px; }
.cf-cats { display: flex; flex-wrap: wrap; gap: 7px; margin-bottom: 4px; }
.cf-cat-chip { padding: 6px 12px; border-radius: 999px; border: 1px solid var(--line-strong); background: var(--surface-sunken); color: var(--text-secondary); font-size: 0.7813rem; cursor: pointer; }
.cf-cat-chip--on { border-color: var(--accent-brass); background: var(--value-caution-soft); color: var(--text-primary); font-weight: 600; }

/* 現金流:分類管理面板 */
.cf-managelink { display: inline-flex; align-items: center; gap: 6px; margin: 2px 0 0; padding: 6px 12px; border-radius: 999px; border: 1px solid var(--line-strong); background: none; color: var(--text-secondary); font-size: 0.75rem; cursor: pointer; }
.cf-managelink--on { border-color: var(--accent-brass); color: var(--accent-brass); }
.cf-managelink > .ph { font-size: 0.875rem; }
.cf-catmgr { margin-top: 10px; }
.cf-catmgr__row { display: flex; align-items: center; gap: 8px; padding: 6px 0; }
.cf-catmgr__inp { flex: 1; min-width: 0; padding: 9px 12px; border-radius: var(--radius-sm); border: 1px solid var(--line-strong); background: var(--surface-sunken); color: var(--text-primary); font-size: 0.875rem; font-family: inherit; }
.cf-catmgr__inp:focus { outline: none; border-color: var(--accent-brass); }
.cf-catmgr__del { display: inline-flex; align-items: center; gap: 4px; padding: 9px 12px; border-radius: var(--radius-sm); border: 1px solid var(--line-faint); background: none; color: var(--value-negative); font-size: 0.8125rem; cursor: pointer; flex-shrink: 0; }
.cf-catmgr__used { font-size: 0.6875rem; color: var(--text-tertiary); }
.cf-catmgr__addbtn { display: inline-flex; align-items: center; gap: 5px; padding: 9px 14px; border-radius: var(--radius-sm); border: 0; background: var(--accent-brass); color: #fff; font-size: 0.8125rem; cursor: pointer; flex-shrink: 0; }
.cf-catmgr__addbtn:disabled { opacity: .5; cursor: default; }
.cf-catmgr__note { font-size: 0.6875rem; color: var(--text-tertiary); line-height: 1.6; margin: 8px 0 2px; }

/* AI 財務教練:清除紀錄按鈕(頂 bar 右側) */
.chat-clear { justify-self: end; display: inline-flex; align-items: center; gap: 4px; background: none; border: 0; cursor: pointer; padding: 8px; color: var(--text-tertiary); font-family: var(--font-sans); font-size: var(--fs-label, 13px); border-radius: var(--radius-sm); }
.chat-clear:hover { color: var(--value-negative); }
.chat-clear > .ph { font-size: 1rem; }

/* 技術面入門:風險管理區塊強調(紅框紅標,內容維持正常可讀) */
.tech-card--danger { border-color: var(--value-negative); }
.tech-head--danger { color: var(--value-negative); }
.tech-head--danger > .ph { color: var(--value-negative); }

/* 技術面流派(誰用哪些指標)*/
.tech-schools__intro { font-size: 0.7813rem; color: var(--text-secondary); line-height: 1.7; margin: 0 0 10px; }
.tech-eg { font-size: 0.7188rem; line-height: 1.65; color: var(--text-primary); border-left: 3px solid var(--accent-brass); padding: 3px 0 3px 9px; margin: 2px 0 9px; }
.tech-eg b { color: var(--accent-brass); }
.tech-schools { display: flex; flex-direction: column; }
.tech-school { border-top: 1px solid var(--line-faint); }
.tech-school:first-child { border-top: 0; }
.tech-school__btn { width: 100%; background: none; border: 0; cursor: pointer; text-align: left; padding: 12px 0; display: flex; flex-direction: column; gap: 6px; }
.tech-school__head { display: flex; align-items: center; gap: 8px; }
.tech-school__name { font-size: 0.875rem; font-weight: 600; color: var(--text-primary); flex: 1; }
.tech-school__head > .ph { color: var(--text-tertiary); font-size: 0.9375rem; flex-shrink: 0; }
.tech-school__logic { font-size: 0.75rem; color: var(--text-secondary); line-height: 1.6; }
.tech-school__tags { display: flex; flex-wrap: wrap; gap: 5px; }
.tech-tag { font-size: 0.6563rem; color: var(--accent-brass); background: var(--value-caution-soft); border-radius: 6px; padding: 2px 7px; }
.tech-school__detail { padding: 0 0 12px; display: flex; flex-direction: column; gap: 9px; }
.tech-row { font-size: 0.75rem; color: var(--text-secondary); line-height: 1.65; }
.tech-row > b { display: block; font-size: 0.6875rem; color: var(--text-tertiary); margin-bottom: 2px; letter-spacing: .3px; }
.tech-row--risk > b { color: var(--value-negative); }
.tech-row--note > b { color: var(--accent-brass); }
.tech-inds { margin: 0; padding-left: 16px; display: flex; flex-direction: column; gap: 4px; }
.tech-inds li { font-size: 0.75rem; line-height: 1.6; color: var(--text-secondary); }
.tech-schools__risk { font-size: 0.7188rem; color: var(--text-tertiary); line-height: 1.7; margin: 12px 0 0; padding-top: 12px; border-top: 1px solid var(--line-faint); }

/* 桌面整體字體稍微放大(行動版維持)。全 App 字級皆為 rem,只要調 root 就一起等比放大。 */
html { font-size: 16px; }
@media (min-width: 760px) { html { font-size: 17.5px; } }

/* 美股健檢:產業/市值小晶片 */
.stk-uschips { display: flex; flex-wrap: wrap; gap: 0.5rem; margin-top: 0.625rem; }
.stk-uschip { display: inline-flex; align-items: center; gap: 0.3rem; font-size: 0.8125rem; color: var(--text-secondary); background: var(--surface-sunken, rgba(0,0,0,.04)); border: 1px solid var(--line-faint, rgba(0,0,0,.08)); border-radius: 999px; padding: 0.2rem 0.6rem; }
.stk-uschip i { font-size: 0.9rem; opacity: .82; }

/* 美股流派觀察:燒錢成長(高風險)區塊 + 美股 pick 列(無即時價格欄)+ 產業小晶片 */
.wl-style--danger { border: 1px solid color-mix(in srgb, var(--value-negative) 45%, transparent); }
.wl-style--danger .wl-style__label { color: var(--value-negative); }
.wl-pick--us { align-items: center; }
.wl-uschip { display: inline-block; margin-left: 0.5rem; font-size: 0.6875rem; color: var(--text-secondary); background: var(--surface-sunken, rgba(0,0,0,.05)); border: 1px solid var(--line-faint, rgba(0,0,0,.06)); border-radius: 999px; padding: 0.05rem 0.45rem; vertical-align: middle; }

/* 公司側寫卡(這家公司是什麼來頭):標籤 + 成立/風格/護城河 */
.stk-prof__tags { display: flex; flex-wrap: wrap; gap: 0.4rem; margin-bottom: 0.6rem; }
.stk-prof__tag { font-size: 0.75rem; color: var(--accent-brass, #9a7b3f); background: color-mix(in srgb, var(--accent-brass, #9a7b3f) 12%, transparent); border: 1px solid color-mix(in srgb, var(--accent-brass, #9a7b3f) 32%, transparent); border-radius: 999px; padding: 0.12rem 0.55rem; }
.stk-prof__line { font-size: 0.9375rem; color: var(--text-secondary); margin: 0.4rem 0 0; line-height: 1.55; }
.stk-prof__line > i { color: var(--text-tertiary); margin-right: 0.15rem; }
.stk-prof__line b { color: var(--text-primary); margin-right: 0.4rem; font-weight: 600; }
.stk-prof__edge { background: var(--surface-sunken, rgba(0,0,0,.035)); border-radius: 0.5rem; padding: 0.5rem 0.65rem; margin-top: 0.5rem; }
.stk-prof__edge > i { color: var(--value-positive); }

/* 貸款自動扣款設定 */
.ae-debit { margin-top: 0.7rem; padding-top: 0.75rem; border-top: 1px dashed var(--line); }
.ae-debit__sel { width: 100%; padding: 0.7rem 0.85rem; background: var(--surface-card); color: var(--text-primary);
  border: 1px solid var(--line); border-radius: var(--radius-md); font-family: inherit; font-size: 15px; -webkit-appearance: none; appearance: none; }
.ae-debit__none { color: var(--text-secondary); font-size: 13px; line-height: 1.55; }
.ae-debit__on { color: var(--accent-brass); }

/* 核心衛星:手動改分類 */
.cs-row__r { display: inline-flex; align-items: center; gap: 0.5rem; white-space: nowrap; }
.cs-flip { flex: none; font-size: 12px; padding: 3px 9px; border-radius: 999px; border: 1px solid var(--line); background: var(--surface-card); color: var(--text-secondary); cursor: pointer; }
.cs-flip:active { background: var(--surface-hover); color: var(--text-primary); }
.cs-tag { margin-left: 0.35rem; font-size: 11px; padding: 1px 6px; border-radius: 999px; background: var(--surface-hover); color: var(--text-tertiary); }
.cs-reset { display: inline-flex; align-items: center; gap: 0.3rem; margin: 0.1rem 0 0.6rem; font-size: 13px; background: none; border: none; color: var(--accent-brass); cursor: pointer; }

/* 黃金卡 sparkline */
.gold-spark { width: 100%; height: 56px; display: block; margin: 0.5rem 0 0.3rem; }

/* 首次引導 banner(總覽,未設生日時) */
.ov-welcome { position: relative; background: var(--surface-card); border: 1px solid var(--accent-brass); border-radius: var(--radius-lg, 14px); padding: 0.85rem 1rem; margin-bottom: 0.9rem; }
.ov-welcome__t { font-weight: 600; color: var(--text-primary); margin-bottom: 0.3rem; }
.ov-welcome__p { color: var(--text-secondary); font-size: 13px; line-height: 1.6; margin: 0; }
.ov-welcome__p i { color: var(--accent-brass); }
.ov-welcome__x { position: absolute; top: 0.4rem; right: 0.55rem; background: none; border: none; color: var(--text-tertiary); font-size: 20px; line-height: 1; cursor: pointer; padding: 2px 4px; }
