/* 看盤學習工具 — 共用樣式
   方向：A 暗色儀表板骨架 ＋ 緊湊型今日重點（Annie 2026-09-09 定案） */
:root{
  --bg:#0B0E12; --surf:#141A21; --surf2:#1B222B; --line:#252E39; --line2:#1E262F;
  --tx:#E9EDF2; --tx2:#9AA6B4; --tx3:#697585;
  --up:#FF5B52; --dn:#2FD69B; --acc:#7DD3C0; --acc2:#F2B872; --warn:#F2B872;
  --s1:4px;--s2:8px;--s3:12px;--s4:16px;--s5:24px;--s6:32px;--s7:48px;
  --r:10px;--rs:7px;
  --sans:"PingFang TC","Microsoft JhengHei","Noto Sans TC",-apple-system,BlinkMacSystemFont,sans-serif;
  --mono:"SF Mono",ui-monospace,"Roboto Mono",Menlo,monospace;
}
*{box-sizing:border-box}
/* hidden 必須勝過任何 display 宣告（.empty-box/.sh 都有自己的 display，會蓋掉預設的 [hidden]）*/
[hidden]{display:none!important}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--bg);color:var(--tx);font-family:var(--sans);font-size:15px;
  line-height:1.65;overflow-x:hidden;padding-bottom:76px}
img{max-width:100%}
a{color:inherit;text-decoration:none}
.num{font-variant-numeric:tabular-nums lining-nums;font-feature-settings:"zero" 0}
.up{color:var(--up)} .dn{color:var(--dn)} .fl{color:var(--tx2)}
.ic{flex:none;vertical-align:middle}
.app{width:100%;max-width:520px;margin:0 auto;padding:0 var(--s4)}
@media(min-width:900px){.app{max-width:1000px}}

/* 頂列 */
.top{display:flex;align-items:center;gap:var(--s3);padding:var(--s4) 0 var(--s3);position:sticky;top:0;
  background:linear-gradient(180deg,var(--bg) 74%,rgba(11,14,18,0));z-index:20}
.top .mk{font-size:12.5px;color:var(--tx2);display:flex;align-items:center;gap:6px}
.top .mk b{font-weight:650}
.top .rt{margin-left:auto;font-family:var(--mono);font-size:11px;color:var(--tx3);letter-spacing:.04em}
.top .bk{display:flex;align-items:center;gap:5px;font-size:13px;color:var(--tx2)}
.top .bk:hover{color:var(--acc)}

/* 總覽 */
.tot{padding:var(--s5) 0 var(--s5)}
.tot .lb{font-family:var(--mono);font-size:10.5px;letter-spacing:.2em;color:var(--tx3);text-transform:uppercase}
.tot .big{font-size:clamp(40px,11vw,54px);font-weight:700;letter-spacing:-.035em;line-height:1.05;
  margin:var(--s2) 0 var(--s1)}
.tot .sub{display:flex;flex-wrap:wrap;gap:var(--s2) var(--s4);font-size:13.5px;color:var(--tx2);margin-top:var(--s3)}
.tot .sub b{font-weight:650}
.band{margin-top:var(--s4)}
.band .bh{display:flex;justify-content:space-between;font-size:12px;color:var(--tx3);margin-bottom:7px}
.band .bh b{font-weight:650}
.bar{display:flex;height:7px;border-radius:99px;overflow:hidden;background:var(--surf2)}
.bar i{display:block;height:100%}
.bar .r{background:var(--up)} .bar .g{background:var(--dn)} .bar .n{background:#39434F}

/* 今日重點 — 緊湊，不寫散文 */
.brief{border:1px solid var(--line);border-radius:var(--r);background:var(--surf);overflow:hidden;
  margin-top:var(--s5)}
.brief-h{display:flex;align-items:center;gap:var(--s2);padding:11px var(--s4);
  border-bottom:1px solid var(--line2);background:var(--surf2)}
.brief-h .ic{color:var(--acc)}
.brief-h b{font-size:13.5px;font-weight:650;letter-spacing:.02em}
.brief-h .dt{font-family:var(--mono);font-size:10.5px;color:var(--tx3)}
.brief-h .fold{margin-left:auto;background:none;border:0;color:var(--tx3);cursor:pointer;padding:4px;
  display:grid;place-items:center;min-width:32px;min-height:32px;border-radius:var(--rs)}
.brief-h .fold:hover{color:var(--tx);background:rgba(255,255,255,.05)}
.brief-h .fold .ic{transition:transform .24s;color:inherit}
.brief-b{list-style:none;margin:0;padding:0}
.bl{display:grid;gap:2px;padding:11px var(--s4);border-bottom:1px solid var(--line2);position:relative;
  padding-left:calc(var(--s4) + 14px)}
.bl:last-child{border-bottom:0}
.bl::before{content:"";position:absolute;left:var(--s4);top:17px;width:6px;height:6px;border-radius:50%}
.bl.up::before{background:var(--up)} .bl.dn::before{background:var(--dn)} .bl.warn::before{background:var(--warn)}
.bl b{font-size:13.5px;font-weight:650;line-height:1.55;letter-spacing:.01em}
.bl span{font-size:12.5px;color:var(--tx2);line-height:1.6}
.brief-f{display:flex;gap:var(--s2);align-items:flex-start;padding:10px var(--s4);background:var(--surf2);
  border-top:1px solid var(--line2);font-size:12px;color:var(--tx3);line-height:1.6}
.brief-f .ic{color:var(--warn);margin-top:2px}
.brief.folded .brief-b,.brief.folded .brief-f{display:none}
.brief.folded .brief-h .fold .ic{transform:rotate(180deg)}

/* 區塊標 */
.sh{display:flex;align-items:center;gap:var(--s2);margin:var(--s6) 0 var(--s3)}
.sh h2{margin:0;font-size:15px;font-weight:650;letter-spacing:.01em}
.sh .cnt{font-family:var(--mono);font-size:11px;color:var(--tx3)}

/* 持股列 */
.rows{border:1px solid var(--line);border-radius:var(--r);overflow:hidden;background:var(--surf)}
.row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:var(--s3);padding:13px var(--s4);
  border-bottom:1px solid var(--line2);align-items:center;transition:background .16s}
