/* =========================================================
   賴氏家族基金 · 全站視覺重設計  enhance.css
   版本標記 v20260919c
   純覆蓋層：不改動任何 HTML / JS / DOM 結構與 class 名稱
   設計語言：深墨藍底 × 香檳金 × 卡片化 × App 式行動體驗
   ========================================================= */
:root{
  --lff-gold:#e2c488;--lff-gold-2:#c9a84c;--lff-gold-3:#f7ecd2;
  --lff-gold-soft:rgba(226,196,136,.12);--lff-gold-line:rgba(226,196,136,.28);
  --lff-bg:#0b1120;--lff-bg-2:#111c31;
  --lff-surface:rgba(255,255,255,.035);--lff-surface-2:rgba(255,255,255,.06);
  --lff-line:rgba(255,255,255,.085);--lff-line-2:rgba(255,255,255,.15);
  --lff-text:#e6ebf4;--lff-text-2:#a3aec2;--lff-text-3:#8694a8;
  /* 漲跌色：依台／陸股市慣例 —— 紅漲、綠跌 */
  --lff-up:#f4706b;--lff-down:#39b57f;
  --lff-up-soft:rgba(244,112,107,.13);--lff-down-soft:rgba(57,181,127,.13);
  --lff-r-sm:10px;--lff-r-md:14px;--lff-r-lg:18px;--lff-r-xl:22px;--lff-r-pill:999px;
  --lff-sh-1:0 1px 2px rgba(0,0,0,.30);
  --lff-sh-2:0 2px 4px rgba(0,0,0,.22),0 14px 30px -14px rgba(0,0,0,.55);
  --lff-sh-3:0 8px 20px rgba(0,0,0,.26),0 28px 60px -24px rgba(0,0,0,.62);
  --lff-safeb:env(safe-area-inset-bottom,0px);
  --lff-ease:cubic-bezier(.22,.61,.36,1);
  /* v2.6.0 追加：節奏與層級 */
  --lff-s1:4px;--lff-s2:8px;--lff-s3:12px;--lff-s4:16px;--lff-s5:24px;--lff-s6:32px;
  --lff-hd:60px;--lff-pw:1180px;
  --lff-t1:.14s var(--lff-ease);--lff-t2:.22s var(--lff-ease);
  --lff-hair:inset 0 0 0 1px rgba(255,255,255,.045);
  /* 每頁主題色（由下方 body:has() 依當前頁覆寫） */
  --pg:var(--lff-gold);--pg-soft:rgba(226,196,136,.13);--pg-line:rgba(226,196,136,.30);
}
*,*::before,*::after{box-sizing:border-box}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%;scroll-padding-top:calc(var(--lff-hd) + 12px);scrollbar-gutter:stable}
body{
  background-color:#0b1120!important;
  background-image:none!important;
  background-attachment:scroll!important;
  color:var(--lff-text)!important;
  font-family:-apple-system,BlinkMacSystemFont,"Segoe UI","Noto Sans TC","PingFang TC","Microsoft JhengHei",Roboto,sans-serif!important;
  -webkit-font-smoothing:antialiased;
  overflow-x:hidden;
}
/* 背景改成 position:fixed 的獨立圖層：只繪製一次，捲動時不再重繪整個 gradient（行動裝置大幅省電省 GPU） */
body::before{
  content:'';position:fixed;inset:0;z-index:-2;pointer-events:none;
  background-image:radial-gradient(1100px 560px at 84% -10%,rgba(226,196,136,.10),transparent 62%),radial-gradient(900px 520px at -6% 4%,rgba(96,165,250,.07),transparent 58%),linear-gradient(168deg,#0b1120 0%,#111c31 52%,#0a1020 100%);
}
::selection{background:rgba(226,196,136,.30);color:#fff}
*::-webkit-scrollbar{width:10px;height:10px}
*::-webkit-scrollbar-track{background:transparent}
*::-webkit-scrollbar-thumb{background:rgba(226,196,136,.20);border-radius:99px;border:2px solid transparent;background-clip:content-box}
*::-webkit-scrollbar-thumb:hover{background:rgba(226,196,136,.40);background-clip:content-box}
img,canvas,svg{max-width:100%}
a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:2px solid rgba(226,196,136,.55);outline-offset:2px}
.header{
  position:sticky!important;top:0;z-index:60;
  background:rgba(11,17,32,.80)!important;
  -webkit-backdrop-filter:saturate(160%) blur(14px);backdrop-filter:saturate(160%) blur(14px);
  border-bottom:1px solid var(--lff-line)!important;
  box-shadow:0 1px 0 rgba(255,255,255,.04),0 10px 30px -18px rgba(0,0,0,.9)!important;
  padding:.8rem 1.6rem!important;gap:.6rem!important;
}
.header .brand{gap:.7rem!important;min-width:0}
.header .brand .icon{
  font-size:1.3rem!important;line-height:1;width:38px;height:38px;
  display:inline-flex!important;align-items:center;justify-content:center;
  border-radius:12px;flex:0 0 auto;
  background:linear-gradient(150deg,rgba(226,196,136,.20),rgba(226,196,136,.05));
  border:1px solid var(--lff-gold-line);
}
.header .brand h1{
  font-size:1.05rem!important;font-weight:600!important;letter-spacing:.06em!important;
  background:linear-gradient(100deg,#e2c488,#f7ecd2 45%,#c9a84c)!important;
  -webkit-background-clip:text!important;background-clip:text!important;
  -webkit-text-fill-color:transparent!important;color:var(--lff-gold)!important;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
}
.header .user-info{gap:.55rem!important;margin-left:auto}
.role-badge{
  padding:5px 12px!important;border-radius:99px!important;font-size:.72rem!important;
  font-weight:600!important;letter-spacing:.04em;white-space:nowrap;
  background:rgba(226,196,136,.12)!important;color:var(--lff-gold)!important;
  border:1px solid var(--lff-gold-line)!important;
}
.role-admin{background:rgba(226,196,136,.14)!important;color:var(--lff-gold)!important;border-color:var(--lff-gold-line)!important}
.btn{
  border-radius:12px!important;border:1px solid var(--lff-line-2)!important;
  background:var(--lff-surface)!important;color:var(--lff-text-2)!important;
  font-size:.82rem!important;font-weight:500!important;padding:.5rem .95rem!important;
  min-height:36px;line-height:1.2;
  transition:transform .16s var(--lff-ease),background .18s,color .18s,border-color .18s,box-shadow .18s!important;
}
.btn:hover{background:var(--lff-surface-2)!important;color:#fff!important}
.btn:active{transform:scale(.97)}
.btn-primary{
  background:linear-gradient(135deg,#c9a84c,#e2c488)!important;
  color:#241a06!important;border:1px solid rgba(255,255,255,.18)!important;font-weight:600!important;
  box-shadow:0 6px 18px -8px rgba(226,196,136,.7)!important;
}
.btn-primary:hover{color:#241a06!important;box-shadow:0 10px 24px -10px rgba(226,196,136,.85)!important;filter:brightness(1.05)}
.btn-danger{border-color:rgba(248,113,113,.35)!important;color:#f87171!important;background:rgba(248,113,113,.06)!important}
.btn-danger:hover{background:rgba(248,113,113,.14)!important;color:#fca5a5!important}
.btn-sm{padding:.3rem .7rem!important;min-height:30px;font-size:.75rem!important;border-radius:9px!important}
.theme-toggle{
  width:38px!important;height:38px!important;border-radius:12px!important;
  border:1px solid var(--lff-line-2)!important;background:var(--lff-surface)!important;
  color:var(--lff-gold)!important;font-size:1rem!important;
}
.theme-toggle:hover{background:var(--lff-surface-2)!important}
.header .theme-toggle{margin-left:.1rem}
.layout{display:flex!important;min-height:calc(100vh - 62px)!important}
.sidebar{
  width:212px!important;flex:0 0 212px!important;
  background:linear-gradient(180deg,rgba(255,255,255,.035),rgba(255,255,255,.012))!important;
  border-right:1px solid var(--lff-line)!important;
  padding:1rem .7rem 1.6rem!important;
}
.sidebar .nav-item{
  display:flex!important;align-items:center;gap:.6rem;
  padding:.68rem .8rem!important;margin:2px 0!important;
  border-radius:12px!important;border-left:0!important;border-bottom:0!important;
  color:var(--lff-text-2)!important;font-size:.88rem!important;
  text-decoration:none;white-space:nowrap;
  transition:background .18s,color .18s,transform .18s var(--lff-ease)!important;
}
.sidebar .nav-item:hover{background:var(--lff-surface-2)!important;color:var(--lff-text)!important;transform:translateX(2px)}
.sidebar .nav-item.active{
  background:linear-gradient(90deg,rgba(226,196,136,.18),rgba(226,196,136,.05))!important;
  color:var(--lff-gold)!important;font-weight:600!important;
  box-shadow:inset 0 0 0 1px var(--lff-gold-line),0 6px 18px -12px rgba(226,196,136,.9)!important;
}
.main-wrapper,.main{padding:1.7rem 1.9rem 3rem!important;min-width:0;background:transparent!important}
.main-wrapper{max-width:1240px;margin:0 auto;width:100%}
.main{max-width:1020px!important;margin:0 auto;width:100%}
.welcome{margin-bottom:1.5rem!important;padding:2px 0 2px 14px;border-left:3px solid var(--lff-gold);border-radius:2px}
.welcome h2{font-size:1.42rem!important;font-weight:600!important;color:var(--lff-text)!important;letter-spacing:.02em;line-height:1.35}
.welcome p{color:var(--lff-text-3)!important;font-size:.85rem!important;margin-top:.34rem!important}
.section-title{
  font-size:1.02rem!important;font-weight:600!important;color:var(--lff-text)!important;
  margin:1.9rem 0 .9rem!important;padding:0 0 .55rem 11px!important;
  border-bottom:1px solid var(--lff-line)!important;border-left:3px solid var(--lff-gold)!important;
  display:flex!important;align-items:center;justify-content:space-between;gap:.7rem;flex-wrap:wrap;
}
.loading{display:flex!important;align-items:center;justify-content:center;gap:.6rem;padding:3rem!important;color:var(--lff-text-3)!important;font-size:.88rem}
.loading::before{content:'';width:17px;height:17px;border-radius:50%;border:2px solid rgba(226,196,136,.22);border-top-color:var(--lff-gold);animation:lffspin .8s linear infinite}
@keyframes lffspin{to{transform:rotate(360deg)}}
.empty{padding:2.4rem 1rem!important;text-align:center;color:var(--lff-text-3)!important;font-size:.86rem!important;border:1px dashed rgba(226,196,136,.22)!important;border-radius:var(--lff-r-md);background:rgba(226,196,136,.03)}
.asset-cards{grid-template-columns:repeat(auto-fit,minmax(248px,1fr))!important;gap:1rem!important;margin-bottom:1.8rem!important}
.asset-card{
  position:relative;overflow:hidden;
  display:grid!important;grid-template-columns:auto 1fr!important;column-gap:.7rem;row-gap:.1rem;
  align-items:center;text-align:left!important;
  background:linear-gradient(165deg,rgba(255,255,255,.06),rgba(255,255,255,.015))!important;
  border:1px solid var(--lff-line)!important;border-radius:var(--lff-r-lg)!important;
  padding:1.15rem 1.15rem 1rem!important;box-shadow:var(--lff-sh-2);
  transition:transform .2s var(--lff-ease),box-shadow .2s,border-color .2s!important;
}
.asset-card::before{content:'';position:absolute;left:0;right:0;top:0;height:2px;background:linear-gradient(90deg,transparent,rgba(226,196,136,.55),transparent)}
.asset-card.father{border-color:rgba(226,196,136,.30)!important}
.asset-card.total{border-color:rgba(240,180,41,.30)!important;background:linear-gradient(165deg,rgba(240,180,41,.09),rgba(255,255,255,.015))!important}
.asset-card:not(.father):not(.total){border-color:rgba(96,165,250,.26)!important}
.asset-card .a-avatar{grid-column:1;font-size:1.5rem!important;line-height:1;margin:0!important}
.asset-card .a-name{grid-column:2;font-size:.92rem!important;font-weight:600!important;margin:0!important;color:#cbd5e1!important;letter-spacing:.02em;overflow:hidden;text-overflow:ellipsis}
.asset-card.father .a-name{color:var(--lff-gold)!important}
.asset-card.total .a-name{color:#f0b429!important}
.asset-card:not(.father):not(.total) .a-name{color:#7cb3fb!important}
.asset-card .a-total{grid-column:1/-1;font-size:1.5rem!important;font-weight:700!important;margin:.55rem 0 .3rem!important;color:#f4f7fc!important;letter-spacing:-.01em;line-height:1.2}
.asset-card.father .a-total{color:var(--lff-gold)!important}
.asset-card .a-pnl{grid-column:1/-1;justify-self:start;font-size:.75rem!important;font-weight:600!important;padding:3px 10px;border-radius:99px;margin:0 0 .55rem!important;background:rgba(255,255,255,.05);white-space:nowrap}
.asset-card .a-pnl.pl-positive{background:rgba(52,211,153,.13)!important}
.asset-card .a-pnl.pl-negative{background:rgba(248,113,113,.13)!important}
.asset-card .a-detail{grid-column:1/-1;font-size:.74rem!important;line-height:1.9!important;color:var(--lff-text-3)!important;border-top:1px solid var(--lff-line)!important;padding-top:.62rem!important;margin-top:.15rem!important;font-variant-numeric:tabular-nums}
.asset-card:hover{transform:translateY(-3px)!important;box-shadow:var(--lff-sh-3)!important;border-color:rgba(226,196,136,.32)!important}
.pl-positive{color:var(--lff-up)!important}
.pl-negative{color:var(--lff-down)!important}
.profit-positive{color:var(--lff-up)!important}
.profit-negative{color:var(--lff-down)!important}
.profit-zero{color:var(--lff-text-2)!important}
.profit-card{
  position:relative;overflow:hidden;
  background:linear-gradient(165deg,rgba(255,255,255,.06),rgba(255,255,255,.015))!important;
  border:1px solid var(--lff-line)!important;border-radius:var(--lff-r-lg)!important;
  padding:1.7rem 1.5rem!important;margin-bottom:1.4rem!important;box-shadow:var(--lff-sh-2);
}
.profit-card::before{content:'';position:absolute;left:0;right:0;top:0;height:2px;background:linear-gradient(90deg,transparent,rgba(226,196,136,.7),transparent)}
.profit-card .year-label{font-size:.78rem!important;color:var(--lff-text-3)!important;letter-spacing:.08em;margin-bottom:.3rem!important}
.profit-card .profit-amount{font-size:2.5rem!important;font-weight:700!important;margin:.35rem 0!important;letter-spacing:-.02em;font-variant-numeric:tabular-nums}
.profit-card .profit-period{font-size:.78rem!important;color:var(--lff-text-3)!important}
.profit-detail{grid-template-columns:repeat(auto-fit,minmax(150px,1fr))!important;gap:.7rem!important;margin-top:1.2rem!important}
.profit-detail .item{background:rgba(255,255,255,.035)!important;border:1px solid var(--lff-line)!important;border-radius:var(--lff-r-sm)!important;padding:.75rem .6rem!important;text-align:center}
.profit-detail .item .label{font-size:.72rem!important;color:var(--lff-text-3)!important;letter-spacing:.03em}
.profit-detail .item .value{font-size:1.05rem!important;font-weight:600!important;margin-top:.28rem!important;font-variant-numeric:tabular-nums}
.table-wrap{
  position:relative;overflow-x:auto;overflow-y:visible;
  margin:0 0 1.4rem!important;border:1px solid var(--lff-line)!important;
  border-radius:var(--lff-r-md)!important;background:rgba(255,255,255,.02);
  -webkit-overflow-scrolling:touch;
}
table{width:100%;border-collapse:separate!important;border-spacing:0}
.holding-table,.trade-table,.account-table,.salary-table{font-size:.84rem!important}
.holding-table th,.holding-table td,.trade-table th,.trade-table td,.account-table th,.account-table td,.salary-table th,.salary-table td{
  padding:11px 13px!important;border-bottom:1px solid var(--lff-line)!important;background:transparent;
}
.holding-table th,.trade-table th,.account-table th,.salary-table th{
  position:sticky!important;top:0;z-index:3;
  font-size:.72rem!important;font-weight:600!important;color:var(--lff-text-3)!important;
  text-transform:none!important;letter-spacing:.06em!important;
  background:rgba(15,22,38,.96)!important;
  box-shadow:inset 0 -1px 0 var(--lff-gold-line)!important;
  white-space:nowrap;
}
.holding-table tbody tr:hover td,.trade-table tbody tr:hover td,.account-table tbody tr:hover td,.salary-table tbody tr:hover td{background:rgba(255,255,255,.045)!important}
.holding-table tbody tr:last-child td,.trade-table tbody tr:last-child td,.account-table tbody tr:last-child td,.salary-table tbody tr:last-child td{border-bottom:0!important}
.market-tw{color:#7cb3fb!important}
.market-us{color:#fbbf24!important}
.type-buy{color:var(--lff-up)!important}
.type-sell{color:var(--lff-down)!important}
.holding-table tbody tr[style*="font-weight:600"] td{background:rgba(226,196,136,.09)!important;border-top:1px solid var(--lff-gold-line)!important;border-bottom:1px solid var(--lff-gold-line)!important;font-weight:600}
.holding-table tbody tr[style*="font-weight:600"] td:first-child{color:var(--lff-gold)!important;letter-spacing:.04em}
.chart-container{
  background:linear-gradient(165deg,rgba(255,255,255,.05),rgba(255,255,255,.015))!important;
  border:1px solid var(--lff-line)!important;border-radius:var(--lff-r-lg)!important;
  padding:1.4rem 1.4rem 1.1rem!important;margin-bottom:1.4rem!important;box-shadow:var(--lff-sh-2);
}
.chart-container h3{color:var(--lff-gold)!important;font-size:.98rem!important;font-weight:600!important;letter-spacing:.04em;margin-bottom:.9rem!important}
.chart-wrapper{position:relative;height:320px!important}
.chart-wrapper canvas{width:100%!important}
.filter-bar{display:flex!important;gap:.55rem!important;flex-wrap:wrap;align-items:center;margin-bottom:1rem!important}
.filter-bar select{
  padding:.48rem .8rem!important;border-radius:11px!important;
  border:1px solid var(--lff-line-2)!important;background:var(--lff-surface)!important;
  color:var(--lff-text)!important;font-size:.82rem!important;outline:none;
  transition:border-color .18s,background .18s!important;cursor:pointer;
}
.filter-bar select:hover{background:var(--lff-surface-2)!important}
.capsule-card,.contract-card{
  background:linear-gradient(165deg,rgba(255,255,255,.05),rgba(255,255,255,.015))!important;
  border:1px solid var(--lff-line)!important;border-radius:var(--lff-r-lg)!important;
  padding:1.4rem!important;box-shadow:var(--lff-sh-2);
}
.contract-card h3{color:var(--lff-text)!important;font-size:1rem!important;font-weight:600!important;margin-bottom:.7rem!important}
.contract-card p,.contract-card li{color:var(--lff-text-2)!important;font-size:.85rem!important;line-height:1.75!important}
.capsule-item{
  background:linear-gradient(150deg,rgba(226,196,136,.07),rgba(255,255,255,.02))!important;
  border:1px solid rgba(226,196,136,.16)!important;border-radius:var(--lff-r-md)!important;
  padding:1.05rem 1.15rem!important;margin-bottom:.75rem!important;
  transition:transform .2s var(--lff-ease),border-color .2s,box-shadow .2s!important;
}
.capsule-item:hover{transform:translateY(-2px);border-color:rgba(226,196,136,.42)!important;box-shadow:0 12px 30px -14px rgba(226,196,136,.5)!important}
.capsule-item .c-title{color:var(--lff-gold)!important;font-size:.96rem!important;font-weight:600!important}
.capsule-item .c-meta{color:var(--lff-text-3)!important;font-size:.73rem!important}
.capsule-item .c-content{color:var(--lff-text-2)!important;font-size:.84rem!important;line-height:1.8!important}
.c-status{font-size:.7rem!important;padding:3px 11px!important;border-radius:99px!important;font-weight:600!important;white-space:nowrap}
.c-status-open{background:rgba(52,211,153,.14)!important;color:var(--lff-up)!important}
.c-status-locked{background:rgba(251,191,36,.14)!important;color:#fbbf24!important}
.capsule-hero,.capsule-page-hero{padding:1.8rem 1rem 1rem!important;text-align:center}
.capsule-hero .hero-icon,.capsule-page-hero .ph-icon{font-size:2.9rem!important;filter:drop-shadow(0 8px 18px rgba(226,196,136,.35))}
.capsule-hero .hero-title,.capsule-page-hero .ph-title{font-size:1.4rem!important;font-weight:700!important;letter-spacing:.18em}
.capsule-hero .hero-sub,.capsule-page-hero .ph-sub{font-size:.8rem!important;color:#b08d5f!important;margin-top:.5rem!important;letter-spacing:.08em}
.capsule-hero .hero-line,.capsule-page-hero .ph-line{width:150px!important;height:1px!important;margin:1rem auto 0!important;background:linear-gradient(90deg,transparent,rgba(226,196,136,.6),transparent)!important}
.envelope-sealed{
  background:linear-gradient(150deg,rgba(226,196,136,.16),rgba(253,246,233,.04))!important;
  border:1px solid rgba(226,196,136,.38)!important;border-radius:var(--lff-r-lg)!important;
  padding:1.6rem 1.3rem 1.3rem!important;text-align:center;position:relative;overflow:hidden;
  transition:transform .22s var(--lff-ease),border-color .22s,box-shadow .22s!important;
}
.envelope-sealed:hover{transform:translateY(-3px)!important;border-color:rgba(226,196,136,.6)!important;box-shadow:0 18px 40px -20px rgba(226,196,136,.65)!important}
.envelope-sealed .env-title{color:var(--lff-gold)!important;font-weight:600!important;font-size:1rem!important;letter-spacing:.06em}
.envelope-sealed .env-meta{color:#b08d5f!important;font-size:.74rem!important;margin-top:.45rem!important}
.envelope-sealed .env-countdown{border-radius:99px!important;padding:5px 15px!important;background:rgba(226,196,136,.16)!important;border:1px solid var(--lff-gold-line)!important;color:var(--lff-gold)!important;font-size:.74rem!important}
.letter-opened{
  background:linear-gradient(165deg,rgba(253,246,233,.10),rgba(247,230,205,.03))!important;
  border:1px solid rgba(226,196,136,.3)!important;border-radius:var(--lff-r-lg)!important;
  padding:1.5rem 1.5rem 1.2rem!important;box-shadow:var(--lff-sh-2);position:relative;
}
.letter-opened .l-title{color:var(--lff-gold)!important;font-weight:600!important;font-size:1.02rem!important}
.letter-opened .l-paper{background:linear-gradient(180deg,rgba(253,246,233,.10),rgba(253,246,233,.04))!important;border:1px solid rgba(226,196,136,.18)!important;border-radius:var(--lff-r-md)!important;padding:1.35rem 1.4rem!important;color:#ece0c8!important;font-size:.94rem!important;line-height:2!important}
.letter-opened .l-foot{color:#b08d5f!important;font-size:.78rem!important;font-style:italic}
.red-packet-card{
  background:linear-gradient(140deg,rgba(220,38,38,.16),rgba(180,83,9,.08))!important;
  border:1px solid rgba(220,38,38,.3)!important;border-radius:var(--lff-r-lg)!important;
  padding:1.5rem 1.4rem!important;margin-bottom:1.4rem!important;box-shadow:var(--lff-sh-2);
}
.red-packet-card h3{color:#fbbf24!important;font-size:1.1rem!important;font-weight:600!important;margin-bottom:.9rem!important;letter-spacing:.03em}
.rp-row{display:flex!important;justify-content:space-between;align-items:center;gap:1rem;padding:.6rem 0!important;font-size:.88rem!important;border-bottom:1px solid rgba(255,255,255,.05)!important}
.rp-row:last-child{border-bottom:0!important}
.rp-row .label{color:var(--lff-text-2)!important}
.rp-row .value{color:#fbbf24!important;font-weight:600!important;font-variant-numeric:tabular-nums}
.modal-overlay{background:rgba(5,8,16,.68)!important;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);padding:1.2rem!important}
.modal{
  background:linear-gradient(170deg,#16213a,#111a2c)!important;
  border:1px solid var(--lff-line-2)!important;border-radius:var(--lff-r-xl)!important;
  box-shadow:0 30px 70px -24px rgba(0,0,0,.85)!important;
  padding:1.7rem!important;max-width:520px!important;
}
.modal h3{color:var(--lff-gold)!important;font-size:1.08rem!important;font-weight:600!important;margin-bottom:1.1rem!important;letter-spacing:.03em}
.modal .form-group,.form-group{margin-bottom:1rem!important}
.modal .form-group label,.form-group label{color:var(--lff-text-2)!important;font-size:.82rem!important;font-weight:500!important;margin-bottom:.35rem!important}
.modal .form-group input,.modal .form-group select,.modal .form-group textarea,.form-group input,.form-group select,.form-group textarea{
  width:100%!important;padding:.68rem .9rem!important;border-radius:12px!important;
  border:1px solid var(--lff-line-2)!important;background:rgba(255,255,255,.05)!important;
  color:var(--lff-text)!important;font-size:.9rem!important;outline:none!important;font-family:inherit!important;
  transition:border-color .18s,box-shadow .18s,background .18s!important;
}
.modal .form-group input:focus,.modal .form-group select:focus,.modal .form-group textarea:focus,.form-group input:focus,.form-group select:focus,.form-group textarea:focus{border-color:var(--lff-gold)!important;box-shadow:0 0 0 3px rgba(226,196,136,.14)!important;background:rgba(255,255,255,.07)!important}
.form-group input::placeholder,.form-group textarea::placeholder{color:#5b6a82!important}
.modal .btn-row{gap:.6rem!important;margin-top:1.4rem!important}
.toast{border-radius:var(--lff-r-md)!important;padding:.75rem 1.1rem!important;font-size:.86rem!important;box-shadow:var(--lff-sh-3)!important;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}
.toast-success{background:rgba(52,211,153,.16)!important;border:1px solid rgba(52,211,153,.4)!important;color:#6ee7b7!important}
.toast-error{background:rgba(248,113,113,.16)!important;border:1px solid rgba(248,113,113,.4)!important;color:#fca5a5!important}
body:has(.login-container){flex-direction:column!important;gap:1rem;padding:2rem 1rem}
.login-container{
  background:linear-gradient(170deg,rgba(255,255,255,.075),rgba(255,255,255,.02))!important;
  border:1px solid var(--lff-line-2)!important;border-radius:24px!important;
  box-shadow:0 30px 80px -30px rgba(0,0,0,.9)!important;
  padding:2.6rem 2.2rem!important;max-width:400px!important;
  -webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);
}
.login-container::before{background:radial-gradient(closest-side,rgba(226,196,136,.22),transparent 70%)!important}
.logo{margin-bottom:1.8rem!important}
.logo .icon{font-size:2.8rem!important;filter:drop-shadow(0 8px 22px rgba(226,196,136,.4))!important}
.logo h1{font-size:1.5rem!important;font-weight:700!important;letter-spacing:.14em;color:var(--lff-gold)!important}
.logo p{font-size:.78rem!important;color:#8a7a5e!important;letter-spacing:.18em;margin-top:.35rem!important}
.error-msg{color:#fca5a5!important;font-size:.82rem!important;margin-top:.7rem!important}
.login-container .footer{color:#6b7a92!important;margin-top:1.6rem!important;font-size:.74rem!important}
@media (max-width:820px){
  body:has(.login-container){padding:1.2rem .9rem}
  .header{padding:.65rem 1rem!important;gap:.5rem!important}
  .header .brand{gap:.55rem!important}
  .header .brand .icon{width:34px!important;height:34px!important;font-size:1.15rem!important;border-radius:11px}
  .header .brand h1{font-size:.96rem!important;letter-spacing:.03em!important;max-width:38vw}
  .header .user-info{gap:.45rem!important}
  .header .btn{min-height:34px!important;padding:.4rem .8rem!important;font-size:.78rem!important}
  .theme-toggle{width:34px!important;height:34px!important}
  .role-badge{font-size:.68rem!important;padding:3px 9px!important}
}
@media (max-width:820px){
  .layout{display:block!important;min-height:auto!important}
  .sidebar{
    position:fixed!important;left:0;right:0;bottom:0;top:auto!important;
    width:100%!important;display:flex!important;flex-wrap:nowrap!important;
    gap:.25rem;padding:.45rem .5rem calc(.45rem + var(--lff-safeb))!important;
    background:rgba(11,17,32,.94)!important;
    -webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);
    border-right:0!important;border-top:1px solid var(--lff-line)!important;
    box-shadow:0 -10px 30px -14px rgba(0,0,0,.9)!important;
    z-index:200;overflow-x:auto;overflow-y:hidden;
    -webkit-overflow-scrolling:touch;scrollbar-width:none;
    scroll-snap-type:x proximity;
  }
  .sidebar::-webkit-scrollbar{display:none}
  .sidebar .nav-item{
    flex:0 0 auto!important;flex-direction:row!important;justify-content:center;
    align-items:center;gap:.35rem;padding:.6rem .8rem!important;margin:0!important;
    border-radius:12px!important;border-left:0!important;
    font-size:.78rem!important;white-space:nowrap;line-height:1;scroll-snap-align:center;
  }
  .sidebar .nav-item.active{
    background:linear-gradient(180deg,rgba(226,196,136,.22),rgba(226,196,136,.08))!important;
    color:var(--lff-gold)!important;box-shadow:inset 0 0 0 1px var(--lff-gold-line)!important;
  }
}
@media (max-width:820px){
  .main-wrapper,.main{padding:1.1rem .85rem calc(104px + var(--lff-safeb))!important;max-width:100%!important}
  .welcome{padding-left:11px;margin-bottom:1.1rem!important}
  .welcome h2{font-size:1.2rem!important}
  .welcome p{font-size:.8rem!important}
  .section-title{font-size:.95rem!important;margin:1.4rem 0 .7rem!important;padding-left:9px!important}
  .asset-cards{grid-template-columns:1fr!important;gap:.8rem!important;margin-bottom:1.3rem!important}
  .asset-card{padding:1.05rem 1rem .9rem!important;box-shadow:var(--lff-sh-1)}
  .asset-card .a-total{font-size:1.4rem!important}
  .asset-card .a-detail{font-size:.72rem!important;line-height:1.85!important}
  .asset-card:hover{transform:none!important}
  .profit-card{padding:1.4rem 1.15rem!important}
  .profit-card .profit-amount{font-size:2.1rem!important}
  .profit-detail{grid-template-columns:1fr 1fr!important;gap:.6rem!important}
  .profit-detail .item{padding:.65rem .45rem!important}
  .profit-detail .item .value{font-size:.98rem!important}
  .capsule-card,.contract-card,.red-packet-card{padding:1.15rem 1rem!important}
  .capsule-item{padding:.95rem 1rem!important}
  .envelope-sealed{padding:1.35rem 1.1rem 1.1rem!important}
  .letter-opened{padding:1.25rem 1.1rem 1rem!important}
  .letter-opened .l-paper{padding:1.1rem!important;font-size:.9rem!important;line-height:1.95!important}
  .capsule-hero,.capsule-page-hero{padding:1.3rem .8rem .7rem!important}
  .capsule-hero .hero-title,.capsule-page-hero .ph-title{font-size:1.18rem!important;letter-spacing:.14em}
}
@media (max-width:820px){
  .table-wrap{border-radius:12px!important;margin-bottom:1.1rem!important}
  .holding-table,.trade-table,.account-table,.salary-table{font-size:.78rem!important;min-width:560px}
  .holding-table th,.holding-table td,.trade-table th,.trade-table td,.account-table th,.account-table td,.salary-table th,.salary-table td{padding:9px 11px!important}
  .holding-table th,.trade-table th,.account-table th,.salary-table th{font-size:.68rem!important}
  .chart-wrapper{height:236px!important}
  .chart-container{padding:1rem!important;border-radius:var(--lff-r-md)!important}
  .filter-bar{gap:.45rem!important}
  .filter-bar select,.lff-filter input{font-size:16px!important;padding:.5rem .7rem!important}
  .modal-overlay{align-items:flex-end!important;padding:0!important}
  .modal{
    width:100%!important;max-width:none!important;max-height:88vh;
    border-radius:22px 22px 0 0!important;padding:1.4rem 1.1rem calc(1.4rem + var(--lff-safeb))!important;
  }
  .modal .btn-row{gap:.6rem!important;flex-wrap:wrap}
  .modal .btn-row .btn{flex:1 1 auto;min-height:44px!important}
  .toast{top:auto!important;left:.6rem!important;right:.6rem!important;bottom:calc(96px + var(--lff-safeb))!important;text-align:center}
  .lff-top{bottom:calc(86px + var(--lff-safeb))!important;right:14px!important}
}
@media (max-width:480px){
  .header .brand h1{font-size:.88rem!important;max-width:34vw}
  .header .brand .icon{width:31px!important;height:31px!important;font-size:1.05rem!important}
  .role-badge{display:none}
  .welcome h2{font-size:1.08rem!important}
  .asset-card .a-total{font-size:1.28rem!important}
  .profit-card .profit-amount{font-size:1.8rem!important}
  .profit-detail{grid-template-columns:1fr!important}
  .sidebar .nav-item{font-size:.72rem!important;padding:.55rem .65rem!important;gap:.28rem}
  .main-wrapper,.main{padding:.95rem .7rem calc(96px + var(--lff-safeb))!important}
  .holding-table,.trade-table,.account-table,.salary-table{font-size:.74rem!important}
  .chart-wrapper{height:210px!important}
  .login-container{padding:1.9rem 1.3rem!important;border-radius:20px!important}
  .logo h1{font-size:1.3rem!important}
  .logo .icon{font-size:2.4rem!important}
}
@media (max-width:480px){
  .main-wrapper,.main{padding:.9rem .68rem calc(96px + var(--lff-safeb))!important}
  .sidebar .nav-item{font-size:.73rem!important;padding:.55rem .7rem!important;gap:.3rem}
  .holding-table,.trade-table,.account-table,.salary-table,.rp-table{font-size:.74rem!important}
}
.lff-embed{position:relative;overflow:hidden;padding:0!important;max-width:none!important;height:calc(100vh - 70px)}
.lff-embed iframe{width:100%;height:100%;border:0;display:block;background:#0b1120;color-scheme:dark}
.lff-embedding .lff-filter,.lff-embedding .lff-top{display:none!important}
.lff-filter{display:flex;align-items:center;gap:.5rem;margin:.6rem 0 .7rem}
.lff-filter input{flex:1;min-width:0;padding:.55rem .85rem;border-radius:11px;border:1px solid var(--lff-line-2);background:var(--lff-surface);color:var(--lff-text);font-size:.85rem;outline:none;transition:border-color .18s,box-shadow .18s}
.lff-filter input:focus{border-color:var(--lff-gold);box-shadow:0 0 0 3px rgba(226,196,136,.14)}
.lff-filter input::placeholder{color:#5b6a82}
.lff-filter .lff-cnt{font-size:.74rem;color:var(--lff-text-3);white-space:nowrap}
.lff-hide{display:none!important}
.lff-top{position:fixed;right:18px;bottom:22px;z-index:9998;width:44px;height:44px;border-radius:14px;border:1px solid var(--lff-gold-line);background:rgba(17,23,40,.9);color:var(--lff-gold);font-size:17px;line-height:1;cursor:pointer;display:none;align-items:center;justify-content:center;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);box-shadow:var(--lff-sh-2)}
.lff-top.show{display:flex}
.lff-top:active{transform:scale(.94)}
@keyframes lff-fade-up{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}
.asset-card,.capsule-card,.profit-card,.contract-card,.chart-container,.envelope-sealed,.letter-opened,.red-packet-card{animation:lff-fade-up .45s var(--lff-ease) both}
.asset-cards .asset-card:nth-child(2){animation-delay:.05s}
.asset-cards .asset-card:nth-child(3){animation-delay:.1s}
.asset-cards .asset-card:nth-child(4){animation-delay:.15s}
html.theme-light{
  --lff-gold:#a07d24;--lff-gold-2:#c9a84c;--lff-gold-line:rgba(160,125,36,.28);
  --lff-surface:rgba(15,23,42,.035);--lff-surface-2:rgba(15,23,42,.07);
  --lff-line:rgba(15,23,42,.09);--lff-line-2:rgba(15,23,42,.16);
  --lff-text:#1e293b;--lff-text-2:#5b6472;--lff-text-3:#8a94a6;
  --lff-up:#b3261e;--lff-down:#137a4b;
  --lff-sh-2:0 2px 4px rgba(15,23,42,.04),0 12px 26px -14px rgba(15,23,42,.18);
  --lff-sh-3:0 8px 20px rgba(15,23,42,.06),0 26px 56px -26px rgba(15,23,42,.22);
}
html.theme-light body{
  background-color:#f4f6fa!important;
  background-image:radial-gradient(1000px 520px at 84% -10%,rgba(160,125,36,.10),transparent 62%),radial-gradient(820px 480px at -6% 4%,rgba(37,99,235,.06),transparent 58%),linear-gradient(168deg,#f7f8fb 0%,#eef1f7 55%,#f6f7fa 100%)!important;
  color:var(--lff-text)!important;
}
html.theme-light .header{background:rgba(255,255,255,.86)!important;border-bottom-color:var(--lff-line)!important;box-shadow:0 1px 0 rgba(15,23,42,.04),0 10px 30px -20px rgba(15,23,42,.4)!important}
html.theme-light .header .brand .icon{background:linear-gradient(150deg,rgba(160,125,36,.16),rgba(160,125,36,.04))!important;border-color:var(--lff-gold-line)!important}
html.theme-light .header .brand h1{background:linear-gradient(100deg,#8a6a1e,#b8933a 45%,#8a6a1e)!important;-webkit-background-clip:text!important;background-clip:text!important;-webkit-text-fill-color:transparent!important;color:#8a6a1e!important}
html.theme-light .role-badge,html.theme-light .role-admin{background:rgba(160,125,36,.12)!important;color:#8a6a1e!important;border-color:var(--lff-gold-line)!important}
html.theme-light .btn{background:#fff!important;border-color:var(--lff-line-2)!important;color:var(--lff-text-2)!important}
html.theme-light .btn:hover{background:#f1f4f9!important;color:var(--lff-text)!important}
html.theme-light .btn-primary{background:linear-gradient(135deg,#c9a84c,#e2c488)!important;color:#2a1f06!important;border-color:rgba(0,0,0,.06)!important}
html.theme-light .theme-toggle{background:#fff!important;border-color:var(--lff-line-2)!important;color:#8a6a1e!important}
html.theme-light .sidebar{background:linear-gradient(180deg,rgba(255,255,255,.92),rgba(255,255,255,.62))!important;border-right-color:var(--lff-line)!important}
html.theme-light .sidebar .nav-item{color:var(--lff-text-2)!important}
html.theme-light .sidebar .nav-item:hover{background:rgba(15,23,42,.05)!important;color:var(--lff-text)!important}
html.theme-light .sidebar .nav-item.active{background:linear-gradient(90deg,rgba(196,168,84,.20),rgba(196,168,84,.06))!important;color:#8a6a1e!important;box-shadow:inset 0 0 0 1px var(--lff-gold-line)!important}
html.theme-light .welcome h2{color:#1e293b!important}
html.theme-light .welcome p{color:var(--lff-text-3)!important}
html.theme-light .section-title{color:#1e293b!important;border-bottom-color:var(--lff-line)!important}
html.theme-light .asset-card{background:linear-gradient(165deg,#fff,#fbfcfe)!important;border-color:var(--lff-line)!important;box-shadow:var(--lff-sh-2)!important}
html.theme-light .asset-card .a-name{color:#475569!important}
html.theme-light .asset-card .a-total{color:#0f172a!important}
html.theme-light .asset-card.father .a-name,html.theme-light .asset-card.father .a-total{color:#8a6a1e!important}
html.theme-light .asset-card.total .a-name{color:#a9700c!important}
html.theme-light .asset-card:not(.father):not(.total) .a-name{color:#2563eb!important}
html.theme-light .asset-card .a-detail{color:var(--lff-text-3)!important;border-top-color:var(--lff-line)!important}
html.theme-light .asset-card .a-pnl{background:rgba(15,23,42,.05)!important}
html.theme-light .asset-card .a-pnl.pl-positive{background:rgba(21,128,61,.10)!important}
html.theme-light .asset-card .a-pnl.pl-negative{background:rgba(185,28,28,.10)!important}
html.theme-light .profit-card,html.theme-light .chart-container{background:linear-gradient(165deg,#fff,#fafbfd)!important;border-color:var(--lff-line)!important;box-shadow:var(--lff-sh-2)!important}
html.theme-light .profit-card .profit-amount{color:#0f172a!important}
html.theme-light .profit-detail .item{background:#f5f7fb!important;border-color:var(--lff-line)!important}
html.theme-light .profit-detail .item .value{color:#1e293b!important}
html.theme-light .table-wrap{background:#fff!important;border-color:var(--lff-line)!important}
html.theme-light .holding-table th,html.theme-light .trade-table th,html.theme-light .account-table th,html.theme-light .salary-table th{background:#f4f6fa!important;color:var(--lff-text-3)!important;box-shadow:inset 0 -1px 0 rgba(160,125,36,.25)!important}
html.theme-light .holding-table td,html.theme-light .trade-table td,html.theme-light .account-table td,html.theme-light .salary-table td{border-bottom-color:var(--lff-line)!important;color:#334155!important}
html.theme-light .holding-table tbody tr:hover td,html.theme-light .trade-table tbody tr:hover td,html.theme-light .account-table tbody tr:hover td,html.theme-light .salary-table tbody tr:hover td{background:rgba(15,23,42,.03)!important}
html.theme-light .holding-table tbody tr[style*="font-weight:600"] td{background:rgba(196,168,84,.14)!important;border-color:rgba(160,125,36,.3)!important}
html.theme-light .holding-table tbody tr[style*="font-weight:600"] td:first-child{color:#8a6a1e!important}
html.theme-light .filter-bar select{background:#fff!important;border-color:var(--lff-line-2)!important;color:var(--lff-text)!important}
html.theme-light .lff-filter input{background:#fff!important;border-color:var(--lff-line-2)!important;color:var(--lff-text)!important}
html.theme-light .modal{background:linear-gradient(170deg,#fff,#f8fafc)!important;border-color:var(--lff-line-2)!important;box-shadow:0 30px 70px -24px rgba(15,23,42,.4)!important}
html.theme-light .modal-overlay{background:rgba(15,23,42,.4)!important}
html.theme-light .form-group input,html.theme-light .form-group select,html.theme-light .form-group textarea{background:#f5f7fb!important;border-color:var(--lff-line-2)!important;color:var(--lff-text)!important}
html.theme-light .toast-success{background:#ecfdf5!important;border-color:rgba(21,128,61,.3)!important;color:#15803d!important}
html.theme-light .toast-error{background:#fef2f2!important;border-color:rgba(185,28,28,.3)!important;color:#b91c1c!important}
html.theme-light .empty{color:var(--lff-text-3)!important;border-color:rgba(160,125,36,.3)!important;background:rgba(160,125,36,.04)!important}
html.theme-light .loading{color:var(--lff-text-3)!important}
html.theme-light .lff-top{background:rgba(255,255,255,.94)!important;border-color:var(--lff-gold-line)!important;color:#8a6a1e!important}
html.theme-light .lff-embed iframe{background:#f4f6fa;color-scheme:light}
html.theme-light .login-container{background:linear-gradient(170deg,rgba(255,255,255,.96),rgba(255,255,255,.88))!important;border-color:var(--lff-line-2)!important}
html.theme-light .logo h1{color:#8a6a1e!important}
html.theme-light .logo p{color:#8a7a5e!important}
html.theme-light .capsule-card,html.theme-light .contract-card{background:linear-gradient(165deg,#fff,#fafbfd)!important;border-color:var(--lff-line)!important}
html.theme-light .contract-card h3{color:#1e293b!important}
html.theme-light .contract-card p,html.theme-light .contract-card li{color:var(--lff-text-2)!important}
html.theme-light .capsule-item{background:linear-gradient(150deg,rgba(196,168,84,.10),#fff)!important;border-color:rgba(196,168,84,.28)!important}
html.theme-light .capsule-item .c-title{color:#8a6a1e!important}
html.theme-light .capsule-item .c-content{color:var(--lff-text-2)!important}
html.theme-light .envelope-sealed{background:linear-gradient(150deg,rgba(196,168,84,.14),#fffdf8)!important;border-color:rgba(196,168,84,.4)!important}
html.theme-light .envelope-sealed .env-title{color:#8a6a1e!important}
html.theme-light .letter-opened{background:linear-gradient(165deg,rgba(253,246,233,.9),#fffdf8)!important;border-color:rgba(196,168,84,.35)!important}
html.theme-light .letter-opened .l-paper{background:#fffdf8!important;color:#4a4032!important;border-color:rgba(196,168,84,.25)!important}
html.theme-light .letter-opened .l-title{color:#8a6a1e!important}
html.theme-light .red-packet-card{background:linear-gradient(140deg,rgba(220,38,38,.08),rgba(180,83,9,.04))!important;border-color:rgba(220,38,38,.28)!important}
html.theme-light .rp-row{border-bottom-color:rgba(15,23,42,.06)!important}
html.theme-light .rp-row .label{color:var(--lff-text-2)!important}
html.theme-light .rp-row .value{color:#b45309!important}
@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important;scroll-behavior:auto!important}}

/* ===== patch v20260919c: toggle / table parity / light contrast ===== */
.theme-toggle{display:inline-flex!important;align-items:center!important;justify-content:center!important;cursor:pointer!important;line-height:1}
.theme-toggle:active{transform:scale(.94)}
.theme-toggle.floating{position:fixed!important;top:14px!important;right:14px!important;z-index:9999!important}
.holding-table td,.trade-table td,.account-table td,.salary-table td{font-variant-numeric:tabular-nums}
.holding-table th:nth-child(n+4),.holding-table td:nth-child(n+4),.trade-table th:nth-child(6),.trade-table td:nth-child(6),.trade-table th:nth-child(7),.trade-table td:nth-child(7),.account-table th:nth-child(3),.account-table td:nth-child(3),.account-table th:nth-child(4),.account-table td:nth-child(4),.salary-table th:nth-child(4),.salary-table td:nth-child(4){text-align:right!important}
@media(min-width:821px){.table-wrap{max-height:76vh!important;overflow-y:auto!important}}
html.theme-light .market-tw{color:#2563eb!important}
html.theme-light .market-us{color:#b45309!important}
html.theme-light .c-status-locked{color:#b45309!important}
html.theme-light .red-packet-card h3{color:#b91c1c!important}
html.theme-light .error-msg{color:#dc2626!important}
html.theme-light td.pl-positive,html.theme-light th.pl-positive{color:var(--lff-up)!important}
html.theme-light td.pl-negative,html.theme-light th.pl-negative{color:var(--lff-down)!important}

/* ===== patch v20260919c-2: narrow-screen header fit (single row) ===== */
@media (max-width:600px){
  .header{flex-wrap:nowrap!important;padding:.55rem .7rem!important;gap:.4rem!important}
  .header .brand{flex:1 1 0!important;min-width:0!important;gap:.45rem!important;overflow:hidden}
  .header .brand>span:last-child{display:none!important}
  .header .brand h1{max-width:none!important;min-width:0!important;font-size:.9rem!important;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .header .user-info{flex:0 0 auto!important;gap:.3rem!important;margin-left:0!important}
  .header .user-info #displayName{max-width:22vw;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .header .user-info .role-badge{padding:3px 8px!important;font-size:.66rem!important}
  .header .btn{padding:.32rem .55rem!important;font-size:.7rem!important;min-height:29px!important;white-space:nowrap}
}

/* ===== patch v20260919c-3: modal internal scroll on phones ===== */
@media (max-width:820px){
  .modal{overflow-y:auto!important;-webkit-overflow-scrolling:touch}
}
/* ==== 帳戶管理頁（v2.3.5）==== */
.acc-tip{font-size:.78rem;color:var(--lff-text-3,#64748b);margin-top:.4rem;line-height:1.65}
.acc-pw-wrap{height:6px;border-radius:99px;background:rgba(148,163,184,.2);overflow:hidden;margin-top:.55rem}
.acc-pw-bar{height:100%;width:0;border-radius:99px;background:#64748b;transition:width .25s ease,background .25s ease}
.acc-submit{width:100%;padding:11px;margin-top:.7rem}
.acc-btn-row{display:flex;gap:.6rem;margin-top:.9rem;flex-wrap:wrap}
.acc-btn-row .btn{flex:1 1 120px}
.acc-btn-row .acc-submit{flex:2 1 160px;margin-top:0}
.capsule-card .acc-tip{color:var(--lff-text-3,#64748b)}
.form-group input:disabled{opacity:.6;cursor:not-allowed}
/* ==== 紅包提領與捐贈（v2.3.6）==== */
.rp-top{display:flex;align-items:center;gap:.6rem;flex-wrap:wrap;margin-bottom:.4rem}
.rp-top-l{font-size:.86rem;color:var(--lff-text-2,#94a3b8)}
.rp-top select{min-width:118px;padding:8px 10px;border-radius:var(--lff-r-sm,10px);border:1px solid var(--lff-line,rgba(255,255,255,.12));background:var(--lff-surface,#161d2e);color:var(--lff-text-1,#e2e8f0);font-size:.86rem}
.rp-status{font-size:.72rem;padding:3px 10px;border-radius:99px;border:1px solid var(--lff-line,rgba(255,255,255,.12));color:var(--lff-text-3,#64748b)}
.rp-status-ok{color:#4ade80;border-color:rgba(74,222,128,.4);background:rgba(74,222,128,.08)}
.rp-hint-top{margin-top:.1rem}
.rp-card{margin-bottom:1rem}
.rp-mt{margin-top:1rem}
.rp-calc{margin-top:.85rem;border:1px solid var(--lff-line,rgba(255,255,255,.1));border-radius:var(--lff-r-md,12px);padding:.6rem .85rem;background:rgba(148,163,184,.06)}
.rp-calc-row{display:flex;justify-content:space-between;gap:.8rem;font-size:.82rem;color:var(--lff-text-2,#94a3b8);padding:.2rem 0}
.rp-calc-row b{color:var(--lff-text-1,#e2e8f0);font-variant-numeric:tabular-nums;text-align:right}
.rp-calc-hi b{color:var(--lff-gold,#e2c488);font-size:.95rem}
.rp-quick{display:flex;gap:.5rem;flex-wrap:wrap;margin-top:.7rem}
.rp-mini{font-size:.76rem;padding:5px 12px;border-radius:99px;border:1px solid var(--lff-line,rgba(255,255,255,.12));color:var(--lff-text-2,#94a3b8);background:transparent;cursor:pointer;user-select:none;display:inline-flex;align-items:center;gap:4px;line-height:1.5}
.rp-mini:hover{border-color:var(--lff-gold,#e2c488);color:var(--lff-gold,#e2c488)}
.rp-mini-del:hover{border-color:#f87171;color:#f87171}
.rp-chars{margin-top:.5rem;display:flex;flex-direction:column;gap:.5rem}
.rp-char{border:1px solid var(--lff-line,rgba(255,255,255,.12));border-radius:var(--lff-r-md,12px);padding:.55rem .7rem;display:grid;grid-template-columns:1fr auto;gap:.15rem .6rem;align-items:center}
.rp-char-h{display:flex;align-items:center;gap:.5rem;font-size:.86rem;color:var(--lff-text-1,#e2e8f0);cursor:pointer;min-width:0}
.rp-char-h input{width:17px;height:17px;accent-color:var(--lff-gold,#e2c488);flex:0 0 auto;margin:0}
.rp-char-n{font-weight:600}
.rp-char-d{grid-column:1;font-size:.74rem;color:var(--lff-text-3,#64748b);padding-left:1.6rem}
.rp-char-amt{grid-row:1 / span 2;grid-column:2;display:flex;align-items:center;gap:.35rem;white-space:nowrap}
.rp-cu{font-size:.76rem;color:var(--lff-text-3,#64748b)}
.rp-char-amt input{width:112px;padding:7px 9px;border-radius:var(--lff-r-sm,10px);border:1px solid var(--lff-line,rgba(255,255,255,.12));background:var(--lff-bg,#0f172a);color:var(--lff-text-1,#e2e8f0);font-size:.84rem;text-align:right;font-variant-numeric:tabular-nums}
.rp-char-amt input:disabled{opacity:.35}
.rp-btn-row{display:flex;gap:.6rem;flex-wrap:wrap;margin-top:.85rem}
.rp-btn-row .btn{flex:1 1 150px}
.rp-danger{border-color:rgba(248,113,113,.5);color:#f87171}
.rp-danger:hover{background:rgba(248,113,113,.12)}
.rp-warn-bad{color:#f87171}
.rp-table{width:100%;border-collapse:collapse;font-size:.82rem}
.rp-table th{text-align:left;padding:.5rem .55rem;color:var(--lff-gold,#e2c488);border-bottom:1px solid var(--lff-line,rgba(255,255,255,.12));white-space:nowrap;font-weight:600}
.rp-table td{padding:.5rem .55rem;border-bottom:1px solid var(--lff-line,rgba(255,255,255,.08));color:var(--lff-text-2,#94a3b8);font-variant-numeric:tabular-nums;white-space:nowrap;text-align:right}
.rp-table td:first-child{text-align:left}
.rp-table td.rp-names{white-space:normal;min-width:190px;text-align:left}
.rp-table td.rp-ops{text-align:left;white-space:nowrap}
.rp-table td.rp-when{text-align:left;color:var(--lff-text-3,#64748b);font-size:.76rem}
.rp-table tr:hover td{background:rgba(148,163,184,.06)}
.rp-chip-warn{font-size:.68rem;color:#fbbf24;border:1px solid rgba(251,191,36,.4);border-radius:99px;padding:1px 6px;margin-left:.3rem}
.rp-mini-row{display:flex;align-items:center;gap:.6rem;flex-wrap:wrap;padding:.5rem 0;border-bottom:1px solid var(--lff-line,rgba(255,255,255,.08));font-size:.84rem}
.rp-mini-row:last-of-type{border-bottom:none}
.rp-mini-y{color:var(--lff-gold,#e2c488);font-weight:600}
.rp-mini-v{color:var(--lff-text-2,#94a3b8);flex:1 1 170px;font-variant-numeric:tabular-nums}
.rp-mini-b{display:flex;gap:.4rem}
.rp-sumcards{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:.7rem;margin-bottom:1rem}
.rp-sum{display:flex;flex-direction:column;gap:.2rem;border:1px solid var(--lff-line,rgba(255,255,255,.12));border-radius:var(--lff-r-md,12px);padding:.7rem .85rem;background:rgba(148,163,184,.06)}
.rp-sum-l{font-size:.74rem;color:var(--lff-text-3,#64748b)}
.rp-sum-v{font-size:1.02rem;font-weight:600;color:var(--lff-gold,#e2c488);font-variant-numeric:tabular-nums}
.rp-filter{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap;margin-bottom:.9rem}
.rp-filter label{font-size:.8rem;color:var(--lff-text-2,#94a3b8)}
.rp-filter select{padding:7px 10px;border-radius:var(--lff-r-sm,10px);border:1px solid var(--lff-line,rgba(255,255,255,.12));background:var(--lff-surface,#161d2e);color:var(--lff-text-1,#e2e8f0);font-size:.84rem}
.rp-filter-note{font-size:.74rem;color:var(--lff-text-3,#64748b);margin-left:auto}
.rp-editor{border-color:var(--lff-gold,rgba(226,196,136,.5))!important;margin-bottom:1rem}
.rp-ed-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:.6rem}
.rp-ed-grid .form-group{margin-bottom:0}
@media (max-width:600px){
.rp-char{grid-template-columns:1fr}
.rp-char-amt{grid-row:auto;grid-column:1;justify-content:flex-end;padding-left:1.6rem}
.rp-btn-row .btn{flex:1 1 100%}
.rp-filter-note{margin-left:0}
}
html.theme-light .rp-calc,html.theme-light .rp-sum{background:rgba(100,116,139,.07)}
html.theme-light .rp-char-amt input,html.theme-light .rp-top select,html.theme-light .rp-filter select{background:#fff}
html.theme-light .rp-table tr:hover td{background:rgba(100,116,139,.08)}
/* ===== v2.4.0 「一本家書」閱讀器（letter-book.js） ===== */
[data-paper]{--bk-paper:#f8f2e5;--bk-paper-2:#f0e7d4;--bk-ink:#3a3126;--bk-ink-2:#6d604b;--bk-edge:rgba(150,118,64,.26);--bk-gold:#a07d24;--bk-sh:0 10px 30px -12px rgba(60,45,20,.42)}
[data-paper=night]{--bk-paper:#18202e;--bk-paper-2:#131a26;--bk-ink:#e3e8f0;--bk-ink-2:#9aa6ba;--bk-edge:rgba(255,255,255,.1);--bk-gold:#e2c488;--bk-sh:0 10px 30px -12px rgba(0,0,0,.6)}
[data-paper=snow]{--bk-paper:#fffefb;--bk-paper-2:#f5f6f8;--bk-ink:#232a33;--bk-ink-2:#63707f;--bk-edge:rgba(15,23,42,.12);--bk-gold:#8a6a1e;--bk-sh:0 10px 30px -12px rgba(15,23,42,.28)}
.bk-book{--cv1:#e2c488;--cv2:#b08d5f;--cv3:#877a66;position:relative;width:100%;max-width:430px;padding:2.3rem 1.9rem 1.9rem 2.4rem;border-radius:5px 15px 15px 5px;border:1px solid rgba(226,196,136,.34);background:linear-gradient(150deg,#27334a,#171f2f 58%,#101725);box-shadow:0 20px 54px -20px rgba(0,0,0,.75),inset 0 0 70px rgba(226,196,136,.05)}
html.theme-light .bk-book{--cv1:#8a6a1e;--cv2:#a07d24;--cv3:#9a8a6a;background:linear-gradient(150deg,#fffdf8,#f5eddd 60%,#ece1cd);border-color:rgba(160,125,36,.36);box-shadow:0 20px 50px -22px rgba(90,68,24,.45),inset 0 0 60px rgba(160,125,36,.05)}
.bk-cover{padding:.5rem 0 1.5rem;display:flex;justify-content:center;animation:lff-fade-up .4s ease both}
.bk-spine{position:absolute;left:0;top:0;bottom:0;width:16px;border-radius:5px 0 0 5px;background:linear-gradient(90deg,rgba(0,0,0,.55),rgba(226,196,136,.16) 55%,transparent)}
.bk-frame{border:1px solid rgba(226,196,136,.22);border-radius:3px;padding:1.7rem 1.1rem 1.4rem;text-align:center}
html.theme-light .bk-frame{border-color:rgba(160,125,36,.24)}
.bk-eyebrow{font-size:.68rem;letter-spacing:2.5px;color:var(--cv3)}
.bk-title{margin:.85rem 0 .5rem;font-family:"Noto Serif TC","Songti TC",Georgia,serif;font-size:2.15rem;font-weight:700;letter-spacing:12px;text-indent:12px;background:linear-gradient(135deg,#e2c488,#f7e8c6);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;color:#e2c488}
html.theme-light .bk-title{background:linear-gradient(135deg,#8a6a1e,#c09b3e);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;color:#8a6a1e}
.bk-orn{color:rgba(226,196,136,.55);font-size:.8rem;letter-spacing:6px}
.bk-sub{margin-top:.85rem;font-family:"Noto Serif TC",Georgia,serif;font-size:.96rem;letter-spacing:4px;color:var(--cv1)}
.bk-sub2{margin-top:.4rem;font-size:.74rem;letter-spacing:1.5px;color:var(--cv2)}
.bk-seal{margin:1.1rem auto .2rem;width:42px;height:42px;line-height:40px;border-radius:6px;border:1px solid var(--cv2);color:var(--cv1);font-family:Theinhardt,Georgia,serif;font-size:1.25rem;background:rgba(160,125,36,.1)}
.bk-meta{margin-top:1.1rem;display:flex;justify-content:center;gap:.5rem;font-size:.78rem;color:var(--cv2);flex-wrap:wrap}
.bk-meta b{color:var(--cv1);font-variant-numeric:tabular-nums}
.bk-dot{opacity:.5}
.bk-meta2{margin-top:.4rem;font-size:.72rem;color:var(--cv3)}
.bk-actions{margin-top:1.3rem;display:flex;gap:.6rem;justify-content:center;flex-wrap:wrap}
.bk-btn{padding:.55rem 1.2rem;border-radius:10px;border:1px solid rgba(160,125,36,.45);background:rgba(160,125,36,.1);color:var(--cv1);font-size:.84rem;cursor:pointer;text-decoration:none;transition:all .2s;font-family:inherit;display:inline-block}
.bk-btn:hover{background:rgba(160,125,36,.2)}
.bk-btn-primary{background:linear-gradient(135deg,#c9a84c,#e2c488);color:#20180a;border-color:transparent;font-weight:600}
.bk-resume{margin-top:.9rem;display:block;width:100%;padding:.5rem;border-radius:9px;border:1px dashed rgba(160,125,36,.4);background:transparent;color:var(--cv2);font-size:.75rem;cursor:pointer;font-family:inherit}
.bk-link{display:inline-block;margin-top:.9rem;font-size:.72rem;color:var(--cv3);text-decoration:none;border-bottom:1px dotted currentColor}
.bk-sheet{animation:lff-fade-up .4s ease both}
.bk-sheet-head{display:flex;align-items:baseline;gap:.7rem;border-bottom:1px solid var(--lff-line,rgba(255,255,255,.12));padding-bottom:.6rem;margin-bottom:1.1rem}
.bk-sheet-head h2{font-size:1.15rem;letter-spacing:6px;color:var(--lff-gold,#e2c488);font-weight:700}
.bk-sheet-note{margin-left:auto;font-size:.72rem;color:var(--lff-text-3,#64748b)}
.bk-pref-row{display:flex;align-items:center;gap:.6rem;padding:.7rem .85rem;border-radius:11px;border:1px dashed var(--lff-gold-line,rgba(226,196,136,.3));background:rgba(148,163,184,.05);cursor:pointer;margin-bottom:1.2rem;transition:all .2s}
.bk-pref-row:hover{border-style:solid;background:rgba(226,196,136,.1)}
.bk-pref-i{font-family:Georgia,serif;font-size:.95rem;color:var(--lff-gold,#e2c488)}
.bk-pref-t{font-size:.9rem;color:var(--lff-text,#e2e8f0)}
.bk-pref-dots{flex:1;border-bottom:1px dotted var(--lff-line-2,rgba(255,255,255,.2));transform:translateY(-.28em)}
.bk-pref-s{font-size:.72rem;color:var(--lff-text-3,#64748b)}
.bk-vol{margin-bottom:1.4rem}
.bk-vol-head{display:flex;align-items:baseline;gap:.5rem;flex-wrap:wrap;margin-bottom:.3rem}
.bk-vol-no{font-family:Georgia,serif;font-size:.76rem;letter-spacing:2px;color:var(--lff-gold,#e2c488);border:1px solid var(--lff-gold-line,rgba(226,196,136,.32));border-radius:6px;padding:1px 7px}
.bk-vol-ic{font-size:.95rem}
.bk-vol-name{font-size:1rem;font-weight:600;letter-spacing:2px;color:var(--lff-text,#e2e8f0)}
.bk-vol-sub{font-size:.72rem;color:var(--lff-text-3,#64748b)}
.bk-vol-cnt{margin-left:auto;font-size:.7rem;color:var(--lff-gold,#e2c488);background:rgba(226,196,136,.1);border-radius:99px;padding:1px 9px}
.bk-vol-lead{margin:.15rem 0 .7rem;font-size:.76rem;line-height:1.8;color:var(--lff-text-3,#7c8798)}
.bk-list{list-style:none;margin:0;padding:0}
.bk-li{display:flex;align-items:center;gap:.55rem;padding:.55rem .6rem;border-radius:10px;cursor:pointer;transition:background .18s}
.bk-li:hover{background:rgba(148,163,184,.12)}
.bk-li-no{min-width:1.5rem;font-size:.72rem;color:var(--lff-text-3,#64748b);font-variant-numeric:tabular-nums;text-align:right}
.bk-li-t{font-size:.86rem;color:var(--lff-text,#e2e8f0)}
.bk-li-dots{flex:1;border-bottom:1px dotted var(--lff-line-2,rgba(255,255,255,.18));transform:translateY(-.28em)}
.bk-li-d{font-size:.7rem;color:var(--lff-text-3,#64748b);font-variant-numeric:tabular-nums;white-space:nowrap}
.bk-li-s{font-size:.68rem;color:var(--lff-text-3,#64748b);white-space:nowrap}
.bk-li-read .bk-li-t{color:var(--lff-text-2,#94a3b8)}
.bk-li-read .bk-li-s{color:#34d399}
.bk-li-lock .bk-li-t{color:var(--lff-text-2,#94a3b8)}
.bk-li-lock .bk-li-s{color:#fbbf24}
.bk-empty{font-size:.76rem;color:var(--lff-text-3,#64748b);border:1px dashed var(--lff-line,rgba(255,255,255,.12));border-radius:10px;padding:.7rem .9rem}
.bk-bookline{margin-top:1.4rem;padding-top:.95rem;border-top:1px dashed var(--lff-line,rgba(255,255,255,.12));font-size:.72rem;line-height:1.85;color:var(--lff-text-3,#64748b);text-align:center}
.bk-reader{animation:lff-fade-up .35s ease both}
.bk-bar{position:sticky;top:-1px;z-index:5;display:flex;align-items:center;gap:.5rem;padding:.45rem .5rem;margin:-.3rem 0 .6rem;border-radius:11px;background:rgba(15,23,42,.72);border:1px solid var(--lff-line,rgba(255,255,255,.1));-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}
html.theme-light .bk-bar{background:rgba(255,255,255,.84)}
.bk-tb{border:1px solid var(--lff-line-2,rgba(255,255,255,.16));background:transparent;color:var(--lff-text-2,#94a3b8);font-size:.74rem;padding:4px 9px;border-radius:8px;cursor:pointer;font-family:inherit;white-space:nowrap}
.bk-tb:hover{color:var(--lff-gold,#e2c488);border-color:var(--lff-gold-line,rgba(226,196,136,.4))}
.bk-bar-mid{flex:1;text-align:center;font-size:.74rem;letter-spacing:1px;color:var(--lff-text-3,#64748b);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.bk-bar-r{display:flex;gap:.3rem}
.bk-prog{height:2px;border-radius:2px;background:var(--lff-line,rgba(255,255,255,.1));overflow:hidden;margin-bottom:1rem}
.bk-prog i{display:block;height:100%;border-radius:2px;background:linear-gradient(90deg,#c9a84c,#e2c488)}
.bk-page{position:relative;max-width:720px;margin:0 auto;padding:2.2rem 2.1rem 1.8rem;border-radius:4px;background:linear-gradient(180deg,var(--bk-paper),var(--bk-paper-2));border:1px solid var(--bk-edge);box-shadow:var(--bk-sh);color:var(--bk-ink);font-family:"Noto Serif TC","Songti TC",Georgia,"PingFang TC",serif}
.bk-page::after{content:'';position:absolute;inset:0;border-radius:4px;pointer-events:none;background:radial-gradient(130% 55% at 50% 0,rgba(255,255,255,.55),transparent 62%);opacity:.55}
[data-paper=night] .bk-page::after{background:radial-gradient(130% 55% at 50% 0,rgba(226,196,136,.08),transparent 62%);opacity:1}
.bk-page-head{text-align:center;padding-bottom:1.1rem;border-bottom:1px solid var(--bk-edge);margin-bottom:1.4rem}
.bk-page-no{font-size:.7rem;letter-spacing:2px;color:var(--bk-gold)}
.bk-page-title{margin:.5rem 0 .55rem;font-size:1.42rem;font-weight:700;letter-spacing:3px;line-height:1.55}
.bk-page-meta{font-size:.72rem;color:var(--bk-ink-2);letter-spacing:.5px}
.bk-body{font-size:calc(1.02rem * var(--bk-fs,100) / 100);line-height:2.15;letter-spacing:.6px}
.bk-body p{margin:0 0 1.05em;text-align:justify}
.bk-body .bk-first::first-letter{float:left;font-size:2.7em;line-height:.9;padding:.06em .14em 0 0;color:var(--bk-gold);font-weight:600}
.bk-sign{margin-top:1.6rem;padding-top:1rem;border-top:1px solid var(--bk-edge);text-align:right;font-size:.8rem;color:var(--bk-ink-2);letter-spacing:1px}
.bk-atts{margin-top:1.5rem;padding-top:1.1rem;border-top:1px dashed var(--bk-edge)}
.bk-atts-t{font-size:.72rem;color:var(--bk-ink-2);letter-spacing:1px;margin-bottom:.7rem}
.bk-fig{margin:0 0 .9rem;border-radius:10px;overflow:hidden;border:1px solid var(--bk-edge);background:rgba(127,127,127,.06);width:fit-content;max-width:100%}
.bk-fig img{display:block;max-width:100%;max-height:62vh;object-fit:cover;cursor:zoom-in}
.bk-fig figcaption{padding:5px 10px;font-size:.7rem;color:var(--bk-ink-2)}
.bk-vid{width:100%;max-width:460px;border-radius:10px;border:1px solid var(--bk-edge);background:#000}
.bk-aud{display:flex;align-items:center;gap:8px;border:1px solid var(--bk-edge);border-radius:10px;padding:7px 11px;margin-bottom:.8rem}
.bk-aud audio{flex:1;min-width:170px;height:34px}
.bk-file{display:inline-flex;align-items:center;gap:6px;margin:0 .4rem .5rem 0;padding:6px 13px;border-radius:9px;border:1px solid var(--bk-edge);color:var(--bk-gold);font-size:.78rem;text-decoration:none}
.bk-sealed{text-align:center;padding:2.4rem 1rem 1.6rem}
.bk-sealed-ic{font-size:2.6rem;display:block}
.bk-sealed-t{margin-top:.8rem;font-size:1.2rem;font-weight:700;letter-spacing:2px}
.bk-sealed-m{margin-top:.5rem;font-size:.75rem;color:var(--bk-ink-2)}
.bk-sealed-c{display:inline-block;margin-top:.9rem;padding:5px 16px;border-radius:99px;border:1px solid var(--bk-edge);background:rgba(160,125,36,.12);color:var(--bk-gold);font-size:.76rem}
.bk-sealed-p{margin-top:1.3rem;font-size:.84rem;line-height:2;color:var(--bk-ink-2)}
.bk-pager{display:flex;align-items:center;justify-content:space-between;gap:.6rem;max-width:720px;margin:.9rem auto 0}
.bk-pb{padding:.55rem 1.1rem;border-radius:10px;border:1px solid var(--lff-line-2,rgba(255,255,255,.16));background:transparent;color:var(--lff-text-2,#94a3b8);font-size:.8rem;cursor:pointer;font-family:inherit}
.bk-pb:hover:not(:disabled){border-color:var(--lff-gold-line,rgba(226,196,136,.45));color:var(--lff-gold,#e2c488)}
.bk-pb:disabled{opacity:.35;cursor:not-allowed}
.bk-pn{font-size:.75rem;color:var(--lff-text-3,#64748b);font-variant-numeric:tabular-nums;white-space:nowrap}
.bk-wrap{display:block}
.bk-zoom{position:fixed;inset:0;z-index:9999;display:none;align-items:center;justify-content:center;padding:1.2rem;background:rgba(8,10,18,.9);cursor:zoom-out}
.bk-zoom.on{display:flex}
.bk-zoom img{max-width:94%;max-height:92%;border-radius:12px;box-shadow:0 12px 50px rgba(0,0,0,.6)}
.bk-zoom-x{position:fixed;top:14px;right:18px;width:36px;height:36px;line-height:34px;text-align:center;border-radius:50%;border:1px solid rgba(255,255,255,.25);color:#fff;font-size:1rem}
@media (max-width:600px){
.bk-book{padding:1.8rem 1.2rem 1.5rem 1.7rem;max-width:none}
.bk-title{font-size:1.75rem;letter-spacing:9px;text-indent:9px}
.bk-sub{font-size:.88rem;letter-spacing:3px}
.bk-page{padding:1.5rem 1.15rem 1.2rem;border-radius:3px}
.bk-page-title{font-size:1.2rem;letter-spacing:2px}
.bk-body{font-size:calc(1.06rem * var(--bk-fs,100) / 100);line-height:2.05}
.bk-bar{position:static;margin:0 0 .6rem}
.bk-vol-name{font-size:.94rem}
.bk-li{gap:.4rem;padding:.5rem .35rem}
.bk-li-d{display:none}
.bk-pb{flex:1}
.bk-li-s{font-size:.64rem}
.bk-sheet-note{display:none}
}
html.theme-light .bk-li-read .bk-li-s{color:#15803d}
html.theme-light .bk-li-lock .bk-li-s{color:#b45309}
/* v2.4.0 獨立閱讀頁（letter-book.html）頁殼 */
.tb-bar{position:sticky;top:0;z-index:20;display:flex;align-items:center;gap:.7rem;padding:.55rem 1rem;background:rgba(15,23,42,.84);border-bottom:1px solid rgba(226,196,136,.18);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}
html.theme-light .tb-bar{background:rgba(255,255,255,.88);border-bottom-color:rgba(160,125,36,.22)}
.tb-a{color:#e2c488;text-decoration:none;font-size:.84rem;white-space:nowrap}
html.theme-light .tb-a{color:#8a6a1e}
.tb-t{font-size:.95rem;font-weight:700;letter-spacing:4px;color:#e2c488}
html.theme-light .tb-t{color:#8a6a1e}
.tb-s{flex:1}
.tb-btn{border:1px solid rgba(226,196,136,.32);background:transparent;color:#e2c488;font-size:.76rem;padding:4px 10px;border-radius:8px;cursor:pointer;font-family:inherit}
html.theme-light .tb-btn{color:#8a6a1e;border-color:rgba(160,125,36,.32)}
.bk-host{max-width:880px;margin:0 auto;padding:1rem 1rem 3.5rem}
.bk-load{text-align:center;padding:3rem 1rem;color:#64748b;font-size:.9rem;line-height:1.9}
@media (max-width:600px){.bk-host{padding:.7rem .7rem 3rem}}
.bk-adm-bar{display:flex;align-items:center;gap:1rem;flex-wrap:wrap;border:1px solid var(--lff-gold-line,rgba(226,196,136,.3));background:rgba(226,196,136,.07);border-radius:12px;padding:.8rem 1rem;margin-bottom:1.2rem}
.bk-adm-txt{flex:1;min-width:200px;font-size:.78rem;line-height:1.85;color:var(--lff-text-2,#94a3b8)}
.bk-adm-txt b{color:var(--lff-gold,#e2c488)}
.bk-adm-btn{display:inline-block;padding:.5rem 1.1rem;border-radius:10px;border:1px solid var(--lff-gold-line,rgba(226,196,136,.45));background:rgba(226,196,136,.12);color:var(--lff-gold,#e2c488);font-size:.8rem;text-decoration:none;white-space:nowrap}
.bk-adm-btn:hover{background:rgba(226,196,136,.22)}
html.theme-light .bk-adm-btn{color:#8a6a1e}
html.theme-light .bk-adm-txt b{color:#8a6a1e}

/* ===== 一本家書 v2.5.0：目錄編輯器／即時更新 ===== */
.bk-bar-l{display:flex;gap:.3rem;align-items:center;flex:0 0 auto}
.bk-tb.on,.bk-tb-on{background:rgba(226,196,136,.18);color:var(--lff-gold,#e2c488);border-color:var(--lff-gold-line,rgba(226,196,136,.5));font-weight:600}
html.theme-light .bk-tb.on,html.theme-light .bk-tb-on{background:rgba(160,125,36,.15);color:#8a6a1e}
.bk-sheet-head .bk-tb{margin-left:.6rem}
.bk-tip{border:1px dashed var(--lff-gold-line,rgba(226,196,136,.3));background:rgba(226,196,136,.06);border-radius:11px;padding:.6rem .85rem;margin-bottom:1.1rem;font-size:.74rem;line-height:1.95;color:var(--lff-text-2,#94a3b8)}
.bk-tip b{color:var(--lff-gold,#e2c488)}
html.theme-light .bk-tip b{color:#8a6a1e}
.bk-vtools{display:inline-flex;gap:.25rem;align-items:center;margin-left:.4rem}
.bk-vbtn{border:1px solid var(--lff-line-2,rgba(255,255,255,.16));background:transparent;color:var(--lff-text-2,#94a3b8);font-size:.7rem;line-height:1;padding:3px 6px;border-radius:7px;cursor:pointer;font-family:inherit}
.bk-vbtn:hover{color:var(--lff-gold,#e2c488);border-color:var(--lff-gold-line,rgba(226,196,136,.5))}
.bk-vbtn:disabled{opacity:.28;cursor:default}
.bk-vbtn:disabled:hover{color:var(--lff-text-2,#94a3b8);border-color:var(--lff-line-2,rgba(255,255,255,.16))}
.bk-vbtn-del:hover{color:#f87171;border-color:rgba(248,113,113,.5)}
.bk-vol-cats{display:flex;gap:.3rem;flex-wrap:wrap;margin:-.3rem 0 .65rem}
.bk-vcat{font-size:.64rem;color:var(--lff-text-3,#6b7a92);border:1px solid var(--lff-line,rgba(255,255,255,.12));border-radius:99px;padding:1px 8px}
.bk-vol-auto{border-left:2px solid rgba(251,191,36,.45);padding-left:.7rem;border-radius:0 8px 8px 0}
.bk-vol-auto .bk-vol-name{color:var(--lff-text-2,#94a3b8)}
.bk-vadd{display:block;width:100%;margin:.2rem 0 1.1rem;padding:.72rem;border:1px dashed var(--lff-gold-line,rgba(226,196,136,.38));background:transparent;color:var(--lff-gold,#e2c488);border-radius:11px;font-size:.8rem;cursor:pointer;font-family:inherit;transition:background .2s}
.bk-vadd:hover{background:rgba(226,196,136,.1)}
html.theme-light .bk-vadd{color:#8a6a1e}
.bk-li-main{display:flex;align-items:center;gap:.55rem;flex:1;min-width:0;cursor:pointer}
.bk-li-edit{flex:0 0 auto}
.bk-editrow{display:flex;gap:.6rem;flex-wrap:wrap;justify-content:center;margin-top:1.7rem;padding-top:1.2rem;border-top:1px dashed var(--bk-edge,rgba(150,118,64,.26))}
.bk-dirty{position:sticky;bottom:.5rem;z-index:6;display:flex;align-items:center;gap:.8rem;flex-wrap:wrap;margin-top:1.2rem;padding:.6rem .85rem;border-radius:11px;border:1px solid rgba(251,191,36,.45);background:rgba(251,191,36,.14);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}
.bk-dirty>span:first-child{font-size:.76rem;color:#fbbf24}
.bk-dirty-r{margin-left:auto;display:flex;gap:.4rem}
html.theme-light .bk-dirty{background:rgba(251,191,36,.22)}
html.theme-light .bk-dirty>span:first-child{color:#a16207}
.bk-link-btn{background:transparent;border:0;border-bottom:1px dotted currentColor;cursor:pointer;font-family:inherit;padding:0;font-size:.72rem;color:var(--cv3,#877a66)}
.bk-ed{position:fixed;inset:0;z-index:9996;display:flex;align-items:center;justify-content:center;padding:1.2rem;background:rgba(8,12,20,.74);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}
.bk-ed-box{width:100%;max-width:560px;max-height:88vh;overflow-y:auto;border-radius:16px;border:1px solid var(--lff-gold-line,rgba(226,196,136,.32));background:linear-gradient(165deg,#242438,#1b1b2c);box-shadow:0 18px 60px rgba(0,0,0,.55)}
html.theme-light .bk-ed-box{background:linear-gradient(165deg,#fffdf8,#f6f1e6)}
.bk-ed-h{display:flex;align-items:center;justify-content:space-between;gap:.6rem;padding:.95rem 1.15rem;border-bottom:1px solid var(--lff-line,rgba(255,255,255,.1));font-size:.92rem;font-weight:600;color:var(--lff-gold,#e2c488)}
html.theme-light .bk-ed-h{color:#8a6a1e}
.bk-ed-x{border:0;background:transparent;color:var(--lff-text-3,#6b7a92);font-size:1rem;cursor:pointer;font-family:inherit}
.bk-ed-b{padding:1.1rem 1.15rem}
.bk-ed-row{display:flex;align-items:center;gap:.8rem;margin-bottom:.85rem}
.bk-ed-col{flex-direction:column;align-items:stretch;gap:.4rem}
.bk-ed-col .bk-ed-l{flex:0 0 auto}
.bk-ed-l{flex:0 0 8.2rem;font-size:.78rem;color:var(--lff-text-2,#9aa7bd);display:flex;flex-direction:column;gap:2px}
.bk-ed-l i{font-style:normal;font-size:.65rem;color:var(--lff-text-3,#6b7a92);line-height:1.5}
.bk-ed-i{flex:1;width:100%;box-sizing:border-box;padding:.5rem .7rem;border-radius:9px;border:1px solid var(--lff-line-2,rgba(255,255,255,.16));background:rgba(148,163,184,.07);color:var(--lff-text,#e6ebf4);font-size:.84rem;font-family:inherit;outline:none}
.bk-ed-i:focus{border-color:var(--lff-gold-line,rgba(226,196,136,.55));background:rgba(226,196,136,.06)}
html.theme-light .bk-ed-i{color:#1e293b}
.bk-ed-ta{resize:vertical;min-height:4.2rem;line-height:1.9}
.bk-ed-ta2{min-height:11rem}
.bk-ed-cats{display:flex;gap:.35rem;flex-wrap:wrap}
.bk-cat{border:1px solid var(--lff-line-2,rgba(255,255,255,.16));background:transparent;color:var(--lff-text-2,#9aa7bd);font-size:.74rem;padding:4px 11px;border-radius:99px;cursor:pointer;font-family:inherit;transition:all .18s}
.bk-cat:hover{border-color:var(--lff-gold-line,rgba(226,196,136,.5))}
.bk-cat.on{background:rgba(226,196,136,.18);color:var(--lff-gold,#e2c488);border-color:var(--lff-gold-line,rgba(226,196,136,.55));font-weight:600}
html.theme-light .bk-cat.on{color:#8a6a1e;background:rgba(160,125,36,.16)}
.bk-ed-warn{margin-top:.6rem;font-size:.74rem;color:#fbbf24;line-height:1.85;min-height:1px}
.bk-ed-f{display:flex;gap:.5rem;justify-content:flex-end;align-items:center;padding:.85rem 1.15rem;border-top:1px solid var(--lff-line,rgba(255,255,255,.1))}
.bk-btn-danger{border-color:rgba(248,113,113,.45);color:#f87171;background:rgba(248,113,113,.08);margin-right:auto}
.bk-btn-danger:hover{background:rgba(248,113,113,.2)}
.bk-load2{text-align:center;padding:3rem 1rem;color:var(--lff-text-3,#6b7a92);font-size:.9rem;line-height:1.9}
@media (max-width:600px){
 .bk-ed{padding:.6rem}
 .bk-ed-box{max-height:92vh}
 .bk-ed-row{flex-direction:column;align-items:stretch;gap:.35rem;margin-bottom:1rem}
 .bk-ed-l{flex:0 0 auto}
 .bk-ed-f{flex-wrap:wrap}
 .bk-ed-f .bk-btn{flex:1;min-width:40%}
 .bk-btn-danger{margin-right:0;flex:1 0 100%!important;order:3}
 .bk-dirty{position:static}
 .bk-vtools{margin-left:auto}
 .bk-vadd{padding:.85rem}
}
.bk-toast{position:fixed;left:50%;bottom:1.4rem;transform:translate(-50%,1.2rem);z-index:9999;max-width:88vw;padding:.62rem 1.05rem;border-radius:99px;border:1px solid var(--lff-gold-line,rgba(226,196,136,.45));background:rgba(24,32,46,.94);color:var(--lff-gold,#e2c488);font-size:.78rem;line-height:1.6;box-shadow:0 10px 30px rgba(0,0,0,.4);opacity:0;pointer-events:none;transition:opacity .28s,transform .28s}
.bk-toast.on{opacity:1;transform:translate(-50%,0)}
html.theme-light .bk-toast{background:rgba(255,253,248,.97);color:#8a6a1e}
/* =====================================================================
   v2.6.0 全站介面精修  ──  Part A：效能層 / 外框 / 逐頁版面
   ===================================================================== */

/* ---------- A1. 效能：動畫尊重偏好、長列表延遲渲染、捲動容器穩定 ---------- */
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}
  html{scroll-behavior:auto!important}
}
/* 長列表／表格列：畫面外的內容不參與版面計算與繪製 */
.capsule-item,.bk-li,.rp-table tbody tr,.rp-mini-row,.lff-row{
  content-visibility:auto;contain-intrinsic-size:auto 74px;
}
/* 純版面隔離（不含 paint，避免裁掉 hover 陰影與彈出層） */
.asset-card,.profit-card,.rp-card,.rp-sum,.contract-card,.chart-container,.red-packet-card,.bk-book,.bk-page{contain:layout style}
.chart-wrapper canvas{contain:strict;display:block}

/* ---------- A2. 逐頁主題色：整頁依當前功能頁換上對應色調 ---------- */
body{--pg:var(--lff-gold);--pg-soft:rgba(226,196,136,.13);--pg-line:rgba(226,196,136,.30)}
body:has(.nav-item.active[data-page="dashboard"]){--pg:#e2c488;--pg-soft:rgba(226,196,136,.13);--pg-line:rgba(226,196,136,.30);--lff-pw:1380px}
body:has(.nav-item.active[data-page="capsule"]){--pg:#e0bd77;--pg-soft:rgba(224,189,119,.14);--pg-line:rgba(224,189,119,.32);--lff-pw:1280px}
body:has(.nav-item.active[data-page="trades"]){--pg:#6ea8fe;--pg-soft:rgba(110,168,254,.13);--pg-line:rgba(110,168,254,.30)}
body:has(.nav-item.active[data-page="accounts"]){--pg:#4fd1c5;--pg-soft:rgba(79,209,197,.13);--pg-line:rgba(79,209,197,.30)}
body:has(.nav-item.active[data-page="salary"]){--pg:#f0b429;--pg-soft:rgba(240,180,41,.13);--pg-line:rgba(240,180,41,.30)}
body:has(.nav-item.active[data-page="redpacket"]){--pg:#f4706b;--pg-soft:rgba(244,112,107,.13);--pg-line:rgba(244,112,107,.30)}
body:has(.nav-item.active[data-page="manual"]){--pg:#a78bfa;--pg-soft:rgba(167,139,250,.13);--pg-line:rgba(167,139,250,.30)}
body:has(.nav-item.active[data-page="devdoc"]){--pg:#22d3ee;--pg-soft:rgba(34,211,238,.13);--pg-line:rgba(34,211,238,.30)}
body:has(.nav-item.active[data-page="backups"]){--pg:#b6c0d0;--pg-soft:rgba(182,192,208,.13);--pg-line:rgba(182,192,208,.28);--lff-pw:1000px}
body:has(.nav-item.active[data-page="profit"]){--pg:#4fd1c5;--pg-soft:rgba(79,209,197,.13);--pg-line:rgba(79,209,197,.30);--lff-pw:1120px}
body:has(.nav-item.active[data-page="donation"]){--pg:#f4706b;--pg-soft:rgba(244,112,107,.13);--pg-line:rgba(244,112,107,.30);--lff-pw:1040px}
body:has(.nav-item.active[data-page="contract"]){--pg:#e0bd77;--pg-soft:rgba(224,189,119,.13);--pg-line:rgba(224,189,119,.30);--lff-pw:1000px}
body:has(.nav-item.active[data-page="account"]){--pg:#6ea8fe;--pg-soft:rgba(110,168,254,.13);--pg-line:rgba(110,168,254,.30);--lff-pw:900px}
body:has(.nav-item.active[data-page="devdoc"]) .main-wrapper,body:has(.nav-item.active[data-page="devdoc"]) .main{--lff-pw:none}

/* ---------- A3. 頁首 ---------- */
.header{
  min-height:var(--lff-hd);
  padding:.62rem 1.5rem!important;
  background:linear-gradient(180deg,rgba(11,17,32,.90),rgba(11,17,32,.74))!important;
  -webkit-backdrop-filter:saturate(150%) blur(10px);backdrop-filter:saturate(150%) blur(10px);
}
.header .brand{min-width:0;flex:1 1 auto}
.header .brand h1{font-size:1.02rem!important}
/* 目前所在功能頁（僅寬螢幕顯示，窄螢幕靠側欄／底部導覽辨識） */
@media (min-width:1180px){
  body:has(.nav-item.active[data-page="dashboard"]) .header .brand h1::after{content:" · 總覽"}
  body:has(.nav-item.active[data-page="capsule"]) .header .brand h1::after{content:" · 一本家書"}
  body:has(.nav-item.active[data-page="trades"]) .header .brand h1::after{content:" · 交易管理"}
  body:has(.nav-item.active[data-page="accounts"]) .header .brand h1::after{content:" · 帳戶管理"}
  body:has(.nav-item.active[data-page="salary"]) .header .brand h1::after{content:" · 薪資管理"}
  body:has(.nav-item.active[data-page="redpacket"]) .header .brand h1::after{content:" · 紅包與捐贈"}
  body:has(.nav-item.active[data-page="manual"]) .header .brand h1::after{content:" · 使用說明"}
  body:has(.nav-item.active[data-page="devdoc"]) .header .brand h1::after{content:" · 開發文件"}
  body:has(.nav-item.active[data-page="backups"]) .header .brand h1::after{content:" · 版本備份"}
  body:has(.nav-item.active[data-page="profit"]) .header .brand h1::after{content:" · 投資獲利"}
  body:has(.nav-item.active[data-page="donation"]) .header .brand h1::after{content:" · 提領與捐贈"}
  body:has(.nav-item.active[data-page="contract"]) .header .brand h1::after{content:" · 合約內容"}
  body:has(.nav-item.active[data-page="account"]) .header .brand h1::after{content:" · 帳戶管理"}
  .header .brand h1::after{opacity:.6;letter-spacing:.04em}
}
/* 版本徽章（HTML 內為行內樣式，需 !important 覆寫） */
.header .brand>span:last-child{
  font-size:.66rem!important;color:var(--lff-text-2)!important;margin-left:.6rem!important;
  padding:2px 9px!important;border-radius:var(--lff-r-pill);border:1px solid var(--lff-line-2);
  background:var(--lff-surface);letter-spacing:.06em;font-variant-numeric:tabular-nums;
  vertical-align:middle;white-space:nowrap;
}
.header .user-info{gap:.5rem!important}
.header .user-info #displayName{
  font-size:.82rem!important;color:var(--lff-text)!important;font-weight:500;
  padding:5px 12px;border-radius:var(--lff-r-pill);border:1px solid var(--lff-line);
  background:var(--lff-surface);white-space:nowrap;max-width:11rem;overflow:hidden;text-overflow:ellipsis;
}
.header .btn{min-height:34px;padding:.4rem .85rem!important}
.header .brand .icon{box-shadow:0 0 0 1px rgba(255,255,255,.04),0 8px 18px -12px rgba(226,196,136,.8)}

/* ---------- A4. 側欄：分組標籤、黏頂、主題色指示燈 ---------- */
.layout{min-height:calc(100vh - var(--lff-hd))!important;align-items:flex-start}
.sidebar{width:216px!important;flex:0 0 216px!important;padding:1.1rem .7rem 1.4rem!important}
@media (min-width:821px){
  .sidebar{
    position:sticky;top:var(--lff-hd);
    max-height:calc(100vh - var(--lff-hd));
    overflow-y:auto;overscroll-behavior:contain;
  }
  .sidebar::before{
    content:'功能選單';display:block;
    font-size:.64rem;letter-spacing:.18em;color:var(--lff-text-3);
    padding:0 .85rem .5rem;text-transform:uppercase;
  }
  .sidebar::after{
    content:'';display:block;margin:1.1rem .5rem 0;height:1px;
    background:linear-gradient(90deg,transparent,var(--lff-line-2),transparent);
  }
  .sidebar .nav-item{position:relative;padding-left:.95rem!important}
  .sidebar .nav-item::before{
    content:'';position:absolute;left:3px;top:50%;transform:translateY(-50%) scaleY(0);
    width:3px;height:20px;border-radius:99px;background:var(--pg);
    transition:transform .2s var(--lff-ease),opacity .2s;transform-origin:center;
  }
  .sidebar .nav-item.active::before{transform:translateY(-50%) scaleY(1)}
  .sidebar .nav-item:hover::before{transform:translateY(-50%) scaleY(.55);opacity:.7}
}
.sidebar .nav-item.active{
  background:linear-gradient(90deg,var(--pg-soft),transparent 85%)!important;
  color:var(--pg)!important;
  box-shadow:inset 0 0 0 1px var(--pg-line)!important;
}
@media (hover:hover){.sidebar .nav-item:hover{transform:none!important}}
.sidebar .nav-item:active{background:var(--lff-surface-2)!important}

/* ---------- A5. 主內容：逐頁寬度與留白 ---------- */
.main-wrapper,.main{padding:1.5rem 1.75rem 3.4rem!important}
.main-wrapper{max-width:var(--lff-pw,1240px)}
.main{max-width:var(--lff-pw,1020px)!important}

.main-wrapper.lff-hide,.main.lff-hide{display:none!important}
/* 內嵌文件（使用說明／開發文件）滿版呈現：外框美化，尺寸沿用既有滿版高度 */
.lff-embed{padding:0!important}
.lff-embed iframe{border-radius:var(--lff-r-md);border:1px solid var(--lff-line)}

/* ---------- A6. 頁面標題帶（.welcome / .capsule-page-hero） ---------- */
.welcome{
  position:relative;overflow:hidden;
  margin:0 0 1.35rem!important;padding:1.05rem 1.25rem 1.05rem 1.35rem;
  border:1px solid var(--lff-line)!important;border-left:3px solid var(--pg)!important;
  border-radius:var(--lff-r-md);background:linear-gradient(120deg,var(--pg-soft),rgba(255,255,255,.012) 62%);
  box-shadow:var(--lff-hair);contain:layout style;
}
.welcome::before{
  content:'';position:absolute;right:-40px;top:-70px;width:220px;height:220px;border-radius:50%;
  background:radial-gradient(circle,var(--pg-soft),transparent 68%);pointer-events:none;
}
.welcome h2{font-size:1.28rem!important;letter-spacing:.02em;line-height:1.4}
.welcome p{color:var(--lff-text-2)!important;font-size:.83rem!important;margin-top:.3rem!important;line-height:1.6}
.welcome>*{position:relative;z-index:1}
.capsule-page-hero{
  position:relative;overflow:hidden;margin-bottom:1.35rem!important;
  padding:1.5rem 1.6rem 1.4rem!important;border-radius:var(--lff-r-lg)!important;
  border:1px solid var(--pg-line)!important;
  background:linear-gradient(135deg,var(--pg-soft),rgba(255,255,255,.012) 70%)!important;
}
.capsule-page-hero .ph-title{font-size:1.5rem!important;letter-spacing:.32em!important}
.capsule-page-hero .ph-sub{color:var(--lff-text-2)!important;font-size:.85rem!important}
.capsule-page-hero .ph-line{width:56px;height:2px;margin:.85rem 0 0;border-radius:99px!important;background:linear-gradient(90deg,var(--pg),transparent)!important}
.capsule-page-hero .ph-icon{
  display:inline-flex;align-items:center;justify-content:center;width:44px;height:44px;
  border-radius:13px;font-size:1.3rem!important;
  background:var(--pg-soft);border:1px solid var(--pg-line);margin-bottom:.5rem;
}

/* ---------- A7. 區段標題 ---------- */
.section-title{
  margin:1.7rem 0 .8rem!important;padding:0 0 .5rem .72rem!important;
  border-bottom:1px solid var(--lff-line)!important;border-left:3px solid var(--pg)!important;
  font-size:.99rem!important;letter-spacing:.02em;
}
.section-title>span:first-child{display:inline-flex;align-items:center;gap:.45rem}
.section-title:first-child{margin-top:.2rem!important}
/* =====================================================================
   Part B：共用元件精修（表格 / 卡片 / 表單 / 按鈕 / 彈窗 / 提示）
   ===================================================================== */

/* ---------- B1. 表格：等寬數字、欄位對齊、細分隔線、可捲動提示 ---------- */
.table-wrap{
  position:relative;overflow:auto;-webkit-overflow-scrolling:touch;overscroll-behavior-x:contain;
  border:1px solid var(--lff-line)!important;border-radius:var(--lff-r-md)!important;
  background:linear-gradient(180deg,rgba(255,255,255,.022),rgba(255,255,255,.006));
  box-shadow:inset -16px 0 16px -16px rgba(0,0,0,.6);
  scrollbar-width:thin;
}
.holding-table,.trade-table,.account-table,.salary-table,.rp-table{
  width:100%!important;border-collapse:separate!important;border-spacing:0!important;
  font-size:.82rem!important;font-variant-numeric:tabular-nums;font-feature-settings:"tnum" 1;
}
.holding-table thead th,.trade-table thead th,.account-table thead th,.salary-table thead th,.rp-table thead th{
  background:linear-gradient(180deg,rgba(255,255,255,.05),rgba(255,255,255,.014))!important;
  color:var(--lff-text-3)!important;font-size:.68rem!important;font-weight:600!important;
  letter-spacing:.1em;text-transform:uppercase;white-space:nowrap;
  padding:.6rem .8rem!important;border-bottom:1px solid var(--pg-line)!important;
}
.holding-table tbody td,.trade-table tbody td,.account-table tbody td,.salary-table tbody td,.rp-table tbody td{
  padding:.52rem .8rem!important;border-bottom:1px solid var(--lff-line)!important;
  color:var(--lff-text-2)!important;white-space:nowrap;line-height:1.45;
}
.holding-table tbody td:first-child,.trade-table tbody td:first-child,.account-table tbody td:first-child,.salary-table tbody td:first-child,.rp-table tbody td:first-child{
  color:var(--lff-text)!important;font-weight:500;
}
.holding-table tbody tr:last-child td,.trade-table tbody tr:last-child td,.account-table tbody tr:last-child td,.salary-table tbody tr:last-child td,.rp-table tbody tr:last-child td{border-bottom:0!important}
.holding-table tbody tr:hover td,.trade-table tbody tr:hover td,.account-table tbody tr:hover td,.salary-table tbody tr:hover td,.rp-table tbody tr:hover td{
  background:linear-gradient(90deg,var(--pg-soft),transparent 72%)!important;
}
/* 數值欄靠右＋等寬，掃視對齊 */
.holding-table th:nth-child(n+4),.holding-table td:nth-child(n+4),
.trade-table th:nth-child(n+5),.trade-table td:nth-child(n+5),
.account-table th:nth-child(n+2),.account-table td:nth-child(n+2),
.salary-table th:nth-child(n+3),.salary-table td:nth-child(n+3),
.rp-table th:nth-child(n+2),.rp-table td:nth-child(n+2){text-align:right!important}
.rp-table th:last-child,.rp-table td:last-child{text-align:left!important}

/* ---------- B2. 卡片家族 ---------- */
.asset-cards{gap:.85rem!important;margin-bottom:1.5rem!important;grid-template-columns:repeat(auto-fit,minmax(232px,1fr))!important}
.asset-card{
  padding:1rem 1.05rem .9rem!important;border-radius:var(--lff-r-md)!important;
  row-gap:.12rem!important;column-gap:.62rem!important;
}
.asset-card .a-avatar{
  width:34px;height:34px;display:inline-flex!important;align-items:center;justify-content:center;
  border-radius:11px;font-size:1.15rem!important;grid-row:1;
  background:rgba(255,255,255,.05);border:1px solid var(--lff-line);
}
.asset-card.father .a-avatar{background:rgba(226,196,136,.14);border-color:var(--lff-gold-line)}
.asset-card.total .a-avatar{background:rgba(52,211,153,.13);border-color:rgba(52,211,153,.30)}
.asset-card:not(.father):not(.total) .a-avatar{background:rgba(96,165,250,.13);border-color:rgba(96,165,250,.28)}
.asset-card .a-name{font-size:.85rem!important;letter-spacing:.04em}
.asset-card .a-total{font-size:1.42rem!important;font-weight:700!important;font-variant-numeric:tabular-nums;letter-spacing:-.01em;line-height:1.25;margin-top:.1rem}
.asset-card .a-pnl{
  display:inline-flex;align-items:center;gap:.3rem;align-self:flex-start;
  margin-top:.4rem;padding:3px 10px;border-radius:var(--lff-r-pill);
  font-size:.74rem!important;font-weight:600;font-variant-numeric:tabular-nums;
  background:var(--lff-down-soft);border:1px solid rgba(57,181,127,.3);
}
.asset-card .a-pnl.pl-positive{background:var(--lff-up-soft)!important;border-color:rgba(244,112,107,.32)!important;color:var(--lff-up)!important}
.asset-card .a-pnl.pl-negative{background:var(--lff-down-soft)!important;border-color:rgba(57,181,127,.32)!important;color:var(--lff-down)!important}
.asset-card .a-detail{
  grid-column:1/-1;margin-top:.7rem!important;padding-top:.68rem!important;
  border-top:1px dashed var(--lff-line-2)!important;
  font-size:.76rem!important;line-height:1.85!important;font-variant-numeric:tabular-nums;
}
@media (hover:hover){
  .asset-card:hover{transform:translateY(-2px);border-color:var(--pg-line)!important;box-shadow:var(--lff-sh-3)}
}
/* 損益趨勢卡 */
.profit-card{padding:1.15rem 1.3rem 1rem!important;border-radius:var(--lff-r-md)!important}
.profit-card .profit-amount{font-size:1.72rem!important;font-weight:700!important;font-variant-numeric:tabular-nums;letter-spacing:-.015em}
.profit-card .year-label{font-size:.72rem!important;letter-spacing:.1em;color:var(--lff-text-3)!important}
.profit-detail .item{padding:.62rem .75rem!important;border-radius:11px!important;background:rgba(255,255,255,.028);border:1px solid var(--lff-line)}
.profit-detail .item .label{font-size:.7rem!important;color:var(--lff-text-3)!important;letter-spacing:.02em}
.profit-detail .item .value{font-size:.98rem!important;font-weight:600;font-variant-numeric:tabular-nums}
.profit-positive{color:var(--lff-up)!important}
.profit-negative{color:var(--lff-down)!important}
.profit-zero{color:var(--lff-text-2)!important}
.pl-positive,.profit-positive{color:var(--lff-up)!important}
.pl-negative,.profit-negative{color:var(--lff-down)!important}
td.pl-positive,th.pl-positive{color:var(--lff-up)!important}
td.pl-negative,th.pl-negative{color:var(--lff-down)!important}
/* 通用內容卡 */
.capsule-card,.contract-card,.red-packet-card{
  border-radius:var(--lff-r-md)!important;padding:1.2rem 1.3rem!important;
  background:linear-gradient(168deg,rgba(255,255,255,.045),rgba(255,255,255,.012))!important;
  border:1px solid var(--lff-line)!important;
}
.capsule-card>h3,.red-packet-card>h3{
  display:flex;align-items:center;gap:.5rem;
  font-size:.97rem!important;font-weight:600!important;color:var(--lff-text)!important;
  padding-bottom:.6rem;margin-bottom:.9rem;border-bottom:1px solid var(--lff-line);
}

/* ---------- B3. 圖表 ---------- */
.chart-container{padding:1.1rem 1.25rem 1.1rem!important;border-radius:var(--lff-r-md)!important}
.chart-wrapper{height:clamp(190px,30vh,300px)!important;min-height:190px}
.chart-container h3{font-size:.9rem!important;letter-spacing:.02em}
/* 日／週／月／年 切換鈕 → 分段控制項 */
.chart-container .chart-wrapper~* button,
.chart-container>div>button{
  border-radius:var(--lff-r-pill)!important;border:1px solid var(--lff-line-2)!important;
  background:transparent!important;color:var(--lff-text-2)!important;
  font-size:.72rem!important;min-height:26px;padding:0 .7rem!important;margin-right:.25rem;
  transition:background var(--lff-t1),color var(--lff-t1)!important;
}

/* ---------- B4. 表單 ---------- */
.form-group{margin-bottom:1rem!important}
.form-group label{
  display:block;font-size:.76rem!important;font-weight:500!important;letter-spacing:.03em;
  color:var(--lff-text-2)!important;margin-bottom:.38rem!important;
}
.form-group input,.form-group select,.form-group textarea,.modal .form-group input,.modal .form-group select,.modal .form-group textarea{
  width:100%;min-height:42px;padding:.6rem .8rem!important;border-radius:11px!important;
  border:1px solid var(--lff-line-2)!important;background:rgba(148,163,184,.07)!important;
  color:var(--lff-text)!important;font-size:.88rem!important;line-height:1.4;
  transition:border-color var(--lff-t1),background var(--lff-t1),box-shadow var(--lff-t1)!important;
}
.form-group input:focus,.form-group select:focus,.form-group textarea:focus{
  border-color:var(--pg)!important;background:var(--pg-soft)!important;
  box-shadow:0 0 0 3px var(--pg-soft)!important;outline:none!important;
}
.form-group input:disabled{opacity:.62;cursor:not-allowed}
.form-group select{appearance:none;padding-right:2.1rem!important;
  background-image:linear-gradient(45deg,transparent 50%,var(--lff-text-3) 50%),linear-gradient(135deg,var(--lff-text-3) 50%,transparent 50%);
  background-position:calc(100% - 17px) calc(50% + 1px),calc(100% - 12px) calc(50% + 1px);
  background-size:5px 5px,5px 5px;background-repeat:no-repeat}
.acc-tip{font-size:.76rem!important;color:var(--lff-text-2)!important;line-height:1.7!important;margin:.35rem 0 .2rem!important}
.form-group input[type=checkbox]{min-height:0;width:17px;height:17px;accent-color:var(--pg);flex:0 0 auto}

/* ---------- B5. 篩選列 ---------- */
.filter-bar{
  gap:.55rem!important;padding:.7rem .8rem!important;border-radius:var(--lff-r-md)!important;
  background:linear-gradient(180deg,rgba(255,255,255,.045),rgba(255,255,255,.015))!important;
  border:1px solid var(--lff-line)!important;margin-bottom:1.1rem!important;
}
.filter-bar select{
  min-height:38px!important;border-radius:10px!important;font-size:.82rem!important;
  border:1px solid var(--lff-line-2)!important;background:rgba(148,163,184,.08)!important;color:var(--lff-text)!important;
  padding:.35rem 2rem .35rem .7rem!important;
}
.lff-filter{
  padding:.55rem 1.5rem!important;background:linear-gradient(180deg,rgba(11,17,32,.92),rgba(11,17,32,.72))!important;
  border-bottom:1px solid var(--lff-line);
}
.lff-filter input{border-radius:var(--lff-r-pill)!important;min-height:36px}
.lff-cnt{font-size:.72rem;color:var(--lff-text-3)}

/* ---------- B6. 空狀態 / 載入 ---------- */
.empty{
  padding:2rem 1.2rem!important;border-radius:var(--lff-r-md)!important;
  border:1px dashed var(--pg-line)!important;background:var(--pg-soft);
  font-size:.82rem!important;color:var(--lff-text-2)!important;line-height:1.8;
}
.loading{padding:3.4rem!important;font-size:.85rem}

/* ---------- B7. 彈窗（行動裝置改為底部上滑面板） ---------- */
.modal-overlay{background:rgba(6,10,20,.74)!important;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px)}
.modal{
  border-radius:var(--lff-r-lg)!important;border:1px solid var(--lff-line-2)!important;
  background:linear-gradient(168deg,#16203a,#0d1526)!important;
  box-shadow:var(--lff-sh-3)!important;padding:1.4rem 1.5rem!important;
  max-height:88vh;overflow:auto;overscroll-behavior:contain;
}
.modal h3{
  font-size:1.03rem!important;padding-bottom:.65rem;margin-bottom:1.05rem;
  border-bottom:1px solid var(--lff-line);color:var(--lff-text)!important;
}
.modal .btn-row{gap:.6rem!important;padding-top:.9rem;border-top:1px solid var(--lff-line);margin-top:1.1rem}
.modal .btn-row .btn{flex:1}

/* ---------- B8. 提示訊息 ---------- */
.toast{
  border-radius:var(--lff-r-pill)!important;padding:.7rem 1.15rem!important;
  font-size:.83rem!important;box-shadow:var(--lff-sh-3)!important;
  border:1px solid var(--lff-line-2)!important;max-width:min(90vw,420px);
}
.toast-success{border-color:rgba(57,181,127,.45)!important;background:linear-gradient(135deg,#0f2f26,#132a25)!important;color:#8ff0c4!important}
.toast-error{border-color:rgba(244,112,107,.45)!important;background:linear-gradient(135deg,#33191b,#2a1618)!important;color:#ffb4b0!important}

/* ---------- B9. 回到頂部 ---------- */
.lff-top{
  border-radius:50%!important;width:42px!important;height:42px!important;
  border:1px solid var(--pg-line)!important;background:rgba(15,23,42,.9)!important;
  color:var(--pg)!important;box-shadow:var(--lff-sh-2)!important;
}
/* =====================================================================
   Part C：逐功能頁專屬版面
   ===================================================================== */

/* ---------- C1. 版本備份：最新版突出、下載鈕降噪 ---------- */
body:has(.nav-item.active[data-page="backups"]) .capsule-card{padding:.55rem!important;background:rgba(255,255,255,.02)!important}
body:has(.nav-item.active[data-page="backups"]) .capsule-card table{
  width:100%!important;border-collapse:separate!important;border-spacing:0!important;
  font-size:.8rem!important;font-variant-numeric:tabular-nums;
}
body:has(.nav-item.active[data-page="backups"]) .capsule-card th{
  padding:.62rem .8rem!important;font-size:.66rem!important;letter-spacing:.1em;text-transform:uppercase;
  font-weight:600!important;color:var(--lff-text-3)!important;
  text-align:left!important;border-bottom:1px solid var(--pg-line)!important;white-space:nowrap;
}
body:has(.nav-item.active[data-page="backups"]) .capsule-card td{
  padding:.52rem .8rem!important;border-bottom:1px solid var(--lff-line)!important;
  color:var(--lff-text-2)!important;white-space:nowrap;
}
body:has(.nav-item.active[data-page="backups"]) .capsule-card tbody tr:last-child td{border-bottom:0!important}
body:has(.nav-item.active[data-page="backups"]) .capsule-card tbody tr:hover td{background:rgba(255,255,255,.03)!important}
body:has(.nav-item.active[data-page="backups"]) .capsule-card tbody tr:first-child td{
  background:linear-gradient(90deg,rgba(226,196,136,.13),transparent 80%)!important;color:var(--lff-text)!important;
}
body:has(.nav-item.active[data-page="backups"]) .capsule-card tbody tr:first-child td:first-child::after{
  content:'目前最新';display:inline-block;margin-left:.5rem;padding:1px 7px;border-radius:99px;
  font-size:.6rem;font-weight:600;letter-spacing:.04em;color:#241a06;background:linear-gradient(135deg,#c9a84c,#e2c488);
  vertical-align:middle;
}
body:has(.nav-item.active[data-page="backups"]) .capsule-card td:nth-child(3){
  font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.75rem;color:var(--lff-text-3)!important;
  max-width:22rem;overflow:hidden;text-overflow:ellipsis;
}
body:has(.nav-item.active[data-page="backups"]) .capsule-card a[download]{
  display:inline-flex!important;align-items:center;gap:4px;
  background:transparent!important;color:var(--lff-text-2)!important;
  border:1px solid var(--lff-line-2)!important;border-radius:var(--lff-r-pill)!important;
  padding:3px 12px!important;font-size:.73rem!important;font-weight:500!important;
  text-decoration:none!important;transition:all var(--lff-t1)!important;
}
body:has(.nav-item.active[data-page="backups"]) .capsule-card a[download]:hover{
  border-color:var(--pg-line)!important;color:var(--pg)!important;background:var(--pg-soft)!important;
}
body:has(.nav-item.active[data-page="backups"]) .capsule-card tbody tr:first-child a[download]{
  background:linear-gradient(135deg,#c9a84c,#e2c488)!important;color:#241a06!important;
  border-color:transparent!important;font-weight:600!important;
  box-shadow:0 5px 14px -8px rgba(226,196,136,.8)!important;
}

/* ---------- C2. 紅包與捐贈（管理端）：統計條化 ---------- */
body:has(.nav-item.active[data-page="redpacket"]) .rp-sumcards{
  display:grid!important;grid-template-columns:repeat(auto-fit,minmax(150px,1fr))!important;gap:.65rem!important;
}
body:has(.nav-item.active[data-page="redpacket"]) .rp-card{margin-bottom:.9rem!important}

/* ---------- C3. 提領與捐贈：四步驟引導式流程 ---------- */
.rp-card{position:relative;margin-bottom:1.05rem!important}
.rp-card+.rp-card::before{
  content:'';position:absolute;left:2.55rem;top:-1.05rem;width:1px;height:1.05rem;
  background:linear-gradient(180deg,transparent,var(--pg-line));
}
.rp-card>h3{
  display:block!important;font-size:.95rem!important;font-weight:600!important;
  color:var(--lff-text)!important;border-bottom:1px dashed var(--lff-line-2);
  padding-bottom:.72rem;margin-bottom:1.05rem;letter-spacing:.01em;line-height:1.6;
}
.rp-card>h3::first-letter{
  display:inline-block;vertical-align:middle;
  background:linear-gradient(135deg,#c9a84c,#e2c488);color:#241a06;
  border-radius:var(--lff-r-pill);padding:.1em .5em;margin-right:.6rem;
  font-size:.9em;font-weight:700;line-height:1.5;
}
.rp-top{
  display:flex!important;align-items:center;gap:.6rem;flex-wrap:wrap;
  padding:.6rem .8rem;border-radius:var(--lff-r-md);
  background:linear-gradient(180deg,rgba(255,255,255,.045),rgba(255,255,255,.015));
  border:1px solid var(--lff-line);margin-bottom:.7rem;
}
.rp-top select{min-height:36px!important;min-width:11rem}
.rp-status{font-size:.72rem!important;padding:.28rem .8rem!important;border-radius:99px!important;letter-spacing:.04em}
.rp-status-ok{background:rgba(57,181,127,.14)!important;color:#5fd6a3!important;border:1px solid rgba(57,181,127,.36)!important}
.rp-hint-top{margin:0 0 1rem!important;padding:.6rem .8rem;border-radius:10px;background:rgba(244,112,107,.07);border-left:3px solid var(--pg)}
.rp-calc{
  border-radius:12px!important;padding:.8rem .95rem!important;margin-top:.85rem!important;
  background:linear-gradient(135deg,var(--pg-soft),rgba(255,255,255,.015))!important;
  border:1px solid var(--pg-line)!important;
}
.rp-calc-row{display:flex!important;justify-content:space-between;gap:1rem;padding:.26rem 0;font-size:.82rem!important;color:var(--lff-text-2)!important}
.rp-calc-row b{font-variant-numeric:tabular-nums;color:var(--lff-text)!important;font-weight:600}
.rp-calc-hi{border-top:1px dashed var(--lff-line-2);margin-top:.3rem;padding-top:.5rem}
.rp-calc-hi b{color:var(--pg)!important;font-size:1.05rem!important}
.rp-quick{gap:.4rem!important;margin:.7rem 0 .2rem!important}
.rp-mini{
  border-radius:99px!important;padding:.3rem .85rem!important;font-size:.74rem!important;
  border:1px solid var(--lff-line-2)!important;background:transparent!important;color:var(--lff-text-2)!important;
  transition:all var(--lff-t1)!important;
}
.rp-mini:hover{background:var(--pg-soft)!important;border-color:var(--pg-line)!important;color:var(--pg)!important}
.rp-mini-del:hover{background:rgba(244,112,107,.14)!important;border-color:rgba(244,112,107,.4)!important;color:#ffb4b0!important}
.rp-chars{display:grid!important;gap:.55rem!important}
.rp-char{
  border-radius:12px!important;padding:.75rem .85rem!important;
  border:1px solid var(--lff-line)!important;background:rgba(255,255,255,.022)!important;
  transition:border-color var(--lff-t1),background var(--lff-t1)!important;
}
.rp-char:has(input:checked){border-color:var(--pg-line)!important;background:var(--pg-soft)!important}
.rp-char-h{display:flex!important;align-items:center;gap:.55rem;cursor:pointer;font-weight:500;color:var(--lff-text)!important}
.rp-char-n{font-size:.88rem!important}
.rp-char-d{display:block;font-size:.74rem!important;color:var(--lff-text-3)!important;margin:.2rem 0 .5rem 1.75rem;line-height:1.6}
.rp-char-amt{margin-left:1.75rem;display:inline-flex!important;align-items:center;gap:.4rem;max-width:220px}
.rp-char-amt input{min-height:38px!important;text-align:right}
.rp-cu{font-size:.76rem;color:var(--lff-text-3)}
.rp-btn-row{gap:.6rem!important;margin-top:1rem;padding-top:.9rem;border-top:1px solid var(--lff-line)}
.rp-save{flex:1 1 auto}
.rp-danger:hover{background:rgba(244,112,107,.15)!important;border-color:rgba(244,112,107,.42)!important;color:#ffb4b0!important}
.rp-mini-row{
  display:flex!important;align-items:center;gap:.7rem;flex-wrap:wrap;
  padding:.6rem .75rem!important;border-radius:11px;background:rgba(255,255,255,.025);
  border:1px solid var(--lff-line);margin-bottom:.45rem;
}
.rp-mini-y{font-weight:600;color:var(--pg)!important;font-variant-numeric:tabular-nums;min-width:3.4rem}
.rp-mini-v{flex:1;font-size:.8rem!important;color:var(--lff-text-2)!important;font-variant-numeric:tabular-nums}

/* ---------- C4. 合約內容：正式文件版面 ---------- */
body:has(.nav-item.active[data-page="contract"]) .contract-card{
  max-width:800px;margin:0 auto;padding:2.4rem 2.7rem 2.6rem!important;border-radius:6px!important;
  border:1px solid rgba(226,196,136,.18)!important;
  background:linear-gradient(180deg,rgba(255,255,255,.055),rgba(255,255,255,.018))!important;
  box-shadow:0 30px 70px -34px rgba(0,0,0,.95),var(--lff-hair);
}
body:has(.nav-item.active[data-page="contract"]) .contract-card>h3{
  display:block!important;font-family:"Noto Serif TC","Songti TC",Georgia,serif;
  font-size:1.2rem!important;text-align:center;letter-spacing:.16em!important;line-height:1.7;
  color:var(--lff-gold)!important;border-bottom:1px solid rgba(226,196,136,.22);
  padding-bottom:1.1rem!important;margin-bottom:1.5rem!important;
}
body:has(.nav-item.active[data-page="contract"]) .contract-card>h3::before{
  content:'❖';display:block;font-size:.72rem;color:var(--lff-gold);opacity:.55;margin-bottom:.7rem;letter-spacing:0;
}
body:has(.nav-item.active[data-page="contract"]) .contract-card>h3::after{
  content:'賴氏家族基金 · 長期投資培育計畫';display:block;margin-top:.75rem;
  font-size:.66rem;letter-spacing:.22em;color:var(--lff-text-3);font-family:inherit;
}
body:has(.nav-item.active[data-page="contract"]) .contract-card div[style]{
  font-size:.93rem!important;color:var(--lff-text)!important;line-height:2!important;
}
body:has(.nav-item.active[data-page="contract"]) .contract-card p{margin-bottom:1.1rem!important}
body:has(.nav-item.active[data-page="contract"]) .contract-card strong{
  display:block;margin:1.7rem 0 .7rem;padding-left:.72rem;
  font-size:.88rem!important;font-weight:600!important;letter-spacing:.12em;
  color:var(--lff-gold)!important;border-left:3px solid var(--lff-gold);
}
body:has(.nav-item.active[data-page="contract"]) .contract-card p:first-child strong{margin-top:0}
body:has(.nav-item.active[data-page="contract"]) .contract-card p:first-child{color:var(--lff-text-2)!important;font-size:.9rem!important}
body:has(.nav-item.active[data-page="contract"]) .contract-card ul,
body:has(.nav-item.active[data-page="contract"]) .contract-card ol{margin:.15rem 0 .9rem!important}
body:has(.nav-item.active[data-page="contract"]) .contract-card ul{list-style:none!important;padding-left:.15rem!important}
body:has(.nav-item.active[data-page="contract"]) .contract-card ul li{
  position:relative;padding-left:1.3rem!important;margin:.28rem 0!important;
  font-size:.9rem!important;color:var(--lff-text-2)!important;line-height:1.95;
}
body:has(.nav-item.active[data-page="contract"]) .contract-card ul li::before{
  content:'';position:absolute;left:.22rem;top:.86em;width:5px;height:5px;border-radius:50%;
  background:var(--lff-gold);opacity:.75;
}
body:has(.nav-item.active[data-page="contract"]) .contract-card ol{padding-left:1.55rem!important}
body:has(.nav-item.active[data-page="contract"]) .contract-card ol li{
  margin:.3rem 0!important;font-size:.9rem!important;color:var(--lff-text-2)!important;line-height:1.95;
}
body:has(.nav-item.active[data-page="contract"]) .contract-card ol li::marker{color:var(--lff-gold);font-weight:600;font-variant-numeric:tabular-nums}
body:has(.nav-item.active[data-page="contract"]) .contract-card a{color:var(--pg)!important;text-decoration:none;border-bottom:1px solid var(--pg-line);word-break:break-all}

/* ---------- C5. 子女端帳戶管理：表單分區 ---------- */
body:has(.nav-item.active[data-page="account"]) .capsule-card{margin-bottom:.95rem!important}
body:has(.nav-item.active[data-page="account"]) .capsule-card>h3{margin-bottom:1.15rem}
.acc-pw-wrap{height:5px!important;border-radius:99px!important;background:rgba(148,163,184,.16)!important;overflow:hidden;margin:.55rem 0 .35rem}
.acc-pw-bar{height:100%;width:0;border-radius:99px;transition:width .3s var(--lff-ease),background .3s}
.acc-btn-row{gap:.6rem!important}
.acc-submit{min-height:42px!important}

/* ---------- C6. 投資獲利：損益趨勢淨化 ---------- */
body:has(.nav-item.active[data-page="profit"]) .profit-card+.profit-card{margin-top:.9rem!important}
body:has(.nav-item.active[data-page="profit"]) .profit-detail{display:grid!important;grid-template-columns:repeat(auto-fit,minmax(190px,1fr))!important;gap:.7rem!important;margin-top:1rem!important}
body:has(.nav-item.active[data-page="profit"]) .chart-container{margin-top:1.1rem!important}
/* =====================================================================
   Part D：狀態色脫鉤 / 表格黏頂 / 淺色主題 / 行動裝置 / 登入頁 / 列印
   ===================================================================== */

/* ---------- D1. 狀態色與漲跌色脫鉤（「已開啟」不該是紅的） ---------- */
:root{--lff-ok:#39b57f;--lff-err:#f4706b}
html.theme-light{--lff-ok:#137a4b;--lff-err:#b3261e}
.c-status{border-radius:99px;padding:2px 10px;font-size:.7rem;font-weight:600;letter-spacing:.02em}
.c-status-open{background:rgba(57,181,127,.14)!important;color:var(--lff-ok)!important;border:1px solid rgba(57,181,127,.32)}
.c-status-locked{background:rgba(148,163,184,.12)!important;color:var(--lff-text-2)!important;border:1px solid var(--lff-line-2)}

/* ---------- D2. 表格黏頂（桌機；.table-wrap 已有 max-height） ---------- */
@media (min-width:821px){
  .holding-table thead th,.trade-table thead th,.account-table thead th,
  .salary-table thead th,.rp-table thead th{
    position:sticky;top:0;z-index:2;
    background:#141f36!important;
    box-shadow:inset 0 -1px 0 var(--pg-line),0 6px 12px -10px rgba(0,0,0,.9)!important;
  }
}

/* ---------- D3. 淺色主題：暖象牙紙感 ---------- */
html.theme-light body{background-color:#f6f3ec!important;background-image:none!important}
html.theme-light body::before{
  background-image:radial-gradient(1000px 520px at 84% -10%,rgba(160,125,36,.13),transparent 62%),radial-gradient(820px 480px at -6% 4%,rgba(37,99,235,.05),transparent 58%),linear-gradient(168deg,#faf8f3 0%,#f2eee4 55%,#f8f6f1 100%);
}
html.theme-light{--lff-surface:rgba(15,23,42,.03);--lff-surface-2:rgba(15,23,42,.06);--lff-line:rgba(15,23,42,.085);--lff-line-2:rgba(15,23,42,.15)}
/* 淺色下的逐頁主題色（加深以維持續效對比） */
html.theme-light body:has(.nav-item.active[data-page="dashboard"]){--pg:#8a6a1e;--pg-soft:rgba(160,125,36,.10);--pg-line:rgba(160,125,36,.26)}
html.theme-light body:has(.nav-item.active[data-page="capsule"]){--pg:#8a6a1e;--pg-soft:rgba(160,125,36,.10);--pg-line:rgba(160,125,36,.26)}
html.theme-light body:has(.nav-item.active[data-page="trades"]){--pg:#1d4ed8;--pg-soft:rgba(29,78,216,.08);--pg-line:rgba(29,78,216,.22)}
html.theme-light body:has(.nav-item.active[data-page="accounts"]){--pg:#0f766e;--pg-soft:rgba(15,118,110,.08);--pg-line:rgba(15,118,110,.22)}
html.theme-light body:has(.nav-item.active[data-page="salary"]){--pg:#a16207;--pg-soft:rgba(161,98,7,.08);--pg-line:rgba(161,98,7,.22)}
html.theme-light body:has(.nav-item.active[data-page="redpacket"]){--pg:#b3261e;--pg-soft:rgba(179,38,30,.07);--pg-line:rgba(179,38,30,.22)}
html.theme-light body:has(.nav-item.active[data-page="manual"]){--pg:#6d28d9;--pg-soft:rgba(109,40,217,.08);--pg-line:rgba(109,40,217,.22)}
html.theme-light body:has(.nav-item.active[data-page="devdoc"]){--pg:#0e7490;--pg-soft:rgba(14,116,144,.08);--pg-line:rgba(14,116,144,.22)}
html.theme-light body:has(.nav-item.active[data-page="backups"]){--pg:#475569;--pg-soft:rgba(71,85,105,.08);--pg-line:rgba(71,85,105,.22)}
html.theme-light body:has(.nav-item.active[data-page="profit"]){--pg:#0f766e;--pg-soft:rgba(15,118,110,.08);--pg-line:rgba(15,118,110,.22)}
html.theme-light body:has(.nav-item.active[data-page="donation"]){--pg:#b3261e;--pg-soft:rgba(179,38,30,.07);--pg-line:rgba(179,38,30,.22)}
html.theme-light body:has(.nav-item.active[data-page="contract"]){--pg:#8a6a1e;--pg-soft:rgba(160,125,36,.10);--pg-line:rgba(160,125,36,.26)}
html.theme-light body:has(.nav-item.active[data-page="account"]){--pg:#1d4ed8;--pg-soft:rgba(29,78,216,.08);--pg-line:rgba(29,78,216,.22)}
html.theme-light .welcome{background:linear-gradient(120deg,var(--pg-soft),rgba(255,255,255,.5) 62%)!important;border-color:var(--lff-line)!important;box-shadow:0 1px 2px rgba(15,23,42,.04)}
html.theme-light .capsule-page-hero{background:linear-gradient(135deg,var(--pg-soft),rgba(255,255,255,.55) 70%)!important;border-color:var(--pg-line)!important}
html.theme-light .header .user-info #displayName{background:#fff;border-color:var(--lff-line-2)}
html.theme-light .header .brand>span:last-child{background:#fff;border-color:var(--lff-line-2);color:#6b7280!important}
html.theme-light .table-wrap{background:#fff;border-color:var(--lff-line);box-shadow:0 1px 2px rgba(15,23,42,.04)}
html.theme-light .holding-table thead th,html.theme-light .trade-table thead th,html.theme-light .account-table thead th,html.theme-light .salary-table thead th,html.theme-light .rp-table thead th{
  background:#f7f5ef!important;color:#7a8494!important;box-shadow:inset 0 -1px 0 rgba(160,125,36,.28)!important;
}
html.theme-light .holding-table tbody td,html.theme-light .trade-table tbody td,html.theme-light .account-table tbody td,html.theme-light .salary-table tbody td,html.theme-light .rp-table tbody td{border-bottom-color:var(--lff-line)!important;color:#475569!important}
html.theme-light .holding-table tbody td:first-child,html.theme-light .trade-table tbody td:first-child,html.theme-light .account-table tbody td:first-child,html.theme-light .salary-table tbody td:first-child,html.theme-light .rp-table tbody td:first-child{color:#1e293b!important}
html.theme-light .holding-table tbody tr:hover td,html.theme-light .trade-table tbody tr:hover td,html.theme-light .account-table tbody tr:hover td,html.theme-light .salary-table tbody tr:hover td,html.theme-light .rp-table tbody tr:hover td{background:linear-gradient(90deg,var(--pg-soft),transparent 72%)!important}
html.theme-light .asset-card{background:linear-gradient(165deg,#fff,#fdfcf9)!important;border-color:var(--lff-line)!important}
html.theme-light .asset-card .a-detail{border-top-color:var(--lff-line-2)!important}
html.theme-light .asset-card .a-pnl{background:rgba(15,23,42,.045)!important;border-color:var(--lff-line-2)!important}
html.theme-light .asset-card .a-pnl.pl-positive{background:rgba(179,38,30,.09)!important;border-color:rgba(179,38,30,.24)!important;color:var(--lff-up)!important}
html.theme-light .asset-card .a-pnl.pl-negative{background:rgba(19,122,75,.09)!important;border-color:rgba(19,122,75,.24)!important;color:var(--lff-down)!important}
html.theme-light .profit-detail .item{background:#fff;border-color:var(--lff-line)}
html.theme-light .capsule-card,html.theme-light .contract-card,html.theme-light .red-packet-card{background:linear-gradient(168deg,#fff,#fbfaf6)!important;border-color:var(--lff-line)!important}
html.theme-light .rp-top,html.theme-light .rp-calc,html.theme-light .rp-mini-row,html.theme-light .rp-char{background:rgba(15,23,42,.028)!important;border-color:var(--lff-line)!important}
html.theme-light .rp-char:has(input:checked){background:var(--pg-soft)!important;border-color:var(--pg-line)!important}
html.theme-light .rp-mini{background:#fff!important;border-color:var(--lff-line-2)!important}
html.theme-light .rp-mini:hover{background:var(--pg-soft)!important;color:var(--pg)!important}
html.theme-light .rp-hint-top{background:rgba(179,38,30,.06)!important}
html.theme-light .rp-card>h3{border-bottom-color:var(--lff-line-2)!important}
html.theme-light .modal{background:linear-gradient(168deg,#fff,#f8f6f1)!important;border-color:var(--lff-line-2)!important}
html.theme-light .modal-overlay{background:rgba(60,52,40,.34)!important}
html.theme-light .form-group input,html.theme-light .form-group select,html.theme-light .form-group textarea,html.theme-light .modal .form-group input,html.theme-light .modal .form-group select,html.theme-light .modal .form-group textarea{background:#fff!important;border-color:var(--lff-line-2)!important;color:#1e293b!important}
html.theme-light .filter-bar{background:linear-gradient(180deg,#fff,#fbfaf6)!important;border-color:var(--lff-line)!important}
html.theme-light .filter-bar select{background:#fff!important;color:#1e293b!important;border-color:var(--lff-line-2)!important}
html.theme-light .lff-filter{background:rgba(250,248,243,.92)!important;border-bottom-color:var(--lff-line)!important}
html.theme-light .lff-filter input{background:#fff;color:#1e293b;border-color:var(--lff-line-2)}
html.theme-light .empty{background:var(--pg-soft)!important;border-color:var(--pg-line)!important;color:#5b6472!important}
html.theme-light .lff-top{background:rgba(255,255,255,.94)!important;border-color:var(--pg-line)!important;color:var(--pg)!important}
html.theme-light .toast-success{background:#effaf4!important;border-color:rgba(19,122,75,.32)!important;color:#137a4b!important}
html.theme-light .toast-error{background:#fdf2f1!important;border-color:rgba(179,38,30,.30)!important;color:#b3261e!important}
/* 淺色下的版本備份頁 */
html.theme-light body:has(.nav-item.active[data-page="backups"]) .capsule-card{background:#fff!important}
html.theme-light body:has(.nav-item.active[data-page="backups"]) .capsule-card tbody tr:first-child td{background:linear-gradient(90deg,rgba(160,125,36,.10),transparent 80%)!important;color:#1e293b!important}
html.theme-light body:has(.nav-item.active[data-page="backups"]) .capsule-card a[download]{color:#5b6472!important;border-color:var(--lff-line-2)!important}
/* 淺色下的合約文件 */
html.theme-light body:has(.nav-item.active[data-page="contract"]) .contract-card{background:linear-gradient(180deg,#fff,#fbfaf6)!important;border-color:rgba(160,125,36,.20)!important;box-shadow:0 26px 60px -34px rgba(90,70,30,.35),0 1px 2px rgba(15,23,42,.05)!important}

/* ---------- D4. 行動裝置精修 ---------- */
@media (max-width:820px){
  /* 覆蓋 Part A 的桌機數值：底部導覽要滿版、主內容要留出底部導覽與安全區的空間 */
  .layout{min-height:auto!important}
  .sidebar{width:100%!important;flex:0 0 100%!important;padding:.5rem .55rem calc(.5rem + var(--lff-safeb))!important}
  .main-wrapper,.main{padding:1.1rem .85rem calc(104px + var(--lff-safeb))!important;max-width:100%!important}
  .header{padding:.6rem .9rem!important;min-height:auto}
  .holding-table,.trade-table,.account-table,.salary-table,.rp-table{font-size:.77rem!important}
  /* 底部導覽：右緣漸層提示可橫向捲動、圖示加大 */
  .sidebar{
    background:linear-gradient(180deg,rgba(11,17,32,.96),rgba(9,14,26,.98))!important;
    -webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);
    mask-image:linear-gradient(90deg,#000 0,#000 calc(100% - 26px),transparent 100%);
    -webkit-mask-image:linear-gradient(90deg,#000 0,#000 calc(100% - 26px),transparent 100%);
  }
  .sidebar .nav-item{min-height:46px;font-size:.76rem!important}
  .sidebar .nav-item.active{box-shadow:inset 0 0 0 1px var(--pg-line)!important;color:var(--pg)!important;
    background:linear-gradient(180deg,var(--pg-soft),transparent)!important}
  /* 概覽卡片改為緊湊型：減少捲動距離 */
  .asset-cards{grid-template-columns:1fr!important;gap:.6rem!important}
  .asset-card{padding:.85rem .9rem .8rem!important}
  .asset-card .a-avatar{width:30px;height:30px;border-radius:9px;font-size:1rem!important}
  .asset-card .a-name{font-size:.8rem!important}
  .asset-card .a-total{font-size:1.34rem!important}
  .asset-card .a-detail{
    margin-top:.6rem!important;padding-top:.55rem!important;
    font-size:.7rem!important;line-height:1.62!important;letter-spacing:.005em;
  }
  .asset-card .a-pnl{margin-top:.35rem}
  .profit-card .profit-amount{font-size:1.72rem!important}
  .profit-detail{grid-template-columns:1fr 1fr!important}
  .welcome{padding:.9rem 1rem!important;border-radius:12px}
  .welcome h2{font-size:1.12rem!important}
  /* 表格：更緊、字級更大易讀 */
  .holding-table th,.holding-table td,.trade-table th,.trade-table td,.account-table th,.account-table td,.salary-table th,.salary-table td{padding:8px 10px!important}
  .wrapper-table,.table-wrap{box-shadow:none}
  .section-title{margin:1.3rem 0 .6rem!important}
  .rp-calc{padding:.7rem .8rem!important}
  .rp-char-amt{margin-left:0;max-width:none;width:100%}
  .rp-card>h3{font-size:.9rem!important}
  body:has(.nav-item.active[data-page="contract"]) .contract-card{padding:1.5rem 1.15rem 1.7rem!important}
  body:has(.nav-item.active[data-page="contract"]) .contract-card>h3{font-size:1.02rem!important;letter-spacing:.1em!important}
  body:has(.nav-item.active[data-page="contract"]) .contract-card div[style]{font-size:.88rem!important;line-height:1.95!important}
  .toast{bottom:calc(84px + var(--lff-safeb))!important}
}

/* ---------- D5. 登入頁 ---------- */
body:has(.login-container){background:transparent}
.login-container{
  position:relative;border-radius:22px!important;padding:2.7rem 2.2rem 2.2rem!important;
  background:linear-gradient(168deg,rgba(255,255,255,.075),rgba(255,255,255,.022))!important;
  box-shadow:0 34px 80px -34px rgba(0,0,0,.92),inset 0 1px 0 rgba(255,255,255,.07)!important;
}
.login-container::after{
  content:'';position:absolute;left:22%;right:22%;top:0;height:1px;
  background:linear-gradient(90deg,transparent,rgba(226,196,136,.75),transparent);
}
.login-container .logo h1{letter-spacing:.22em!important}
.login-container .form-group input{min-height:46px!important;font-size:.95rem!important}
.login-container .btn{min-height:48px!important;font-size:.95rem!important;letter-spacing:.12em;border-radius:12px!important}
.login-container .footer{margin-top:1.5rem!important}
body:has(.login-container)>.theme-toggle.floating{top:16px!important;right:16px!important;border-radius:12px!important}
html.theme-light .login-container{background:linear-gradient(168deg,#ffffff,#fbf9f4)!important;border-color:var(--lff-line-2)!important;box-shadow:0 30px 70px -34px rgba(90,70,30,.30)!important}
html.theme-light .login-container .form-group input{background:#fff!important;color:#1e293b!important;border-color:var(--lff-line-2)!important}

/* ---------- D6. 一本家書：閱讀工具列與獨立頁精修 ---------- */
.bk-bar{
  border-radius:var(--lff-r-md)!important;
  background:linear-gradient(180deg,rgba(20,31,54,.94),rgba(13,20,36,.92))!important;
  box-shadow:0 10px 26px -20px rgba(0,0,0,.9),inset 0 0 0 1px rgba(255,255,255,.045)!important;
}
.bk-tb{border-radius:10px!important;min-height:34px}
.bk-adm-bar{border-radius:var(--lff-r-md)!important}
.tb-bar{
  box-shadow:0 10px 30px -22px rgba(0,0,0,.95)!important;
  background:linear-gradient(180deg,rgba(11,17,32,.94),rgba(11,17,32,.80))!important;
}
.tb-btn{border-radius:var(--lff-r-pill)!important;font-size:.76rem!important;min-height:32px}
@media (max-width:600px){
  .bk-bar{position:sticky;top:0;z-index:30}
  .tb-bar{padding:.5rem .7rem!important;gap:.5rem!important}
  .tb-t{font-size:.92rem!important;letter-spacing:.16em!important}
}
html.theme-light .bk-bar{background:linear-gradient(180deg,rgba(255,255,255,.96),rgba(248,246,241,.94))!important}

/* ---------- D7. 列印 ---------- */
@media print{
  .header,.sidebar,.theme-toggle,.lff-top,.lff-filter,.bk-bar,.bk-pager,.bk-adm-bar,.section-title .btn{display:none!important}
  body,body::before{background:#fff!important;color:#111!important}
  .main-wrapper,.main{max-width:100%!important;padding:0!important}
  .capsule-card,.contract-card,.asset-card,.table-wrap,.profit-card{box-shadow:none!important;border-color:#ddd!important;background:#fff!important}
  body:has(.nav-item.active[data-page="contract"]) .contract-card{padding:0!important;border:0!important}
  .table-wrap{max-height:none!important;overflow:visible!important}
  thead th{position:static!important}
}
/* =====================================================================
   Part E：逐頁版面的收斂（v2.6.0）
   ===================================================================== */

/* E1. 交易／帳戶／薪資為「單一任務頁」：移除已在總覽呈現的資產卡片，
       讓該頁自身內容直接進入視野，不必先捲過四張卡片。 */
body:has(.nav-item.active[data-page="trades"]) .asset-cards,
body:has(.nav-item.active[data-page="accounts"]) .asset-cards,
body:has(.nav-item.active[data-page="salary"]) .asset-cards{display:none!important}
body:has(.nav-item.active[data-page="trades"]) .welcome,
body:has(.nav-item.active[data-page="accounts"]) .welcome,
body:has(.nav-item.active[data-page="salary"]) .welcome{margin-bottom:1.1rem!important}

/* E2. 桌機表格密度：欄位更緊、字級更小，讓 10 欄的持股表盡量一屏呈現 */
@media (min-width:821px){
  .holding-table,.trade-table,.account-table,.salary-table,.rp-table{font-size:.785rem!important}
  .holding-table th,.holding-table td,.trade-table th,.trade-table td,
  .account-table th,.account-table td,.salary-table th,.salary-table td,.rp-table th,.rp-table td{
    padding:.48rem .62rem!important;
  }
  .holding-table th:first-child,.holding-table td:first-child,.trade-table th:first-child,.trade-table td:first-child{padding-left:.85rem!important}
  .holding-table th:last-child,.holding-table td:last-child,.trade-table th:last-child,.trade-table td:last-child{padding-right:.85rem!important}
}
/* 極寬螢幕：右側不再留大量空白，表格自然撐開 */
@media (min-width:1600px){
  body:has(.nav-item.active[data-page="dashboard"]){--lff-pw:1560px}
  body:has(.nav-item.active[data-page="trades"]){--lff-pw:1400px}
  body:has(.nav-item.active[data-page="accounts"]){--lff-pw:1400px}
  body:has(.nav-item.active[data-page="salary"]){--lff-pw:1400px}
}

/* E3. 表格橫向捲動的提示：右緣漸層（固定在容器右側，不隨內容捲動） */
@media (min-width:821px){
  .table-wrap{
    background-image:
      linear-gradient(to left,rgba(11,17,32,.66),rgba(11,17,32,0) 26px),
      linear-gradient(180deg,rgba(255,255,255,.022),rgba(255,255,255,.006));
    background-repeat:no-repeat,no-repeat;
    background-position:right center,left top;
    background-size:26px 100%,100% 100%;
    background-attachment:scroll,scroll;
    box-shadow:var(--lff-hair);
  }
  html.theme-light .table-wrap{
    background-image:
      linear-gradient(to left,rgba(255,255,255,.86),rgba(255,255,255,0) 26px),
      linear-gradient(180deg,#fff,#fdfcf9);
  }
}

/* E4. 側欄版本資訊列（純裝飾，補足側欄底部的空白） */
@media (min-width:821px){
  .sidebar::after{margin-bottom:.2rem}
}

/* ==========================================================================
   Part F. 股價來源標記（v2.6.1）
   持股明細「當前市價」欄位旁的小徽章：收盤 / 快取 / 以成本計
   僅為行內小元件，不含任何版面屬性，故不會影響既有行動版設定
   ========================================================================== */
.px-src {
  display: inline-block;
  margin-left: .4rem;
  padding: .06rem .4rem;
  border-radius: var(--lff-r-pill, 999px);
  font-size: .62rem;
  font-weight: 600;
  letter-spacing: .02em;
  line-height: 1.5;
  vertical-align: middle;
  white-space: nowrap;
  background: rgba(255, 255, 255, .07);
  border: 1px solid rgba(255, 255, 255, .13);
  color: var(--lff-text-3, #8b97ab);
}
html.theme-light .px-src {
  background: rgba(15, 23, 42, .05);
  border-color: rgba(15, 23, 42, .13);
  color: #5b6b82;
}
.px-src.px-src-warn {
  background: rgba(244, 112, 107, .14);
  border-color: rgba(244, 112, 107, .34);
  color: var(--lff-err, #f4706b);
}
html.theme-light .px-src.px-src-warn {
  color: #b3261e;
}
@media (max-width: 820px) {
  .px-src { margin-left: .28rem; padding: .04rem .32rem; font-size: .58rem; }
}

/* ==========================================================================
   Part G. 指定日期收盤價提示（v2.6.2）
   交易表單輸入「過往日期」時顯示該日實際收盤價，並可一鍵帶入價格欄。
   純表單內行內提示，不含版面屬性，故不影響既有行動版設定。
   ========================================================================== */
.px-hint {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: .45rem;
  margin: -.15rem 0 .9rem;
  padding: .5rem .7rem;
  border-radius: var(--lff-r-md, 10px);
  font-size: .8rem;
  line-height: 1.55;
  background: rgba(110, 168, 254, .1);
  border: 1px solid rgba(110, 168, 254, .26);
  color: var(--lff-text-2, #b6c0d0);
}
.px-hint b {
  color: var(--pg, #e2c488);
  font-size: .92rem;
  font-variant-numeric: tabular-nums;
}
html.theme-light .px-hint {
  background: rgba(29, 78, 216, .07);
  border-color: rgba(29, 78, 216, .22);
  color: #3f4d61;
}
html.theme-light .px-hint b { color: #8a6a1e; }

.px-hint.px-hint-warn {
  background: rgba(244, 112, 107, .1);
  border-color: rgba(244, 112, 107, .3);
  color: var(--lff-err, #f4706b);
}
html.theme-light .px-hint.px-hint-warn { color: #b3261e; }

.px-hint.px-hint-loading {
  background: rgba(255, 255, 255, .05);
  border-color: rgba(255, 255, 255, .12);
  color: var(--lff-text-3, #8b97ab);
}
html.theme-light .px-hint.px-hint-loading {
  background: rgba(15, 23, 42, .04);
  border-color: rgba(15, 23, 42, .1);
  color: #6b7a90;
}

.px-hint .px-hint-btn {
  margin-left: auto;
  padding: .26rem .68rem;
  border-radius: var(--lff-r-pill, 999px);
  border: 1px solid rgba(110, 168, 254, .42);
  background: rgba(110, 168, 254, .16);
  color: inherit;
  font-size: .74rem;
  font-weight: 600;
  cursor: pointer;
  transition: background .16s ease, border-color .16s ease;
}
.px-hint .px-hint-btn:hover {
  background: rgba(110, 168, 254, .3);
  border-color: rgba(110, 168, 254, .62);
}
html.theme-light .px-hint .px-hint-btn {
  border-color: rgba(29, 78, 216, .35);
  background: rgba(29, 78, 216, .1);
}
.px-hint .px-hint-tag {
  padding: .1rem .42rem;
  border-radius: var(--lff-r-pill, 999px);
  font-size: .62rem;
  font-weight: 600;
  background: rgba(57, 181, 127, .16);
  border: 1px solid rgba(57, 181, 127, .38);
  color: var(--lff-ok, #39b57f);
}
html.theme-light .px-hint .px-hint-tag { color: #137a4b; }
@media (max-width: 820px) {
  .px-hint { font-size: .76rem; padding: .44rem .6rem; }
  .px-hint .px-hint-btn { margin-left: 0; }
}

/* ==================================================================
   Part H. 損益配色修正（v2.6.3）
   症狀：持股明細的損益欄位 class 一直是正確的（pl-positive／pl-negative），
        但畫面上全部是灰色 —— 被較高特異性的表格基礎色蓋掉：
          ‧ 深色：.holding-table tbody td{color:var(--lff-text-2)!important}        （0,1,2）
          ‧ 淺色：html.theme-light .holding-table tbody td{color:#475569!important} （0,2,2）
        而 .pl-positive／td.pl-positive 僅有（0,1,0）／（0,1,1），永遠輸。
   修法：以更高特異性（0,2,3；小計／總計列 0,3,4）＋置於檔尾的規則補回。
   配色＝台股慣例：獲利紅（--lff-up）／虧損綠（--lff-down），隨主題自動切深／淺色。
   ================================================================== */
html .holding-table tbody td.pl-positive,
html .holding-table tbody td.profit-positive,
html .trade-table tbody td.pl-positive,
html .trade-table tbody td.profit-positive,
html .salary-table tbody td.pl-positive,
html .rp-table tbody td.pl-positive { color: var(--lff-up) !important; }
html .holding-table tbody td.pl-negative,
html .holding-table tbody td.profit-negative,
html .trade-table tbody td.pl-negative,
html .trade-table tbody td.profit-negative,
html .salary-table tbody td.pl-negative,
html .rp-table tbody td.pl-negative { color: var(--lff-down) !important; }
/* 小計／總計列：<tr style="font-weight:600…"> 內的損益欄，再拉高特異性確保勝出 */
html .holding-table tbody tr[style*="font-weight"] td.pl-positive { color: var(--lff-up) !important; }
html .holding-table tbody tr[style*="font-weight"] td.pl-negative { color: var(--lff-down) !important; }
/* 損益欄加粗：掃讀時一眼看出賺賠 */
html .holding-table tbody td.pl-positive,
html .holding-table tbody td.pl-negative { font-weight: 600; }
html .holding-table tbody tr[style*="font-weight"] td.pl-positive,
html .holding-table tbody tr[style*="font-weight"] td.pl-negative { font-weight: 700; }

/* ==================================================================
   Part I. ✨ AI 潤飾視窗（v2.6.6）
   由 letter-book.js 產生、掛在 body 上，四個入口共用：
     ‧ 書本模式：閱讀頁／序文編輯器／卷編輯器
     ‧ 列表模式：信件檢視列與檢視窗；撰寫／編輯信件的表單
   版面＝左「原文」／右「潤飾後」對照，上方是風格籤，下方是動作列。
   顏色沿用 .bk-ed 系列的金色系變數，深／淺色自動切換。
   ================================================================== */
.bk-ai{position:fixed;inset:0;z-index:10060;display:flex;align-items:center;justify-content:center;padding:1.2rem;background:rgba(6,10,20,.76);-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px)}
html.theme-light .bk-ai{background:rgba(60,52,40,.36)}
.bk-ai-box{display:flex;flex-direction:column;width:100%;max-width:940px;max-height:88vh;overflow:hidden;border-radius:16px;border:1px solid var(--lff-gold-line,rgba(226,196,136,.32));background:linear-gradient(165deg,#242438,#1b1b2c);box-shadow:0 18px 60px rgba(0,0,0,.55)}
html.theme-light .bk-ai-box{background:linear-gradient(165deg,#fffdf8,#f6f1e6);box-shadow:0 18px 60px rgba(60,52,40,.28)}
.bk-ai-h{display:flex;align-items:center;justify-content:space-between;gap:.6rem;padding:.95rem 1.15rem;border-bottom:1px solid var(--lff-line,rgba(255,255,255,.1))}
.bk-ai-t{font-size:.92rem;font-weight:600;color:var(--lff-gold,#e2c488)}
html.theme-light .bk-ai-t{color:#8a6a1e}
.bk-ai-chips{display:flex;gap:.4rem;flex-wrap:wrap;padding:.8rem 1.15rem .1rem}
.bk-ai-chip{padding:.32rem .78rem;border-radius:99px;border:1px solid var(--lff-line-2,rgba(255,255,255,.16));background:transparent;color:var(--lff-text-2,#9aa7bd);font-size:.76rem;font-family:inherit;cursor:pointer;transition:all .18s}
.bk-ai-chip:hover:not(:disabled){border-color:var(--lff-gold-line,rgba(226,196,136,.55));color:var(--lff-gold,#e2c488)}
.bk-ai-chip.on{background:rgba(226,196,136,.18);color:var(--lff-gold,#e2c488);border-color:var(--lff-gold-line,rgba(226,196,136,.55));font-weight:600}
html.theme-light .bk-ai-chip.on{color:#8a6a1e;background:rgba(160,125,36,.16)}
.bk-ai-chip:disabled{opacity:.45;cursor:default}
.bk-ai-b{flex:1;min-height:0;overflow:auto;padding:.85rem 1.15rem 0}
.bk-ai-cols{display:flex;gap:.7rem;align-items:stretch}
.bk-ai-col{flex:1;min-width:0;display:flex;flex-direction:column;gap:.35rem}
.bk-ai-cap{font-size:.7rem;color:var(--lff-text-3,#6b7a92)}
.bk-ai-tx{flex:1;min-height:8rem;max-height:46vh;overflow:auto;white-space:pre-wrap;word-break:break-word;line-height:2;font-size:.86rem;color:var(--lff-text,#e6ebf4);background:rgba(148,163,184,.07);border:1px solid var(--lff-line,rgba(255,255,255,.1));border-radius:11px;padding:.85rem .95rem}
html.theme-light .bk-ai-tx{color:#2b2118;background:rgba(255,255,255,.7);border-color:rgba(160,125,36,.22)}
.bk-ai-wait{display:flex;align-items:center;justify-content:center;text-align:center;color:var(--lff-text-3,#6b7a92);font-size:.82rem;animation:bkAiPulse 1.5s ease-in-out infinite}
@keyframes bkAiPulse{0%,100%{opacity:.45}50%{opacity:1}}
.bk-ai-err{margin-top:.7rem;padding:.5rem .75rem;border-radius:10px;border:1px solid rgba(248,113,113,.4);background:rgba(248,113,113,.1);color:#f87171;font-size:.76rem;line-height:1.7}
html.theme-light .bk-ai-err{color:#b3261e}
.bk-ai-f{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap;padding:.85rem 1.15rem;border-top:1px solid var(--lff-line,rgba(255,255,255,.1))}
.bk-ai-note{margin-right:auto;font-size:.72rem;color:var(--lff-text-3,#6b7a92)}
@media (max-width:760px){
  .bk-ai{padding:.45rem;align-items:stretch}
  .bk-ai-box{max-height:94vh;border-radius:14px}
  .bk-ai-cols{flex-direction:column}
  .bk-ai-tx{max-height:23vh;min-height:5.6rem;font-size:.82rem}
  .bk-ai-note{flex:1 0 100%;margin:0 0 .15rem}
  .bk-ai-f .bk-btn{flex:1;min-width:38%}
}
