/* 市場資訊三模組共用樣式：每日快報 / 週報 / 懶人包。跟 tokens.css，零 emoji，窄螢幕自捲。 */

/* ── 共用 ── */
.ct-hero{display:flex;gap:var(--sp-3);overflow-x:auto;padding-bottom:var(--sp-2);scroll-snap-type:x proximity;-webkit-overflow-scrolling:touch}
.ct-hero .stat{flex:0 0 auto;min-width:150px;background:var(--card);border:1px solid var(--line);border-radius:var(--r-md);padding:var(--sp-3) var(--sp-3h);scroll-snap-align:start}
.ct-hero .stat .nm{font-size:var(--fs-xs);color:var(--muted);white-space:nowrap}
.ct-hero .stat .pr{font-family:var(--mono);font-size:var(--fs-lg);font-weight:500;margin-top:2px}
.ct-hero .stat .ch{font-size:var(--fs-sm);margin-top:2px}
.ct-toolbar{display:flex;flex-wrap:wrap;gap:var(--sp-2);align-items:center;margin:var(--sp-3) 0}
.ct-toolbar .chip{border:1px solid var(--line);background:var(--card);border-radius:var(--r-pill);padding:4px var(--sp-2h);font-size:var(--fs-2xs);cursor:pointer;opacity:.55;white-space:nowrap}
.ct-toolbar .chip.on{opacity:1;border-color:var(--brand-green-deep);color:var(--brand-green-deep)}
.ct-actions{display:flex;flex-wrap:wrap;gap:var(--sp-2);margin:var(--sp-3) 0}
.ct-state{padding:var(--sp-5);text-align:center;color:var(--muted)}