.row:last-child{border-bottom:0}
.row:hover,.row:focus-visible{background:var(--surf2);outline:none}
.row .l{min-width:0;display:block}
.row .nm{display:flex;align-items:center;gap:7px;font-size:15px;font-weight:600}
.row .cd{font-family:var(--mono);font-size:10.5px;color:var(--tx3);letter-spacing:.03em;font-weight:500}
.row .meta{font-size:11.5px;color:var(--tx3);margin-top:2px;display:flex;gap:var(--s2);flex-wrap:wrap}
.row .r{text-align:right;white-space:nowrap;display:block}
.row .px{font-size:15.5px;font-weight:650;display:block}
.row .pl{font-size:12px;margin-top:2px;display:block}
.wbar{height:3px;border-radius:99px;background:var(--surf2);margin-top:5px;overflow:hidden;max-width:110px;display:block}
.wbar i{display:block;height:100%;background:var(--acc);opacity:.55}

/* 觀察卡 */
.wg{display:grid;gap:var(--s3);grid-template-columns:minmax(0,1fr);align-items:stretch}
@media(min-width:640px){.wg{grid-template-columns:repeat(2,minmax(0,1fr))}}
.wc{border:1px solid var(--line);border-radius:var(--r);background:var(--surf);padding:var(--s4);
  display:flex;flex-direction:column;gap:var(--s3);height:100%;transition:border-color .18s}
.wc:hover{border-color:var(--acc)}
.wc-h{display:flex;align-items:baseline;gap:var(--s2)}
.wc-h b{font-size:16px;font-weight:650}
.wc-h .px{margin-left:auto;font-size:17px;font-weight:650}
.kv{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1px;background:var(--line2);
  border:1px solid var(--line2);border-radius:var(--rs);overflow:hidden}
.kvc{background:var(--surf);padding:9px 11px;min-width:0;display:block}
.kv .k{font-size:10.5px;color:var(--tx3);display:block;line-height:1.5}
.kv .v{font-size:14px;font-weight:650;display:block;line-height:1.45}
.sig{display:flex;flex-wrap:wrap;gap:6px}
.pill{font-size:11.5px;padding:3px 9px;border-radius:99px;background:var(--surf2);color:var(--tx2);
  border:1px solid var(--line);display:inline-flex;align-items:center;gap:5px}
.pill.g{color:var(--dn);border-color:rgba(47,214,155,.3)}
.pill.r{color:var(--up);border-color:rgba(255,91,82,.3)}
.pill.y{color:var(--acc2);border-color:rgba(242,184,114,.3)}

/* 可點術語 */
.t{border:0;border-bottom:1px dashed var(--acc);cursor:pointer;color:inherit;padding:0 0 1px;
  background:none;font:inherit;transition:color .15s}
.t:hover,.t:focus-visible{color:var(--acc);outline:none}
.pill .t{border-bottom-color:currentColor;opacity:.9}

/* 解釋抽屜 */
.mask{position:fixed;inset:0;background:rgba(5,7,10,.62);z-index:55;opacity:0;pointer-events:none;
  transition:opacity .3s}
.mask.on{opacity:1;pointer-events:auto}
.sheet{position:fixed;left:0;right:0;bottom:0;z-index:60;background:var(--surf);
  border-top:1px solid var(--line);border-radius:16px 16px 0 0;transform:translateY(102%);
  transition:transform .34s cubic-bezier(.22,.7,.3,1);max-height:82svh;overflow-y:auto;
  box-shadow:0 -8px 32px rgba(0,0,0,.45)}
.sheet.on{transform:translateY(0)}
@media(min-width:900px){
  .sheet{left:auto;right:0;top:0;bottom:0;width:400px;border-radius:0;border-top:0;
    border-left:1px solid var(--line);transform:translateX(102%);max-height:none}
  .sheet.on{transform:translateX(0)}
}
.grab{width:34px;height:4px;border-radius:99px;background:var(--line);margin:10px auto 0}
@media(min-width:900px){.grab{display:none}}
.sh-h{padding:var(--s4) var(--s5) var(--s3);display:flex;align-items:flex-start;gap:var(--s3);
  border-bottom:1px solid var(--line2)}
.sh-h .ttl{font-size:18px;font-weight:650;line-height:1.4;min-width:0}
.sh-h .val{font-family:var(--mono);font-size:12px;color:var(--acc);margin-top:3px;display:block}
.sh-h button{margin-left:auto;background:var(--surf2);border:1px solid var(--line);color:var(--tx2);
  width:32px;height:32px;border-radius:50%;cursor:pointer;display:grid;place-items:center;flex:none}
