/* ══════════════════════════════════════════════════════════
   CFO Pilot App Shell — minimal · refined
   設計原則: 1) 不搶內容焦點  2) 字 < 圖示 < 內容  3) 留白比裝飾重要
   ══════════════════════════════════════════════════════════ */

:root {
  --las-app-side-w: 208px;
  --las-app-top-h: 52px;
  --las-app-side-w-rail: 52px;        /* 預設窄條,只有圖示 */
}

/* 套用 shell 後 body 的位置 — 永遠保留 rail 寬,展開時 sidebar 浮在內容上方,不擠 */
body.has-cfo-app-shell {
  margin: 0;
  padding-top: var(--las-app-top-h);
  padding-left: var(--las-app-side-w-rail);   /* 內容永遠只讓 52px 給 rail */
  background: var(--cfo-bg, #f4f6f9);
  min-height: 100vh;
  box-sizing: border-box;
}

/* ══ TOP BAR ── 跟著主題色換背景 (var(--cfo-header-a)) ══ */
.lap-top {
  position: fixed; top: 0; left: 0; right: 0;
  height: var(--las-app-top-h);
  z-index: 10001;
  background: linear-gradient(105deg, var(--cfo-header-a, #071E41) 0%, var(--cfo-header-b, #14B8A6) 58%, var(--cfo-green-2, var(--cfo-header-b, #14B8A6)) 100%);
  color: #e8eef5;
  display: flex; align-items: center;
  padding: 0 14px 0 16px;
  gap: 8px;
  border-bottom: 1px solid rgba(255,255,255,.06);
  font-family: var(--ff-base, "Inter","PingFang TC","Microsoft JhengHei",system-ui,sans-serif);
}
/* mono (高對比黑白) 主題下 topbar 要黑底白字, 加粗邊 */
:root[data-cfo-theme="mono"] .lap-top { background: #000; border-bottom: 2px solid #000; }
:root[data-cfo-theme="mono"] .lap-top * { color: #fff !important; }

.lap-top-brand {
  display: inline-flex; align-items: center;
  text-decoration: none; flex-shrink: 0;
  padding: 2px 8px 2px 2px; border-radius: 6px;
  transition: opacity .12s ease;
}
.lap-top-brand::after { content: none; }
/* 現代 SaaS 字標 — Inter、緊湊字距、雲白色（深色頂欄上） */
.lap-top-brand .brand-word {
  font-family: 'Inter', 'PingFang TC', 'Microsoft JhengHei', system-ui, sans-serif;
  font-size: 21px; line-height: 1; font-weight: 800;
  letter-spacing: -.01em;
  color: #F6F9FC;
  white-space: nowrap;
}
.lap-top-brand .brand-pilot { color: #2DD4BF; font-weight: 600; }
.lap-top-brand .lap-top-logo { height: 32px; width: auto; display: block; }
.lap-top-brand:hover { opacity: .82; }
:root[data-cfo-theme="mono"] .lap-top-brand .brand-word { color: #fff; }

.lap-top-en { display: none; }  /* 拿掉 CFO Pilot 副標 — 太冗餘 */
.lap-workspace-chip {
  min-width: 0;
  max-width: min(420px, 38vw);
  display: flex;
  flex-direction: column;
  justify-content: center;
  gap: 3px;
  margin-left: 4px;
  padding: 0 12px;
  border-left: 1px solid rgba(255,255,255,.12);
  flex-shrink: 1;
}
.lap-ws-row {
  display: flex;
  align-items: baseline;
  gap: 7px;
  min-width: 0;
  line-height: 1.1;
}
.lap-ws-label {
  flex-shrink: 0;
  width: 4.6em;
  white-space: nowrap;
  color: rgba(255,255,255,.42);
  font-size: 10px;
  font-weight: 700;
  letter-spacing: .02em;
}
.lap-ws-code {
  color: #F6F9FC;
  font-family: var(--ff-mono, "SF Mono", "Roboto Mono", monospace);
  font-size: 11.5px;
  font-weight: 800;
  letter-spacing: .4px;
}
.lap-ws-name {
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  color: rgba(255,255,255,.82);
  font-size: 11.5px;
  font-weight: 650;
}
.lap-top-spacer { flex: 1; }

/* 搜尋按鈕 — 只是個圖示 + ⌘K, 不畫滿整條 pill */
.lap-top-search {
  display: flex; align-items: center; gap: 6px;
  background: transparent;
  border: 1px solid rgba(255,255,255,.10);
  border-radius: 6px;
  padding: 5px 9px;
  color: rgba(255,255,255,.55);
  font-size: 12px; font-weight: 500;
  cursor: pointer;
  transition: background .12s, border-color .12s, color .12s;
  font-family: inherit;
}
.lap-top-search:hover {
  background: rgba(255,255,255,.06);
  border-color: rgba(255,255,255,.20);
  color: #fff;
}
.lap-top-search .kbd {
  background: rgba(255,255,255,.08);
  padding: 1px 5px; border-radius: 3px;
  font-size: 10px; font-weight: 600;
  font-family: var(--ff-mono, "SF Mono", monospace);
  letter-spacing: .5px;
  color: rgba(255,255,255,.7);
}

/* Icon buttons — 極簡, 只有 hover 時才顯背景 */
.lap-top-icon-btn {
  width: 32px; height: 32px;
  display: flex; align-items: center; justify-content: center;
  border-radius: 6px;
  background: transparent;
  border: none;
  color: rgba(255,255,255,.55);
  cursor: pointer;
  font-size: 14px;
  transition: background .12s, color .12s;
  text-decoration: none;
}
.lap-top-icon-btn:hover { background: rgba(255,255,255,.08); color: #fff; }

/* Topbar 快速入口「🛡️ 後台」— admin 永遠看得到 */
.lap-top-admin-quick {
  display: inline-flex; align-items: center; gap: 6px;
  padding: 5px 11px;
  background: #64748B;
  border: 1px solid #64748B;
  border-radius: 6px;
  color: #ffffff;
  font-size: 12px; font-weight: 700;
  text-decoration: none;
  letter-spacing: .3px;
  transition: background .12s, border-color .12s, transform .08s;
}
.lap-top-admin-quick:hover {
  background: #94A3B8;
  border-color: #94A3B8;
}
.lap-top-admin-quick:active { transform: translateY(1px); }
.lap-top-admin-quick .ico { font-size: 13px; }

/* User chip — 名字 + 小圓頭, 不要邊框背景 */
.lap-top-user {
  position: relative;
  display: flex; align-items: center;
  margin-left: 4px;
}
.lap-top-userchip {
  display: flex; align-items: center; gap: 7px;
  padding: 4px 10px 4px 4px;
  background: transparent;
  border: none;
  font-size: 12.5px; font-weight: 600;
  color: rgba(255,255,255,.85);
  cursor: pointer;
  transition: background .12s, color .12s;
  border-radius: 999px;
  font-family: inherit;
}
.lap-top-userchip:hover { background: rgba(255,255,255,.08); color: #fff; }
.lap-top-userchip .av {
  width: 24px; height: 24px; border-radius: 50%;
  background: #64748B;
  color: #071E41; font-weight: 700;
  display: flex; align-items: center; justify-content: center;
  font-size: 11px;
}
.lap-top-userchip .caret { font-size: 9px; opacity: .5; margin-left: 1px; }

.lap-user-menu {
  display: none;
  position: absolute; top: calc(100% + 6px); right: 0;
  min-width: 220px;
  background: #fff;
  border: 1px solid #e3e9ef;
  border-radius: 10px;
  box-shadow: 0 12px 36px rgba(11,37,64,.15), 0 1px 3px rgba(11,37,64,.08);
  padding: 6px;
  z-index: 10005;
}
.lap-user-menu.open { display: block; animation: lap-fade-in .14s ease; }
@keyframes lap-fade-in { from { opacity:0; transform: translateY(-3px); } to { opacity:1; transform:none; } }
.lap-user-menu-head {
  padding: 8px 10px 10px;
  border-bottom: 1px solid #f0f3f6;
  margin-bottom: 4px;
}
.lap-user-menu-head .name { font-size: 13.5px; font-weight: 700; color: #1a2635; }
.lap-user-menu-head .role { font-size: 11px; color: #5f7389; margin-top: 2px; }
.lap-user-menu a, .lap-user-menu button {
  display: flex; align-items: center; gap: 9px;
  padding: 8px 10px;
  border-radius: 6px;
  color: #1a2635;
  text-decoration: none;
  font-size: 12.5px; font-weight: 500;
  background: transparent;
  border: none;
  width: 100%;
  text-align: left;
  cursor: pointer;
  font-family: inherit;
}
.lap-user-menu a:hover, .lap-user-menu button:hover {
  background: #f4f6f9;
  color: #14B8A6;
}
/* 下拉選單單色圖示：跟隨文字色 (currentColor)，hover 一起變主題色 */
.lap-user-menu button .mi { flex: 0 0 16px; opacity: .7; }
.lap-user-menu button:hover .mi { opacity: 1; }
.lap-user-menu a.danger, .lap-user-menu button.danger { color: #b14146; }
.lap-user-menu a.danger:hover, .lap-user-menu button.danger:hover {
  background: rgba(177,65,70,.08);
}
.lap-user-menu-divider {
  height: 1px; background: #f0f3f6; margin: 4px -6px 4px;
}
.lap-user-menu-credit {
  padding: 8px 10px 4px;
  font-size: 9.5px;
  color: #97a8ba;
  text-align: center;
  letter-spacing: .3px;
  font-weight: 500;
  border-top: 1px solid #f0f3f6;
  margin-top: 4px;
}

.lap-toggle {
  display: none;
  background: transparent;
  border: 1px solid rgba(255,255,255,.16);
  color: rgba(255,255,255,.85);
  border-radius: 6px;
  width: 32px; height: 32px;
  font-size: 16px;
  cursor: pointer;
  align-items: center; justify-content: center;
  font-family: inherit;
}

/* ══ SIDEBAR ── rail 模式 (52px) + hover 展開 (208px) ══ */
.lap-side {
  position: fixed;
  top: var(--las-app-top-h);
  left: 0;
  width: var(--las-app-side-w-rail);
  height: calc(100vh - var(--las-app-top-h));
  background: #fbfcfd;
  border-right: 1px solid #e8edf2;
  padding: 10px 4px 16px;
  overflow: hidden;
  z-index: 9999;
  box-sizing: border-box;
  font-family: var(--ff-base, "Inter","PingFang TC","Microsoft JhengHei",system-ui,sans-serif);
  transition: width .22s cubic-bezier(.32,.72,0,1), box-shadow .15s ease;
  display: flex; flex-direction: column;
}
/* hover 整個 sidebar 才展開 — 滑鼠移開自動收回 */
.lap-side:hover,
body.lap-side-pinned .lap-side,
body.lap-side-open .lap-side {     /* mobile 開啟也用同樣展開效果 */
  width: var(--las-app-side-w);
  padding: 10px 8px 16px;
  overflow-y: auto;
  box-shadow: 6px 0 24px rgba(11,37,64,.10);
  z-index: 10010;     /* hover 時提到 topbar 之上,避免被遮 */
}
.lap-side-section {
  font-size: 10px; letter-spacing: 1.2px;
  text-transform: uppercase; font-weight: 700;
  color: #97a8ba;
  padding: 14px 12px 6px;
  white-space: nowrap;
  opacity: 0;
  transition: opacity .15s ease;
}
.lap-side:hover .lap-side-section,
body.lap-side-pinned .lap-side-section,
body.lap-side-open .lap-side-section { opacity: 1; }

.lap-side-link {
  display: flex; align-items: center; gap: 10px;
  padding: 8px 10px;
  margin: 0 0 1px;
  border-radius: 6px;
  color: #44566b;
  text-decoration: none;
  font-size: 13px; font-weight: 500;
  cursor: pointer;
  transition: background .1s, color .1s, padding .15s;
  position: relative;
  letter-spacing: .1px;
  white-space: nowrap;
  overflow: hidden;
}
.lap-side-link:hover {
  background: #eef2f6;
  color: #1a2635;
}
.lap-side-link.active {
  background: rgba(20,184,166,.08);
  color: #14B8A6;
  font-weight: 700;
}
.lap-side-link.active::before {
  content: '';
  position: absolute; left: -8px; top: 7px; bottom: 7px; width: 2px;
  background: #14B8A6;
  border-radius: 0 2px 2px 0;
}

/* 採購子選單 — 縮排, 較小字, 點狀 indicator */
.lap-side-sublink {
  padding: 6px 10px 6px 32px !important;
  font-size: 12px !important;
  font-weight: 500 !important;
  color: #6c7d8f !important;
  margin: 0 0 1px !important;
}
.lap-side-sublink:hover { color: #1a2635 !important; background: #eef2f6 !important; }
.lap-side-sublink.active {
  color: #14B8A6 !important;
  background: rgba(20,184,166,.06) !important;
  font-weight: 700 !important;
}
.lap-side-sublink.active::before { display: none; }
.lap-side-sub-dot {
  width: 5px; height: 5px; border-radius: 50%;
  background: currentColor; opacity: .55;
  flex-shrink: 0;
  margin-right: 4px;
}
.lap-side-sublink.active .lap-side-sub-dot { opacity: 1; }
:root[data-cfo-mode="dark"] .lap-side-sublink { color: var(--cfo-text-sub); }
:root[data-cfo-mode="dark"] .lap-side-sublink:hover { background: var(--cfo-surface-2); color: var(--cfo-text); }
:root[data-cfo-mode="dark"] .lap-side-sublink.active { background: var(--cfo-green-soft); color: var(--cfo-green); }

/* Sidebar 頂部 admin 入口 — 醒目金色描邊 */
.lap-side-admin {
  background: linear-gradient(180deg, rgba(100,116,139,.08), rgba(100,116,139,.03)) !important;
  border: 1px solid rgba(100,116,139,.30) !important;
  color: #806017 !important;
  margin: 4px 4px 6px !important;
  font-weight: 700 !important;
}
.lap-side-admin:hover {
  background: rgba(100,116,139,.16) !important;
  border-color: #64748B !important;
  color: #5d4612 !important;
}
.lap-side-admin.active {
  background: linear-gradient(180deg, #94A3B8, #64748B) !important;
  border-color: #64748B !important;
  color: #ffffff !important;
}
.lap-side-admin.active::before { background: #5d4612 !important; }
.lap-side-admin .ico { opacity: 1; }

.lap-side-divider {
  height: 1px;
  background: #e8edf2;
  margin: 6px 8px 8px;
}
.lap-side-link .ico { font-size: 18px; width: 24px; text-align: center; flex-shrink: 0; opacity: .85; }
.lap-side-link.active .ico { opacity: 1; }

/* SVG icon (新版,單色幾何) */
.lap-side-svg {
  width: 19px; height: 19px;
  flex-shrink: 0;
  color: var(--cfo-text-sub);
  transition: color .12s, transform .12s;
}
.lap-side-link:hover .lap-side-svg { color: var(--cfo-green); }
.lap-side-link.active .lap-side-svg { color: var(--cfo-green); }
.lap-side-admin .lap-side-svg { color: #64748B; }      /* admin gold */
.lap-side-admin:hover .lap-side-svg { color: #94A3B8; }
.lap-side-admin.active .lap-side-svg { color: #ffffff; }

/* 中英文雙標 — 銀行/投行風 */
.lap-side-text {
  flex: 1;
  display: flex; flex-direction: column;
  gap: 1px;
  min-width: 0;
  opacity: 0;
  transition: opacity .15s ease .05s;
}
.lap-side:hover .lap-side-text,
body.lap-side-pinned .lap-side-text,
body.lap-side-open .lap-side-text { opacity: 1; }
.lap-side-text .lbl {
  font-size: 13px;
  font-weight: 600;
  letter-spacing: .3px;
  line-height: 1.25;
  white-space: nowrap;
}
.lap-side-text .en {
  font-size: 9px;
  font-weight: 600;
  letter-spacing: 1.6px;
  text-transform: uppercase;
  color: var(--cfo-text-dim);
  line-height: 1.2;
  white-space: nowrap;
}
.lap-side-link:hover .lap-side-text .en { color: var(--cfo-text-sub); }
.lap-side-link.active .lap-side-text .en { color: var(--cfo-green); opacity: .8; }
.lap-side-admin .lap-side-text .lbl { letter-spacing: 1px; }
.lap-side-admin .lap-side-text .en { color: rgba(100,116,139,.7); }
.lap-side-admin.active .lap-side-text .en { color: rgba(26,19,6,.6); }

/* 整個 link 高度給雙標留空間 */
.lap-side-link { padding: 9px 11px; }

/* 舊 .lbl 仍兼容(若有非新版的 link) */
.lap-side-link > .lbl {
  flex: 1;
  opacity: 0;
  transition: opacity .15s ease .05s;
}
.lap-side:hover .lap-side-link > .lbl,
body.lap-side-pinned .lap-side-link > .lbl,
body.lap-side-open .lap-side-link > .lbl { opacity: 1; }
.lap-side-link .badge {
  font-size: 9.5px; padding: 1px 6px;
  background: #eaeef2;
  color: #8da0b3;
  border-radius: 999px; font-weight: 700;
  letter-spacing: .3px;
  opacity: 0;
  transition: opacity .15s ease .05s;
}
.lap-side:hover .lap-side-link .badge,
body.lap-side-pinned .lap-side-link .badge,
body.lap-side-open .lap-side-link .badge { opacity: 1; }

/* Pin / unpin sidebar (展開時 hover-trap 保留) */
.lap-side-pin-btn {
  display: flex; align-items: center; justify-content: center;
  margin: auto 4px 4px;
  padding: 6px;
  background: transparent;
  border: none;
  color: #97a8ba;
  font-size: 11px;
  cursor: pointer;
  font-family: inherit;
  font-weight: 500;
  border-radius: 6px;
  transition: background .1s, color .1s, opacity .15s;
  opacity: 0;
  white-space: nowrap;
}
.lap-side:hover .lap-side-pin-btn,
body.lap-side-pinned .lap-side-pin-btn,
body.lap-side-open .lap-side-pin-btn { opacity: 1; }
.lap-side-pin-btn:hover { background: #eef2f6; color: #14B8A6; }
body.lap-side-pinned .lap-side-pin-btn { color: #14B8A6; background: rgba(20,184,166,.06); }

.lap-side-footer { display: none; }

.lap-backdrop {
  display: none;
  position: fixed; inset: 0;
  background: rgba(11,37,64,.40);
  z-index: 9990;
}

/* ══ Hide legacy per-page topbars ══ */
body.has-cfo-app-shell > .topbar,
body.has-cfo-app-shell > div.topbar:not(.lap-top),
body.has-cfo-app-shell .topbar:not(.lap-top):not(.las-top):not(.ad-top) {
  display: none !important;
}
body.has-cfo-app-shell .lui-mobile-trigger { display: none !important; }

/* ══ Mobile ══ */
@media (max-width: 880px) {
  body.has-cfo-app-shell { padding-left: 0 !important; }
  .lap-top { padding: 0 8px 0 10px; gap: 6px; }
  .lap-top-brand { padding-right: 4px; }
  .lap-top-brand .brand-word { font-size: 20px; letter-spacing: .07em; }
  .lap-workspace-chip {
    max-width: calc(100vw - 230px);
    padding: 0 10px;
    gap: 2px;
  }
  .lap-ws-label { width: 4.4em; font-size: 9px; }
  .lap-ws-code { font-size: 10.5px; }
  .lap-ws-name { font-size: 10.5px; }
  .lap-top-search { display: none; }
  .lap-toggle { display: inline-flex; }
  .lap-side {
    transform: translateX(-100%);
    box-shadow: 4px 0 24px rgba(0,0,0,.18);
    width: min(260px, 86vw);
  }
  body.lap-side-open .lap-side { transform: translateX(0); }
  body.lap-side-open .lap-backdrop { display: block; }
  .lap-side-collapse-btn { display: none; }
}

/* ══ 手機（窄螢幕）：頂部 bar 不再擠在一起 ══ */
@media (max-width: 560px) {
  .lap-top { padding: 0 6px 0 8px; gap: 4px; }
  .lap-top-brand { padding: 2px 4px; }
  .lap-top-brand .lap-top-logo { height: 24px; }
  .lap-top-brand .brand-word { font-size: 17px; }
  /* 工作區資訊在手機隱藏（accounting 另有自己的標題列；首頁不需要） */
  .lap-workspace-chip { display: none; }
  /* 使用者選單只留頭像，不擠名字 + 箭頭 */
  .lap-top-userchip { padding: 4px; gap: 0; }
  .lap-top-userchip > span { display: none; }
  .lap-top-user { margin-left: 0; }
  /* 圖示按鈕之間更緊湊 */
  .lap-top-icon-btn { width: 30px; height: 30px; }
  /* 後台快速鍵：只留圖示 */
  .lap-top-admin-quick { padding: 5px 7px; gap: 0; font-size: 0; }
  .lap-top-admin-quick .ico { font-size: 14px; }
  /* 下拉選單貼齊右邊、不超出畫面 */
  .lap-user-menu { right: 2px; min-width: min(240px, calc(100vw - 16px)); }
}

/* ══════════════════════════════════════════════════════════
   🌙 DARK MODE — 套用於 data-cfo-mode=dark
   覆蓋 sidebar 顏色 (因為原本 hardcoded #fff)
   ══════════════════════════════════════════════════════════ */
:root[data-cfo-mode="dark"] .lap-side {
  background: var(--cfo-surface);
  border-right: 1px solid var(--cfo-border);
}
:root[data-cfo-mode="dark"] .lap-side-section { color: var(--cfo-text-dim); }
:root[data-cfo-mode="dark"] .lap-side-link { color: var(--cfo-text-sub); }
:root[data-cfo-mode="dark"] .lap-side-link:hover {
  background: var(--cfo-surface-2);
  color: var(--cfo-text);
}
:root[data-cfo-mode="dark"] .lap-side-link.active {
  background: var(--cfo-green-soft);
  color: var(--cfo-green);
}
:root[data-cfo-mode="dark"] .lap-side-link.active::before { background: var(--cfo-green); }

:root[data-cfo-mode="dark"] .lap-user-menu {
  background: var(--cfo-surface);
  border: 1px solid var(--cfo-border);
}
:root[data-cfo-mode="dark"] .lap-user-menu-head { border-bottom-color: var(--cfo-border); }
:root[data-cfo-mode="dark"] .lap-user-menu-head .name { color: var(--cfo-text); }
:root[data-cfo-mode="dark"] .lap-user-menu-head .role { color: var(--cfo-text-sub); }
:root[data-cfo-mode="dark"] .lap-user-menu a,
:root[data-cfo-mode="dark"] .lap-user-menu button { color: var(--cfo-text); }
:root[data-cfo-mode="dark"] .lap-user-menu a:hover,
:root[data-cfo-mode="dark"] .lap-user-menu button:hover {
  background: var(--cfo-surface-2);
  color: var(--cfo-green);
}
:root[data-cfo-mode="dark"] .lap-user-menu-divider,
:root[data-cfo-mode="dark"] .lap-user-menu-credit { border-color: var(--cfo-border); background: transparent; }
:root[data-cfo-mode="dark"] .lap-user-menu-credit { color: var(--cfo-text-dim); }

:root[data-cfo-mode="dark"] .lap-side-pin-btn { color: var(--cfo-text-dim); }
:root[data-cfo-mode="dark"] .lap-side-pin-btn:hover {
  background: var(--cfo-surface-2);
  color: var(--cfo-green);
}

/* 整體 body / 卡片 fallback (頁面內 hardcoded #fff 無法覆蓋, 但 CSS var 可以) */
:root[data-cfo-mode="dark"] body { color: var(--cfo-text); }

/* ══════════════════════════════════════════════════════════
   🔠 老花閱讀模式 — 套用於 data-cfo-vision=large
   把字級拉大、行高放鬆、移除小字、加粗對比
   ══════════════════════════════════════════════════════════ */
:root[data-cfo-vision="large"] {
  /* base font-size 已由 JS 設定為 17px */
}
:root[data-cfo-vision="large"] body { line-height: 1.65; }
:root[data-cfo-vision="large"] .lap-top { height: 60px; }
:root[data-cfo-vision="large"] body.has-cfo-app-shell { padding-top: 60px; }
:root[data-cfo-vision="large"] .lap-side { top: 60px; height: calc(100vh - 60px); }
:root[data-cfo-vision="large"] .lap-top-brand .brand-word { font-size: 27px; letter-spacing: .085em; }
:root[data-cfo-vision="large"] .lap-ws-label { font-size: 12px; }
:root[data-cfo-vision="large"] .lap-ws-code { font-size: 13px; }
:root[data-cfo-vision="large"] .lap-ws-name { font-size: 13px; }
:root[data-cfo-vision="large"] .lap-top-search { font-size: 14px; padding: 7px 12px; }
:root[data-cfo-vision="large"] .lap-side-link { font-size: 15px; padding: 11px 12px; }
:root[data-cfo-vision="large"] .lap-side-link .ico { font-size: 20px; width: 28px; }
:root[data-cfo-vision="large"] .lap-side-section { font-size: 11.5px; }
:root[data-cfo-vision="large"] .lap-top-userchip { font-size: 14px; }
:root[data-cfo-vision="large"] .lap-top-userchip .av { width: 28px; height: 28px; font-size: 12px; }

/* 老花模式: 拉大整體 input/button (各頁通用) */
:root[data-cfo-vision="large"] input,
:root[data-cfo-vision="large"] select,
:root[data-cfo-vision="large"] textarea,
:root[data-cfo-vision="large"] button:not(.lap-top-icon-btn):not(.lap-side-pin-btn) {
  font-size: 15px;
  min-height: 40px;
}
:root[data-cfo-vision="large"] .lui-btn { padding: 11px 18px; font-size: 14.5px; }
:root[data-cfo-vision="large"] .lui-input,
:root[data-cfo-vision="large"] .lui-select { padding: 11px 14px; font-size: 14.5px; }
:root[data-cfo-vision="large"] table { font-size: 14px; }
:root[data-cfo-vision="large"] th, :root[data-cfo-vision="large"] td { padding: 12px 14px; }
/* 強化對比 — 不淡 */
:root[data-cfo-vision="large"] { --cfo-text-dim: var(--cfo-text-sub); }
