/* ── UI & CENTERING FIX ── */
*{box-sizing:border-box;margin:0;padding:0;-webkit-tap-highlight-color:transparent}
button{background-color:transparent}
/* ── RESTORE APP GLOBALS & CORNERS ── */
:root {
  --bg: #f5f5f7;
  --card: #fff;
  --card2: #fafafa;
  --text: #1c1c1e;
  --text2: #636366;
  --text3: #8e8e93;
  --border: #e5e5ea;
  --border2: #f0f0f0;
  /* 主色：由 config.js 嘅 brand.primary 經 js/core/theme.js 設定；以下只係預設值 */
  --primary: #c4521c;
  --primary-rgb: 196,82,28;
  --primary-dark: #8a3a14;
  --primary-mid: #d4642e;
  --primary-soft: #fbede5;
  --primary-soft2: #f3d3c2;
  /* Secondary palette tokens — 會議室預約／小提示／accent 統一從呢度 derive */
  --teal: #00897b;
  --teal-dark: #00695c;
  --teal-soft: #dff4f0;
  --teal-border: #b2dfdb;
  --amber: #d49b00;
  --amber-soft: #fff8e1;
  --amber-border: #f0e0a0;
  --amber-text: #7a5400;
  --amber-text-dark: #5e4400;
  --radius-sm: 10px;
  --radius-md: 14px;
  --radius-lg: 18px;
  /* 統一 modal 遮罩 — 所有 overlay backdrop 共用，一處改全部跟 */
  --modal-scrim: rgba(0,0,0,.5);
}

html, body {
  overflow: hidden; 
  position: fixed; 
  width: 100%; 
  height: 100%; 
  margin: 0; 
  padding: 0; 
  font-family:'Plus Jakarta Sans',-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;
  background: var(--bg);
  color: var(--text);
}

/* Fix for Card Corners */
.quick-card { border-radius: var(--radius-md) !important; }
.upcoming-card { border-radius: var(--radius-sm) !important; }
.card { border-radius: 12px !important; }

/* Fix for Date Icons */
.uc-date {
  background: rgba(var(--primary-rgb),.08) !important;
  color: var(--primary) !important;
  border-radius: 8px;
  padding: 4px 6px;
  text-align: center;
  flex-shrink: 0;
  min-width: 38px;
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: center;
}
.uc-month { font-size: 8px; font-weight: 700; text-transform: uppercase; line-height: 1; margin-bottom: 2px; }
.uc-day { font-size: 16px; font-weight: 800; line-height: 1; }

#lockScreen {
  position: absolute;
  top: 0; left: 0;
  display: none; /* Hidden by default — splash covers, JS reveals after auth check */
  flex-direction: column;
  align-items: center;
  justify-content: center;
  width: 100%;
  height: 100%;
  background: #f9f9fb;
  z-index: 1000;
}
/* ── 地區揀選 overlay（首次入 app）── */
#regionPicker{position:fixed;inset:0;display:none;align-items:center;justify-content:center;padding:24px;background:linear-gradient(180deg,#ffffff 0%,#f4f5f8 100%);z-index:1200;opacity:0;transition:opacity .26s ease}
#regionPicker.show{opacity:1}
#regionPicker .rp-card{position:relative;width:100%;max-width:360px;transform:translateY(10px);transition:transform .28s cubic-bezier(.32,.72,.32,1)}
#regionPicker .rp-close{position:absolute;top:calc(14px + var(--safe-top,0px));right:16px;width:32px;height:32px;border-radius:50%;display:flex;align-items:center;justify-content:center;background:#f2f2f7;border:none;color:#636366;cursor:pointer;-webkit-tap-highlight-color:transparent;z-index:2}
#regionPicker .rp-close:active{transform:scale(.9)}
#regionPicker .rp-list{display:flex;flex-direction:column;gap:10px;margin-top:22px}
#regionPicker .rp-region-card{display:flex;align-items:center;gap:13px;background:#fff;border:1px solid #ececf0;border-radius:16px;padding:15px 14px;box-shadow:0 3px 12px rgba(0,0,0,.05);cursor:pointer;text-decoration:none;color:inherit;transition:transform .15s}
#regionPicker .rp-region-card:active{transform:scale(.98)}
#regionPicker .rp-region-card.current{border:2px solid var(--primary);padding:14px 13px}
#regionPicker .rp-region-flag{display:inline-flex;align-items:center;width:38px;height:25px;flex-shrink:0}
#regionPicker .rp-region-flag svg{display:block;width:100%;height:100%;border-radius:2.5px}
#regionPicker .rp-region-info{flex:1;min-width:0}
#regionPicker .rp-region-name{font-size:16px;font-weight:800;color:#1c1c1e}
#regionPicker .rp-region-sub{font-size:11px;color:#8e8e93;margin-top:1px}
#regionPicker .rp-region-badge{display:none;font-size:9.5px;font-weight:800;color:var(--primary);background:var(--primary-soft);padding:4px 9px;border-radius:999px;flex-shrink:0}
#regionPicker .rp-region-card.current .rp-region-badge{display:inline-block}
#regionPicker .rp-region-arrow{color:#c7c7cc;display:flex;flex-shrink:0}
#regionPicker .rp-region-card.current .rp-region-arrow{display:none}
#regionPicker .rp-note{text-align:center;font-size:10.5px;color:#c7c7cc;margin-top:16px}
#rpConfirm{position:absolute;inset:0;z-index:3;display:none}
#rpConfirm.show{display:block}
#rpConfirm .rp-confirm-scrim{position:absolute;inset:0;background:rgba(0,0,0,.5);opacity:0;transition:opacity .25s}
#rpConfirm.show .rp-confirm-scrim{opacity:1}
#rpConfirm .rp-confirm-sheet{position:absolute;left:0;right:0;bottom:0;background:#fff;border-radius:20px 20px 0 0;padding:20px 18px calc(16px + var(--safe-bottom,0px));box-shadow:0 -8px 30px rgba(0,0,0,.2);transform:translateY(100%);transition:transform .3s cubic-bezier(.32,.72,.32,1)}
#rpConfirm.show .rp-confirm-sheet{transform:translateY(0)}
.rp-confirm-title{font-size:16.5px;font-weight:800;text-align:center;color:#1c1c1e}
.rp-confirm-msg{font-size:12.5px;color:#636366;text-align:center;line-height:1.5;margin-top:8px}
.rp-confirm-ok{width:100%;background:var(--primary);color:#fff;font-size:14px;font-weight:800;padding:13px;border:none;border-radius:12px;margin-top:16px;cursor:pointer;font-family:inherit}
.rp-confirm-cancel{width:100%;background:#f2f2f7;color:#1c1c1e;font-size:14px;font-weight:700;padding:13px;border:none;border-radius:12px;margin-top:8px;cursor:pointer;font-family:inherit}
#regionPicker.show .rp-card{transform:translateY(0)}
#regionPicker .rp-logo{display:flex;justify-content:center;margin-bottom:18px}
#regionPicker .rp-logo img{height:44px;width:auto}
#regionPicker .rp-title{font-size:21px;font-weight:800;color:var(--text);text-align:center;letter-spacing:-.3px}
#regionPicker .rp-sub{font-size:12.5px;color:var(--text3);text-align:center;line-height:1.5;margin-top:8px}
/* ── Splash screen — hides initial lockScreen/app flash ── */
#splash{position:fixed;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;background:linear-gradient(180deg,#ffffff 0%,#fafafd 100%);z-index:99999;transition:opacity .5s ease,transform .5s cubic-bezier(.4,0,.2,1)}
#splash.splash-hide{opacity:0;pointer-events:none;transform:scale(.94)}
/* App cross-fade in（搭配 splash scale-down 同時進場） */
#app.app-enter{animation:appEnterFade .55s cubic-bezier(.32,.72,.32,1) both}
@keyframes appEnterFade{from{opacity:0}to{opacity:1}}
.splash-content{text-align:center;display:flex;flex-direction:column;align-items:center;padding:0 32px}
.splash-logo{width:78px;height:78px;margin-bottom:14px;filter:drop-shadow(0 6px 16px rgba(var(--primary-rgb),.18));animation:splashLogoIn .55s cubic-bezier(.34,1.56,.64,1) both}
.splash-logo img{width:100%;height:100%;object-fit:contain}
.splash-title{font-size:21px;font-weight:800;color:#1c1c1e;letter-spacing:-.3px;margin-bottom:4px;animation:splashFadeUp .5s ease-out .15s both}
.splash-sub{font-size:11.5px;color:#8e8e93;font-weight:500;letter-spacing:.4px;animation:splashFadeUp .5s ease-out .22s both}
@keyframes splashLogoIn{0%{opacity:0;transform:scale(.85)}60%{transform:scale(1.04)}100%{opacity:1;transform:scale(1)}}
@keyframes splashFadeUp{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}

#app { 
  position: absolute; 
  top: 0; left: 0; 
  display: none; 
  flex-direction: column; 
  width: 100%;
  z-index: 10;
}

.lock-content {
  text-align: center;
  display: flex;
  flex-direction: column;
  align-items: center;
  width: 100%;
}

.lock-logo { width: 72px; height: 72px; margin-bottom: 12px; filter: drop-shadow(0 4px 10px rgba(0,0,0,0.08)); }
.lock-logo img { width: 100%; height: 100%; object-fit: contain; }
.lock-title { font-size: 22px; font-weight: 800; color: #1c1c1e; margin-bottom: 4px; }
.lock-sub { font-size: 13px; color: #8e8e93; margin-bottom: 24px; font-weight: 500; }

.lock-box { 
  background: #fff; 
  border-radius: 20px; 
  padding: 24px 20px; 
  width: 280px; 
  box-shadow: 0 8px 24px rgba(0,0,0,0.06); 
  border: 1px solid rgba(0,0,0,0.03);
}

.lock-notice { 
  background: #fff8f8; 
  border-radius: 12px; 
  padding: 12px; 
  margin-bottom: 20px; 
  border: 1px solid var(--primary-soft);
  text-align: left;
}

.lock-notice-row { display: flex; align-items: center; gap: 8px; margin-bottom: 6px; }
.lock-notice-title { font-size: 12px; font-weight: 700; color: var(--primary); }
.lock-notice-text { font-size: 11px; color: #9a2020; line-height: 1.5; opacity: 0.9; }

.google-btn-wrap { display: flex; justify-content: center; min-height: 44px; }
.lock-footer { margin-top: 30px; font-size: 10px; color: #c7c7cc; letter-spacing: 0.5px; }
header{background:var(--card);padding:calc(6px + var(--safe-top,0px)) 16px 6px;border-bottom:1px solid var(--border);flex-shrink:0;display:flex;align-items:center;gap:10px;box-shadow:var(--shadow-sm);position:relative;z-index:3}
.h-logo{width:30px;height:30px;flex-shrink:0}.h-logo img{width:100%;height:100%;object-fit:contain}
.h-title{font-size:13px;font-weight:700;color:var(--text);letter-spacing:-.1px}.h-sub{font-size:10px;color:var(--text3)}
/* 頂 bar 地區 pill：一眼睇到而家喺邊區，撳一下開設定切換 */
/* 淨 flag（冇 pill 底、冇字），撳一樣開設定 */
.hdr-region{display:inline-flex;align-items:center;flex-shrink:0;background:none;border:none;padding:4px;margin-right:-2px;margin-top:-8px;cursor:pointer;-webkit-tap-highlight-color:transparent;transition:transform .12s ease}
.hdr-region:active{transform:scale(.9)}
.hdr-region #hdrRegionName{display:none}
.hdr-region .hrp-flag{display:inline-flex;align-items:center;width:24px;height:16px;line-height:0}
.hdr-region .hrp-flag svg{display:block;width:100%;height:100%;border-radius:3px}
/* 設定頁「地區」列右邊：地區名（同「地區」label 同 size）+ › */
.s-region-val{display:flex;align-items:center;gap:4px;color:var(--text3);font-size:13px;font-weight:500}
.s-region-val .s-chevron{color:var(--text3)}
.content{flex:1;overflow-y:auto;-webkit-overflow-scrolling:touch;overscroll-behavior-y:contain;position:relative;will-change:transform;z-index:2;background:var(--bg)}
/* ── Pull-to-refresh indicator —— 喺 header 之下，被 content cover 住；content translate 落就 reveal ── */
.ptr-indicator{position:absolute;top:68px;left:0;right:0;height:40px;display:flex;align-items:center;justify-content:center;pointer-events:none;z-index:1;opacity:0;transition:opacity .22s ease;will-change:opacity}
.ptr-spinner{width:28px;height:28px;border-radius:50%;background:#fff;box-shadow:0 2px 10px rgba(0,0,0,.12);box-sizing:border-box;position:relative;transition:transform .1s ease-out,box-shadow .25s ease}
.ptr-spinner::before{content:'';position:absolute;inset:5px;border-radius:50%;background:conic-gradient(from 0deg,var(--primary) 0deg,rgba(var(--primary-rgb),.06) 300deg,rgba(var(--primary-rgb),0) 355deg);-webkit-mask:radial-gradient(farthest-side,#0000 calc(100% - 2.6px),#000 calc(100% - 2.6px));mask:radial-gradient(farthest-side,#0000 calc(100% - 2.6px),#000 calc(100% - 2.6px));will-change:transform}
.ptr-indicator.ready .ptr-spinner{box-shadow:0 2px 14px rgba(var(--primary-rgb),.32),0 0 0 1px rgba(var(--primary-rgb),.1)}
.ptr-indicator.refreshing .ptr-spinner{box-shadow:0 2px 12px rgba(var(--primary-rgb),.26)}
.ptr-indicator.refreshing .ptr-spinner::before{animation:ptrSpin .7s linear infinite}
@keyframes ptrSpin{to{transform:rotate(360deg)}}
.nav{flex-shrink:0;background:var(--card);border-top:1px solid var(--border);display:flex;box-shadow:0 -2px 12px rgba(0,0,0,.05);position:relative;z-index:3;padding-bottom:var(--safe-bottom,0px)}
.nav-item{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:6px 0 16px;cursor:pointer;border:none;background:none;gap:2px;position:relative;transition:opacity .15s;z-index:1}
.nav-ann-badge{position:absolute;top:-1px;right:-1px;width:7px;height:7px;border-radius:50%;background:var(--primary);border:1.5px solid #fff;display:none;pointer-events:none}
.nav-ann-badge.show{display:block}
.nav-icon{display:flex;align-items:center;justify-content:center;border-radius:14px;padding:3px 14px}
.nav-icon svg{stroke:var(--text3);transition:stroke .22s ease}.nav-item.active .nav-icon svg{stroke:var(--primary)}
.nav-label{font-size:10px;font-weight:500;color:var(--text3);transition:color .22s ease}.nav-item.active .nav-label{color:var(--primary);font-weight:600}
/* Sliding pill — 跟住 active item 平移 */
.nav-slider{position:absolute;top:6px;left:0;width:50px;height:30px;border-radius:14px;background:rgba(var(--primary-rgb),.1);transform:translateX(0);transition:transform .36s cubic-bezier(.34,1.2,.64,1);pointer-events:none;z-index:0;will-change:transform}
.nav-slider.no-anim{transition:none}
.page{display:none;padding-bottom:20px}.page.active{display:block}
/* ── ULTRA-COMPACT HERO UI ── */
.home-hero {
  background: linear-gradient(150deg, var(--primary) 0%, var(--primary-dark) 55%, #6b0f0f 100%);
  padding: 8px 14px 10px; /* Very tight padding */
  color: #fff;
  position: relative;
  overflow: hidden;
}
.hero-top-row { display: flex; justify-content: space-between; align-items: center; margin-bottom: 2px; }
.home-date { font-size: 9px; opacity: 0.8; letter-spacing: 0.1px; }
.home-greet { font-size: 15px; font-weight: 700; margin-bottom: 6px; letter-spacing: -0.2px; line-height: 1.2; }

.wx-wrap {
  display: flex;
  align-items: stretch;
  gap: 6px;
  margin-bottom: 6px;
}
.weather-row {
  display: flex;
  align-items: center;
  gap: 5px;
  background: rgba(255,255,255,0.12);
  border-radius: 8px;
  padding: 4px 10px; /* Reduced vertical padding */
  flex-shrink: 0;
}
.weather-icon { font-size: 15px; }
.weather-temp { font-size: 13px; font-weight: 700; }
.weather-desc { font-size: 8px; opacity: 0.8; margin-left: 2px; }

.wx-tip-card {
  flex: 1;
  background: rgba(255,255,255,0.1);
  border-radius: 8px;
  padding: 4px 8px;
  font-size: 10px;
  display: none;
  align-items: center;
  justify-content: center;
  text-align: center;
  border: 1px solid rgba(255,255,255,0.05);
}

.quote-row {
  background: rgba(0,0,0,0.1);
  border-radius: 6px;
  padding: 4px 8px;
  display: flex;
  align-items: center;
  gap: 4px;
}
.quote-mark { font-size: 12px; opacity: 0.4; color: #fff; }
.quote-text { font-size: 9px; color: rgba(255,255,255,0.8); line-height: 1.3; font-style: italic; }
/* ── Hero in-place carousel ── */
.hero-slides-host{position:relative;min-height:70px}
.hero-slide-item{display:none;flex-direction:column;position:relative}
.hero-slide-item.active{display:flex;animation:heroFadeIn .4s ease both}
@keyframes heroFadeIn{from{opacity:.15;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}
.hero-alt-tag{font-size:9px;font-weight:700;background:rgba(255,255,255,.22);padding:3px 9px 3px 7px;border-radius:6px;letter-spacing:.5px;align-self:flex-start;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);display:inline-flex;align-items:center;gap:4px;position:relative;z-index:1}
/* Inline type chip (hero meta line) — SVG icon + type 文字一齊 */
.hero-alt-type-inline{display:inline-flex;align-items:center;gap:3px;vertical-align:-1px}
.hero-alt-type-inline svg{display:block;flex-shrink:0;width:10px;height:10px}
.hero-alt-tag svg{flex-shrink:0;transform-origin:center;transform:scale(.4) rotate(-15deg);opacity:0}
.hero-slide-item.active .hero-alt-tag svg{animation:tagIconPop .45s cubic-bezier(.34,1.56,.64,1) .3s both}
@keyframes tagIconPop{from{transform:scale(.4) rotate(-15deg);opacity:0}to{transform:scale(1) rotate(0);opacity:1}}
.hero-alt-title{font-size:15px;font-weight:800;line-height:1.32;margin:8px 0 4px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;color:#fff;letter-spacing:-.1px;position:relative;z-index:1}
.hero-alt-meta{font-size:11px;opacity:.9;line-height:1.45;color:#fff;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;position:relative;z-index:1}
.hero-alt-cta{font-size:11px;font-weight:700;margin-top:auto;padding-top:8px;display:inline-flex;align-items:center;gap:3px;align-self:flex-start;color:#fff;cursor:pointer;position:relative;z-index:1}
.hero-alt-cta .cta-arrow{display:inline-block;opacity:0;transform:translateX(-8px)}
.hero-slide-item.active .hero-alt-cta .cta-arrow{animation:ctaArrow .5s ease .28s both}
@keyframes ctaArrow{from{opacity:0;transform:translateX(-8px)}to{opacity:1;transform:translateX(0)}}
/* Decorative blobs — white-translucent works on any bg color */
.hero-alt-blob{position:absolute;right:-46px;top:-36px;width:160px;height:160px;border-radius:50%;pointer-events:none;z-index:0;background:radial-gradient(circle,rgba(255,255,255,.22) 0%,rgba(255,255,255,.05) 55%,transparent 80%)}
.hero-alt-blob2{position:absolute;left:-30px;bottom:-44px;width:120px;height:120px;border-radius:50%;pointer-events:none;z-index:0;background:radial-gradient(circle,rgba(255,255,255,.14) 0%,transparent 70%)}
.hero-alt-deco{position:absolute;right:-14px;bottom:-18px;width:88px;height:88px;opacity:.13;color:#fff;pointer-events:none;z-index:0}
/* Per-slide hero background color (slide 0 = default red, slide 1/2 override) */
.home-hero{transition:background .42s cubic-bezier(.4,0,.2,1)}
.home-hero.bg-event{background:linear-gradient(150deg,#e8842b 0%,#c0651a 55%,#7e3f08 100%)}
.home-hero.bg-ann{background:linear-gradient(150deg,#1c84e0 0%,#1361b3 55%,#0a3a82 100%)}
.hero-dots{display:flex;justify-content:center;gap:5px;margin-top:4px;height:6px}
.hero-dot{width:6px;height:6px;border-radius:50%;background:rgba(255,255,255,.34);cursor:pointer;transition:all .28s cubic-bezier(.4,0,.2,1)}
.hero-dot.active{background:rgba(255,255,255,.96);width:18px;border-radius:3px}
body.compact-mode .hero-dots{display:none!important}
/* Pause indicator — appears when user holds the hero card */
.hero-pause-ind{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%) scale(.78);background:rgba(0,0,0,.62);color:#fff;font-size:11px;font-weight:700;padding:6px 14px;border-radius:20px;opacity:0;pointer-events:none;transition:opacity .2s,transform .26s cubic-bezier(.34,1.56,.64,1);z-index:30;display:inline-flex;align-items:center;gap:5px;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);letter-spacing:.3px}
.hero-pause-ind.show{opacity:1;transform:translate(-50%,-50%) scale(1)}
.hero-pause-ind svg{flex-shrink:0}
.section{padding:12px 14px 0}
.section-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}
.section-title{font-size:11px;font-weight:700;color:var(--text);text-transform:uppercase;letter-spacing:.8px;display:flex;align-items:center;gap:7px}
.section-title::before{content:'';width:3px;height:14px;background:linear-gradient(180deg,var(--primary),var(--primary-dark));border-radius:2px;display:inline-block}
.section-link{font-size:12px;color:var(--primary);font-weight:600;cursor:pointer;background:none;border:none;opacity:.9}
.quick-grid{display:grid;grid-template-columns:1fr 1fr;gap:9px}
.quick-card{background:var(--card);border-radius:var(--radius-md);padding:12px 12px 10px;border:1px solid var(--border2);cursor:pointer;text-align:left;width:100%;transition:transform .15s ease,box-shadow .15s ease;box-shadow:var(--shadow-sm)}
.quick-card:active{transform:scale(.93)!important;box-shadow:none;background:#fafafa}
.qc-icon-wrap{width:36px;height:36px;border-radius:10px;background:var(--primary-soft);display:flex;align-items:center;justify-content:center;margin-bottom:8px}
.qc-title{font-size:12px;font-weight:700;color:var(--text);margin-bottom:2px;letter-spacing:-.1px}.qc-sub{font-size:10px;color:var(--text3);line-height:1.3}
/* ── Home compact promo card (會議室預約 entry) ── */
.home-promo-card{display:flex;align-items:center;gap:11px;width:100%;background:var(--card);border:1px solid var(--border2);border-radius:12px;padding:11px 13px;margin-top:9px;cursor:pointer;text-align:left;transition:transform .15s ease,background .15s;box-shadow:var(--shadow-sm);animation:popIn .35s cubic-bezier(.34,1.56,.64,1) .36s both}
.home-promo-card:active{transform:scale(.98);background:#fafafa}
.hpc-icon{width:38px;height:38px;border-radius:10px;background:var(--teal-soft);display:flex;align-items:center;justify-content:center;flex-shrink:0}
.hpc-text{flex:1;min-width:0}
.hpc-title{font-size:13px;font-weight:700;color:var(--text);letter-spacing:-.1px;margin-bottom:2px;display:inline-flex;align-items:center;gap:6px}
.hpc-beta{font-size:8.5px;font-weight:800;padding:1.5px 6px;border-radius:4px;background:#FFF3CD;color:#856404;letter-spacing:.4px;line-height:1.2}
.hpc-sub{font-size:10.5px;color:var(--text3);line-height:1.3}
.hpc-arrow{color:var(--text3);flex-shrink:0}
.hpc-pill{font-size:9.5px;font-weight:700;padding:3px 8px;border-radius:999px;display:inline-flex;align-items:center;gap:4px;line-height:1.2;white-space:nowrap;flex-shrink:0;align-self:flex-start;margin-top:1px}
.hpc-pill-dot{width:5px;height:5px;border-radius:50%;background:currentColor;flex-shrink:0}
.hpc-pill.avail{background:#E1F5EE;color:#0F6E56}
.hpc-pill.own{background:#E1F5EE;color:#0F6E56}
.hpc-pill.full{background:#FCEBEB;color:#A32D2D}
.hpc-pill.tomorrow{background:#e8eef5;color:#3d5a80}
.hpc-pill.neutral{background:#f0f0f0;color:#636366}
.hpc-pill.skel{background:linear-gradient(90deg,#efefef 25%,#e2e2e2 50%,#efefef 75%);background-size:200% 100%;animation:skel-shimmer 1.4s ease-in-out infinite;color:transparent;min-width:52px;height:17px;padding:0}
.hpc-pill.skel .hpc-pill-dot{display:none}
/* ── Room Booking Page ── */
/* Header refresh button */
.rb-refresh-ico{background:none;border:none;color:var(--text3);cursor:pointer;padding:4px;display:flex;align-items:center;justify-content:center;transition:opacity .2s,color .15s;-webkit-tap-highlight-color:transparent}
.rb-refresh-ico:active{color:var(--text2);opacity:.7}
.rb-refresh-ico.spinning svg{animation:rbRefreshSpin .9s linear infinite}
.rb-refresh-ico.spinning{color:var(--teal);pointer-events:none}
@keyframes rbRefreshSpin{to{transform:rotate(360deg)}}
.rb-segmented{display:flex;background:#f0f0f3;border-radius:9px;padding:3px;margin:14px 14px 12px;gap:3px}
.rb-seg{flex:1;padding:8px;border:none;background:transparent;font-size:12.5px;font-weight:600;color:var(--text3);cursor:pointer;border-radius:7px;font-family:inherit;display:inline-flex;align-items:center;justify-content:center;gap:5px;transition:all .2s}
.rb-seg svg{display:block;flex-shrink:0}
.rb-seg.active{background:#fff;color:var(--text);box-shadow:0 1px 3px rgba(0,0,0,.08)}
/* Tab view transition — 切 tab 時 fade-up 入場 */
.rb-view-enter{animation:rbViewEnter .34s cubic-bezier(.32,.72,.32,1) both}
@keyframes rbViewEnter{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}
.rb-section{padding:0 14px 14px}
/* Date strip — 7 fixed pills + "更多" button + dropdown */
.rb-date-row{display:flex;gap:4px;padding:0 12px 8px;align-items:stretch}
.rb-date-strip{display:flex;gap:4px;flex:1;min-width:0}
.rb-date-more-btn{flex-shrink:0;min-width:40px;border-radius:11px;background:var(--card);border:1px solid var(--border2);cursor:pointer;color:var(--text2);display:flex;flex-direction:column;align-items:center;justify-content:center;padding:6px 5px;gap:2px;font-family:inherit;position:relative;transition:transform .14s,background .14s,border-color .18s}
.rb-date-more-btn:active{transform:scale(.92);background:#f5f5f7}
.rb-date-more-btn .badge-dot{position:absolute;top:4px;right:4px;width:7px;height:7px;background:#00897b;border-radius:50%;border:1.5px solid #fff;display:none}
.rb-date-more-btn.has-sel{background:#e6f6f3;border-color:#80cbc4;box-shadow:0 1px 4px rgba(0,137,123,.18)}
.rb-date-more-btn.has-sel .badge-dot{display:block}
.rb-date-more-btn.has-sel .rb-date-more-lbl{color:#00695c}
.rb-date-more-chev{color:var(--text3);transition:transform .22s ease}
.rb-date-more-btn.has-sel .rb-date-more-chev{color:#00897b}
.rb-date-more-lbl{font-size:8.5px;font-weight:700;color:var(--text3);letter-spacing:.2px;line-height:1}
.rb-date-more-num{font-size:13px;font-weight:800;color:#00695c;line-height:1;margin-top:1px}
.rb-date-dropdown{background:linear-gradient(180deg,#f5fbfa 0%,#fafafc 100%);border:1px solid #cfeae5;border-radius:12px;margin:0 12px 10px;padding:9px 8px 10px;display:none;box-shadow:0 4px 12px rgba(0,0,0,.06),inset 0 0 0 1px rgba(255,255,255,.5);overflow:hidden;position:relative}
.rb-date-dropdown.show{display:block;animation:rbDdIn .26s cubic-bezier(.34,1.3,.64,1) both}
@keyframes rbDdIn{from{opacity:0;transform:translateY(-8px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}
.rb-dd-hdr{font-size:10px;font-weight:700;color:var(--text3);text-transform:uppercase;letter-spacing:.5px;padding:0 2px 7px;text-align:center}
.rb-dd-grid{display:flex;gap:4px}
.rb-dd-item{flex:1;min-width:0;padding:7px 2px 8px;border-radius:10px;background:var(--card);border:1px solid var(--border2);cursor:pointer;text-align:center;font-family:inherit;display:flex;flex-direction:column;align-items:center;gap:3px;transition:transform .14s,background .14s}
.rb-dd-item:active{transform:scale(.93)}
.rb-dd-item.active{background:var(--primary);border-color:var(--primary);color:#fff;box-shadow:0 2px 6px rgba(var(--primary-rgb),.22)}
.rb-dd-wd{font-size:9.5px;font-weight:700;color:var(--text3);letter-spacing:.3px;line-height:1}
.rb-dd-num{font-size:15px;font-weight:800;color:var(--text);line-height:1}
.rb-dd-item.active .rb-dd-wd,.rb-dd-item.active .rb-dd-num{color:#fff}
.rb-date-pill{flex:1;min-width:0;padding:7px 2px 8px;border-radius:11px;background:var(--card);border:1px solid var(--border2);cursor:pointer;text-align:center;transition:all .14s;font-family:inherit;display:flex;flex-direction:column;align-items:center;gap:3px}
.rb-date-pill:active{transform:scale(.93)}
.rb-date-pill.today-pill{border-color:#00897b}
.rb-date-pill.active{background:var(--primary);border-color:var(--primary);color:#fff;box-shadow:0 2px 8px rgba(var(--primary-rgb),.22)}
.rb-date-wd{font-size:9.5px;font-weight:700;color:var(--text3);letter-spacing:.3px;line-height:1}
.rb-date-num{font-size:15px;font-weight:800;color:var(--text);line-height:1}
.rb-date-mo{font-size:8px;color:var(--text3);line-height:1;margin-top:1px}
.rb-date-pill.active .rb-date-wd,.rb-date-pill.active .rb-date-num,.rb-date-pill.active .rb-date-mo{color:#fff}
.rb-date-pill.today-pill .rb-date-wd{color:#00897b}
.rb-date-pill.today-pill.active .rb-date-wd{color:#fff}
/* 週末日期淺色 — 同團隊日曆一致，易分週六日 */
.rb-date-pill.wknd:not(.active):not(.today-pill) .rb-date-num{color:var(--text3)}
.rb-dd-item.wknd:not(.active) .rb-dd-num{color:var(--text3)}
.rb-week-table th.wknd-col:not(.today-col) .dd{color:var(--text3)}
/* Slot grid 3×3 */
.rb-slot-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}
.rb-slot{padding:12px 5px 11px;border-radius:12px;border:1.5px solid #b2dfdb;background:#f0faf8;cursor:pointer;text-align:center;transition:transform .14s,background .14s;font-family:inherit;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;min-height:108px;position:relative}
.rb-slot:active{transform:scale(.96)}
.rb-slot-time{font-weight:800;color:#00695c;line-height:1;letter-spacing:-.3px;white-space:nowrap;display:flex;flex-direction:column;align-items:center;gap:2px}
.rb-slot-t1{font-size:16px;line-height:1;letter-spacing:-.3px}
.rb-slot-t2{font-size:10.5px;font-weight:600;opacity:.7;line-height:1}
.rb-slot-label{font-size:10.5px;color:#00897b;font-weight:700;line-height:1.1;margin-top:4px}
.rb-slot.booked{border-color:var(--primary-soft2);background:var(--primary-soft);cursor:pointer}
.rb-slot.booked .rb-slot-time{color:var(--primary-dark)}
.rb-slot.booked .rb-slot-t2{color:var(--primary-dark)}
.rb-slot.booked .rb-slot-label{color:var(--primary);font-weight:700}
/* 預約人姓名 — 永遠單行，太長就由 JS 加 .sm/.xs class 自動縮 font，最後仲長就 ellipsis */
.rb-slot.booked .rb-slot-user{display:block;font-size:10.5px;color:var(--primary-dark);margin-top:2px;line-height:1.2;max-width:100%;font-weight:800;letter-spacing:-.1px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;text-align:center;padding:0 2px;box-sizing:border-box}
.rb-slot.booked .rb-slot-user.sm{font-size:9.5px;letter-spacing:-.15px}
.rb-slot.booked .rb-slot-user.xs{font-size:8.5px;letter-spacing:-.2px}
.rb-slot.booked .rb-slot-purpose{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;align-self:center;max-width:100%;margin-top:3px;font-size:9px;line-height:1.3;color:#9a4a4a;font-weight:500;opacity:.9;padding:2px 7px;background:rgba(154,20,20,.08);border-radius:5px;text-align:center;white-space:normal;overflow:hidden;word-break:break-word;box-sizing:border-box}
.rb-slot.past{border-color:#e0e0e3;background:#f0f0f3;cursor:not-allowed;opacity:.55}
.rb-slot.past .rb-slot-time,.rb-slot.past .rb-slot-t2{color:#aaa}
.rb-slot.past .rb-slot-label{color:#aaa;font-weight:500}
/* Selected range — modal 開咗時 highlight 揀緊嘅時段 */
.rb-slot.sel{border-color:#00897b;background:#c8e8e0;box-shadow:0 0 0 2px rgba(0,137,123,.32) inset,0 3px 10px rgba(0,137,123,.22);transform:translateY(-1px);transition:transform .18s ease,background .18s ease,box-shadow .18s ease}
.rb-slot.sel .rb-slot-time,.rb-slot.sel .rb-slot-t2{color:#004d40}
.rb-slot.sel .rb-slot-label{color:#00695c;font-weight:800}
.rb-slot.sel::before{content:'✓';position:absolute;top:5px;left:6px;width:15px;height:15px;border-radius:50%;background:#00897b;color:#fff;font-size:9.5px;font-weight:800;display:flex;align-items:center;justify-content:center;box-shadow:0 1px 3px rgba(0,137,123,.4)}
/* Own marker — 紅圓點 */
.rb-slot.own::after{content:'';position:absolute;top:7px;right:7px;width:7px;height:7px;border-radius:50%;background:var(--primary);box-shadow:0 0 0 2px var(--primary-soft)}
/* Skeleton */
.rb-slot-skel{border-radius:12px;background:linear-gradient(90deg,#eef0f3 0%,#e0e3e8 50%,#eef0f3 100%);background-size:200% 100%;animation:skel-shimmer 1.4s ease-in-out infinite;min-height:108px;border:1.5px solid transparent}
/* Empty room state */
.rb-loading{text-align:center;padding:30px 0;color:var(--text3);font-size:12px}
/* Selection helper hint — amber 調，與青綠時段 cards 區分 */
.rb-hint{font-size:10.5px;color:var(--amber-text);background:var(--amber-soft);border:1px solid var(--amber-border);border-radius:9px;padding:6px 10px;line-height:1.3;display:flex;align-items:center;justify-content:center;gap:6px;margin:0 0 12px;white-space:nowrap;overflow:hidden;box-shadow:0 1px 2px rgba(212,155,0,.08)}
.rb-hint > span{min-width:0;text-overflow:ellipsis;overflow:hidden}
.rb-hint svg{flex-shrink:0;color:var(--amber)}
.rb-hint b{color:var(--amber-text-dark);font-weight:700}
/* Week table */
.rb-week-wrap{padding:0 14px 10px}
.rb-week-table{width:100%;border-collapse:separate;border-spacing:4px;table-layout:fixed}
.rb-week-table th{font-size:9.5px;font-weight:700;color:var(--text3);padding:4px 0 6px;text-align:center;letter-spacing:.3px}
.rb-week-table th:first-child{width:34px}
.rb-week-table th.today-col{color:#00897b}
.rb-week-table th .wd{display:block;line-height:1.1}
.rb-week-table th .dd{font-size:13px;font-weight:800;color:var(--text);margin-top:2px;display:block;line-height:1.1}
.rb-week-table th.today-col .dd{color:#00897b}
.rb-week-table td.row-label{font-size:9.5px;font-weight:700;color:var(--text2);padding:0 6px 0 0;text-align:right;background:none;letter-spacing:-.2px;width:34px}
.rb-week-table td.cell{height:32px;border-radius:6px;cursor:pointer;text-align:center;font-size:0;line-height:1;transition:transform .12s,opacity .12s}
.rb-week-table td.cell.avail{background:#dff4f0;border:1px solid #b2dfdb}
.rb-week-table td.cell.avail:active{transform:scale(.92)}
.rb-week-table td.cell.booked{background:#ffc8c8;border:1.5px solid #ee7a7a;cursor:default}
.rb-week-table td.cell.past{background:#eaeaee;border:1px solid #d8d8dc;cursor:not-allowed;opacity:.55}
.rb-week-legend{display:flex;gap:14px;padding:8px 16px 14px;font-size:10.5px;color:var(--text3);justify-content:center;flex-wrap:wrap}
.rb-week-legend-item{display:inline-flex;align-items:center;gap:5px}
.rb-week-legend-sw{width:12px;height:12px;border-radius:4px;border:1px solid}
.rb-lg-avail{background:#dff4f0;border-color:#b2dfdb}
.rb-lg-booked{background:#ffc8c8;border-color:#ee7a7a}
.rb-lg-past{background:#eaeaee;border-color:#d8d8dc}
/* Booking modal */
.rb-modal-backdrop{position:fixed;inset:0;background:var(--modal-scrim);opacity:0;pointer-events:none;transition:opacity .25s;z-index:9200;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}
.rb-modal-backdrop.show{opacity:1;pointer-events:auto}
.rb-modal{position:fixed;left:50%;bottom:0;transform:translateX(-50%) translateY(100%);background:var(--card);border-radius:18px 18px 0 0;width:100%;max-width:320px;z-index:9201;transition:transform .32s cubic-bezier(.32,.72,.32,1);max-height:90vh;display:flex;flex-direction:column;box-shadow:0 -10px 30px rgba(0,0,0,.18)}
.rb-modal.show{transform:translateX(-50%) translateY(0)}
.rb-modal-handle{width:36px;height:4px;background:var(--border2);border-radius:2px;margin:8px auto 4px}
.rb-modal-hdr{padding:6px 16px 12px;border-bottom:1px solid var(--border2);display:flex;align-items:center;justify-content:space-between;flex-shrink:0}
.rb-modal-title{font-size:15px;font-weight:800;color:var(--text)}
.rb-modal-close{background:none;border:none;color:var(--text3);cursor:pointer;padding:6px;display:flex}
.rb-modal-body{flex:1;overflow-y:auto;padding:14px 16px 16px}
.rb-meta-card{background:#f9f9fc;border:1px solid var(--border2);border-radius:11px;padding:12px;margin-bottom:14px;display:flex;align-items:center;gap:10px}
.rb-meta-icon{width:36px;height:36px;border-radius:9px;background:#dff4f0;display:flex;align-items:center;justify-content:center;color:#00897b;flex-shrink:0}
.rb-meta-info{flex:1;min-width:0}
.rb-meta-date{font-size:12px;color:var(--text3);margin-bottom:2px}
.rb-meta-time{font-size:14px;font-weight:800;color:var(--text);letter-spacing:-.2px;display:flex;align-items:center;gap:6px;flex-wrap:nowrap;white-space:nowrap;min-height:24px}
.rb-time-step{width:24px;height:24px;border:1px solid var(--border);border-radius:6px;background:#fff;color:var(--text2);font-size:14px;font-weight:700;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;padding:0;font-family:inherit;line-height:1;flex-shrink:0;transition:all .12s}
.rb-time-step:active{transform:scale(.92);background:#f5f5f8}
.rb-time-step:disabled{opacity:.35;cursor:not-allowed}
.rb-time-dash{color:var(--text3);font-weight:600;margin:0 1px}
.rb-meta-hours{font-size:10.5px;color:var(--text3);font-weight:600;margin-left:auto;background:#eef0f3;padding:2px 8px;border-radius:10px;flex-shrink:0;line-height:1.3}
/* Loading spinner inside buttons */
.rb-btn-submit.rb-btn-loading,.rb-btn-danger.rb-btn-loading{color:transparent!important;pointer-events:none;position:relative}
.rb-btn-submit.rb-btn-loading > *,.rb-btn-danger.rb-btn-loading > *{visibility:hidden}
.rb-btn-submit.rb-btn-loading::after,.rb-btn-danger.rb-btn-loading::after{content:'';position:absolute;left:50%;top:50%;width:18px;height:18px;border:2.5px solid rgba(255,255,255,.35);border-top-color:#fff;border-radius:50%;animation:rbSpin .7s linear infinite;visibility:visible}
.rb-btn-danger.rb-btn-loading::after{border-color:rgba(var(--primary-rgb),.25);border-top-color:var(--primary)}
@keyframes rbSpin{0%{transform:translate(-50%,-50%) rotate(0deg)}100%{transform:translate(-50%,-50%) rotate(360deg)}}
/* Date nav chevron */
.rb-date-nav{flex-shrink:0;min-width:30px;border-radius:11px;background:var(--card);border:1px solid var(--border2);cursor:pointer;color:var(--text2);display:flex;align-items:center;justify-content:center;font-family:inherit;padding:0;transition:transform .14s}
.rb-date-nav:active{transform:scale(.92);background:#f5f5f7}
/* Week view header */
.rb-week-nav{display:flex;align-items:center;justify-content:space-between;padding:6px 14px 8px;gap:10px}
.rb-week-nav-btn{flex-shrink:0;width:32px;height:32px;border-radius:8px;background:var(--card);border:1px solid var(--border2);cursor:pointer;color:var(--text2);display:flex;align-items:center;justify-content:center;font-family:inherit;padding:0;transition:transform .14s}
.rb-week-nav-btn:active{transform:scale(.9);background:#f5f5f7}
.rb-week-nav-btn:disabled{opacity:.35;cursor:not-allowed}
.rb-week-nav-label{font-size:13px;font-weight:700;color:var(--text);letter-spacing:-.1px}
.rb-week-hint{font-size:10.5px;color:var(--amber-text);background:var(--amber-soft);border:1px solid var(--amber-border);border-radius:9px;padding:6px 10px;line-height:1.3;display:flex;align-items:center;justify-content:center;gap:6px;margin:0 14px 10px;white-space:nowrap;overflow:hidden;box-shadow:0 1px 2px rgba(212,155,0,.08)}
.rb-week-hint > span{min-width:0;text-overflow:ellipsis;overflow:hidden}
.rb-week-hint svg{flex-shrink:0;color:var(--amber)}
.rb-week-hint b{color:var(--amber-text-dark);font-weight:700}
/* My bookings tab */
.rb-mine-list{padding:8px 14px 16px}
.rb-mine-skel{height:64px;border-radius:11px;background:linear-gradient(90deg,#eef0f3 25%,#e2e2e8 50%,#eef0f3 75%);background-size:200% 100%;animation:skel-shimmer 1.4s ease-in-out infinite;margin-bottom:8px;border:1px solid transparent}
.rb-mine-card{background:var(--card);border:1px solid var(--border2);border-left:3px solid var(--primary);border-radius:11px;padding:11px 13px;margin-bottom:8px;cursor:pointer;transition:transform .14s,background .14s;display:flex;flex-direction:column;gap:4px;font-family:inherit;text-align:left;width:100%}
.rb-mine-card:active{transform:scale(.98);background:#fafafa}
.rb-mine-card.past{border-left-color:#c0c0c5;opacity:.6;cursor:default}
.rb-mine-card-row1{display:flex;align-items:center;justify-content:space-between;gap:8px}
.rb-mine-date{font-size:11px;font-weight:600;color:var(--text3);letter-spacing:.2px}
.rb-mine-time{font-size:14px;font-weight:800;color:var(--primary);letter-spacing:-.3px}
.rb-mine-card.past .rb-mine-time{color:var(--text3)}
.rb-mine-purpose{font-size:12px;font-weight:600;color:var(--text)}
.rb-mine-note{font-size:11px;color:var(--text3);line-height:1.4;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.rb-mine-tap{font-size:10.5px;color:var(--text3);margin-top:1px;display:inline-flex;align-items:center;gap:3px}
.rb-mine-group-hdr{font-size:10.5px;font-weight:800;color:var(--text2);letter-spacing:.5px;margin:2px 2px 8px;text-transform:uppercase}
.rb-mine-group-hdr .rb-mine-group-count{font-weight:600;color:var(--text3);margin-left:3px}
.rb-mine-past-toggle{background:none;border:none;padding:10px 4px 8px;width:100%;display:flex;align-items:center;justify-content:space-between;font-size:10.5px;font-weight:800;color:var(--text2);letter-spacing:.5px;cursor:pointer;font-family:inherit;text-transform:uppercase;margin-top:8px;border-top:1px solid var(--border2)}
.rb-mine-past-toggle .chev{transition:transform .25s ease;color:var(--text3)}
.rb-mine-past-toggle.open .chev{transform:rotate(180deg)}
.rb-mine-past-list{display:none}
.rb-mine-past-list.open{display:block;animation:rbMinePastIn .25s ease}
@keyframes rbMinePastIn{from{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}
/* Success card (post-booking confirmation) */
.rb-succ-backdrop{position:fixed;inset:0;background:var(--modal-scrim);opacity:0;pointer-events:none;transition:opacity .25s;z-index:9400;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}
.rb-succ-backdrop.show{opacity:1;pointer-events:auto}
.rb-succ-card{position:fixed;left:50%;top:50%;transform:translate(-50%,-50%) scale(.85);background:var(--card);border-radius:18px;width:280px;max-width:88vw;z-index:9401;opacity:0;pointer-events:none;transition:opacity .28s ease,transform .35s cubic-bezier(.34,1.56,.64,1);overflow:hidden;box-shadow:0 18px 50px rgba(0,0,0,.3)}
.rb-succ-card.show{opacity:1;pointer-events:auto;transform:translate(-50%,-50%) scale(1)}
.rb-succ-top{background:linear-gradient(135deg,#1B8E50 0%,#0E5A2C 100%);color:#fff;padding:22px 18px 18px;text-align:center}
.rb-succ-icon{width:48px;height:48px;border-radius:50%;background:rgba(255,255,255,.22);display:inline-flex;align-items:center;justify-content:center;margin-bottom:10px;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}
.rb-succ-title{font-size:17px;font-weight:800;letter-spacing:-.2px;margin-bottom:3px}
.rb-succ-sub{font-size:11.5px;opacity:.92}
.rb-succ-body{padding:16px 18px 14px}
.rb-succ-row{display:flex;align-items:flex-start;gap:10px;padding:7px 0;font-size:12.5px;line-height:1.4}
.rb-succ-row + .rb-succ-row{border-top:1px solid var(--border2)}
.rb-succ-row-icon{color:var(--text3);flex-shrink:0;margin-top:1px}
.rb-succ-row-lbl{color:var(--text3);font-size:10.5px;font-weight:700;letter-spacing:.3px;text-transform:uppercase;display:block;margin-bottom:1px}
.rb-succ-row-val{color:var(--text);font-weight:600;font-size:12.5px;display:block}
.rb-succ-tip{font-size:11px;color:#a37000;background:#fff9ea;border:1px solid #f0e3b8;border-radius:8px;padding:9px 11px;line-height:1.5;display:flex;gap:7px;align-items:flex-start;margin:8px 0 0}
.rb-succ-tip svg{flex-shrink:0;color:#d49b00;margin-top:1px}
.rb-succ-btn{width:100%;padding:12px;background:linear-gradient(135deg,#1B8E50 0%,#0E5A2C 100%);color:#fff;border:none;border-radius:0;font-size:14px;font-weight:700;cursor:pointer;font-family:inherit;border-top:none;letter-spacing:.3px;outline:none;-webkit-tap-highlight-color:transparent;transition:filter .14s ease}
.rb-succ-btn:focus,.rb-succ-btn:focus-visible{outline:none;box-shadow:none}
.rb-succ-btn::-moz-focus-inner{border:0}
.rb-succ-btn:active{filter:brightness(.92)}
.rb-form-label{font-size:11px;font-weight:700;color:var(--text3);text-transform:uppercase;letter-spacing:.5px;margin-bottom:7px;margin-top:4px}
.rb-purpose-row{display:flex;flex-wrap:wrap;gap:5px;margin-bottom:14px}
.rb-purpose-btn{flex:0 0 auto;padding:5px 10px;border-radius:7px;border:1px solid var(--border2);background:var(--card);font-size:11.5px;font-weight:600;color:var(--text2);cursor:pointer;font-family:inherit;transition:all .14s;line-height:1.3}
.rb-purpose-btn:active{transform:scale(.94)}
.rb-purpose-btn.active{background:var(--primary);border-color:var(--primary);color:#fff;box-shadow:0 1px 4px rgba(var(--primary-rgb),.22)}
.rb-input{width:100%;padding:9px 11px;border:1px solid var(--border);border-radius:8px;font-size:12.5px;font-family:inherit;color:var(--text);background:var(--bg);margin-bottom:10px;box-sizing:border-box;-webkit-appearance:none}
.rb-input:focus{outline:none;border-color:var(--primary);background:#fff}
.rb-textarea{min-height:62px;resize:none;line-height:1.45}
.rb-user-info{font-size:11px;color:var(--text3);display:flex;align-items:center;gap:6px;padding:8px 11px;background:#f9f9fc;border-radius:8px;margin-bottom:14px}
.rb-user-info svg{flex-shrink:0;color:var(--text3)}
.rb-user-info b{color:var(--text2);font-weight:700}
.rb-submit-row{display:flex;gap:8px}
.rb-btn-submit{flex:1;padding:11px;background:var(--primary);color:#fff;border:none;border-radius:9px;font-size:13.5px;font-weight:700;cursor:pointer;font-family:inherit;display:flex;align-items:center;justify-content:center;letter-spacing:.3px;outline:none;-webkit-tap-highlight-color:transparent}
.rb-btn-submit:disabled{background:#c7c7cc;cursor:wait}
.rb-btn-danger{padding:11px 14px;background:#fff;border:1.5px solid var(--primary);color:var(--primary);border-radius:9px;font-size:13px;font-weight:700;cursor:pointer;font-family:inherit;flex-shrink:0;display:inline-flex;align-items:center;justify-content:center;letter-spacing:.3px;outline:none;-webkit-tap-highlight-color:transparent}
.rb-btn-submit svg,.rb-btn-danger svg{flex-shrink:0;display:block}
.rb-btn-submit:focus,.rb-btn-danger:focus,.rb-btn-submit:focus-visible,.rb-btn-danger:focus-visible{outline:none;box-shadow:none}
/* Inner wrapper — 把 icon 同字綁做一組 inline-flex，唔受 button 嘅 letter-spacing trailing 影響定位 */
.rb-btn-inner{display:inline-flex;align-items:center;justify-content:center;gap:6px;line-height:1}
.rb-btn-inner > span{letter-spacing:.3px}
.rb-status{font-size:11.5px;text-align:center;padding:8px 0 0;min-height:14px}
.rb-status.err{color:var(--primary)}
.rb-status.ok{color:#1B6B3A}
.qc-badge{display:inline-flex;align-items:center;background:var(--primary);color:#fff;font-size:9px;font-weight:600;padding:2px 7px;border-radius:20px;margin-top:5px;letter-spacing:.2px}
.qc-badge.grey{background:var(--text3)}
@keyframes qcBadgePulse{0%{opacity:.4;transform:translateY(3px) scale(.94)}55%{opacity:1;transform:translateY(0) scale(1.05)}100%{opacity:1;transform:translateY(0) scale(1)}}
.qc-badge.pulse{animation:qcBadgePulse .42s cubic-bezier(.34,1.4,.64,1) both}
.upcoming-card{background:var(--card);border-radius:var(--radius-sm);padding:9px 12px;margin-bottom:7px;border:1px solid var(--border2);display:flex;align-items:center;gap:10px;cursor:pointer;box-shadow:var(--shadow-sm);transition:opacity .12s}
.upcoming-card:active{opacity:.75}
.uc-date{background:rgba(var(--primary-rgb),.08);color:var(--primary);border-radius:8px;padding:4px 8px;text-align:center;flex-shrink:0;min-width:36px}
.uc-month{font-size:7px;font-weight:600;opacity:.8;text-transform:uppercase;letter-spacing:.3px}.uc-day{font-size:15px;font-weight:800;line-height:1.1}
.uc-title{font-size:12px;font-weight:600;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.uc-type{font-size:10px;color:var(--text3);margin-top:2px;display:inline-flex;align-items:center;gap:3px;line-height:1.1}.uc-type svg{flex-shrink:0;display:block;width:9px;height:9px}.uc-arrow{margin-left:auto;color:var(--border);flex-shrink:0}
.news-tabs{display:flex;gap:6px;overflow-x:auto;scrollbar-width:none;padding-bottom:4px;margin-bottom:0}
.news-tabs::-webkit-scrollbar{display:none}
.ntab{flex-shrink:0;padding:5px 13px;border-radius:20px;font-size:12px;font-weight:500;cursor:pointer;border:1px solid var(--border);background:var(--card);color:var(--text2);transition:all .15s}
.ntab.active{background:var(--primary);color:#fff;border-color:var(--primary);box-shadow:0 2px 8px rgba(var(--primary-rgb),.25)}
.n-toggle{flex:1;padding:4px 10px;border-radius:10px;font-size:12px;font-weight:600;border:1px solid var(--border);background:var(--card);color:var(--text2);cursor:pointer;text-align:center;transition:all .15s}
.n-toggle.on{background:var(--text);color:#fff;border-color:var(--text)}
/* ── News Feed 重設計：grouped card + divider list ── */
.news-list{padding:0 10px 8px}
.news-feed-card{background:var(--card);border-radius:var(--radius-md);border:1px solid var(--border2);overflow:hidden}
.news-item{padding:10px 12px;border-bottom:1px solid var(--border2);display:block;text-decoration:none;background:none;border-radius:0;box-shadow:none;margin-bottom:0;transition:background .12s}
.news-item:last-of-type{border-bottom:none}
.news-item:active{background:var(--bg)!important}
.news-top{display:flex;align-items:center;gap:5px;margin-bottom:4px}
.news-cat{font-size:9px;font-weight:700;padding:2px 7px;border-radius:5px;background:var(--primary-soft);color:var(--primary-dark);flex-shrink:0}
.news-src{font-size:9px;color:var(--text3);flex-shrink:0}
.news-date{font-size:9px;color:var(--text3);margin-left:auto;flex-shrink:0}
.news-title{font-size:12px;font-weight:600;color:var(--text);line-height:1.45}
.news-loading{text-align:center;padding:20px;color:var(--text3);font-size:13px}
.news-more{display:block;width:100%;padding:10px;background:var(--card);border:1px solid var(--border2);border-radius:var(--radius-sm);font-size:12px;color:var(--primary);font-weight:600;cursor:pointer;margin-top:7px;text-align:center}
.news-collapse{color:var(--text3);border-color:var(--border2)}
/* ── 每日金融摘要卡（Market movers 財經卡）── */
.digest-card{margin:0;background:var(--card);border:1px solid var(--border2);border-radius:var(--radius-md);overflow:hidden;cursor:pointer;box-shadow:0 1px 3px rgba(0,0,0,.04);transition:transform .12s}
.digest-card:active{transform:scale(.985)}
.digest-card.dg-drag,.digest-card.dg-drag:active{transform:none!important}
.digest-in{padding:13px 13px 9px}
.digest-top{display:flex;align-items:center;gap:6px;margin-bottom:7px}
.digest-badge{font-size:9px;font-weight:800;letter-spacing:.5px;padding:2px 7px;border-radius:5px;background:var(--primary-soft);color:var(--primary-dark);flex-shrink:0}
.digest-date{font-size:10px;color:var(--text3);margin-left:auto}
.digest-h{font-size:12px;font-weight:700;color:var(--text);line-height:1.4;margin-bottom:10px}
.digest-movers{display:flex;gap:7px;overflow-x:auto;scrollbar-width:none;padding-bottom:2px;-webkit-overflow-scrolling:touch}
.digest-movers::-webkit-scrollbar{display:none}
.digest-chip{flex-shrink:0;background:var(--bg);border-radius:9px;padding:6px 10px}
.digest-chip .dc-k{font-size:10px;color:var(--text3);margin-bottom:2px;white-space:nowrap}
.digest-chip .dc-v{font-size:12px;font-weight:800;white-space:nowrap;color:var(--text)}
.digest-chip .dc-v.up{color:var(--teal)}
.digest-chip .dc-v.down{color:var(--primary)}
.digest-preview{font-size:12px;color:var(--text2);line-height:1.55;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.digest-foot{display:flex;align-items:center;margin-top:7px;padding-top:7px;border-top:1px solid var(--border2)}
.digest-count{font-size:10.5px;color:var(--text3)}
.digest-cta{display:block;white-space:nowrap;font-size:11px;font-weight:600;color:var(--primary);margin-left:auto}
/* 每日摘要 loading skeleton（開 app 即刻預留位，唔好 load 完先彈出）*/
.digest-skel{background:var(--card);border:1px solid var(--border2);border-radius:var(--radius-md);padding:13px 13px 12px}
.digest-skel .sk-row{display:flex;align-items:center;gap:8px;margin-bottom:11px}
.digest-skel .sk-b{width:52px;height:15px;border-radius:5px}
.digest-skel .sk-d{width:96px;height:11px;border-radius:5px;margin-left:auto}
.digest-skel .sk-title{width:72%;height:15px;border-radius:6px;margin-bottom:12px}
.digest-skel .sk-chips{display:flex;gap:7px;margin-bottom:13px;overflow:hidden}
.digest-skel .sk-chip{width:74px;height:41px;border-radius:9px;flex-shrink:0}
.digest-skel .sk-foot{height:11px;width:38%;border-radius:5px}
/* ── 全文閱讀 overlay 內容 ── */
.dg-intro{font-size:13px;color:var(--text2,var(--text3));line-height:1.7;margin-bottom:16px;padding-bottom:14px;border-bottom:1px solid var(--border2)}
.dg-sec{margin-bottom:18px}
.dg-sec-h{font-size:14px;font-weight:700;color:var(--text);line-height:1.45;margin-bottom:7px;padding-left:9px;border-left:3px solid var(--primary)}
.dg-p{font-size:13px;color:var(--text);line-height:1.72;margin-bottom:8px;overflow-wrap:anywhere}
.dg-table-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch;margin:8px 0 4px;border:1px solid var(--border2);border-radius:var(--radius-sm)}
.dg-table{width:100%;border-collapse:collapse;font-size:11.5px;min-width:340px}
.dg-table th{background:var(--bg);color:var(--text);font-weight:700;text-align:left;padding:7px 9px;border-bottom:1px solid var(--border2);white-space:nowrap}
.dg-table td{padding:7px 9px;color:var(--text);border-bottom:1px solid var(--border2);vertical-align:top}
.dg-table tr:last-child td{border-bottom:none}
/* 資料來源：預設收埋（冇乜人睇，唔好佔位），撳標題展開 */
.dg-refs{margin-top:6px;padding-top:12px;border-top:1px solid var(--border2)}
.dg-refs-h{font-size:11px;font-weight:700;color:var(--text3);letter-spacing:.5px;font-family:inherit;
  display:flex;align-items:center;justify-content:space-between;gap:8px;width:100%;
  background:none;border:none;padding:2px 0;cursor:pointer;text-align:left;-webkit-tap-highlight-color:transparent}
.dg-refs-h:active{opacity:.6}
.dg-refs-chev{flex-shrink:0;transition:transform .22s cubic-bezier(.4,0,.2,1)}
.dg-refs.open .dg-refs-chev{transform:rotate(180deg)}
.dg-refs-list{display:none;margin-top:7px}
.dg-refs.open .dg-refs-list{display:block}
.dg-ref{font-size:11px;color:var(--text3);line-height:1.6;margin-bottom:3px}
.dg-disc{margin-top:14px;padding:10px 12px;background:var(--bg);border-radius:var(--radius-sm);font-size:10.5px;color:var(--text3);line-height:1.6}
/* ── 返回頂部浮動掣（只喺金融摘要全文）：碌落 300px 先淡入 ── */
.dg-totop{position:absolute;right:14px;bottom:78px;width:38px;height:38px;border-radius:50%;
  background:var(--card);color:var(--text);border:none;cursor:pointer;padding:0;
  display:flex;align-items:center;justify-content:center;z-index:5;
  box-shadow:0 3px 12px rgba(0,0,0,.16),0 0 0 .5px rgba(0,0,0,.04);
  opacity:0;transform:translateY(8px) scale(.9);pointer-events:none;
  transition:opacity .22s ease,transform .22s cubic-bezier(.34,1.2,.64,1)}
.dg-totop.show{opacity:1;transform:none;pointer-events:auto}
.dg-totop.show:active{transform:scale(.9)}
/* ── 日曆「本月概覽」回頂浮動掣（nav 上方，碌落 300px 先淡入）── */
.cal-totop{position:absolute;right:14px;bottom:84px;width:38px;height:38px;border-radius:50%;
  background:var(--card);color:var(--text);border:none;cursor:pointer;padding:0;
  display:flex;align-items:center;justify-content:center;z-index:6;
  box-shadow:0 3px 12px rgba(0,0,0,.16),0 0 0 .5px rgba(0,0,0,.04);
  opacity:0;transform:translateY(8px) scale(.9);pointer-events:none;
  transition:opacity .22s ease,transform .22s cubic-bezier(.34,1.2,.64,1)}
.cal-totop.show{opacity:1;transform:none;pointer-events:auto}
.cal-totop.show:active{transform:scale(.9)}
/* ── 匯出 PDF ── */
.dg-pdf-btn{background:none;border:none;cursor:pointer;color:var(--primary);padding:4px 6px;display:flex;align-items:center;gap:4px;font-size:12px;font-weight:700}
.dg-pdf-btn:disabled{opacity:.55}
/* 離屏乾淨排版（畀 html2pdf 截，唔係截縮放版 app）*/
#digestPdf{position:absolute;left:0;top:0;z-index:-1;width:720px;background:#fff;color:#111;padding:40px 44px;box-sizing:border-box;font-family:"PingFang HK","Microsoft JhengHei",-apple-system,system-ui,sans-serif;pointer-events:none}
#digestPdf .pdf-head{display:flex;align-items:center;gap:14px;margin-bottom:14px}
#digestPdf .pdf-logo{width:58px;height:58px;border-radius:13px;flex-shrink:0;object-fit:cover}
#digestPdf .pdf-brand{font-size:12px;font-weight:800;letter-spacing:1.5px;color:var(--primary);margin-bottom:6px}
#digestPdf .pdf-head .pdf-brand{margin-bottom:3px}
#digestPdf .pdf-head .pdf-title{margin:0}
#digestPdf .pdf-title{font-size:24px;font-weight:800;margin:0 0 4px;color:#111;line-height:1.3}
#digestPdf .pdf-date{font-size:13px;color:#666;margin:0 0 18px;padding-bottom:16px;border-bottom:2px solid var(--primary)}
#digestPdf .pdf-intro{font-size:14px;line-height:1.85;color:#333;margin-bottom:22px}
#digestPdf .pdf-sec{margin-bottom:20px}
#digestPdf .pdf-h{font-size:16px;font-weight:800;color:#111;border-left:4px solid var(--primary);padding-left:11px;margin-bottom:10px;line-height:1.4}
#digestPdf .pdf-p{font-size:13.5px;line-height:1.85;color:#222;margin-bottom:9px}
#digestPdf .pdf-table{width:100%;border-collapse:collapse;margin:10px 0 6px;font-size:12.5px}
#digestPdf .pdf-table th{background:#f4f4f6;border:1px solid #d9d9de;padding:8px 10px;text-align:left;font-weight:700;color:#111}
#digestPdf .pdf-table td{border:1px solid #e5e5ea;padding:8px 10px;color:#222}
#digestPdf .pdf-refs{margin-top:10px;padding-top:14px;border-top:1px solid #ddd}
#digestPdf .pdf-refs-h{font-size:12px;font-weight:700;color:#666;margin-bottom:6px;letter-spacing:.5px}
#digestPdf .pdf-ref{font-size:11.5px;color:#777;line-height:1.75}
#digestPdf .pdf-disc{margin-top:18px;padding:12px 14px;background:#f7f7f8;border-radius:8px;font-size:11px;color:#888;line-height:1.75}
/* 頁面標題只留畀 VoiceOver 讀；畫面上由底部 nav 標示所在頁（同主頁／日曆一致）*/
.page-header{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}
#page-announce .search-wrap{padding-top:10px}
.search-wrap{padding:8px 14px 4px}
.search-input{width:100%;padding:9px 32px 9px 34px;border:1px solid var(--border);border-radius:10px;font-size:13px;font-family:inherit;background:var(--card) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 24 24' fill='none' stroke='%238e8e93' stroke-width='2'%3E%3Ccircle cx='11' cy='11' r='8'/%3E%3Cline x1='21' y1='21' x2='16.65' y2='16.65'/%3E%3C/svg%3E") no-repeat 10px center;color:var(--text)}
.search-input:focus{outline:none;border-color:var(--primary)}
/* Search input clear (✕) button — :placeholder-shown 自動 hide／show */
.search-input-wrap{position:relative;display:block}
.search-clear{position:absolute;right:6px;top:50%;transform:translateY(-50%);width:22px;height:22px;border:none;background:rgba(0,0,0,.04);color:var(--text3);cursor:pointer;display:none;align-items:center;justify-content:center;padding:0;border-radius:50%;-webkit-tap-highlight-color:transparent;transition:background .15s ease,color .15s ease}
.search-clear:active{background:rgba(0,0,0,.12);color:var(--text2)}
.search-input-wrap input:not(:placeholder-shown) + .search-clear{display:flex}
.ann-list{padding:8px 14px 0}
.ann-card{background:var(--card);border-radius:var(--radius-md);margin-bottom:10px;border:1px solid var(--border2);overflow:hidden;box-shadow:var(--shadow-sm)}
.ann-top{padding:12px 14px 10px}.ann-header{display:flex;align-items:flex-start;justify-content:space-between;gap:7px;margin-bottom:5px}
.ann-title{font-size:14px;font-weight:600;color:var(--text);flex:1;line-height:1.35}
.ann-new{background:var(--primary);color:#fff;font-size:10px;font-weight:600;padding:2px 8px;border-radius:20px;flex-shrink:0;white-space:nowrap}
.ann-body{font-size:12px;color:var(--text2);line-height:1.5;overflow-wrap:anywhere}
.ann-footer{background:var(--card2);padding:7px 14px;border-top:1px solid var(--border2);display:flex;justify-content:space-between}
.ann-date{font-size:11px;color:var(--text3)}.ann-from{font-size:11px;color:var(--text2);font-weight:500}
/* 公告卡（2026-09-29）：【xx】標籤、新公告紅點、3 行收埋、連結掣 */
.ann-meta{display:flex;align-items:center;gap:6px;margin-bottom:6px}
.ann-dot{width:6px;height:6px;border-radius:50%;background:var(--primary);flex-shrink:0}
.ann-header>.ann-dot{margin-top:6px}
.ann-meta>.ann-dot,.ad-top>.ann-dot{margin-left:auto}
.ann-more{display:inline-block}
/* 統一文字連結箭咀：一定要擺喺 inline 排版入面（flex 置中會對住行距中線，比中文字高約 0.18em，睇落「飛咗上去」）*/
.lk-chev{display:inline-block;width:.9em;height:.9em;vertical-align:-.14em;margin-left:.15em;transition:transform .18s}
.lk-chev.up{transform:rotate(-90deg)}
.lk-chev.dn{transform:rotate(90deg)}
.ann-body.clamp~.ann-links{display:none}   /* 收埋時唔出「開啟連結」，展開全文先見到 */
.popup-title .ann-tag{display:table;margin-bottom:6px}
.popup-text{white-space:pre-line;overflow-wrap:anywhere}
.popup-text .ann-links{margin-top:10px;white-space:normal}
.ann-tag{font-size:10px;font-weight:700;padding:2px 7px;border-radius:5px;background:#f1f1f4;color:var(--text2);line-height:1.4}
.ann-tag.imp{background:rgba(var(--primary-rgb),.08);color:var(--primary)}
.ann-body{white-space:pre-line}
.ann-body.clamp{display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
.ann-more{display:inline-block;margin-top:3px;padding:4px 0;border:0;background:none;font:inherit;font-size:11.5px;font-weight:700;color:var(--primary);cursor:pointer}
.ann-inl{color:var(--primary);font-weight:700;text-decoration:none}
.ann-links{display:flex;flex-wrap:wrap;gap:6px;margin-top:9px}
.ann-link{display:inline-flex;align-items:center;gap:5px;padding:7px 12px;border:1px solid rgba(var(--primary-rgb),.35);border-radius:9px;font-size:12px;font-weight:700;color:var(--primary);text-decoration:none;background:var(--card)}
.ann-link:active{background:rgba(var(--primary-rgb),.06)}
.cal-wrap{padding:10px 14px 0}
.cal-box{background:var(--card);border-radius:12px;border:1px solid var(--border2);overflow:hidden;margin-bottom:6px}
.cal-hdr{background:var(--primary);color:#fff;padding:10px 14px;display:grid;grid-template-columns:1fr auto 1fr;align-items:center}
.cal-hdr-btn{background:none;border:none;color:#fff;cursor:pointer;padding:4px;display:flex;align-items:center;justify-content:center}
.cal-hdr-title{display:inline-flex;align-items:center;gap:4px;font-size:14px;font-weight:700;background:none;border:none;color:#fff;cursor:pointer;font-family:inherit;padding:4px 8px;border-radius:8px;-webkit-tap-highlight-color:transparent;letter-spacing:.3px}
.cal-hdr-title:active{background:rgba(255,255,255,.15)}
.cal-hdr-caret{opacity:.85;margin-top:1px}
/* 月份選擇器 */
#calMonthPicker{position:fixed;inset:0;z-index:250;display:none}
#calMonthPicker.show{display:block}
.cmp-scrim{position:absolute;inset:0;background:rgba(0,0,0,.22);opacity:0;transition:opacity .18s}
#calMonthPicker.show .cmp-scrim{opacity:1}
.cmp-pop{position:fixed;width:290px;max-width:calc(100vw - 28px);background:#fff;border-radius:16px;padding:14px;box-shadow:0 12px 34px rgba(0,0,0,.24);transform-origin:top center;transform:scale(.92);opacity:0;transition:transform .2s cubic-bezier(.32,1.35,.5,1),opacity .16s}
#calMonthPicker.show .cmp-pop{transform:scale(1);opacity:1}
.cmp-yhdr{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}
.cmp-ybtn{width:32px;height:32px;border-radius:50%;background:#f2f2f7;border:none;color:#636366;display:flex;align-items:center;justify-content:center;cursor:pointer}
.cmp-ybtn:active{transform:scale(.92)}
.cmp-year{font-size:16px;font-weight:800;color:#1c1c1e;letter-spacing:.3px}
.cmp-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:7px}
.cmp-m{padding:10px 0;border-radius:10px;background:#f2f2f7;border:none;font-size:13px;font-weight:700;color:#1c1c1e;cursor:pointer;font-family:inherit;transition:transform .12s}
.cmp-m:active{transform:scale(.94)}
.cmp-m.today{color:var(--primary)}
.cmp-m.sel{background:var(--primary);color:#fff}
.cal-today-btn{background:rgba(255,255,255,.2);border:none;color:#fff;font-size:11px;font-weight:600;padding:2px 6px;border-radius:7px;cursor:pointer;justify-self:start}
.cal-hdr-nav{display:flex;align-items:center;gap:0;justify-content:flex-end}
.cal-grid{display:grid;grid-template-columns:repeat(7,1fr);text-align:center;padding:7px;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}
.cal-dow{font-size:10px;color:var(--text3);font-weight:500;padding:3px 0}
.cal-day{font-size:12px;padding:4px 2px 6px;border-radius:7px;min-height:36px;display:flex;flex-direction:column;align-items:center;padding-top:5px;color:var(--text)}
.cal-day.today{background:var(--primary);color:#fff;font-weight:700}.cal-day.has-event{cursor:pointer}
.cal-day.other-month{color:var(--text3);opacity:.4}.cal-day.highlighted{background:var(--primary-soft)}
.cal-dot-row{display:flex;justify-content:center;align-items:center;gap:3px;margin-top:1px;min-height:6px;line-height:0}
/* 動態圖例 chips — 月曆格同 agenda 之間一行，只顯示當月有嘅 category */
.cal-legend{display:flex;align-items:center;gap:13px;padding:9px 14px;border-top:1px solid var(--border2);overflow-x:auto;scrollbar-width:none;-webkit-overflow-scrolling:touch}
.cal-legend::-webkit-scrollbar{display:none}
.cal-legend:empty{display:none}
.cal-legend-item{display:inline-flex;align-items:center;gap:5px;font-size:10.5px;color:var(--text2);font-weight:600;flex-shrink:0;white-space:nowrap;letter-spacing:.2px}
.cal-legend-dot{width:7px;height:7px;border-radius:50%;flex-shrink:0}
.cal-events-list{padding:0 0 10px}
.cev{display:flex;align-items:center;gap:8px;padding:7px 0;border-bottom:1px solid var(--border2);transition:background .3s;border-radius:6px}
.cev:last-child{border-bottom:none}.cev.flash{background:var(--primary-soft)}
.cev-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}.cev-title{font-size:13px;font-weight:500;color:var(--text)}.cev-date{font-size:11px;color:var(--text3);margin-top:1px}
.tabs{display:flex;gap:6px;padding:10px 14px;overflow-x:auto;scrollbar-width:none}.tabs::-webkit-scrollbar{display:none}
.tab{flex-shrink:0;padding:5px 12px;border-radius:16px;font-size:12px;font-weight:500;cursor:pointer;border:1px solid var(--border);background:var(--card);color:var(--text2);display:inline-flex;align-items:center;gap:4px}
.tab.active{background:var(--primary);color:#fff;border-color:var(--primary)}
.ev-list{padding:0 14px 8px}
.card{background:var(--card);border-radius:12px;margin-bottom:9px;overflow:hidden;border:1px solid var(--border2)}
.card-body{padding:10px 12px 8px}.card-row1{display:flex;align-items:center;justify-content:space-between;gap:7px;margin-bottom:4px}
.type-tag{display:inline-flex;align-items:center;gap:4px;padding:2px 8px 2px 7px;border-radius:14px;font-size:11px;font-weight:600;line-height:1.4}
.type-tag svg{flex-shrink:0;display:block}
/* 具體顏色由 EVENT_CATEGORIES config 透過 inline style 注入 */
.badge{padding:2px 8px;border-radius:14px;font-size:11px;font-weight:500}
.badge-open{background:#e8f5e9;color:#2e7d32}.badge-soon{background:#fffde7;color:#f9a825}.badge-closed{background:#f0f0f0;color:#8e8e93}
.card-title{font-size:14px;font-weight:600;color:var(--text);line-height:1.3;margin-bottom:6px}
/* Spotlight highlight when navigating from a card (replaces old static red border) */
.card.card-highlight{animation:cardSpotlight 1.8s cubic-bezier(.22,.61,.36,1) both;position:relative;z-index:2;will-change:transform,box-shadow}
@keyframes cardSpotlight{
  0%{transform:scale(1);box-shadow:0 0 0 0 rgba(var(--primary-rgb),0),0 0 0 0 rgba(var(--primary-rgb),0)}
  18%{transform:scale(1.025);box-shadow:0 0 0 4px rgba(var(--primary-rgb),.22),0 14px 34px -8px rgba(var(--primary-rgb),.42)}
  45%{transform:scale(1.012);box-shadow:0 0 0 2.5px rgba(var(--primary-rgb),.14),0 8px 22px -8px rgba(var(--primary-rgb),.28)}
  100%{transform:scale(1);box-shadow:0 0 0 0 rgba(var(--primary-rgb),0),0 0 0 0 rgba(var(--primary-rgb),0)}
}
.meta-row{display:flex;align-items:center;gap:5px;margin-bottom:3px}.meta-label{font-size:12px;color:var(--text3)}
.meta-val{font-size:12px;font-weight:700;color:var(--primary);letter-spacing:.5px}.meta-note{font-size:12px;color:var(--text2)}
.card-foot{background:var(--card2);padding:8px 12px;border-top:1px solid var(--border2)}
.btn-signup{display:block;width:100%;padding:8px;background:var(--primary);color:#fff;border:none;border-radius:8px;font-size:13px;font-weight:500;cursor:pointer;text-align:center;text-decoration:none}
/* 已截止卡冇底部按鈕（右上「已截止」標籤已經講咗），底部 padding 補返同頂部一樣 */
.ev-closed .card-body{padding-bottom:10px}
/* 已截止活動整張卡灰化（同主頁 Cold Call .stat-card.muted 同一套色階）
   type-tag 有 inline style，要 !important 先蓋到；佢啲 icon 用 currentColor，會跟住 color 一齊灰 */
.card.ev-closed .type-tag{background:#f2f2f4!important;color:#a8a8ad!important}
.card.ev-closed .card-title{color:#a1a1a6}
.card.ev-closed .meta-val{color:#a8a8ad}
.card.ev-closed .meta-label,.card.ev-closed .meta-note{color:#b8b8bd}
.card.ev-closed .meta-row svg{stroke:#c1c1c6}
.loading{text-align:center;padding:24px;color:var(--text3);font-size:13px}
/* ── 統一 loading 指示器 ──
   .ld-arc = 圓角弧線 spinner（同下拉刷新 .ptr-spinner／預約掣 .rb-btn-loading 同一家族）
   .ld-dots = 三點跳動，留畀得一行字、放唔落圈仔嘅窄位
   ⚠️ 列表載入請繼續用 skeleton（骨架灰塊），唔好用呢兩個 —— 骨架唔會跳位 */
.ld-arc{width:18px;height:18px;flex:0 0 auto;color:var(--primary);animation:ldSpin .7s linear infinite}
.ld-arc.sm{width:14px;height:14px}
@keyframes ldSpin{to{transform:rotate(360deg)}}
.ld-box{display:flex;align-items:center;justify-content:center;gap:8px}
.ld-dots{display:inline-flex;align-items:center;gap:3px;vertical-align:middle;margin-left:1px}
.ld-dots i{width:4px;height:4px;border-radius:50%;background:currentColor;animation:ldBounce 1.15s ease-in-out infinite}
.ld-dots i:nth-child(2){animation-delay:.14s}
.ld-dots i:nth-child(3){animation-delay:.28s}
@keyframes ldBounce{0%,65%,100%{opacity:.28;transform:translateY(0)}32%{opacity:.95;transform:translateY(-3px)}}
@media (prefers-reduced-motion:reduce){.ld-arc,.ld-dots i{animation-duration:2.4s}}
.empty-state{display:flex;flex-direction:column;align-items:center;gap:8px;padding:38px 24px 32px;color:var(--text3);font-size:13px;text-align:center;line-height:1.5;animation:emptyStateIn .42s cubic-bezier(.32,.72,.32,1) both}
@keyframes emptyStateIn{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}
.empty-state-halo{width:72px;height:72px;border-radius:50%;background:radial-gradient(circle at 30% 30%,#fafafc 0%,#f0f0f3 100%);display:flex;align-items:center;justify-content:center;margin-bottom:4px;box-shadow:inset 0 1px 0 rgba(255,255,255,.7),0 2px 8px rgba(0,0,0,.04)}
.empty-state-halo svg{color:#a8a8af;opacity:.85;flex-shrink:0;width:34px;height:34px}
.empty-state-title{font-weight:600;color:var(--text2);font-size:13px;margin-top:2px}
.empty-state-sub{font-size:11px;color:var(--text3);margin-top:-2px;max-width:240px}
.empty-state-cta{margin-top:10px;background:var(--primary);color:#fff;border:none;padding:8px 18px;border-radius:10px;font-size:12px;font-weight:700;cursor:pointer;font-family:inherit;letter-spacing:.2px;display:inline-flex;align-items:center;gap:5px;box-shadow:0 2px 8px rgba(var(--primary-rgb),.22);transition:transform .14s ease,filter .14s ease}
.empty-state-cta:active{transform:scale(.95);filter:brightness(.96)}
/* ── 公告 Centered Modal ── */
.popup-overlay{
  display:flex;position:fixed;inset:0;
  background:rgba(0,0,0,0);
  z-index:9000;
  align-items:center;justify-content:center;padding:24px;
  pointer-events:none;
  transition:background .25s ease, backdrop-filter .25s ease;
}
.popup-overlay.show{background:var(--modal-scrim);pointer-events:all;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}
.popup-box{
  background:var(--card);
  border-radius:18px;
  width:100%;max-width:360px;
  overflow:hidden;
  transform:scale(0.92);
  opacity:0;
  transition:transform .25s cubic-bezier(0.34,1.56,0.64,1), opacity .2s ease;
  box-shadow:0 20px 60px rgba(0,0,0,.22);
  /* 長公告：頂欄同按鈕固定，淨係 .popup-body 碌，唔會爆出畫面 */
  max-height:100%;display:flex;flex-direction:column;
}
.popup-overlay.show .popup-box{transform:scale(1);opacity:1}
.popup-handle{display:none}
.popup-hdr{background:var(--primary);color:#fff;padding:10px 10px 10px 16px;display:flex;align-items:center;justify-content:space-between;flex:0 0 auto}
.popup-hdr span{font-size:14px;font-weight:700}
.popup-close{position:relative;width:32px;height:32px;margin:-2px;border:none;background:none;color:#fff;display:flex;align-items:center;justify-content:center;border-radius:50%;cursor:pointer;-webkit-tap-highlight-color:transparent;transition:background .15s}
.popup-close::after{content:'';position:absolute;inset:-6px} /* 觸控範圍 44px */
.popup-close:active{background:rgba(255,255,255,.18)}
.popup-close svg{width:18px;height:18px;display:block}
.popup-body{padding:16px 16px 0;overflow-y:auto;flex:1 1 auto;min-height:0;overscroll-behavior:contain;-webkit-overflow-scrolling:touch}
.popup-body.more{-webkit-mask-image:linear-gradient(#000 calc(100% - 24px),transparent);mask-image:linear-gradient(#000 calc(100% - 24px),transparent)}
.popup-foot{padding:0 16px 16px;flex:0 0 auto}
.popup-title{font-size:15px;font-weight:600;color:var(--text);margin-bottom:8px;line-height:1.3}
.popup-text{font-size:13px;color:var(--text2);line-height:1.6;margin-bottom:12px}
.popup-from{font-size:11px;color:var(--text3);margin-bottom:16px}
.popup-divider{border:none;border-top:1px solid var(--border2);margin:0 -16px 14px}
.popup-btn{
  display:block;width:100%;
  padding:13px;
  background:var(--primary);
  color:#fff;border:none;border-radius:12px;
  font-size:14px;font-weight:700;letter-spacing:0.2px;
  cursor:pointer;
  transition:background .15s,transform .12s;
}
.popup-btn:active{background:var(--primary-dark);transform:scale(.98)}
.popup-dismiss-today{display:block;width:100%;background:none;border:none;color:var(--text3);font-size:11.5px;font-weight:500;cursor:pointer;font-family:inherit;padding:11px 0 3px;letter-spacing:.1px;-webkit-tap-highlight-color:transparent;transition:color .15s ease}
.popup-dismiss-today:active{color:var(--text2)}
.overlay-page { 
  display: none; 
  position: absolute; 
  top: 0; 
  left: 0; 
  z-index: 200; 
  flex-direction: column; 
  background: var(--bg); 
  margin: 0;
  /* Add slide animation */
  transform: translateY(100%) scale(var(--app-scale, 1));
  transition: transform 0.3s cubic-bezier(0.4, 0, 0.2, 1);
  transform-origin: 0 0;
}
.overlay-page.show { 
  display: flex; 
  transform: translateY(0) scale(var(--app-scale, 1));
}
.overlay-hdr{background:var(--card);padding:calc(12px + var(--safe-top,0px)) 16px 12px;border-bottom:1px solid var(--border);flex-shrink:0;display:flex;align-items:center;justify-content:space-between}
.overlay-title{font-size:16px;font-weight:700;color:var(--text);text-align:center;flex:1}
.overlay-close{background:none;border:none;cursor:pointer;color:var(--text3);padding:4px;display:flex;align-items:center}
.overlay-body{flex:1;overflow-y:auto;overflow-x:hidden;padding:12px 14px 24px}
/* Tool Entry Cards */
.tool-entry-card{display:flex;align-items:center;gap:16px;width:100%;background:var(--card);border:1px solid var(--border2);border-radius:var(--radius-lg);padding:16px 16px 14px;margin-bottom:10px;cursor:pointer;text-align:left;transition:transform .15s ease,box-shadow .15s ease;box-shadow:var(--shadow-sm)}
.tool-entry-card:active{transform:scale(.97);box-shadow:none}
.tool-entry-icon{width:52px;height:52px;border-radius:14px;display:flex;align-items:center;justify-content:center;flex-shrink:0}
.tool-entry-title{font-size:16px;font-weight:700;color:var(--text);margin-bottom:6px}
.tool-entry-sub{display:none;font-size:11px;color:var(--text3);line-height:1.4;margin-bottom:6px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis} /* 2026-10-06 團隊：卡太長，隱藏灰色副題（字仍保留喺 HTML，想還原刪 display:none） */
.tool-entry-info{flex:1}
.tool-entry-badge{display:inline-block;font-size:11px;font-weight:600;padding:3px 9px;border-radius:20px}
.teb-red{background:#FCEBEB;color:#A32D2D}.teb-green{background:#EAF3DE;color:#3B6D11}.teb-blue{background:#E6F1FB;color:#185FA5}
.teb-neutral{background:#f0f0f3;color:#6b6b72;font-size:10px;padding:2.5px 8px}
/* MDRT Calc */
.calc-v6-wrap{background:#fff;border-radius:14px;padding:14px;border:1px solid var(--border2)}
.calc-v6-title{text-align:center;color:var(--primary);font-size:17px;font-weight:700;margin-bottom:10px}
.calc-input-grid{display:grid;grid-template-columns:1fr 1fr;gap:6px;margin-bottom:5px}
.calc-v6-group{margin-bottom:5px}
.calc-v6-label{display:block;font-weight:600;margin-bottom:2px;color:#636366;font-size:11px}
.calc-v6-input,.calc-v6-select{width:100%;height:34px;padding:0 8px;border:1px solid #d1d1d6;border-radius:8px;box-sizing:border-box;font-size:13px;background:#f9f9f9;text-align:center;font-family:inherit;color:#1c1c1e;-webkit-appearance:none;appearance:none}
.calc-v6-input:focus,.calc-v6-select:focus{outline:none;border-color:var(--primary);background:#fff}
.calc-date-row{display:flex;gap:6px}
.calc-v6-btn{width:100%;padding:11px;background:var(--primary);color:#fff;border:none;border-radius:10px;font-size:16px;font-weight:700;cursor:pointer}
.calc-result-box{margin-top:12px;padding:10px;background:#fafafa;border-radius:12px;border:1px solid #e5e5ea;display:none}
.calc-result-summary{display:grid;grid-template-columns:1fr 1fr;gap:6px;font-size:12px}
.calc-res-item{background:#fff;padding:6px;border-radius:8px;border:1px solid #efeff4;color:#636366}
.calc-res-item b{display:block;color:var(--primary);font-size:14px;margin-top:1px}
.calc-res-item.hl{border:none;background:#f4f7f9}
.mdrt-status-box{margin-top:10px;padding:12px;border-radius:10px;text-align:center;font-weight:800;font-size:17px;animation:breathe 2.5s infinite ease-in-out}
@keyframes breathe{0%,100%{transform:scale(1);box-shadow:0 2px 10px rgba(0,0,0,.03)}50%{transform:scale(1.02);box-shadow:0 5px 20px rgba(0,0,0,.08)}}
.mdrt-ok{background:#e3f9e5;color:#155724}.mdrt-fail{background:#fff2f2;color:#721c24}
.calc-encourage{font-size:12px;font-style:italic;margin-top:6px;color:#8e8e93;text-align:center}
.sim-section{margin-top:12px;border-top:1px solid #eee;padding-top:8px}
.sim-grid{display:flex;gap:6px;margin-top:6px}
.sim-card{flex:1;padding:8px;background:#fff;border:1px solid #eee;border-radius:8px;text-align:center}
.sim-card h4{margin:0;font-size:11px;color:#8e8e93}.sim-val{font-size:15px;font-weight:700;color:var(--primary)}
.calc-table-wrap{overflow-x:auto;margin-top:10px;border-radius:8px;border:1px solid #e5e5ea}
.calc-table{width:100%;border-collapse:collapse;font-size:11px;background:#fff}
.calc-table th,.calc-table td{border:1px solid #e5e5ea;padding:7px 4px;text-align:center}
.calc-table th{background:#f2f2f7;color:#636366}
.tbl-ok{background:#e8f5e9;color:#2e7d32;font-weight:700}.tbl-need{background:#ffebee;color:#c62828}
/* FNA — region card style */
.fna-intro{text-align:center;padding:22px 16px 22px;background:linear-gradient(150deg,#fff5f5 0%,#fff 100%);border-radius:14px;margin-bottom:14px;border:1px solid var(--border2)}
.fna-intro-icon{width:54px;height:54px;border-radius:15px;background:linear-gradient(135deg,var(--primary) 0%,var(--primary-dark) 100%);display:inline-flex;align-items:center;justify-content:center;margin-bottom:12px;color:#fff;box-shadow:0 6px 16px rgba(var(--primary-rgb),.22)}
.fna-intro-title{font-size:17px;font-weight:800;color:var(--text);margin-bottom:6px;letter-spacing:-.3px}
.fna-intro-desc{font-size:11.5px;color:var(--text3);line-height:1.55;max-width:280px;margin:0 auto}
.fna-region-lbl{font-size:10px;font-weight:700;color:var(--text3);text-transform:uppercase;letter-spacing:.7px;margin-bottom:8px;padding-left:2px}
.fna-region-list{display:flex;flex-direction:column;gap:10px;margin-bottom:16px}
.fna-region-card{display:flex;align-items:center;gap:13px;padding:14px 14px;background:var(--card);border:1px solid var(--border2);border-radius:14px;text-decoration:none;color:var(--text);cursor:pointer;transition:transform .15s ease,box-shadow .15s ease;box-shadow:var(--shadow-sm);position:relative;overflow:hidden}
.fna-region-card:active{transform:scale(.98);box-shadow:none;background:#fafafa}
.fna-region-flag{font-size:32px;line-height:0;flex-shrink:0;margin-left:4px;display:inline-flex;align-items:center}
.fna-region-flag svg{width:38px;height:auto;border-radius:5px}
.fna-region-info{flex:1;min-width:0}
.fna-region-name{font-size:15px;font-weight:800;color:var(--text);margin-bottom:2px;letter-spacing:-.1px;display:flex;align-items:center;gap:6px}
.fna-region-new{font-size:8.5px;font-weight:800;background:linear-gradient(135deg,#FFD600,#FF8800);color:#5d3a00;padding:2px 6px;border-radius:4px;letter-spacing:.5px;line-height:1}
.fna-region-sub{font-size:11px;color:var(--text3);line-height:1.35}
.fna-region-arrow{flex-shrink:0;color:var(--text3);display:flex;align-items:center}
.fna-tip{font-size:11px;color:#a37000;text-align:center;line-height:1.55;padding:10px 14px;background:#fff9ea;border:1px solid #f0e3b8;border-radius:10px;display:flex;align-items:center;gap:7px;justify-content:center}
.fna-tip svg{flex-shrink:0;color:#d49b00}
/* IRR Calculator — result cards */
.irr-result-box{display:none;margin-top:14px}
.irr-result-box.show{display:block;animation:irrFadeIn .35s ease both}
@keyframes irrFadeIn{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}
.irr-result-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-bottom:12px}
.irr-result-card{padding:12px 10px;border-radius:12px;text-align:center;position:relative;overflow:hidden}
.irr-card-compound{background:linear-gradient(135deg,var(--primary) 0%,var(--primary-dark) 100%);color:#fff;box-shadow:0 4px 12px rgba(var(--primary-rgb),.22)}
.irr-card-simple{background:linear-gradient(135deg,#3a4fb8 0%,#27357a 100%);color:#fff;box-shadow:0 4px 12px rgba(58,79,184,.22)}
.irr-label{font-size:10px;font-weight:700;letter-spacing:.5px;opacity:.9;margin-bottom:4px;text-transform:uppercase}
.irr-value{font-size:24px;font-weight:800;line-height:1;letter-spacing:-.5px;margin-bottom:3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;padding:0 2px}
.irr-sub{font-size:9.5px;opacity:.75;line-height:1.3}
.irr-summary{background:var(--card);border:1px solid var(--border2);border-radius:12px;padding:11px 13px;margin-bottom:10px}
.irr-summary-row{display:flex;justify-content:space-between;align-items:center;padding:5px 0;font-size:12px}
.irr-summary-row + .irr-summary-row{border-top:1px solid var(--border2)}
.irr-summary-row span:first-child{color:var(--text3);font-weight:500}
.irr-summary-row span:last-child{font-weight:700;color:var(--text);letter-spacing:-.1px}
.irr-summary-row.profit-pos span:last-child{color:#1B6B3A}
.irr-summary-row.profit-neg span:last-child{color:var(--primary)}
.irr-tip{font-size:10.5px;color:#8a5a00;background:#fff9ea;border:1px solid #f0e3b8;border-radius:10px;padding:9px 12px;line-height:1.5;display:flex;gap:7px;align-items:flex-start}
.irr-tip svg{flex-shrink:0;color:#d49b00;margin-top:1px}
.irr-error{padding:13px 14px;text-align:left;color:var(--primary);font-size:12px;background:#fef2f2;border:1px solid var(--primary-soft2);border-radius:10px;display:flex;align-items:center;gap:8px;line-height:1.4}
.irr-error svg{flex-shrink:0;color:var(--primary)}
/* AI Tips */
.aitip-featured{background:var(--card);border-radius:13px;border:1px solid var(--border2);margin-bottom:10px;overflow:hidden}
.aitip-feat-top{background:linear-gradient(135deg,var(--primary) 0%,var(--primary-dark) 100%);padding:13px 14px 11px}
.aitip-feat-label{font-size:10px;font-weight:600;color:rgba(255,255,255,.7);text-transform:uppercase;letter-spacing:.5px;margin-bottom:4px}
.aitip-feat-title{font-size:15px;font-weight:700;color:#fff;line-height:1.35;margin-bottom:7px}
.aitip-feat-tag{display:inline-block;font-size:10px;font-weight:600;padding:2px 8px;border-radius:5px;background:rgba(255,255,255,.18);color:#fff}
.aitip-feat-body{padding:11px 14px 12px}
.aitip-feat-text{font-size:12px;color:var(--text2);line-height:1.6;margin-bottom:9px}
.aitip-small-dot{width:6px;height:6px;border-radius:50%;background:var(--primary);flex-shrink:0}
.aitip-small-tag{font-size:10px;font-weight:600;padding:2px 7px;border-radius:5px;background:var(--primary-soft);color:var(--primary-dark);flex-shrink:0;white-space:nowrap}
.aitip-prompt{background:var(--bg);border:1px solid var(--border);border-radius:9px;padding:10px 12px}
.aitip-prompt-label{font-size:9px;font-weight:700;color:var(--text3);text-transform:uppercase;letter-spacing:.5px;margin-bottom:5px}
.aitip-prompt-text{font-size:11px;color:var(--text);line-height:1.5;margin-bottom:7px;font-family:monospace;white-space:pre-wrap;word-break:break-word}
.aitip-copy{width:100%;padding:7px;background:var(--primary);color:#fff;border:none;border-radius:7px;font-size:12px;font-weight:600;cursor:pointer}
.aitip-copy.copied{background:#2e7d32}
.ai-filter-tag{flex-shrink:0;padding:4px 10px;border-radius:14px;font-size:11px;font-weight:600;cursor:pointer;border:1px solid var(--border);background:var(--bg);color:var(--text2)}
.ai-filter-tag.active{background:var(--primary);color:#fff;border-color:var(--primary)}
.aitip-small-expanded{background:var(--card);border-radius:10px;border:1px solid var(--border2);margin-bottom:6px;overflow:hidden}
.aitip-small-expanded-head{display:flex;align-items:center;gap:10px;padding:9px 12px;cursor:pointer}
.aitip-small-expanded-body{padding:0 12px 10px;border-top:1px solid var(--border2)}
.aitip-small-expanded-text{font-size:12px;color:var(--text2);line-height:1.55;padding-top:8px;margin-bottom:7px}
/* Settings profile header */
.set-profile{display:flex;align-items:center;gap:14px;background:var(--card);border-radius:14px;margin:14px;padding:15px 16px;border:1px solid var(--border2);box-shadow:var(--shadow-sm)}
.set-profile-av{width:52px;height:52px;border-radius:50%;background:linear-gradient(135deg,var(--primary),var(--primary-dark));color:#fff;display:flex;align-items:center;justify-content:center;font-size:18px;font-weight:800;flex-shrink:0;box-shadow:0 3px 10px rgba(var(--primary-rgb),.28);letter-spacing:.5px}
.set-profile-info{flex:1;min-width:0}
.set-profile-name{font-size:17px;font-weight:800;color:var(--text);letter-spacing:-.3px;line-height:1.2;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.set-profile-email{font-size:11.5px;color:var(--text3);margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.set-profile-badge{display:inline-flex;align-items:center;gap:3px;margin-top:7px;font-size:9.5px;font-weight:800;color:#fff;background:linear-gradient(135deg,#1c1c1e,#3a3a3c);padding:3px 9px;border-radius:999px;letter-spacing:.4px}
.set-profile-badge svg{flex-shrink:0}
/* ── 設定頁改版（工作台方向）── */
.st-body{padding:0!important;background:#f6f6f8}
/* 設定頁方案 C（2026-09-30，已揀）：白色頁首（24px 標題）＋白色個人資料卡；分組清單「偏好設定／支援」；地區由大卡變清單第一行；
   登出變白底行＋確認（confirmLogout）；外部連結用「↗」；推送通知副標＋開唔到講原因（_syncPushToggle）。
   舊版（紅色漸變 hero、地區大卡）*/
.st-hero{padding:18px 16px 0;color:#1c1c1e}
.st-hero-top{display:flex;align-items:center;justify-content:space-between}
.st-hero-title{font-size:24px;font-weight:800;color:#1c1c1e;letter-spacing:-.3px}
.st-hero-close{width:36px;height:36px;border-radius:50%;background:#e9e9ee;border:none;display:flex;align-items:center;justify-content:center;color:#3a3a3c;cursor:pointer;-webkit-tap-highlight-color:transparent}   /* 36 × 1.22 ≈ 44pt */
.st-hero-close:active{transform:scale(.92)}
.st-hero-user{display:flex;align-items:center;gap:13px;margin-top:14px;background:#fff;border:1px solid #ececf0;border-radius:16px;padding:14px}
.st-avatar{width:48px;height:48px;border-radius:50%;background:var(--primary);border:2px solid var(--primary-soft);display:flex;align-items:center;justify-content:center;font-size:16px;font-weight:800;color:#fff;flex-shrink:0;letter-spacing:.5px}
.st-user-info{flex:1;min-width:0}
.st-user-name{font-size:16px;font-weight:800;color:#1c1c1e;letter-spacing:-.3px;line-height:1.2;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.st-user-email{font-size:10.5px;color:#6e6e73;margin-top:1px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.st-user-tags{display:flex;flex-wrap:wrap;gap:5px;margin-top:7px}
.st-user-tags[hidden]{display:none}   /* display:flex 會蓋過 hidden */
.st-tag{font-size:10.5px;color:#48484a;background:#f2f2f6;border-radius:6px;padding:3px 7px;font-variant-numeric:tabular-nums;white-space:nowrap}
.st-tag b{font-weight:700;color:#1c1c1e}
.st-admin-badge{display:inline-flex;align-items:center;gap:3px;margin-top:7px;background:var(--primary-soft);color:var(--primary);font-size:9.5px;font-weight:800;padding:3px 9px;border-radius:999px}
.st-content{padding:4px 14px 0;position:relative}
.st-sec{font-size:11px;font-weight:700;color:#6e6e73;letter-spacing:.02em;margin:16px 4px 6px}
.st-admin-card{display:flex;align-items:center;gap:12px;background:#1c1c1e;border-radius:16px;padding:14px;margin-top:14px;cursor:pointer}
.st-admin-card:active{transform:scale(.98)}
.st-admin-ic{width:36px;height:36px;border-radius:10px;background:rgba(255,255,255,.14);display:flex;align-items:center;justify-content:center;flex-shrink:0}
.st-admin-txt{flex:1;min-width:0}
.st-admin-title{font-size:12.5px;font-weight:800;color:#fff}
.st-admin-sub{font-size:10px;color:rgba(255,255,255,.6);margin-top:1px}
.st-admin-chev{color:rgba(255,255,255,.5);display:flex;flex-shrink:0}
.st-list{background:#fff;border-radius:16px;border:1px solid #ececf0;overflow:hidden}
.st-row{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:9px 14px;border-bottom:1px solid #f4f4f6;cursor:pointer}
.st-row:last-child{border-bottom:none}
.st-row:active{background:#f2f2f7}
.st-row-left{display:flex;align-items:center;gap:11px;min-width:0}
.st-row-left>div:last-child{min-width:0}
.st-ic{width:30px;height:30px;border-radius:9px;display:flex;align-items:center;justify-content:center;flex-shrink:0}
.st-row-lbl{font-size:12.5px;font-weight:600;color:#1c1c1e}
.st-row-sub{font-size:10px;color:#8e8e93;margin-top:1px}
.st-row-sub.warn{color:#955800;line-height:1.35}
.st-row.st-sub{padding-left:55px;cursor:default}
.st-row.st-sub:active{background:none}
.st-sub .st-row-lbl{font-weight:500;font-size:12px}
.st-sub.off{opacity:.45}
html:not(.ins-on) .ins-only{display:none!important}
/* App 內意見反映（2026-10-01）：#fbSheet 放喺而家打開緊嗰頁入面；內容用返雜險 sheet 樣式 */
#fbSheet{position:absolute;inset:0;z-index:400;background:rgba(0,0,0,.42);display:none;align-items:flex-end}
#fbSheet.show{display:flex}
html.wide #fbSheet{align-items:center;justify-content:center;padding:24px}
html.wide #fbSheet .ins-sheet{max-width:520px;border-radius:18px;max-height:100%}
.fb-add{display:flex;align-items:center;justify-content:center;gap:7px;height:60px;border:1.5px dashed #d8d8de;border-radius:12px;color:var(--text2);font-size:12.5px;font-weight:600;cursor:pointer;background:#fafafc}
.fb-add svg{width:18px;height:18px}
.fb-shot{position:relative;align-self:flex-start;margin-top:4px}
.fb-shot img{display:block;max-width:150px;max-height:190px;border-radius:10px;border:1px solid #e5e5ea}
.fb-shot button{position:absolute;top:-8px;right:-8px;width:24px;height:24px;border-radius:50%;border:2px solid #fff;background:#1c1c1e;color:#fff;display:grid;place-items:center;cursor:pointer;padding:0}
.fb-shot button svg{width:11px;height:11px}
.fb-note{margin:0;font-size:11px;color:#8e8e93;line-height:1.5}
.fb-sheet .ins-sh-x svg{width:20px;height:20px}
.st-row-val{display:flex;align-items:center;gap:7px;flex-shrink:0}
.st-region-flag{display:inline-flex;align-items:center;width:24px;height:16px;flex-shrink:0}
.st-region-flag svg{display:block;width:100%;height:100%;border-radius:2.5px}
.st-region-name{font-size:12.5px;font-weight:600;color:#6e6e73}
.st-chev{color:#d1d1d6;display:flex;flex-shrink:0}
.st-chev.ext{color:#aeaeb2}
.st-toggle{position:relative;width:42px;height:25px;flex-shrink:0;cursor:pointer;display:inline-block}
.st-toggle input{opacity:0;width:0;height:0;position:absolute}
.st-toggle-sl{position:absolute;inset:0;background:#d1d1d6;border-radius:999px;transition:background .2s}
.st-toggle-sl::before{content:"";position:absolute;top:3px;left:3px;width:19px;height:19px;border-radius:50%;background:#fff;transition:transform .2s;box-shadow:0 1px 3px rgba(0,0,0,.2)}
.st-toggle input:checked + .st-toggle-sl{background:var(--primary)}
.st-toggle input:checked + .st-toggle-sl::before{transform:translateX(17px)}
.st-toggle input:disabled + .st-toggle-sl{opacity:.45}
.st-toggle:has(input:disabled){cursor:default}
.st-out{margin-top:16px}
.st-logout-row{width:100%;justify-content:center;border:0;background:#fff;font:inherit;font-size:12.5px;font-weight:700;color:var(--primary);padding:14px}
.st-footer{text-align:center;padding:22px 16px 28px;font-size:9.5px;color:#8e8e93;line-height:1.5}
/* iPad：.st-body 已限闊 600（iPad 優化 12），.st-content 唔再加左右 14px → 個人資料卡同下面卡片對齊 */
html.wide #settingsPage .st-content{padding-left:0;padding-right:0}
/* Settings */
.settings-section{margin-bottom:18px}
.settings-section-title{font-size:11px;font-weight:600;color:var(--text3);text-transform:uppercase;letter-spacing:.5px;margin-bottom:7px;padding:0 2px}
.settings-card{background:var(--card);border-radius:12px;overflow:hidden;border:1px solid var(--border2)}
.settings-row{display:flex;align-items:center;justify-content:space-between;padding:12px 14px;border-bottom:1px solid var(--border2);cursor:pointer}
.settings-row:last-child{border-bottom:none}
.settings-row-left{display:flex;align-items:center;gap:10px}
.settings-row-icon{width:28px;height:28px;border-radius:7px;display:flex;align-items:center;justify-content:center;flex-shrink:0}
.settings-row-label{font-size:14px;color:var(--text);font-weight:500}.settings-row-sub{font-size:11px;color:var(--text3);margin-top:1px}
.settings-chevron{color:var(--text3);font-size:16px}
.feedback-box{background:var(--card);border-radius:12px;padding:14px;border:1px solid var(--border2)}
.feedback-box h3{font-size:13px;font-weight:600;color:var(--text);margin-bottom:5px}
.feedback-box p{font-size:12px;color:var(--text3);margin-bottom:10px}
.fb-submit{width:100%;padding:10px;background:var(--primary);color:#fff;border:none;border-radius:9px;font-size:13px;font-weight:600;cursor:pointer}
.logout-btn{width:100%;padding:13px;background:var(--card);border:1px solid var(--primary-soft);border-radius:12px;color:var(--primary);font-size:14px;font-weight:600;cursor:pointer;margin-top:8px}
/* Confetti */
#confetti-canvas{position:fixed;top:0;left:0;width:100%;height:100%;pointer-events:none;z-index:9999;display:none}
/* Animations */
@keyframes fadeUp{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}
.fade-s1{animation:fadeUp .4s ease both}
.fade-s2{animation:fadeUp .4s .08s ease both}
.fade-s3{animation:fadeUp .4s .16s ease both}
.fade-s4{animation:fadeUp .4s .24s ease both}
.fade-s5{animation:fadeUp .4s .32s ease both}
@keyframes popIn{0%{transform:scale(.88);opacity:0}60%{transform:scale(1.04)}100%{transform:scale(1);opacity:1}}
.qcard-pop{animation:popIn .32s ease both}
.qcard-pop:nth-child(1){animation-delay:.12s}
.qcard-pop:nth-child(2){animation-delay:.18s}
.qcard-pop:nth-child(3){animation-delay:.24s}
.qcard-pop:nth-child(4){animation-delay:.30s}
/* ── Overlay tool page entry animation ── */
.overlay-page.show .overlay-body{animation:ovBodyIn .42s cubic-bezier(.32,.72,.32,1) .14s both}
@keyframes ovBodyIn{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:translateY(0)}}
/* AI Tips 冇 .overlay-body wrapper，直接 animate 兩個 inner 區塊 */
#toolPage-ai.show > div:not(.overlay-hdr){animation:ovBodyIn .42s cubic-bezier(.32,.72,.32,1) .14s both}
/* Tools listing: stagger pop the tool entry cards instead */
#toolsPage.show .overlay-body{animation:none}
#toolsPage.show .tool-entry-card{animation:popIn .35s cubic-bezier(.34,1.56,.64,1) both;opacity:0}
#toolsPage.show .tool-entry-card:nth-child(1){animation-delay:.12s}
#toolsPage.show .tool-entry-card:nth-child(2){animation-delay:.19s}
#toolsPage.show .tool-entry-card:nth-child(3){animation-delay:.26s}
#toolsPage.show .tool-entry-card:nth-child(4){animation-delay:.33s}
#toolsPage.show .tool-entry-card:nth-child(5){animation-delay:.40s}
/* ── CALENDAR & GLOBAL CARDS OPTIMIZATION ── */

/* 日曆網格：圓點與今日樣式 */
.cal-day { border: none !important; border-radius: 8px !important; position: relative; display: flex; flex-direction: column; align-items: center; justify-content: center; min-height: 36px; }
.cal-day.today { background: var(--primary) !important; color: #fff !important; font-weight: 700; }
.cal-day.selected { background: rgba(var(--primary-rgb), 0.14) !important; outline: none !important; }
.cal-dow.wknd { color: var(--text3); }
.cal-day.wknd:not(.today) { color: var(--text3); }
.cal-dot-row { display: flex; align-items: center; gap: 3px; justify-content: center; margin-top: 1px; height: 6px; width: 100%; line-height: 0; }
.cal-dot { display: inline-block; width: 5px; height: 5px; aspect-ratio: 1; border-radius: 50%; flex-shrink: 0; box-sizing: border-box; vertical-align: middle; }
.cal-day.today .cal-dot { background: #fff !important; }

/* 日期 Highlight 動畫 */
@keyframes date-glow { 0%, 100% { background-color: transparent; } 50% { background-color: var(--primary-soft); } }
.highlight-active { animation: date-glow 1.8s ease-in-out; z-index: 10; border-radius: 8px; }
/* 月份切換 slide 動畫 */
@keyframes cal-slide-l{from{transform:translateX(22px);opacity:0}to{transform:translateX(0);opacity:1}}
@keyframes cal-slide-r{from{transform:translateX(-22px);opacity:0}to{transform:translateX(0);opacity:1}}
.cal-grid.anim-l{animation:cal-slide-l .18s ease}
.cal-grid.anim-r{animation:cal-slide-r .18s ease}
/* Long-press day sheet */
.cal-lp-overlay{position:fixed;inset:0;z-index:200;background:rgba(0,0,0,0);pointer-events:none;transition:background .2s}
.cal-lp-overlay.show{background:rgba(0,0,0,.38);pointer-events:all}
.cal-lp-sheet{position:fixed;bottom:0;left:0;right:0;background:var(--card);border-radius:16px 16px 0 0;z-index:201;padding-bottom:calc(14px + var(--safe-bottom,0px));box-shadow:0 -4px 24px rgba(0,0,0,.12);transform:translateY(100%);transition:transform .22s cubic-bezier(.4,0,.2,1)}
.cal-lp-sheet.show{transform:translateY(0)}
.cal-lp-sheet:not(.show){box-shadow:none}   /* iPad 優化 2（2026-09-30）：收起咗仲漏陰影，iPad 每頁底部見到一團灰 */
.cal-lp-handle{width:36px;height:4px;background:var(--border2);border-radius:2px;margin:8px auto 4px;display:block}
.cal-lp-hdr{padding:6px 16px 10px;border-bottom:1px solid var(--border2);display:flex;align-items:center;gap:8px}
.cal-lp-date{font-size:13px;font-weight:700;color:var(--text);flex:1}
.cal-lp-items{max-height:220px;overflow-y:auto}
.cal-lp-item{padding:8px 16px;border-bottom:1px solid var(--border2)}
.cal-lp-item:last-of-type{border-bottom:none}
.cal-lp-time{font-size:10px;color:var(--text3);font-weight:600}
.cal-lp-evtitle{font-size:12px;color:var(--text);margin-top:2px;font-weight:500}
.cal-lp-empty{padding:22px 16px;text-align:center;font-size:12px;color:var(--text3)}
.cal-lp-close{display:block;width:calc(100% - 32px);margin:10px 16px 4px;padding:10px;background:var(--bg);border:1px solid var(--border2);border-radius:10px;font-size:13px;font-weight:600;color:var(--text2);cursor:pointer;text-align:center}
/* ── Currency Exchange ── */
.fx-card-wrap{position:relative;margin-bottom:10px}
.fx-card{background:var(--card);border-radius:var(--radius-lg);border:1px solid var(--border2);overflow:hidden;box-shadow:var(--shadow-sm)}
.fx-row{display:flex;align-items:center;gap:12px;padding:16px}
.fx-row-to{background:rgba(var(--primary-rgb),.04)}
.fx-divider{height:1px;background:var(--border2)}
.fx-chip{display:inline-flex;align-items:center;gap:5px;background:rgba(0,0,0,.05);border:none;border-radius:10px;padding:6px 8px 6px 11px;cursor:pointer;flex-shrink:0;transition:background .12s}
.fx-chip:active{background:rgba(0,0,0,.09)}
.fx-chip-code{font-size:16px;font-weight:800;color:var(--text);letter-spacing:.2px}
.fx-chip-name{font-size:10px;color:var(--text3);font-weight:500}
.fx-amt{flex:1;background:none;border:none;outline:none;font-size:28px;font-weight:700;color:var(--text);text-align:right;min-width:0;width:0;-moz-appearance:textfield}
.fx-amt::-webkit-inner-spin-button,.fx-amt::-webkit-outer-spin-button{-webkit-appearance:none}
.fx-result{flex:1;font-size:28px;font-weight:700;color:var(--primary);text-align:right;line-height:1.2;min-width:0;overflow:hidden;white-space:nowrap}
.fx-swap-fab{position:absolute;right:14px;top:50%;transform:translateY(-50%);width:38px;height:38px;border-radius:50%;background:var(--primary);border:3px solid var(--bg);display:flex;align-items:center;justify-content:center;cursor:pointer;z-index:3;transition:transform .26s cubic-bezier(.4,0,.2,1);box-shadow:0 2px 10px rgba(var(--primary-rgb),.3)}
.fx-swap-fab.spinning{transform:translateY(-50%) rotate(180deg)}
.fx-swap-fab:active{filter:brightness(.88)}
.fx-rate-bar{display:flex;align-items:center;justify-content:center;flex-wrap:wrap;gap:4px;padding:8px 4px 14px;font-size:11px;color:var(--text3);text-align:center}
.fx-rate-sep{color:var(--border2)}
.fx-pills-lbl{font-size:10px;font-weight:700;color:var(--text3);text-transform:uppercase;letter-spacing:.5px;margin-bottom:8px}
/* 匯率來源分段切換（公司／市場）—— 模式永遠喺畫面頂，避免報錯價 */
.fx-seg{display:flex;background:#ececed;border-radius:11px;padding:3px;margin-bottom:12px}
.fx-seg-btn{flex:1;text-align:center;font-size:12.5px;font-weight:700;padding:7px 4px;border-radius:9px;color:var(--text2);background:none;border:none;font-family:inherit;cursor:pointer;-webkit-tap-highlight-color:transparent;transition:background .16s,color .16s}
.fx-seg-btn.on{background:#fff;color:var(--text);box-shadow:0 1px 3px rgba(0,0,0,.12)}
.fx-pill-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:6px}
.fx-pill{padding:9px 4px 8px;border-radius:10px;border:1px solid var(--border2);background:var(--card);cursor:pointer;text-align:center;transition:all .12s}
.fx-pill-code{font-size:12px;font-weight:700;color:var(--text);line-height:1.3}
.fx-pill-name{font-size:9px;color:var(--text3);font-weight:500;margin-top:1px}
.fx-pill.active{background:var(--primary);border-color:var(--primary);box-shadow:0 2px 6px rgba(var(--primary-rgb),.22)}
.fx-pill.active .fx-pill-code{color:#fff}
.fx-pill.active .fx-pill-name{color:rgba(255,255,255,.75)}
.fx-pill:active{transform:scale(.93)}
.fx-refresh-ico{background:none;border:none;color:var(--text3);cursor:pointer;padding:4px;display:flex;align-items:center;justify-content:center;transition:opacity .2s}
/* ── 公司保費匯率面板 ── */
.co-fx{margin-top:18px;background:var(--card);border:1px solid var(--border2);border-radius:14px;box-shadow:var(--shadow-sm);overflow:hidden}
.co-fx-hdr{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:12px 13px 10px}
.co-fx-title{font-size:13px;font-weight:800;color:var(--text);display:flex;align-items:center;gap:6px}
.co-fx-dot{width:6px;height:6px;border-radius:50%;background:var(--primary);flex-shrink:0}
.co-fx-sub{font-size:10.5px;color:var(--text3);margin-top:2px}
.co-fx-refresh{background:none;border:none;color:var(--text3);cursor:pointer;padding:4px;display:flex;transition:opacity .2s;-webkit-tap-highlight-color:transparent}
.co-fx-rows{border-top:1px solid var(--border2)}
.co-fx-row{display:flex;align-items:center;justify-content:space-between;gap:10px;width:100%;background:none;border:none;border-bottom:1px solid var(--border2);padding:10px 13px;cursor:pointer;font-family:inherit;text-align:left;-webkit-tap-highlight-color:transparent;transition:background .12s}
.co-fx-row:last-child{border-bottom:none}
.co-fx-row:active{background:rgba(0,0,0,.04)}
.co-fx-row.on{background:rgba(var(--primary-rgb),.06)}
.co-fx-ccy{display:flex;align-items:baseline;gap:6px;min-width:0}
.co-fx-ccy b{font-size:13px;font-weight:800;color:var(--text);letter-spacing:.2px}
.co-fx-ccy span{font-size:10.5px;color:var(--text3)}
.co-fx-val{font-size:14px;font-weight:700;color:var(--primary);letter-spacing:.2px;flex-shrink:0}
.co-fx-row.on .co-fx-val::after{content:" \2713";font-size:11px}
.co-fx-msg{padding:14px 13px;font-size:11.5px;color:var(--text3);text-align:center}
.co-fx-note{padding:9px 13px 11px;font-size:9.5px;color:var(--text3);line-height:1.5;border-top:1px solid var(--border2);background:var(--card2)}

.agenda-card {
  background: var(--card); 
  margin: 0 10px 6px; 
  padding: 6px 12px; /* 縮短上下 padding (Reduced from 12px to 6px) */
  border-radius: 12px; 
  display: flex; 
  align-items: center; 
  gap: 8px; /* 縮短間距讓內容向左移 */
  border: 1px solid var(--border2);
  box-shadow: 0 1px 3px rgba(0,0,0,0.02);
}

.agenda-time { 
  font-size: 10px; 
  font-weight: 700; 
  color: var(--text2); 
  width: 48px; /* 縮窄時間寬度 (From 55px to 48px)，讓 Title 向左移 */
  flex-shrink: 0;
  line-height: 1.2;
}

.agenda-info { 
  flex: 1; 
  text-align: left; 
  overflow: hidden; 
}

.agenda-title { 
  font-size: 12px; 
  font-weight: 600; 
  color: var(--text); 
  line-height: 1.4;
  white-space: normal !important; 
  word-break: break-all; 
}

/* 主頁：最近活動卡片縮短 & 日期圖標優化 */
.upcoming-card { padding: 6px 11px !important; margin-bottom: 5px !important; border-radius: 10px !important; gap: 10px !important; align-items: stretch !important; }
.uc-date {
  padding: 3px 5px !important; min-width: 30px !important;
  border-radius: 5px !important;
  display: flex !important; flex-direction: column !important;
  justify-content: center !important; align-items: center !important;
}
.uc-month { font-size: 8.5px !important; letter-spacing: .4px !important; line-height: 1 !important; }
.uc-day { font-size: 13px !important; line-height: 1 !important; margin-top: 1px !important; }
.uc-title { font-size: 11.5px !important; font-weight: 700 !important; line-height: 1.25 !important; }
.uc-type { font-size: 9.5px !important; margin-top: 3px !important; line-height: 1 !important; }
.uc-type svg { width: 10px !important; height: 10px !important; }
.uc-type > span { line-height: 1 !important; display: inline-block !important; }
.uc-arrow { align-self: center !important; }
/* Center title+type group within content column */
.upcoming-card > div[style*="overflow"] {
  display: flex !important; flex-direction: column !important;
  justify-content: center !important;
}

/* 報名中心 Tab：縮細卡片與按鈕 */
.ev-list .card { border-radius: 10px !important; margin-bottom: 8px !important; }
.ev-list .card-body { padding: 8px 12px !important; }
.ev-list .card-title { font-size: 13px !important; margin-bottom: 4px !important; line-height: 1.3; }
.ev-list .meta-row { margin-bottom: 2px !important; gap: 4px !important; }
.ev-list .meta-label, .ev-list .meta-val, .ev-list .meta-note { font-size: 11px !important; }
.ev-list .btn-signup, .ev-list .btn-signup-dis { padding: 6px !important; font-size: 12px !important; border-radius: 6px !important; }
.ev-list .card-foot { padding: 6px 12px !important; }

.cal-status-bar { padding: 2px 4px 8px; font-size: 11px; color: var(--text3); display: flex; justify-content: space-between; align-items: center; }
.agenda-date-header { padding: 8px 16px 2px; font-size: 11px; font-weight: 700; color: var(--text3); text-transform: uppercase; }
.btn-view-all { color: var(--primary); font-weight: 700; cursor: pointer; background: none; border: none; font-size: 11px; }
/* ── 5a 本月概覽 / agenda 卡（色條＋大日期 badge＋緊湊）── */
.ov-card{display:flex;align-items:center;gap:10px;background:var(--card);border:1px solid var(--border2);border-radius:11px;padding:8px 10px;margin:0 0 6px;box-shadow:0 1px 3px rgba(0,0,0,.045);cursor:pointer}
.ov-badge{width:36px;flex:0 0 36px;border-radius:9px;display:flex;flex-direction:column;align-items:center;justify-content:center;align-self:center;padding:5px 0;background:var(--border2)}
.ov-badge.today{background:var(--primary)}
.ov-num{font-size:16px;font-weight:800;line-height:1;letter-spacing:-.5px;color:var(--text)}
.ov-badge.today .ov-num{color:#fff}
.ov-wd{font-size:9.5px;font-weight:700;margin-top:2px;line-height:1;color:var(--text3)}
.ov-badge.today .ov-wd{color:rgba(255,255,255,.85)}
.ov-card.multi .ov-badge{align-self:flex-start}
.ov-items{flex:1;min-width:0;display:flex;flex-direction:column;gap:7px}
.ov-item{display:flex;gap:8px}
.ov-bar{width:3px;border-radius:2px;flex-shrink:0;align-self:stretch}
.ov-body{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}
.ov-title{font-size:11.5px;font-weight:700;line-height:1.3;color:var(--text)}
.ov-meta{display:flex;align-items:center;gap:6px}
.ov-time{font-size:10.5px;font-weight:700;color:var(--text2);letter-spacing:-.1px}
.ov-dot{width:3px;height:3px;border-radius:50%;background:#c7c7cc;flex-shrink:0}
.ov-cat{font-size:10px;font-weight:700;color:var(--text2)}
.ov-card:active{transform:scale(.99)}
/* ── 3D 按壓與點擊效果 ── */
button, .quick-card, .agenda-card, .tool-entry-card, .settings-row, .upcoming-card,
.nav-item, .tab, .ntab, .n-toggle, .news-item, .ann-card {
  transition: transform 0.1s ease, background-color 0.15s ease !important;
  touch-action: manipulation; /* 消除 Android 300ms tap delay */
}
/* 縮放：所有可點擊元素 */
button:active, .quick-card:active, .agenda-card:active, .tool-entry-card:active, .settings-row:active, .upcoming-card:active {
  transform: scale(0.96) !important;
}
/* 灰底：只限無色背景元素（唔好覆蓋有色 CTA 按鈕） */
.quick-card:active, .agenda-card:active, .settings-row:active, .upcoming-card:active {
  background-color: #f2f2f7 !important;
}

/* ── 設定頁面 UI 優化 ── */
.settings-section-title { font-size: 11px; font-weight: 600; color: var(--text3); text-transform: uppercase; padding: 15px 16px 8px; letter-spacing: 0.5px; }
.settings-group { background: #fff; border-radius: 12px; margin: 0 14px 10px; overflow: hidden; border: 1px solid var(--border2); }
.settings-row { 
  display: flex; align-items: center; justify-content: space-between; 
  padding: 12px 16px; border-bottom: 1px solid var(--border2); background: #fff;
  cursor: pointer;
}
.settings-row:last-child { border-bottom: none; }
.s-label { font-size: 14px; font-weight: 500; color: var(--text); }
.s-sub { font-size: 11px; color: var(--text3); margin-top: 1px; }
.s-icon { width: 30px; height: 30px; border-radius: 8px; display: flex; align-items: center; justify-content: center; }

/* ── 意見反映 區塊 ── */
.feedback-card { background: linear-gradient(135deg, #fff 0%, #fff5f5 100%); border: 1px solid var(--primary-soft); margin: 14px; padding: 16px; border-radius: 16px; }
.fb-btn { width: 100%; padding: 10px; background: var(--primary); color: #fff; border: none; border-radius: 10px; font-size: 13px; font-weight: 700; cursor: pointer; margin-top: 10px; }

/* 今日日期被點擊時保持紅色，無任何 outline */
.cal-day.today.selected {
  background: var(--primary) !important;
  color: #fff !important;
  outline: none !important;
}

/* --- 設定頁面 UI 精細化 --- */
.settings-section-title {
  font-size: 10px; /* 調細字體 */
  font-weight: 600;
  color: var(--text3);
  text-transform: uppercase;
  padding: 14px 14px 2px; /* 上留返 section 間距，下痴近 group */
  letter-spacing: 0.5px;
}
.settings-group { 
  background: #fff; 
  border-radius: 12px; 
  margin: 0 12px 8px; /* 稍微縮窄卡片寬度 */
  overflow: hidden; 
  border: 1px solid var(--border2); 
}
.settings-row {
  display: flex; align-items: center; justify-content: space-between;
  padding: 11px 12px; /* 左右收窄，icon+字向左啲 */
  border-bottom: 1px solid var(--border2); background: #fff;
  cursor: pointer; transition: background 0.2s;
}
.settings-row:active { background-color: #f2f2f7 !important; }
.settings-row:last-child { border-bottom: none; }

.s-left { display: flex; align-items: center; gap: 10px; } /* 縮短 icon 與文字距離 (From 12px to 10px) */
.s-icon { 
  width: 28px; height: 28px; /* 稍微縮小 icon 尺寸 */
  border-radius: 7px; 
  display: flex; align-items: center; justify-content: center; 
  flex-shrink: 0; 
}
.s-label { font-size: 13px; font-weight: 500; color: var(--text); } /* 調細標題字體 */
.s-chevron { color: #d1d1d6; font-size: 14px; }

/* 讓精簡模式生效的隱藏樣式 */
body.compact-mode .home-date, 
body.compact-mode .quote-row,
body.compact-mode .qc-sub { display: none !important; }
body.compact-mode .home-hero { padding: 6px 14px 8px !important; }

/* --- 徹底修復：天氣圖標樣式 --- */
.weather-svg { 
  width: 18px !important; 
  height: 18px !important; 
  stroke: #fff !important; 
  stroke-width: 2.5 !important; 
  fill: none !important; 
  display: block; 
}

/* --- Settings 列樣式（單一乾淨來源）--- */
.settings-group { margin: 0 14px 8px !important; }
.settings-row  { padding: 8px 14px !important; gap: 10px !important; }  /* 上下收窄 */
.s-left        { gap: 11px !important; }               /* icon↔字 單一間距 */
.s-icon        { width: 28px !important; height: 28px !important; border-radius: 8px !important; }
.s-icon svg    { width: 15px !important; height: 15px !important; }
.s-label       { font-size: 13px !important; }         /* 字縮細 */
@keyframes avatar-glow {
  0%, 100% { border-color: rgba(255,255,255,0.3); box-shadow: 0 0 5px rgba(255,255,255,0.1); }
  50% { border-color: rgba(255,255,255,0.8); box-shadow: 0 0 12px rgba(255,255,255,0.4); }
}

#heroAvatar {
  animation: avatar-glow 3s infinite ease-in-out;
}


/* ── ADMIN PANEL FORMS ── */
.admin-form-card {
  background: #fff; border-radius: 12px;
  margin: 0 12px 10px; padding: 14px;
  border: 1px solid var(--border2);
}
.admin-input {
  width: 100%; padding: 7px 10px;
  border: 1px solid var(--border); border-radius: 8px;
  font-size: 12.5px; font-family: inherit;
  color: var(--text); background: var(--bg);
  margin-bottom: 6px; box-sizing: border-box;
  -webkit-appearance: none;
}
.admin-input:focus { outline: none; border-color: var(--primary); background: #fff; }
.admin-textarea { min-height: 62px; resize: none; line-height: 1.45; }
.admin-form-card {padding: 12px !important;}
.admin-submit-btn {
  width: 100%; padding: 9px; background: var(--primary);
  color: #fff; border: none; border-radius: 9px;
  font-size: 13.5px; font-weight: 700; cursor: pointer; margin-top: 4px;
}
.admin-submit-btn:disabled { background: #c7c7cc; }
.admin-status { text-align: center; font-size: 12px; margin-top: 8px; min-height: 16px; }
.admin-section-hdr {
  display: flex; align-items: center; justify-content: space-between;
  padding: 12px 16px 6px; font-size: 10px; font-weight: 600;
  color: var(--text3); text-transform: uppercase; letter-spacing: 0.5px;
}
.admin-section-hdr > span:first-child {display: inline-flex; align-items: center; gap: 6px; line-height: 1}
.admin-section-hdr svg {color: var(--text3); flex-shrink: 0; vertical-align: middle; display: block}
/* ── Admin tab nav ── */
.adm-tabs {
  display: flex;
  background: #fff;
  padding: 4px;
  border-radius: 12px;
  margin: 14px 12px 4px;
  border: 1px solid var(--border2);
  gap: 4px;
  box-shadow: 0 1px 3px rgba(0,0,0,.02);
}
.adm-tab {
  flex: 1;
  padding: 10px 6px;
  border: none;
  background: transparent;
  font-size: 12.5px;
  font-weight: 700;
  color: var(--text3);
  cursor: pointer;
  border-radius: 9px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  transition: all .2s ease;
  font-family: inherit;
  letter-spacing: -.1px;
}
.adm-tab svg {flex-shrink: 0}
.adm-tab.active {
  background: var(--primary);
  color: #fff;
  box-shadow: 0 2px 8px rgba(var(--primary-rgb),.22);
}
.adm-tab:active:not(.active) {background: rgba(0,0,0,.04)}
.adm-tab-content {display: none;}
.adm-tab-content.active {display: block; animation: admTabIn .28s ease both;}
.adm-region-label{font-size:11px;font-weight:600;color:var(--text3);margin:2px 2px 7px;letter-spacing:.3px}
.adm-region-sel{display:flex;gap:6px;margin-bottom:12px}
.adm-region-btn{display:inline-flex;align-items:center;justify-content:center;gap:5px;flex:1;padding:6px 4px;border:1.5px solid var(--border2);background:var(--card);border-radius:9px;font-size:12.5px;font-weight:700;color:var(--text3);cursor:pointer;font-family:inherit;transition:all .15s}
.adm-region-btn.active{border-color:var(--primary);color:var(--primary);background:rgba(var(--primary-rgb),.06)}
.adm-region-btn:active{transform:scale(.97)}
.adm-rflag{display:inline-flex;align-items:center;width:17px;height:11.3px;line-height:0;flex-shrink:0}
.adm-rflag svg{display:block;width:100%;height:100%;border-radius:2px}
@keyframes admTabIn {from {opacity: 0; transform: translateY(6px);} to {opacity: 1; transform: translateY(0);}}
/* ── 管理工作台 console ── */
#adminPage .adm-console{flex:1;min-height:0;display:flex;flex-direction:column;background:#f6f6f8}
.adm-c-hdr{display:flex;align-items:center;gap:6px;background:#fff;padding:14px 12px 12px;border-bottom:1px solid #ececf0;flex-shrink:0}
.adm-c-back{width:30px;height:30px;display:flex;align-items:center;justify-content:center;background:none;border:none;color:#8e8e93;cursor:pointer;flex-shrink:0}
.adm-c-titles{flex:1;min-width:0}
.adm-c-title{font-size:16px;font-weight:800;color:#1c1c1e;line-height:1.15}
.adm-c-sub{font-size:10.5px;color:#8e8e93;margin-top:1px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.adm-c-close{width:30px;height:30px;display:flex;align-items:center;justify-content:center;background:none;border:none;color:#8e8e93;cursor:pointer;flex-shrink:0}
.adm-c-body{flex:1;min-height:0;overflow-y:auto;overflow-x:hidden;padding:14px 14px 22px}
.adm-view{display:none}
.adm-view.active{display:block;animation:admTabIn .28s ease both}
.adm-reach{background:linear-gradient(160deg,var(--primary),var(--primary-dark));border-radius:18px;padding:16px;color:#fff}
.adm-reach-lbl{font-size:11px;font-weight:700;color:rgba(255,255,255,.7)}
.adm-reach-num{margin-top:4px;display:flex;align-items:baseline;gap:6px}
.adm-reach-num>span:first-child{font-size:34px;font-weight:800;letter-spacing:-1px;line-height:1}
.adm-reach-unit{font-size:12px;color:rgba(255,255,255,.85)}
.adm-reach-cells{display:flex;gap:8px;margin-top:14px}
.adm-reach-cell{flex:1;background:rgba(255,255,255,.14);border-radius:10px;padding:9px 6px;text-align:center}
.adm-reach-cv{font-size:16px;font-weight:800}
.adm-reach-cl{font-size:10px;color:rgba(255,255,255,.85);margin-top:2px}
.adm-entries{display:flex;gap:10px;margin-top:12px}
.adm-entry{flex:1;background:#fff;border-radius:16px;padding:13px;border:1px solid #ececf0;cursor:pointer;transition:transform .15s}
.adm-entry:active{transform:scale(.98)}
.adm-entry-ic{width:32px;height:32px;border-radius:10px;display:flex;align-items:center;justify-content:center}
.adm-entry-t{font-size:13px;font-weight:700;color:#1c1c1e;margin-top:9px}
.adm-entry-s{font-size:10px;color:#8e8e93;margin-top:1px}
.adm-recent-hdr{display:flex;align-items:center;justify-content:space-between;margin:18px 2px 8px}
.adm-recent-hdr>span{font-size:12.5px;font-weight:800;color:#1c1c1e}
.adm-recent{background:#fff;border-radius:14px;border:1px solid #ececf0;overflow:hidden}
.adm-recent-item{display:flex;align-items:flex-start;gap:9px;padding:11px 13px;border-bottom:1px solid #f4f4f6}
.adm-recent-item:last-child{border-bottom:none}
.adm-recent-dot{width:6px;height:6px;border-radius:50%;flex-shrink:0;margin-top:5px}
.adm-recent-txt{flex:1;min-width:0}
.adm-recent-t{font-size:12.5px;font-weight:600;color:#1c1c1e;line-height:1.3}
.adm-recent-m{font-size:10px;color:#8e8e93;margin-top:2px}
.adm-recent-empty{padding:20px;text-align:center;font-size:11.5px;color:#8e8e93}
.adm-recent-del{flex-shrink:0;background:var(--primary-soft);color:var(--primary);border:none;border-radius:8px;font-size:11px;font-weight:700;padding:5px 10px;cursor:pointer;font-family:inherit;align-self:center}
.adm-recent-del:active{transform:scale(.95)}
.adm-drafts-empty{text-align:center;padding:50px 20px;color:#8e8e93}
.adm-drafts-t{font-size:14px;font-weight:700;color:#1c1c1e;margin-top:12px}
.adm-drafts-s{font-size:11.5px;color:#8e8e93;margin-top:4px}
.adm-nav{display:flex;background:#fff;border-top:1px solid #ececf0;padding:8px 10px calc(12px + var(--safe-bottom,0px));flex-shrink:0}
.adm-nav-btn{flex:1;display:flex;flex-direction:column;align-items:center;gap:3px;background:none;border:none;color:#a0a0a6;cursor:pointer;font-family:inherit;padding:2px;-webkit-tap-highlight-color:transparent}
.adm-nav-btn span{font-size:10px;font-weight:700}
.adm-nav-btn.active{color:var(--primary)}
/* 三步流程 */
.ann-progress{display:flex;gap:5px;padding:2px 0 14px}
.ann-seg{flex:1;height:3px;border-radius:3px;background:#e5e5ea;transition:background .2s}
.ann-seg.on{background:var(--primary)}
.ann-step{display:none}
.ann-step.active{display:block;animation:admTabIn .28s ease both}
.ann-h{font-size:20px;font-weight:800;color:#1c1c1e;letter-spacing:-.3px}
.ann-d{font-size:12px;color:#8e8e93;margin-top:5px;line-height:1.5}
.ann-fld{margin-top:14px}
.ann-lrow{display:flex;align-items:center;justify-content:space-between;margin-bottom:6px}
.ann-lbl{font-size:11px;font-weight:700;color:#8e8e93}
.ann-cnt{font-size:10px;color:#c7c7cc}
.ann-in{width:100%;padding:12px;border:1px solid #e5e5ea;border-radius:12px;font-size:14px;background:#fff;box-sizing:border-box;font-family:inherit;color:#1c1c1e}
.ann-in:focus{outline:none;border-color:var(--primary)}
.ann-ta{min-height:120px;resize:none;line-height:1.5}
.ann-2col{display:flex;gap:9px}
.ann-2col .ann-fld{flex:1;min-width:0}
.ann-note{background:#f2f2f7;border-radius:12px;padding:12px 13px;font-size:11.5px;color:#636366;margin-top:14px;line-height:1.4}
/* 對象卡 */
.ann-aud{display:flex;align-items:center;gap:12px;background:#fff;border:2px solid #f0f0f2;border-radius:14px;padding:13px;margin-top:10px;cursor:pointer;transition:border-color .15s}
.ann-aud.sel{border-color:var(--primary)}
.ann-aud-flag{display:inline-flex;align-items:center;width:30px;height:20px;flex-shrink:0}
.ann-aud-flag svg{display:block;width:100%;height:100%;border-radius:2px}
.ann-aud-info{flex:1;min-width:0}
.ann-aud-name{font-size:14.5px;font-weight:800;color:#1c1c1e}
.ann-aud-sub{font-size:11px;color:#8e8e93;margin-top:1px}
.ann-check{width:22px;height:22px;border-radius:50%;border:2px solid #e5e5ea;display:flex;align-items:center;justify-content:center;flex-shrink:0}
.ann-check svg{opacity:0}
.ann-aud.sel .ann-check{background:var(--primary);border-color:var(--primary)}
.ann-aud.sel .ann-check svg{opacity:1}
/* 選項卡 */
.ann-opts{background:#fff;border:1px solid #ececf0;border-radius:14px;padding:13px;margin-top:14px}
.ann-opt{display:flex;align-items:center;justify-content:space-between;gap:12px;cursor:pointer}
.ann-opt-txt{flex:1;min-width:0}
.ann-opt-t{font-size:13.5px;font-weight:700;color:#1c1c1e}
.ann-opt-s{font-size:10.5px;color:#8e8e93;margin-top:1px;line-height:1.35}
.ann-opt-div{height:1px;background:#f4f4f6;margin:11px 0}
.ann-sw{position:relative;width:42px;height:25px;flex-shrink:0;background:#d1d1d6;border-radius:999px;transition:background .2s}
.ann-sw::before{content:"";position:absolute;top:3px;left:3px;width:19px;height:19px;border-radius:50%;background:#fff;transition:transform .2s;box-shadow:0 1px 3px rgba(0,0,0,.2)}
.ann-sw.on{background:var(--primary)}
.ann-sw.on::before{transform:translateX(17px)}
.ann-mini{background:#f2f2f7;border-radius:12px;padding:12px 13px;font-size:11.5px;color:#636366;margin-top:14px;line-height:1.4}
/* STEP 3 預覽 */
.ann-plbl{font-size:11px;font-weight:700;color:#8e8e93;text-transform:uppercase;letter-spacing:.5px;margin:16px 2px 8px}
.ann-plbl:first-child{margin-top:0}
.ann-lock{background:linear-gradient(160deg,#31323a,#1a1a1f);border-radius:16px;padding:16px 14px}
.ann-lock-hint{font-size:10px;color:rgba(255,255,255,.5);margin-bottom:10px}
.ann-lock-noti{display:flex;gap:10px;background:rgba(255,255,255,.95);border-radius:15px;padding:11px 12px}
.ann-lock-ic{width:34px;height:34px;border-radius:9px;flex-shrink:0;object-fit:cover}
.ann-lock-b{flex:1;min-width:0}
.ann-lock-top{display:flex;align-items:center;justify-content:space-between}
.ann-lock-app{font-size:10.5px;font-weight:700;color:#3a3a3c;letter-spacing:.3px}
.ann-lock-now{font-size:10px;color:#8e8e93}
.ann-lock-title{font-size:12.5px;font-weight:700;color:#1c1c1e;margin-top:2px}
.ann-lock-text{font-size:11.5px;color:#48484a;margin-top:1px;line-height:1.35;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.ann-cardp{background:#fff;border:1px solid #ececf0;border-radius:14px;padding:13px}
.ann-cardp-top{display:flex;align-items:center;gap:8px}
.ann-cardp-pill{font-size:9px;font-weight:800;color:var(--primary);background:var(--primary-soft);padding:3px 8px;border-radius:999px}
.ann-cardp-meta{font-size:10px;color:#8e8e93}
.ann-cardp-title{font-size:14px;font-weight:800;color:#1c1c1e;margin-top:9px}
.ann-cardp-body{font-size:12px;color:#636366;line-height:1.55;margin-top:4px;white-space:pre-wrap;overflow-wrap:anywhere}
.ann-sum{background:#fff;border:1px solid #ececf0;border-radius:14px;padding:6px 13px;margin-top:14px}
.ann-sum-row{display:flex;align-items:center;justify-content:space-between;padding:8px 0;border-bottom:1px solid #f4f4f6;font-size:12px;color:#636366}
.ann-sum-row:last-child{border-bottom:none}
.ann-sum-row span:last-child{font-weight:700;color:#1c1c1e}
.ann-cnote{text-align:center;font-size:10.5px;color:#8e8e93;margin-top:12px}
.ann-status{text-align:center;font-size:12px;margin-top:10px;min-height:16px}
/* 底部操作列 */
.adm-actionbar{display:flex;gap:9px;background:#fff;border-top:1px solid #ececf0;padding:10px 14px calc(14px + var(--safe-bottom,0px));flex-shrink:0}
.adm-ab-2nd{background:#f2f2f7;color:#1c1c1e;border:none;border-radius:12px;font-size:13.5px;font-weight:700;padding:13px 18px;cursor:pointer;font-family:inherit}
.adm-ab-main{flex:1;background:var(--primary);color:#fff;border:none;border-radius:12px;font-size:13.5px;font-weight:700;padding:13px;cursor:pointer;font-family:inherit}
.adm-ab-main.disabled{background:#c7c7cc;cursor:default}
/* 只發推送 view */
.pv-lock-foot{font-size:10px;color:rgba(255,255,255,.55);text-align:center;margin-top:10px}
.pv-send{width:100%;background:var(--primary);color:#fff;border:none;border-radius:12px;font-size:14px;font-weight:800;padding:14px;margin-top:16px;cursor:pointer;font-family:inherit}
.pv-send:active{transform:scale(.98)}
/* 草稿列表 */
.adm-draft-item{display:flex;align-items:center;gap:10px;background:#fff;border:1px solid #ececf0;border-radius:12px;padding:11px 12px;margin-bottom:8px;cursor:pointer}
.adm-draft-item:active{background:#f2f2f7}
.adm-draft-badge{font-size:9px;font-weight:800;padding:3px 7px;border-radius:6px;flex-shrink:0}
.adm-draft-badge.ann{color:var(--primary);background:var(--primary-soft)}
.adm-draft-badge.push{color:#1c1c1e;background:#eceef3}
.adm-draft-txt{flex:1;min-width:0}
.adm-draft-t{font-size:12.5px;font-weight:600;color:#1c1c1e;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.adm-draft-m{font-size:10px;color:#8e8e93;margin-top:1px}
.adm-draft-del{flex-shrink:0;background:none;border:none;color:#c7c7cc;cursor:pointer;padding:4px;display:flex}
/* dashboard 草稿條 */
.adm-draftbar{display:flex;align-items:center;gap:11px;background:#fffaf0;border:1px solid #f5e6c8;border-radius:14px;padding:12px 13px;margin-top:12px;cursor:pointer}
.adm-draftbar-ic{width:28px;height:28px;border-radius:8px;background:#f0c04a;display:flex;align-items:center;justify-content:center;flex-shrink:0}
.adm-draftbar-txt{flex:1;min-width:0}
.adm-draftbar-t{font-size:12.5px;font-weight:700;color:#7a5400}
.adm-draftbar-s{font-size:10.5px;color:#a8843a;margin-top:1px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.adm-draftbar-chev{color:#c9a44c;flex-shrink:0;display:flex}
/* header 儲存草稿 */
.adm-c-save{background:none;border:none;color:#8e8e93;font-size:12px;font-weight:700;cursor:pointer;font-family:inherit;padding:6px 4px;flex-shrink:0;white-space:nowrap}
/* Toggle label SVG */
.admin-toggle-label {display: inline-flex; align-items: center; gap: 7px; line-height: 1.3}
.admin-toggle-label svg {color: var(--text3); flex-shrink: 0; display: block}
.admin-toggle-label > span {flex: 1; min-width: 0}
/* Status message SVG */
.admin-status {display: flex; align-items: center; gap: 5px; justify-content: center; line-height: 1.3}
.admin-status svg {flex-shrink: 0; display: block}
/* Reload button SVG */
.admin-reload-btn {display: inline-flex; align-items: center; gap: 4px; line-height: 1}
.admin-reload-btn svg {flex-shrink: 0; display: block}
/* Tab svg */
.adm-tab svg {display: block}
.admin-reload-btn {
  font-size: 11px; font-weight: 600; color: var(--primary);
  background: none; border: none; cursor: pointer;
}
.adm-ann-item {
  background: #fff; border-radius: 10px;
  margin: 0 12px 7px; padding: 10px 12px;
  border: 1px solid var(--border2);
  display: flex; align-items: flex-start; gap: 8px;
}
.adm-ann-title { font-size: 12px; font-weight: 600; color: var(--text); line-height: 1.4; }
.adm-ann-meta { font-size: 10px; color: var(--text3); margin-top: 2px; }
.adm-delete-btn {
  background: var(--primary-soft); border: 1px solid var(--primary-soft);
  color: var(--primary); border-radius: 6px;
  font-size: 11px; font-weight: 600; padding: 4px 8px;
  cursor: pointer; flex-shrink: 0; white-space: nowrap;
}
.admin-toggle-row {
  display: flex; align-items: center; justify-content: space-between;
  padding: 4px 0; margin-bottom: 10px; cursor: pointer;
}
.admin-toggle-label { font-size: 13px; color: var(--text); }
.admin-toggle { position: relative; width: 44px; height: 26px; flex-shrink: 0; }
.admin-toggle input { opacity: 0; width: 0; height: 0; }
.admin-toggle-slider {
  position: absolute; inset: 0; background: #d1d1d6;
  border-radius: 26px; cursor: pointer; transition: background 0.2s;
}
.admin-toggle-slider::before {
  content: ""; position: absolute;
  width: 20px; height: 20px; left: 3px; bottom: 3px;
  background: #fff; border-radius: 50%;
  transition: transform 0.2s; box-shadow: 0 1px 3px rgba(0,0,0,0.2);
}
.admin-toggle input:checked + .admin-toggle-slider { background: var(--primary); }
.admin-toggle input:checked + .admin-toggle-slider::before { transform: translateX(18px); }

/* ── MDRT Calc 改善 ── */
/* 地區切換掣：滑動紅色指示器（iOS segmented 風格） */
#calcRegionSeg,.reg-seg2{position:relative;display:flex;background:#eceef3;border-radius:10px;padding:3px;gap:0;margin:0 0 11px;box-shadow:inset 0 1px 2px rgba(0,0,0,.05)}
.reg-seg2{margin:0}
.reg-seg-ind{position:absolute;top:3px;bottom:3px;left:3px;width:calc(50% - 3px);border-radius:7px;background:linear-gradient(135deg,var(--primary-mid) 0%,var(--primary-dark) 100%);box-shadow:0 2px 6px rgba(165,28,27,.30),inset 0 1px 0 rgba(255,255,255,.18);transition:transform .30s cubic-bezier(.34,1.2,.4,1);z-index:0}
#calcRegionSeg.hk .reg-seg-ind,.reg-seg2.hk .reg-seg-ind{transform:translateX(100%)}
.reg-seg-btn{position:relative;z-index:1;flex:1;display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:5px 6px;border:none;background:transparent;font-family:inherit;font-size:13px;font-weight:700;color:#78797f;cursor:pointer;letter-spacing:1px;transition:color .24s ease;-webkit-tap-highlight-color:transparent}
.reg-seg-btn.active{color:#fff}
.reg-seg-btn .reg-flag{font-size:14px;line-height:0;display:inline-flex;align-items:center}
.reg-seg-btn .reg-flag svg{width:18px;height:12px;border-radius:2px}
.reg-seg-btn:active{transform:scale(.985)}
/* 輸入區收緊：細框、窄 padding、緊湊間距 */
#toolPage-calc .calc-v6-wrap{padding:11px}
#toolPage-calc .calc-input-grid{gap:8px 8px;margin-bottom:8px}
#toolPage-calc .calc-input-grid .calc-v6-group{margin-bottom:0}
#toolPage-calc .calc-v6-group{margin-bottom:8px}
#toolPage-calc .calc-v6-label{font-size:10.5px;font-weight:700;margin-bottom:2px;color:#5a5a5e;text-transform:none;letter-spacing:0}
#toolPage-calc .calc-v6-input{height:36px;font-size:14.5px;font-weight:700;color:#1c1c1e;background:#f4f5f7;border:1px solid #e3e4e8;border-radius:8px}
#toolPage-calc .calc-v6-input::placeholder{font-weight:500;color:#c4c4c9}
#toolPage-calc .calc-v6-select{height:36px;font-size:13px;font-weight:600}
#toolPage-calc .calc-hint{font-size:8.5px;margin-top:1px}
#toolPage-calc .calc-v6-btn{padding:10px;font-size:15px;display:inline-flex;align-items:center;justify-content:center;gap:7px}
#toolPage-calc .calc-v6-btn svg{flex-shrink:0}
#toolPage-calc .calc-reset-btn{width:44px;padding:0;display:inline-flex;align-items:center;justify-content:center;color:var(--text2)}
#toolPage-calc .calc-reset-btn:active{transform:scale(.96)}
/* 歷史記錄：收窄 padding */
#toolPage-calc .calc-hist-wrap{margin-bottom:9px}
#toolPage-calc .calc-hist-toggle{padding:9px 11px;font-size:12.5px}
#toolPage-calc .calc-hist-item{padding:7px 11px;gap:8px}
#toolPage-calc .calc-hist-empty{padding:12px 11px}
#toolPage-calc .calc-hist-clear{padding:8px}
.calc-hint{font-size:9px;color:var(--text3);margin-top:2px;text-align:center;line-height:1.3}
.calc-btn-row{display:flex;gap:8px;margin-top:6px}
.calc-reset-btn{padding:0 16px;background:var(--bg);border:1px solid var(--border);border-radius:10px;font-size:13px;font-weight:600;color:var(--text2);cursor:pointer;flex-shrink:0;white-space:nowrap}
/* 進度條 */
.calc-prog-section{margin:10px 0 4px}
.calc-prog-section-title{font-size:10px;font-weight:700;color:var(--text3);text-transform:uppercase;letter-spacing:.5px;margin-bottom:8px}
.calc-prog-item{margin-bottom:7px}
.calc-prog-header{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:3px}
.calc-prog-label{font-size:11px;font-weight:600;color:var(--text)}
.calc-prog-value{font-size:10px;color:var(--text3)}
.calc-prog-value.met{color:#2e7d32;font-weight:700}
.calc-prog-track{background:#f0f0f5;border-radius:4px;height:6px;overflow:hidden}
.calc-prog-fill{height:100%;border-radius:4px;transition:width .55s cubic-bezier(.4,0,.2,1)}
.calc-prog-fill.met{background:linear-gradient(90deg,#66bb6a,#2e7d32)}
.calc-prog-fill.unmet{background:linear-gradient(90deg,var(--primary),#e06060)}
/* AI Tips 手風琴動畫 */
.aitip-acc-body{max-height:0;overflow:hidden;transition:max-height .28s ease}
.aitip-acc-body.open{max-height:700px}
.aitip-acc-body-inner{padding:0 12px 10px;border-top:1px solid var(--border2)}
/* ── SKELETON LOADING ── */
@keyframes skel-shimmer {
  0%   { background-position: 200% 0; }
  100% { background-position: -200% 0; }
}
.skel {
  background: linear-gradient(90deg, #efefef 25%, #e2e2e2 50%, #efefef 75%);
  background-size: 200% 100%;
  animation: skel-shimmer 1.4s ease-in-out infinite;
  border-radius: 6px;
  display: block;
}
/* Upcoming card skeleton */
.skel-upcoming {
  display: flex; align-items: center; gap: 10px;
  padding: 6px 12px; background: var(--card);
  border-radius: 10px; margin-bottom: 5px;
  border: 1px solid var(--border2);
}
/* Announcement card skeleton */
.skel-ann {
  background: var(--card); border-radius: var(--radius-md);
  margin-bottom: 10px; border: 1px solid var(--border2);
  padding: 12px 14px;
}
/* Event card skeleton */
.skel-ev {
  background: var(--card); border-radius: 10px;
  margin-bottom: 8px; border: 1px solid var(--border2);
  overflow: hidden;
}
.skel-ev-body { padding: 8px 12px 6px; }
.skel-ev-foot {
  padding: 6px 12px; background: var(--card2);
  border-top: 1px solid var(--border2);
}
/* News item skeleton */
.skel-news {
  background: var(--card); border-radius: var(--radius-sm);
  padding: 9px 11px; margin-bottom: 6px;
  border: 1px solid var(--border2);
}
/* ── Custom Confirm Modal ── */
.cc-backdrop{position:fixed;inset:0;background:var(--modal-scrim);opacity:0;pointer-events:none;transition:opacity .22s ease;z-index:9500;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}
.cc-backdrop.show{opacity:1;pointer-events:auto}
.cc-modal{position:fixed;left:50%;top:50%;transform:translate(-50%,-50%) scale(.86);background:var(--card);border-radius:16px;width:280px;max-width:88vw;z-index:9501;opacity:0;pointer-events:none;transition:opacity .22s ease,transform .28s cubic-bezier(.34,1.56,.64,1);box-shadow:0 12px 40px rgba(0,0,0,.22);overflow:hidden}
.cc-modal.show{opacity:1;pointer-events:auto;transform:translate(-50%,-50%) scale(1)}
.cc-body{padding:20px 18px 14px;text-align:center}
.cc-icon{width:46px;height:46px;border-radius:50%;background:rgba(var(--primary-rgb),.08);display:inline-flex;align-items:center;justify-content:center;margin-bottom:11px;color:var(--primary)}
.cc-icon.cc-info{background:rgba(28,132,224,.08);color:#1c84e0}
.cc-icon.cc-success{background:rgba(27,107,58,.08);color:#1B6B3A}
.cc-title{font-size:15px;font-weight:700;color:var(--text);margin-bottom:5px;line-height:1.3}
.cc-message{font-size:12px;color:var(--text3);line-height:1.5}
.cc-actions{display:flex;border-top:1px solid var(--border2)}
.cc-btn{flex:1;padding:13px;border:none;background:none;font-size:14px;font-weight:600;cursor:pointer;font-family:inherit;color:var(--text3);transition:background .15s}
.cc-btn:active{background:rgba(0,0,0,.04)}
.cc-btn-primary{color:var(--primary);font-weight:700}
.cc-btn-primary.cc-destructive{color:var(--primary)}
.cc-btn + .cc-btn{border-left:1px solid var(--border2)}
/* ── Toast / Snackbar ── */
.toast-host{position:fixed;left:50%;bottom:84px;transform:translateX(-50%);z-index:99999;display:flex;flex-direction:column-reverse;gap:8px;align-items:center;pointer-events:none;width:max-content;max-width:90vw}
.toast{background:rgba(28,28,30,.95);color:#fff;font-size:13px;font-weight:600;padding:11px 18px;border-radius:22px;box-shadow:0 8px 28px rgba(0,0,0,.22),0 2px 6px rgba(0,0,0,.12);opacity:0;transform:translateY(14px) scale(.92);transition:opacity .26s cubic-bezier(.4,0,.2,1),transform .3s cubic-bezier(.34,1.56,.64,1);pointer-events:auto;max-width:280px;text-align:center;display:inline-flex;align-items:center;gap:8px;line-height:1.35;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}
.toast.show{opacity:1;transform:translateY(0) scale(1)}
.toast.tt-success{background:linear-gradient(135deg,#1B8E50,#106536)}
.toast.tt-error{background:linear-gradient(135deg,var(--primary),var(--primary-dark))}
.toast.tt-warn{background:linear-gradient(135deg,#d97706,#9a5208)}
.toast svg{flex-shrink:0}
/* ── Page transitions ── */
/* ── Micro-animations ── */
.pulse-once{animation:pulseOnce .65s ease-out}
@keyframes pulseOnce{0%{transform:scale(1)}40%{transform:scale(1.08)}100%{transform:scale(1)}}
.tick-up{display:inline-block;transition:transform .3s}
.badge-pop{animation:badgePop .42s cubic-bezier(.34,1.56,.64,1) both}
@keyframes badgePop{0%{transform:scale(.4);opacity:0}100%{transform:scale(1);opacity:1}}
.shimmer-bg{background:linear-gradient(90deg,transparent 0%,rgba(255,255,255,.5) 50%,transparent 100%);background-size:200% 100%;animation:shimmerSweep 1.4s infinite}
@keyframes shimmerSweep{from{background-position:200% 0}to{background-position:-200% 0}}
/* ── FX bidirectional + recents ── */
.fx-result-input{flex:1;background:none;border:none;outline:none;font-size:28px;font-weight:700;color:var(--primary);text-align:right;min-width:0;width:0;-moz-appearance:textfield;line-height:1.2;padding:0;font-family:inherit}
.fx-result-input::-webkit-inner-spin-button,.fx-result-input::-webkit-outer-spin-button{-webkit-appearance:none}
.fx-result-input::placeholder{color:rgba(var(--primary-rgb),.32)}
.fx-recent-wrap{margin-top:12px;display:flex;align-items:center;gap:6px;overflow-x:auto;padding:2px 1px;scrollbar-width:none}
.fx-recent-wrap::-webkit-scrollbar{display:none}
.fx-recent-lbl{font-size:10px;color:var(--text3);font-weight:700;flex-shrink:0;letter-spacing:.4px;text-transform:uppercase;margin-right:2px}
.fx-recent-chip{flex-shrink:0;display:inline-flex;align-items:stretch;background:var(--card);border:1px solid var(--border2);border-radius:14px;font-size:11px;font-weight:700;color:var(--text);font-family:inherit;overflow:hidden}
.fx-recent-chip-main{display:inline-flex;align-items:center;gap:4px;padding:5px 4px 5px 10px;cursor:pointer;transition:background .14s}
.fx-recent-chip-main:active{background:rgba(0,0,0,.06)}
.fx-recent-chip-main svg{color:var(--text3);flex-shrink:0}
.fx-recent-chip-x{display:inline-flex;align-items:center;justify-content:center;width:24px;color:var(--text3);cursor:pointer;border-left:1px solid var(--border2);transition:all .14s}
.fx-recent-chip-x:active{background:rgba(var(--primary-rgb),.08);color:var(--primary)}
/* ── FX Currency Picker (bottom sheet) ── */
.fx-picker-backdrop{position:fixed;inset:0;background:rgba(0,0,0,.42);opacity:0;pointer-events:none;transition:opacity .25s ease;z-index:20}
.fx-picker-backdrop.show{opacity:1;pointer-events:auto}
.fx-picker-sheet{position:fixed;left:0;right:0;bottom:0;background:var(--card);border-radius:20px 20px 0 0;transform:translateY(100%);transition:transform .32s cubic-bezier(.32,.72,.32,1);z-index:21;max-height:74%;display:flex;flex-direction:column;box-shadow:0 -10px 30px rgba(0,0,0,.18)}
.fx-picker-sheet.show{transform:translateY(0)}
.fx-picker-handle{width:38px;height:4px;background:var(--border2);border-radius:2px;margin:8px auto 4px;flex-shrink:0}
.fx-picker-hdr{padding:8px 16px 12px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--border2);flex-shrink:0}
.fx-picker-title{font-size:14px;font-weight:700;color:var(--text)}
.fx-picker-close{background:none;border:none;color:var(--text3);cursor:pointer;padding:4px;display:flex;align-items:center}
.fx-picker-list{flex:1;overflow-y:auto;padding:4px 0 14px}
.fx-picker-item{display:flex;align-items:center;gap:12px;padding:11px 18px;cursor:pointer;transition:background .14s;width:100%;background:none;border:none;text-align:left;font-family:inherit;color:var(--text)}
.fx-picker-item:active{background:rgba(0,0,0,.05)}
.fx-picker-flag{font-size:22px;flex-shrink:0;line-height:1;width:26px;text-align:center}
.fx-picker-item-info{flex:1;min-width:0}
.fx-picker-item-code{font-size:15px;font-weight:800;letter-spacing:.3px;color:var(--text);line-height:1.2}
.fx-picker-item-name{font-size:11px;color:var(--text3);margin-top:2px}
.fx-picker-item.active{background:rgba(var(--primary-rgb),.06)}
.fx-picker-item.active .fx-picker-item-code{color:var(--primary)}
.fx-picker-check{color:var(--primary);flex-shrink:0;opacity:0}
.fx-picker-item.active .fx-picker-check{opacity:1}
.fx-picker-item-other-tag{font-size:9px;font-weight:700;padding:2px 6px;border-radius:5px;background:#f0f0f0;color:#666;letter-spacing:.3px;flex-shrink:0}
/* ── Calculator history ── */
.calc-hist-wrap{margin-bottom:14px;background:var(--card);border:1px solid var(--border2);border-radius:var(--radius-lg);overflow:hidden}
.calc-hist-toggle{width:100%;display:flex;align-items:center;justify-content:space-between;gap:8px;background:none;border:none;padding:12px 14px;cursor:pointer;font-family:inherit;color:var(--text);font-size:13px;font-weight:700;transition:background .12s}
.calc-hist-toggle:active{background:rgba(0,0,0,.04)}
.calc-hist-toggle .ch-left{display:flex;align-items:center;gap:8px}
.calc-hist-toggle .ch-chev{transition:transform .26s cubic-bezier(.4,0,.2,1);color:var(--text3)}
.calc-hist-wrap.open .ch-chev{transform:rotate(180deg)}
.calc-hist-list{max-height:0;overflow:hidden;transition:max-height .3s cubic-bezier(.4,0,.2,1)}
.calc-hist-wrap.open .calc-hist-list{max-height:360px;overflow-y:auto}
.calc-hist-item{display:flex;align-items:center;gap:10px;padding:10px 14px;border-top:1px solid var(--border2);cursor:pointer;transition:background .12s}
.calc-hist-item:active{background:rgba(0,0,0,.04)}
.calc-hist-item-info{flex:1;min-width:0}
.calc-hist-item-top{display:flex;align-items:center;gap:6px;margin-bottom:2px}
.calc-hist-item-fyc{font-size:14px;font-weight:800;color:var(--text)}
.calc-hist-item-status{font-size:9px;font-weight:700;padding:2px 6px;border-radius:5px;letter-spacing:.3px}
.chs-ok{background:#E8F5E9;color:#1B6B3A}
.chs-fail{background:var(--primary-soft);color:var(--primary)}
.calc-hist-item-meta{font-size:10px;color:var(--text3);line-height:1.4;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.calc-hist-item-del{background:none;border:none;color:var(--text3);cursor:pointer;padding:6px;flex-shrink:0;display:flex;align-items:center}
.calc-hist-item-del:active{color:var(--primary)}
.calc-hist-empty{padding:18px 14px;text-align:center;font-size:11px;color:var(--text3)}
.calc-hist-clear{width:100%;padding:9px;border:none;border-top:1px solid var(--border2);background:none;color:var(--text3);font-size:11px;font-weight:600;cursor:pointer;font-family:inherit}
.calc-hist-clear:active{color:var(--primary);background:rgba(var(--primary-rgb),.04)}

/* ── Modal scroll lock — modal 開啟時鎖住底層內容 scroll ── */
body.modal-open .content{overflow:hidden!important;touch-action:none}
body.modal-open #roomPage .overlay-body{overflow:hidden!important;touch-action:none}

/* ── What's New 彈卡（通用組件） ── */
.wn-overlay{position:fixed;inset:0;background:var(--modal-scrim);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);display:none;align-items:center;justify-content:center;z-index:9100;opacity:0;transition:opacity .28s ease;padding:0 18px;font-family:'Plus Jakarta Sans','PingFang TC','Microsoft JhengHei',sans-serif}
.wn-overlay.show{display:flex;opacity:1}
.wn-card{width:100%;max-width:320px;background:#fff;border-radius:22px;overflow:hidden;box-shadow:0 22px 60px rgba(0,0,0,.32),0 2px 8px rgba(0,0,0,.14);transform:translateY(32px) scale(.92);opacity:0}
.wn-overlay.show .wn-card{animation:wnPop .58s cubic-bezier(.34,1.56,.64,1) forwards}
@keyframes wnPop{0%{transform:translateY(32px) scale(.92);opacity:0}55%{opacity:1}100%{transform:translateY(0) scale(1);opacity:1}}
.wn-banner{position:relative;padding:22px 20px 18px;background:linear-gradient(140deg,var(--primary-mid) 0%,var(--primary-mid) 52%,var(--primary-soft2) 100%);color:#fff;overflow:hidden;text-align:center}
.wn-banner::before,.wn-banner::after{content:"";position:absolute;border-radius:50%;background:rgba(255,255,255,.12);pointer-events:none}
.wn-banner::before{width:110px;height:110px;top:-38px;right:-28px}
.wn-banner::after{width:70px;height:70px;bottom:-30px;left:-20px;background:rgba(255,255,255,.09)}
.wn-spark{position:absolute;opacity:0;font-size:14px;animation:wnSpark 1.8s ease-out infinite;pointer-events:none;text-shadow:0 0 8px rgba(255,255,255,.5)}
.wn-spark.s1{top:10px;left:18px;animation-delay:.1s}
.wn-spark.s2{top:30px;right:30px;animation-delay:.6s;font-size:12px}
.wn-spark.s3{bottom:14px;right:22px;animation-delay:1.1s;font-size:11px}
.wn-spark.s4{bottom:18px;left:30px;animation-delay:.35s;font-size:10px}
@keyframes wnSpark{0%{transform:translateY(4px) scale(.6) rotate(0);opacity:0}30%{opacity:1}60%{transform:translateY(-8px) scale(1.15) rotate(15deg);opacity:1}100%{transform:translateY(-14px) scale(.7) rotate(25deg);opacity:0}}
.wn-tag{display:inline-flex;align-items:center;gap:4px;background:rgba(255,255,255,.22);color:#fff;font-size:10px;font-weight:700;letter-spacing:.5px;padding:5px 11px;border-radius:999px;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);position:relative;z-index:1;animation:wnBob 2.4s ease-in-out infinite;border:1px solid rgba(255,255,255,.25)}
@keyframes wnBob{0%,100%{transform:translateY(0)}50%{transform:translateY(-2.5px)}}
.wn-title{font-size:19px;font-weight:800;line-height:1.25;letter-spacing:-.3px;margin-top:11px;position:relative;z-index:1}
.wn-region-preview{display:flex;gap:12px;justify-content:center;margin-top:18px;position:relative;z-index:1}
.wn-region-chip{display:flex;flex-direction:column;align-items:center;gap:8px;background:rgba(255,255,255,.16);border:1px solid rgba(255,255,255,.28);border-radius:14px;padding:14px 22px;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}
.wn-rflag{display:inline-flex;align-items:center;width:46px;height:30.7px}
.wn-rflag svg{display:block;width:100%;height:100%;border-radius:5px}
.wn-rname{font-size:13px;font-weight:800;color:#fff;letter-spacing:1.5px}
/* v3.2 功能 icon 磚（2026-10-02）*/
.wn-feat{display:flex;flex-direction:column;align-items:center;gap:7px;width:76px;padding:11px 4px 9px;background:rgba(255,255,255,.16);border:1px solid rgba(255,255,255,.28);border-radius:14px;opacity:0;animation:wnFadeIn2 .42s ease forwards}
.wn-feat:nth-child(1){animation-delay:.18s}.wn-feat:nth-child(2){animation-delay:.28s}.wn-feat:nth-child(3){animation-delay:.38s}
.wn-feat-ic{width:34px;height:34px;border-radius:10px;background:#fff;color:var(--primary-mid);display:grid;place-items:center;box-shadow:0 2px 6px rgba(0,0,0,.12)}
.wn-feat-ic svg{width:19px;height:19px}
.wn-feat-lb{font-size:11px;font-weight:800;color:#fff;letter-spacing:.3px;white-space:nowrap}
#wnPreview{gap:9px;margin-top:16px}
.wn-preview{margin:14px auto 0;display:grid;grid-template-columns:repeat(3,1fr);gap:5px;width:160px;padding:9px;background:rgba(255,255,255,.18);border-radius:13px;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);position:relative;z-index:1;opacity:0;transform:translateY(12px);animation:wnFloatUp .58s cubic-bezier(.34,1.4,.64,1) .35s forwards;border:1px solid rgba(255,255,255,.18)}
.wn-slot{height:26px;border-radius:6px;display:flex;align-items:center;justify-content:center;font-size:9px;font-weight:700;letter-spacing:.2px}
.wn-slot.past{background:rgba(255,255,255,.18);color:rgba(255,255,255,.5)}
.wn-slot.booked{background:#ef4444;color:#fff;box-shadow:0 1px 3px rgba(239,68,68,.4)}
.wn-slot.free{background:#fff;color:#0d9488;box-shadow:0 1px 3px rgba(0,0,0,.08)}
@keyframes wnFloatUp{to{opacity:1;transform:translateY(0)}}
.wn-legend{display:flex;justify-content:center;gap:11px;margin-top:9px;position:relative;z-index:1;opacity:0;animation:wnFadeIn .4s ease .58s forwards}
.wn-legend span{font-size:9px;font-weight:600;color:rgba(255,255,255,.94);display:inline-flex;align-items:center;gap:4px;letter-spacing:.2px}
.wn-legend i{width:9px;height:9px;border-radius:2px;display:inline-block}
@keyframes wnFadeIn{to{opacity:1}}
.wn-body{padding:18px 20px 18px;background:#fff}
.wn-bullet{display:flex;align-items:flex-start;gap:10px;margin-bottom:11px;opacity:0;transform:translateY(8px);animation:wnFadeIn2 .42s ease forwards}
.wn-bullet:nth-child(1){animation-delay:.6s}
.wn-bullet:nth-child(2){animation-delay:.74s}
.wn-bullet:nth-child(3){animation-delay:.88s}
.wn-bullet:nth-child(4){animation-delay:1.02s}
.wn-bullet:last-child{margin-bottom:0}
@keyframes wnFadeIn2{to{opacity:1;transform:translateY(0)}}
.wn-tick{flex-shrink:0;width:19px;height:19px;border-radius:5px;background:linear-gradient(135deg,var(--primary-mid),var(--primary));display:flex;align-items:center;justify-content:center;color:#fff;margin-top:1px;box-shadow:0 2px 6px rgba(var(--primary-rgb),.28)}
.wn-bullet-text{font-size:12.5px;line-height:1.55;color:var(--text);font-weight:500;letter-spacing:-.1px}
.wn-foot{margin:12px 0 0;padding-top:10px;border-top:1px solid #f0f0f2;font-size:11px;line-height:1.55;color:var(--text3);opacity:0;animation:wnFadeIn .42s ease 1.12s forwards}
.wn-actions{margin-top:16px;opacity:0;animation:wnFadeIn .42s ease 1.12s forwards}
.wn-btn-primary{width:100%;padding:13px;background:linear-gradient(135deg,var(--primary-mid),var(--primary-mid));color:#fff;border:none;border-radius:12px;font-size:14px;font-weight:700;font-family:inherit;cursor:pointer;letter-spacing:.3px;box-shadow:0 5px 16px rgba(var(--primary-rgb),.30);transition:transform .12s ease}
.wn-btn-primary:active{transform:scale(.97)}
.wn-dots{display:flex;justify-content:center;gap:6px;margin:14px 0 -4px}.wn-dots[hidden]{display:none}
.wn-dots i{width:6px;height:6px;border-radius:3px;background:#d8d8de;transition:width .2s,background .2s}.wn-dots i.on{width:18px;background:var(--primary)}
.wn-btn-dismiss[hidden]{display:none}
.wn-btn-dismiss{width:100%;padding:10px;background:none;border:none;color:var(--text3);font-size:11.5px;font-weight:600;font-family:inherit;cursor:pointer;margin-top:6px;letter-spacing:.1px}
.wn-btn-dismiss:active{color:var(--text2)}
/* ===================== 1b 純色紅頂 主頁改造 ===================== */
/* Section 標題：拿走紅色 accent bar，跟 1b 字體（13px / 600 / 灰）*/
#page-home .section-title{font-size:13px!important;font-weight:600!important;color:#6e6e73!important;text-transform:none!important;letter-spacing:0!important;gap:0!important}
#page-home .section-title::before{display:none!important}
/* 今日新聞：拿走多餘左右 padding，對齊上面 cards（section 已有 14px）*/
#page-home .news-list{padding-left:0!important;padding-right:0!important}
/* 統一卡片：跟金融摘要卡 — radius 14 + 極淺 #f0f0f0 邊 + 柔和 shadow */
#page-home .stat-card,#page-home .tl-card,#page-home .news-feed-card{border-radius:14px!important;border:1px solid #f0f0f0!important;box-shadow:0 1px 3px rgba(0,0,0,.04)!important}
/* 快速入口彩色卡：拉走邊框，只留 shadow */
#page-home .qcard-1b{border:none!important;border-radius:14px!important;box-shadow:0 1px 3px rgba(0,0,0,.04)!important}
/* Header 紅頂 */
header{background:var(--primary)!important;border-bottom:none!important;box-shadow:0 1px 0 var(--primary)!important}
header .h-logo{width:30px;height:30px;background:#fff;border-radius:8px;display:flex;align-items:center;justify-content:center;padding:0}
header .h-logo img{width:23px;height:23px;object-fit:contain;border-radius:5px}
header .h-title{color:#fff!important}
header .h-sub{color:rgba(255,255,255,.75)!important}
header button{color:#fff!important}
header .hdr-region svg{border-radius:3px}
/* ── 白 header：順住 iOS 白色狀態列無縫接埋（條狀態列顏色改唔到，唯有夾佢）──
   紅頂同貼底 nav 二擇一，已選貼底 nav。唔要白 header 就刪呢一段 ── */
header{background:var(--card)!important;box-shadow:none!important;border-bottom:none!important}
header .h-logo{background:transparent!important}
header .h-title{color:var(--text)!important}
header .h-sub{color:var(--text3)!important}
header button{color:var(--text3)!important}
/* ── 白 header 完 ── */
/* Hero 純紅、問候固定頂 + 重點卡輪播 */
/* 方案C：紅底加長，畀白卡壓住底部 → 過渡變成刻意層次而唔係硬撞色 */
.home-hero{background:var(--primary)!important;padding:8px 16px 34px!important}
/* 完全冇活動同公告（白卡收起）就唔使留位 */
.home-hero.no-feature{padding-bottom:13px!important}
.home-hero.bg-event,.home-hero.bg-ann{background:var(--primary)!important}
.hero-greet-row{display:flex;align-items:center;justify-content:space-between;gap:10px;padding-top:2px}
.hero-greet-row .home-greet{font-size:18px!important;font-weight:800!important;letter-spacing:-.3px;line-height:1.2;margin-bottom:0!important;color:#fff}
.hero-subline{font-size:11px;color:rgba(255,255,255,.82);margin-top:3px;display:flex;align-items:center;gap:5px;white-space:nowrap}
.hero-subline .home-date{font-size:11px!important;opacity:1!important;letter-spacing:0}
.hero-dot-sep{opacity:.5}
.hero-wx{display:inline-flex;align-items:center;gap:4px}
.hero-wx .weather-svg{width:13px;height:13px}
.hero-wx .weather-temp{font-size:11px;font-weight:700}
.hero-wx .weather-desc{font-size:11px;opacity:.9;margin-left:1px}
#heroAvatar{width:36px!important;height:36px!important;font-size:14px!important;font-weight:700;color:#fff;background:rgba(255,255,255,.18)!important;border:none!important;border-radius:50%!important;display:flex!important;align-items:center;justify-content:center;flex-shrink:0;animation:none!important;box-shadow:none!important}
/* 收起舊 hero 內元素（天氣 tip / 每日金句 / 會議室 pill）*/
#page-home #wxTipCard,#page-home #dailyQuote,#page-home #hpcStatus,#page-home .wx-tip-card,#page-home .quote-row{display:none!important}
/* ── 方案C：重點卡＝白卡，喺 hero 外面靠負 margin 浮起、跨過紅／灰交界 ── */
.hero-feature{background:var(--card);border-radius:14px;padding:12px 13px 10px;margin:-24px 16px 0;position:relative;z-index:2;overflow:visible;cursor:pointer;
  box-shadow:0 6px 18px rgba(0,0,0,.13);transition:transform .12s}
.hero-feature:active{transform:scale(.985)}
.hero-feature .hero-slides-host{min-height:auto}
.hero-feature .hero-alt-tag{background:none!important;padding:0!important;margin-bottom:5px;font-size:10px;font-weight:700;opacity:1;gap:6px;color:var(--primary)!important;-webkit-backdrop-filter:none;backdrop-filter:none}
.hero-feature .hero-alt-title{font-size:13px;font-weight:700;margin:0;line-height:1.32;-webkit-line-clamp:2;color:var(--text)!important}
.hero-feature .hero-alt-meta{font-size:11px;opacity:1;margin-top:3px;-webkit-line-clamp:1;color:var(--text3)!important}
.hero-feature .hero-alt-type-inline{color:var(--text3)!important}
.hero-feature .hero-alt-blob,.hero-feature .hero-alt-blob2,.hero-feature .hero-alt-deco{display:none!important}
.hero-feature-foot{display:flex;align-items:center;justify-content:space-between;margin-top:7px;padding-top:7px;border-top:1px solid var(--border2);gap:10px}
.hero-cta{font-size:11.5px;font-weight:700;color:var(--primary);cursor:pointer;white-space:nowrap}
.hero-feature .hero-dots{margin-top:0!important;justify-content:flex-end}
.hero-feature .hero-dot{background:#dcdce0}
.hero-feature .hero-dot.active{background:var(--primary)}
.hero-feature .hero-pause-ind{color:var(--text3)}
/* 快速入口 4 色格 */
#page-home .quick-grid{grid-template-columns:1fr 1fr 1fr 1fr!important;gap:8px!important}
.qcard-1b{border-radius:12px;padding:11px 4px 9px;cursor:pointer;font-family:inherit;display:flex;flex-direction:column;align-items:center;gap:7px;position:relative;transition:transform .12s}
.qcard-1b:active{transform:scale(.94)}
.qcard-1b .qc1-label{font-size:10.5px;font-weight:700}
/* padding-bottom 1.2px：WebKit 量到數字墨跡偏低 0.59px（ascent=10/descent=2），
   靠縮細內容盒把 flex 置中點推返上，令數字真正喺圓心。唔好當佢係「多餘」而刪走。 */
.qcard-1b .qc1-badge{position:absolute;top:5px;right:5px;font-size:9px;font-weight:700;line-height:1;color:#fff;min-width:15px;height:15px;border-radius:999px;display:flex;align-items:center;justify-content:center;padding:0 4px 1.2px}
.qcard-1b .qc1-badge:empty{display:none}
/* 統計卡：會議室 + Cold Call */
.stat-row{display:grid;grid-template-columns:1fr 1fr;gap:9px}
/* 冇 cold call list（未授權）→ 卡照顯示但字灰、冇咁顯眼 */
.stat-card.muted svg{stroke:#c1c1c6!important}
.stat-card.muted .stat-num,.stat-card.muted .stat-num *{color:#b0b0b5!important}
.stat-card.muted .stat-label{color:#a1a1a6!important}
.stat-card.muted .stat-dot{background:#d1d1d6!important}
.stat-card{background:var(--card);border:1px solid var(--border);border-radius:12px;padding:12px 12px 11px;cursor:pointer;text-align:left;font-family:inherit;transition:transform .12s}
.stat-card:active{transform:scale(.97)}
.stat-top{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}
.stat-dot{width:7px;height:7px;border-radius:50%;background:#c7c7cc;flex-shrink:0}
.stat-dot.green{background:#2e7d32}.stat-dot.red{background:var(--primary)}.stat-dot.grey{background:#c7c7cc}.stat-dot.amber{background:#e0a100}
.stat-num{font-size:22px;font-weight:800;color:var(--primary);line-height:1;letter-spacing:-.5px}
.stat-unit{font-size:11px;font-weight:700;margin-left:3px;color:var(--text2)}
.stat-label{font-size:12px;font-weight:700;color:var(--text);margin-top:6px}
/* 最近活動 timeline */
.tl-card{background:var(--card);border-radius:12px;border:1px solid var(--border);padding:12px 13px 6px}
.tl-item{display:flex;gap:12px;cursor:pointer}
.tl-rail{display:flex;flex-direction:column;align-items:center;flex-shrink:0;width:12px}
.tl-node{width:10px;height:10px;border-radius:50%;background:#fff;border:2px solid #c7c7cc;margin-top:3px;flex-shrink:0}
.tl-item.soon .tl-node{background:var(--primary);border-color:var(--primary)}
.tl-line{flex:1;width:2px;background:#ececf0;margin-top:4px}
.tl-body{flex:1;min-width:0;padding-bottom:12px}
.tl-item:last-child .tl-body{padding-bottom:6px}
.tl-date{font-size:10.5px;font-weight:700;color:#8e8e93}
.tl-item.soon .tl-date{color:var(--primary)}
.tl-title{font-size:12.5px;font-weight:600;margin-top:2px;line-height:1.35;color:var(--text)}
.tl-type{font-size:10.5px;color:#8e8e93;margin-top:2px}
/* 首頁「最近活動」冇活動：日曆近期安排／一行精簡卡（2026-10-09）*/
.ev-cal-hd{display:flex;align-items:center;gap:6px;font-size:10.5px;color:#8e8e93;margin:0 0 11px;padding-bottom:9px;border-bottom:1px solid #f2f2f4}
.ev-cal-hd b{color:#48484a;font-weight:700}
.ev-cal-hd svg{width:13px;height:13px;flex-shrink:0}
.tl-card.ev-none{display:flex;align-items:center;gap:12px;width:100%;text-align:left;font-family:inherit;padding:12px 13px;cursor:pointer;-webkit-tap-highlight-color:transparent}
.tl-card.ev-none:active{background:#fafafa}
.ev-none .ic{width:38px;height:38px;border-radius:11px;background:#f4f4f7;color:#8e8e93;display:grid;place-items:center;flex-shrink:0}
.ev-none .ic svg{width:18px;height:18px}
.ev-none .tx{flex:1;min-width:0;display:flex;flex-direction:column}
.ev-none .t1{font-size:13px;font-weight:700;color:var(--text)}
.ev-none .t2{font-size:11px;color:#8e8e93;margin-top:2px}
.ev-none .go{font-size:12px;font-weight:700;color:var(--primary);display:inline-flex;align-items:center;white-space:nowrap}

/* ===================== Tools 改版（2026-09-24）：IRR + MDRT 淺色版 =====================
   來源：Claude Design「Tools Redesign」1c / 2a / 3d（淺色版；唔用深色 1b/1d）。
   範圍只限 #toolPage-calc（MDRT）同 #toolPage-irr（IRR）；FX / FNA / AI Tips / 入口頁未改。
   原則：白卡、髮絲線分隔、紅色只做一個 accent。灰字用 #6e6e73（#8e8e93 對比唔夠 4.5:1）。
   刪咗呢段 + 還原 HTML 就返回舊版（備份：HTML record/20260924/…pre-tools-irr-mdrt_backup.html）。 */
#toolPage-calc .calc-v6-wrap,#toolPage-irr .calc-v6-wrap{background:transparent;border:none;border-radius:0;padding:2px 0 0}
.tv2-sub{font-size:11px;color:#6e6e73;text-align:center;margin:0 0 12px}
/* 輸入：hint 併入 label 一行；框保持 36px（唔壓到 34，照顧觸控） */
#toolPage-calc .calc-input-grid,#toolPage-irr .calc-input-grid{gap:9px 8px;margin-bottom:9px}
#toolPage-calc .calc-input-grid .calc-v6-group,#toolPage-irr .calc-input-grid .calc-v6-group{margin-bottom:0}
#toolPage-calc .calc-v6-label,#toolPage-irr .calc-v6-label{font-size:10.5px;font-weight:800;color:#48484a;margin-bottom:3px;letter-spacing:0;text-transform:none;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tv2-lab-sub{font-weight:600;color:#6e6e73;margin-left:4px}
#toolPage-calc .calc-v6-input,#toolPage-irr .calc-v6-input,#toolPage-calc .calc-v6-select{height:36px;background:#fff;border:1px solid #e3e4e8;border-radius:8px;font-size:14.5px;font-weight:700;color:#1c1c1e}
#toolPage-calc .calc-v6-select{font-size:12.5px;padding:0 6px;text-overflow:ellipsis}
#toolPage-irr .calc-v6-input::placeholder{font-weight:500;color:#c4c4c9}
#toolPage-calc .calc-v6-input:focus,#toolPage-irr .calc-v6-input:focus,#toolPage-calc .calc-v6-select:focus{border-color:var(--primary);background:#fff}
#toolPage-calc .tv2-row2{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-bottom:10px}
#toolPage-calc .tv2-row2 .calc-v6-group{margin-bottom:0;min-width:0}
#toolPage-calc .calc-date-row .calc-v6-select:first-child{flex:1;min-width:0}
#toolPage-calc .calc-date-row .calc-v6-select:last-child{flex:0 0 54px}
/* 地區切換（只限 MDRT）：白 pill + 紅字，唔再用紅色漸變指示器同旗 */
#calcRegionSeg{background:#ebebf0;padding:2px;box-shadow:none;margin-bottom:11px}
#calcRegionSeg .reg-seg-ind{top:2px;bottom:2px;left:2px;width:calc(50% - 2px);border-radius:8px;background:#fff;box-shadow:0 1px 2px rgba(0,0,0,.08)}
#calcRegionSeg .reg-seg-btn{font-size:12.5px;letter-spacing:0;color:#6e6e73;padding:7px 4px}
#calcRegionSeg .reg-seg-btn.active{color:var(--primary)}
#calcRegionSeg .reg-flag{display:none}
/* 按鈕：主掣未有輸入 = disabled 灰；重設 = 淨 icon（44px 觸控寬度） */
#toolPage-calc .calc-btn-row,#toolPage-irr .calc-btn-row{gap:4px;margin:2px 0 14px}
#toolPage-calc .calc-v6-btn,#toolPage-irr .calc-v6-btn{height:42px;padding:0 12px;border-radius:10px;font-size:14.5px;font-weight:700;display:inline-flex;align-items:center;justify-content:center;gap:7px;transition:background .15s,color .15s}
#toolPage-calc .calc-v6-btn:disabled,#toolPage-irr .calc-v6-btn:disabled{background:#e5e5ea;color:#8e8e93;cursor:default}
#toolPage-calc .calc-reset-btn,#toolPage-irr .calc-reset-btn{width:44px;height:42px;padding:0;background:transparent;border:none;border-radius:10px;color:#6e6e73;display:inline-flex;align-items:center;justify-content:center}
#toolPage-calc .calc-reset-btn:active,#toolPage-irr .calc-reset-btn:active{background:#ebebf0}
/* 未計算空狀態 */
.tv2-empty{display:flex;flex-direction:column;align-items:center;gap:8px;padding:26px 22px 28px;border-top:1px solid #e5e5ea;text-align:center}
.tv2-empty svg{color:#aeaeb2}
.tv2-empty-t{font-size:13px;font-weight:700;color:#48484a}
.tv2-empty-d{font-size:11px;line-height:1.6;color:#6e6e73;max-width:240px}
/* 結果卡（MDRT + IRR 共用） */
.tv2-card{background:#fff;border:1px solid #f0f0f0;border-radius:14px;padding:14px;box-shadow:0 1px 3px rgba(0,0,0,.045);margin-bottom:14px}
.tv2-kicker{font-size:11px;font-weight:700;color:#6e6e73;margin-bottom:6px}
.tv2-big{font-size:30px;font-weight:800;letter-spacing:-1.2px;line-height:1;color:var(--primary);margin-bottom:7px;font-variant-numeric:tabular-nums}
.tv2-status{font-size:10.5px;font-weight:600;color:#6e6e73}
.tv2-status.ok{color:#1b6b3a;font-weight:700}
.tv2-hr{height:1px;background:#f0f0f0;margin:12px 0 5px}
.tv2-kv{display:flex;justify-content:space-between;align-items:baseline;gap:10px;padding:5px 0;font-size:11.5px}
.tv2-kv span{color:#636366}
.tv2-kv b{font-weight:700;color:#1c1c1e;text-align:right}
.tv2-kv b.ok{color:#1b6b3a}.tv2-kv b.fail{color:var(--primary)}
.tv2-kv.tv2-line{padding:7px 0;border-top:1px solid #f0f0f0}
.tv2-kv.profit-pos b{color:#1b6b3a}.tv2-kv.profit-neg b{color:var(--primary)}
/* MDRT 結果：外框收走，改平列 */
#toolPage-calc .calc-result-box{margin-top:0;padding:0;background:transparent;border:none;border-radius:0}
#toolPage-calc .calc-encourage{display:none}
#toolPage-calc .calc-prog-section{margin:0 2px 16px}
#toolPage-calc .calc-prog-section-title{font-size:10.5px;font-weight:800;color:#6e6e73;letter-spacing:.3px;text-transform:none;margin-bottom:9px}
#toolPage-calc .calc-prog-item{margin-bottom:9px}
#toolPage-calc .calc-prog-header{margin-bottom:4px}
#toolPage-calc .calc-prog-label{font-size:10.5px;font-weight:700;color:#48484a}
#toolPage-calc .calc-prog-value{font-size:10.5px;font-weight:700;color:#6e6e73}
#toolPage-calc .calc-prog-value.met{color:#1b6b3a}
#toolPage-calc .calc-prog-track{height:5px;border-radius:3px;background:#e5e5ea}
#toolPage-calc .calc-prog-fill{border-radius:3px}
#toolPage-calc .calc-prog-fill.met{background:#1b6b3a}
#toolPage-calc .calc-prog-fill.unmet{background:var(--primary)}
#toolPage-calc .sim-section{margin:0 0 16px;border-top:none;padding-top:0}
.tv2-sim-label{text-align:center;font-size:10.5px;color:#6e6e73}
#toolPage-calc .sim-grid{display:flex;gap:0;margin-top:8px}
#toolPage-calc .sim-card{flex:1;padding:0 6px;background:transparent;border:none;border-radius:0;text-align:center}
#toolPage-calc .sim-card + .sim-card{border-left:1px solid #e5e5ea}
#toolPage-calc .sim-card h4{font-size:10px;font-weight:700;color:#6e6e73;margin:0 0 3px}
#toolPage-calc .sim-val{font-size:18px;font-weight:800;letter-spacing:-.5px;color:#1c1c1e}
/* 要求表：冇格線、冇色底，只用字色；進度條跟緊嗰行（.best）白底 */
#toolPage-calc .calc-table-wrap{margin-top:0;border:none;border-radius:0;overflow-x:visible}
#toolPage-calc .calc-table{background:transparent;font-size:10px;table-layout:fixed}
#toolPage-calc .calc-table th,#toolPage-calc .calc-table td{border:none;border-top:1px solid #e5e5ea;padding:7px 2px;background:transparent;font-weight:700}
#toolPage-calc .calc-table th{border-top:none;font-size:9.5px;font-weight:800;color:#6e6e73;padding-bottom:7px}
#toolPage-calc .calc-table th:first-child,#toolPage-calc .calc-table td:first-child{width:38px;text-align:left;padding-left:6px;color:#48484a}
#toolPage-calc .calc-table th:last-child,#toolPage-calc .calc-table td:last-child{width:38px;color:#6e6e73}
#toolPage-calc .calc-table tbody tr:last-child td{border-bottom:1px solid #e5e5ea}
#toolPage-calc .calc-table .tbl-ok{background:transparent;color:#1b6b3a}
#toolPage-calc .calc-table .tbl-need{background:transparent;color:var(--primary)}
#toolPage-calc .calc-table tr.best td{background:#fff}
#toolPage-calc .calc-table tr.best td:first-child,#toolPage-calc .calc-table tr.best td:last-child{color:#1c1c1e}
.tv2-foot{font-size:10px;color:#6e6e73;text-align:center;margin:14px 0 0}
/* 返回頂部掣（.dg-totop，bottom 78px）：頁底留位，碌到最尾時表格／摘要唔會俾個掣遮住 */
#toolPage-calc .overlay-body,#toolPage-irr .overlay-body{padding-bottom:100px}
/* IRR 結果卡 */
#toolPage-irr .irr-result-box{margin-top:0}
.irr-v2{padding:15px 14px 13px}
.irr-v2-pair{display:flex;gap:13px;padding-bottom:14px}
.irr-v2-col{flex:1;min-width:0}
.irr-v2-lab{font-size:10px;font-weight:800;color:#6e6e73;letter-spacing:.5px;margin-bottom:5px}
.irr-v2 .irr-value{font-size:30px;font-weight:800;letter-spacing:-1.2px;line-height:1;color:#1c1c1e;margin:0;padding:0;font-variant-numeric:tabular-nums}
.irr-v2 .irr-value.red{color:var(--primary)}
.irr-v2-sub{font-size:9.5px;color:#6e6e73;margin-top:4px}
.irr-v2-div{width:1px;background:#f0f0f0;flex-shrink:0}
.irr-v2-tip{display:flex;gap:7px;align-items:flex-start;padding-top:12px;margin-top:5px;border-top:1px solid #f0f0f0;font-size:10.5px;line-height:1.55;color:#636366}
.irr-v2-tip b{color:#1c1c1e}
.irr-v2-tip svg{flex-shrink:0;color:#8e8e93;margin-top:2px}

/* ===================== Tools 改版（2026-09-24）：FX 貨幣換算 淺色版 =====================
   來源：Claude Design 1a（換算器）／3b（揀貨幣 sheet）／3c（市場匯率 tab）。
   設計取捨：冇頁內 numpad（用原生鍵盤）、唔加「常用貨幣對」（用現有「最近使用」）、sheet 暫唔加搜尋。
   範圍只限 #toolPage-fx。備份：HTML record/20260924/…pre-tools-fx_backup.html */
/* 模式切換：白 pill，同 MDRT 地區掣一致 */
#toolPage-fx .fx-seg{background:#ebebf0;border-radius:11px;padding:2px;gap:2px;margin-bottom:11px}
#toolPage-fx .fx-seg-btn{font-size:12.5px;color:#6e6e73;padding:8px 4px;border-radius:9px}
#toolPage-fx .fx-seg-btn.on{background:#fff;color:#1c1c1e;box-shadow:0 1px 2px rgba(0,0,0,.08)}
/* 換算卡：兩行各 64px，成個金額區都撳得（輸入框填滿行高） */
#toolPage-fx .fx-card-wrap{margin-bottom:0}
#toolPage-fx .fx-card{background:#fff;border:1px solid #f0f0f0;border-radius:16px;box-shadow:0 1px 3px rgba(0,0,0,.045)}
#toolPage-fx .fx-row{height:64px;padding:0 14px;gap:10px}
#toolPage-fx .fx-row-to{background:transparent}
#toolPage-fx .fx-divider{margin:0 14px;background:#f0f0f0}
/* 貨幣：代碼＋箭嘴一行，中文名喺下面；冇灰底 chip */
#toolPage-fx .fx-chip{display:grid;grid-template-columns:auto auto;justify-content:start;align-content:center;align-items:center;column-gap:3px;row-gap:2px;flex:0 0 58px;width:58px;min-height:44px;padding:0;background:none;border-radius:6px;text-align:left}
#toolPage-fx .fx-chip:active{background:none;opacity:.55}
#toolPage-fx .fx-chip-code{grid-column:1;grid-row:1;font-size:15px;font-weight:800;letter-spacing:-.2px;color:#1c1c1e}
#toolPage-fx .fx-chip svg{grid-column:2;grid-row:1;stroke:#8e8e93}
#toolPage-fx .fx-chip-name{grid-column:1 / -1;grid-row:2;font-size:10px;font-weight:600;color:#6e6e73;white-space:nowrap}
#toolPage-fx .fx-amt,#toolPage-fx .fx-result-input{height:100%;font-weight:800;letter-spacing:-1.2px;line-height:1;caret-color:var(--primary)}
#toolPage-fx .fx-amt{color:#1c1c1e}
#toolPage-fx .fx-result-input{color:var(--primary)}
/* 對調掣：移到兩個貨幣之間（design 30px 紅圓），觸控範圍用 ::before 撐到 44px */
#toolPage-fx .fx-swap-fab{left:78px;right:auto;width:30px;height:30px;border:3px solid #fff;box-shadow:0 2px 6px rgba(var(--primary-rgb),.3)}
#toolPage-fx .fx-swap-fab::before{content:"";position:absolute;left:50%;top:50%;width:44px;height:44px;transform:translate(-50%,-50%);border-radius:50%}
#toolPage-fx .fx-rate-bar{font-size:10.5px;color:#6e6e73;padding:10px 4px 14px}
#toolPage-fx .fx-rate-sep{color:#aeaeb2}
/* 分區標題（最近使用／快速選擇／保單貨幣） */
#toolPage-fx .fx-pills-lbl,#toolPage-fx .co-fx-title{font-size:10.5px;font-weight:800;color:#6e6e73;letter-spacing:.6px;text-transform:none;margin-bottom:7px}
/* 最近使用：兩欄 chip + 匯率 */
#toolPage-fx .fx-recent-wrap{margin-top:0;overflow:visible;padding:0}
.fxr-grid{display:grid;grid-template-columns:1fr 1fr;gap:7px;margin-bottom:16px}
.fxr-chip{display:flex;align-items:center;gap:5px;min-height:40px;padding:9px 10px;background:#fff;border:1px solid #f0f0f0;border-radius:11px;box-shadow:0 1px 2px rgba(0,0,0,.04);font-family:inherit;font-size:12.5px;color:#1c1c1e;cursor:pointer;text-align:left;-webkit-tap-highlight-color:transparent}
.fxr-chip:active{background:#f4f5f7}
.fxr-chip b{font-weight:800}
.fxr-chip svg{color:var(--primary);flex-shrink:0}
.fxr-rate{margin-left:auto;font-size:9.5px;font-weight:600;color:#6e6e73}
/* 快速選擇換出貨幣：淨代碼 pill，選中黑底 */
#toolPage-fx .fx-pill-grid{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:18px}
#toolPage-fx .fx-pill{padding:9px 14px;border-radius:9px;background:#fff;border:1px solid #ebebf0;font-family:inherit;font-size:12px;font-weight:700;color:#48484a;box-shadow:none;line-height:1.2}
#toolPage-fx .fx-pill.active{background:#1c1c1e;border-color:#1c1c1e;color:#fff;font-weight:800;box-shadow:none}
#toolPage-fx .fx-pill:active{transform:scale(.95)}
/* 保單貨幣：唔再卡入卡，改平列髮絲線 */
#toolPage-fx .co-fx{margin-top:2px;background:transparent;border:none;border-radius:0;box-shadow:none;overflow:visible}
#toolPage-fx .co-fx-hdr{padding:0;align-items:center}
#toolPage-fx .co-fx-hdr > div:first-child{display:flex;align-items:baseline;gap:7px;min-width:0}
#toolPage-fx .co-fx-title{margin-bottom:0}
#toolPage-fx .co-fx-sub{font-size:10px;color:#6e6e73;margin-top:0}
#toolPage-fx .co-fx-refresh{width:40px;height:40px;margin-right:-10px;align-items:center;justify-content:center;color:#6e6e73}
#toolPage-fx .co-fx-rows{border-top:none}
#toolPage-fx .co-fx-row{min-height:44px;padding:11px 2px;border-bottom:1px solid #e5e5ea;background:transparent}
#toolPage-fx .co-fx-row:last-child{border-bottom:none}
#toolPage-fx .co-fx-row:active{background:rgba(0,0,0,.04)}
#toolPage-fx .co-fx-ccy{align-items:center;gap:8px}
#toolPage-fx .co-fx-ccy b{width:38px;font-size:12.5px;font-weight:800;color:#1c1c1e}
#toolPage-fx .co-fx-ccy span{font-size:11px;color:#6e6e73}
#toolPage-fx .co-fx-val{font-size:13.5px;font-weight:800;color:#1c1c1e}
#toolPage-fx .co-fx-row.on{background:transparent}
#toolPage-fx .co-fx-row.on .co-fx-ccy b,#toolPage-fx .co-fx-row.on .co-fx-val{color:var(--primary)}
/* 頁底來源註腳（兩個 tab 各自一段） */
.fx-foot{margin-top:16px;padding-top:14px;border-top:1px solid #e5e5ea;text-align:center;font-size:10px;line-height:1.65;color:#6e6e73}
/* 揀貨幣 sheet（design 3b，冇搜尋） */
#toolPage-fx .fx-picker-hdr{padding:6px 10px 11px 16px;border-bottom:1px solid #f0f0f0}
#toolPage-fx .fx-picker-close{width:40px;height:40px;justify-content:center}
#toolPage-fx .fx-picker-item + .fx-picker-item{border-top:1px solid #f4f4f6}
#toolPage-fx .fx-picker-item-name{color:#6e6e73}
#toolPage-fx .fx-picker-item-other-tag{font-size:9.5px;padding:3px 7px;background:#f4f5f7;color:#636366;letter-spacing:0}

/* ===================== Tools 改版（2026-09-24）：AI 小貼士 =====================
   來源：Claude Design 2c。範圍只限 #toolPage-ai。備份：HTML record/20260924/…pre-tools-ai_backup.html
   同 design 唯一唔同：「複製 Prompt」保留做真掣（改白底紅框），唔縮成細紅字 —— 複製係呢頁最主要嘅動作。 */
/* 搜尋＋標籤列 */
#toolPage-ai .search-input{height:34px;padding-top:0;padding-bottom:0;background-color:#f4f5f7;border:1px solid #e3e4e8;border-radius:9px;font-size:12.5px}
#toolPage-ai .search-input:focus{background-color:#fff;border-color:var(--primary)}
#aiTipCount{color:#6e6e73!important}
#toolPage-ai .ai-filter-tag{padding:6px 12px;border-radius:20px;font-size:11px;font-weight:600;background:#f4f5f7;color:#636366;border:1px solid #ebebf0;font-family:inherit}
#toolPage-ai .ai-filter-tag.active{background:#1c1c1e;color:#fff;border-color:#1c1c1e;font-weight:700}
/* 最新貼士：白卡，紅色只留畀細標籤 */
#toolPage-ai .aitip-featured{background:#fff;border:1px solid #f0f0f0;border-radius:14px;box-shadow:0 1px 3px rgba(0,0,0,.045);margin-bottom:14px;overflow:visible}
#toolPage-ai .aitip-feat-top{background:none;padding:14px 14px 0}
#toolPage-ai .aitip-feat-label{display:flex;align-items:center;gap:6px;font-size:10px;font-weight:800;color:var(--primary);letter-spacing:.5px;margin-bottom:7px;text-transform:none}
#toolPage-ai .aitip-feat-label::before{content:"";width:5px;height:5px;border-radius:50%;background:var(--primary);flex-shrink:0}
#toolPage-ai .aitip-feat-title{font-size:15px;font-weight:800;color:#1c1c1e;line-height:1.4;letter-spacing:-.2px;margin-bottom:8px}
#toolPage-ai .aitip-feat-tag{font-size:9.5px;font-weight:700;padding:3px 8px;border-radius:5px;background:#f4f5f7;color:#636366;margin:0 1px 4px 0}
#toolPage-ai .aitip-feat-body{padding:6px 14px 14px}
#toolPage-ai .aitip-feat-text{font-size:11.5px;line-height:1.65;color:#48484a;margin-bottom:0}
/* 示例 Prompt：髮絲線分區＋灰底 code block */
#toolPage-ai .aitip-prompt{background:none;border:none;border-top:1px solid #f0f0f0;border-radius:0;padding:12px 0 0;margin-top:12px}
#toolPage-ai .aitip-prompt-label{font-size:9.5px;font-weight:800;color:#6e6e73;letter-spacing:.5px;margin-bottom:6px}
#toolPage-ai .aitip-prompt-text{background:#f7f7f9;border-radius:8px;padding:9px 10px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:10.5px;line-height:1.55;color:#48484a;margin-bottom:9px}
#toolPage-ai .aitip-copy{display:flex;align-items:center;justify-content:center;width:100%;height:38px;padding:0;background:#fff;color:var(--primary);border:1px solid rgba(var(--primary-rgb),.35);border-radius:9px;font-family:inherit;font-size:12px;font-weight:700}
#toolPage-ai .aitip-copy:active{background:rgba(var(--primary-rgb),.06)}
#toolPage-ai .aitip-copy.copied{background:#fff;color:#1b6b3a;border-color:rgba(27,107,58,.4)}
/* 其餘貼士：一張卡入面平列可展開行 */
.aitip-list{background:#fff;border:1px solid #f0f0f0;border-radius:14px;box-shadow:0 1px 3px rgba(0,0,0,.045);padding:0 14px}
#toolPage-ai .aitip-small-expanded{background:none;border:none;border-radius:0;margin:0;overflow:visible}
#toolPage-ai .aitip-small-expanded + .aitip-small-expanded{border-top:1px solid #f0f0f0}
#toolPage-ai .aitip-small-expanded-head{gap:9px;padding:13px 0;min-height:44px;-webkit-tap-highlight-color:transparent}
#toolPage-ai .aitip-small-dot{width:5px;height:5px;background:#c4c4c9}
#toolPage-ai .aitip-small-title{font-size:12.5px;font-weight:700;line-height:1.4;color:#1c1c1e}
#toolPage-ai .aitip-small-tag{font-size:9.5px;font-weight:700;padding:0;background:none;color:#6e6e73}
#toolPage-ai .aitip-acc-body-inner{padding:0 0 14px 14px;border-top:none}
#toolPage-ai .aitip-small-expanded-text{font-size:11.5px;line-height:1.65;color:#48484a;padding-top:0;margin-bottom:0}

/* ===================== 今日新聞 方案 B＋（2026-09-24）=====================
   一條地區分段掣（同工具頁一樣嘅灰底白 pill）；地區標籤改淺灰（只喺「全部」顯示）；
   來源／時間 10px #6e6e73；新新聞紅點（冇字）；已讀標題變灰；標題最多兩行；↗ 外部連結。
   JS 喺「今日新聞 方案 B＋」註釋區（buildNewsTagRow／renderNewsPool）。備份：…pre-news-bplus_backup.html */
#page-home .nseg{display:flex;gap:2px;background:#ebebf0;border-radius:10px;padding:2px;margin-bottom:9px}
#page-home .nseg-btn{flex:1;min-width:0;padding:7px 2px;border:none;border-radius:8px;background:none;font-family:inherit;font-size:12px;font-weight:700;color:#6e6e73;cursor:pointer;-webkit-tap-highlight-color:transparent;transition:background .15s,color .15s}
#page-home .nseg-btn.on{background:#fff;color:#1c1c1e;box-shadow:0 1px 2px rgba(0,0,0,.08)}
#page-home .news-item{padding:11px 12px}
#page-home .news-top{gap:5px;margin-bottom:4px;white-space:nowrap}
#page-home .news-dot{width:6px;height:6px;border-radius:50%;background:var(--primary);flex-shrink:0}
#page-home .news-cat{font-size:9.5px;font-weight:700;padding:2px 6px;border-radius:5px;background:#f1f1f4;color:#48484a}
#page-home .news-src{font-size:10px;color:#6e6e73}
#page-home .news-date{font-size:10px;color:#6e6e73;display:inline-flex;align-items:center;gap:4px}
#page-home .news-date svg{color:#aeaeb2;flex-shrink:0}
#page-home .news-title{font-size:12.5px;line-height:1.45;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
#page-home .news-item.read .news-title{color:#6e6e73;font-weight:500}
#page-home .news-more{display:flex;align-items:center;justify-content:center;gap:5px;min-height:40px;border-radius:12px;border:1px solid #f0f0f0;font-weight:700}
#page-home .news-more.news-collapse{color:#6e6e73}

/* ===================== 投保 FNA 方案 B（2026-09-25）=====================
   自己地區主卡＋紅色「開啟 FNA」掣；其他地區一行；登入須知兩步。白卡、髮絲線，同其他工具頁一致。
   舊 .fna-intro／.fna-region-*／.fna-tip CSS 已冇人用（保留未刪）。備份：HTML record/20260925/…pre-fna-b_backup.html */
#fnaBody{padding-top:14px}
.fnab-ttl{font-size:17px;font-weight:800;letter-spacing:-.3px;color:#1c1c1e;margin:0 2px 4px}
.fnab-desc{font-size:11.5px;line-height:1.6;color:#636366;margin:0 2px 16px}
.fnab-lbl{font-size:10.5px;font-weight:800;color:#6e6e73;letter-spacing:.6px;margin:0 2px 8px}
.fnab-flag{display:inline-flex;flex-shrink:0;line-height:0}
.fnab-flag svg{width:38px;height:auto;border-radius:5px}
.fnab-primary{background:#fff;border:1px solid #f0f0f0;border-radius:16px;box-shadow:0 1px 3px rgba(0,0,0,.045);padding:14px;margin-bottom:18px}
.fnab-p-top{display:flex;align-items:center;gap:11px;margin-bottom:13px}
.fnab-p-info{flex:1;min-width:0}
.fnab-p-nm{font-size:16px;font-weight:800;color:#1c1c1e;display:flex;align-items:center;gap:6px}
.fnab-p-sb{font-size:10.5px;color:#6e6e73;margin-top:2px}
.fnab-mine{font-size:9.5px;font-weight:700;color:#48484a;background:#f1f1f4;padding:2px 6px;border-radius:5px}
.fnab-go{display:flex;align-items:center;justify-content:center;gap:6px;width:100%;height:44px;border-radius:11px;background:var(--primary);color:#fff;font-size:14px;font-weight:700;text-decoration:none;-webkit-tap-highlight-color:transparent}
.fnab-go:active{filter:brightness(.9)}
.fnab-row{display:flex;align-items:center;gap:10px;min-height:48px;padding:11px 12px;background:#fff;border:1px solid #f0f0f0;border-radius:12px;box-shadow:0 1px 2px rgba(0,0,0,.035);text-decoration:none;color:#1c1c1e;margin-bottom:8px;-webkit-tap-highlight-color:transparent}
.fnab-row:active{background:#fafafb}
.fnab-row .fnab-flag svg{width:28px;border-radius:4px}
.fnab-row-nm{font-size:13px;font-weight:700}
.fnab-row-sb{font-size:10.5px;color:#6e6e73;margin-left:auto}
.fnab-ext{color:#aeaeb2;display:flex;flex-shrink:0}
.fnab-row + .fnab-lbl{margin-top:18px}
.fnab-steps{list-style:none;counter-reset:fnas;background:#fff;border:1px solid #f0f0f0;border-radius:14px;padding:2px 14px;margin:0}
.fnab-steps li{counter-increment:fnas;display:flex;gap:10px;padding:11px 0;border-top:1px solid #f0f0f0;font-size:11.5px;line-height:1.55;color:#48484a}
.fnab-steps li:first-child{border-top:none}
.fnab-steps li::before{content:counter(fnas);flex-shrink:0;width:18px;height:18px;border-radius:50%;background:#f1f1f4;color:#48484a;font-size:10.5px;font-weight:800;display:flex;align-items:center;justify-content:center;margin-top:1px}
.fnab-steps b{color:#1c1c1e}
.fnab-steps small{display:block;font-size:10.5px;color:#6e6e73;margin-top:2px}

/* ===================== 內地客戶開戶及匯款指南（2026-09-29）=====================
   步驟清單（排版 A）＋縮圖＋分享／下載＋全屏預覽。class 前綴 gd-，範圍 #toolPage-guide。
   工具入口第 6 張卡（AI Tips 隱藏咗做第 5 張）要補 popIn delay。備份：HTML record/20260929/…pre-client-guide_backup.html */
#toolsPage.show .tool-entry-card:nth-child(6){animation-delay:.40s}
/* 工具卡右上角「NEW」（2026-09-29 團隊要求加喺指南卡；想拎走就刪卡入面個 span） */
.tool-new-badge{position:absolute;top:10px;right:12px;font-size:9.5px;font-weight:800;letter-spacing:.4px;line-height:1;color:#fff;background:var(--primary);padding:4px 7px;border-radius:999px;box-shadow:0 1px 4px rgba(var(--primary-rgb),.3);pointer-events:none}
#guideBody{padding-top:12px;padding-bottom:28px}
.gd-intro{background:#fff;border:1px solid #f0f0f0;border-radius:14px;padding:12px 13px 8px;margin-bottom:16px;box-shadow:0 1px 3px rgba(0,0,0,.04)}
.gd-t1{font-size:14.5px;font-weight:800;color:#1c1c1e;margin-bottom:4px}
.gd-reg{display:inline-block;margin-left:6px;vertical-align:2px;font-size:10px;font-weight:700;color:#C0561A;background:#FDEBDD;border-radius:999px;padding:2px 7px}
.gd-t2{font-size:11.5px;line-height:1.42;color:#636366}
.gd-tip{display:flex;align-items:center;gap:6px;margin-top:8px;padding-top:7px;line-height:1.3;border-top:1px solid #f0f0f0;font-size:11px;font-weight:600;color:#48484a}
.gd-tip svg{color:#8e8e93;flex-shrink:0}
/* 客戶網頁版連結（2026-10-06，方案 B：併入簡介卡底） */
.gd-web{display:flex;align-items:center;gap:8px;margin-top:8px;padding:8px 0 4px;border-top:1px solid #f0f0f0}
.gd-web-ic{width:28px;height:28px;border-radius:8px;background:#FDEBDD;color:#C0561A;display:flex;align-items:center;justify-content:center;flex-shrink:0}
.gd-web-lk{flex:1;min-width:0;display:flex;align-items:center;gap:8px;min-height:36px;text-decoration:none;color:inherit;-webkit-tap-highlight-color:transparent}
.gd-web-lk:active{opacity:.6}
.gd-web-tx{flex:1;min-width:0;line-height:1.3}
.gd-web-tx b{display:flex;align-items:center;gap:3px;font-size:12px;color:var(--primary);text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:2px}
.gd-web-tx b svg{flex-shrink:0}
.gd-web-tx span{font-size:10.5px;color:#6e6e73}
.gd-web-btn{height:28px;padding:0 10px;border-radius:8px;font-family:inherit;font-size:11.5px;font-weight:700;border:1px solid #e3e4e8;background:#fff;color:#48484a;flex-shrink:0;cursor:pointer;-webkit-tap-highlight-color:transparent}
.gd-web-btn:active{background:#f4f5f7}
.gd-web-btn.p{background:rgba(var(--primary-rgb),.08);border-color:transparent;color:var(--primary)} /* 2026-10-06 方案 1：淡紅底，唔用實心紅（太搶眼） */
.gd-web-btn.p:active{background:rgba(var(--primary-rgb),.15)}
.gd-lbl{font-size:10.5px;font-weight:800;color:#6e6e73;letter-spacing:.5px;margin:0 2px 8px}
.gd-st{display:grid;grid-template-columns:30px 1fr;column-gap:10px;position:relative;padding-bottom:12px}
.gd-st::before{content:"";position:absolute;left:14px;top:30px;bottom:0;width:2px;background:#e3e3e8}
.gd-st:last-child::before{display:none}
.gd-num{width:30px;height:30px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:13px;font-weight:800;background:#e9e9ee;color:#6e6e73;position:relative;z-index:1}
.gd-st:not(.empty) .gd-num{background:var(--primary);color:#fff}
.gd-sh{display:flex;flex-direction:column;justify-content:center;min-height:36px;text-align:left;background:none;border:none;padding:0;font-family:inherit;cursor:pointer;-webkit-tap-highlight-color:transparent}
.gd-s1{font-size:14px;font-weight:800;color:#1c1c1e;line-height:1.3}
.gd-s2{font-size:11px;color:#6e6e73;margin-top:1px}
.gd-st.empty .gd-s1{color:#6e6e73;font-weight:700}
.gd-sc{grid-column:2;margin-top:10px;display:flex;flex-direction:column;gap:8px}
.gd-it{display:flex;gap:10px;background:#fff;border:1px solid #f0f0f0;border-radius:14px;box-shadow:0 1px 3px rgba(0,0,0,.04);padding:10px}
.gd-thumb{width:62px;height:96px;border-radius:9px;overflow:hidden;flex-shrink:0;background:#f1f1f4;border:1px solid #ececf0;padding:0;cursor:zoom-in}
.gd-thumb img{width:100%;height:100%;object-fit:cover;object-position:top;display:block;-webkit-touch-callout:none;-webkit-user-select:none;user-select:none} /* 縮圖只得 240px：禁止長按儲存，免得發咗模糊圖俾客；要存就撳入去原圖 */
.gd-inf{flex:1;min-width:0;display:flex;flex-direction:column}
.gd-n1{font-size:13.5px;font-weight:800;color:#1c1c1e;line-height:1.35}
.gd-n2{font-size:11px;color:#6e6e73;margin-top:2px;line-height:1.5}
.gd-acts{display:flex;gap:6px;margin-top:auto;padding-top:8px}
.gd-btn{display:inline-flex;align-items:center;justify-content:center;gap:5px;height:38px;padding:0 12px;border-radius:9px;font-family:inherit;font-size:12.5px;font-weight:700;border:none;cursor:pointer;-webkit-tap-highlight-color:transparent}
.gd-share{background:var(--primary);color:#fff;flex:1}
.gd-share:active{filter:brightness(.9)}
/* 步驟清單入面嘅分享／儲存：淡紅底、細啲（2026-10-06）；全屏預覽底部（.gd-vb）維持實心紅 */
.gd-acts .gd-btn{height:34px;font-size:12px}
.gd-acts .gd-share{background:rgba(var(--primary-rgb),.08);color:var(--primary)}
.gd-acts .gd-share:active{filter:none;background:rgba(var(--primary-rgb),.15)}
.gd-save{padding:0 11px;background:#fff;border:1px solid #e3e4e8;color:#48484a;flex-shrink:0}
.gd-save:active{background:#f4f5f7}
.gd-all{display:flex;align-items:center;justify-content:center;gap:6px;height:42px;border-radius:11px;border:1px solid rgba(var(--primary-rgb),.35);background:#fff;color:var(--primary);font-family:inherit;font-size:12.5px;font-weight:700;cursor:pointer}
.gd-all:active{background:rgba(var(--primary-rgb),.06)}
.gd-ph{text-align:center;padding:22px 14px;color:#6e6e73;font-size:12px;background:#fff;border:1px dashed #d8d8dc;border-radius:12px}
.gd-disc{font-size:10.5px;color:#6e6e73;text-align:center;margin-top:6px;white-space:nowrap}
/* 全屏預覽：白色頂 bar／底 bar（同 App header 一致，唔再黑色） */
.gd-viewer{position:absolute;inset:0;background:#f5f5f7;z-index:30;display:flex;flex-direction:column;opacity:0;pointer-events:none;transition:opacity .2s ease}
.gd-viewer.show{opacity:1;pointer-events:auto}
.gd-vh{display:flex;align-items:center;padding:calc(4px + var(--safe-top,0px)) 4px 4px;background:#fff;border-bottom:1px solid #e5e5ea;color:#1c1c1e;flex-shrink:0}
.gd-vx{width:44px;height:44px;display:flex;align-items:center;justify-content:center;background:none;border:none;color:#48484a;cursor:pointer}
.gd-vt{flex:1;text-align:center;font-size:15px;font-weight:700;color:#1c1c1e;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.gd-vhint{display:flex;align-items:center;justify-content:center;gap:6px;padding:8px 12px;background:#fff;border-bottom:1px solid #f0f0f0;font-size:11.5px;font-weight:700;color:#48484a;flex-shrink:0}
.gd-vhint svg{color:var(--primary);flex-shrink:0}
.gd-vs{flex:1;overflow-y:auto;-webkit-overflow-scrolling:touch}
.gd-vs img{width:100%;display:block;-webkit-touch-callout:default} /* 原圖：長按可「加入照片」 */
.gd-vb{display:flex;gap:8px;padding:10px 12px calc(12px + var(--safe-bottom,0px));background:#fff;border-top:1px solid #e5e5ea;flex-shrink:0}
.gd-vb .gd-btn{height:44px;font-size:13.5px}
.gd-vsave{background:#fff;border:1px solid #e3e4e8;color:#48484a;padding:0 14px}
.gd-toast{position:absolute;left:50%;bottom:calc(84px + var(--safe-bottom,0px));transform:translateX(-50%);background:#1c1c1e;color:#fff;font-size:12px;font-weight:600;padding:9px 14px;border-radius:999px;white-space:nowrap;opacity:0;transition:opacity .2s;z-index:31;pointer-events:none;box-shadow:0 4px 14px rgba(0,0,0,.25)}
.gd-toast.show{opacity:1}

/* ═══════════ iPad／闊螢幕版面（2026-09-29）═══════════
   applyScale：闊 ≥600 兼高 ≥500 → html.wide（寬畫布，固定 ×1.15）；邏輯闊 <860 再加 .wide-rail（icon 欄）。
   --side-w = 側欄闊（220／76）。手機完全唔受影響：下面規則全部 scope 喺 html.wide。 */
.side-nav{display:none}
html.wide #app>header,html.wide #app>.nav{display:none!important}
html.wide #app{flex-direction:row}
html.wide .content{flex:1;min-width:0}
html.wide .side-nav{display:flex;flex-direction:column;flex:0 0 var(--side-w);width:var(--side-w);height:100%;background:var(--card);border-right:1px solid var(--border);padding:14px 12px 12px;overflow-y:auto;overflow-x:hidden;position:relative;z-index:4;scrollbar-width:none}
.side-nav::-webkit-scrollbar{display:none}
.sn-brand{display:flex;align-items:center;gap:10px;width:100%;padding:2px 8px 16px;border:0;background:none;cursor:pointer;text-align:left;font:inherit}
.sn-logo{width:32px;height:32px;flex:0 0 32px;display:flex;align-items:center;justify-content:center}
.sn-logo img{width:30px;height:30px;object-fit:contain}
.sn-who{min-width:0;display:flex;flex-direction:column}
.sn-title{font-size:15px;font-weight:800;color:var(--text);line-height:1.2;letter-spacing:-.2px}
.sn-sub{font-size:11.5px;color:#6e6e73;margin-top:1px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.sn-list{display:flex;flex-direction:column;gap:2px;flex:1}
.sn-item{display:flex;align-items:center;gap:11px;width:100%;min-height:42px;padding:0 10px;border:0;background:none;border-radius:11px;color:#48484a;font:inherit;font-size:14px;font-weight:600;cursor:pointer;text-align:left;position:relative;transition:background .15s,color .15s}
.sn-item svg{width:20px;height:20px;flex:0 0 20px;stroke:currentColor}
.sn-item:active{background:var(--bg)}
.sn-item.on{background:rgba(var(--primary-rgb),.09);color:var(--primary)}
.sn-item[hidden]{display:none!important}
.sn-lb{flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.sn-sh{display:none}
.sn-badge{display:none;min-width:19px;height:19px;padding:0 6px;border-radius:10px;background:var(--primary);color:#fff;font-size:11px;font-weight:700;line-height:19px;text-align:center;font-variant-numeric:tabular-nums}
.sn-badge.show{display:inline-block}
.sn-badge.dot{min-width:8px;width:8px;height:8px;padding:0;margin-right:6px}
.sn-sep{font-size:11px;font-weight:700;color:#6e6e73;letter-spacing:.08em;padding:16px 10px 6px}
.sn-foot{display:flex;align-items:center;justify-content:space-between;gap:6px;border-top:1px solid var(--border);padding:10px 0 0;margin-top:12px}
.sn-region{display:flex;align-items:center;gap:8px;min-height:42px;border:0;background:none;font:inherit;font-size:13px;font-weight:600;color:#48484a;cursor:pointer;padding:0 10px;border-radius:11px}
.sn-region:active{background:var(--bg)}
.sn-flag{display:flex}
.sn-flag svg{width:24px;height:16px;display:block;border-radius:3px}
.sn-gear{width:42px;flex:0 0 42px;justify-content:center;padding:0}
/* 左下角帳戶行（2026-10-02）：用 #sideNav 加重，蓋過 .sn-item／iPad 優化 2 嘅 svg、高度規則 */
#sideNav .sn-foot{padding-top:8px}
#sideNav .sn-me{min-height:54px;gap:10px;padding:0 8px;font-weight:600}
#sideNav .sn-av-w{position:relative;flex:0 0 34px;width:34px;height:34px}
#sideNav .sn-av{width:34px;height:34px;border-radius:50%;background:var(--primary);color:#fff;display:flex;align-items:center;justify-content:center;font-size:12.5px;font-weight:800;letter-spacing:.3px}
#sideNav .sn-me-t{flex:1;min-width:0;display:flex;flex-direction:column;gap:3px}
#sideNav .sn-me-n{font-size:13.5px;font-weight:700;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:1.2}
#sideNav .sn-me-r{display:flex;align-items:center;gap:5px;font-size:11.5px;font-weight:500;color:#6e6e73;line-height:1.2}
#sideNav .sn-me svg.sn-me-gear{width:18px;height:18px;flex:0 0 18px;color:#aeaeb2}
#sideNav .sn-me.on{color:var(--text)}
#sideNav .sn-me.on svg.sn-me-gear,#sideNav .sn-me.on .sn-me-n{color:var(--primary)}
html.wide #heroAvatar{display:none!important}
/* icon 欄（直向 iPad）*/
html.wide-rail .side-nav{padding:12px 8px 10px;align-items:center}
html.wide-rail .sn-brand{justify-content:center;padding:2px 0 12px}
html.wide-rail .sn-who,html.wide-rail .sn-lb,html.wide-rail .sn-rname{display:none}
html.wide-rail .sn-sh{display:block;font-size:10.5px;font-weight:600;line-height:1.2;white-space:nowrap}
html.wide-rail .sn-item{flex-direction:column;justify-content:center;gap:4px;width:60px;min-height:56px;padding:6px 0;text-align:center}
html.wide-rail .sn-item.on{font-weight:700}
html.wide-rail .sn-badge{position:absolute;top:3px;left:36px;min-width:17px;height:17px;line-height:17px;font-size:10px;padding:0 5px}
html.wide-rail .sn-badge.dot{min-width:8px;height:8px;top:6px;left:38px;margin:0}
html.wide-rail .sn-sep{width:32px;height:1px;background:var(--border);padding:0;margin:10px 0}
html.wide-rail .sn-sep span{display:none}
html.wide-rail .sn-foot{flex-direction:column;width:60px;padding-top:8px}
html.wide-rail .sn-region{padding:0;width:60px;justify-content:center}
html.wide-rail .sn-gear{width:60px;flex:none;min-height:44px}
html.wide-rail #sideNav .sn-me-t,html.wide-rail #sideNav .sn-me svg.sn-me-gear{display:none}
html.wide-rail #sideNav .sn-me{width:60px;min-height:56px;padding:0;justify-content:center}
/* overlay 頁：已由 applyScale 移去側欄右邊；內文限闊置中 */
html.wide .overlay-body{padding:16px max(24px,calc((100% - 720px)/2)) 40px}
html.wide .overlay-hdr{padding-left:20px;padding-right:20px}
/* 內容頁：限闊置中 */
html.wide .content .page{max-width:760px;margin:0 auto}
/* ── 主頁：兩欄 grid（紅 hero 全闊；重點卡｜數字卡；最近活動｜金融摘要；新聞全闊）；快速入口收起（側欄已有）── */
html.wide #page-home{max-width:940px;padding:0 24px 28px}
html.wide #page-home.active{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);column-gap:18px;row-gap:22px;align-items:start}
html.wide #page-home>*{min-width:0}
/* 紅 hero：box-shadow 伸去內容區兩邊（全闊紅底），clip-path 只准橫向伸 */
html.wide #page-home>.home-hero{grid-column:1/-1;margin:0 -24px;padding:20px 24px 70px!important;box-shadow:0 0 0 100vmax var(--primary);clip-path:inset(0 -100vmax)}
html.wide #page-home>.hero-feature{margin:-70px 0 0;align-self:stretch}
html.wide #page-home>.section{padding:0;margin-top:0!important}
html.wide #page-home>.section:has(#statRow){margin-top:-70px!important;align-self:stretch}
html.wide #page-home>.section:has(#statRow) .section-header,html.wide #page-home .quick-grid{display:none}
html.wide #page-home #statRow{margin-top:0!important;height:100%}
html.wide #page-home>.section:has(#newsList){grid-column:1/-1}
html.wide #page-home>div[style*="height:8px"]{display:none}
html.wide .home-greet{font-size:24px}
/* 內容區做 container，下面用 @container 按「內容區」闊度（唔係螢幕闊度）轉版面 */
html.wide .content{container:main / inline-size}
/* ── 頁面標題（iPad 冇頂部 header；手機維持 sr-only）── */
html.wide #page-signup>.page-header,html.wide #page-announce>.page-header{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto;white-space:normal;padding:24px 14px 6px}
html.wide .page-header h2{font-size:24px;font-weight:800;color:var(--text);letter-spacing:-.3px;line-height:1.25}
/* ── 報名：卡片兩欄 ── */
html.wide #page-signup{max-width:940px}
html.wide #evList{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;align-items:start;padding:4px 14px 20px}
html.wide #evList>*{margin:0!important;min-width:0}
html.wide #evList>:not(.card){grid-column:1/-1}
/* ── 公告：左清單（兩行摘要）右詳情 ── */
.ann-detail{display:none}
html.wide #page-announce{max-width:1000px}
html.wide #page-announce.active{display:grid;grid-template-columns:minmax(300px,40%) minmax(0,1fr);grid-template-rows:auto auto 1fr;column-gap:18px;align-items:start}
html.wide #page-announce>.page-header{grid-column:1/-1}
html.wide #page-announce>.search-wrap{grid-column:1;padding:8px 0 4px 14px}
html.wide #page-announce>#annList{grid-column:1;padding:8px 0 20px 14px}
html.wide #annList .ann-card{cursor:pointer;transition:box-shadow .15s}
html.wide #annList .ann-card.sel{box-shadow:0 0 0 2px var(--primary);border-color:transparent}
html.wide #annList .ann-body{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;white-space:normal}
html.wide #annList .ann-more,html.wide #annList .ann-links{display:none}
html.wide .ann-detail .ann-links{margin-top:16px}
html.wide #page-announce>.ann-detail{display:block;grid-column:2;grid-row:2/span 2;position:sticky;top:14px;margin:8px 14px 20px 0;max-height:calc(var(--app-h,100vh) - 28px);overflow-y:auto;background:var(--card);border:1px solid var(--border2);border-radius:16px;box-shadow:var(--shadow-sm);padding:22px 24px 26px;overscroll-behavior:contain}
html.wide #page-announce:not(:has(.ann-card)) .ann-detail,html.wide .ann-detail.empty{display:none}
.ad-top{display:flex;align-items:center;gap:8px;margin-bottom:8px}
.ad-meta{font-size:12px;color:#6e6e73}
.ad-title{font-size:19px;font-weight:800;color:var(--text);line-height:1.4;margin:0 0 14px}
.ad-body{font-size:14.5px;line-height:1.8;color:#3a3a3c;white-space:pre-line;word-break:break-word;max-width:62ch}
/* ── 日曆：格仔變大寫活動名；本月概覽兩欄；夠闊（內容區 ≥960）就概覽擺右邊 ── */
.cal-lbls{display:none}
html.wide #page-calendar{max-width:1040px}
html.wide .cal-wrap{padding:24px 14px 20px}
html.wide .cal-grid{padding:8px 10px 10px;row-gap:4px;column-gap:4px}
html.wide .cal-dow{font-size:12px;padding:4px 0 6px}
html.wide .cal-day{min-height:86px!important;justify-content:flex-start!important;align-items:stretch!important;padding:6px!important;text-align:left;font-size:13px;min-width:0;cursor:pointer}
html.wide .cal-day>div:first-child{align-self:flex-start;min-width:24px;height:24px;border-radius:12px;display:flex;align-items:center;justify-content:center;font-weight:600;font-variant-numeric:tabular-nums}
html.wide .cal-day.today{background:transparent!important;color:var(--text)!important}
html.wide .cal-day.today>div:first-child{background:var(--primary);color:#fff;font-weight:700}
html.wide .cal-day.selected,html.wide .cal-day.today.selected{background:rgba(var(--primary-rgb),.07)!important;box-shadow:inset 0 0 0 2px var(--primary)}
html.wide .cal-day.other-month{cursor:default}
html.wide .cal-dot-row{display:none!important}
html.wide .cal-lbls{display:flex;flex-direction:column;gap:3px;margin-top:4px;min-width:0}
.cal-lbl{display:block;font-size:10.5px;font-weight:600;line-height:1.4;padding:1px 5px;border-radius:4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:var(--c);background:#f4f4f6;background:color-mix(in srgb,var(--c) 12%,#fff)}
.cal-lbl-more{font-size:10.5px;font-weight:600;color:#6e6e73;padding:0 5px}
html.wide #calEventsList{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;align-items:start;padding-top:6px}
html.wide #calEventsList>*{margin:0!important;min-width:0}
html.wide #calEventsList>.cal-status-bar,html.wide #calEventsList>:not(.ov-card){grid-column:1/-1}
/* ── 會議室預約：唔使轉 tab —— 一週總覽＋我的預約同時見到（撳格仔照用原有預約彈窗）── */
html.wide .overlay-page{container:ov / inline-size}
html.wide #roomPage .rb-segmented,html.wide #rbSlotView{display:none!important}
html.wide #rbWeekView,html.wide #rbMineView{display:block!important}
html.wide #roomPage>.overlay-body{display:grid!important;grid-template-columns:minmax(0,1fr);grid-auto-rows:max-content;row-gap:18px;align-content:start;padding:20px 24px 32px!important}
html.wide #rbWeekView{order:1}
html.wide #rbMineView{order:2}
html.wide #rbMineView::before{content:"我的預約";display:block;font-size:15px;font-weight:800;color:var(--text);margin:0 2px 10px}
@container ov (min-width:820px){
  #roomPage>.overlay-body{grid-template-columns:minmax(0,1fr) 290px!important;column-gap:20px;align-items:start}
  #rbWeekView{grid-column:1;grid-row:1}
  #rbMineView{grid-column:2;grid-row:1;position:sticky;top:0}
}
/* ── Cold Call：名單卡兩欄（進度／篩選／總覽照全闊）；揀禮品、須知由底部 sheet 變置中對話框 ── */
html.wide #cclBody{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-auto-rows:max-content;column-gap:12px;row-gap:10px;align-content:start;align-items:start}
html.wide #cclBody>*{min-width:0}
html.wide #cclBody>:not(.ccl-lead){grid-column:1/-1}
html.wide #cclBody>.ccl-lead{margin:0}
html.wide #cclTop{bottom:24px;right:24px}
html.wide #cclTerms,html.wide #cclGiftPicker{align-items:center;justify-content:center;padding:24px}
html.wide .cclt-sheet{max-width:520px;border-radius:18px}
html.wide .cgp-sheet{max-width:600px;height:min(88%,720px);border-radius:18px}
@container main (min-width:960px){
  .cal-wrap{display:grid;grid-template-columns:minmax(0,1fr) 300px;column-gap:18px;align-items:start}
  .cal-wrap>.cal-box{margin-bottom:0}
  #calEventsList{grid-template-columns:1fr!important;position:sticky;top:14px;max-height:calc(var(--app-h,100vh) - 28px);overflow-y:auto;padding-top:0!important}
}
/* 返回頂部掣：冇底部 nav，貼返落底 */
html.wide .cal-totop{bottom:24px;right:24px}
html.wide .dg-totop{bottom:24px;right:24px}
html.wide .toast-host{bottom:32px}
/* 由底彈上嘅 sheet → 限闊置中（唔好成個闊螢幕咁闊） */
html.wide .cal-lp-sheet{left:var(--side-w);right:0;margin:0 auto;max-width:520px;border-radius:18px 18px 0 0}
html.wide .fx-picker-sheet{margin:0 auto;max-width:520px}
html.wide .rb-modal{max-width:480px}

/* ═══════════ 雜險保單 Non-Life Insurance（2026-09-29）═══════════
   跟 demo v8：按急緩分段、險種淺色 pill、淺色到期 pill；手機清單→詳情；iPad 左清單右詳情；sheet 按鈕區底 30px（同 Cold Call）。 */
/* 測試期（INS_BETA）：只有名單內嘅人（html.ins-on）見到雜險；其他人首頁／側欄同未加雜險之前一樣 */
html:not(.ins-on) #insCard,html:not(.ins-on) #sideNav [data-sn="ins"]{display:none!important}
/* 首頁數字卡：冇 Cold Call 名單（#coldCard.muted）就收起 Cold Call 卡；三張並排時縮細（同雜險卡一齊上，所以都跟 ins-on）*/
html.ins-on #statRow{grid-template-columns:none;grid-auto-flow:column;grid-auto-columns:minmax(0,1fr)}
html.ins-on #statRow>#coldCard.muted{display:none}
html.ins-on #statRow:not(:has(#coldCard.muted)) .stat-card{padding:10px 9px 9px}
html.ins-on #statRow:not(:has(#coldCard.muted)) .stat-top{margin-bottom:8px}
html.ins-on #statRow:not(:has(#coldCard.muted)) .stat-num{font-size:19px}
html.ins-on #statRow:not(:has(#coldCard.muted)) .stat-unit{font-size:9.5px;margin-left:2px}
html.ins-on #statRow:not(:has(#coldCard.muted)) .stat-label{font-size:10.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

#insPage [hidden]{display:none!important}   /* app 冇全局 [hidden] 規則，.ins-fl 嘅 display:flex 會蓋過 hidden */
#insPage .overlay-body{padding:10px 12px 28px;background:var(--bg)}
.ins-hr{display:flex;align-items:center;justify-content:flex-end;min-width:28px}
html.wide #insPage>.overlay-hdr .ins-hx{display:none}   /* iPad 側欄已有，唔使 ✕（同會議室）*/
/* header 右邊掣跟 .overlay-close 一樣 28×28（其他頁 header 同高，唔會一入詳情就變高）*/
.ins-hplus{width:28px;height:28px;border-radius:50%;background:var(--primary);color:#fff;border:0;display:grid;place-items:center;cursor:pointer;padding:0}
.ins-hplus .ins-i{width:16px;height:16px;stroke-width:2.6}
.ins-hbtn{width:28px;height:28px;border:0;background:none;color:var(--text3);display:grid;place-items:center;cursor:pointer;padding:4px;box-sizing:border-box}
.ins-hbtn .ins-i{width:20px;height:20px}
.ins-i{width:18px;height:18px;flex:none}
.ins-i-edit{stroke-width:1.7}
.ins-seg2{display:flex;background:#e9e9ee;border-radius:11px;padding:3px;margin-bottom:10px}
.ins-seg2 button{flex:1;padding:6px 0;border-radius:9px;font:inherit;font-size:12.5px;font-weight:700;color:#8e8e93;border:0;background:none;cursor:pointer}
.ins-seg2 button.on{background:#fff;color:var(--text);box-shadow:0 1px 3px rgba(0,0,0,.08)}
.ins-kpis{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin-bottom:10px}
.ins-kpi{background:var(--card);border-radius:12px;padding:8px 10px;border:1px solid var(--border2)}
.ins-kpi b{display:block;font-size:19px;font-weight:800;line-height:1.15;font-variant-numeric:tabular-nums;color:var(--text)}
.ins-kpi small{font-size:10.5px;color:#6e6e73;font-weight:600}
.ins-kpi.over b{color:var(--primary)}
.ins-kpi.soon b{color:#955800}
.ins-chips{display:flex;gap:6px;overflow-x:auto;scrollbar-width:none;margin-bottom:8px;padding-bottom:1px}
.ins-chips::-webkit-scrollbar{display:none}
.ins-chip{flex:none;border:1.5px solid #e5e5ea;background:#fff;border-radius:999px;padding:4px 10px;font:inherit;font-size:11.5px;font-weight:700;color:var(--text2);cursor:pointer}
.ins-chip em{font-style:normal;color:#8e8e93;margin-left:3px;font-variant-numeric:tabular-nums}
.ins-chip.on{background:var(--text);border-color:var(--text);color:#fff}
.ins-chip.on em{color:rgba(255,255,255,.7)}
.ins-srch{display:flex;align-items:center;gap:6px;background:#fff;border:1px solid #e5e5ea;border-radius:10px;padding:0 10px;height:34px;margin-bottom:10px;color:#8e8e93}
.ins-srch .ins-i{width:15px;height:15px}
.ins-srch input{border:0;outline:0;font:inherit;font-size:12.5px;background:transparent;width:100%;min-width:0;color:var(--text)}
.ins-tbar{display:flex;justify-content:space-between;align-items:center;margin:0 2px 7px;font-size:11.5px;color:#6e6e73}
.ins-tbar button{border:0;background:none;color:var(--primary);font:inherit;font-weight:700;font-size:12px;display:inline-flex;gap:3px;align-items:center;cursor:pointer;padding:4px 0}
.ins-tbar .ins-i{width:14px;height:14px}
.ins-card{background:#fff;border-radius:14px;border:1px solid var(--border2);box-shadow:0 1px 2px rgba(0,0,0,.03)}
.ins-list{overflow:hidden}
.ins-row{display:flex;align-items:center;gap:10px;width:100%;padding:10px 12px 10px 14px;border:0;border-top:1px solid #f0f0f2;background:#fff;font:inherit;text-align:left;color:inherit;cursor:pointer}
.ins-row:first-child,.ins-lsec+.ins-row{border-top:0}
.ins-row.sel{background:var(--primary-soft)}
.ins-rt{flex:1;min-width:0;display:flex;flex-direction:column}
.ins-rt b{font-size:13.5px;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:var(--text)}
.ins-rt small{font-size:11px;color:#6e6e73;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ins-rsub{display:flex;align-items:center;gap:6px;min-width:0;margin-top:3px}
.ins-rx{font-size:11px;color:#6e6e73;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}
.ins-typ{display:inline-flex;align-items:center;gap:3px;flex:none;padding:1px 7px 1px 5px;border-radius:999px;background:var(--b);color:var(--c);font-size:10.5px;font-weight:700;line-height:1.5}
.ins-typ .ins-i{width:11px;height:11px;stroke-width:2.2}
.ins-lsec{display:flex;justify-content:space-between;align-items:baseline;padding:7px 12px 5px 14px;font-size:11px;font-weight:700;color:#6e6e73;background:#fafafb;border-top:1px solid #f0f0f2}
.ins-lsec:first-child{border-top:0}
.ins-lsec.over{color:var(--primary)}
.ins-lsec small{font-weight:600;font-variant-numeric:tabular-nums}
.ins-pl{flex:none;font-size:10.5px;font-weight:700;border-radius:999px;padding:2px 8px;white-space:nowrap;font-variant-numeric:tabular-nums}
.ins-pl-over{background:#fde6e6;color:#c62828}
.ins-pl-d30{background:var(--primary-soft);color:#cf4a43}
.ins-pl-d90{background:#fff5e2;color:#a66b00}
.ins-pl-ok,.ins-pl-lapsed,.ins-pl-done{background:#f4f4f6;color:#8e8e93}
.ins-pl-trip{background:#eaf5f3;color:#2b8a7f}
.ins-pl-renewed{background:#ebf6ef;color:#3a8a58}
.ins-empty{padding:26px 16px;text-align:center;color:#8e8e93;font-size:12.5px;line-height:1.6}
.ins-empty .ins-btn{margin-top:12px;flex:none;display:inline-flex;padding:9px 16px;font-size:13px}
.ins-sec{display:flex;justify-content:space-between;align-items:baseline;font-size:12px;font-weight:700;color:var(--text2);margin:4px 2px 7px}
.ins-sec small{font-weight:500;color:#8e8e93;font-size:11px}
.ins-backrow{display:inline-flex;align-items:center;gap:1px;color:var(--primary);font:inherit;font-weight:700;font-size:12.5px;margin:0 0 8px -3px;border:0;background:none;cursor:pointer;padding:2px 0}
.ins-backrow .ins-i{width:17px;height:17px}
.ins-mhead{display:flex;gap:10px;align-items:center;margin:0 0 10px}
.ins-mhead .ins-rt b{font-size:15px}
.ins-ava{width:32px;height:32px;border-radius:50%;display:grid;place-items:center;font-weight:800;font-size:12.5px;flex:none}
.ins-av0{background:var(--primary-soft);color:#a5282a}.ins-av1{background:#e3f0fc;color:#1c5fa8}.ins-av2{background:#e6f4ec;color:#1f7a45}.ins-av3{background:#fff1db;color:#955800}.ins-av4{background:#f2e9fa;color:#6f3aa3}
.ins-row.lv2{padding-left:30px}
.ins-row.lv2 .ins-ava{width:27px;height:27px;font-size:11px}
.ins-chev{color:#c1c1c6;width:15px;height:15px}
.ins-ro{margin-left:auto;font-size:10.5px;font-weight:700;color:#8e8e93;background:#f1f1f4;border-radius:6px;padding:2px 7px;flex:none}
.ins-tuh{padding:12px 14px 8px;display:flex;justify-content:space-between;align-items:baseline;gap:8px;border-bottom:1px solid #f0f0f2}
.ins-tuh b{font-size:13.5px}
.ins-tuh small{font-size:11px;color:#8e8e93}
/* 詳情 */
.ins-det{padding:14px 14px 16px;display:flex;flex-direction:column;gap:14px}
.ins-dhd{display:flex;gap:10px;align-items:flex-start}
.ins-tyico{width:42px;height:42px;border-radius:12px;display:grid;place-items:center;background:var(--b);color:var(--c);flex:none}
.ins-tyico .ins-i{width:22px;height:22px}
.ins-dt{flex:1;min-width:0}
.ins-dt h3{margin:0;font-size:17px;font-weight:800;line-height:1.3;color:var(--text);overflow-wrap:anywhere}
.ins-dt p{margin:1px 0 0;font-size:11.5px;color:#6e6e73}
.ins-robar{background:#f1f1f4;border-radius:10px;padding:7px 10px;font-size:11.5px;color:var(--text2);display:flex;gap:6px;align-items:center}
.ins-robar .ins-i{width:14px;height:14px}
.ins-kv{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px 12px;margin:0}
.ins-kv dt{font-size:10.5px;color:#8e8e93;font-weight:600}
.ins-kv dd{margin:1px 0 0;font-size:13px;font-weight:600;color:var(--text);font-variant-numeric:tabular-nums;overflow-wrap:anywhere;-webkit-user-select:text;user-select:text}
.ins-remh{font-size:12px;font-weight:700;margin-bottom:9px;display:flex;justify-content:space-between;gap:8px;color:var(--text)}
.ins-remh small{font-weight:500;color:#8e8e93;font-size:10.5px}
.ins-tl{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));position:relative}
.ins-tl::before{content:"";position:absolute;left:12.5%;right:12.5%;top:10px;height:2px;background:#e5e5ea}
.ins-tl li{display:flex;flex-direction:column;align-items:center;text-align:center;position:relative;font-size:10px;color:#8e8e93;line-height:1.3}
.ins-tl i{width:22px;height:22px;border-radius:50%;background:#fff;border:2px solid #d8d8de;margin-bottom:4px;display:grid;place-items:center;font-style:normal;color:#fff;font-weight:800;font-size:11px}
.ins-tl i .ins-i{width:12px;height:12px;stroke-width:3}
.ins-tl b{color:var(--text);font-size:10.5px;font-weight:700}
.ins-tl .sent i{background:#1f7a45;border-color:#1f7a45}
.ins-tl .due i{border-color:var(--primary)}
.ins-tl .due.past i{background:var(--primary)}
/* 2026-10-01 真實推送紀錄：skip／imp／gone＝灰色「–」，soon＝橙圈（下次每日提醒會推）*/
.ins-tl .skip i,.ins-tl .imp i,.ins-tl .gone i{background:#f1f1f4;border-color:#e0e0e5}
.ins-tl .skip i::after,.ins-tl .imp i::after,.ins-tl .gone i::after{content:"";width:8px;height:2px;border-radius:1px;background:#aeaeb2}
.ins-tl .soon i{border-color:#ff9500;background:#fff5e6}
.ins-tl .soon i::after{content:"";width:6px;height:6px;border-radius:50%;background:#ff9500}
.ins-note{background:#fafafa;border:1px solid #f0f0f2;border-radius:10px;padding:8px 10px;font-size:12px;color:var(--text2);white-space:pre-line;overflow-wrap:anywhere}
.ins-note small{display:block;font-size:10.5px;color:#8e8e93;font-weight:600;margin-bottom:1px;white-space:normal}
.ins-closed{border-radius:10px;padding:8px 10px;font-size:12px;background:#f1f1f4;color:var(--text2);display:flex;justify-content:space-between;align-items:center;gap:8px;flex-wrap:wrap}
.ins-closed.ok{background:#e5f3ea;color:#1f7a45}
.ins-closed button{border:0;background:none;font:inherit;font-weight:700;color:inherit;text-decoration:underline;text-underline-offset:2px;cursor:pointer;padding:0}
.ins-acts{display:flex;gap:8px;flex-wrap:wrap}
.ins-btn{flex:1;border:0;border-radius:12px;background:var(--primary);color:#fff;font:inherit;font-size:14px;font-weight:700;padding:12px;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;gap:5px}
.ins-btn .ins-i{width:16px;height:16px;stroke-width:2.6}
.ins-btn.ghost{background:#f1f1f4;color:var(--text)}
.ins-btn.ico{flex:none;padding:10px 11px}
.ins-btn.ico .ins-i{stroke-width:1.7}
.ins-btn:disabled{opacity:.55;cursor:default}
.ins-acts .ins-btn{padding:10px 12px;font-size:13px}
/* sheet（手機由底彈上；iPad 置中對話框）*/
#insSheet{position:absolute;inset:0;z-index:30;background:rgba(0,0,0,.42);display:none;align-items:flex-end}
#insSheet.show{display:flex}
.ins-sheet{background:#fff;width:100%;max-height:90%;border-radius:18px 18px 0 0;display:flex;flex-direction:column;overflow:hidden;margin:0}
.ins-sh-hd{padding:14px 10px 6px 16px;display:flex;justify-content:space-between;align-items:center}
.ins-sh-hd h3{margin:0;font-size:16px;font-weight:800;color:var(--text)}
.ins-sh-x{width:34px;height:34px;border:0;background:none;display:grid;place-items:center;color:#8e8e93;cursor:pointer;padding:0}
.ins-sh-bd{overflow-y:auto;-webkit-overflow-scrolling:touch;padding:4px 16px 12px;display:flex;flex-direction:column;gap:11px}
.ins-sh-ft{display:flex;gap:8px;padding:12px 16px max(30px, calc(var(--safe-bottom,0px) + 20px));border-top:1px solid #f0f0f0}   /* 同 Cold Call 須知 sheet（.cclt-foot）一樣 */
.ins-lead{margin:0;font-size:12.5px;color:var(--text2);line-height:1.5}
.ins-fl{display:flex;flex-direction:column;gap:4px;min-width:0}
.ins-lb{font-size:11.5px;font-weight:700;color:var(--text2)}
.ins-lb em{font-style:normal;font-weight:500;color:#aeaeb2;margin-left:1px}
.ins-fl input,.ins-fl select,.ins-fl textarea{font:inherit;font-size:13px;border:1px solid #e5e5ea;border-radius:9px;padding:0 10px;height:36px;background:#fff;color:var(--text);width:100%;min-width:0;box-sizing:border-box;-webkit-appearance:none;appearance:none}
.ins-fl select{background:#fff url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="%238e8e93" stroke-width="2.6" stroke-linecap="round" stroke-linejoin="round"><path d="M6 9l6 6 6-6"/></svg>') no-repeat right 10px center;padding-right:28px}
.ins-fl textarea{height:auto;padding:8px 10px;resize:vertical;line-height:1.5}
.ins-fl input[type=date]{text-align:left}
.ins-fl input[type=date]::-webkit-date-and-time-value{text-align:left}   /* iOS 預設置中 */
.ins-fl input[readonly]{background:#f1f1f4;color:var(--text2)}
.ins-fl input.err{border-color:var(--primary)}
.ins-ferr{font-size:11px;color:var(--primary);font-weight:600}
.ins-two{display:grid;grid-template-columns:minmax(0,1fr);gap:11px}
.ins-tyg{display:block;font-size:10.5px;font-weight:600;color:#8e8e93;margin:2px 0 -1px}
.ins-tys{display:flex;flex-wrap:wrap;gap:6px}
.ins-ty{display:inline-flex;align-items:center;gap:4px;border:1.5px solid #e5e5ea;border-radius:999px;padding:5px 11px 5px 8px;font:inherit;font-size:12px;font-weight:700;color:var(--text2);background:#fff;cursor:pointer}
.ins-ty .ins-i{width:15px;height:15px}
.ins-ty.on{background:var(--b);border-color:var(--c);color:var(--c)}
.ins-info{margin:0;font-size:11.5px;color:var(--text2);display:flex;gap:6px;align-items:center;background:#f1f1f4;border-radius:9px;padding:7px 10px}
.ins-info .ins-i{width:14px;height:14px;color:var(--primary)}
.ins-info>span{flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ins-err{margin:0;font-size:12px;color:var(--primary);font-weight:600;background:var(--primary-soft);border-radius:9px;padding:7px 10px}
/* 匯出 */
.ins-xsec{display:flex;flex-direction:column;gap:6px}
.ins-cap{font-size:11px;color:#8e8e93;margin:0;line-height:1.5}
.ins-sw{display:flex;justify-content:space-between;align-items:center;gap:12px;font-size:12.5px;font-weight:600;color:var(--text2)}
.ins-sw small{display:block;font-weight:500;font-size:11px;color:#8e8e93}
.ins-sw input{-webkit-appearance:none;appearance:none;width:40px;height:24px;border-radius:12px;background:#d9d9de;position:relative;flex:none;cursor:pointer;margin:0;transition:background .15s}
.ins-sw input::after{content:"";position:absolute;top:2px;left:2px;width:20px;height:20px;border-radius:50%;background:#fff;box-shadow:0 1px 2px rgba(0,0,0,.25);transition:transform .15s}
.ins-sw input:checked{background:#1f7a45}
.ins-sw input:checked::after{transform:translateX(16px)}
.ins-xprev{border:1px solid #e5e5ea;border-radius:10px;overflow:auto;background:#f3f3f6;padding:10px;-webkit-overflow-scrolling:touch}
.ins-xg{border-collapse:collapse;font-size:10px;white-space:nowrap;background:#fff;color:var(--text)}
.ins-xg th,.ins-xg td{border:1px solid #dcdce2;padding:3px 6px;text-align:left;font-weight:400}
.ins-xg thead th,.ins-xg th.rn{background:#eef0f3;color:#6b6b72;text-align:center;font-weight:600}
.ins-xg tr.h td{background:#f7f7f9;font-weight:700}
.ins-pdfp{background:#fff;box-shadow:0 2px 10px rgba(0,0,0,.14);min-width:420px;aspect-ratio:1.414/1;padding:14px 16px;display:flex;flex-direction:column;gap:6px;font-size:8px;color:#1c1c1e}
.ins-pdfp .h{display:flex;align-items:center;gap:6px;border-bottom:2px solid var(--primary);padding-bottom:5px}
.ins-pdfp .h b{font-size:10px}
.ins-pdfp .h span{margin-left:auto;color:#6e6e73}
.ins-pdfp .s{color:#48484a}
.ins-pdfp table{border-collapse:collapse;width:100%;font-size:8px;color:#1c1c1e}
.ins-pdfp th,.ins-pdfp td{border-bottom:1px solid #e5e5ea;padding:2.5px 3px;text-align:left;white-space:nowrap}
.ins-pdfp th{color:#6e6e73;font-weight:700;border-bottom-color:#c7c7cc}
.ins-xwarn{margin:0;font-size:11.5px;color:#955800;background:#fff2d9;border-radius:9px;padding:7px 10px}
/* PDF 離屏排版（html2pdf 截呢個，唔係截縮放版 app）*/
#insPdf{position:absolute;left:0;top:0;z-index:-1;width:1040px;background:#fff;color:#111;padding:32px 36px;box-sizing:border-box;font-family:"PingFang HK","Microsoft JhengHei",-apple-system,system-ui,sans-serif;pointer-events:none}
#insPdf:empty{display:none}
#insPdf .ph{display:flex;align-items:center;gap:12px;border-bottom:3px solid var(--primary);padding-bottom:10px;margin-bottom:10px}
#insPdf .ph img{width:44px;height:44px;border-radius:10px}
#insPdf .ph .bn{font-size:11px;font-weight:800;letter-spacing:1.4px;color:var(--primary)}
#insPdf .ph h1{margin:2px 0 0;font-size:20px;font-weight:800}
#insPdf .ph .dt{margin-left:auto;font-size:12px;color:#555;text-align:right}
#insPdf .pm{font-size:12px;color:#444;margin-bottom:10px}
#insPdf table{border-collapse:collapse;width:100%;font-size:11px}
#insPdf th{background:#f3f3f5;text-align:left;padding:6px 7px;border-bottom:1.5px solid #bbb;font-weight:700}
#insPdf td{padding:6px 7px;border-bottom:1px solid #e3e3e6;vertical-align:top}
#insPdf tr{page-break-inside:avoid}
#insPdf .pf{margin-top:12px;font-size:10px;color:#888}
/* iPad／闊螢幕：左清單右詳情 */
html.wide #insPage>.overlay-body{padding:16px 24px 32px!important}
.ins-split{display:block}
html.wide .ins-split{display:grid;grid-template-columns:minmax(0,42fr) minmax(0,58fr);gap:18px;align-items:start}
html.wide .ins-rp{position:sticky;top:0}
html.wide .ins-two{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:10px}
html.wide .ins-acts .ins-btn{flex:none}
html.wide #insSheet{align-items:center;justify-content:center;padding:24px}
html.wide .ins-sheet{max-width:520px;border-radius:18px;max-height:100%}
html.wide .ins-sh-ft{justify-content:flex-end;padding-bottom:16px}
html.wide .ins-sh-ft .ins-btn{flex:none;min-width:96px;padding:10px 16px;font-size:13.5px}
@container ov (max-width:699px){ .ins-split{grid-template-columns:minmax(0,1fr) minmax(0,1fr)!important;gap:14px!important} }
/* ── 雜險：匯入、險種篩選、返回頂部（2026-09-30，跟 demo v10）── */
.ins-btn .ld-arc{color:inherit;width:16px;height:16px}   /* 處理中／匯入中／匯出中：用 app 統一嘅 .ld-arc，喺紅掣上面係白色 */
.ins-imdrop .ld-arc{width:26px;height:26px;margin-bottom:3px}
/* 清單工具列：匯入／匯出改淺灰圓角掣（唔再紅字） */
.ins-tbar .ins-tb-r{display:flex;gap:6px}
.ins-tbar .ins-tb-r button{background:#f1f1f4;color:var(--text2);font-weight:600;font-size:11.5px;border-radius:999px;padding:3px 10px 3px 8px;gap:4px}
.ins-tbar .ins-tb-r .ins-i{width:13px;height:13px;stroke-width:2;color:#8e8e93}
/* 險種篩選掣（搜尋欄旁）*/
.ins-srow{display:flex;gap:6px;margin-bottom:10px}
.ins-srow .ins-srch{flex:1;margin:0;min-width:0}
.ins-tyb{flex:none;display:inline-flex;align-items:center;gap:4px;height:34px;padding:0 11px;border-radius:10px;border:1px solid #e5e5ea;background:#fff;font:inherit;font-size:12px;font-weight:700;color:var(--text2);cursor:pointer}
.ins-tyb .ins-i{width:14px;height:14px;color:#8e8e93}
.ins-tyb-w{display:flex;flex:none}
.ins-tyb.on{background:var(--b);border-color:var(--c);color:var(--c);border-radius:10px 0 0 10px;border-right:0;padding-right:4px}
.ins-tyb.on .ins-i{color:var(--c)}
.ins-tyb-x{height:34px;width:28px;display:grid;place-items:center;border:1px solid var(--c);border-left:0;border-radius:0 10px 10px 0;background:var(--b);color:var(--c);cursor:pointer;padding:0}
.ins-tyb-x .ins-i{width:13px;height:13px}
.ins-ty em{font-style:normal;color:#8e8e93;font-weight:600;margin-left:2px}
.ins-ty.on em{color:var(--c)}
.ins-ty:disabled{opacity:.4;cursor:default}
.ins-ty.plain{padding-left:11px}
/* 險種多（香港版商業及團體 20 個）：手機只出頭 6 個＋「更多」，iPad 全部顯示 */
.ins-tymore{display:none;padding-left:11px;color:#636366;background:#f2f2f7;border-color:#f2f2f7}
.ins-tymore .ins-i{width:13px;height:13px;transform:rotate(90deg)}
html:not(.wide) .ins-tys.fold>.ins-tymore{display:inline-flex}
html:not(.wide) .ins-tys.fold>.ins-ty:nth-child(n+7):not(.on):not(.ins-tymore){display:none}
.ins-tysheet .ins-sh-bd{padding-bottom:max(30px, calc(var(--safe-bottom,0px) + 20px))}
html.wide .ins-tysheet{max-width:420px}
html.wide .ins-tysheet .ins-sh-bd{padding-bottom:18px}
/* 未有保單 */
.ins-emp0{display:flex;flex-direction:column;align-items:center;text-align:center;gap:6px;padding:24px 16px 18px}
.ins-emp0>.ins-i{width:30px;height:30px;color:var(--primary);stroke-width:1.7}
.ins-emp0 b{font-size:14.5px;font-weight:800;color:var(--text)}
.ins-emp0 p{margin:0 0 6px;font-size:12px;color:#8e8e93;max-width:26em;line-height:1.5}
.ins-emp0-b{display:flex;flex-direction:column;gap:7px;width:100%;max-width:240px}
.ins-emp0-b .ins-btn{padding:10px 12px;font-size:13px}
/* 匯入後 24 小時：撤銷 banner */
.ins-impbn{display:flex;align-items:center;gap:7px;background:#e5f3ea;color:#1f7a45;border-radius:10px;padding:7px 10px;font-size:12px;font-weight:700;margin-bottom:8px}
.ins-impbn .ins-i{width:15px;height:15px}
.ins-impbn span{flex:1;min-width:0}
.ins-impbn button{border:0;background:none;font:inherit;color:#1f7a45;text-decoration:underline;text-underline-offset:2px;font-weight:800;flex:none;cursor:pointer;padding:2px 0}
/* 返回頂部（同日曆／金融摘要一樣：碌落 300px 先出）*/
.ins-totop{position:absolute;right:14px;bottom:calc(var(--safe-bottom,0px) + 24px);width:38px;height:38px;border-radius:50%;background:var(--card);color:var(--text);border:none;cursor:pointer;padding:0;display:flex;align-items:center;justify-content:center;z-index:5;box-shadow:0 3px 12px rgba(0,0,0,.16),0 0 0 .5px rgba(0,0,0,.04);opacity:0;transform:translateY(8px) scale(.9);pointer-events:none;transition:opacity .22s ease,transform .22s cubic-bezier(.34,1.2,.64,1)}
.ins-totop.show{opacity:1;transform:none;pointer-events:auto}
.ins-totop.show:active{transform:scale(.9)}
.ins-totop svg{width:17px;height:17px}
html.wide .ins-totop{right:24px;bottom:24px}
/* 匯入 sheet */
html.wide .ins-sheet.imp{max-width:600px}
.ins-sheet.imp .ins-sh-bd>*{flex-shrink:0}   /* flex 直欄入面 overflow:hidden 嘅清單會被壓扁 */
.ins-improg{display:flex;gap:4px;padding:2px 16px 0}
.ins-improg i{flex:1;height:3px;border-radius:2px;background:#e5e5ea}
.ins-improg i.on{background:var(--primary)}
.ins-imstl{padding:5px 16px 2px;font-size:11px;font-weight:600;color:#8e8e93}
.ins-imstl b{color:var(--text);font-weight:700}
.ins-imdrop{display:flex;flex-direction:column;align-items:center;gap:2px;border:1.5px dashed #c7c7cc;border-radius:14px;padding:20px 12px 18px;background:#fafafb;cursor:pointer;text-align:center}
.ins-imdrop:focus-within{outline:2px solid var(--primary);outline-offset:1px}
.ins-imdrop .ins-i{width:26px;height:26px;color:var(--primary);margin-bottom:3px}
.ins-imdrop b{font-size:14px;font-weight:800;color:var(--text)}
.ins-imdrop small{font-size:11px;color:#8e8e93}
.ins-imdrop.busy{pointer-events:none;opacity:.7}
.ins-imalt{align-self:center;border:0;background:none;color:var(--primary);font:inherit;font-weight:700;font-size:12px;display:inline-flex;gap:4px;align-items:center;padding:2px 4px;cursor:pointer}
.ins-imalt .ins-i{width:14px;height:14px}
.ins-impaste{display:flex;flex-direction:column;gap:6px}
.ins-impaste textarea{font:12px/1.45 ui-monospace,SFMono-Regular,Menlo,monospace;border:1px solid #e5e5ea;border-radius:9px;padding:8px 10px;height:112px;resize:vertical;width:100%;box-sizing:border-box;color:var(--text);background:#fff}
.ins-impaste .r2{display:flex;justify-content:space-between;align-items:center;gap:8px}
.ins-impaste .r2 .ins-btn{flex:none;padding:8px 16px;font-size:13px}
.ins-imnote{margin:0;font-size:11px;color:#8e8e93;display:flex;gap:6px;align-items:flex-start;line-height:1.5}
.ins-imnote .ins-i{width:13px;height:13px;margin-top:2px}
.ins-imtpl{display:flex;align-items:center;gap:9px;width:100%;border:1px solid #e5e5ea;border-radius:11px;padding:9px 11px;background:#fff;font:inherit;text-align:left;color:inherit;cursor:pointer}
.ins-imtpl>.ins-i:first-child{color:#1f7a45;width:18px;height:18px}
.ins-imtpl .ins-rt b{font-size:12.5px}
.ins-imfile{display:flex;gap:9px;align-items:center;background:#f1f1f4;border-radius:11px;padding:8px 10px}
.ins-imfile>.ins-i{color:#1f7a45;width:20px;height:20px}
.ins-imfile .ins-rt b{font-size:12.5px}
.ins-imfile .ins-rt small{font-size:10.5px;white-space:normal}
.ins-imfile>button{border:0;background:none;color:var(--primary);font:inherit;font-weight:700;font-size:12px;flex:none;padding:4px 2px;cursor:pointer}
.ins-imctx{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:8px}
.ins-imctx.one{grid-template-columns:minmax(0,1fr)}
.ins-imctx label{display:flex;flex-direction:column;gap:3px;font-size:10.5px;font-weight:700;color:#8e8e93}
.ins-imsel{font:inherit;font-size:12.5px;border:1px solid #e5e5ea;border-radius:9px;height:34px;padding:0 26px 0 8px;color:var(--text);width:100%;min-width:0;box-sizing:border-box;-webkit-appearance:none;appearance:none;background:#fff url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="%238e8e93" stroke-width="2.6" stroke-linecap="round" stroke-linejoin="round"><path d="M6 9l6 6 6-6"/></svg>') no-repeat right 9px center}
.ins-imgrp{font-size:11px;font-weight:800;color:#8e8e93;letter-spacing:.06em;margin:2px 0 -4px}
.ins-imrow{display:grid;grid-template-columns:minmax(0,1fr);gap:3px}
html.wide .ins-imrow{grid-template-columns:118px minmax(0,1fr) minmax(0,.9fr);align-items:center;gap:10px}
.ins-iml{display:flex;gap:5px;align-items:center;font-size:12px;min-width:0;color:var(--text)}
.ins-iml b{font-weight:700;white-space:nowrap}
.ins-imauto{font-size:9.5px;font-weight:700;color:#1f7a45;background:#e5f3ea;border-radius:5px;padding:0 5px;line-height:1.6;margin-left:auto}
html.wide .ins-imauto{margin-left:0}
.ins-imrow.need .ins-imsel{border-color:var(--primary);background-color:#fffafa}
.ins-impair{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:6px}
.ins-ims{font-size:10.5px;color:#8e8e93;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}
.ins-ims.warn{color:#955800;white-space:normal}
.ins-ims.bad{color:var(--primary);white-space:normal}
.ins-imv{display:grid;grid-template-columns:minmax(0,1fr) 12px minmax(0,1.3fr);gap:6px;align-items:center}
.ins-imraw{font-size:12.5px;font-weight:700;overflow-wrap:anywhere;line-height:1.3;color:var(--text)}
.ins-imraw small{display:block;font-weight:500;font-size:10.5px;color:#8e8e93}
.ins-imarr{color:#aeaeb2;font-size:12px;text-align:center}
.ins-imv.need .ins-imsel{border-color:#e0a200;background-color:#fffaf0}
.ins-imbox{display:flex;flex-direction:column;gap:8px}
.ins-imhd{display:flex;justify-content:space-between;align-items:baseline;gap:8px;font-size:12.5px;font-weight:800;color:var(--text);margin-top:2px}
.ins-imhd small{font-size:10.5px;font-weight:600;color:#8e8e93;margin-right:auto}
.ins-imhd button{border:0;background:none;font:inherit;font-size:11.5px;font-weight:700;color:var(--primary);cursor:pointer;padding:2px 0}
.ins-imsub{margin:-4px 0 0;font-size:11px;color:#8e8e93;line-height:1.5}
.ins-imokay{margin:0;font-size:11.5px;color:#1f7a45;background:#e5f3ea;border-radius:9px;padding:7px 10px;display:flex;gap:6px;align-items:center}
.ins-imokay .ins-i{width:14px;height:14px}
.ins-imsum{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px}
html.wide .ins-imsum{grid-template-columns:repeat(4,minmax(0,1fr))}
.ins-imsum div{background:#f1f1f4;border-radius:10px;padding:7px 10px 6px}
.ins-imsum b{display:block;font-size:19px;font-weight:800;line-height:1.2;font-variant-numeric:tabular-nums;color:var(--text2)}
.ins-imsum small{font-size:10.5px;color:#8e8e93;font-weight:600}
.ins-imsum .ok{background:#e5f3ea}
.ins-imsum .ok b{color:#1f7a45}
.ins-imsum .warn b{color:#955800}
.ins-iminfo{margin:0;font-size:11.5px;color:var(--text2);display:flex;gap:6px;align-items:flex-start;background:#f1f1f4;border-radius:9px;padding:7px 10px;line-height:1.5}
.ins-iminfo .ins-i{width:14px;height:14px;margin-top:2px;color:var(--primary)}
.ins-imlist{border:1px solid #f0f0f2;border-radius:12px;overflow:hidden;background:#fff}
.ins-imr{display:flex;gap:8px;align-items:center;padding:8px 11px;border-top:1px solid #f0f0f2}
.ins-imr:first-child{border-top:0}
.ins-imr .ins-rt b{font-size:12.5px}
.ins-imr .ins-rsub{margin-top:2px}
.ins-imfl{font-size:10.5px;color:#955800!important;margin-top:2px;white-space:normal!important}
.ins-imr.x .ins-rt b{color:var(--text2)}
.ins-imr.x .ins-rt small{white-space:normal}
.ins-imtag{flex:none;font-size:10px;font-weight:700;border-radius:6px;padding:1px 6px;background:#f1f1f4;color:#8e8e93}
.ins-imtag.ok{background:#e5f3ea;color:#1f7a45}
.ins-iminfo.warn{background:#fff5e6;color:#955800}
.ins-iminfo.warn .ins-i{color:#ff9500}
/* 2026-10-01：推送提示、「剛匯入」橫額 ×、編輯頁刪除、結案框重新開啟 */
/* 測試版標示（2026-10-01）*/
#insTitle.beta::after{content:"測試版";display:inline-block;vertical-align:2px;margin-left:6px;font-size:10px;font-weight:700;letter-spacing:0;color:#955800;background:#fff1d6;border-radius:999px;padding:2px 7px}
.ins-betabn{display:flex;align-items:center;gap:7px;background:#f3f0fb;color:#4b3a8f;border-radius:10px;padding:7px 10px;font-size:12px;font-weight:600;margin-bottom:8px;line-height:1.4}
.ins-betabn>svg{width:16px;height:16px;flex:none}
.ins-betabn span{flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}   /* 手機一行顯示晒 */
.ins-betabn button{border:0;background:none;font:inherit;color:#4b3a8f;font-weight:800;text-decoration:underline;text-underline-offset:2px;flex:none;cursor:pointer;padding:2px 0}
.ins-betabn .ins-impbn-x{text-decoration:none;display:grid;place-items:center;padding:2px;margin-left:2px;opacity:.7}
.ins-betabn .ins-impbn-x .ins-i{width:14px;height:14px}
.ins-betaft{text-align:center;font-size:11px;color:#8e8e93;margin:14px 0 4px}
.ins-betaft button{border:0;background:none;font:inherit;color:var(--primary);font-weight:700;padding:4px 2px;cursor:pointer}
.ins-pushbn{display:flex;align-items:center;gap:7px;background:#fff5e6;color:#955800;border-radius:10px;padding:7px 10px;font-size:12px;font-weight:600;margin-bottom:8px;line-height:1.4}
.ins-pushbn .ins-i{width:15px;height:15px;flex:none;color:#ff9500}
.ins-pushbn span{flex:1;min-width:0}
.ins-pushbn button{flex:none;border:0;border-radius:999px;background:#ff9500;color:#fff;font:inherit;font-size:11.5px;font-weight:700;padding:4px 12px;cursor:pointer}
.ins-impbn .ins-impbn-x{text-decoration:none;display:grid;place-items:center;padding:2px;margin-left:2px;opacity:.75}
.ins-impbn .ins-impbn-x .ins-i{width:14px;height:14px}
.ins-del{display:flex;align-items:center;justify-content:center;gap:6px;width:100%;margin:12px 0 0;border:0;background:none;font:inherit;font-size:13px;font-weight:600;color:#d70015;padding:10px;border-radius:10px;cursor:pointer}
.ins-del:active{background:var(--primary-soft)}
.ins-del .ld-arc{width:15px;height:15px;color:inherit}
.ins-closed .ld-arc{width:13px;height:13px;color:inherit;vertical-align:-2px;margin-right:3px}
.ins-imfixb{flex:none;border:0;border-radius:999px;background:var(--primary-soft);color:var(--primary);font:inherit;font-size:11.5px;font-weight:700;padding:4px 11px;cursor:pointer}
.ins-fl select.err{border-color:var(--primary)}
.ins-imdone{display:flex;flex-direction:column;align-items:center;text-align:center;gap:6px;padding:14px 4px 4px}
.ins-imok{width:52px;height:52px;border-radius:50%;background:#e5f3ea;color:#1f7a45;display:grid;place-items:center}
.ins-imok .ins-i{width:26px;height:26px;stroke-width:2.6}
.ins-imdone h4{margin:4px 0 0;font-size:17px;font-weight:800;color:var(--text)}
.ins-imdone p{margin:0;font-size:12px;color:var(--text2);max-width:34em;line-height:1.55}
.ins-imdone p.sub{color:#8e8e93;font-size:11.5px}
.ins-imdone p.warn{color:#955800}

/* ═══════════ iPad 優化（2026-09-30，已揀第 1–12、14–17 項，唔做 13；清單 artifact VD2zpp41t6fwh17yq1CTWg）═══════════
   除咗第 1 項係全 app（手機都有嘅 bug），其餘全部 scope html.wide（手機版唔受影響）。 */
/* 1 ─ 自動捲動後成個 app 上移 16px：隱藏咗嘅日曆長按 sheet（translateY(100%)）撐高 body，
       scrollIntoView（MDRT／IRR 結果、報名跳去活動、日曆）會連 body 一齊捲。body／html 改 clip = 唔係捲動容器，捲唔到。
       applyScale 有 inline overflow:hidden，所以要 !important；舊 iOS 唔識 clip 就照舊 hidden。 */
html,body{overflow:clip!important}
/* 4 ─ 頂部重複按鈕：側欄已有嘅頁面（會議室、實用工具、設定）唔使返回／關閉；工具子頁留「‹ 返回工具」，拎走「⌂ 返回主頁」。
       用 visibility 保留位置，標題照舊置中。 */
html.wide #roomPage>.overlay-hdr .overlay-close,
html.wide #toolsPage>.overlay-hdr .overlay-close,
html.wide [id^="toolPage-"]>.overlay-hdr .overlay-close[aria-label="返回主頁"]{visibility:hidden}
html.wide .st-hero-close{display:none}
/* 5 ─ 會議室預約彈窗：由底部 sheet 改置中對話框（同雜險／Cold Call 一致）*/
html.wide .rb-modal{top:50%;bottom:auto;transform:translate(-50%,-46%);opacity:0;visibility:hidden;border-radius:18px;max-width:460px;box-shadow:0 20px 50px rgba(0,0,0,.22);transition:transform .22s cubic-bezier(.2,.8,.2,1),opacity .18s,visibility 0s .22s}
html.wide .rb-modal.show{transform:translate(-50%,-50%);opacity:1;visibility:visible;transition:transform .22s cubic-bezier(.2,.8,.2,1),opacity .18s}
html.wide .rb-modal-handle{display:none}
/* 6 ─ 日曆（打橫）：當日活動擺右邊。原本內容區 ≥960 先擺右（300px），iPad 打橫得 806 → 760–959 用 250px 窄版 */
@container main (min-width:760px) and (max-width:959.98px){
  .cal-wrap{display:grid;grid-template-columns:minmax(0,1fr) 250px;column-gap:16px;align-items:start}
  .cal-wrap>.cal-box{margin-bottom:0}
  #calEventsList{grid-template-columns:1fr!important;position:sticky;top:14px;max-height:calc(var(--app-h,100vh) - 28px);overflow-y:auto;padding-top:0!important}
}
/* 7 ─ 會議室（打橫）：「我的預約」擺右邊（原本 ≥820 先擺，iPad 打橫得 806 → 740–819 用 250px）；預約格高 38（×1.15 ≈ 44pt）*/
@container ov (min-width:740px) and (max-width:819.98px){
  #roomPage>.overlay-body{grid-template-columns:minmax(0,1fr) 250px!important;column-gap:18px;align-items:start}
  #rbWeekView{grid-column:1;grid-row:1}
  #rbMineView{grid-column:2;grid-row:1;position:sticky;top:0}
}
html.wide .rb-week-table td.cell{height:38px}
/* 一週總覽方案 A（2026-10-01）：已預約合併格寫名／時間／用途（iPad）；手機格窄只出縮寫；撳格彈小卡 #rbWkPop */
.rb-week-wrap{position:relative}
.rb-week-table td.cell.avail{background:#eff9f6;border-color:#cfe9e3}
.rb-week-table td.cell.booked{background:var(--primary-soft);border:1px solid var(--primary-soft2);cursor:pointer;vertical-align:middle;text-align:center;padding:0 2px;position:relative;overflow:hidden}
.rb-week-table td.cell.booked:active{transform:scale(.97)}
.rb-week-table td.cell.booked.own{background:var(--primary);border-color:var(--primary)}
.rb-week-table td.cell.booked.done{opacity:.55}
.rb-week-table .wk-b{display:flex;flex-direction:column;align-items:center;justify-content:center;min-width:0;font-size:9.5px;line-height:1.25;color:#8f2321}
.rb-week-table .wk-nm,.rb-week-table .wk-tm,.rb-week-table .wk-pu{display:none}
.rb-week-table .wk-ini{font-size:10px;font-weight:800;letter-spacing:-.2px;color:var(--primary-dark)}
.rb-week-table td.own .wk-b,.rb-week-table td.own .wk-ini{color:#fff}
html.wide .rb-week-table td.cell.booked{vertical-align:top;text-align:left;padding:5px 4px 4px 8px}
html.wide .rb-week-table td.cell.booked::before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:#e57373}
html.wide .rb-week-table td.cell.booked.own::before{background:rgba(255,255,255,.55)}
html.wide .rb-week-table .wk-b{align-items:flex-start;justify-content:flex-start;gap:1px}
html.wide .rb-week-table .wk-ini{display:none}
html.wide .rb-week-table .wk-nm{display:block;max-width:100%;font-size:11px;font-weight:800;color:#7a1f1f;letter-spacing:-.15px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
html.wide .rb-week-table .wk-tm{display:block;font-size:9.5px;font-weight:600;color:#b04a47}
html.wide .rb-week-table .wk-pu{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:1;overflow:hidden;max-width:100%;font-size:9.5px;color:#a24a48;word-break:break-all}
html.wide .rb-week-table td.multi .wk-pu{-webkit-line-clamp:3;margin-top:2px}
html.wide .rb-week-table td.own .wk-nm,html.wide .rb-week-table td.own .wk-tm,html.wide .rb-week-table td.own .wk-pu{color:#fff}
html.wide .rb-week-table td.own .wk-tm,html.wide .rb-week-table td.own .wk-pu{opacity:.85}
.rb-lg-own{background:var(--primary);border-color:var(--primary)}
.rb-lg-booked{background:var(--primary-soft);border-color:var(--primary-soft2)}
.rb-lg-avail{background:#eff9f6;border-color:#cfe9e3}
.rb-wk-pop{position:absolute;z-index:20;width:208px;background:#fff;border-radius:14px;box-shadow:0 10px 30px rgba(0,0,0,.16),0 0 0 1px rgba(0,0,0,.05);padding:12px;display:none;font-size:12px;color:var(--text)}
.rb-wk-pop.show{display:block;animation:rbPopIn .16s ease-out}
@keyframes rbPopIn{from{opacity:0;transform:scale(.96)}to{opacity:1;transform:none}}
.rbp-hd{display:flex;align-items:center;gap:9px;margin-bottom:8px}
.rbp-av{width:32px;height:32px;border-radius:50%;flex:none;display:grid;place-items:center;background:var(--primary-soft);color:var(--primary-dark);font-size:12px;font-weight:800}
.rbp-av.own{background:var(--primary);color:#fff}
.rbp-who{flex:1;min-width:0}
.rbp-who b{display:block;font-size:13px;font-weight:800;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.rbp-who small{display:block;font-size:10px;color:var(--text3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.rbp-x{flex:none;width:26px;height:26px;border:0;border-radius:50%;background:#f2f2f5;color:#636366;display:grid;place-items:center;cursor:pointer;padding:0}
.rbp-x svg{width:13px;height:13px}
.rbp-row{display:flex;align-items:flex-start;gap:7px;padding:4px 0;color:var(--text2);line-height:1.4;word-break:break-word}
.rbp-row svg{width:14px;height:14px;flex:none;margin-top:1px;color:var(--text3)}
.rbp-edit{display:block;width:100%;margin-top:8px;border:0;border-radius:10px;background:var(--primary);color:#fff;font:inherit;font-size:12.5px;font-weight:700;padding:8px;cursor:pointer}
.rbp-edit:active{transform:scale(.98)}
.rbp-note{margin-top:6px;font-size:11px;color:var(--text3)}
/* 8 ─ 公告：卡片設計不變，揀中由粗紅框改淡紅底 */
html.wide #annList .ann-card.sel{box-shadow:none;border-color:rgba(var(--primary-rgb),.28);background:#fdf3f2}
html.wide #annList .ann-card.sel .ann-footer{background:#fbe8e6;border-top-color:rgba(var(--primary-rgb),.12)}
/* 9 ─ 主頁（打橫）：今日新聞兩欄（直向維持一欄）*/
@container main (min-width:760px){
  #newsList .news-feed-card{display:grid;grid-template-columns:repeat(2,minmax(0,1fr))}
  #newsList .news-item{border-bottom:1px solid var(--border2)}
  #newsList .news-item:nth-child(odd){border-right:1px solid var(--border2)}
  #newsList .news-item:last-child,#newsList .news-item:nth-last-child(2):nth-child(odd){border-bottom:none}
}
/* 10 ─ 實用工具入口：兩欄（卡片設計不變）*/
html.wide #toolsPage>.overlay-body{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;align-content:start}
html.wide #toolsPage>.overlay-body>*{margin:0!important;min-width:0}
html.wide #toolsPage>.overlay-body>:not(.tool-entry-card){grid-column:1/-1}
/* 11 ─ MDRT／IRR（打橫）：左邊輸入、右邊結果；撳計算唔再自動捲（tv2Side()）*/
@container ov (min-width:740px){
  #toolPage-calc .calc-v6-wrap,#toolPage-irr .calc-v6-wrap{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.15fr);grid-template-rows:repeat(9,max-content) 1fr;column-gap:22px;align-items:start}
  #toolPage-calc .calc-v6-wrap>*,#toolPage-irr .calc-v6-wrap>*{grid-column:1;min-width:0}
  #calcEmpty,#calcResultBox,#irrEmpty,#irrResultBox{grid-column:2!important;grid-row:1/-1;margin-top:0}
  #calcEmpty,#irrEmpty{align-self:stretch;display:flex;flex-direction:column;justify-content:center;border:1.5px dashed var(--border2);border-radius:16px;padding:28px}
}
/* 12 ─ 限闊：貨幣換算 560、設定 600（原本成版闊，代碼同金額相隔 1,300px）*/
html.wide #toolPage-fx>.overlay-body>*{max-width:560px;margin-left:auto;margin-right:auto}
html.wide #settingsPage .st-body>*:not(.st-hero){max-width:600px;margin-left:auto;margin-right:auto}
html.wide #settingsPage .st-hero{padding-left:max(24px,calc((100% - 600px)/2));padding-right:max(24px,calc((100% - 600px)/2))}
/* 14 ─ 觸控範圍 ≥44pt（邏輯 38px × 1.15）：外觀不變。icon 掣加大再用負 margin 抵消；文字連結用透明 ::after 擴大 */
html.wide .overlay-close,html.wide .rb-refresh-ico,html.wide .fx-refresh-ico{min-width:38px;min-height:38px;margin:-5px;justify-content:center}
html.wide .cal-hdr-btn{min-width:38px;min-height:38px;margin:-6px 0}
html.wide .cal-hdr-nav{gap:4px}
html.wide .cal-today-btn,html.wide .btn-view-all,html.wide .section-link,html.wide .hero-cta,html.wide .rb-week-nav-btn{position:relative}
html.wide .cal-today-btn::after{content:"";position:absolute;inset:-9px -4px}
html.wide .btn-view-all::after,html.wide .section-link::after,html.wide .hero-cta::after{content:"";position:absolute;inset:-11px -6px}
html.wide .rb-week-nav-btn::after{content:"";position:absolute;inset:-3px}
/* 15 ─ 會議室一週總覽載入骨架（rbWeekSkeleton）*/
.rb-week-table td.cell.rb-wk-skel{background:linear-gradient(90deg,#eef0f3 0%,#e0e3e8 50%,#eef0f3 100%);background-size:200% 100%;animation:skel-shimmer 1.4s ease-in-out infinite;border:0;cursor:default}
/* 17 ─ 直向 icon 欄：紅點變返 8px 圓點、同數字一齊移去圖示右上角外面（原本 padding 令紅點變橢圓、壓住鈴）*/
html.wide-rail .sn-badge{top:0;left:39px}
html.wide-rail .sn-badge.dot{padding:0;width:8px;top:6px;left:41px}

/* ═══════════ iPad 優化 2（2026-09-30 下午，真機回饋）═══════════ */
/* A ─ 頂部狀態列：iPad（加入主畫面）用 html／body 嘅「單一背景色」填（實測：原本灰 → 條灰），唔會畫漸變。
       → 白色：同側欄、各頁白色 header 接得埋（同手機白狀態列＋白 header 一樣）。 */
html.wide,html.wide body{background:var(--card)!important}
/* 下拉刷新（.content 向下移）露出嘅位：喺 #app 最底墊一層色 —— 主頁紅（接 hero）、其他頁灰。
   唔靠 body 畫：iPad 主畫面模式實測 body 背景唔會喺呢度出現，會露出白色。 */
html.wide #app::before{content:"";position:absolute;inset:0;z-index:0;background:var(--bg);pointer-events:none}
html.wide:has(#page-home.active) #app::before{background:var(--primary)}
html.wide #app>.ptr-indicator{left:var(--side-w);top:12px}   /* 主內容下拉 spinner：iPad 冇頂部 header，擺返內容區中間 */
/* B ─ 主頁數字卡：用負 margin 疊入紅 hero，要固定層次；原本靠 fadeUp 動畫先浮面，iPad Safari 動畫完咗就跌返落 hero 底下（撳完其他頁返嚟卡頂被遮）*/
html.wide #page-home>.section:has(#statRow),html.wide #page-home>.hero-feature{position:relative;z-index:1}
/* C ─ 日曆（打橫）：日曆格拉高填滿到螢幕底，唔再下面留一大截空位 */
@container main (min-width:760px){
  .cal-wrap>.cal-box{display:flex;flex-direction:column;min-height:calc(var(--app-h,100vh) - 44px)}
  .cal-box>.cal-grid{flex:1;grid-template-rows:auto;grid-auto-rows:1fr}
}
/* D ─ 側欄（打橫）：闊 208（≈240pt，同 Gmail／Notion 一類 240–260pt）；字 13px 中粗（≈15pt）、icon 18（≈21pt）、每行 38（≈44pt，Apple 最細觸控高度）*/
html.wide:not(.wide-rail) .sn-item{font-size:13px;font-weight:500;min-height:38px;gap:10px}
html.wide:not(.wide-rail) .sn-item.on{font-weight:600}
html.wide:not(.wide-rail) .sn-item svg{width:18px;height:18px;flex-basis:18px}
html.wide:not(.wide-rail) .sn-title{font-size:14px}
html.wide:not(.wide-rail) .sn-sub{font-size:11px}
html.wide:not(.wide-rail) .sn-region{font-size:12.5px;min-height:38px}
html.wide:not(.wide-rail) .sn-sep{font-size:10.5px;padding:14px 10px 5px}
/* E ─ 雜險 header 掣（28px）喺 iPad 都擴大觸控範圍到 ≥44pt，外觀不變 */
html.wide .ins-hplus,html.wide .ins-hbtn{position:relative}
html.wide .ins-hplus::after,html.wide .ins-hbtn::after{content:"";position:absolute;inset:-6px}
/* ═══ 比賽及業績 Contest（2026-10-07）═══
   跟 demo v8：首頁 F 進度環卡（#ctHome）＋ overlay 頁（#ctPage）。class 一律 ct- 開頭（app 本身有 .card／.seg／.chips 等全域樣式）。
   測試期：html.ct-on 先顯示（CONTEST_BETA）。 */
html:not(.ct-on) .ct-only,html:not(.ct-on) #ctHome,html:not(.ct-on) #sideNav [data-sn="contest"]{display:none!important}
#ctHome,#ctPage{
  --ct-grey:#6e6e73;--ct-psoft:var(--primary-soft);--ct-me:#fdf1f1;--ct-track:#efeff2;--ct-seg:#e6e6eb;--ct-chip:#f2f2f6;--ct-press:#f4f4f7;
  --ct-conf:#1565c0;--ct-conf-bg:#e3f2fd;--ct-team:#2e7d32;--ct-team-bg:#e8f5e9;--ct-cash:#b45309;--ct-cash-bg:#fff3e0;
  --ct-gold:#b58800;--ct-gold-bg:#fbf2d3;--ct-silver:#7d848e;--ct-silver-bg:#eceef1;--ct-bronze:#a8662f;--ct-bronze-bg:#f6ebe0}
#ctHome[hidden]{display:none!important}
#ctPage [hidden]{display:none!important}
#ctHome .ct-fcard button,#ctPage button:not(.overlay-close):not(.rb-refresh-ico){font-family:inherit;color:inherit;cursor:pointer}   /* 頁頂掣唔跟，保持灰色（同會議室／Cold Call 一樣）*/
.ct-tap{transition:background-color .12s ease}
.ct-tap:active{background:var(--ct-press)}
.ct-ico{fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;flex-shrink:0;width:16px;height:16px}
.ct-ck{width:11px;height:11px;fill:none;stroke:currentColor;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;flex-shrink:0}
.ct-chev{width:11px;height:11px;fill:none;stroke:currentColor;stroke-width:2.8;stroke-linecap:round;stroke-linejoin:round;flex-shrink:0}
.ct-days{font-size:10px;font-weight:700;border-radius:999px;padding:2px 7px;white-space:nowrap;flex-shrink:0;display:inline-flex;align-items:center;gap:3px}
.ct-days.ok{background:var(--ct-chip);color:var(--text2)}
.ct-days.soon{background:var(--amber-soft);color:var(--amber-text)}
.ct-days.urg{background:var(--ct-psoft);color:var(--primary)}
.ct-days.done{background:var(--teal-soft);color:var(--teal)}
.ct-days.end{background:var(--ct-chip);color:var(--text3)}
.ct-ok{color:var(--teal);font-weight:700;display:inline-flex;align-items:center;gap:2px;white-space:nowrap}
.ct-gap{color:var(--primary);font-weight:700;white-space:nowrap}
.ct-est{font-size:9.5px;font-weight:700;color:var(--text2);background:var(--ct-chip);border-radius:4px;padding:1px 5px;vertical-align:1px;white-space:nowrap}
.ct-segm{display:inline-flex;gap:3px;vertical-align:middle}
.ct-segm i{width:13px;height:5px;border-radius:3px;background:var(--ct-track)}
.ct-segm i.on{background:var(--teal)}
.ct-mtr{display:block;height:5px;border-radius:3px;background:var(--ct-track);overflow:hidden}
.ct-mtr i{display:block;height:100%;border-radius:3px;background:var(--primary)}

/* ── 首頁卡 F：進度環 ── */
#ctHome .ct-st-sm{font-size:10.5px;font-weight:500;color:var(--text3);margin-left:6px}
.ct-fcard{background:var(--card);border:1px solid var(--border2);border-radius:14px;box-shadow:0 1px 3px rgba(0,0,0,.04);overflow:hidden}
.ct-F button{background:none;border:none;font:inherit;text-align:left}
.ct-F .ct-f-top{display:flex;align-items:center;gap:13px;padding:13px 13px 12px;width:100%}
.ct-ring{position:relative;flex-shrink:0}
.ct-ring svg{display:block;transform:rotate(-90deg)}
.ct-ring .ctr{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;line-height:1.05}
.ct-ring .ctr b{font-size:18px;font-weight:800;letter-spacing:-.4px;font-variant-numeric:tabular-nums}
.ct-ring .ctr small{font-size:9px;font-weight:700;color:var(--text3);margin-top:2px}
.ct-F .ct-f-tx{flex:1;min-width:0}
.ct-F .ct-f-tag{display:flex;justify-content:space-between;align-items:center;gap:6px;font-size:10px;font-weight:700;color:var(--ct-conf)}
.ct-F .ct-f-tag.team{color:var(--ct-team)}.ct-F .ct-f-tag.cash{color:var(--ct-cash)}.ct-F .ct-f-tag.info{color:var(--primary)}
.ct-F .ct-f-n{font-size:14px;font-weight:800;margin-top:2px;letter-spacing:-.2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ct-F .ct-f-g{font-size:11px;color:var(--text2);margin-top:5px;line-height:1.45}
.ct-F .ct-f-need{display:block;font-size:15px;font-weight:800;color:var(--text);letter-spacing:-.2px}
.ct-F .ct-f-next{display:block;margin-top:1px}
.ct-F .ct-f-mini{display:grid;grid-template-columns:repeat(3,1fr);border-top:1px solid var(--border2)}
.ct-F .ct-f-m{display:flex;flex-direction:column;align-items:center;text-align:center;gap:3px;padding:11px 4px 10px;min-width:0;width:100%}
.ct-F .ct-f-m+.ct-f-m{border-left:1px solid var(--border2)}
.ct-F .ct-f-m .ct-ring .ctr b{font-size:10.5px}
.ct-F .ct-f-m .ic{width:40px;height:40px;border-radius:50%;display:flex;align-items:center;justify-content:center}
.ct-F .ct-f-m .mn{font-size:11px;font-weight:700;max-width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-top:2px}
.ct-F .ct-f-m .ms{font-size:10px;color:var(--ct-grey);max-width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ct-F .ct-f-m .ct-days{margin-top:2px}
.ct-F .ct-f-rank{display:flex;align-items:center;gap:8px;border-top:1px solid var(--border2);padding:9px 13px;min-height:40px;font-size:11.5px;color:var(--text3);width:100%}
.ct-F .ct-f-rank b{color:var(--text);font-weight:700}
.ct-F .ct-f-rank .tx{flex:1;min-width:0;display:flex;flex-wrap:wrap;column-gap:6px;row-gap:1px}
.ct-F .ct-f-rank .tx>span{white-space:nowrap}
.ct-F .ct-f-rank .tx>span+span{display:none}   /* 手機只顯示名次（團隊2026-10-09）；差額喺排名頁睇 */
html.wide .ct-F .ct-f-rank .tx>span+span{display:inline}   /* iPad 位夠：名次 · 距上一名差額 */
.ct-F .ct-f-rank>.ct-ico{color:var(--primary)}
/* 香港「排名及業績」卡（冇比賽）：兩格大數字 */
.ct-F.nc,html.wide #ctHome .ct-F.nc{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr)}
.ct-nc-t{display:flex;flex-direction:column;align-items:flex-start;text-align:left;border:none;background:none;padding:13px 14px 12px;min-height:88px;width:100%;min-width:0}
.ct-nc-t+.ct-nc-t{border-left:1px solid var(--border2)}
.ct-nc-l{font-size:10.5px;color:var(--text3);font-weight:600;display:flex;align-items:center;gap:4px;white-space:nowrap}
.ct-nc-l .ct-ico{width:12px;height:12px;color:var(--primary)}
.ct-nc-v{font-size:24px;font-weight:800;letter-spacing:-.5px;margin-top:5px;font-variant-numeric:tabular-nums;line-height:1.1;white-space:nowrap}
.ct-nc-v.r{color:var(--primary)}
.ct-nc-s{font-size:10.5px;color:var(--text2);margin-top:5px;font-variant-numeric:tabular-nums;white-space:nowrap}
.ct-nc-s.up{color:var(--teal);font-weight:700}
.ct-F .ct-f-adm{display:flex;align-items:center;gap:11px;padding:13px;width:100%}
.ct-F .ct-f-adm .ic{width:40px;height:40px;border-radius:12px;background:var(--ct-conf-bg);color:var(--ct-conf);display:flex;align-items:center;justify-content:center;flex-shrink:0}
.ct-F .ct-f-adm .tx{flex:1;min-width:0;font-size:11px;color:var(--text2);line-height:1.45}
.ct-F .ct-f-adm .tx b{display:block;font-size:13.5px;color:var(--text);font-weight:800}
.ct-F .ct-f-as{display:flex;align-items:center;gap:6px;padding:7px 13px;border-bottom:1px solid var(--border2);font-size:10.5px;color:var(--ct-conf);background:var(--ct-conf-bg)}

/* ── 海報／封面 ── */
.ct-ban{position:relative;aspect-ratio:16/9;overflow:hidden;border-radius:14px 14px 0 0;background:var(--ct-chip)}
.ct-cc .ct-ban{margin:-12px -13px 11px}
.ct-card .ct-ban{margin:-13px -14px 12px}
.ct-ban img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:block;opacity:0;transition:opacity .25s}
.ct-ban.has-img img{opacity:1}
.ct-ban>.ct-days{position:absolute;top:8px;right:8px;background:var(--card);box-shadow:0 1px 4px rgba(0,0,0,.2);z-index:2}
.ct-ban .ct-zoom{position:absolute;right:8px;bottom:8px;width:24px;height:24px;border-radius:50%;background:rgba(255,255,255,.6);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);color:#48484a;border:none;padding:0;display:none;align-items:center;justify-content:center;box-shadow:0 1px 3px rgba(0,0,0,.12);z-index:2;-webkit-tap-highlight-color:transparent}   /* 2026-10-08 跟 Cold Call 禮品圖 .cgp-zoom */
.ct-ban .ct-zoom:active{transform:scale(.88)}
#ctPage .ct-ban .ct-zoom{color:#48484a}   /* 蓋過 #ctPage button{color:inherit} */
.ct-ban.has-img .ct-zoom{display:flex}
.ct-ban .ct-zoom::after{content:"";position:absolute;inset:-6px}
.ct-ban .ct-zoom .ct-ico{width:13px;height:13px;stroke-width:2.4}
.ct-cover{position:absolute;inset:0;display:flex;flex-direction:column;justify-content:flex-end;padding:14px 16px;color:#fff;overflow:hidden}
.ct-cover.conf{background:linear-gradient(135deg,#2c7be0 0%,#0f4a9e 100%)}
.ct-cover.cash{background:linear-gradient(135deg,#f0a23c 0%,#b45309 100%)}
.ct-cover.team{background:linear-gradient(135deg,#46a34b 0%,#1b5e20 100%)}
.ct-cover.info{background:linear-gradient(135deg,#d64140 0%,var(--primary-dark) 100%)}
.ct-cover::before{content:"";position:absolute;inset:0;background-image:radial-gradient(rgba(255,255,255,.16) 1px,transparent 1.6px);background-size:11px 11px;-webkit-mask-image:linear-gradient(100deg,transparent 35%,#000 85%);mask-image:linear-gradient(100deg,transparent 35%,#000 85%)}
.ct-cover .cv-ic{position:absolute;right:-10px;top:42%;transform:translateY(-50%) rotate(-10deg);opacity:.22}
.ct-cover .cv-ic .ct-ico{width:118px;height:118px;stroke-width:1.3}
.ct-cover .cv-tag{position:relative;font-size:10px;font-weight:700;letter-spacing:.4px;background:rgba(255,255,255,.2);padding:2px 8px;border-radius:999px;align-self:flex-start}
.ct-cover .cv-t{position:relative;font-size:19px;font-weight:800;line-height:1.25;margin-top:6px;max-width:80%;letter-spacing:-.2px;text-wrap:balance}
.ct-lbx{position:absolute;inset:0;background:rgba(0,0,0,.94);z-index:60;display:none;flex-direction:column;align-items:center;justify-content:center;gap:12px;cursor:pointer}
.ct-lbx.show{display:flex}
.ct-lbx img{width:100%;height:auto;max-height:86%;object-fit:contain;display:block}
.ct-lbx-x{position:absolute;top:calc(10px + var(--safe-top,0px));right:10px;width:36px;height:36px;border-radius:50%;background:rgba(255,255,255,.16);border:none;color:#fff;display:flex;align-items:center;justify-content:center}
.ct-lbx-x svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:2.4;stroke-linecap:round}
.ct-lbx-cap{font-size:11px;color:rgba(255,255,255,.7)}

/* ── 頁面 ── */
#ctPage .overlay-body{padding:12px 16px 28px}
/* 頁頂右邊：跟會議室（↻＋✕，gap 4px）；管理員多一個「以同事身分檢視」*/
.ct-hr,.ct-hgrp{display:flex;align-items:center;justify-content:flex-end;gap:4px}
.ct-hr .overlay-close .ct-ico{width:20px;height:20px}
.ct-hr .rb-refresh-ico .ct-ico{width:18px;height:18px}
html.wide #ctPage>.overlay-hdr .ct-hx{display:none}   /* iPad 側欄已有，唔使 ✕（同會議室）*/
.ct-card{background:var(--card);border:1px solid var(--border2);border-radius:14px;box-shadow:0 1px 3px rgba(0,0,0,.04);padding:13px 14px}
.ct-lbl{font-size:13px;font-weight:600;color:var(--ct-grey);margin:6px 2px -2px;display:flex;justify-content:space-between;align-items:baseline;gap:8px}
.ct-lbl small{font-size:10.5px;font-weight:500;color:var(--text3);text-align:right}
.ct-stack{display:flex;flex-direction:column;gap:10px;margin-top:10px}
.ct-fn{font-size:10.5px;color:var(--text3);margin-top:8px;line-height:1.5}
.ct-seg{display:flex;background:var(--ct-seg);border-radius:10px;padding:2px}
.ct-seg button{flex:1;border:none;background:none;font-size:12.5px;font-weight:600;color:var(--text2)!important;min-height:32px;border-radius:8px}
.ct-seg button.on{background:#fff;color:var(--text)!important;box-shadow:0 1px 3px rgba(0,0,0,.1)}
.ct-seg.sm button{font-size:11.5px;min-height:30px}
.ct-fresh{display:flex;align-items:center;gap:5px;font-size:10.5px;color:var(--text3);margin:8px 2px 0}
.ct-fresh i{width:6px;height:6px;border-radius:50%;background:var(--teal);flex-shrink:0}
.ct-fresh.d{margin:0 2px 8px}
/* 比賽搜尋（2026-10-13）：同一行最右放大鏡；展開後＝App 標準搜尋框（.search-input＋.search-clear）＋取消 */
.ct-fr{display:flex;align-items:center;gap:6px;margin:6px 0 0 2px;min-height:32px}
.ct-fr .ct-fresh{margin:0;flex:1;min-width:0}
.ct-fresh>span{min-width:0}
.ct-sbtn{position:relative;width:32px;height:32px;border-radius:50%;border:1px solid var(--border);background:var(--card);color:var(--text2);display:grid;place-items:center;flex-shrink:0;padding:0;cursor:pointer;-webkit-tap-highlight-color:transparent}
.ct-sbtn::after{content:"";position:absolute;inset:-6px}   /* 手指可撳範圍加大 */
.ct-sbtn:active{background:var(--bg)}
.ct-sbtn .ct-ico{width:14px;height:14px}
.ct-srow{display:flex;align-items:center;gap:8px;margin:6px 0 0}
.ct-srow .search-input-wrap{flex:1;min-width:0}
.ct-srow .search-input{height:36px;padding-top:0;padding-bottom:0;margin:0;-webkit-appearance:none;appearance:none}
.ct-scancel{border:none;background:none;color:var(--primary);font:inherit;font-size:13px;font-weight:700;padding:8px 2px;flex-shrink:0;cursor:pointer;-webkit-tap-highlight-color:transparent}
.ct-chips{display:flex;gap:6px;overflow-x:auto;scrollbar-width:none;margin-top:10px;padding-bottom:1px}
.ct-chips::-webkit-scrollbar{display:none}
.ct-chips button{flex-shrink:0;border:1px solid var(--border);background:#fff;border-radius:999px;padding:0 12px;min-height:32px;font-size:12px;font-weight:600}
.ct-chips button.on{background:#1c1c1e;border-color:#1c1c1e;color:#fff!important}
.ct-as{display:flex;align-items:center;gap:7px;background:var(--ct-conf-bg);color:var(--ct-conf);border-radius:10px;padding:7px 8px 7px 10px;font-size:11.5px;margin-bottom:10px}
.ct-as span{flex:1;min-width:0;line-height:1.4}
.ct-as b{font-weight:800}
.ct-as button{border:none;background:#fff;color:var(--ct-conf)!important;font-size:11.5px;font-weight:700;border-radius:8px;padding:0 10px;min-height:30px;white-space:nowrap}
.ct-empty{text-align:center;padding:14px 8px 8px;color:var(--text3);font-size:11.5px;line-height:1.5}
.ct-empty .ct-ico{width:26px;height:26px;color:#c7c7cc;margin-bottom:4px}
.ct-empty b{display:block;color:var(--text);font-size:12.5px}
.ct-empty .ct-retry{margin-top:10px;border:1px solid var(--border);background:#fff;border-radius:10px;min-height:36px;padding:0 16px;font-size:12.5px;font-weight:700}
.ct-load{min-height:180px;color:var(--text3);font-size:12px}
/* 比賽總覽卡 */
.ct-cc{display:block;width:100%;text-align:left;background:var(--card);border:1px solid var(--border2);border-radius:14px;box-shadow:0 1px 3px rgba(0,0,0,.04);padding:12px 13px}
.ct-cc.ended{opacity:.72}
.ct-cc-tag{font-size:10.5px;font-weight:700;color:var(--text3)}
.ct-cc-n{font-size:14.5px;font-weight:800;letter-spacing:-.2px;margin-top:2px;line-height:1.3}
.ct-cc-st{display:flex;align-items:center;gap:8px;margin-top:6px;font-size:11.5px;color:var(--ct-grey);flex-wrap:wrap}
.ct-cc-st b{font-size:17px;font-weight:800;color:var(--text);font-variant-numeric:tabular-nums}
.ct-cc-st b small{font-size:11px;color:var(--text3)}
.ct-cc-sum{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;line-height:1.45;color:var(--text2)}
.ct-cc-next{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-top:8px;padding-top:8px;border-top:1px solid var(--border2);font-size:11.5px;color:var(--text2)}
.ct-cc-next>span:last-child{color:var(--text3);display:inline-flex}
/* 詳情 */
.ct-dh .tg{font-size:10.5px;font-weight:700;color:var(--text2)}
.ct-dh .pd{font-size:10.5px;color:var(--text3);line-height:1.45}
.ct-d-name{font-size:17px;font-weight:800;letter-spacing:-.3px;margin-top:4px;line-height:1.3;text-wrap:balance}
.ct-d-sum{display:flex;align-items:flex-end;justify-content:space-between;gap:10px;margin-top:10px}
.ct-d-sum .big{font-size:26px;font-weight:800;letter-spacing:-.6px;line-height:1;font-variant-numeric:tabular-nums}
.ct-d-sum .big small{font-size:13px;color:var(--text3);font-weight:700;letter-spacing:0}
.ct-d-sum .cap{font-size:11px;color:var(--ct-grey);font-weight:600;margin-top:3px}
.ct-wrap2{display:flex;flex-wrap:wrap;align-items:baseline;column-gap:4px;row-gap:1px}
.ct-wrap2>span{white-space:nowrap}   /* 分區名＋尚差：排唔落就成段落下一行，唔會剩個「·」 */
.ct-d-sum .win{color:var(--teal);font-size:20px;font-weight:800;display:flex;align-items:center;gap:5px}
.ct-d-sum .win .ct-ck{width:18px;height:18px}
.ct-proj{font-size:10.5px;font-weight:700;border-radius:8px;padding:5px 8px;background:var(--bg);color:var(--text2);text-align:right;line-height:1.35;flex-shrink:0}
.ct-proj b{display:block;font-size:12.5px;color:var(--text)}
.ct-pseg{margin-top:12px}
.ct-pseg button{font-size:11px}
.ct-pseg small{font-size:9.5px;font-weight:700;margin-left:4px;color:var(--text3)}
.ct-pseg .on small{color:var(--primary)}
.ct-crit{padding:11px 0 10px;border-top:1px solid var(--border2)}
.ct-crit:first-child{border-top:none}
.ct-crit-h{display:flex;align-items:baseline;gap:6px}
.ct-crit-h b{font-size:13px;font-weight:700}
.ct-crit-h .cur{font-size:11px;color:var(--text2);font-variant-numeric:tabular-nums}
.ct-crit-h .ct-ex{font-size:10px;font-weight:700;color:var(--text2);background:var(--ct-chip);border-radius:4px;padding:1px 6px;white-space:nowrap;align-self:center}
.ct-crit-h em{margin-left:auto;font-style:normal;font-size:11.5px;font-variant-numeric:tabular-nums}
.ct-bul{position:relative;height:10px;border-radius:5px;background:var(--ct-track);margin-top:7px}
.ct-bul .fl{position:absolute;left:0;top:0;bottom:0;border-radius:5px;background:var(--primary)}
.ct-bul .fl.win{background:var(--teal)}
.ct-bul .fl.team{background:var(--ct-team)}
.ct-bul .pj{position:absolute;top:0;bottom:0;border-radius:0 5px 5px 0;background:repeating-linear-gradient(-45deg,rgba(var(--primary-rgb),.28) 0 3px,rgba(var(--primary-rgb),.12) 3px 6px)}
.ct-bul .tg{position:absolute;top:-3px;bottom:-3px;width:2px;background:var(--text);border-radius:1px}
.ct-bul-l{position:relative;display:flex;height:14px;font-size:10px;color:var(--text3);margin-top:4px;font-variant-numeric:tabular-nums}
.ct-bul-l .tl{position:absolute;top:0;white-space:nowrap}
.ct-crit-f{font-size:10.5px;color:var(--text2);margin-top:5px;display:flex;flex-wrap:wrap;gap:2px 10px}
.ct-crit-f b{color:var(--text);font-variant-numeric:tabular-nums}
.ct-rw-row{display:flex;align-items:center;gap:6px;margin-top:10px;flex-wrap:wrap}
.ct-rw{display:inline-flex;align-items:center;gap:4px;font-size:10.5px;font-weight:700;color:var(--amber-text);background:var(--amber-soft);border-radius:7px;padding:3px 8px}
.ct-rw .ct-ico{width:12px;height:12px}
.ct-rw.lv{color:var(--text2);background:var(--ct-chip)}
.ct-rw-near{font-size:10px;font-weight:700;color:var(--primary)}
.ct-note{font-size:10.5px;color:var(--amber-text);background:var(--amber-soft);border-radius:6px;padding:3px 7px;margin-top:7px;display:inline-flex;align-items:flex-start;gap:4px;line-height:1.45}
.ct-note .ct-ico{width:12px;height:12px;margin-top:2px}
.ct-note .ct-ck{margin-top:2.5px}
.ct-note.ok{color:var(--teal);background:var(--teal-soft)}
.ct-leg{display:flex;gap:12px;font-size:10px;color:var(--text3);margin-top:8px;flex-wrap:wrap}
.ct-leg i{display:inline-block;width:14px;height:6px;border-radius:3px;margin-right:4px;vertical-align:1px}
.ct-leg .l1{background:var(--primary)}.ct-leg .l2{background:repeating-linear-gradient(-45deg,rgba(var(--primary-rgb),.35) 0 3px,rgba(var(--primary-rgb),.12) 3px 6px)}.ct-leg .l3{width:2px;height:10px;background:var(--text);vertical-align:-2px}
/* 高峰會議前 N 名 */
.ct-lb{font-variant-numeric:tabular-nums}
.ct-lb-r{display:grid;align-items:center;gap:4px;padding:8px 0;border-top:1px solid var(--border2);font-size:11px}
.ct-lb-r.h{border-top:none;padding-top:0;font-size:9.5px;color:var(--text3);font-weight:700;align-items:end;line-height:1.3}
.ct-lb-r .no{font-weight:800;color:var(--text3);text-align:center}
.ct-lb-r .no.m1{color:var(--ct-gold)}.ct-lb-r .no.m2{color:var(--ct-silver)}.ct-lb-r .no.m3{color:var(--ct-bronze)}
.ct-lb-r .nm{font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ct-lb-r .c{text-align:center;display:flex;align-items:center;justify-content:center}
.ct-lb-r .c.hd{display:block}
.ct-lb-r .c .v{position:relative}   /* ✓ 吊喺數字左邊，數字本身保持置中（有冇 ✓ 都對齊）*/
.ct-lb-r .c.hit{color:var(--teal);font-weight:700}
.ct-lb-r .c .ct-ck{width:8px;height:8px;stroke-width:3.5;position:absolute;right:100%;top:50%;transform:translateY(calc(-50% + .6px));margin-right:1px}
.ct-lb-r.me{background:var(--ct-me);margin:0 -10px;padding:8px 10px;border-top-color:transparent}
.ct-lb-r.me .nm{color:var(--primary)}
.ct-gapdots{text-align:center;color:var(--text3);font-size:12px;letter-spacing:2px;padding:1px 0}
/* 分區排名賽 */
.ct-dv{padding:8px 0;border-top:1px solid var(--border2)}
.ct-dv:first-child{border-top:none}
.ct-dv-h{display:flex;align-items:center;gap:7px;font-size:12px}
.ct-dv-h .no{width:16px;text-align:center;font-weight:800;color:var(--text3)}
.ct-dv-h .nm{flex:1;font-weight:600;min-width:0}
.ct-dv-h .vv{font-weight:700;font-variant-numeric:tabular-nums}
.ct-dv-h .ct-ok{transform:translateY(1.5px)}   /* 對準數字中線 */
.ct-dv.me .nm,.ct-dv.me .vv{color:var(--primary)}
.ct-dv-bar{position:relative;height:6px;border-radius:3px;background:var(--ct-track);margin:6px 0 0 23px}
.ct-dv-bar i{position:absolute;left:0;top:0;bottom:0;border-radius:3px;background:var(--ct-team)}
.ct-dv-bar .tg{position:absolute;top:-3px;bottom:-3px;width:2px;background:var(--text)}
/* 產品現金賞 */
.ct-ladder{display:flex;flex-direction:column;gap:6px}
.ct-lad{display:grid;grid-template-columns:86px minmax(0,1fr) 34px;align-items:center;gap:8px;font-size:11.5px;font-variant-numeric:tabular-nums}
.ct-lad .bar{height:16px;border-radius:5px;background:var(--ct-cash-bg);position:relative;overflow:hidden}
.ct-lad .bar i{position:absolute;left:0;top:0;bottom:0;background:var(--ct-cash);opacity:.85;border-radius:5px}
.ct-lad b{text-align:right;font-weight:800;color:var(--ct-cash)}
.ct-lad.on .bar{box-shadow:0 0 0 2px var(--ct-cash)}
.ct-calc label{display:block;font-size:11px;font-weight:700;color:var(--text2)}
.ct-calc .inp{display:flex;align-items:center;gap:6px;margin-top:5px;border:1.5px solid var(--border);border-radius:10px;padding:0 10px;min-height:42px;background:#fff}
.ct-calc .inp:focus-within{border-color:var(--text)}
.ct-calc .inp span{font-size:12px;font-weight:700;color:var(--text3)}
.ct-calc input{flex:1;min-width:0;border:none;outline:none;font:inherit;font-size:17px;font-weight:800;font-variant-numeric:tabular-nums;background:none;color:var(--text);-webkit-appearance:none;appearance:none}
.ct-calc-out{display:flex;justify-content:space-between;align-items:flex-end;gap:8px;margin-top:12px}
.ct-calc-out .big{font-size:24px;font-weight:800;letter-spacing:-.5px;color:var(--ct-cash);font-variant-numeric:tabular-nums;line-height:1}
.ct-calc-out .big small{font-size:12px;color:var(--text3);font-weight:700;letter-spacing:0}
.ct-calc-out .cap{font-size:10.5px;color:var(--text3);margin-top:3px}
.ct-tierpill{font-size:11px;font-weight:800;border-radius:8px;padding:5px 9px;background:var(--ct-cash-bg);color:var(--ct-cash);white-space:nowrap}
.ct-tierpill.no{background:var(--ct-chip);color:var(--text3)}
.ct-upsell{display:flex;gap:7px;margin-top:10px;background:var(--bg);border-radius:10px;padding:8px 10px;font-size:11.5px;color:var(--text2);line-height:1.45}
.ct-upsell .ct-ico{flex-shrink:0;margin-top:2px;color:var(--ct-cash);width:14px;height:14px}
.ct-upsell b{color:var(--text)}
.ct-pol{display:flex;align-items:center;gap:10px;padding:9px 0;border-top:1px solid var(--border2)}
.ct-pol:first-child{border-top:none}
.ct-pol .tx{flex:1;min-width:0;font-size:10.5px;color:var(--text3);font-variant-numeric:tabular-nums}
.ct-pol .tx b{display:block;font-size:12.5px;color:var(--text)}
.ct-pol .vv{text-align:right;font-size:12.5px;font-weight:800;font-variant-numeric:tabular-nums}
.ct-pol .vv span{display:block;font-size:10px;font-weight:700;margin-top:1px;color:var(--amber-text)}
.ct-pol .vv span.a{color:var(--teal)}
.ct-tot{display:flex;justify-content:space-between;align-items:baseline;border-top:1px solid var(--border2);padding:9px 0 6px;font-size:12px;font-weight:700}
.ct-tot b{font-size:18px;font-weight:800;color:var(--ct-cash)}
/* 排名 */
.ct-mine-r{display:flex;align-items:center;gap:11px}
.ct-mine-r .big{font-size:28px;font-weight:800;color:var(--primary);line-height:1;font-variant-numeric:tabular-nums;min-width:44px}
.ct-mine-r .big small{font-size:12px;font-weight:700;margin-left:1px;color:var(--text)}
.ct-mine-r .tx{flex:1;font-size:11.5px;color:var(--text2);line-height:1.5;font-variant-numeric:tabular-nums}
.ct-mine-r .tx b{color:var(--text)}
.ct-podium{display:grid;grid-template-columns:1fr 1fr 1fr;align-items:end;gap:6px;padding-top:4px}
.ct-pod{display:flex;flex-direction:column;align-items:center;gap:3px;text-align:center;min-width:0}
.ct-pod .av{width:38px;height:38px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-weight:800;font-size:14px;position:relative}
.ct-pod .av em{position:absolute;right:-4px;bottom:-3px;font-style:normal;width:17px;height:17px;border-radius:50%;font-size:9.5px;font-weight:800;display:flex;align-items:center;justify-content:center;color:#fff;border:2px solid #fff}
.ct-pod.p1 .av{width:48px;height:48px;font-size:17px;background:var(--ct-gold-bg);color:var(--ct-gold)}.ct-pod.p1 .av em{background:var(--ct-gold)}
.ct-pod.p2 .av{background:var(--ct-silver-bg);color:var(--ct-silver)}.ct-pod.p2 .av em{background:var(--ct-silver)}
.ct-pod.p3 .av{background:var(--ct-bronze-bg);color:var(--ct-bronze)}.ct-pod.p3 .av em{background:var(--ct-bronze)}
.ct-pod .nm{font-size:11.5px;font-weight:700;max-width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ct-pod .vv{font-size:10.5px;color:var(--text2);font-variant-numeric:tabular-nums}
.ct-pod .stand{width:100%;border-radius:8px 8px 0 0;margin-top:3px}
.ct-pod.p1 .stand{height:34px;background:var(--ct-gold-bg)}.ct-pod.p2 .stand{height:24px;background:var(--ct-silver-bg)}.ct-pod.p3 .stand{height:16px;background:var(--ct-bronze-bg)}
.ct-pod.me .nm{color:var(--primary)}
.ct-rk{display:flex;align-items:center;gap:9px;min-height:36px;padding:4px 0}
.ct-rk+.ct-rk{border-top:1px solid var(--border2)}
.ct-rk .no{width:18px;text-align:center;font-size:12px;font-weight:800;color:var(--text3);font-variant-numeric:tabular-nums}
.ct-rk .ava{width:24px;height:24px;border-radius:50%;background:var(--ct-chip);color:var(--text2);font-size:10px;font-weight:800;display:flex;align-items:center;justify-content:center;flex-shrink:0}
.ct-rk .nn{flex:1;font-size:12.5px;font-weight:600;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ct-rk .vv{font-size:12px;font-weight:700;font-variant-numeric:tabular-nums}
.ct-rk.me{background:var(--ct-me);margin:0 -14px;padding:4px 14px;border-top-color:transparent}
.ct-rk.me .ava{background:var(--primary);color:#fff}
.ct-rk.me .nn,.ct-rk.me .vv{color:var(--primary)}
/* 我的業績 */
.ct-kp{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.ct-kp>div{background:var(--card);border:1px solid var(--border2);border-radius:12px;padding:9px 11px;box-shadow:0 1px 3px rgba(0,0,0,.04);min-width:0}
.ct-kp span{display:block;font-size:10.5px;color:var(--text3);font-weight:600}
.ct-kp b{display:block;font-size:16px;font-weight:800;font-variant-numeric:tabular-nums;margin-top:1px;letter-spacing:-.3px}
.ct-kp em{display:block;font-style:normal;font-size:10px;font-weight:700;margin-top:1px;font-variant-numeric:tabular-nums;color:var(--text3)}
.ct-kp em.up{color:var(--teal)}
.ct-kp-line{font-size:11px;color:var(--text2);display:flex;flex-wrap:wrap;gap:4px 12px;margin:9px 2px 0}
.ct-kp-line b{color:var(--text);font-variant-numeric:tabular-nums}
.ct-chart text{font-family:inherit;font-size:9px;fill:var(--text3)}
.ct-chart .vl{font-size:8.5px;fill:var(--text2);font-weight:700}
.ct-mt{font-variant-numeric:tabular-nums}
.ct-mt-r{display:grid;grid-template-columns:34px minmax(0,1fr) 34px minmax(0,1fr) 30px;gap:4px;padding:6px 0;border-top:1px solid var(--border2);font-size:11px;align-items:center}
.ct-mt-r.h{border-top:none;padding-top:0;font-size:10px;color:var(--text3);font-weight:700}
.ct-mt-r span{text-align:right}.ct-mt-r span:first-child{text-align:left;font-weight:600}.ct-mt-r span:last-child{text-align:center}
.ct-mt-r.cur{color:var(--text3)}
.ct-mt-r .ct-ck{color:var(--teal);width:12px;height:12px;display:inline-block;vertical-align:-3px}
details.ct-rules summary{list-style:none;display:flex;justify-content:space-between;align-items:center;min-height:32px;font-size:13px;font-weight:700;cursor:pointer}
details.ct-rules summary::-webkit-details-marker{display:none}
details.ct-rules summary .ct-chev{transform:rotate(90deg);color:var(--text3);transition:transform .2s}
details.ct-rules[open] summary .ct-chev{transform:rotate(-90deg)}
details.ct-rules ul{margin:6px 0 0;padding-left:16px;display:flex;flex-direction:column;gap:5px;font-size:11.5px;color:var(--text2);line-height:1.5}
.ct-doc{display:flex;align-items:center;gap:8px;width:100%;min-height:40px;margin-top:10px;border:1px solid var(--border);border-radius:10px;background:#fff;padding:0 11px;font-size:12px;font-weight:700;text-align:left}
.ct-doc span{flex:1}
.ct-doc .ct-ico{color:var(--text3)}
/* 以同事身分檢視（管理員）*/
#ctSheet{position:absolute;inset:0;z-index:50;display:none}
#ctSheet.show{display:block}
.ct-scrim{position:absolute;inset:0;background:var(--modal-scrim)}
.ct-sh{position:absolute;left:0;right:0;bottom:0;max-height:78%;background:var(--card);border-radius:18px 18px 0 0;display:flex;flex-direction:column;padding:12px 16px 30px;box-shadow:0 -6px 24px rgba(0,0,0,.15)}
.ct-sh-h{display:flex;align-items:center;justify-content:space-between;min-height:36px}
.ct-sh-h b{font-size:15px;font-weight:800}
.ct-sh-x{width:32px;height:32px;border-radius:50%;border:none;background:var(--ct-chip);display:flex;align-items:center;justify-content:center;color:var(--text2)}
.ct-sh-x svg{width:15px;height:15px;fill:none;stroke:currentColor;stroke-width:2.4;stroke-linecap:round}
.ct-sh-s input{width:100%;min-height:38px;border:1px solid var(--border);border-radius:10px;padding:0 12px;font:inherit;font-size:13px;margin-top:6px;background:var(--bg);-webkit-appearance:none;appearance:none;outline:none}
.ct-sh-s input:focus{border-color:var(--text);background:#fff}
.ct-sh-l{overflow-y:auto;margin-top:8px;flex:1;min-height:0}
.ct-sr{display:flex;align-items:center;gap:10px;width:100%;min-height:44px;border:none;background:none;border-top:1px solid var(--border2);padding:6px 2px;text-align:left}
.ct-sr:first-child{border-top:none}
.ct-sr .ava{width:28px;height:28px;border-radius:50%;background:var(--ct-chip);font-size:11px;font-weight:800;color:var(--text2);display:flex;align-items:center;justify-content:center;flex-shrink:0}
.ct-sr .tx{flex:1;min-width:0;font-size:13px;font-weight:600}
.ct-sr .tx small{display:block;font-size:10.5px;font-weight:500;color:var(--text3)}
.ct-sr.on .ava{background:var(--primary);color:#fff}
.ct-sr.on .tx{color:var(--primary)}
/* iPad／闊螢幕 */
html.wide #ctPage .ct-wrap{max-width:760px;margin:0 auto}
html.wide #ctPage .ct-ov{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;align-items:start}
/* ── iPad 版檢查（2026-10-09）── */
.ct-ban img.bgx{display:none}
html.wide #ctPage .ct-ban.dt{aspect-ratio:auto;height:250px}   /* 詳情頁海報唔再佔成個畫面 */
html.wide #ctPage .ct-ban.dt img:not(.bgx){object-fit:contain}
html.wide #ctPage .ct-ban.dt img.bgx{display:block;object-fit:cover;filter:blur(18px) saturate(1.1);transform:scale(1.2);opacity:0}
html.wide #ctPage .ct-ban.dt.has-img img.bgx{opacity:1}
html.wide #ctPage .ct-ban.dt.has-img .ct-cover{opacity:0}   /* 有海報就唔好見到底下嘅封面字 */
html.wide #ctPage .ct-mt-r{grid-template-columns:64px repeat(3,minmax(0,1fr)) 64px}   /* 每月明細平均分欄 */
html.wide .ct-F .ct-f-rank .tx>span+span::before,html.wide .ct-wrap2>span+span::before{content:"·";margin-right:6px;color:var(--text3)}   /* 一行放得落：中間加「·」 */
html.wide #ctSheet .ct-sh{left:50%;right:auto;top:50%;bottom:auto;width:420px;max-height:76%;transform:translate(-50%,-50%);border-radius:18px;padding-bottom:16px}
html.wide #page-home>#ctHome{grid-column:1/-1}
html.wide #ctHome .ct-F{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.25fr)}
html.wide #ctHome .ct-F>.ct-f-as,html.wide #ctHome .ct-F>.ct-f-rank,html.wide #ctHome .ct-F>.ct-f-adm{grid-column:1/-1}
html.wide #ctHome .ct-F .ct-f-mini{border-top:none;border-left:1px solid var(--border2)}
@media (prefers-reduced-motion:reduce){.ct-tap,.ct-ban img{transition:none}}
/* ═══ 數字輸入框清除掣（2026-10-08）：有數字先出 ✕，撳一下清空（樣式跟搜尋框 .search-clear）═══ */
.nclr-w{position:relative;display:block}
.nclr{position:relative;width:20px;height:20px;border:none;background:rgba(0,0,0,.06);color:var(--text3);border-radius:50%;padding:0;display:none;align-items:center;justify-content:center;flex-shrink:0;cursor:pointer;-webkit-tap-highlight-color:transparent;transition:background .15s ease,color .15s ease}
.nclr::after{content:"";position:absolute;inset:-8px}
.nclr:active{background:rgba(0,0,0,.14);color:var(--text2)}
.nclr svg{width:9px;height:9px;display:block}
.nclr-w>.nclr{position:absolute;right:7px;top:50%;transform:translateY(-50%)}
input:not(:placeholder-shown)+.nclr{display:flex}
input[readonly]+.nclr,input:disabled+.nclr{display:none!important}
.nclr-w>input{padding-right:30px!important}
.nclr-w>input.calc-v6-input{padding-left:30px!important}   /* 計算機格數字置中：兩邊留返一樣闊 */