.sh-h button:hover{color:var(--tx)}
.sb{padding:var(--s4) var(--s5);border-bottom:1px solid var(--line2)}
.sb:last-child{border-bottom:0;padding-bottom:var(--s6)}
.sb .k{font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--tx3);margin-bottom:5px;font-weight:600}
.sb .v{font-size:14.5px;color:var(--tx);line-height:1.72}
.sb .v b{font-weight:650}
.sb.neg .k{color:var(--up)} .sb.neg .v{color:#FFC9C5}
.sb.nx .k{color:var(--acc)}

/* 底部 tab */
.tabs{position:fixed;left:0;right:0;bottom:0;z-index:50;background:rgba(13,17,22,.94);
  -webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-top:1px solid var(--line);
  display:grid;grid-template-columns:repeat(5,minmax(0,1fr));padding-bottom:env(safe-area-inset-bottom)}
.tab{display:flex;flex-direction:column;align-items:center;gap:3px;padding:10px 4px 11px;font-size:10.5px;
  color:var(--tx3);cursor:pointer;background:none;border:0;font-family:inherit;min-height:56px;
  justify-content:center;transition:color .16s}
.tab.on{color:var(--acc)}
.tab:hover{color:var(--tx2)}
.tab.on:hover{color:var(--acc)}

.disc{margin:var(--s6) 0 var(--s5);padding:var(--s3) var(--s4);border:1px solid var(--line);
  border-radius:var(--rs);background:var(--surf);font-size:11.5px;color:var(--tx3);line-height:1.65}

/* 動效：內容預設可見，動畫只是先藏起來 */
.rv{opacity:1;transform:none}
/* JS 開啟後才藏起來，並且掛一道「純 CSS」保險絲：2 秒後無論如何都顯示。
   CSS animation 由合成器處理，不受 setTimeout／rAF 節流影響，
   所以就算 JS 整個卡死或漏呼叫 initReveal，內容也一定看得見。 */
.js-on .rv{opacity:0;transform:translateY(10px);
  animation:rvFailsafe 0s linear 2s forwards}
@keyframes rvFailsafe{to{opacity:1;transform:none}}
.js-on .rv.in{opacity:1;transform:none;animation:none;
  transition:opacity .5s ease,transform .5s cubic-bezier(.22,.7,.3,1)}
@media(prefers-reduced-motion:reduce){
  .js-on .rv{opacity:1!important;transform:none!important;transition:none!important}
  .sheet{transition:none}
}

/* ---------- 搜尋 ---------- */
.srch{display:flex;align-items:center;gap:var(--s2);border:1px solid var(--line);border-radius:var(--r);
  background:var(--surf);padding:0 var(--s3);transition:border-color .18s}
.srch:focus-within{border-color:var(--acc)}
.srch .ic{color:var(--tx3);flex:none}
.srch input{flex:1;min-width:0;background:none;border:0;color:var(--tx);font:inherit;font-size:15px;
  padding:12px 0;outline:none;-webkit-appearance:none}
.srch input::placeholder{color:var(--tx3)}
.srch input::-webkit-search-cancel-button{display:none}
.srch .clr{background:none;border:0;color:var(--tx3);cursor:pointer;padding:6px;display:grid;
  place-items:center;min-width:32px;min-height:32px;border-radius:50%}
.srch .clr:hover{color:var(--tx);background:rgba(255,255,255,.06)}
.srch-r{margin-top:var(--s2);border:1px solid var(--line);border-radius:var(--r);background:var(--surf);
  overflow:hidden;max-height:52svh;overflow-y:auto}
.srch-i{display:flex;align-items:center;gap:var(--s2);border-bottom:1px solid var(--line2);padding-right:var(--s3)}
.srch-i:last-child{border-bottom:0}
.srch-i a{flex:1;min-width:0;padding:11px var(--s4);display:flex;align-items:baseline;gap:var(--s2);
  flex-wrap:wrap;transition:background .15s}
.srch-i a:hover{background:var(--surf2)}
.srch-i b{font-size:15px;font-weight:600}
.srch-i .cd{font-family:var(--mono);font-size:11px;color:var(--tx3)}
.srch-i .mk2{font-size:11.5px;color:var(--tx3);margin-left:auto}
.srch-i .star{flex:none;font-size:11.5px;padding:6px 11px;border-radius:99px;border:1px solid var(--line);
  background:var(--surf2);color:var(--tx2);cursor:pointer;font-family:inherit;white-space:nowrap;min-height:32px}
.srch-i .star:hover{border-color:var(--acc);color:var(--acc)}
.srch-i .star.on{background:var(--acc);color:#0B0E12;border-color:var(--acc);font-weight:600}
.srch-e{padding:var(--s4);font-size:13.5px;color:var(--tx3);line-height:1.65}

/* ---------- 同步狀態 ---------- */
.top .sync{margin-left:auto;display:flex;align-items:center;gap:5px;background:none;border:0;
  color:var(--tx3);font-family:var(--mono);font-size:11px;cursor:pointer;padding:6px 8px;
  border-radius:var(--rs);min-height:32px;letter-spacing:.03em}
.top .sync:hover{color:var(--acc);background:rgba(255,255,255,.04)}
.top .sync.busy .ic{animation:spin 1.1s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}
@media(prefers-reduced-motion:reduce){.top .sync.busy .ic{animation:none}}

/* ---------- 空狀態 / 按鈕 / Modal ---------- */
.empty-box{border:1px dashed var(--line);border-radius:var(--r);background:var(--surf);padding:var(--s5);
  display:grid;gap:var(--s2);justify-items:start;margin-top:var(--s5)}
.empty-box .ic{color:var(--acc)}
.empty-box b{font-size:16px;font-weight:650}
.empty-box p{margin:0;font-size:13.5px;color:var(--tx2);line-height:1.7}
.btn{background:var(--acc);color:#0B0E12;border:0;border-radius:var(--rs);padding:10px 18px;
  font:inherit;font-size:14px;font-weight:650;cursor:pointer;min-height:40px}
.btn:hover{filter:brightness(1.08)}
.btn.ghost{background:var(--surf2);color:var(--tx2);border:1px solid var(--line)}
.btn.ghost:hover{color:var(--up);border-color:var(--up);filter:none}
.lnk{margin-left:auto;background:none;border:0;color:var(--tx3);font:inherit;font-size:12px;
  cursor:pointer;text-decoration:underline;text-underline-offset:3px;padding:6px;min-height:32px}
.lnk:hover{color:var(--acc)}
.modal{position:fixed;left:var(--s4);right:var(--s4);top:50%;transform:translateY(-50%) scale(.97);
  max-width:520px;margin:0 auto;z-index:60;background:var(--surf);border:1px solid var(--line);
  border-radius:var(--r);opacity:0;pointer-events:none;transition:opacity .22s,transform .22s;
  max-height:86svh;overflow-y:auto}
.modal.on{opacity:1;pointer-events:auto;transform:translateY(-50%) scale(1)}
.modal-h{display:flex;align-items:center;padding:var(--s4) var(--s5);border-bottom:1px solid var(--line2)}
.modal-h b{font-size:16px;font-weight:650}
.modal-h button{margin-left:auto;width:32px;height:32px;border-radius:50%;border:1px solid var(--line);
  background:var(--surf2);color:var(--tx2);cursor:pointer;display:grid;place-items:center}
.modal-b{padding:var(--s5);display:grid;gap:var(--s3)}
.modal-b .hint{margin:0;font-size:13px;color:var(--tx2);line-height:1.7}
.modal-b .hint.sm{font-size:11.5px;color:var(--tx3)}
.modal-b textarea{width:100%;background:var(--bg);border:1px solid var(--line);border-radius:var(--rs);
  color:var(--tx);font-family:var(--mono);font-size:12px;padding:var(--s3);resize:vertical;line-height:1.6}
.modal-b textarea:focus{outline:none;border-color:var(--acc)}
.fbtn{display:inline-flex;align-items:center;gap:var(--s2);border:1px solid var(--line);
  border-radius:var(--rs);background:var(--surf2);color:var(--tx2);padding:9px 14px;font-size:13.5px;
  cursor:pointer;justify-self:start;min-height:38px}
.fbtn:hover{border-color:var(--acc);color:var(--acc)}
.modal-f{display:flex;gap:var(--s2);justify-content:flex-end;flex-wrap:wrap}
.imp-msg{font-size:13px;line-height:1.6;min-height:20px}
.imp-msg.ok{color:var(--dn)} .imp-msg.bad{color:var(--up)}

/* 追蹤清單橫向列 */
.pickbar{display:flex;gap:var(--s2);overflow-x:auto;padding:var(--s1) 0 var(--s3);scrollbar-width:none}
.pickbar::-webkit-scrollbar{display:none}
.pickbar a{flex:none;padding:8px 14px;border:1px solid var(--line);border-radius:99px;font-size:13.5px;
  color:var(--tx2);background:var(--surf);white-space:nowrap;min-height:36px;display:flex;
  align-items:center;gap:5px;transition:border-color .18s,color .18s}
.pickbar a:hover{border-color:var(--acc);color:var(--acc)}

/* ═══════════════════════════════════════════════════
   互動層升級（Annie 2026-09-09：按鈕與動效要得獎水準）
   原則：狀態完整 > 特效多。每個可點元件都要有
   default / hover / active / focus-visible / disabled
   hover 一律包在 @media(hover:hover)，觸控裝置不留殘影
   ═══════════════════════════════════════════════════ */
:root{
  --ease:cubic-bezier(.22,.68,.28,1);
  --ease-out:cubic-bezier(.16,1,.3,1);
  --fast:.14s; --mid:.24s; --slow:.42s;
}
@media(prefers-reduced-motion:reduce){
  :root{--fast:0s;--mid:0s;--slow:0s}
  *,*::before,*::after{animation-duration:.001s!important;animation-iteration-count:1!important;
    transition-duration:.001s!important;scroll-behavior:auto!important}
}

/* ── 共用按下反饋：所有可點元件 ── */
.btn,.tab,.qo,.star,.fold,.lnk,.sync,.pick a,.pickbar a,.cats button,.fbtn,.row,.wc,.srch-i a{
  -webkit-tap-highlight-color:transparent;
  touch-action:manipulation;
}
:focus-visible{outline:2px solid var(--acc);outline-offset:2px;border-radius:var(--rs)}

/* ── 主要按鈕 ── */
.btn{
  position:relative;overflow:hidden;
  transition:transform var(--fast) var(--ease), filter var(--fast) linear, opacity var(--fast);
  will-change:transform;
}
@media(hover:hover){ .btn:hover{filter:brightness(1.09);transform:translateY(-1px)} }
.btn:active{transform:scale(.972);filter:brightness(.94);transition-duration:.07s}
.btn:disabled{opacity:.45;pointer-events:none}
/* 點擊漣漪（單層、無陰影，退場即移除） */
.btn .rp{position:absolute;border-radius:50%;background:rgba(11,14,18,.22);
  transform:scale(0);animation:rp .5s var(--ease-out) forwards;pointer-events:none}
.btn.ghost .rp{background:rgba(255,255,255,.14)}
@keyframes rp{to{transform:scale(2.4);opacity:0}}

/* ── 底部導覽：選中態用細線標示，圖示有微彈 ── */
.tab{position:relative;transition:color var(--fast) linear}
.tab::before{content:"";position:absolute;top:0;left:50%;width:0;height:2px;border-radius:0 0 2px 2px;
  background:var(--acc);transform:translateX(-50%);transition:width var(--mid) var(--ease-out)}
.tab.on::before{width:26px}
.tab .ic{transition:transform var(--mid) var(--ease-out)}
.tab.on .ic{transform:translateY(-1px) scale(1.06)}
@media(hover:hover){ .tab:not(.on):hover .ic{transform:translateY(-1px)} }
.tab:active .ic{transform:scale(.9);transition-duration:.07s}

/* ── 列表項：hover 有左緣提示，按下微縮 ── */
.row,.wc,.srch-i a{position:relative;transition:background var(--fast) linear,border-color var(--fast) linear}
.row::before{content:"";position:absolute;left:0;top:8px;bottom:8px;width:2px;border-radius:0 2px 2px 0;
  background:var(--acc);transform:scaleY(0);transform-origin:center;
  transition:transform var(--mid) var(--ease-out)}
@media(hover:hover){ .row:hover::before{transform:scaleY(1)} }
.row:active{background:var(--surf2);transform:scale(.995);transition-duration:.07s}
@media(hover:hover){ .wc:hover{transform:translateY(-2px)} }
.wc{transition:border-color var(--fast) linear,transform var(--mid) var(--ease-out)}
.wc:active{transform:translateY(0) scale(.99);transition-duration:.07s}

/* ── 術語按鈕：底線由左展開 ── */
.t{position:relative;border-bottom-color:transparent!important;
  background-image:linear-gradient(var(--acc),var(--acc));
  background-repeat:no-repeat;background-position:0 100%;background-size:100% 1px;
  transition:color var(--fast) linear,background-size var(--mid) var(--ease-out)}
@media(hover:hover){ .t:hover{background-size:100% 2px} }
.t:active{color:var(--acc);transition-duration:.07s}

/* ── 膠囊選擇器（股票切換、辭典分類） ── */
.pick a,.pickbar a,.cats button{
  transition:background var(--fast) linear,color var(--fast) linear,
             border-color var(--fast) linear,transform var(--fast) var(--ease)}
.pick a:active,.pickbar a:active,.cats button:active{transform:scale(.955);transition-duration:.07s}

/* ── 測驗選項：答對答錯有一次性反饋 ── */
.qo{transition:border-color var(--fast) linear,background var(--fast) linear,
    color var(--fast) linear,transform var(--fast) var(--ease)}
.qo:active:not(:disabled){transform:scale(.985);transition-duration:.07s}
.qo.right{animation:pop .34s var(--ease-out)}
.qo.wrong{animation:shake .32s var(--ease)}
@keyframes pop{0%{transform:scale(1)}45%{transform:scale(1.022)}100%{transform:scale(1)}}
@keyframes shake{0%,100%{transform:translateX(0)}22%{transform:translateX(-5px)}
  55%{transform:translateX(4px)}80%{transform:translateX(-2px)}}

/* ── 同步鈕 ── */
.sync{transition:color var(--fast) linear,background var(--fast) linear}
.sync:active{transform:scale(.94);transition-duration:.07s}

/* ── 抽屜：兩段式曲線，關閉快、開啟帶一點回彈 ── */
.sheet{transition:transform var(--slow) var(--ease-out)}
.sheet:not(.on){transition-duration:var(--mid)}
.sb{opacity:1}
.sheet.on .sb{animation:sbIn .44s var(--ease-out) backwards}
.sheet.on .sb:nth-child(1){animation-delay:.04s}
.sheet.on .sb:nth-child(2){animation-delay:.08s}
.sheet.on .sb:nth-child(3){animation-delay:.12s}
.sheet.on .sb:nth-child(4){animation-delay:.16s}
.sheet.on .sb:nth-child(5){animation-delay:.20s}
@keyframes sbIn{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}

/* ── 數字：更新時輕微脈動（只在值真的變了才加 class） ── */
.num.bump{animation:bump .5s var(--ease-out)}
@keyframes bump{0%{transform:scale(1)}30%{transform:scale(1.035)}100%{transform:scale(1)}}

/* ── 骨架屏（取代轉圈） ── */
.skel{display:grid;gap:var(--s3)}
.sk{background:linear-gradient(90deg,var(--surf) 0%,var(--surf2) 42%,var(--surf) 84%);
  background-size:220% 100%;border-radius:var(--rs);animation:shim 1.25s linear infinite}
@keyframes shim{to{background-position:-220% 0}}
.sk.h1{height:38px;width:62%} .sk.h2{height:15px;width:40%}
.sk.card{height:74px} .sk.row{height:52px}
@media(prefers-reduced-motion:reduce){.sk{animation:none;background:var(--surf2)}}

/* ── K 線繪製 ── */
.chart svg .kbar{opacity:0;animation:kIn .34s var(--ease-out) forwards}
.chart svg .kline{stroke-dasharray:var(--len);stroke-dashoffset:var(--len);
  animation:draw 1.05s var(--ease-out) .18s forwards}
@keyframes kIn{to{opacity:1}}
@keyframes draw{to{stroke-dashoffset:0}}
@media(prefers-reduced-motion:reduce){
  .chart svg .kbar{opacity:1;animation:none}
  .chart svg .kline{stroke-dashoffset:0;animation:none}
}

/* ── 進度條填充 ── */
.bar i,.wbar i,.pbar i,.stepbar i{transition:width var(--slow) var(--ease-out)}

/* ═══ 警語縮小（Annie 2026-09-09：字更小、不要一直出現）═══ */
.disc{font-size:10.5px;color:#4F5964;line-height:1.6;padding:10px var(--s4);
  border-color:#1B222B;background:transparent}
.disc b{color:var(--tx3);font-weight:500}
.brief-f{font-size:10.5px;padding:8px var(--s4);color:#4F5964}
.brief-f .ic{width:11px;height:11px;opacity:.55}
.warn-box{font-size:11px;padding:9px var(--s4);color:var(--tx3)}
.warn-box b{color:var(--tx2)}
.fn-mini{font-size:10.5px;color:#4F5964;line-height:1.6}

/* ═══════════ 判斷記錄器 ═══════════ */
/* 戰績 */
.score{border:1px solid var(--line);border-radius:var(--r);background:var(--surf);overflow:hidden;margin-top:var(--s5)}
.score-h{display:flex;align-items:center;gap:var(--s3);padding:var(--s4);border-bottom:1px solid var(--line2);
  background:var(--surf2);flex-wrap:wrap}
.score-h b{font-size:14px;font-weight:650}
.score-g{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1px;background:var(--line2)}
@media(min-width:620px){.score-g{grid-template-columns:repeat(4,minmax(0,1fr))}}
.sc{background:var(--surf);padding:var(--s4);display:grid;gap:2px;min-width:0}
.sc .k{font-size:11.5px;color:var(--tx3)}
.sc .v{font-size:24px;font-weight:700;letter-spacing:-.02em;line-height:1.15}
.sc .n{font-size:11px;color:var(--tx3);line-height:1.5}
.score-note{padding:12px var(--s4);font-size:12.5px;color:var(--tx2);line-height:1.7;
  border-top:1px solid var(--line2);background:var(--surf)}
.score-note.warn{border-left:2px solid var(--acc2);background:rgba(242,184,114,.06)}
.score-note.ok{border-left:2px solid var(--dn);background:rgba(47,214,155,.06)}

/* 分段選擇器 */
.seg{display:inline-flex;border:1px solid var(--line);border-radius:99px;overflow:hidden;background:var(--bg)}
.seg button{background:none;border:0;color:var(--tx3);font:inherit;font-size:12.5px;padding:7px 14px;
  cursor:pointer;min-height:34px;transition:background var(--fast) linear,color var(--fast) linear}
.seg button.on{background:var(--acc);color:#0B0E12;font-weight:650}
.seg button:not(.on):hover{color:var(--tx2)}
.seg.wide{display:grid;grid-auto-flow:column;grid-auto-columns:1fr;width:100%;border-radius:var(--rs)}
.seg.wide button{min-height:42px;font-size:13.5px}

/* 分頁 */
.tabsec{display:grid;grid-auto-flow:column;grid-auto-columns:1fr;gap:var(--s2);margin:var(--s5) 0 var(--s4)}
.tabsec button{background:var(--surf);border:1px solid var(--line);border-radius:var(--rs);color:var(--tx2);
  font:inherit;font-size:13.5px;padding:10px;cursor:pointer;min-height:42px;
  transition:border-color var(--fast) linear,color var(--fast) linear}
.tabsec button.on{border-color:var(--acc);color:var(--acc);font-weight:650;background:var(--surf2)}

/* 表單 */
.form{display:grid;gap:var(--s4)}
.fgrp{border:1px solid var(--line);border-radius:var(--r);background:var(--surf);padding:var(--s4);display:grid;gap:var(--s4)}
.fgrp h3{margin:0;font-size:13px;font-weight:650;color:var(--tx2);letter-spacing:.03em}
.frow{display:grid;gap:var(--s4);grid-template-columns:minmax(0,1fr)}
@media(min-width:560px){.frow{grid-template-columns:repeat(2,minmax(0,1fr))}}
.fld{display:grid;gap:6px;min-width:0}
.fld label{font-size:12.5px;color:var(--tx2);font-weight:600}
.fld .req{color:var(--up);font-size:10.5px;font-weight:500;margin-left:4px}
.fld .hint{margin:0;font-size:11.5px;color:var(--tx3);line-height:1.65}
.fin{width:100%;background:var(--bg);border:1px solid var(--line);border-radius:var(--rs);color:var(--tx);
  font:inherit;font-size:15px;padding:11px var(--s3);min-height:44px;-webkit-appearance:none;
  transition:border-color var(--fast) linear}
.fin:focus{outline:none;border-color:var(--acc)}
.fin::placeholder{color:var(--tx3)}
textarea.fin{min-height:auto;line-height:1.7;resize:vertical}
.unit{display:flex;align-items:center;gap:var(--s2)}
.unit .fin{flex:1}
.unit span{color:var(--tx3);font-size:14px}
.rng{display:flex;align-items:center;gap:var(--s3)}
.rng input[type=range]{flex:1;-webkit-appearance:none;height:4px;border-radius:99px;background:var(--surf2);outline:none}
.rng input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;width:22px;height:22px;border-radius:50%;
  background:var(--acc);cursor:pointer;border:3px solid var(--surf)}
.rngv{font-family:var(--mono);font-size:16px;font-weight:700;color:var(--acc);min-width:20px;text-align:center}
.chips2{display:flex;flex-wrap:wrap;gap:var(--s2)}
.chk{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--line);border-radius:99px;
  padding:8px 13px;font-size:12.5px;color:var(--tx2);background:var(--bg);cursor:pointer;min-height:38px;
  transition:border-color var(--fast) linear,color var(--fast) linear}
.chk input{accent-color:var(--acc);width:15px;height:15px;margin:0}
.chk:has(input:checked){border-color:var(--acc);color:var(--acc);background:var(--surf2)}
.fbar{display:flex;gap:var(--s2);justify-content:flex-end;flex-wrap:wrap}
.fmsg{font-size:13px;line-height:1.6;min-height:18px}
.fmsg.ok{color:var(--dn)} .fmsg.bad{color:var(--up)}
.fnote{margin:0;font-size:11.5px;color:var(--tx3);line-height:1.7}

/* 紀錄列表 */
.jlist{display:grid;gap:var(--s3)}
.jc{border:1px solid var(--line);border-radius:var(--r);background:var(--surf);overflow:hidden}
.jc summary{padding:var(--s4);cursor:pointer;list-style:none;display:grid;gap:5px;min-height:56px}
.jc summary::-webkit-details-marker{display:none}
.jc summary:hover{background:var(--surf2)}
.jh{display:flex;align-items:center;gap:var(--s2);flex-wrap:wrap}
.jh b{font-size:15px;font-weight:650}
.jm{font-size:11.5px;color:var(--tx3)}
.jv{font-size:11px;padding:2px 9px;border-radius:99px;font-weight:600}
.jv.bull{background:rgba(255,91,82,.14);color:var(--up)}
.jv.bear{background:rgba(47,214,155,.14);color:var(--dn)}
.jv.unsure{background:var(--surf2);color:var(--tx3)}
.jb{font-size:11px;padding:2px 9px;border-radius:99px;background:var(--surf2);color:var(--tx3);margin-left:auto}
.jb.hit{background:rgba(47,214,155,.16);color:var(--dn)}
.jb.miss{background:rgba(255,91,82,.16);color:var(--up)}
.jb.wait{background:rgba(242,184,114,.14);color:var(--acc2)}
.jb2{border-top:1px solid var(--line2);padding:var(--s4);display:grid;gap:var(--s4)}
.jr{display:grid;gap:3px}
.jr .k{font-size:10.5px;letter-spacing:.12em;text-transform:uppercase;color:var(--tx3);font-weight:600}
.jr .v{font-size:14px;color:var(--tx2);line-height:1.7}
.tagx{display:inline-block;font-size:11.5px;padding:3px 9px;border-radius:99px;background:var(--surf2);
  color:var(--tx2);margin:0 5px 5px 0;border:1px solid var(--line)}
.jrev{border:1px solid var(--line);border-radius:var(--rs);background:var(--bg);padding:var(--s3);display:grid;gap:var(--s3)}
.jrev .k{font-size:11.5px;color:var(--tx2);line-height:1.6}
.jdel{display:flex;justify-content:flex-end}
.lnk.del{color:var(--tx3)}
.lnk.del:hover{color:var(--up)}
.empty2{border:1px dashed var(--line);border-radius:var(--r);padding:var(--s7) var(--s4);text-align:center;
  color:var(--tx3);font-size:14px;line-height:1.8}

/* 統計 */
.statbox{border:1px solid var(--line);border-radius:var(--r);background:var(--surf);padding:var(--s4);
  display:grid;gap:var(--s3);margin-bottom:var(--s3)}
.statbox h3{margin:0;font-size:13.5px;font-weight:650}
.statbox .ul{margin:0;padding-left:1.1em;font-size:13px;color:var(--tx2);line-height:1.75;display:grid;gap:4px}
.statbox .hint{margin:0;font-size:12px;color:var(--tx3);line-height:1.7}
.qbar{display:grid;gap:var(--s2)}
.qrow{display:flex;align-items:center;gap:var(--s3);font-size:13px}
.ql{color:var(--tx2);min-width:58px}
.qb{flex:1;height:8px;border-radius:99px;background:var(--surf2);overflow:hidden}
.qb i{display:block;height:100%;border-radius:99px;transition:width var(--slow) var(--ease-out)}
.qn{color:var(--tx2);min-width:24px;text-align:right}
.tw2{overflow-x:auto;border:1px solid var(--line2);border-radius:var(--rs)}
.tw2 table{border-collapse:collapse;width:100%;font-size:13.5px}
.tw2 th,.tw2 td{padding:9px var(--s3);border-bottom:1px solid var(--line2);text-align:left}
.tw2 th{font-size:11px;color:var(--tx3);background:var(--surf2);font-weight:600}
.tw2 .r{text-align:right}
.tw2 tr:last-child td{border-bottom:0}

/* 學習頁的辭典入口 */
.dictcard{display:flex;align-items:center;gap:var(--s3);border:1px solid var(--line);border-radius:var(--r);
  background:var(--surf);padding:var(--s4);transition:border-color var(--fast) linear,transform var(--mid) var(--ease-out)}
@media(hover:hover){.dictcard:hover{border-color:var(--acc);transform:translateY(-1px)}}
.dictcard>.ic{color:var(--acc)}
.dictcard span{display:grid;gap:2px;min-width:0}
.dictcard b{font-size:15px;font-weight:650}
.dictcard span span{font-size:12px;color:var(--tx3);line-height:1.5}
.dictcard .ar{margin-left:auto;color:var(--tx3);flex:none}

/* 個股頁 → 記錄判斷的入口 */
.jcta{display:flex;align-items:center;gap:var(--s3);border:1px solid var(--acc);border-radius:var(--r);
  background:linear-gradient(0deg,var(--surf),var(--surf));padding:var(--s4);margin-top:var(--s5);
  transition:transform var(--mid) var(--ease-out),background var(--fast) linear}
@media(hover:hover){.jcta:hover{transform:translateY(-1px);background:var(--surf2)}}
.jcta:active{transform:scale(.995)}
.jcta>.ic{color:var(--acc)}
.jcta span{display:grid;gap:3px;min-width:0}
.jcta b{font-size:14.5px;font-weight:650}
.jcta span span{font-size:11.5px;color:var(--tx3);line-height:1.55}
.jcta .ar{margin-left:auto;color:var(--acc);flex:none}

/* ═══════════════════════════════════════════
   統一整理（Annie 2026-09-09：標題不要框線、按鈕統一風格、手機不要跑版）
   放在檔案最後，覆蓋前面零散的定義
   ═══════════════════════════════════════════ */

/* ── 1. 區塊標題：純文字，任何情況都不要框線與底色 ── */
.sh{border:0!important;background:none!important;padding:0!important;
    border-radius:0!important;box-shadow:none!important;
    margin:var(--s6) 0 var(--s3);align-items:baseline;flex-wrap:wrap}
.sh h2{font-size:15px;font-weight:650;letter-spacing:.01em;line-height:1.4}
.sh .cnt{font-size:11.5px;color:var(--tx3);font-family:var(--sans);letter-spacing:0}

/* ── 2. 小標籤（分類、狀態）：不要框線，用極淡底色區分 ── */
.hd .nm .cat,.tagx,.chip{
  border:0!important;background:var(--surf2);color:var(--tx3);
  border-radius:99px;padding:3px 10px;font-size:11.5px;line-height:1.6}
.pill{border:0!important;background:var(--surf2)}
.pill.g{background:rgba(47,214,155,.13);color:var(--dn)}
.pill.r{background:rgba(255,91,82,.13);color:var(--up)}
.pill.y{background:rgba(242,184,114,.13);color:var(--acc2)}

/* ── 3. 按鈕統一：三個層級，尺寸與圓角一致 ── */
/* 主要 */
.btn{border-radius:var(--rs);padding:11px 18px;font-size:14px;font-weight:650;min-height:42px;border:0}
/* 次要（外框） */
.btn.ghost{background:transparent;border:1px solid var(--line);color:var(--tx2)}
@media(hover:hover){.btn.ghost:hover{border-color:var(--acc);color:var(--acc);background:transparent;filter:none}}
/* 膠囊：股票切換、辭典分類、追蹤 —— 全部同一種 */
.pick a,.pickbar a,.cats button,.srch-i .star,.hd .nm .fav{
  border:1px solid var(--line);background:var(--surf);color:var(--tx2);
  border-radius:99px;padding:0 14px;font-size:13px;font-weight:500;
  min-height:36px;display:inline-flex;align-items:center;gap:5px;white-space:nowrap;
  font-family:inherit;cursor:pointer;
  transition:border-color var(--fast) linear,color var(--fast) linear,background var(--fast) linear}
@media(hover:hover){
  .pick a:hover,.pickbar a:hover,.cats button:hover,.srch-i .star:hover,.hd .nm .fav:hover{
    border-color:var(--acc);color:var(--acc)}}
.pick a.on,.cats button.on,.srch-i .star.on,.hd .nm .fav.on{
  background:var(--acc);color:#0B0E12;border-color:var(--acc);font-weight:650}
/* 分段選擇器：與膠囊同高 */
.seg button{min-height:36px}
.seg.wide button{min-height:44px}
.tabsec button{min-height:44px;border-radius:var(--rs)}

/* ── 4. 個股頁標頭：不跑版 ── */
.hd .nm{display:flex;align-items:center;gap:var(--s2);flex-wrap:wrap;row-gap:var(--s2)}
.hd .nm h1{font-size:clamp(21px,5.6vw,26px);line-height:1.25;margin:0}
.hd .nm .cd{font-family:var(--mono);font-size:12px;color:var(--tx3)}
.hd .nm .fav{margin-left:auto;flex:none}
.hd .pr{margin-top:var(--s3);row-gap:4px}
.hd .pr .p{font-size:clamp(30px,8vw,42px)}
.hd .note{font-size:12px;line-height:1.75;margin-top:var(--s2)}
.hd .note b{white-space:nowrap}

/* ── 5. 盤面格：文字不要亂斷 ── */
.cellx{padding:11px 12px}
.cellx .k{font-size:11px}
.cellx .v{font-size:16px;margin-top:2px}
.cellx .h{font-size:10.5px;margin-top:2px;
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}

/* ── 6. 籌碼列：統一兩欄，欄寬固定不飄 ── */
.chips2{border:1px solid var(--line);border-radius:var(--r);background:var(--surf);overflow:hidden}
.crow{grid-template-columns:minmax(0,1fr) auto;padding:12px var(--s4);gap:var(--s3);align-items:baseline}
.crow .ck{font-size:13px;line-height:1.5}
.crow .cv{font-size:15px;line-height:1.4}
.crow .cn{font-size:11px;margin-top:2px;display:block}

/* ── 7. 法人 10 日柱狀圖：加高、加底線、說明分行 ── */
.inst{height:76px;padding:var(--s3) var(--s4) 0;gap:4px}
.inst::before{left:var(--s4);right:var(--s4);background:var(--line)}
.inst .ib i{min-height:3px}
.instx{display:grid;grid-template-columns:auto 1fr auto;gap:var(--s2);align-items:center;
  padding:8px var(--s4) 12px;font-size:10.5px}
.instx span:nth-child(2){text-align:center}
.instx b{font-weight:500}

/* ── 8. 全域：避免長字串撐破版面 ── */
.app,.card,.wc,.crow,.cellx,.bl,.jc,.fgrp{min-width:0}
.bl b,.bl span,.crow .ck,.jr .v{overflow-wrap:anywhere}

/* ?audit 檢查時停用所有過場，讓量測拿到最終值而不是動畫中間值 */
.audit-static *,.audit-static *::before,.audit-static *::after{
  transition:none!important;animation:none!important}

/* 按鈕高度跨頁一致：不靠 padding 撐，改用固定行高＋min-height */
.btn{line-height:20px;padding:11px 18px;min-height:44px;box-sizing:border-box}
label.btn{display:inline-flex;align-items:center;justify-content:center}
/* 主要按鈕高度固定，避免不同元素（button / label）行高差造成 1px 落差 */
.btn{height:44px;min-height:44px;display:inline-flex;align-items:center;justify-content:center;gap:6px}

/* ═══ 判斷記錄器：訊號多選（2026-09-09 改掉原生 checkbox）═══ */
.fgrp h3 .gsub{font-weight:400;color:var(--tx3);font-size:11.5px;margin-left:6px}
.siggrid{display:grid;gap:var(--s4)}
.siggrp{display:grid;gap:var(--s2)}
.sgl{font-size:11px;color:var(--tx3);letter-spacing:.1em;font-weight:600}
.sgchips{display:flex;flex-wrap:wrap;gap:7px}
/* 標籤式多選：整顆可點，選中變色，不用原生方框 */
.tagchk{position:relative;display:inline-flex;align-items:center;gap:5px;
  border:1px solid var(--line);border-radius:99px;background:var(--bg);
  color:var(--tx2);font-size:12.5px;padding:0 13px;height:34px;cursor:pointer;
  transition:border-color var(--fast) linear,color var(--fast) linear,
             background var(--fast) linear,padding var(--fast) var(--ease);
  -webkit-tap-highlight-color:transparent;user-select:none}
.tagchk input{position:absolute;opacity:0;width:1px;height:1px;pointer-events:none}
.tagchk .tk{width:0;opacity:0;flex:none;transition:width var(--fast) var(--ease),opacity var(--fast) linear}
@media(hover:hover){.tagchk:hover{border-color:var(--acc);color:var(--tx)}}
.tagchk:active{transform:scale(.96);transition-duration:.07s}
.tagchk:has(input:checked){background:var(--acc);border-color:var(--acc);color:#0B0E12;font-weight:650}
.tagchk:has(input:checked) .tk{width:13px;opacity:1}
.tagchk:has(input:focus-visible){outline:2px solid var(--acc);outline-offset:2px}
/* 不支援 :has() 的舊瀏覽器退回可用狀態（不會壞，只是沒有變色） */
@supports not (selector(:has(*))){
  .tagchk input{position:static;opacity:1;width:15px;height:15px;accent-color:var(--acc)}
  .tagchk .tk{display:none}
}

/* ---- 美股（複委託）：幣別分開顯示，換算值一律標明是估算 ---- */
.tot .grand{margin:var(--s3) 0 0;font-size:13px;color:var(--tx2);line-height:1.6}
.tot .grand b{font-weight:650;color:var(--tx)}
.fx{margin:var(--s3) 0 var(--s5);font-size:13px;color:var(--tx2);line-height:1.7}
.fx b{font-weight:650;color:var(--tx)}
.wn{display:block;margin-top:var(--s1);font-size:11px;color:var(--tx3);line-height:1.55}

/* ═══════════════════════════════════════════════════
   2026-09-10 資料正確性稽核後新增的元件
   （設定面板／除息提示／大盤脈絡／ETF 折溢價／含息標記）
   ═══════════════════════════════════════════════════ */

/* ---- 頂列：設定齒輪。原本 .sync 帶 margin-left:auto 把自己推到最右，
        現在改由 .cog 承擔，兩顆才會靠在一起 ---- */
.top .cog{margin-left:auto;display:flex;align-items:center;justify-content:center;
  background:none;border:0;color:var(--tx3);cursor:pointer;padding:6px;border-radius:var(--rs);
  min-width:32px;min-height:32px;transition:color var(--fast) linear,background var(--fast) linear}
.top .cog+.sync{margin-left:0}
.top .cog:active{transform:scale(.94);transition-duration:.07s}
@media(hover:hover){.top .cog:hover{color:var(--acc);background:rgba(255,255,255,.04)}}

/* ---- 設定面板 ---- */
.modal-b input[type=password],.modal-b input[type=text],.modal-b input[type=number]{
  width:100%;background:var(--bg);border:1px solid var(--line);border-radius:var(--rs);
  color:var(--tx);font-family:var(--mono);font-size:13px;padding:10px var(--s3);min-height:40px}
.modal-b input:focus{outline:none;border-color:var(--acc)}
.cfg-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--s2) var(--s3)}
@media(min-width:460px){.cfg-grid{grid-template-columns:repeat(4,minmax(0,1fr))}}
.cfg-grid label{display:grid;gap:5px;font-size:11.5px;color:var(--tx3);min-width:0}
.cfg-grid input{font-size:13px;padding:8px var(--s2)}
.cfg-st{font-size:12px;color:var(--tx2);line-height:1.6;min-height:18px}
.cfg-ok{color:var(--dn)}
.cfg-mut{color:var(--tx3)}

/* ---- 即將除息（時效性提示，排在盤面正下方）---- */
.exdiv{border:1px solid var(--line);border-left:2px solid var(--acc2);border-radius:var(--rs);
  background:var(--surf);padding:11px var(--s4);margin-top:var(--s4);
  display:flex;gap:var(--s2);align-items:flex-start;font-size:13px;color:var(--tx2);line-height:1.65}
.exdiv .ic{color:var(--acc2);margin-top:3px;flex:none}
.exdiv b{color:var(--tx);font-weight:650}
.exdiv .mut2{color:var(--tx3)}

/* ---- 大盤脈絡（籌碼區最後一列）---- */
.mkctx{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:var(--s3);
  padding:11px var(--s4);border-top:1px solid var(--line2);align-items:center;
  background:var(--surf2)}
.mkctx .ck{font-size:13px;color:var(--tx2)}
.mkctx .cv{font-size:14.5px;font-weight:650;white-space:nowrap;text-align:right}
.mkctx-n{grid-column:1/-1;font-size:11.5px;color:var(--tx3);line-height:1.6}

/* ---- K 線圖說明（已還原除息）---- */
.chart-n{margin:0;padding:0 var(--s4) var(--s4);font-size:11.5px;color:var(--tx3);line-height:1.65}
.chart-n b{color:var(--tx2);font-weight:650}

/* ---- 判斷記錄：含息標記 ---- */
.jdiv{display:inline-block;margin-left:5px;padding:1px 5px;border-radius:99px;
  border:1px solid var(--line);font-size:9.5px;color:var(--tx3);vertical-align:1px;
  font-family:var(--sans);font-weight:400}