/* ── 每日市場快報（editorial v11）── 全部色一律用 tokens／brand token，深淺＋多租戶自適應 */
.bfx{max-width:1240px;margin:0 auto;line-break:strict}
.bfx :where(h1,h2,h3,p,.tz,.lead,.sum,.mv,.chip){text-wrap:pretty}
.bfx img{max-width:100%;display:block}
.bfx .mono{font-family:var(--mono);font-variant-numeric:tabular-nums}
.bfx .up{color:var(--ok)}.bfx .down{color:var(--bad)}
.bfx .eyebrow{font-family:var(--mono);font-size:11px;letter-spacing:.26em;text-transform:uppercase;color:var(--brand-gold);font-weight:600}
.bfx .clamp2{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.bfx .clamp3{display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
/* masthead */
.bfx .mast{display:flex;justify-content:space-between;align-items:center;gap:16px;flex-wrap:wrap;padding:2px 0 16px;border-bottom:2px solid var(--ink)}
.bfx .mast .nm{font-family:var(--serif);font-weight:900;font-size:25px;letter-spacing:.04em}
.bfx .mast .nm .en{font-family:var(--mono);font-weight:500;font-size:10px;letter-spacing:.32em;color:var(--brand-gold);display:block;margin-top:5px}
.bfx .mast .tools{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.bfx .mast .dt{font-family:var(--mono);font-size:12px;color:var(--ink2)}
/* hero */
.bfx .bfx-hero{background:transparent;color:var(--ink);display:grid;grid-template-columns:1.15fr .85fr;gap:38px;align-items:center;padding:44px 0;border-bottom:1px solid var(--line)}
.bfx .bfx-hero h1{font-family:var(--serif);font-weight:900;font-size:clamp(30px,4.5vw,52px);line-height:1.1;margin:14px 0 0;text-wrap:balance}
.bfx .bfx-hero .lead{color:var(--ink);font-size:17px;line-height:1.8;margin:20px 0 0;max-width:52ch}
.bfx .bfx-hero .mood{display:inline-flex;gap:12px;margin-top:24px;flex-wrap:wrap}
.bfx .chip{display:inline-flex;align-items:center;gap:8px;font-size:13px;border:1px solid var(--line);background:var(--card);padding:8px 14px;border-radius:20px}
.bfx .chip .dot{width:8px;height:8px;border-radius:50%}
.bfx .heroart{border-radius:6px;overflow:hidden;aspect-ratio:4/3;position:relative;background:var(--line2)}
.bfx .heroart img{width:100%;height:100%;object-fit:cover}
.bfx .heroart .cap{position:absolute;left:0;right:0;bottom:0;padding:14px 16px;background:linear-gradient(transparent,rgba(6,12,22,.82));color:#fff;font-size:12px;font-family:var(--mono)}
/* snapshot */
.bfx .snap{display:grid;grid-template-columns:repeat(5,1fr);border:1px solid var(--line);background:var(--card);margin-top:28px}
.bfx .snap .c{padding:16px 18px;border-right:1px solid var(--line2)}
.bfx .snap .c:last-child{border-right:0}
.bfx .snap .snm{font-size:12px;color:var(--ink2)}
.bfx .snap .px{font-size:19px;font-weight:600;margin-top:8px}
.bfx .snap .ch{font-family:var(--mono);font-size:12.5px;font-weight:600;margin-top:3px}
.bfx .snap .ch.up{color:var(--ok)}.bfx .snap .ch.down{color:var(--bad)}
.bfx .snap .ch::before{content:"\25B2 ";font-size:8px}.bfx .snap .ch.dn::before{content:"\25BC "}
/* section */
.bfx .sec{padding:44px 0;border-bottom:1px solid var(--line)}
.bfx .sh{display:flex;align-items:baseline;gap:14px;margin-bottom:26px}
.bfx .sh h2{font-family:var(--serif);font-weight:700;font-size:24px;margin:0}
.bfx .sh .n{font-family:var(--mono);font-size:12px;color:var(--brand-gold);font-weight:600}
.bfx .sh .ln{flex:1;height:1px;background:var(--line)}
.bfx .sh .hint{font-size:12px;color:var(--muted)}
/* news grid */
.bfx .grid{display:grid;grid-template-columns:repeat(3,1fr);gap:24px}
.bfx .card{background:var(--card);border:1px solid var(--line);border-radius:6px;overflow:hidden;cursor:pointer;transition:.18s;display:flex;flex-direction:column}
.bfx .card:hover{transform:translateY(-3px);box-shadow:0 14px 34px rgba(10,30,70,.14);border-color:var(--brand-green)}
.bfx .card .ph{aspect-ratio:16/10;overflow:hidden;background:var(--line2)}
.bfx .card .ph img{width:100%;height:100%;object-fit:cover;transition:.3s}
.bfx .card:hover .ph img{transform:scale(1.04)}
.bfx .card .bd{padding:16px 18px 18px;display:flex;flex-direction:column;flex:1}
.bfx .card .top{display:flex;justify-content:space-between;font-size:10px;font-family:var(--mono);letter-spacing:.18em;text-transform:uppercase}
.bfx .card .cat{color:var(--brand-gold);font-weight:600}
.bfx .card .imp{color:var(--muted)}
.bfx .card h3{font-family:var(--serif);font-weight:700;font-size:18px;line-height:1.5;margin:10px 0 0}
.bfx .card .tz{font-size:13.5px;color:var(--ink2);margin-top:10px}
.bfx .card .more{margin-top:auto;padding-top:14px;font-family:var(--mono);font-size:11px;color:var(--brand-green)}
/* topics */
.bfx .tgrid{display:grid;grid-template-columns:repeat(3,1fr);gap:20px}
.bfx .tc{background:var(--card);border:1px solid var(--line);border-left:3px solid var(--brand-green);border-radius:0 6px 6px 0;padding:22px;cursor:pointer;transition:.15s}
.bfx .tc:hover{box-shadow:0 10px 26px rgba(10,30,70,.12)}
.bfx .tc h3{font-family:var(--serif);font-weight:700;font-size:18px;margin:0 0 12px;line-height:1.45}
.bfx .tc p{margin:0;font-size:13.5px;color:var(--ink2)}
.bfx .tc .more{margin-top:14px;font-family:var(--mono);font-size:11px;color:var(--brand-green)}
/* moves ── 市場動向：我哋自己嗰張分類表（七區，每隻一行：名／價／變幅／「看圖」）。
   09-18 用戶指示剷走上層 TradingView 報價 widget（長條形列表）連同佢個 .slow 退路 ——
   數字改由後端 liveQuotes（scope 'all'）出，退路同列印用 pack 收市價（.pk，見下面 @media print）。 */
.bfx .snapfb{margin-top:26px}
.bfx .snapfb .fbhd{font-family:var(--mono);font-size:11.5px;letter-spacing:.04em;color:var(--muted);padding-bottom:8px;border-bottom:1px solid var(--line);display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 12px}
.bfx .snapfb .fbhd .sub{color:var(--muted);opacity:.82}
.bfx .snapfb .fbhd .warn{color:var(--bad);font-weight:600}
.bfx .snapfb .fbhd .pk{display:none}          /* 只喺列印出（螢幕睇即時價，張紙印收市價）*/
.bfx .mg{display:grid;grid-template-columns:1fr 1fr;gap:0 44px;align-items:start}
.bfx .gcol{min-width:0}
.bfx .grp{font-family:var(--mono);font-size:10.5px;letter-spacing:.16em;text-transform:uppercase;color:var(--brand-gold);font-weight:600;padding:18px 0 4px}
.bfx .mv{display:flex;justify-content:space-between;align-items:baseline;gap:10px;padding:10px 0;border-top:1px solid var(--line2);font-size:14.5px}
.bfx .mv .nm{min-width:0}
.bfx .mv .q,.bfx .mv .pk{display:inline-flex;align-items:baseline;gap:10px;white-space:nowrap;flex:none}
.bfx .mv .pk{display:none}                    /* 同上：列印先出 */
.bfx .mv .px{font-family:var(--mono);color:var(--ink);font-variant-numeric:tabular-nums}
.bfx .mv .p{font-family:var(--mono);font-weight:600;font-variant-numeric:tabular-nums;min-width:66px;text-align:right}
.bfx .mv .p.up{color:var(--ok)}.bfx .mv .p.down{color:var(--bad)}
/* 行尾細字：「收市」＝呢個市收咗（顯示最後成交／收市價）；「未更新」＝攞唔到呢隻嘅即時價（顯示快報 pack 收市價）。
   兩個意思一定要分得開 —— 09-18 之前用同一個「收市」字講兩件事，同事讀出嚟嘅意思同真相相反。 */
.bfx .mv .mk{font-style:normal;font-family:var(--mono);font-size:10px;color:var(--muted);border:1px solid var(--line);border-radius:4px;padding:1px 5px;white-space:nowrap}
/* 數字換值：淡一下再淡返（≈.5 秒），唔准閃 —— 每 30 秒閃一次係噪音。reduced-motion 由 JS 直接唔加 class。 */
.bfx .mv .q .px,.bfx .mv .q .p{transition:opacity .22s ease}
.bfx .mv .q .px.upd,.bfx .mv .q .p.upd{opacity:.4}
/* tips + outlook */
.bfx .two{display:grid;grid-template-columns:1fr 1fr;gap:40px}
.bfx .tip{background:var(--card);border:1px solid var(--line);border-radius:6px;padding:18px 20px;margin-bottom:14px}
.bfx .tip .k{font-family:var(--mono);font-size:10px;letter-spacing:.16em;text-transform:uppercase;color:var(--brand-gold);font-weight:600}
.bfx .tip p{margin:8px 0 0;font-size:14px;color:var(--ink2)}
.bfx .tip{cursor:pointer}
.bfx .tip .more{margin-top:10px;font-family:var(--mono);font-size:11px;color:var(--brand-green)}
.bfx .events{list-style:none;margin:0;padding:0}
.bfx .events li{display:flex;gap:12px;padding:12px 0;border-top:1px solid var(--line2);font-size:14px;color:var(--ink2)}
.bfx .events li:first-child{border-top:0}
.bfx .events .d{font-family:var(--mono);font-size:12px;color:var(--ink);font-weight:600;min-width:52px}
.bfx .risk{margin-top:18px;background:var(--card);border:1px solid var(--line);border-radius:6px;padding:18px 20px}
.bfx .risk .k{font-family:var(--mono);font-size:10px;letter-spacing:.16em;color:var(--bad);text-transform:uppercase;font-weight:600}
.bfx .risk p{font-family:var(--serif);font-size:16px;line-height:1.85;margin:10px 0 0;color:var(--ink)}
.bfx .disc{padding:22px 0 4px;color:var(--muted);font-size:12px;line-height:1.8}
@media(max-width:900px){.bfx .grid{grid-template-columns:repeat(2,1fr)}.bfx .tgrid{grid-template-columns:1fr}}
@media(max-width:840px){.bfx .bfx-hero{grid-template-columns:1fr;gap:24px}}
@media(max-width:820px){.bfx .two{grid-template-columns:1fr;gap:30px}}
@media(max-width:720px){.bfx .snap{grid-template-columns:repeat(2,1fr)}}
@media(max-width:640px){.bfx .mg{grid-template-columns:1fr}}
@media(max-width:560px){.bfx .grid{grid-template-columns:1fr}}

/* ── 快報 modal（app 內，agent 睇；含「同客戶點講」）── */
.bfx-ovl{position:fixed;inset:0;background:rgba(6,12,22,.68);backdrop-filter:blur(3px);z-index:1000;display:none;align-items:center;justify-content:center;padding:24px;line-break:strict}
.bfx-ovl.on{display:flex}
.bfx-modal{background:var(--card);border:1px solid var(--line);border-radius:8px;max-width:680px;width:100%;max-height:88vh;overflow:auto;position:relative}
.bfx-modal .mph{position:relative;max-height:52vh;overflow:hidden;background:var(--card)}
.bfx-modal .mph img{width:100%;height:auto;display:block}
.bfx-modal .mph::after{content:"";position:absolute;left:0;right:0;bottom:0;height:130px;background:linear-gradient(transparent,var(--card));pointer-events:none}
.bfx-modal .mbd{padding:28px 30px 32px}
.bfx-modal .mbd :where(h3,.sum,.box p){text-wrap:pretty}
.bfx-modal .cat{font-family:var(--mono);font-size:11px;letter-spacing:.2em;text-transform:uppercase;color:var(--brand-gold);font-weight:600}
.bfx-modal h3{font-family:var(--serif);font-weight:900;font-size:26px;line-height:1.3;margin:12px 0 0;text-wrap:balance}
.bfx-modal .sum{font-size:15.5px;line-height:1.9;color:var(--ink2);margin:18px 0 0}
.bfx-modal .box{margin-top:20px;background:var(--card2);border:1px solid var(--line);border-radius:6px;padding:16px 18px}
.bfx-modal .box .k{font-family:var(--mono);font-size:10px;letter-spacing:.14em;text-transform:uppercase;color:var(--brand-green);font-weight:600}
.bfx-modal .box p{margin:8px 0 0;font-size:14.5px;line-height:1.8;color:var(--ink)}
.bfx-modal .box.beg .k{color:var(--brand-gold)}
.bfx-modal .src{font-family:var(--mono);font-size:11px;color:var(--muted);margin-top:18px}
.bfx-modal .mact{display:flex;gap:10px;margin-top:24px;flex-wrap:wrap}
.bfx-sharebtn{font-family:var(--sans);font-weight:600;font-size:14px;background:var(--brand-green);color:var(--brand-deeper);border:0;border-radius:24px;padding:12px 22px;cursor:pointer;display:inline-flex;align-items:center;gap:8px}
.bfx-sharebtn:hover{filter:brightness(.95)}
.bfx-xbtn{position:absolute;top:14px;right:14px;width:36px;height:36px;border-radius:50%;background:rgba(6,12,22,.5);color:#fff;border:0;font-size:20px;cursor:pointer;z-index:2}
/* 分享圖預覽 */
.bfx-spv{position:fixed;inset:0;background:rgba(6,12,22,.82);z-index:1010;display:none;align-items:center;justify-content:center;padding:24px;flex-direction:column;gap:16px}
.bfx-spv.on{display:flex}
.bfx-spv img{max-height:72vh;border-radius:12px;box-shadow:0 20px 60px rgba(0,0,0,.5)}
.bfx-spv .row{display:flex;gap:10px;flex-wrap:wrap;justify-content:center}
.bfx-spv .note{color:#cfe0f2;font-size:12px;font-family:var(--mono);text-align:center;max-width:440px;line-height:1.7}
.bfx-spv .tbtn{font-family:var(--mono);font-size:12px;border:1px solid #3a4d68;color:#cdd;background:none;padding:9px 15px;border-radius:3px;cursor:pointer}
/* 離屏品牌分享卡（客戶面向，唔含「同客戶點講」）— 品牌漸變由 brand token 出 */
#bfxStage{position:fixed;left:-9999px;top:0;pointer-events:none}
.bfx-scard{width:1080px;background:var(--card);color:var(--ink);font-family:var(--sans);overflow:hidden;line-break:strict}
.bfx-scard *{text-wrap:pretty}
.bfx-scard .ph{height:460px;overflow:hidden;position:relative}
.bfx-scard .ph img{width:100%;height:100%;object-fit:cover;object-position:50% 20%;display:block}
.bfx-scard .ph::after{content:"";position:absolute;left:0;right:0;bottom:0;height:110px;background:linear-gradient(transparent,var(--card));pointer-events:none}
.bfx-scard .badge{position:absolute;top:28px;left:28px;display:flex;align-items:center;gap:14px;background:rgba(8,15,28,.62);border:1px solid rgba(255,255,255,.14);border-radius:16px;padding:12px 20px 12px 14px}
.bfx-lg{width:56px;height:56px;border-radius:13px;background:linear-gradient(135deg,var(--brand-green),var(--brand-green-deep));display:flex;align-items:center;justify-content:center;font-family:var(--serif);font-weight:900;font-size:26px;color:#fff;flex:0 0 auto;overflow:hidden}
.bfx-lg img{width:100%;height:100%;object-fit:cover;display:block}
.bfx-lg img{width:100%;height:100%;object-fit:cover}
.bfx-scard .badge .bfx-lg{width:46px;height:46px;border-radius:11px;font-size:22px}
.bfx-scard .tx .a{font-family:var(--serif);font-weight:900;font-size:22px;color:var(--ink)}
.bfx-scard .badge .tx .a{color:#fff}
.bfx-scard .tx .b{font-family:var(--mono);font-size:12px;letter-spacing:.2em;color:var(--brand-green)}
.bfx-scard .bd{padding:46px 52px 40px}
.bfx-scard .cat{font-family:var(--mono);font-size:22px;letter-spacing:.2em;text-transform:uppercase;color:var(--brand-gold);font-weight:600}
.bfx-scard h2{font-family:var(--serif);font-weight:900;font-size:56px;line-height:1.22;margin:22px 0 0;text-wrap:balance}
.bfx-scard .sum{font-size:29px;line-height:1.7;color:var(--ink2);margin:26px 0 0}
.bfx-scard .src{font-family:var(--mono);font-size:20px;color:var(--muted);margin-top:32px}
.bfx-scard .bar{display:flex;align-items:center;justify-content:space-between;background:var(--card2);border-top:1px solid var(--line);padding:30px 52px}
.bfx-scard .bar .who{display:flex;align-items:center;gap:16px}
.bfx-scard .bar .tx .a{font-size:28px}
.bfx-scard .bar .tx .b{font-size:16px;letter-spacing:.16em;margin-top:3px}
.bfx-scard .bar .r{text-align:right;font-family:var(--mono);font-size:16px;color:var(--muted);line-height:1.5}
@media (prefers-reduced-motion:reduce){.bfx *{animation:none!important;transition:none!important}}

/* ── 週報列表 ── */
.mu-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:var(--sp-4)}
.mu-card{background:var(--card);border:1px solid var(--line);border-radius:var(--r-md);overflow:hidden;cursor:pointer;display:flex;flex-direction:column;transition:box-shadow .15s,border-color .15s}
.mu-card:hover{border-color:var(--brand-green-deep);box-shadow:0 2px 12px rgba(0,0,0,.06)}
.mu-card .thumb{aspect-ratio:16/9;width:100%;object-fit:cover;background:var(--bg2);display:block}
.mu-card .bd{padding:var(--sp-3) var(--sp-3h)}
.mu-card .dt{font-family:var(--mono);font-size:var(--fs-2xs);color:var(--muted)}
.mu-card .tp{font-weight:500;line-height:1.4;margin-top:4px}
.mu-card .fc{font-size:var(--fs-sm);color:var(--ink2);line-height:1.6;margin-top:6px}

/* ── 懶人包 ── */
.lp-grid{columns:220px;column-gap:var(--sp-3)}
.lp-cell{break-inside:avoid;margin-bottom:var(--sp-3);background:var(--card);border:1px solid var(--line);border-radius:var(--r-md);overflow:hidden;cursor:pointer;display:block}
.lp-cell:hover{border-color:var(--brand-green-deep)}
.lp-cell img{width:100%;display:block;background:var(--bg2)}
.lp-cell .cap{padding:var(--sp-2h) var(--sp-3)}
.lp-cell .cap .t{font-weight:500;line-height:1.4;font-size:var(--fs-sm)}
.lp-cell .cap .c{font-size:var(--fs-2xs);color:var(--muted);margin-top:3px}
/* 09-17 退路標示：揀咗嘅公司配色／版式呢篇冇 → 唔准靜靜哋換，要寫出嚟 */
.lp-cell .cap .w{font-size:var(--fs-3xs);color:var(--warn);margin-top:4px;line-height:1.5}
.lp-cell .cap .acts{margin-top:var(--sp-2)}

/* 公司配色色波（同 iOS LazyPackDetailView 底部嗰行）。色值由 lazypack-palettes.js inline 落 style —
   呢啲係公司品牌色，唔係主題 token，所以唔喺 tokens.css；框同選中態照用 token。 */
.lp-tools{display:flex;flex-wrap:wrap;gap:var(--sp-2);align-items:center;margin:var(--sp-3) 0}
.lp-tools .lb{font-size:var(--fs-2xs);color:var(--muted);white-space:nowrap}
.lp-pals{display:flex;flex-wrap:wrap;gap:var(--sp-1h)}
.lp-pals .sw{width:28px;height:28px;padding:2px;border:2px solid transparent;border-radius:50%;background:transparent;cursor:pointer;line-height:0}
.lp-pals .sw i{display:block;width:100%;height:100%;border-radius:50%}
.lp-pals .sw:hover{border-color:var(--line)}
.lp-pals .sw.on{border-color:var(--accent)}
.lp-pals .sw:focus-visible{outline:2px solid var(--brand-green-deep);outline-offset:2px}

/* 燈箱 / carousel */
.lp-modal{position:fixed;inset:0;background:rgba(10,20,14,.82);z-index:1000;display:flex;align-items:center;justify-content:center;padding:var(--sp-4)}
.lp-modal .box{max-width:520px;width:100%;max-height:92vh;display:flex;flex-direction:column;background:var(--card);border-radius:var(--r-lg);overflow:hidden}
.lp-modal .hd{display:flex;justify-content:space-between;align-items:center;padding:var(--sp-3) var(--sp-3h);border-bottom:1px solid var(--line);gap:var(--sp-2)}
.lp-modal .hd .t{font-weight:500;line-height:1.3;min-width:0}
.lp-modal .hd .x{border:0;background:transparent;font-size:22px;line-height:1;cursor:pointer;color:var(--muted);flex:0 0 auto}
.lp-modal .stage{position:relative;flex:1;min-height:0;display:flex;align-items:center;justify-content:center;background:var(--bg2)}
.lp-modal .stage img{max-width:100%;max-height:74vh;object-fit:contain;display:block}
.lp-modal .nav{position:absolute;top:50%;transform:translateY(-50%);border:0;background:rgba(0,0,0,.42);color:#fff;width:40px;height:40px;border-radius:50%;font-size:20px;cursor:pointer;display:flex;align-items:center;justify-content:center}
.lp-modal .nav.prev{left:var(--sp-2)}.lp-modal .nav.next{right:var(--sp-2)}
.lp-modal .nav:disabled{opacity:.3;cursor:default}
.lp-modal .ft{padding:var(--sp-2h) var(--sp-3h);text-align:center;font-size:var(--fs-2xs);color:var(--muted);border-top:1px solid var(--line)}
.lp-modal .ft .acts{display:flex;flex-wrap:wrap;gap:var(--sp-2);justify-content:center;margin-bottom:var(--sp-2)}
.lp-modal .ft .w{color:var(--warn);margin-top:4px;line-height:1.5}
.lp-modal .ft .lp-dl-fb:not(:empty){display:flex;flex-wrap:wrap;gap:var(--sp-1h);justify-content:center;align-items:center;margin-top:var(--sp-2)}
.lp-modal .ft .lp-dl-fb a{color:var(--brand-green-deep);text-decoration:underline}

@media(max-width:640px){
  .lp-grid{columns:150px}
}

/* ── 市場週報 v2（雜誌版，客戶可睇）── .wk namespace 避免撞全域 class；色一律 tokens/brand，多租戶+深淺自適應 */
.wk{max-width:1180px;margin:0 auto;line-break:strict}
.wk :where(h1,h2,h3,p,.lead,.sum,.an){text-wrap:pretty}
.wk .mono{font-family:var(--mono);font-variant-numeric:tabular-nums}
.wk .eyebrow{font-family:var(--mono);font-size:11px;letter-spacing:.26em;text-transform:uppercase;color:var(--brand-gold);font-weight:600}
.wk .mast{text-align:center;padding:8px 0 20px;border-bottom:3px solid var(--brand-deep)}
.wk .mast .nm{font-family:var(--serif);font-weight:900;font-size:34px;letter-spacing:.05em;color:var(--brand-deep);margin-top:6px}
.wk .mast .rng{font-size:13px;color:var(--muted);margin-top:4px}
.wk-hero{display:grid;grid-template-columns:1.15fr .85fr;gap:36px;align-items:center;padding:40px 0;border-bottom:1px solid var(--line)}
.wk-hero h1{font-family:var(--serif);font-weight:900;font-size:clamp(28px,4.4vw,48px);line-height:1.16;margin:12px 0 0;text-wrap:balance;color:var(--ink)}
.wk-hero .lead{font-size:16px;line-height:1.85;margin:18px 0 0;max-width:52ch;color:var(--ink)}
.wk-hero .mood{margin-top:22px}
.wk-hero .chip{display:inline-block;border:1px solid var(--brand-deep);border-radius:var(--r-pill);padding:6px 14px;font-size:13px;font-weight:700;color:var(--brand-deep)}
.wk-cover{aspect-ratio:4/3;border-radius:var(--r-lg);background:linear-gradient(135deg,var(--brand-deep),var(--brand-green));display:flex;align-items:flex-end;padding:16px}
.wk-cover span{color:#fff;font-weight:700;font-size:13px;background:rgba(0,0,0,.28);padding:5px 11px;border-radius:8px}
.wk .snap{display:grid;grid-template-columns:repeat(5,1fr);border:1px solid var(--line);background:var(--card);margin:24px 0 8px;border-radius:var(--r-md);overflow:hidden}
.wk .snap .c{padding:15px 14px;border-right:1px solid var(--line)}
.wk .snap .c:last-child{border-right:0}
.wk .snap .snm{font-size:12px;color:var(--ink2)}
.wk .snap .px{font-size:18px;font-weight:600;margin-top:7px}
.wk .snap .ch{font-size:12.5px;font-weight:600;margin-top:3px;color:var(--muted)}
.wk .snap .ch.up{color:var(--ok)}.wk .snap .ch.down{color:var(--bad)}
.wk .snap .ch::before{content:"\25B2 ";font-size:8px}.wk .snap .ch.dn::before{content:"\25BC "}
.wk .sh{display:flex;align-items:baseline;gap:12px;margin:44px 0 18px}
.wk .sh .no{font-size:14px;color:var(--brand-gold);font-weight:700}
.wk .sh h2{font-family:var(--serif);font-weight:700;font-size:22px;margin:0;color:var(--ink)}
.wk .sh::after{content:"";flex:1;height:1px;background:var(--line)}
.wk-th{display:grid;grid-template-columns:190px 1fr;gap:20px;background:var(--card);border:1px solid var(--line);border-radius:var(--r-lg);overflow:hidden;margin-bottom:16px}
.wk-ph{background:linear-gradient(135deg,var(--brand-deep),var(--brand-green));min-height:150px;display:flex;align-items:flex-end;padding:12px}
.wk-ph span{color:#fff;font-size:12px;font-weight:700;background:rgba(0,0,0,.25);padding:3px 9px;border-radius:6px}
.wk-tb{padding:18px 20px 18px 0}
.wk-tb .no{color:var(--brand-gold);font-weight:700;font-size:13px}
.wk-tb h3{font-family:var(--serif);font-weight:700;font-size:20px;margin:4px 0 8px;color:var(--ink)}
.wk-tb .sum{color:var(--muted);margin:0 0 10px}
.wk-tb details{border-top:1px dashed var(--line);padding-top:10px}
.wk-tb summary{cursor:pointer;color:var(--brand-deep);font-weight:700;font-size:14px;list-style:none}
.wk-tb summary::-webkit-details-marker{display:none}
.wk-tb .dt{margin-top:14px}
.wk-tb .dt .lb{display:inline-block;font-size:12px;font-weight:700;letter-spacing:.04em;color:#fff;background:var(--brand-deep);padding:3px 10px;border-radius:6px;margin-bottom:6px}
.wk-tb .dt p{margin:6px 0 0;color:var(--ink)}
.wk-chart{background:var(--card);border:1px solid var(--line);border-radius:var(--r-lg);padding:18px 20px;margin-bottom:18px}
.wk-chart h3{font-family:var(--serif);font-size:18px;margin:0 0 12px;color:var(--brand-deep)}
/* 圖表容器：**圖高嘅單一真相喺呢度**（marketupdate.js 唔准再傳 cfg.height）。
   ⚠️ 一定要 `height`（明確高度），唔准只寫 `min-height` —— 2026-09-18 用戶撞到「圖只佔頂部
   240px、下面一大片空白」就係咁嚟：TradingView 個 embed script 執行嗰陣會**整個換走**
   `.tradingview-widget-container` 嘅內容，連我哋 inject() 落去嘅 inline `height:380px` 一齊剷掉，
   換成佢自己一個 `height:100%` 嘅 div ＋ 一個 `height:100%` 嘅 iframe。而 `min-height` 唔會令
   子元素嘅百分比高度解得出（父高仍然係 auto）→ 成條鏈由 100% 跌返 iframe 嘅 CSS 預設固有高度
   **150px**，而容器就企喺 min-height 380px 度 → 中間 230px 白位。（真 Chrome 實測：容器 380／iframe 150）
   modal 嗰條路（tv-chart.js `.tvc-box{height:max(480px,78vh)}`）一直好，因為佢本身就有明確高度
   ——「autosize 跟到容器」嘅前提係容器高度**解得出**，唔係「有 min-height」。 */
.wk-tv{border:1px solid var(--line);border-radius:var(--r-md);overflow:hidden;height:440px}
/* 補返被 TradingView 換走嘅一環：pre-existing wrapper（chartBlock 個 div）同 TV 自己插嗰個 div
   都要 100%，成條鏈才解得出，iframe 才會填滿 .wk-tv（用後代選擇器，TV 加幾層都罩得住）。 */
.wk-tv .tradingview-widget-container{height:100%;width:100%}
/* 指標帶：貼住圖底，用現成 .kpis>.kpi（DESIGN.md），只收窄間距令佢似一條數據帶而唔係六隻大卡。
   ⚠️ 欄數要**寫死 5**，唔准用 auto-fit —— WKIND 而家出 10 項，auto-fit 喺 1180px（iPad 橫／
   窄 Mac 視窗）計到 9 欄，第 10 項「均線排列」單獨跌落第二行，右邊剩返一大條灰底空白。
   PDF 嗰邊（wk-pdf.js indTable 個 COLS = 5）一早就係固定 5 欄 —— 兩邊夾返，客戶收到張 PDF
   同佢喺網頁見到嘅排版一樣（P3：同一件事唔准兩個化身）。 */
.wk-ind{margin-top:12px;grid-template-columns:repeat(5,1fr);gap:1px;background:var(--line);border:1px solid var(--line);border-radius:var(--r-md);overflow:hidden}
.wk-ind .kpi{border:0;border-radius:0;padding:9px 12px 10px}
.wk-ind .kpi .l{font-size:11px;color:var(--ink2)}
.wk-ind .kpi .v{font-size:15px;font-weight:600;color:var(--ink);margin-top:3px;white-space:nowrap}
.wk-ind .kpi .v.up{color:var(--ok)}
.wk-ind .kpi .v.down{color:var(--bad)}
.wk-ind .kpi .s{font-size:10.5px;margin-top:3px}
.wk-ind .tag{display:inline-block;font-family:var(--sans);font-size:10px;font-weight:700;border:1px solid currentColor;border-radius:var(--r-pill);padding:0 6px;margin-left:5px;vertical-align:2px}
.wk-ind .tag.ob{color:var(--bad)}
.wk-ind .tag.os{color:var(--ok)}
.wk-ind-asof{margin:6px 0 0;font-size:11.5px;color:var(--muted)}
/* 代表品提示：圖係可嵌入嘅 CFD（OANDA:HK33HKD），指標帶係指數原身收市價 —— 兩個數唔同源，
   一定要喺圖底講明，唔准當佢係同一隻嘢（P2）。樣式同大圖 modal 嗰個 .tvc-note 一致。 */
.wk-proxy{margin:10px 0 0;background:var(--card2);border:1px solid var(--line);border-left:3px solid var(--brand-gold);border-radius:6px;padding:9px 12px;font-size:12.5px;line-height:1.6;color:var(--ink2)}
.wk-chart .an{margin:14px 0 0;color:var(--ink)}
.wk-outlook{background:var(--card);border:1px solid var(--line);border-radius:var(--r-md);padding:18px 20px}
.wk-outlook ul{margin:0 0 14px;padding-left:20px}
.wk-outlook li{margin-bottom:8px;color:var(--ink)}
.wk-outlook .risk{border-top:1px solid var(--line);padding-top:14px}
.wk-outlook .risk .lb{font-size:12px;font-weight:700;color:var(--bad);letter-spacing:.05em}
.wk-outlook .risk p{margin:6px 0 0;color:var(--ink)}
.wk-deep{margin-top:40px;background:var(--card2);border-radius:var(--r-md);padding:4px 20px 18px}
.wk-deep>summary{padding:16px 0;font-size:15px;color:var(--ink2);cursor:pointer}
.wk-deep .dd{margin-top:12px}
.wk-deep .lb{display:inline-block;font-size:12px;font-weight:700;color:var(--muted);border:1px solid var(--muted);padding:2px 9px;border-radius:6px;margin-bottom:6px}
.wk-deep .dd p{margin:6px 0 0;font-size:14px;color:var(--ink2)}
.wk-disc{margin-top:32px;padding:16px 18px;background:var(--card);border:1px solid var(--line);border-radius:var(--r-md);font-size:12.5px;color:var(--muted);line-height:1.7}
.wk-disc .lb{display:block;font-weight:700;color:var(--ink2);margin-bottom:6px;font-size:13px}
@media(max-width:840px){.wk-hero{grid-template-columns:1fr;gap:22px}}
@media(max-width:720px){.wk .snap{grid-template-columns:repeat(2,1fr)}.wk-th{grid-template-columns:1fr}.wk-ph{min-height:110px}.wk-tb{padding:0 18px 18px}.wk-ind{grid-template-columns:repeat(2,1fr)}.wk-tv{height:320px}}
.wk-pick{display:flex;align-items:center;gap:10px;margin:20px 0 4px}
.wk-pick label{font-size:12px;font-weight:700;color:var(--muted);letter-spacing:.05em}
.wk-pick select{flex:1;max-width:520px;font-family:var(--sans);font-size:14px;padding:9px 12px;border:1px solid var(--line);border-radius:var(--r-md);background:var(--card);color:var(--ink)}
.wk-cover.hasimg,.wk-ph.hasimg{padding:0;background:var(--card2)}
.wk-cover.hasimg img,.wk-ph.hasimg img{width:100%;height:100%;object-fit:cover;display:block}
.wk-cover.hasimg{overflow:hidden}
.wk-disc .cr{margin-top:8px;font-size:11px;color:var(--muted);opacity:.8}
.wk-pick-note{font-size:12px;color:var(--muted)}
/* 期數 stale 提示：唔准再寫「往後每週自動加一期」呢類承諾（後端停咗都冇人知）——
   改成量返最新一期幾耐冇更新，超過門檻就用警示色講出嚟（P1：攞正面證據，唔准報平安）。 */
.wk-pick-note.stale{color:var(--warn);font-weight:700}
.wk-admin{margin-top:24px;background:#fff8e6;border:1px solid #f0d98a;border-radius:var(--r-md);padding:4px 18px 16px}
.wk-admin>summary{padding:14px 0;font-size:14px;font-weight:700;color:#7a5a12;cursor:pointer}
.wk-admin-tbl{overflow-x:auto}
.wk-admin table{width:100%;border-collapse:collapse;font-size:13px}
.wk-admin th,.wk-admin td{text-align:left;padding:8px 10px;border-bottom:1px solid var(--line);vertical-align:top}
.wk-admin th{color:var(--muted);font-weight:700;white-space:nowrap}
.wk-bar{display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin:20px 0 4px}
.wk-bar .wk-pick{margin:0;flex:1;min-width:220px}
.wk-pdf{font-family:var(--sans);font-weight:600;font-size:14px;background:var(--brand-deep);color:#fff;border:0;border-radius:var(--r-md);padding:10px 18px;cursor:pointer;white-space:nowrap}
.wk-pdf:hover{opacity:.92}
@media print{
  .th-side,.th-top,#thGate,#thFoot,#muLoading{display:none!important}
  .wk-bar,.wk-pdf,.wk-pick,.wk-admin,.wk-tv,.wk-deep{display:none!important}
  .wk-tb details>summary{display:none!important}
  .wk-tb details[open]>*{display:block!important}
  body,#app,.th-main{margin:0!important;padding:0!important;background:#fff!important}
  .wk{max-width:100%!important}
  .wk-th,.wk-chart,.wk-outlook,.snap{break-inside:avoid}
  .wk-chart .an{margin-top:0}
}
.bfx .mv.tap,.bfx .snap .c.tap{cursor:pointer}
.bfx .mv.tap:hover,.bfx .snap .c.tap:hover{background:var(--card2)}
.bfx .cico{font-style:normal;font-family:var(--mono);font-size:10px;color:var(--brand-green);border:1px solid var(--line);border-radius:4px;padding:1px 5px;margin-left:8px;vertical-align:middle}
.bfx .cno{font-style:normal;font-family:var(--mono);font-size:10px;color:var(--muted);margin-left:8px;vertical-align:middle}
/* 09-17：舊嘅 .bfx-tv／.tvnote（modal 內 400px 細圖）由共用層 site/assets/js/tv-chart.js 取代，
   佢自帶 .tvc-* CSS（闊 min(1200px,94vw)、圖高 max(480px,78vh)），兩頁共用一份，所以呢度剷走。
   列印（09-18）：張紙只准印 pack 收市價 —— 即時價一印就過時，而張紙上面冇時間戳，
   同事發俾客戶就分唔清係幾時嘅價（T1 客戶面向）。所以換走 .q，出 .pk（連標題嗰行一齊換）。 */
@media print{
  .bfx .mv .q,.bfx .mv .cico,.bfx .mv .cno,.bfx .mv .mk{display:none!important}
  .bfx .mv .pk{display:inline-flex!important}
  .bfx .snapfb .fbhd .live,.bfx .snapfb .fbhd .sub{display:none!important}
  .bfx .snapfb .fbhd .pk{display:inline!important}
}
/* ── §03 今日市場 · 升跌排行（trinity 即時版，briefing-live.js；跟 iPad todayMarketSection）── */
.bfx .lv .sh .lv-st{margin-left:auto;font-family:var(--mono);font-size:11px;font-weight:700;display:inline-flex;align-items:center;gap:6px;white-space:nowrap}
.bfx .lv .lv-st i{width:7px;height:7px;border-radius:50%;background:var(--faint);display:inline-block}
.bfx .lv .lv-st.on{color:var(--ok)}
.bfx .lv .lv-st.on i{background:var(--ok);box-shadow:0 0 0 0 rgba(31,122,69,.5);animation:bfxPulse 1.6s ease-out infinite}
.bfx .lv .lv-st.off{color:var(--muted);font-weight:600}
@keyframes bfxPulse{0%{box-shadow:0 0 0 0 rgba(31,122,69,.5)}100%{box-shadow:0 0 0 7px rgba(31,122,69,0)}}
.bfx .lv-card{background:var(--card);border:1px solid var(--line);border-radius:var(--r-lg);padding:14px 14px 10px;margin-bottom:12px}
.bfx .lv-gh{font-family:var(--mono);font-size:11px;letter-spacing:.14em;text-transform:uppercase;font-weight:700;padding:0 6px 6px}
.bfx .lv-gh.up{color:var(--ok)}.bfx .lv-gh.down{color:var(--bad)}.bfx .lv-gh.cat{color:var(--brand-gold)}
.bfx .lv-sep{border-top:1px solid var(--line);margin:12px 0 14px}
.bfx .lv-row{display:flex;align-items:center;gap:10px;padding:10px 6px;border-top:1px solid var(--line2);font-size:14px;border-radius:6px;transition:background .5s}
.bfx .lv-gh+.lv-row{border-top:0}
.bfx .lv-row.tap{cursor:pointer}.bfx .lv-row.tap:hover{background:var(--card2)}
.bfx .lv-row .rk{width:18px;font-size:12px;font-weight:700;color:var(--faint);text-align:center;flex:none}
.bfx .lv-row .st{width:6px;height:6px;border-radius:50%;background:var(--faint);opacity:.6;flex:none}
.bfx .lv-row .st.open{background:var(--ok);opacity:1}.bfx .lv-row .st.pre{background:var(--brand-gold);opacity:1}
.bfx .lv-row .nm{font-weight:600;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex:1;min-width:0}
.bfx .lv-row .px{color:var(--ink2);font-size:13px;flex:none}
.bfx .lv-row .pc{font-weight:800;min-width:64px;text-align:right;flex:none;color:var(--muted)}
.bfx .lv-row .pc.up{color:var(--ok)}.bfx .lv-row .pc.down{color:var(--bad)}
.bfx .lv-row .chev{width:6px;height:6px;border-right:1.5px solid var(--faint);border-top:1.5px solid var(--faint);transform:rotate(45deg);flex:none;margin-left:2px}
.bfx .lv-row.flash-up{background:var(--ok-soft)}.bfx .lv-row.flash-dn{background:var(--bad-soft)}
.bfx .lv-empty{font-size:13px;color:var(--muted);padding:10px 6px}
.bfx .lv-toggle{display:block;width:100%;background:none;border:0;padding:10px 0 4px;font:inherit;font-size:13px;font-weight:600;color:var(--brand-green);cursor:pointer}
.bfx .lv-cols{display:grid;grid-template-columns:1fr;gap:0 12px}
.bfx .lv-cols.wide{grid-template-columns:repeat(3,1fr)}
/* 三欄時每欄 ~241px（1024px iPad 橫向：1024 − 側欄 232 − 主區 padding 44 → 三欄 ＋ 兩個 12px gap）：行內 gap 8、升跌% 56px，名最長「美元/離岸人民幣」（105px）先放得落 */
.bfx .lv-cols.wide .lv-row{gap:8px;padding-left:4px;padding-right:4px}
.bfx .lv-cols.wide .lv-row .pc{min-width:56px}
.bfx .lv-col{min-width:0}
/* 窄屏（≤640px）：標題行可以摺行，狀態字落第二行靠右 —— 390px 手機「截至 09-17 08:00 · 非即時」先唔會貼邊被裁 */
@media(max-width:640px){.bfx .lv .sh{flex-wrap:wrap;row-gap:6px}.bfx .lv .sh .ln{min-width:40px}.bfx .lv .sh .lv-st{flex-basis:100%;justify-content:flex-end;margin-left:0}}
@media(prefers-reduced-motion:reduce){.bfx .lv .lv-st.on i{animation:none}.bfx .lv-row{transition:none}}

/* ── 保險理財（六大主題民生資訊，客戶可睇）── .lf namespace */
.lf{max-width:1180px;margin:0 auto;line-break:strict}
.lf :where(h1,h2,h3,p){text-wrap:pretty}
.lf .mono{font-family:var(--mono);font-variant-numeric:tabular-nums}
.lf .eyebrow{font-family:var(--mono);font-size:11px;letter-spacing:.24em;text-transform:uppercase;color:var(--brand-gold);font-weight:600}
.lf .mast{text-align:center;padding:8px 0 20px;border-bottom:3px solid var(--brand-deep)}
.lf .mast .nm{font-family:var(--serif);font-weight:900;font-size:34px;letter-spacing:.05em;color:var(--brand-deep);margin-top:6px}
.lf .mast .rng{font-size:13px;color:var(--muted);margin-top:4px}
.lf-intro{color:var(--ink2);font-size:14.5px;line-height:1.8;margin:18px 0 8px;text-align:center}
.lf-intro .adm{color:var(--brand-gold);font-size:13px}
.lf-sec{margin-top:34px}
.lf .sh{display:flex;align-items:baseline;gap:12px;margin:0 0 16px}
.lf .sh .no{font-size:14px;color:var(--brand-gold);font-weight:700}
.lf .sh h2{font-family:var(--serif);font-weight:700;font-size:22px;margin:0;color:var(--ink)}
.lf .sh::after{content:"";flex:1;height:1px;background:var(--line)}
.lf-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}
.lf-card{border:1px solid var(--line);border-radius:var(--r-lg);overflow:hidden;background:var(--card);display:flex;flex-direction:column}
.lf-card .ph{height:150px;background:linear-gradient(135deg,var(--brand-deep),var(--brand-green))}
.lf-card .ph img{width:100%;height:100%;object-fit:cover;display:block}
.lf-card .bd{padding:16px 18px;display:flex;flex-direction:column;flex:1}
.lf-card h3{font-family:var(--serif);font-weight:700;font-size:17px;line-height:1.45;margin:0 0 8px;color:var(--ink)}
.lf-card .sum{font-size:13.5px;line-height:1.7;color:var(--ink2)}
.lf-card .why{margin-top:12px;background:var(--card2);border-radius:8px;padding:11px 13px}
.lf-card .why .lb{font-size:11px;font-weight:700;color:var(--brand-deep);letter-spacing:.04em}
.lf-card .why p{font-size:13px;line-height:1.65;margin-top:5px;color:var(--ink2)}
.lf-card .hook{margin-top:10px;background:#fff8e6;border:1px solid #f0d98a;border-radius:8px;padding:11px 13px}
.lf-card .hook .lb{font-size:11px;font-weight:700;color:#7a5a12;letter-spacing:.04em}
.lf-card .hook p{font-size:13px;line-height:1.65;margin-top:5px;color:#6b5010}
@media(max-width:900px){.lf-grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:640px){.lf-grid{grid-template-columns:1fr}}

/* 保險理財 v2:卡片睇全文 + 詳情彈窗 + 分享 */
.lf-card .more{margin-top:auto;padding-top:12px;font-family:var(--mono);font-size:12px;color:var(--brand-green);font-weight:600}
.lf-ovl{position:fixed;inset:0;background:rgba(10,15,25,.55);backdrop-filter:blur(3px);z-index:1000;display:none;overflow-y:auto;padding:32px 16px}
.lf-ovl.on{display:block}
.lf-modal{max-width:720px;margin:0 auto;background:var(--card);border-radius:16px;overflow:hidden;position:relative;box-shadow:0 20px 60px rgba(0,0,0,.3)}
.lf-x{position:absolute;top:12px;right:12px;z-index:3;width:38px;height:38px;border-radius:50%;border:0;background:rgba(0,0,0,.45);color:#fff;font-size:22px;cursor:pointer;line-height:1}
.lf-modal .mph{height:280px;background:var(--brand-deep)}.lf-modal .mph img{width:100%;height:100%;object-fit:cover;display:block}
.lf-modal .mbd{padding:28px 32px 32px}
.lf-modal .cat{font-family:var(--mono);font-size:12px;letter-spacing:.16em;text-transform:uppercase;color:var(--brand-gold);font-weight:600}
.lf-modal h2{font-family:var(--serif);font-weight:900;font-size:28px;line-height:1.3;margin:10px 0 18px;color:var(--ink);text-wrap:balance}
.lf-modal .art p{font-size:16px;line-height:1.95;margin-bottom:16px;color:var(--ink)}
.lf-modal .kp{margin:20px 0;background:var(--card2);border-radius:10px;padding:16px 20px}
.lf-modal .kp .lb,.lf-modal .ins .lb{display:block;font-size:12px;font-weight:700;letter-spacing:.05em;margin-bottom:8px}
.lf-modal .kp .lb{color:var(--brand-deep)}.lf-modal .kp ul{margin:0;padding-left:20px}.lf-modal .kp li{font-size:14.5px;line-height:1.75;margin-bottom:8px}
.lf-modal .ins{margin:20px 0;background:linear-gradient(160deg,var(--card),var(--card2));border:1px solid var(--brand-deep);border-radius:10px;padding:16px 20px}
.lf-modal .ins .lb{color:var(--brand-deep)}.lf-modal .ins p{font-size:15.5px;line-height:1.85;color:var(--ink);font-weight:500}
.lf-modal .hook{margin:16px 0;background:#fff8e6;border:1px solid #f0d98a;border-radius:10px;padding:14px 18px}
.lf-modal .hook .lb{display:block;font-size:12px;font-weight:700;color:#7a5a12;margin-bottom:6px}.lf-modal .hook p{font-size:14px;line-height:1.7;color:#6b5010}
.lf-modal .mact{margin-top:22px}
.lf-share{width:100%;font-family:var(--sans);font-weight:700;font-size:15px;background:var(--brand-green);color:var(--brand-deeper);border:0;border-radius:12px;padding:15px;cursor:pointer}
.lf-share:hover{opacity:.92}
@media(max-width:560px){.lf-modal h2{font-size:23px}.lf-modal .mbd{padding:22px 20px}}

/* 保險理財 v3:詳情彈窗 punch + point form */
.lf-modal .punch{font-family:var(--serif);font-weight:700;font-size:21px;line-height:1.4;color:var(--brand-deep);margin:2px 0 6px}
.lf-modal .pts{margin:16px 0 20px;display:flex;flex-direction:column;gap:12px}
.lf-modal .pts .row{display:flex;gap:14px;align-items:flex-start;background:var(--card2);border-radius:10px;padding:13px 16px}
.lf-modal .pts .ic{flex:0 0 auto;width:30px;height:30px;border-radius:50%;color:#fff;font-size:16px;font-weight:700;display:flex;align-items:center;justify-content:center}
.lf-modal .pts .row.yes .ic{background:#12A150}.lf-modal .pts .row.warn .ic{background:#E0902B}.lf-modal .pts .row.key .ic{background:var(--brand-deep)}
.lf-modal .pts .tx{font-size:15px;line-height:1.6;color:var(--ink)}.lf-modal .pts .tx b{display:block;font-weight:800;margin-bottom:2px}
