
/* UI30 critical fix: all generic .hidden elements must really disappear. UI27 missed this, so login panels, category panels, and old/new feature sections stacked on the same page. */
.hidden{display:none!important;}
body.passenger-v284-legacy-spec .hidden{display:none!important;}
/* 新橫濱社巴 NestJS 全新版：商轉版 UI v100-ui6-large-tab-cards
   原則：正式入口不套舊版前端 JS；本檔只提供新版共用 Layout / Card / Tab / Table / Form / Modal 規格。 */
:root{
  --bg:#f3f7fb;
  --bg2:#eaf6f5;
  --card:#ffffff;
  --text:#0f172a;
  --muted:#64748b;
  --line:#dbe5ef;
  --line2:#edf2f7;
  --brand:#0f766e;
  --brand-dark:#115e59;
  --brand-soft:#e7f8f4;
  --accent:#6d4aff;
  --accent2:#ec4899;
  --ok:#0f8a4b;
  --warn:#b45309;
  --danger:#b42318;
  --radius:20px;
  --radius-sm:14px;
  --shadow:0 16px 40px rgba(15,23,42,.08);
  --shadow-soft:0 8px 22px rgba(15,23,42,.06);
  --max:1280px;
}
*{box-sizing:border-box}
html{min-height:100%;background:var(--bg)}
body{margin:0;min-height:100%;color:var(--text);font-family:-apple-system,BlinkMacSystemFont,"Noto Sans TC","Microsoft JhengHei","Segoe UI",sans-serif;line-height:1.6;background:
  radial-gradient(circle at 8% -10%,rgba(15,118,110,.18),transparent 36%),
  radial-gradient(circle at 92% 0%,rgba(109,74,255,.12),transparent 34%),
  linear-gradient(180deg,#f8fbff 0%,var(--bg) 52%,#eef4f8 100%);
}
a{color:inherit}.app{min-height:100vh;padding:16px 18px 28px}.topbar{position:sticky;top:12px;z-index:30;max-width:var(--max);margin:0 auto 22px;display:flex;align-items:center;justify-content:space-between;gap:18px;padding:18px 22px;background:rgba(255,255,255,.94);border:1px solid rgba(219,229,239,.95);border-radius:24px;box-shadow:var(--shadow);backdrop-filter:blur(18px)}
.brand{display:flex;align-items:center;gap:14px;min-width:0}.brand-mark{flex:0 0 auto;width:48px;height:48px;border-radius:17px;background:linear-gradient(135deg,var(--brand),var(--accent) 70%,var(--accent2));color:#fff;display:grid;place-items:center;font-weight:950;font-size:15px;letter-spacing:.02em;box-shadow:0 12px 24px rgba(15,118,110,.25)}.brand-title{font-size:23px;font-weight:950;letter-spacing:-.02em;line-height:1.15}.brand-sub{margin-top:4px;font-size:13px;color:var(--muted);font-weight:800}.container{width:100%;max-width:var(--max);margin:0 auto;padding:0 6px 28px}.footer-note{max-width:var(--max);margin:20px auto 0;color:var(--muted);font-size:12px;text-align:center}.page-hero{position:relative;overflow:hidden;margin-bottom:22px;padding:28px;border:1px solid var(--line);border-radius:28px;background:linear-gradient(135deg,#fff 0%,#f1fffb 48%,#f5f2ff 100%);box-shadow:var(--shadow)}.page-hero:after{content:"";position:absolute;right:-60px;top:-90px;width:260px;height:260px;border-radius:999px;background:linear-gradient(135deg,rgba(15,118,110,.13),rgba(109,74,255,.10));}.page-hero>*{position:relative}.hero-title{font-size:36px;line-height:1.15;margin:0 0 10px;font-weight:950;letter-spacing:-.03em}.hero-sub{margin:0;color:var(--muted);font-weight:700}.grid{display:grid;gap:16px}.grid.two{grid-template-columns:repeat(2,minmax(0,1fr))}.grid.three{grid-template-columns:repeat(3,minmax(0,1fr))}.grid.four{grid-template-columns:repeat(4,minmax(0,1fr))}.card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow-soft);padding:22px;text-decoration:none;transition:transform .16s ease,box-shadow .16s ease,border-color .16s ease}.card:hover{transform:translateY(-1px);box-shadow:var(--shadow);border-color:#cbd5e1}.card.flat{box-shadow:none}.card h1,.card h2,.card h3{margin:0 0 12px;letter-spacing:-.02em}.card h2{font-size:23px}.card h3{font-size:19px}.muted{color:var(--muted)}code{background:#f1f5f9;border:1px solid #e2e8f0;border-radius:8px;padding:2px 6px;font-size:.92em}.pill{display:inline-flex;align-items:center;gap:6px;border-radius:999px;padding:7px 12px;font-size:13px;font-weight:950;background:#edf4ff;color:#2258f2;white-space:nowrap}.pill.ok{background:#e8f8ef;color:var(--ok)}.pill.warn{background:#fff7ed;color:var(--warn)}.pill.danger{background:#fff1f2;color:var(--danger)}.btn{appearance:none;border:0;border-radius:14px;background:linear-gradient(135deg,var(--brand),var(--brand-dark));color:#fff;font-weight:950;padding:11px 17px;cursor:pointer;text-decoration:none;display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:42px;box-shadow:0 9px 18px rgba(15,118,110,.18);transition:transform .14s ease,filter .14s ease,box-shadow .14s ease}.btn:hover{filter:brightness(1.02);transform:translateY(-1px)}.btn.secondary{background:#eaf0f7;color:#172033;box-shadow:none}.btn.ghost{background:#fff;color:var(--brand);border:1px solid var(--line);box-shadow:none}.btn.danger{background:linear-gradient(135deg,#ef4444,#b42318);box-shadow:0 9px 18px rgba(180,35,24,.16)}.btn.ok{background:linear-gradient(135deg,#16a34a,#0f8a4b)}.btn:disabled{opacity:.55;cursor:not-allowed;transform:none}.mini{min-height:32px;padding:7px 11px;border-radius:10px;font-size:12px}.actions{display:flex;flex-wrap:wrap;gap:10px;align-items:center}.kpi,.stats-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;margin-bottom:18px}.stat{position:relative;overflow:hidden;display:flex;flex-direction:column;gap:4px;min-height:86px}.stat:before{content:"";position:absolute;right:-26px;top:-36px;width:90px;height:90px;border-radius:999px;background:rgba(15,118,110,.09)}.stat span{font-weight:850}.stat b{font-size:30px;line-height:1.15;color:var(--brand);font-weight:950}.tabs{display:flex;flex-wrap:wrap;gap:10px;margin:18px 0 16px;padding:6px;border:1px solid var(--line);border-radius:999px;background:rgba(255,255,255,.72);box-shadow:var(--shadow-soft)}.tab{appearance:none;border:1px solid transparent;background:transparent;color:#334155;border-radius:999px;padding:10px 16px;font-weight:950;cursor:pointer;min-height:38px}.tab:hover{background:#f8fafc}.tab.active{background:linear-gradient(135deg,var(--brand),var(--accent));color:white;border-color:transparent;box-shadow:0 8px 18px rgba(15,118,110,.18)}.view{display:none}.view.active{display:block}.view>.card,.view .card{margin-bottom:16px}.table-wrap{width:100%;overflow:auto;border:1px solid var(--line);border-radius:16px;background:white;box-shadow:0 1px 0 rgba(15,23,42,.02)}table{width:100%;border-collapse:separate;border-spacing:0;font-size:14px}th,td{padding:13px 14px;border-bottom:1px solid var(--line2);text-align:left;vertical-align:middle}th{position:sticky;top:0;z-index:2;background:#f1f5f9;color:#334155;white-space:nowrap;font-weight:950}tbody tr:hover{background:#f8fafc}tbody tr:last-child td{border-bottom:0}.form{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.form .field,.field{display:grid;gap:7px}.form h3,.form .full,.form button,.form .notice,.form [id$="Msg"]{grid-column:1/-1}.field label,.generated-label{font-weight:950;font-size:13px;color:#334155}.input,select,textarea{width:100%;border:1px solid #cfd9e6;border-radius:14px;background:#fff;padding:12px 13px;font:inherit;outline:none;transition:border-color .14s ease,box-shadow .14s ease;background-clip:padding-box}.input:focus,select:focus,textarea:focus{border-color:var(--brand);box-shadow:0 0 0 4px rgba(15,118,110,.11)}textarea{min-height:96px;resize:vertical}.notice{border-radius:16px;padding:13px 15px;background:#eef4ff;border:1px solid #c7d8ff;color:#1e3a8a;font-weight:850}.notice.warn{background:#fff7ed;border-color:#fed7aa;color:#9a3412}.notice.danger{background:#fff1f2;border-color:#fecdd3;color:#9f1239}.notice.ok{background:#ecfdf5;border-color:#bbf7d0;color:#166534}.login-box{max-width:460px;margin:44px auto}.scan-area{display:grid;gap:12px}.video-box{position:relative;background:#0f172a;border-radius:20px;overflow:hidden;min-height:260px;display:grid;place-items:center;color:white}video{width:100%;max-height:420px;background:#0f172a}.qr-line{position:absolute;left:10%;right:10%;top:50%;height:2px;background:#22c55e;box-shadow:0 0 18px #22c55e}.offline-badge{font-weight:950;color:#b42318}.unit-card{display:flex;flex-direction:column;gap:12px;min-height:178px}.unit-card .title{font-size:19px;font-weight:950}.empty{padding:30px;text-align:center;color:var(--muted);font-weight:800}.kv{display:flex;justify-content:space-between;gap:12px;border-bottom:1px solid var(--line2);padding:9px 0}.kv b{white-space:nowrap}.checkline{display:flex;gap:8px;align-items:center;font-weight:850}.danger-text{color:var(--danger);font-weight:950}.ok-text{color:var(--ok);font-weight:950}.warn-text{color:var(--warn);font-weight:950}.compact-input{max-width:120px}.wide-input{max-width:380px}.ui-modal-backdrop{position:fixed;inset:0;background:rgba(15,23,42,.46);z-index:100;display:grid;place-items:center;padding:18px}.ui-modal{width:min(520px,100%);background:#fff;border-radius:22px;box-shadow:0 28px 80px rgba(15,23,42,.25);border:1px solid var(--line);padding:22px}.ui-modal h3{margin:0 0 10px;font-size:22px}.ui-modal p{margin:0 0 16px;color:var(--muted)}.ui-toast{position:fixed;right:18px;bottom:18px;z-index:110;max-width:min(420px,calc(100vw - 36px));background:#fff;border:1px solid var(--line);border-left:6px solid var(--brand);border-radius:16px;box-shadow:var(--shadow);padding:14px 16px;font-weight:850}.ui-toast.danger{border-left-color:var(--danger)}.ui-toast.ok{border-left-color:var(--ok)}.app-entry{min-height:68vh;display:grid;align-items:center}.entry-cards .card{min-height:230px;display:flex;flex-direction:column;justify-content:space-between}.entry-icon{width:52px;height:52px;border-radius:18px;background:var(--brand-soft);color:var(--brand);display:grid;place-items:center;font-size:24px;font-weight:950}.entry-card-title{display:flex;align-items:center;gap:12px;margin-bottom:10px}.soft-divider{height:1px;background:var(--line);margin:18px 0}.badge-row{display:flex;flex-wrap:wrap;gap:8px;margin-top:14px}
@media(max-width:1020px){.grid.three,.grid.four,.kpi,.stats-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.grid.two{grid-template-columns:1fr}.form{grid-template-columns:1fr}.tabs{border-radius:22px}}
@media(max-width:720px){.app{padding:10px 10px 22px}.topbar{position:relative;top:0;border-radius:20px;align-items:flex-start;flex-direction:column;padding:15px;margin-bottom:14px}.brand-mark{width:44px;height:44px}.brand-title{font-size:20px}.container{padding:0}.hero-title{font-size:28px}.page-hero{padding:20px;border-radius:22px}.grid.two,.grid.three,.grid.four,.kpi,.stats-grid{grid-template-columns:1fr}.card{padding:16px;border-radius:18px}.actions{width:100%}.actions .btn{flex:1 1 auto}.tabs{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;border-radius:20px}.tab{padding:10px 12px}.table-wrap{border-radius:14px}.wide-input,.compact-input{max-width:none}.entry-cards .card{min-height:auto}}


/* UI6：修正首頁與後台左右邊界、卡片重疊、舊快取混用後版型跑位 */
html,body{width:100%;max-width:100%;overflow-x:hidden;}
body .app{width:100%;min-height:100vh;padding:24px 24px 36px;display:block;}
body .topbar{width:min(var(--max),calc(100vw - 48px));margin:0 auto 24px !important;display:flex !important;align-items:center !important;justify-content:space-between !important;}
body .brand{display:flex !important;align-items:center !important;gap:14px !important;min-width:0;}
body .brand-mark{display:grid !important;place-items:center !important;width:48px !important;height:48px !important;border-radius:17px !important;background:linear-gradient(135deg,var(--brand),var(--accent) 70%,var(--accent2)) !important;color:#fff !important;font-weight:950 !important;box-shadow:0 12px 24px rgba(15,118,110,.25) !important;}
body .container{width:min(var(--max),calc(100vw - 48px));max-width:var(--max);margin:0 auto !important;padding:0 0 36px !important;display:block;}
body .app-entry{display:block !important;min-height:auto !important;align-items:initial !important;}
body .page-hero{width:100%;margin:0 0 22px !important;}
body .entry-cards{width:100%;display:grid !important;grid-template-columns:repeat(auto-fit,minmax(290px,1fr)) !important;gap:18px !important;align-items:stretch !important;margin:0 0 18px !important;}
body .entry-cards>.card,body .entry-card{width:100% !important;min-width:0 !important;min-height:230px;display:flex !important;flex-direction:column !important;justify-content:space-between !important;}
body .entry-card-title{display:flex !important;align-items:center !important;gap:12px !important;}
body .entry-card-title h2{margin:0 !important;}
body .principle-card{margin-top:18px !important;}
body .card{min-width:0;}
body .grid{min-width:0;}
body .grid.two{grid-template-columns:repeat(auto-fit,minmax(320px,1fr));}
body .grid.three{grid-template-columns:repeat(auto-fit,minmax(280px,1fr));}
body .grid.four,body .kpi,body .stats-grid{grid-template-columns:repeat(auto-fit,minmax(210px,1fr));}
body #mainCard{width:100%;}
body .tabs{border-radius:22px !important;justify-content:flex-start;overflow:visible;}
body .tab{white-space:nowrap;}
body .form input:not([type=checkbox]),body .form select,body .form textarea{min-height:46px;}
body .footer-note{width:min(var(--max),calc(100vw - 48px));margin-left:auto;margin-right:auto;}
@media(max-width:720px){
  body .app{padding:12px 12px 28px;}
  body .topbar,body .container,body .footer-note{width:100%;}
  body .topbar{margin-bottom:16px !important;align-items:flex-start !important;}
  body .entry-cards{grid-template-columns:1fr !important;}
  body .entry-cards>.card{min-height:auto;}
  body .grid.two,body .grid.three,body .grid.four,body .kpi,body .stats-grid{grid-template-columns:1fr !important;}
}


/* UI6：全站字體放大與商轉閱讀性修正
   目標：桌機與手機都比 UI2 更容易讀，不改核心功能邏輯。 */
:root{
  --font-base:17px;
  --font-small:15px;
  --font-xs:14px;
  --font-card-title:22px;
  --font-section-title:26px;
  --font-page-title:40px;
  --font-brand-title:25px;
  --font-kpi:34px;
}
body{font-size:var(--font-base);line-height:1.72;}
.brand-title{font-size:var(--font-brand-title) !important;}
.brand-sub{font-size:15px !important;}
.hero-title{font-size:var(--font-page-title) !important;line-height:1.18;}
.hero-sub{font-size:17px !important;line-height:1.8;}
.card{font-size:17px;}
.card h1{font-size:34px;}
.card h2{font-size:var(--font-section-title) !important;line-height:1.25;}
.card h3,.unit-card .title{font-size:var(--font-card-title) !important;line-height:1.35;}
.entry-card-title h2{font-size:25px !important;}
.entry-icon{font-size:26px !important;width:58px !important;height:58px !important;}
.pill{font-size:14px !important;padding:8px 13px;}
.btn{font-size:16px !important;min-height:46px;padding:12px 19px;}
.btn.mini,.mini{font-size:14px !important;min-height:36px;padding:8px 12px;}
.tab{font-size:16px !important;min-height:44px;padding:11px 18px;}
.stat span{font-size:16px;}
.stat b{font-size:var(--font-kpi) !important;}
table{font-size:16px !important;}
th,td{padding:15px 16px;}
.field label,.generated-label{font-size:15px !important;}
.input,select,textarea{font-size:16.5px !important;min-height:50px;padding:13px 14px;}
.notice{font-size:16px;line-height:1.75;}
.footer-note{font-size:14px !important;}
.muted{font-size:16px;}
code{font-size:14px;padding:3px 7px;}
.kv{font-size:16px;}
.ui-modal h3{font-size:26px;}
.ui-modal p,.ui-modal{font-size:17px;}
.ui-toast{font-size:16px;}
@media(max-width:720px){
  :root{
    --font-base:18px;
    --font-small:16px;
    --font-xs:15px;
    --font-card-title:23px;
    --font-section-title:27px;
    --font-page-title:34px;
    --font-brand-title:23px;
    --font-kpi:36px;
  }
  body{font-size:18px;line-height:1.75;}
  .hero-sub,.muted{font-size:17px !important;}
  .btn{width:100%;font-size:17px !important;min-height:50px;}
  .tab{font-size:16.5px !important;min-height:48px;}
  table{font-size:16px !important;}
  th,td{padding:15px 14px;}
  .input,select,textarea{font-size:17px !important;min-height:52px;}
}

/* UI6：分頁內卡片恢復「舊版穩定卡片」樣式
   只調整各分頁內容卡片；首頁入口卡片與頁首商轉版樣式保留。 */
body #mainCard .view{
  background:transparent;
}
body #mainCard .view > .card,
body #mainCard .view > .grid > .card,
body #mainCard .view .section-card{
  background:#fff !important;
  border:1px solid #dbe5ef !important;
  border-radius:18px !important;
  box-shadow:0 6px 18px rgba(15,23,42,.045) !important;
  padding:24px !important;
  transform:none !important;
}
body #mainCard .view > .card:hover,
body #mainCard .view > .grid > .card:hover,
body #mainCard .view .section-card:hover{
  transform:none !important;
  box-shadow:0 6px 18px rgba(15,23,42,.045) !important;
  border-color:#dbe5ef !important;
}
body #mainCard .view .card h2{
  margin-bottom:18px !important;
  padding-bottom:12px;
  border-bottom:1px solid #edf2f7;
}
body #mainCard .view .card h3{
  margin-bottom:14px !important;
}
/* 分頁內的小卡片恢復舊版白底內框，不使用首頁入口大卡 hover 效果 */
body #mainCard .view .card.flat,
body #mainCard .view .unit-card,
body #mainCard .view #rechargeQrCards > .card,
body #mainCard .view #unitCards > .card{
  background:#fff !important;
  border:1px solid #d7e3ee !important;
  border-radius:16px !important;
  box-shadow:none !important;
  padding:18px !important;
  transform:none !important;
}
body #mainCard .view .unit-card:hover,
body #mainCard .view #unitCards > .card:hover,
body #mainCard .view #rechargeQrCards > .card:hover,
body #mainCard .view .card.flat:hover{
  transform:none !important;
  box-shadow:none !important;
  border-color:#cbd5e1 !important;
}
/* 執行單位卡片：恢復舊版清楚的列表式卡片，上方加淡色條，避免像首頁入口卡片 */
body #mainCard .view #unitCards{
  display:grid !important;
  grid-template-columns:repeat(auto-fit,minmax(280px,1fr)) !important;
  gap:14px !important;
}
body #mainCard .view #unitCards > .unit-card{
  position:relative;
  min-height:170px;
  overflow:hidden;
}
body #mainCard .view #unitCards > .unit-card::before{
  content:"";
  position:absolute;
  left:0;right:0;top:0;height:5px;
  background:linear-gradient(90deg,#0f766e,#6d4aff);
}
body #mainCard .view .unit-card .title{
  margin-top:6px;
}
/* 分頁裡的表單與表格維持舊版後台穩定距離 */
body #mainCard .view .form{
  gap:12px 14px !important;
}
body #mainCard .view .actions{
  margin:8px 0 14px;
}
body #mainCard .view .table-wrap{
  box-shadow:none !important;
  border-radius:14px !important;
}
body #mainCard .view th{
  background:#eef3f8 !important;
}
/* 分頁內兩欄區塊不要被首頁 grid 規則壓成奇怪寬度 */
body #mainCard .view > .grid.two{
  display:grid !important;
  grid-template-columns:repeat(2,minmax(0,1fr)) !important;
  gap:18px !important;
  align-items:start !important;
}
body #mainCard .view > .grid.three{
  display:grid !important;
  grid-template-columns:repeat(3,minmax(0,1fr)) !important;
  gap:16px !important;
}
/* KPI 卡片仍保留 UI3 放大字體，但恢復舊版簡潔框線 */
body #mainCard .kpi .card,
body #mainCard .stats-grid .card,
body #mainCard .stat{
  border-radius:16px !important;
  box-shadow:none !important;
  border:1px solid #dbe5ef !important;
  background:#fff !important;
}
@media(max-width:1020px){
  body #mainCard .view > .grid.two,
  body #mainCard .view > .grid.three{
    grid-template-columns:1fr !important;
  }
}
@media(max-width:720px){
  body #mainCard .view > .card,
  body #mainCard .view > .grid > .card,
  body #mainCard .view .section-card{
    padding:18px !important;
    border-radius:16px !important;
  }
  body #mainCard .view #unitCards{
    grid-template-columns:1fr !important;
  }
}

/* UI6：分頁內卡片恢復「之前的大尺寸」
   重點不是換顏色，而是取消分頁內兩欄壓縮，恢復後台大卡片、全寬、較高、較寬的閱讀區。 */
body #mainCard .view > .grid.two,
body #mainCard .view > .grid.three{
  display:grid !important;
  grid-template-columns:1fr !important;
  gap:22px !important;
  align-items:stretch !important;
}
body #mainCard .view > .card,
body #mainCard .view > .grid > .card,
body #mainCard .view .section-card{
  width:100% !important;
  min-height:240px !important;
  padding:30px 32px !important;
  border-radius:20px !important;
  background:#fff !important;
  border:1px solid #dbe5ef !important;
  box-shadow:0 8px 22px rgba(15,23,42,.055) !important;
}
body #mainCard .view > .card h2,
body #mainCard .view > .grid > .card h2,
body #mainCard .view .section-card h2{
  font-size:28px !important;
  line-height:1.25 !important;
  margin-bottom:22px !important;
  padding-bottom:14px !important;
  border-bottom:1px solid #e8eef5 !important;
}
body #mainCard .view .card h3{
  font-size:22px !important;
}
body #mainCard .view .card.flat{
  min-height:210px !important;
  padding:26px !important;
  border-radius:18px !important;
}
/* 執行單位 / 三區 QR 卡片恢復成全寬列表大卡，不再塞成多欄小卡 */
body #mainCard .view #unitCards,
body #mainCard .view #rechargeQrCards{
  display:grid !important;
  grid-template-columns:1fr !important;
  gap:18px !important;
}
body #mainCard .view #unitCards > .unit-card,
body #mainCard .view #unitCards > .card,
body #mainCard .view #rechargeQrCards > .card{
  min-height:190px !important;
  padding:28px !important;
  border-radius:20px !important;
  width:100% !important;
}
/* 表格區也放大，避免像測試頁小表格 */
body #mainCard .view .table-wrap{
  border-radius:18px !important;
  margin-top:12px !important;
}
body #mainCard .view table{
  font-size:16px !important;
}
body #mainCard .view th,
body #mainCard .view td{
  padding:16px 18px !important;
}
/* 表單欄位維持兩欄，但每個欄位高度加大；手機仍自動單欄 */
body #mainCard .view .form{
  gap:18px 20px !important;
}
body #mainCard .view .input,
body #mainCard .view select,
body #mainCard .view textarea{
  min-height:52px !important;
  font-size:16px !important;
}
body #mainCard .view .btn{
  min-height:46px !important;
  font-size:16px !important;
}
/* 上方 KPI 也稍微放大，但仍保持四張摘要卡 */
body #mainCard .kpi .card,
body #mainCard .stats-grid .card,
body #mainCard .stat{
  min-height:112px !important;
  padding:24px 26px !important;
}
body #mainCard .stat b{
  font-size:36px !important;
}
@media(max-width:720px){
  body #mainCard .view > .card,
  body #mainCard .view > .grid > .card,
  body #mainCard .view .section-card{
    min-height:unset !important;
    padding:22px !important;
    border-radius:18px !important;
  }
  body #mainCard .view table{font-size:15px !important;}
  body #mainCard .view th,
  body #mainCard .view td{padding:14px 15px !important;}
}

/* UI6：填滿螢幕寬度版
   目標：後台與首頁不再被 1280px 中央容器限制；保留適度安全邊距，桌機接近滿版顯示。 */
:root{
  --max:1920px;
  --page-gutter:28px;
}
body .app{
  padding:18px var(--page-gutter) 34px !important;
}
body .topbar,
body .container,
body .footer-note{
  width:calc(100vw - (var(--page-gutter) * 2)) !important;
  max-width:none !important;
  margin-left:auto !important;
  margin-right:auto !important;
}
body .container{
  padding-left:0 !important;
  padding-right:0 !important;
}
body #mainCard,
body #loginCard,
body .page-hero,
body .entry-cards,
body .principle-card,
body .tabs,
body .kpi,
body .stats-grid,
body .view,
body .view > .card,
body .view > .grid,
body .view > .grid > .card{
  width:100% !important;
  max-width:none !important;
}
/* 桌機寬螢幕：摘要卡填滿一整排，表格與分頁內容有更多空間 */
body #mainCard .kpi,
body #mainCard .stats-grid,
body .grid.four{
  grid-template-columns:repeat(4,minmax(0,1fr)) !important;
}
body .entry-cards{
  grid-template-columns:repeat(4,minmax(260px,1fr)) !important;
}
body .table-wrap{
  width:100% !important;
}
body table{
  min-width:960px;
}
/* 表單在滿版後維持可讀，不要過度擠成窄欄；一般後台維持兩欄大欄位 */
body #mainCard .view .form{
  grid-template-columns:repeat(2,minmax(360px,1fr)) !important;
}
body #mainCard .view .form .full,
body #mainCard .view .form button,
body #mainCard .view .form .notice,
body #mainCard .view .form [id$="Msg"]{
  grid-column:1/-1 !important;
}
/* 乘客端與登入框不要被拉到過寬；仍維持手機友善 */
body .login-box{
  max-width:560px !important;
}
body:has(#mainCard) .container{
  min-height:calc(100vh - 120px);
}
@media(min-width:1600px){
  :root{--page-gutter:34px;}
  body .topbar{padding-left:28px !important;padding-right:28px !important;}
  body #mainCard .view > .card,
  body #mainCard .view > .grid > .card,
  body #mainCard .view .section-card{padding:34px 38px !important;}
}
@media(max-width:1180px){
  body #mainCard .kpi,
  body #mainCard .stats-grid,
  body .grid.four{grid-template-columns:repeat(2,minmax(0,1fr)) !important;}
  body .entry-cards{grid-template-columns:repeat(2,minmax(260px,1fr)) !important;}
  body #mainCard .view .form{grid-template-columns:1fr !important;}
}
@media(max-width:720px){
  :root{--page-gutter:12px;}
  body .app{padding:12px var(--page-gutter) 28px !important;}
  body .topbar,
  body .container,
  body .footer-note{width:calc(100vw - (var(--page-gutter) * 2)) !important;}
  body .entry-cards,
  body #mainCard .kpi,
  body #mainCard .stats-grid,
  body .grid.four{grid-template-columns:1fr !important;}
  body table{min-width:760px;}
}

/* UI7：車輛 / 司機 / 路線班次融合版 */
body .fleet-intro{border-left:6px solid var(--brand);}
body .fleet-section{scroll-margin-top:100px;}
body .fleet-section > h2{margin-bottom:12px;}
body .fleet-checkbox-list{border:1px dashed #cbd5e1;border-radius:16px;padding:14px;background:#f8fafc;display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:8px;}
body .fleet-checkbox-list .empty{grid-column:1/-1;background:#fff;border-radius:12px;padding:14px;}
body #routeTripTable table td:nth-child(5){min-width:300px;}
body #vehicleTable table td:nth-child(4){min-width:260px;}
body #mainCard .view[data-view="fleet"] .grid.two{grid-template-columns:repeat(2,minmax(460px,1fr)) !important;}
body #mainCard .view[data-view="fleet"] .card.flat{min-height:100%;}
body #mainCard .view[data-view="fleet"] textarea{min-height:132px;}
@media(max-width:1000px){body #mainCard .view[data-view="fleet"] .grid.two{grid-template-columns:1fr !important;}body .fleet-checkbox-list{grid-template-columns:1fr;}}


/* UI8：全部字體再放大兩碼＋欄位中文化閱讀優化 */
:root{
  --font-base:19px;
  --font-small:17px;
  --font-xs:16px;
  --font-card-title:24px;
  --font-section-title:30px;
  --font-page-title:42px;
  --font-brand-title:27px;
  --font-kpi:38px;
}
body{font-size:var(--font-base) !important;line-height:1.78 !important;}
.brand-title{font-size:var(--font-brand-title) !important;}
.brand-sub,.muted{font-size:17px !important;}
.card{font-size:19px !important;}
.card h1{font-size:36px !important;}
.card h2{font-size:var(--font-section-title) !important;}
.card h3,.unit-card .title{font-size:var(--font-card-title) !important;}
.btn{font-size:18px !important;min-height:50px !important;padding:13px 20px !important;}
.btn.mini,.mini{font-size:16px !important;min-height:38px !important;padding:9px 13px !important;}
.tab{font-size:18px !important;min-height:48px !important;padding:12px 19px !important;}
.pill{font-size:16px !important;}
.stat span{font-size:18px !important;}
.stat b{font-size:var(--font-kpi) !important;}
table{font-size:18px !important;}
th,td{padding:17px 18px !important;}
.field label,.generated-label{font-size:17px !important;}
.input,select,textarea{font-size:18.5px !important;min-height:54px !important;padding:14px 15px !important;}
textarea{min-height:118px;}
.notice,.kv,.ui-toast,.ui-modal,.hero-sub{font-size:18px !important;}
.footer-note,code{font-size:16px !important;}
#mainCard .view .form{gap:20px 22px !important;}
#mainCard .view .wide-input{max-width:460px !important;}
@media(max-width:720px){
  :root{
    --font-base:20px;
    --font-small:18px;
    --font-xs:17px;
    --font-card-title:25px;
    --font-section-title:31px;
    --font-page-title:36px;
    --font-brand-title:25px;
    --font-kpi:40px;
  }
  body{font-size:20px !important;}
  .brand-sub,.muted,.hero-sub{font-size:18px !important;}
  .btn{font-size:18px !important;min-height:52px !important;}
  .tab{font-size:17.5px !important;min-height:50px !important;}
  table{font-size:17px !important;}
  .input,select,textarea{font-size:18px !important;min-height:54px !important;}
}

/* UI13：加班車班次標示與車輛收費統計 */
tr.extra-trip-row,
tr.extra-trip-row td{
  background:#fff7d6 !important;
}
tr.extra-trip-row:hover td{
  background:#ffefb3 !important;
}
.billing-note{
  margin-top:8px;
  padding:10px 12px;
  border-radius:12px;
  background:#ecfdf5;
  color:#065f46;
  font-weight:800;
}

/* UI16：三層後台功能與權限對齊 */
.service-checklist{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:12px;margin:8px 0 16px;}
.service-check{border:1px solid #dbe7f3;border-radius:14px;padding:12px 14px;background:#fff;align-items:flex-start;}
.code-box{white-space:pre-wrap;word-break:break-word;background:#0f172a;color:#e5e7eb;border-radius:16px;padding:18px;min-height:220px;max-height:460px;overflow:auto;font-size:15px;line-height:1.6;}
.permission-note{border:1px solid #b7d8ff;background:#eff6ff;color:#17417a;border-radius:16px;padding:14px 16px;font-weight:800;}

/* UI18：乘客端與車輛端舊版操作體驗對齊 */
.passenger-entry-hero{background:linear-gradient(135deg,#f0fdfa,#eef2ff);}
.passenger-entry-hero h1{font-size:42px;margin:12px 0 10px;}
.entry-community-pills{display:flex;flex-wrap:wrap;gap:10px;margin:14px 0 18px;}
.entry-community-pills span{padding:9px 14px;border-radius:999px;background:#ecfeff;color:#0f766e;font-weight:900;border:1px solid #c7f0ea;}
.feature-category-grid{display:grid;grid-template-columns:repeat(3,minmax(260px,1fr));gap:18px;margin:20px 0;}
.feature-category-card{background:#fff;border:1px solid #dbe7f3;border-radius:22px;padding:22px;box-shadow:0 12px 30px rgba(15,23,42,.07);}
.feature-category-card h2{font-size:28px !important;margin:8px 0;}
.category-icon{width:56px;height:56px;border-radius:18px;background:#e6fffa;color:#0f766e;display:grid;place-items:center;font-size:26px;font-weight:1000;}
.category-actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px;margin-top:14px;}
.category-actions button{border:0;border-radius:14px;background:#0f766e;color:#fff;font-weight:900;padding:12px;cursor:pointer;}
.manual-qr-test{display:none !important;}
.scan-step-form{align-items:end;}
.video-box{position:relative;overflow:hidden;border-radius:22px;background:#0f172a;min-height:340px;margin-top:18px;}
.video-box video{width:100%;min-height:340px;object-fit:cover;background:#0f172a;}
.qr-line{position:absolute;left:12%;right:12%;top:50%;height:3px;background:rgba(16,185,129,.85);box-shadow:0 0 22px rgba(16,185,129,.95);}
.modal-backdrop{position:fixed;inset:0;background:rgba(15,23,42,.55);z-index:9999;display:grid;place-items:center;padding:18px;}
.modal-backdrop.hidden{display:none;}
.modal-card{background:#fff;border-radius:26px;padding:28px;max-width:620px;width:min(620px,96vw);box-shadow:0 30px 80px rgba(15,23,42,.28);}
.scan-result-card{border-top:12px solid #0f766e;}
.result-fail .scan-result-card{border-top-color:#dc2626;}
.scan-result-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin:14px 0;}
.scan-result-grid div{background:#f8fafc;border:1px solid #e2e8f0;border-radius:16px;padding:14px;}
.scan-result-grid b{display:block;color:#64748b;font-size:16px;}
.scan-result-grid span{display:block;font-size:25px;font-weight:1000;color:#0f172a;}
.instruction-list{display:grid;gap:14px;}
.instruction-list>div{border:1px solid #dbe7f3;border-radius:18px;background:#f8fafc;padding:16px;}
.large-font-mode{font-size:24px !important;}
.large-font-mode .card,.large-font-mode .notice,.large-font-mode .btn,.large-font-mode .input,.large-font-mode select,.large-font-mode textarea{font-size:23px !important;}
.large-font-mode .card h2{font-size:36px !important;}
.large-font-mode .tab{font-size:22px !important;}
.driver-vehicle-hero{display:flex;justify-content:space-between;align-items:center;gap:18px;background:linear-gradient(135deg,#ecfeff,#eef2ff);}
.driver-vehicle-hero h1{font-size:46px;margin:10px 0;}
.latest-event{border-radius:24px;padding:24px;min-height:260px;display:grid;align-content:center;gap:18px;border:2px solid #dbe7f3;background:#f8fafc;}
.latest-event.success{background:#ecfdf5;border-color:#10b981;}
.latest-event.fail{background:#fef2f2;border-color:#ef4444;}
.latest-event.monthly{background:#eff6ff;border-color:#3b82f6;}
.latest-event.guest{background:#fff7ed;border-color:#f97316;}
.latest-status{font-size:42px;font-weight:1000;line-height:1.25;}
.latest-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;}
.latest-grid div{background:rgba(255,255,255,.72);border-radius:16px;padding:14px;}
.latest-grid b{display:block;color:#64748b;font-size:16px;}
.latest-grid span{font-size:28px;font-weight:1000;}
.empty-event{font-size:32px;font-weight:900;color:#64748b;text-align:center;}
.trip-chip-list{display:flex;gap:10px;flex-wrap:wrap;margin:10px 0 18px;}
.trip-chip{display:inline-flex;border-radius:999px;background:#e0f2fe;color:#075985;padding:10px 14px;font-weight:900;}
.driver-ux18 table td:nth-child(2),.driver-ux18 table th:nth-child(2){font-size:24px;font-weight:1000;}
@media(max-width:920px){.feature-category-grid{grid-template-columns:1fr;}.category-actions{grid-template-columns:1fr;}.driver-vehicle-hero{display:block}.latest-grid,.scan-result-grid{grid-template-columns:1fr}.latest-status{font-size:34px}.video-box,.video-box video{min-height:300px;}}

/* UI21：乘客端正常版依舊版規格製作＋社區串接修正（版面／顏色／串接邏輯；底層仍為 NestJS /v1 API） */
body.passenger-normal-legacy{
  --bg:#fff7fe;
  --bg2:#f8efff;
  --card:#ffffff;
  --text:#33234f;
  --muted:#7b7194;
  --line:#eadcff;
  --line2:#f2eaff;
  --brand:#7c3aed;
  --brand-dark:#6d28d9;
  --brand-soft:#f3e8ff;
  --accent:#ec4899;
  --accent2:#ff7a59;
  --ok:#16a34a;
  --shadow:0 16px 42px rgba(93,50,140,.10);
  --shadow-soft:0 10px 28px rgba(93,50,140,.07);
  background:
    radial-gradient(circle at 5% 0%,rgba(255,122,89,.16),transparent 34%),
    radial-gradient(circle at 92% 6%,rgba(168,85,247,.18),transparent 36%),
    linear-gradient(180deg,#fff7fd 0%,#fcf5ff 52%,#fffaf6 100%) !important;
  color:#33234f;
}
body.passenger-normal-legacy .passenger-topbar{display:none;}
body.passenger-normal-legacy.is-authed .passenger-topbar{display:flex;}
body.passenger-normal-legacy #elderModeBtn,
body.passenger-normal-legacy .large-font-mode-toggle{display:none!important;}
body.passenger-normal-legacy .container.passenger-container{max-width:860px;}
body.passenger-normal-legacy .card{border-color:#eadcff;border-radius:26px;box-shadow:0 12px 30px rgba(93,50,140,.08);}
body.passenger-normal-legacy .card:hover{transform:none;border-color:#e4d2ff;box-shadow:0 14px 34px rgba(93,50,140,.10);}
body.passenger-normal-legacy .btn,
body.passenger-normal-legacy button.primary{
  background:linear-gradient(135deg,#ff7a59 0%,#e93c93 50%,#8b4dff 100%) !important;
  color:#fff!important;
  border:0!important;
  border-radius:18px!important;
  min-height:54px;
  box-shadow:0 12px 24px rgba(168,85,247,.20);
  font-weight:1000;
}
body.passenger-normal-legacy .btn.secondary,
body.passenger-normal-legacy .btn.ghost,
body.passenger-normal-legacy button.secondary{
  background:#f7f3ff!important;
  color:#6d28d9!important;
  border:1px solid #eadcff!important;
  box-shadow:none!important;
}
body.passenger-normal-legacy .btn.ok{background:linear-gradient(135deg,#22c55e,#16a34a)!important;color:#fff!important;}
body.passenger-normal-legacy .brand-logo-img{width:54px;height:54px;border-radius:16px;object-fit:cover;box-shadow:0 10px 20px rgba(124,58,237,.18);}
body.passenger-normal-legacy .brand-mark{display:none!important;}
body.passenger-normal-legacy .brand-title,
body.passenger-normal-legacy h1,
body.passenger-normal-legacy h2,
body.passenger-normal-legacy h3{color:#3b246f;}
body.passenger-normal-legacy .legacy-entry-card,
body.passenger-normal-legacy .legacy-login-step,
body.passenger-normal-legacy .passenger-status-card,
body.passenger-normal-legacy .passenger-main-menu,
body.passenger-normal-legacy .passenger-feature-page{
  position:relative;
  overflow:hidden;
  border:1px solid #eadcff;
  border-top:6px solid transparent;
  background:
    linear-gradient(#fff,#fff) padding-box,
    linear-gradient(90deg,#ff7a59,#e93c93,#8b4dff) border-box;
}
body.passenger-normal-legacy .legacy-entry-card{max-width:740px;margin:18px auto 20px;text-align:center;padding:28px 22px 24px;}
body.passenger-normal-legacy .legacy-entry-card h1{font-size:34px;line-height:1.15;margin:10px 0 6px;font-weight:1000;}
body.passenger-normal-legacy .legacy-entry-card h2{font-size:28px;line-height:1.25;color:#695d83;margin:0 0 18px;font-weight:950;}
body.passenger-normal-legacy .legacy-logo-wrap{margin:14px auto 22px;max-width:590px;border-radius:34px;border:1px solid #eadcff;background:linear-gradient(135deg,#fff7fd,#fbf5ff);padding:18px;box-shadow:inset 0 0 0 1px rgba(255,255,255,.9),0 12px 36px rgba(124,58,237,.08);}
body.passenger-normal-legacy .legacy-logo-wrap img{display:block;width:100%;max-width:520px;margin:0 auto;border-radius:24px;object-fit:contain;}
body.passenger-normal-legacy .legacy-entry-card .hero-sub{font-size:22px;line-height:1.7;color:#7b7194;font-weight:800;margin:18px auto 28px;max-width:660px;}
body.passenger-normal-legacy .legacy-entry-actions{display:grid;grid-template-columns:1fr;gap:14px;}
body.passenger-normal-legacy .legacy-entry-actions .btn{width:100%;font-size:26px;min-height:78px;}
body.passenger-normal-legacy .legacy-entry-actions .btn.ghost{font-size:24px;}
body.passenger-normal-legacy .legacy-login-step{max-width:760px;margin:18px auto 20px;padding:28px;}
body.passenger-normal-legacy .legacy-consent-box{border:1px solid #eadcff;border-radius:22px;background:#fff;padding:22px 26px;color:#33234f;font-size:20px;line-height:1.9;font-weight:700;}
body.passenger-normal-legacy .passenger-login-card .form{grid-template-columns:1fr;}
body.passenger-normal-legacy .legacy-password-row{display:grid;grid-template-columns:1fr 116px;gap:12px;align-items:end;}
body.passenger-normal-legacy .input,
body.passenger-normal-legacy select,
body.passenger-normal-legacy textarea{border-color:#e3d5ff;border-radius:18px;min-height:58px;font-weight:800;color:#3b246f;}
body.passenger-normal-legacy .input:focus,
body.passenger-normal-legacy select:focus,
body.passenger-normal-legacy textarea:focus{border-color:#a855f7;box-shadow:0 0 0 4px rgba(168,85,247,.12);}
body.passenger-normal-legacy .checkline{color:#3b246f;font-weight:900;}
body.passenger-normal-legacy .passenger-status-card{display:block;margin:0 0 16px;}
body.passenger-normal-legacy .passenger-status-card h1{font-size:32px;margin-top:10px;}
body.passenger-normal-legacy #passengerSummary{font-size:20px;font-weight:850;color:#7b7194;}
body.passenger-normal-legacy .badge{background:linear-gradient(135deg,#ff7a59,#e93c93,#8b4dff);color:#fff;border:0;border-radius:999px;padding:7px 13px;font-weight:950;display:inline-flex;}
body.passenger-normal-legacy .kpi{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;margin:16px 0 18px;}
body.passenger-normal-legacy .kpi .card,
body.passenger-normal-legacy .stat{background:#fff;border:1px solid #eadcff;border-radius:22px;}
body.passenger-normal-legacy .stat:before{background:rgba(168,85,247,.10);}
body.passenger-normal-legacy .stat span{color:#7b7194;}
body.passenger-normal-legacy .stat b{color:#6d28d9;}
body.passenger-normal-legacy .passenger-main-menu{padding:24px 22px;}
body.passenger-normal-legacy .passenger-main-menu h2{font-size:30px;}
body.passenger-normal-legacy .hint{color:#7b7194;font-weight:800;}
body.passenger-normal-legacy .legacy-category-main-grid,
body.passenger-normal-legacy .legacy-feature-grid{display:grid;grid-template-columns:1fr;gap:18px;margin-top:22px;}
body.passenger-normal-legacy .passenger-category-main,
body.passenger-normal-legacy .legacy-feature-grid button,
body.passenger-normal-legacy .category-actions button{
  width:100%;
  min-height:86px;
  border-radius:18px!important;
  background:#f7f3ff!important;
  color:#7c3aed!important;
  border:1px solid #e6d8ff!important;
  box-shadow:none!important;
  font-size:24px;
  font-weight:1000;
  line-height:1.4;
}
body.passenger-normal-legacy .passenger-category-main small,
body.passenger-normal-legacy .legacy-feature-grid small{display:block;color:#7b7194;font-size:17px;font-weight:900;margin-top:4px;}
body.passenger-normal-legacy .passenger-category-main:active,
body.passenger-normal-legacy .legacy-feature-grid button:active{background:linear-gradient(135deg,#ff7a59,#e93c93,#8b4dff)!important;color:#fff!important;}
body.passenger-normal-legacy .passenger-category-main:active small,
body.passenger-normal-legacy .legacy-feature-grid button:active small{color:rgba(255,255,255,.88)!important;}
body.passenger-normal-legacy .passenger-tabs{display:none!important;}
body.passenger-normal-legacy #featureContainer{margin-top:16px;}
body.passenger-normal-legacy .view{display:none;}
body.passenger-normal-legacy .view.active{display:block;}
body.passenger-normal-legacy .offline-operation-banner{background:#fff1f2;border:1px solid #fecdd3;color:#b42318;border-radius:16px;font-weight:1000;text-align:center;padding:12px 14px;font-size:22px;}
body.passenger-normal-legacy .offline-operation-banner.hidden{display:none;}
body.passenger-normal-legacy .notice{border-color:#d8c8ff;background:#f8f3ff;color:#4c1d95;}
body.passenger-normal-legacy .notice.warn{background:#fff7ed;border-color:#fed7aa;color:#9a3412;}
body.passenger-normal-legacy .notice.danger{background:#fff1f2;border-color:#fecdd3;color:#9f1239;}
body.passenger-normal-legacy .notice.ok{background:#ecfdf5;border-color:#bbf7d0;color:#166534;}
body.passenger-normal-legacy .video-box{border-radius:24px;background:#160f2e;}
body.passenger-normal-legacy .qr-line{background:#e93c93;box-shadow:0 0 20px #e93c93;}
body.passenger-normal-legacy .modal-card{border-top:8px solid #8b4dff;}
body.passenger-normal-legacy .scan-result-card{border-top-color:#8b4dff;}
body.passenger-normal-legacy .result-fail .scan-result-card{border-top-color:#dc2626;}
body.passenger-normal-legacy .scan-result-grid div{background:#fbf7ff;border-color:#eadcff;}
body.passenger-normal-legacy .scan-result-grid span{color:#3b246f;}
body.passenger-normal-legacy .footer-note{color:#9a8ab3;}
body.passenger-normal-legacy .manual-qr-test{display:none!important;}
@media(max-width:760px){
  body.passenger-normal-legacy .app{padding:10px 10px 26px;}
  body.passenger-normal-legacy .legacy-entry-card{margin-top:6px;padding:22px 18px;}
  body.passenger-normal-legacy .legacy-entry-card h1{font-size:30px;}
  body.passenger-normal-legacy .legacy-entry-card h2{font-size:25px;}
  body.passenger-normal-legacy .legacy-entry-card .hero-sub{font-size:20px;}
  body.passenger-normal-legacy .legacy-entry-actions .btn{min-height:72px;font-size:24px;}
  body.passenger-normal-legacy .legacy-password-row{grid-template-columns:1fr 100px;}
  body.passenger-normal-legacy .kpi{grid-template-columns:1fr;}
  body.passenger-normal-legacy .passenger-topbar{border-radius:22px;}
  body.passenger-normal-legacy.is-authed .passenger-topbar{display:flex;}
}

/* UI21：正常版尺寸修正，不再使用長者版大卡片；乘客資訊集中為一張卡 */
body.passenger-normal-legacy .passenger-status-card{padding:18px 20px;margin-bottom:12px;border-radius:22px;}
body.passenger-normal-legacy .passenger-status-card h1{font-size:27px;margin:8px 0 8px;line-height:1.25;}
body.passenger-normal-legacy #passengerSummary{font-size:17px;line-height:1.55;}
body.passenger-normal-legacy #passengerMeta{font-size:15px;line-height:1.5;}
body.passenger-normal-legacy .kpi#stats{display:block;margin:10px 0 14px;}
body.passenger-normal-legacy .passenger-compact-summary{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px 16px;min-height:unset;padding:16px 18px;border-radius:22px;}
body.passenger-normal-legacy .passenger-compact-summary:before{width:82px;height:82px;right:-30px;top:-36px;background:rgba(168,85,247,.08);}
body.passenger-normal-legacy .passenger-compact-summary div{position:relative;z-index:1;border-bottom:1px solid #f2eaff;padding:2px 0 8px;}
body.passenger-normal-legacy .passenger-compact-summary span{display:block;font-size:13px;color:#7b7194;font-weight:950;margin-bottom:2px;}
body.passenger-normal-legacy .passenger-compact-summary b{display:block;font-size:20px;line-height:1.3;color:#6d28d9;font-weight:1000;}
body.passenger-normal-legacy .passenger-main-menu{padding:18px 18px;border-radius:22px;}
body.passenger-normal-legacy .passenger-main-menu h2{font-size:27px;margin-bottom:10px;}
body.passenger-normal-legacy .passenger-main-menu .hint{font-size:17px;line-height:1.65;margin:0;}
body.passenger-normal-legacy .legacy-category-main-grid,
body.passenger-normal-legacy .legacy-feature-grid{gap:12px;margin-top:16px;}
body.passenger-normal-legacy .passenger-category-main,
body.passenger-normal-legacy .legacy-feature-grid button,
body.passenger-normal-legacy .category-actions button{min-height:64px;font-size:20px;border-radius:16px!important;line-height:1.3;}
body.passenger-normal-legacy .passenger-category-main small,
body.passenger-normal-legacy .legacy-feature-grid small{font-size:14px;margin-top:2px;}
body.passenger-normal-legacy .notice{font-size:16px;line-height:1.6;padding:11px 13px;border-radius:14px;}
body.passenger-normal-legacy .btn,
body.passenger-normal-legacy button.primary{min-height:48px;border-radius:16px!important;font-size:17px;padding:10px 15px;}
body.passenger-normal-legacy .input,
body.passenger-normal-legacy select,
body.passenger-normal-legacy textarea{min-height:48px;border-radius:15px;font-size:16px;padding:10px 12px;}
body.passenger-normal-legacy .footer-note::before{content:'NestJS 商轉新版 UI26｜乘客首頁移除無用提醒｜';}
body.passenger-normal-legacy .footer-note{font-size:0;}
body.passenger-normal-legacy .footer-note::before{font-size:13px;color:#9a8ab3;}
@media(max-width:760px){
  body.passenger-normal-legacy .app{padding:8px 8px 22px;}
  body.passenger-normal-legacy .passenger-topbar{padding:14px 16px;margin-bottom:12px;}
  body.passenger-normal-legacy .brand-logo-img{width:44px;height:44px;border-radius:13px;}
  body.passenger-normal-legacy .brand-title{font-size:24px;line-height:1.25;}
  body.passenger-normal-legacy .brand-sub{font-size:17px;line-height:1.55;}
  body.passenger-normal-legacy .passenger-status-card{padding:17px 18px;margin-bottom:12px;}
  body.passenger-normal-legacy .passenger-status-card h1{font-size:30px;}
  body.passenger-normal-legacy #passengerSummary{font-size:18px;}
  body.passenger-normal-legacy .passenger-compact-summary{grid-template-columns:1fr 1fr;padding:15px 16px;gap:9px 13px;}
  body.passenger-normal-legacy .passenger-compact-summary b{font-size:20px;}
  body.passenger-normal-legacy .passenger-main-menu{padding:18px 16px;}
  body.passenger-normal-legacy .passenger-main-menu h2{font-size:30px;}
  body.passenger-normal-legacy .passenger-category-main,
  body.passenger-normal-legacy .legacy-feature-grid button,
  body.passenger-normal-legacy .category-actions button{min-height:66px;font-size:21px;}
}

/* UI22：乘客端正常版壓縮與快取修正
   目的：不是靠使用者清快取，而是在程式內強制正常版、清掉長者版殘留設定、壓縮登入/同意/登入後首頁高度。
   底層仍為 NestJS /v1 API。 */
body.passenger-normal-legacy,
body.passenger-normal-legacy *{box-sizing:border-box;}
body.passenger-normal-legacy{font-size:16px!important;line-height:1.58!important;}
body.passenger-normal-legacy.large-font-mode{font-size:16px!important;}
body.passenger-normal-legacy.large-font-mode .card,
body.passenger-normal-legacy.large-font-mode .notice,
body.passenger-normal-legacy.large-font-mode .btn,
body.passenger-normal-legacy.large-font-mode .input,
body.passenger-normal-legacy.large-font-mode select,
body.passenger-normal-legacy.large-font-mode textarea{font-size:16px!important;}
body.passenger-normal-legacy .passenger-topbar,
body.passenger-normal-legacy.is-authed .passenger-topbar{display:none!important;}
body.passenger-normal-legacy .app{padding:8px 10px 20px!important;}
body.passenger-normal-legacy .container.passenger-container{max-width:760px!important;padding:0!important;}
body.passenger-normal-legacy .card{border-radius:22px!important;padding:18px!important;}
body.passenger-normal-legacy .legacy-entry-card{max-width:640px!important;margin:8px auto 12px!important;padding:20px 18px!important;}
body.passenger-normal-legacy .legacy-entry-card h1{font-size:30px!important;line-height:1.16!important;margin:6px 0 4px!important;}
body.passenger-normal-legacy .legacy-entry-card h2{font-size:24px!important;line-height:1.22!important;margin:0 0 12px!important;}
body.passenger-normal-legacy .legacy-logo-wrap{max-width:470px!important;margin:10px auto 16px!important;padding:12px!important;border-radius:26px!important;}
body.passenger-normal-legacy .legacy-logo-wrap img{max-width:390px!important;border-radius:18px!important;}
body.passenger-normal-legacy .legacy-entry-card .hero-sub{font-size:17px!important;line-height:1.55!important;margin:12px auto 18px!important;max-width:560px!important;}
body.passenger-normal-legacy .legacy-entry-actions{gap:10px!important;}
body.passenger-normal-legacy .legacy-entry-actions .btn{min-height:54px!important;font-size:19px!important;border-radius:16px!important;padding:10px 14px!important;}
body.passenger-normal-legacy .legacy-entry-actions .btn.ghost{font-size:18px!important;}
body.passenger-normal-legacy .legacy-login-step{max-width:640px!important;margin:8px auto 12px!important;padding:18px!important;}
body.passenger-normal-legacy .legacy-login-step h2{font-size:26px!important;line-height:1.22!important;margin:0 0 10px!important;}
body.passenger-normal-legacy .legacy-login-step .muted{font-size:15.5px!important;line-height:1.62!important;margin:0 0 14px!important;}
body.passenger-normal-legacy .legacy-consent-box{font-size:16px!important;line-height:1.72!important;padding:16px 18px!important;border-radius:18px!important;max-height:min(46vh,430px)!important;overflow:auto!important;-webkit-overflow-scrolling:touch!important;}
body.passenger-normal-legacy .passenger-login-card .form{display:grid!important;grid-template-columns:1fr!important;gap:10px!important;}
body.passenger-normal-legacy .field{gap:5px!important;}
body.passenger-normal-legacy .field label,
body.passenger-normal-legacy .generated-label{font-size:15px!important;line-height:1.35!important;}
body.passenger-normal-legacy .legacy-password-row{display:grid!important;grid-template-columns:minmax(0,1fr) 82px!important;gap:8px!important;align-items:stretch!important;}
body.passenger-normal-legacy .legacy-password-row .btn{grid-column:auto!important;width:auto!important;min-width:0!important;min-height:46px!important;padding:8px 10px!important;font-size:16px!important;}
body.passenger-normal-legacy .input,
body.passenger-normal-legacy select,
body.passenger-normal-legacy textarea{font-size:16px!important;min-height:46px!important;padding:9px 11px!important;border-radius:14px!important;}
body.passenger-normal-legacy .checkline{font-size:16px!important;line-height:1.45!important;gap:8px!important;}
body.passenger-normal-legacy .passenger-login-card .btn{min-height:48px!important;font-size:17px!important;padding:9px 14px!important;}
body.passenger-normal-legacy .passenger-status-card{display:grid!important;grid-template-columns:minmax(0,1fr) auto!important;gap:10px!important;align-items:start!important;padding:16px 18px!important;margin:0 0 10px!important;border-radius:22px!important;}
body.passenger-normal-legacy .passenger-status-card h1{font-size:25px!important;line-height:1.18!important;margin:7px 0 6px!important;}
body.passenger-normal-legacy .passenger-status-card .badge{font-size:14px!important;padding:6px 12px!important;line-height:1.25!important;}
body.passenger-normal-legacy #passengerSummary{font-size:16px!important;line-height:1.45!important;margin:0 0 4px!important;}
body.passenger-normal-legacy #passengerMeta{font-size:14.5px!important;line-height:1.35!important;margin:0!important;}
body.passenger-normal-legacy .passenger-inline-logout{min-height:40px!important;font-size:15px!important;padding:8px 13px!important;white-space:nowrap!important;}
body.passenger-normal-legacy .kpi#stats{margin:8px 0 10px!important;}
body.passenger-normal-legacy .passenger-compact-summary{grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:8px 12px!important;padding:13px 15px!important;border-radius:20px!important;}
body.passenger-normal-legacy .passenger-compact-summary div{padding:1px 0 6px!important;}
body.passenger-normal-legacy .passenger-compact-summary span{font-size:12.5px!important;line-height:1.25!important;}
body.passenger-normal-legacy .passenger-compact-summary b{font-size:18px!important;line-height:1.25!important;word-break:break-word!important;}
body.passenger-normal-legacy #guardPanels{display:grid!important;gap:8px!important;margin:8px 0 10px!important;}
body.passenger-normal-legacy .notice{font-size:15px!important;line-height:1.48!important;padding:9px 11px!important;border-radius:14px!important;}
body.passenger-normal-legacy .passenger-main-menu{padding:16px!important;border-radius:22px!important;margin-bottom:10px!important;}
body.passenger-normal-legacy .passenger-main-menu h2{font-size:25px!important;line-height:1.18!important;margin:0 0 8px!important;}
body.passenger-normal-legacy .passenger-main-menu .hint{font-size:15.5px!important;line-height:1.52!important;margin:0!important;}
body.passenger-normal-legacy .legacy-category-main-grid,
body.passenger-normal-legacy .legacy-feature-grid{gap:10px!important;margin-top:13px!important;}
body.passenger-normal-legacy .passenger-category-main,
body.passenger-normal-legacy .legacy-feature-grid button,
body.passenger-normal-legacy .category-actions button{min-height:54px!important;font-size:18px!important;line-height:1.22!important;border-radius:15px!important;padding:8px 12px!important;}
body.passenger-normal-legacy .passenger-category-main small,
body.passenger-normal-legacy .legacy-feature-grid small{font-size:13px!important;line-height:1.25!important;margin-top:1px!important;}
body.passenger-normal-legacy .footer-note::before{content:'NestJS 商轉新版 UI26｜乘客首頁移除無用提醒｜';}
body.passenger-normal-legacy .footer-note::before{font-size:12px!important;color:#9a8ab3!important;}
@media(max-width:760px){
  body.passenger-normal-legacy{font-size:15.5px!important;line-height:1.55!important;}
  body.passenger-normal-legacy .app{padding:7px 8px 18px!important;}
  body.passenger-normal-legacy .card{padding:15px!important;border-radius:20px!important;}
  body.passenger-normal-legacy .legacy-entry-card h1{font-size:28px!important;}
  body.passenger-normal-legacy .legacy-entry-card h2{font-size:22px!important;}
  body.passenger-normal-legacy .legacy-logo-wrap img{max-width:330px!important;}
  body.passenger-normal-legacy .legacy-entry-card .hero-sub{font-size:16px!important;}
  body.passenger-normal-legacy .legacy-login-step h2{font-size:25px!important;}
  body.passenger-normal-legacy .legacy-consent-box{max-height:44vh!important;font-size:15.5px!important;}
  body.passenger-normal-legacy .passenger-status-card{grid-template-columns:1fr!important;padding:14px 16px!important;}
  body.passenger-normal-legacy .passenger-inline-logout{width:100%!important;}
  body.passenger-normal-legacy .passenger-status-card h1{font-size:23px!important;}
  body.passenger-normal-legacy #passengerSummary{font-size:15.5px!important;}
  body.passenger-normal-legacy .passenger-compact-summary{grid-template-columns:1fr 1fr!important;padding:12px 13px!important;gap:7px 10px!important;}
  body.passenger-normal-legacy .passenger-compact-summary b{font-size:17px!important;}
  body.passenger-normal-legacy .passenger-main-menu h2{font-size:24px!important;}
  body.passenger-normal-legacy .passenger-main-menu .hint{font-size:15px!important;}
  body.passenger-normal-legacy .passenger-category-main,
  body.passenger-normal-legacy .legacy-feature-grid button,
  body.passenger-normal-legacy .category-actions button{min-height:52px!important;font-size:17px!important;}
}

/* UI23：入口登入前個資告知小視窗
   使用者點「乘客登入」時先跳出同意/不同意；同意才顯示帳密登入，不同意離開畫面。 */
body.passenger-normal-legacy .privacy-gate-backdrop{
  position:fixed!important;
  inset:0!important;
  z-index:9999!important;
  display:flex!important;
  align-items:center!important;
  justify-content:center!important;
  padding:18px!important;
  background:rgba(35,24,62,.48)!important;
  backdrop-filter:blur(5px)!important;
  -webkit-backdrop-filter:blur(5px)!important;
}
body.passenger-normal-legacy .privacy-gate-backdrop.hidden{display:none!important;}
body.passenger-normal-legacy .privacy-gate-card{
  width:min(540px,100%)!important;
  max-height:min(78vh,620px)!important;
  display:flex!important;
  flex-direction:column!important;
  border-radius:24px!important;
  padding:20px!important;
  background:#fff!important;
  border:1px solid #eadcff!important;
  border-top:7px solid transparent!important;
  background:
    linear-gradient(#fff,#fff) padding-box,
    linear-gradient(90deg,#ff7a59,#e93c93,#8b4dff) border-box!important;
  box-shadow:0 28px 70px rgba(59,36,111,.28)!important;
}
body.passenger-normal-legacy .privacy-gate-card h2{
  margin:0 0 12px!important;
  color:#3b246f!important;
  font-size:24px!important;
  line-height:1.25!important;
  text-align:center!important;
  font-weight:1000!important;
}
body.passenger-normal-legacy .privacy-gate-scroll{
  max-height:42vh!important;
  overflow:auto!important;
  -webkit-overflow-scrolling:touch!important;
  border:1px solid #eadcff!important;
  border-radius:18px!important;
  padding:14px 16px!important;
  color:#33234f!important;
  background:#fff!important;
  font-size:16px!important;
  line-height:1.68!important;
  font-weight:750!important;
}
body.passenger-normal-legacy .privacy-gate-scroll p{margin:0 0 12px!important;}
body.passenger-normal-legacy .privacy-gate-scroll p:last-child{margin-bottom:0!important;}
body.passenger-normal-legacy .privacy-gate-actions{
  display:grid!important;
  grid-template-columns:1fr!important;
  gap:10px!important;
  margin-top:14px!important;
}
body.passenger-normal-legacy .privacy-gate-actions .btn{
  width:100%!important;
  min-height:50px!important;
  font-size:18px!important;
  border-radius:16px!important;
}
body.passenger-normal-legacy .footer-note::before{content:'NestJS 商轉新版 UI26｜乘客首頁移除無用提醒｜'!important;}
@media(max-width:760px){
  body.passenger-normal-legacy .privacy-gate-backdrop{align-items:center!important;padding:14px!important;}
  body.passenger-normal-legacy .privacy-gate-card{border-radius:22px!important;padding:17px!important;max-height:82vh!important;}
  body.passenger-normal-legacy .privacy-gate-card h2{font-size:22px!important;}
  body.passenger-normal-legacy .privacy-gate-scroll{font-size:15.5px!important;line-height:1.62!important;max-height:44vh!important;padding:13px!important;}
  body.passenger-normal-legacy .privacy-gate-actions .btn{min-height:48px!important;font-size:17px!important;}
}

/* UI26：真正入口個資同意小視窗 + 乘客資訊正常版壓縮
   重點：個資說明不可連在入口頁；點乘客登入只能以 fixed 小視窗顯示。 */
body.passenger-normal-legacy #consentCard{
  display:none!important;
  visibility:hidden!important;
  height:0!important;
  min-height:0!important;
  padding:0!important;
  margin:0!important;
  overflow:hidden!important;
}
body.passenger-normal-legacy.privacy-modal-open{
  overflow:hidden!important;
  touch-action:none!important;
}
body.passenger-normal-legacy #privacyGateModal.privacy-gate-backdrop{
  position:fixed!important;
  inset:0!important;
  z-index:2147483000!important;
  display:flex!important;
  align-items:center!important;
  justify-content:center!important;
  width:100vw!important;
  height:100vh!important;
  min-height:100vh!important;
  padding:18px!important;
  background:rgba(32,19,61,.56)!important;
  backdrop-filter:blur(8px)!important;
  -webkit-backdrop-filter:blur(8px)!important;
  transform:none!important;
  opacity:1!important;
}
body.passenger-normal-legacy #privacyGateModal.privacy-gate-backdrop.hidden{
  display:none!important;
  opacity:0!important;
  pointer-events:none!important;
}
body.passenger-normal-legacy #privacyGateModal .privacy-gate-card{
  width:min(540px,calc(100vw - 28px))!important;
  max-height:82vh!important;
  display:flex!important;
  flex-direction:column!important;
  border-radius:24px!important;
  padding:18px!important;
  background:#fff!important;
  border:1px solid #eadcff!important;
  border-top:7px solid transparent!important;
  background:linear-gradient(#fff,#fff) padding-box,linear-gradient(90deg,#ff7a59,#e93c93,#8b4dff) border-box!important;
  box-shadow:0 26px 78px rgba(32,19,61,.38)!important;
  overflow:hidden!important;
}
body.passenger-normal-legacy #privacyGateModal .privacy-gate-card h2{
  margin:0 0 10px!important;
  color:#3b246f!important;
  font-size:22px!important;
  line-height:1.28!important;
  font-weight:1000!important;
  text-align:center!important;
}
body.passenger-normal-legacy #privacyGateModal .privacy-gate-scroll{
  max-height:48vh!important;
  overflow:auto!important;
  -webkit-overflow-scrolling:touch!important;
  border:1px solid #eadcff!important;
  border-radius:16px!important;
  padding:13px 14px!important;
  background:#fff!important;
  color:#33234f!important;
  font-size:15.5px!important;
  line-height:1.66!important;
  font-weight:750!important;
}
body.passenger-normal-legacy #privacyGateModal .privacy-gate-actions{
  display:grid!important;
  grid-template-columns:1fr!important;
  gap:9px!important;
  margin-top:12px!important;
}
body.passenger-normal-legacy #privacyGateModal .privacy-gate-actions .btn{
  min-height:48px!important;
  width:100%!important;
  font-size:17px!important;
  border-radius:16px!important;
}
body.passenger-normal-legacy #stats.kpi{
  display:block!important;
  grid-template-columns:none!important;
  gap:0!important;
  margin:8px 0 10px!important;
}
body.passenger-normal-legacy .passenger-summary-card-ui26{
  display:grid!important;
  grid-template-columns:1fr!important;
  gap:10px!important;
  padding:15px 16px!important;
  border-radius:20px!important;
  box-shadow:0 10px 22px rgba(59,36,111,.06)!important;
  border:1px solid #e7d9ff!important;
  background:#fff!important;
  min-height:unset!important;
  overflow:hidden!important;
}
body.passenger-normal-legacy .passenger-summary-card-ui26:before{display:none!important;content:none!important;}
body.passenger-normal-legacy .passenger-summary-card-ui26 .summary-main,
body.passenger-normal-legacy .passenger-summary-card-ui26 .summary-sub{
  display:grid!important;
  grid-template-columns:repeat(2,minmax(0,1fr))!important;
  gap:8px 12px!important;
}
body.passenger-normal-legacy .passenger-summary-card-ui26 .summary-sub{
  grid-template-columns:1fr 1fr auto!important;
  border-top:1px solid #f0e7ff!important;
  padding-top:9px!important;
}
body.passenger-normal-legacy .passenger-summary-card-ui26 span{
  display:block!important;
  margin:0 0 2px!important;
  color:#7b7194!important;
  font-size:12.5px!important;
  line-height:1.25!important;
  font-weight:950!important;
}
body.passenger-normal-legacy .passenger-summary-card-ui26 b,
body.passenger-normal-legacy .passenger-summary-card-ui26 strong{
  display:block!important;
  margin:0!important;
  color:#6d28d9!important;
  font-size:17px!important;
  line-height:1.32!important;
  font-weight:1000!important;
  word-break:break-word!important;
}
body.passenger-normal-legacy .passenger-summary-card-ui26 .summary-main b{font-size:20px!important;}
body.passenger-normal-legacy .footer-note{font-size:0!important;}
body.passenger-normal-legacy .footer-note::before{
  content:'NestJS 商轉新版 UI26｜乘客首頁移除無用提醒'!important;
  font-size:12px!important;
  color:#9a8ab3!important;
}
@media(max-width:760px){
  body.passenger-normal-legacy #privacyGateModal.privacy-gate-backdrop{align-items:center!important;padding:14px!important;}
  body.passenger-normal-legacy #privacyGateModal .privacy-gate-card{width:calc(100vw - 28px)!important;max-height:82vh!important;border-radius:22px!important;padding:16px!important;}
  body.passenger-normal-legacy #privacyGateModal .privacy-gate-card h2{font-size:21px!important;}
  body.passenger-normal-legacy #privacyGateModal .privacy-gate-scroll{max-height:46vh!important;font-size:15px!important;line-height:1.62!important;padding:12px!important;}
  body.passenger-normal-legacy #privacyGateModal .privacy-gate-actions .btn{min-height:47px!important;font-size:16.5px!important;}
  body.passenger-normal-legacy .passenger-summary-card-ui26 .summary-main{grid-template-columns:1fr 1fr!important;}
  body.passenger-normal-legacy .passenger-summary-card-ui26 .summary-sub{grid-template-columns:1fr!important;}
  body.passenger-normal-legacy .passenger-summary-card-ui26 .summary-main b{font-size:19px!important;}
  body.passenger-normal-legacy .passenger-summary-card-ui26 b,
  body.passenger-normal-legacy .passenger-summary-card-ui26 strong{font-size:16px!important;}
}

/* UI26：拆解舊版後修正乘客登入後主頁。
   舊版規格不是另外顯示大型姓名/點數/月票卡，而是用上方乘客狀態卡呈現摘要。
   因此強制移除 #stats 大型資訊卡，避免殘留長者版/新版 KPI CSS 把搭乘頁面撐長。 */
body.passenger-normal-legacy #stats,
body.passenger-normal-legacy #stats.kpi,
body.passenger-normal-legacy #stats.kpi[hidden]{
  display:none!important;
  visibility:hidden!important;
  height:0!important;
  min-height:0!important;
  max-height:0!important;
  margin:0!important;
  padding:0!important;
  overflow:hidden!important;
  border:0!important;
}
body.passenger-normal-legacy #stats *,
body.passenger-normal-legacy .passenger-summary-card-ui26{
  display:none!important;
}
body.passenger-normal-legacy .passenger-status-card{
  display:grid!important;
  grid-template-columns:minmax(0,1fr)!important;
  gap:10px!important;
  padding:16px 18px!important;
  margin:0 0 12px!important;
  border-radius:22px!important;
}
body.passenger-normal-legacy .passenger-status-card h1{
  font-size:25px!important;
  line-height:1.2!important;
  margin:7px 0 4px!important;
}
body.passenger-normal-legacy #passengerSummary{
  font-size:16px!important;
  line-height:1.45!important;
  margin:0 0 4px!important;
  font-weight:850!important;
  color:#7b7194!important;
}
body.passenger-normal-legacy #passengerMeta{
  font-size:15px!important;
  line-height:1.4!important;
  margin:0!important;
  color:#7b7194!important;
}
body.passenger-normal-legacy .passenger-inline-logout{
  width:100%!important;
  min-height:42px!important;
  font-size:15.5px!important;
  padding:8px 12px!important;
  margin-top:4px!important;
}
body.passenger-normal-legacy #guardPanels{
  margin:8px 0 10px!important;
}
body.passenger-normal-legacy .passenger-main-menu{
  margin-top:0!important;
}
body.passenger-normal-legacy .footer-note::before{
  content:'NestJS 商轉新版 UI26｜乘客首頁移除無用提醒｜'!important;
}
@media(max-width:760px){
  body.passenger-normal-legacy .passenger-status-card{padding:14px 16px!important;}
  body.passenger-normal-legacy .passenger-status-card h1{font-size:24px!important;}
  body.passenger-normal-legacy #passengerSummary{font-size:15.5px!important;}
  body.passenger-normal-legacy #passengerMeta{font-size:14.5px!important;}
}


/* UI30 passenger 100% legacy spec: copied from tested old passenger frontend. */
/* Phase 5.31：乘客端依舊版入口、三大分類與快速登入重構 */
.passenger-ui.senior-mode{font-size:18px}.passenger-ui.senior-mode h1{font-size:38px}.passenger-ui.senior-mode h2{font-size:28px}.passenger-ui.senior-mode p,.passenger-ui.senior-mode label{font-size:18px;line-height:1.65}.passenger-ui.senior-mode input,.passenger-ui.senior-mode select,.passenger-ui.senior-mode textarea,.passenger-ui.senior-mode button{font-size:18px;min-height:48px}.passenger-login-landing{text-align:center;margin-left:auto;margin-right:auto;background:linear-gradient(135deg,#ecfeff,#fff 52%,#faf5ff)}.passenger-entry-logo-wrap{display:flex;align-items:center;justify-content:center;margin:4px 0 8px}.passenger-entry-logo{width:118px;height:118px;border-radius:28px;box-shadow:0 16px 34px rgba(15,118,110,.18);background:#fff}.passenger-entry-subtitle{font-size:22px;font-weight:1000;color:#4c1d95;margin:2px 0 8px}.passenger-entry-actions{justify-content:center}.password-field-wrap{display:flex;align-items:stretch;gap:8px}.password-field-wrap input{flex:1}.password-field-wrap button{white-space:nowrap;min-width:88px}.remember-login-options{display:grid;gap:10px;margin:10px 0 16px}.remember-login-options label{display:flex;gap:10px;align-items:center;font-weight:1000;color:#334155}.remember-login-options input{width:auto;margin:0;transform:scale(1.18)}.quick-login-switch-row{color:#5b21b6!important}.modal-backdrop{position:fixed;inset:0;background:rgba(15,23,42,.62);z-index:9999;display:flex;align-items:center;justify-content:center;padding:18px}.modal-backdrop.hidden{display:none!important}.modal-card{width:min(860px,96vw);max-height:90vh;overflow:auto;background:#fff;border-radius:24px;padding:22px;box-shadow:0 24px 70px rgba(15,23,42,.28)}.terms-modal-scroll{max-height:54vh;overflow:auto;border:1px solid #e2e8f0;background:#f8fafc;border-radius:16px;padding:14px;margin:12px 0}.passenger-status-card{background:linear-gradient(135deg,#fff,#ecfeff)}.status-balance-box{min-width:180px;text-align:right}.status-balance-box span{display:block;color:#64748b;font-weight:1000}.status-balance-box b{display:block;font-size:34px;color:#0f766e;margin:2px 0 10px}.passenger-main-menu .menu-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:14px;margin-top:14px}.passenger-main-menu .menu-grid button,.passenger-main-menu .menu-grid a{width:100%;min-height:88px;text-align:center;font-size:22px;line-height:1.35;display:flex;flex-direction:column;justify-content:center;border-radius:18px}.passenger-main-menu .menu-grid small{display:block;color:#475569;font-size:14px;margin-top:4px;font-weight:800}.passenger-main-menu .passenger-category-main{background:linear-gradient(135deg,#e0f2fe,#f5f3ff);color:#3b2575;border:1px solid #ddd6fe}.passenger-main-menu .feature-tile{background:#f8fafc;color:#0f172a;border:1px solid #e2e8f0}.passenger-main-menu .passenger-locked,.passenger-main-menu .locked-disabled{opacity:.45!important;filter:grayscale(1);cursor:not-allowed!important;background:#e5e7eb!important;color:#64748b!important;border-color:#cbd5e1!important}.passenger-back-row{display:flex;justify-content:space-between;gap:12px;align-items:center;flex-wrap:wrap}.passenger-bottom-back{justify-content:center}.passenger-feature-page{border-top:6px solid #0f766e}.ad-slot{border:1px dashed #d8b4fe;background:#faf5ff;color:#7e22ce;border-radius:16px;padding:10px 14px;text-align:center;font-weight:900;margin:10px 0 18px}.full-span{grid-column:1/-1}.status-blue{color:#2563eb;font-weight:1000}.status-red{color:#b91c1c;font-weight:1000}.manual-box{border-top:1px dashed #cbd5e1;margin-top:14px;padding-top:14px}.locked-service-card{border:2px solid #fecaca;background:#fff1f2;color:#991b1b;border-radius:18px;padding:14px;margin:0 0 14px;font-weight:900}.service-locked-panel{border-color:#fecaca}@media(max-width:860px){.passenger-ui.senior-mode{font-size:16px}.passenger-ui.senior-mode h1{font-size:30px}.passenger-ui.senior-mode h2{font-size:24px}.passenger-ui.senior-mode p,.passenger-ui.senior-mode label{font-size:16px}.passenger-ui.senior-mode input,.passenger-ui.senior-mode select,.passenger-ui.senior-mode textarea,.passenger-ui.senior-mode button{font-size:16px}.passenger-entry-logo{width:92px;height:92px;border-radius:22px}.status-balance-box{text-align:left}.passenger-main-menu .menu-grid{grid-template-columns:1fr}.passenger-main-menu .menu-grid button,.passenger-main-menu .menu-grid a{font-size:20px;min-height:80px}.modal-backdrop{align-items:flex-start;padding:10px}.modal-card{max-height:96vh;padding:16px}.password-field-wrap{gap:6px}.password-field-wrap button{min-width:74px}}

/* Phase 5.32：路線停靠站欄位化、乘客掃碼流程與問卷彈窗 */
.route-stops-trip-form{display:grid;gap:16px;grid-template-columns:1fr;margin-top:12px}
.route-form-card{border:1px solid #e9d5ff;border-radius:18px;background:linear-gradient(135deg,#fff,#fbf7ff);padding:16px;box-shadow:0 10px 26px rgba(88,28,135,.06)}
.route-form-card h4{margin:0 0 8px;color:#4c1d95;font-size:18px;font-weight:1000}
.route-form-card .grid3{align-items:end}.form-actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:12px}.readonly-result[readonly],input[readonly].readonly-result{background:#eef2ff!important;color:#312e81!important;font-weight:900}.scan-step-card{border:1px solid #bae6fd;border-radius:18px;background:linear-gradient(135deg,#f0f9ff,#fff);padding:14px;margin:12px 0}.scan-step-card h3{margin-top:0;color:#075985}.scan-actions{display:flex;gap:10px;flex-wrap:wrap;align-items:center}.qr-video{width:100%;max-height:360px;border-radius:18px;background:#020617;object-fit:cover;margin:10px 0}.hidden[aria-hidden="true"],.ad-slot.hidden{display:none!important}.survey-select-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.offline-hidden-control{display:none!important}@media(max-width:760px){.survey-select-grid{grid-template-columns:1fr}.route-form-card .grid3{grid-template-columns:1fr}.scan-actions button{width:100%}}

/* Phase 5.36：乘客端相機掃碼改為最上層小視窗，並隱藏頁面內嵌黑色預覽框 */
.scan-step-card .qr-video{display:none!important}
.qr-camera-modal{position:fixed;inset:0;z-index:2147483000;background:rgba(15,23,42,.76);display:flex;align-items:center;justify-content:center;padding:14px}
.qr-camera-modal.hidden{display:none!important}
.qr-camera-card{width:min(760px,96vw);max-height:96vh;overflow:auto;background:#fff;border-radius:28px;padding:18px;box-shadow:0 28px 90px rgba(0,0,0,.42)}
.qr-camera-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:8px}
.qr-camera-title{font-size:clamp(24px,5vw,38px);font-weight:1000;color:#0f172a;margin:0}
.qr-camera-hint{font-size:clamp(18px,4.6vw,30px);font-weight:1000;color:#b91c1c;background:#fee2e2;border:2px solid #fecaca;border-radius:18px;padding:12px 14px;margin:0 0 14px;text-align:center}
.qr-camera-frame{position:relative;border-radius:22px;overflow:hidden;background:#000;border:4px solid #0f766e}
.qr-camera-video{display:block;width:100%;height:min(62vh,560px);object-fit:cover;background:#000}
.qr-camera-guide{pointer-events:none;position:absolute;inset:12%;border:3px solid rgba(255,255,255,.9);border-radius:18px;box-shadow:0 0 0 999px rgba(0,0,0,.14)}
.qr-camera-guide span{position:absolute;left:10%;right:10%;top:50%;height:3px;background:rgba(34,197,94,.95);box-shadow:0 0 14px rgba(34,197,94,.9);animation:qrScanLine 1.35s infinite ease-in-out}
@keyframes qrScanLine{0%,100%{transform:translateY(-92px)}50%{transform:translateY(92px)}}
body.qr-camera-open{overflow:hidden}
@media(max-width:760px){.qr-camera-card{padding:12px;border-radius:22px}.qr-camera-head{align-items:flex-start}.qr-camera-head button{min-width:98px}.qr-camera-video{height:min(68vh,520px)}.qr-camera-guide{inset:10%}}
.qr-html5-reader{width:100%;min-height:min(62vh,560px);background:#000;border-radius:18px;overflow:hidden}
.qr-html5-reader video{width:100%!important;height:min(62vh,560px)!important;object-fit:cover!important}
.qr-html5-reader canvas{display:none!important}
.qr-html5-reader__dashboard_section,.qr-html5-reader__dashboard_section_csr{display:none!important}
@media(max-width:760px){.qr-html5-reader,.qr-html5-reader video{min-height:min(68vh,520px);height:min(68vh,520px)!important}}
.scan-result-card{text-align:center;border-top:8px solid #0f766e}
.scan-result-status{border-radius:22px;padding:16px;margin:12px 0 16px;font-size:clamp(20px,5vw,34px);font-weight:1000}
.scan-result-status.ok{background:#ecfdf5;border:2px solid #86efac;color:#047857}
.scan-result-status.err{background:#fef2f2;border:2px solid #fecaca;color:#b91c1c}
.scan-result-status p{margin:8px 0 0;font-size:clamp(16px,4vw,22px);line-height:1.45}
.scan-result-details{display:grid;gap:10px;text-align:left;margin:14px 0 18px}
.scan-result-row{display:flex;align-items:center;justify-content:space-between;gap:12px;background:#f8fafc;border:1px solid #e2e8f0;border-radius:18px;padding:14px 16px;font-weight:1000;color:#334155}
.scan-result-row b{font-size:clamp(22px,5vw,34px);color:#3b2575;white-space:nowrap}
.scan-result-row.monthly{background:#eff6ff;border-color:#bfdbfe}
.strong-hint{font-weight:1000;font-size:clamp(16px,4vw,21px);line-height:1.55;text-align:center}
.scan-result-actions{justify-content:center;margin-top:12px}.scan-result-actions button{min-width:180px;font-size:22px}
@media(max-width:760px){.scan-result-row{padding:12px;align-items:flex-start;flex-direction:column}.scan-result-row b{white-space:normal}.scan-result-actions button{width:100%}}

/* Phase 5.41: passenger feature pages keep a consistent bottom back button */
.passenger-page-bottom-back{margin-top:28px;padding-top:20px;border-top:1px dashed rgba(15,118,110,.22);justify-content:center}
.passenger-page-bottom-back .secondary{min-width:180px}
.passenger-feature-page .big-actions:empty{display:none}

.passenger-inline-back-hidden{display:none!important}

/* Phase 5.43: passenger home balance and guest pass cleanup */
.status-balance-box b.negative-balance{color:#b91c1c!important}
.balance-warning{display:block;color:#b91c1c;font-weight:1000;line-height:1.45;margin:-4px 0 10px;font-size:15px}
.balance-warning.hidden{display:none!important}
#passengerMeta{line-height:1.65}
#reservationPointInfo{line-height:1.8}
#guestResult .receipt{word-break:break-all}

/* Phase 5.44: move passenger home current points to the top-right corner */
.passenger-status-card{position:relative;align-items:flex-start;padding-right:238px;min-height:220px}
.passenger-status-card>div:first-child{min-width:0;max-width:100%}
.status-balance-box{min-width:190px;text-align:right}
.status-balance-box span{font-size:15px;letter-spacing:.02em}
.status-balance-box b{font-size:34px;line-height:1.12;white-space:nowrap;margin:2px 0 10px}
.status-balance-box .balance-warning{max-width:190px;margin:0 0 10px auto;text-align:right}
@media(max-width:860px){
  .passenger-status-card{padding-right:142px;min-height:260px}
  .status-balance-box{min-width:124px;text-align:right}
  .status-balance-box span{font-size:13px}
  .status-balance-box b{font-size:26px;white-space:nowrap;margin:0 0 8px}
  .status-balance-box button{min-height:40px;padding:8px 14px;font-size:15px}
  .status-balance-box .balance-warning{font-size:12px;line-height:1.25;max-width:124px;margin:0 0 8px auto}
  .passenger-status-card #passengerSummary,.passenger-status-card #passengerMeta{padding-right:0}
}


/* Phase 5.45: passenger normal / senior font mode toggle */
.passenger-ui.normal-mode{font-size:16px}
.passenger-font-mode-toggle{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:10px 0 14px}
.passenger-font-mode-toggle span{font-weight:1000;color:#475569;margin-right:2px}
.passenger-font-mode-toggle button{min-height:38px;padding:8px 12px;border-radius:999px;font-size:14px}
.passenger-font-mode-toggle button.active{background:#0f766e!important;color:#fff!important;border-color:#0f766e!important;box-shadow:0 8px 18px rgba(15,118,110,.18)}
.passenger-scan-font-mode-toggle{justify-content:flex-start;border:1px solid #ccfbf1;background:#f0fdfa;border-radius:16px;padding:10px 12px}
.passenger-ui.senior-mode .passenger-font-mode-toggle span{font-size:20px}
.passenger-ui.senior-mode .passenger-font-mode-toggle button{font-size:19px;min-height:50px;padding:10px 16px}
.passenger-ui.senior-mode .scan-step-card h3{font-size:28px}
.passenger-ui.senior-mode .scan-step-card .hint{font-size:20px;line-height:1.7}
.passenger-ui.senior-mode #scanPassengerCount{font-size:22px;min-height:58px}
.passenger-ui.senior-mode #startCamera{font-size:22px;min-height:62px}
.passenger-ui.normal-mode .scan-step-card h3{font-size:22px}
.passenger-ui.normal-mode #scanPassengerCount{font-size:18px;min-height:50px}
@media(max-width:860px){
  .passenger-ui.normal-mode{font-size:15px}
  .passenger-ui.normal-mode h1{font-size:30px}
  .passenger-ui.normal-mode h2{font-size:24px}
  .passenger-ui.normal-mode p,.passenger-ui.normal-mode label{font-size:16px;line-height:1.6}
  .passenger-ui.normal-mode input,.passenger-ui.normal-mode select,.passenger-ui.normal-mode textarea,.passenger-ui.normal-mode button{font-size:16px;min-height:44px}
  .passenger-ui.senior-mode{font-size:19px}
  .passenger-ui.senior-mode h1{font-size:36px}
  .passenger-ui.senior-mode h2{font-size:30px}
  .passenger-ui.senior-mode p,.passenger-ui.senior-mode label{font-size:20px;line-height:1.75}
  .passenger-ui.senior-mode input,.passenger-ui.senior-mode select,.passenger-ui.senior-mode textarea,.passenger-ui.senior-mode button{font-size:20px;min-height:56px}
  .passenger-ui.senior-mode .passenger-main-menu .menu-grid button,.passenger-ui.senior-mode .passenger-main-menu .menu-grid a{font-size:24px;min-height:96px}
  .passenger-ui.senior-mode .passenger-main-menu .menu-grid small{font-size:17px}
  .passenger-font-mode-toggle{gap:7px}
  .passenger-font-mode-toggle button{flex:1;min-width:116px}
}

/* Phase 5.46: cancel Phase 5.45 passenger font mode toggle and restore original sizing. */
.passenger-font-mode-toggle{display:none!important}
.passenger-ui{font-size:16px}
.passenger-ui h1{font-size:36px}
.passenger-ui h2{font-size:28px}
.passenger-ui p,.passenger-ui label{font-size:16px;line-height:1.6}
.passenger-ui input,.passenger-ui select,.passenger-ui textarea,.passenger-ui button{font-size:16px}
@media(max-width:860px){.passenger-ui{font-size:15px}.passenger-ui h1{font-size:30px}.passenger-ui h2{font-size:24px}.passenger-ui p,.passenger-ui label{font-size:16px;line-height:1.6}.passenger-ui input,.passenger-ui select,.passenger-ui textarea,.passenger-ui button{font-size:16px}}
.lost-alert-modal .modal-card{border:4px solid #ef4444;background:#fff7f7}.lost-alert-title{color:#b91c1c;font-weight:1000;font-size:26px}.lost-status-pill{display:inline-block;border-radius:999px;padding:4px 10px;background:#fee2e2;color:#991b1b;font-weight:900}.lost-status-pill.done{background:#dcfce7;color:#166534}.survey-fill-card select{margin-bottom:10px}

/* Phase 5.48: passenger entry and family/guest cleanup */
.passenger-login-landing.passenger-entry-clean{text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:420px;padding-top:42px;padding-bottom:42px}
.passenger-entry-title-clean{width:100%}
.passenger-entry-title-clean h1{font-size:clamp(32px,7vw,54px);line-height:1.15;margin:18px 0 10px;text-align:center}
.passenger-entry-communities{font-size:clamp(18px,4.5vw,26px);font-weight:1000;color:#0f766e;line-height:1.5;margin:6px 0 12px;text-align:center}
.passenger-entry-actions-clean{width:100%;justify-content:center;margin-top:24px}
.passenger-entry-actions-clean .primary{min-width:220px;text-align:center;justify-content:center}
.login-bottom-back{justify-content:flex-start;margin-top:8px}
#familyTransferPoints.field-locked{background:#e5e7eb!important;color:#94a3b8!important;cursor:not-allowed!important;border-color:#cbd5e1!important}
.guest-pass-status{line-height:1.7}.guest-page .notice{line-height:1.8}.guest-page .big-actions{justify-content:flex-start}
@media(max-width:760px){.passenger-login-landing.passenger-entry-clean{min-height:360px}.passenger-entry-actions-clean .primary{width:100%;font-size:22px}.login-bottom-back .secondary{width:100%}.guest-page .big-actions .primary{width:100%;font-size:20px}}

/* Phase 5.49 route trip selector / extra bus */
.route-choice-box{border:1px solid #d8c7ff;border-radius:18px;padding:18px;margin:16px 0;background:#fbf8ff}
.route-choice-list{display:grid;gap:10px;margin-top:10px}
.route-choice-item{display:flex;gap:10px;align-items:flex-start;padding:12px 14px;border:1px solid #d7e3f2;border-radius:14px;background:#fff;line-height:1.5}
.route-choice-item input{width:20px;height:20px;margin-top:2px;accent-color:#0f8377}
.checkbox-inline.extra-trip-check{display:inline-flex;align-items:center;gap:10px;margin:14px 0;padding:12px 16px;border:1px solid #d7e3f2;border-radius:14px;background:#f6fbff;font-weight:800}
.checkbox-inline.extra-trip-check input{width:22px;height:22px;accent-color:#0f8377}
#saveRouteStopsBtn{margin-top:16px}

/* Phase 5.50 route selector and extra bus checkbox */
.route-choice-list{display:flex;flex-direction:column;gap:10px;margin:12px 0 18px;padding:10px;border:1px solid #dbeafe;border-radius:14px;background:#f8fbff}
.route-choice-item{display:flex;align-items:center;gap:8px;padding:10px 12px;border:1px solid #e5e7eb;border-radius:12px;background:#fff;cursor:pointer}
.route-choice-item input{width:18px;height:18px;accent-color:#0f766e}
.extra-bus-line{display:flex;align-items:center;gap:10px;margin:12px 0;font-weight:800;color:#0f172a}
.extra-bus-line input{width:20px;height:20px;accent-color:#0f766e}
/* Phase 5.59 PWA stage 1 */
.pwa-offline-card{text-align:center}.pwa-install-note{border:1px solid #99f6e4;background:#f0fdfa;border-radius:18px;padding:12px;margin:12px 0}.pwa-offline-badge{display:inline-flex;gap:6px;align-items:center;border-radius:999px;background:#fef3c7;color:#92400e;padding:6px 10px;font-weight:900}.passenger-ui.standalone-mode{padding-top:max(12px,env(safe-area-inset-top))}

.offline-operation-banner{border:2px solid #ef4444;background:#fef2f2;color:#b91c1c;border-radius:16px;padding:12px 16px;margin:0 0 14px;font-size:22px;font-weight:1000;text-align:center;box-shadow:0 8px 20px rgba(185,28,28,.12)}
.offline-operation-banner::before{content:"⚠️ ";}

/* Phase 5.66: operations admin community recharge QR cards */
.qr-admin-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:16px;margin-top:12px}
.qr-admin-card{border:1px solid rgba(15,118,110,.18);border-radius:16px;background:#fff;padding:14px;text-align:center;box-shadow:0 8px 24px rgba(15,23,42,.06)}
.qr-admin-card h4{margin:0 0 8px;font-size:18px;color:#0f766e}
.qr-admin-card img{width:180px;max-width:80%;background:#fff;border:1px solid #e5e7eb;border-radius:12px;padding:8px;margin:8px auto;display:block}
.qr-actions{display:flex;flex-direction:column;gap:8px;align-items:center;margin-top:8px}
.recharge-community-qr-panel .topbar{align-items:center}
.ok-text{color:#15803d!important;font-weight:700}


/* UI30: disable UI20-UI26 passenger-only experimental classes when old passenger.html is used. */
body.passenger-normal-legacy .passenger-ui .kpi#stats,
body.passenger-normal-legacy .passenger-ui .passenger-summary-card-ui26,
.passenger-summary-card-ui26{display:none!important}
body .passenger-ui .scan-step-card .qr-video{display:none!important}
body .passenger-ui .passenger-feature-page.hidden{display:none!important}
body .passenger-ui #featureContainer .passenger-feature-page:not(.hidden){display:block}


/* UI30 passenger true legacy spec: force the passenger side to follow the old V284 visual scale and one-page-per-feature behavior. */
body.passenger-v284-legacy-spec{
  --brand:#7c3aed;--brand-dark:#6d28d9;--accent:#a855f7;--accent2:#ff7a59;--line:#eadcff;--muted:#7b7194;--card:#fff;
  background:linear-gradient(180deg,#fff0f7 0%,#fbf5ff 48%,#fffaf3 100%)!important;
  color:#33234f!important;
  font-family:-apple-system,BlinkMacSystemFont,"Segoe UI","Noto Sans TC","Microsoft JhengHei",Arial,sans-serif!important;
  font-size:16px!important;line-height:1.55!important;
}
body.passenger-v284-legacy-spec main.passenger-ui{max-width:760px!important;margin:0 auto!important;padding:10px 10px 26px!important;}
body.passenger-v284-legacy-spec .card{background:#fff!important;border:1px solid #eadcff!important;border-radius:22px!important;box-shadow:0 10px 26px rgba(93,50,140,.08)!important;padding:18px!important;transform:none!important;}
body.passenger-v284-legacy-spec .card:hover{transform:none!important;box-shadow:0 10px 26px rgba(93,50,140,.08)!important;}
body.passenger-v284-legacy-spec .hero,
body.passenger-v284-legacy-spec .passenger-login-landing{background:#fff!important;border-top:7px solid transparent!important;background:linear-gradient(#fff,#fff) padding-box,linear-gradient(90deg,#ff7a59,#e93c93,#8b4dff) border-box!important;}
body.passenger-v284-legacy-spec h1,body.passenger-v284-legacy-spec h2,body.passenger-v284-legacy-spec h3{color:#3b246f!important;font-weight:1000!important;letter-spacing:-.02em!important;}
body.passenger-v284-legacy-spec .badge{background:linear-gradient(135deg,#ff7a59,#e93c93,#8b4dff)!important;color:#fff!important;border:0!important;border-radius:999px!important;padding:6px 12px!important;font-weight:950!important;}
body.passenger-v284-legacy-spec button.primary,
body.passenger-v284-legacy-spec .btn.primary,
body.passenger-v284-legacy-spec .primary{background:linear-gradient(135deg,#ff6b5f,#ec3d9a,#8b4dff)!important;color:#fff!important;border:0!important;box-shadow:0 12px 24px rgba(168,85,247,.18)!important;}
body.passenger-v284-legacy-spec button.secondary,
body.passenger-v284-legacy-spec .secondary{background:#f6f2ff!important;color:#6d28d9!important;border:1px solid #eadcff!important;box-shadow:none!important;}
body.passenger-v284-legacy-spec button:where(:not(#startCamera)){font-weight:950!important;min-height:50px!important;border-radius:16px!important;font-size:17px!important;padding:10px 14px!important;}
/* batch4a：第 2 步「上車掃碼」單顆放大 30%（17→22 / 10 14→13 18 / 50→65）；不動 .primary 全域 */
#scan #startCamera{font-weight:950;min-height:65px;border-radius:16px;font-size:22px;padding:13px 18px;}
body.passenger-v284-legacy-spec input,body.passenger-v284-legacy-spec select,body.passenger-v284-legacy-spec textarea{border:1px solid #e3d5ff!important;border-radius:14px!important;min-height:46px!important;padding:9px 11px!important;font-size:16px!important;color:#3b246f!important;background:#fff!important;}
body.passenger-v284-legacy-spec label{font-size:15px!important;color:#253047!important;font-weight:950!important;}
body.passenger-v284-legacy-spec .passenger-entry-title-clean h1{font-size:30px!important;line-height:1.16!important;margin:8px 0 4px!important;}
body.passenger-v284-legacy-spec .passenger-entry-subtitle{font-size:18px!important;line-height:1.4!important;color:#3b246f!important;font-weight:950!important;}
body.passenger-v284-legacy-spec .passenger-entry-communities{font-size:16px!important;color:#7b7194!important;font-weight:850!important;}
body.passenger-v284-legacy-spec .passenger-entry-actions-clean button{width:100%!important;min-height:54px!important;font-size:19px!important;}
body.passenger-v284-legacy-spec .passenger-login-form-card{max-width:640px!important;margin:8px auto 12px!important;}
body.passenger-v284-legacy-spec .password-field-wrap{display:grid!important;grid-template-columns:minmax(0,1fr) 82px!important;gap:8px!important;align-items:stretch!important;}
body.passenger-v284-legacy-spec .password-field-wrap button{min-width:0!important;width:auto!important;font-size:16px!important;padding:8px!important;}
body.passenger-v284-legacy-spec .remember-login-options{gap:8px!important;margin:10px 0 12px!important;}
body.passenger-v284-legacy-spec .remember-login-options label{font-size:16px!important;line-height:1.4!important;color:#3b246f!important;}
body.passenger-v284-legacy-spec #appCard{display:block;}
body.passenger-v284-legacy-spec #appCard.hidden{display:none!important;}
body.passenger-v284-legacy-spec .passenger-status-card{display:grid!important;grid-template-columns:minmax(0,1fr) auto!important;gap:10px!important;align-items:start!important;margin:0 0 10px!important;padding:16px 18px!important;background:#fff!important;border-top:7px solid transparent!important;background:linear-gradient(#fff,#fff) padding-box,linear-gradient(90deg,#ff7a59,#e93c93,#8b4dff) border-box!important;}
body.passenger-v284-legacy-spec .passenger-status-card h1{font-size:25px!important;line-height:1.18!important;margin:7px 0 6px!important;}
body.passenger-v284-legacy-spec #passengerSummary{font-size:16px!important;line-height:1.45!important;color:#7b7194!important;font-weight:850!important;margin:0 0 4px!important;}
body.passenger-v284-legacy-spec #passengerMeta{font-size:14.5px!important;line-height:1.35!important;color:#7b7194!important;margin:0!important;}
body.passenger-v284-legacy-spec .status-balance-box{min-width:auto!important;text-align:right!important;}
body.passenger-v284-legacy-spec .status-balance-box span,body.passenger-v284-legacy-spec .status-balance-box b{display:none!important;}
body.passenger-v284-legacy-spec .status-balance-box button{min-height:40px!important;font-size:15px!important;padding:8px 13px!important;white-space:nowrap!important;}
body.passenger-v284-legacy-spec .passenger-main-menu{padding:16px!important;border-radius:22px!important;margin-bottom:10px!important;background:#fff!important;border-top:7px solid transparent!important;background:linear-gradient(#fff,#fff) padding-box,linear-gradient(90deg,#ff7a59,#e93c93,#8b4dff) border-box!important;}
body.passenger-v284-legacy-spec .passenger-main-menu h2{font-size:25px!important;line-height:1.18!important;margin:0 0 8px!important;}
body.passenger-v284-legacy-spec .passenger-main-menu .hint{font-size:15.5px!important;line-height:1.52!important;color:#7b7194!important;margin:0!important;font-weight:800!important;}
body.passenger-v284-legacy-spec .passenger-main-menu .menu-grid{display:grid!important;grid-template-columns:1fr!important;gap:10px!important;margin-top:13px!important;}
body.passenger-v284-legacy-spec .passenger-category-main,
body.passenger-v284-legacy-spec .feature-tile{width:100%!important;min-height:54px!important;font-size:18px!important;line-height:1.22!important;border-radius:15px!important;padding:8px 12px!important;background:#f6f2ff!important;color:#6d28d9!important;border:1px solid #eadcff!important;text-align:center!important;display:flex!important;flex-direction:column!important;justify-content:center!important;align-items:center!important;}
body.passenger-v284-legacy-spec .passenger-category-main small,
body.passenger-v284-legacy-spec .feature-tile small{font-size:13px!important;line-height:1.25!important;margin-top:1px!important;color:#7b7194!important;font-weight:850!important;}
body.passenger-v284-legacy-spec .passenger-feature-page{border-top:7px solid transparent!important;background:linear-gradient(#fff,#fff) padding-box,linear-gradient(90deg,#ff7a59,#e93c93,#8b4dff) border-box!important;margin-bottom:10px!important;}
body.passenger-v284-legacy-spec .passenger-feature-page h2{font-size:25px!important;margin-bottom:12px!important;}
body.passenger-v284-legacy-spec .scan-step-card{background:#fff!important;border:1px solid #eadcff!important;border-radius:16px!important;padding:12px!important;margin:10px 0!important;}
body.passenger-v284-legacy-spec .scan-step-card h3{font-size:18px!important;color:#3b246f!important;margin:0 0 8px!important;}
body.passenger-v284-legacy-spec .notice{font-size:15px!important;line-height:1.48!important;padding:9px 11px!important;border-radius:14px!important;background:#f6f2ff!important;border:1px solid #eadcff!important;color:#3b246f!important;}
body.passenger-v284-legacy-spec .notice.warn{background:#fff7ed!important;border-color:#fed7aa!important;color:#9a3412!important;}
body.passenger-v284-legacy-spec .qr-video{display:none!important;}
body.passenger-v284-legacy-spec .qr-camera-modal{position:fixed!important;inset:0!important;z-index:10000!important;background:rgba(30,20,50,.58)!important;align-items:center!important;justify-content:center!important;padding:18px!important;}
body.passenger-v284-legacy-spec .qr-camera-modal:not(.hidden){display:flex!important;}
body.passenger-v284-legacy-spec .qr-camera-card{width:min(540px,96vw)!important;background:#fff!important;border-radius:24px!important;border:1px solid #eadcff!important;border-top:7px solid #a855f7!important;padding:18px!important;box-shadow:0 28px 70px rgba(59,36,111,.28)!important;}
body.passenger-v284-legacy-spec #qrModalVideo{display:block!important;width:100%!important;max-height:55vh!important;background:#111827!important;border-radius:18px!important;object-fit:cover!important;}
body.passenger-v284-legacy-spec .footer-note{font-size:0!important;}
body.passenger-v284-legacy-spec .footer-note::before{content:'NestJS 商轉新版 UI48｜後台Cookie範圍巡檢修正';font-size:12px!important;color:#9a8ab3!important;}
@media(max-width:760px){
  body.passenger-v284-legacy-spec main.passenger-ui{padding:8px 8px 18px!important;}
  body.passenger-v284-legacy-spec .card{padding:15px!important;border-radius:20px!important;}
  body.passenger-v284-legacy-spec .passenger-status-card{grid-template-columns:1fr!important;}
  body.passenger-v284-legacy-spec .status-balance-box{text-align:left!important;}
  body.passenger-v284-legacy-spec .status-balance-box button{width:100%!important;}
}

/* UI30: 遺失物通報依營運單位後台路線與班次下拉選單；手機一欄排列，避免舊 grid2 欄位重疊。 */
body.passenger-v284-legacy-spec #lostForm.lost-form,
#lostForm.lost-form{
  display:grid!important;
  grid-template-columns:1fr!important;
  gap:10px!important;
  align-items:stretch!important;
}
body.passenger-v284-legacy-spec #lostForm.lost-form label,
#lostForm.lost-form label{
  margin:4px 0 0!important;
  font-weight:900!important;
  color:#312e81!important;
}
body.passenger-v284-legacy-spec #lostForm.lost-form input,
body.passenger-v284-legacy-spec #lostForm.lost-form select,
body.passenger-v284-legacy-spec #lostForm.lost-form textarea,
#lostForm.lost-form input,
#lostForm.lost-form select,
#lostForm.lost-form textarea{
  width:100%!important;
  max-width:100%!important;
  box-sizing:border-box!important;
}
body.passenger-v284-legacy-spec #lostForm.lost-form button[type="submit"],
#lostForm.lost-form button[type="submit"]{
  width:fit-content!important;
  min-width:180px!important;
  margin-top:8px!important;
}


/* UI31 月票兌換舊版流程對齊 */
.passenger-ui .monthly-pass-status{font-size:18px;font-weight:800;line-height:1.75;margin:10px 0 12px;color:#2f205f;}
.passenger-ui .monthly-pass-alert{display:none;border:2px solid #f59e0b;background:#fffbeb;border-radius:18px;padding:14px;margin:14px 0;font-weight:800;color:#9a3412;line-height:1.65;}
.passenger-ui .monthly-pass-alert.show{display:block;}
.passenger-ui .monthly-pass-alert .big-actions{margin-top:10px;}
@media(max-width:640px){.passenger-ui .monthly-pass-status{font-size:17px}.passenger-ui .monthly-pass-alert{font-size:16px}}

/* UI37: 乘客端「儲值點數」「家庭帳號」表單版面整理。
   這兩頁只調整欄位排版，不改串接邏輯。 */
body.passenger-v284-legacy-spec .passenger-clean-form{
  display:grid!important;
  grid-template-columns:1fr!important;
  gap:12px!important;
  align-items:stretch!important;
  margin-top:12px!important;
}
body.passenger-v284-legacy-spec .passenger-clean-form .form-row{
  display:grid!important;
  grid-template-columns:1fr!important;
  gap:6px!important;
  width:100%!important;
  min-width:0!important;
}
body.passenger-v284-legacy-spec .passenger-clean-form label{
  display:block!important;
  width:auto!important;
  max-width:100%!important;
  margin:0!important;
  white-space:normal!important;
  line-height:1.35!important;
  color:#253047!important;
  font-size:15px!important;
  font-weight:950!important;
}
body.passenger-v284-legacy-spec .passenger-clean-form input,
body.passenger-v284-legacy-spec .passenger-clean-form select,
body.passenger-v284-legacy-spec .passenger-clean-form textarea{
  display:block!important;
  width:100%!important;
  max-width:100%!important;
  min-width:0!important;
  box-sizing:border-box!important;
  margin:0!important;
}
body.passenger-v284-legacy-spec .passenger-clean-form small{
  color:#7b7194!important;
  font-size:13px!important;
  line-height:1.4!important;
  font-weight:800!important;
}
body.passenger-v284-legacy-spec .passenger-clean-form .big-actions,
body.passenger-v284-legacy-spec .passenger-clean-form .form-submit-row{
  display:flex!important;
  flex-wrap:wrap!important;
  gap:10px!important;
  margin-top:2px!important;
}
body.passenger-v284-legacy-spec .passenger-clean-form .form-submit-row button{
  width:auto!important;
  min-width:170px!important;
}
body.passenger-v284-legacy-spec .recharge-rule-box{
  margin:0!important;
  text-align:left!important;
  font-size:15px!important;
  line-height:1.55!important;
}
body.passenger-v284-legacy-spec .recharge-status-text{
  margin:0!important;
  font-size:15px!important;
  line-height:1.45!important;
  text-align:left!important;
}
body.passenger-v284-legacy-spec #childForm,
body.passenger-v284-legacy-spec #rechargeForm{
  overflow:visible!important;
}
@media(max-width:760px){
  body.passenger-v284-legacy-spec .passenger-clean-form{gap:11px!important;}
  body.passenger-v284-legacy-spec .passenger-clean-form .form-submit-row button{width:auto!important;max-width:100%!important;}
}


/* UI37: 乘客端功能頁回上一頁修正。
   功能頁底部的「回上一頁」回到所屬分類頁，不再直接回到三大分類功能主頁。
   搭乘頁面回搭乘社巴分類，帳號頁回帳號管理，查詢頁回查詢說明。 */

/* UI38: 乘客端儲值金額欄位、預約/座位篩選列與逾時標示 */
body.passenger-v284-legacy-spec #recharge .recharge-amount-row input{
  min-height:54px!important;
  font-size:18px!important;
  font-weight:900!important;
}
body.passenger-v284-legacy-spec #recharge .recharge-amount-row small{
  display:block!important;
  margin-top:4px!important;
}
body.passenger-v284-legacy-spec .schedule-filter-card{
  border:1px solid #eadcff!important;
  background:#fbf8ff!important;
  border-radius:18px!important;
  padding:14px!important;
  margin:12px 0 16px!important;
}
body.passenger-v284-legacy-spec .schedule-filter-grid{
  display:grid!important;
  grid-template-columns:repeat(3,minmax(0,1fr))!important;
  gap:10px!important;
}
body.passenger-v284-legacy-spec .schedule-filter-grid label{
  display:grid!important;
  gap:6px!important;
  font-weight:950!important;
  color:#33235f!important;
}
body.passenger-v284-legacy-spec .schedule-filter-grid select{
  width:100%!important;
  min-height:48px!important;
}
body.passenger-v284-legacy-spec .status-red{
  color:#b91c1c!important;
  font-weight:1000!important;
}

body.passenger-v284-legacy-spec .status-muted{
  color:#64748b!important;
  font-weight:1000!important;
}
body.passenger-v284-legacy-spec .schedule-trip-card.neutral{
  border-color:#e9d5ff!important;
  background:#fff!important;
}
@media(max-width:760px){
  body.passenger-v284-legacy-spec .schedule-filter-grid{grid-template-columns:1fr!important;}
}

/* UI41: 預約服務與座位即時狀態隱藏已逾時班次；保留一班次一卡片 */
body.passenger-v284-legacy-spec .schedule-filter-title{
  font-weight:1000!important;
  color:#3f267b!important;
  font-size:20px!important;
  margin-bottom:10px!important;
}
body.passenger-v284-legacy-spec .schedule-result-list{
  display:grid!important;
  gap:16px!important;
  margin-top:16px!important;
}
body.passenger-v284-legacy-spec .schedule-trip-card{
  border:1px solid #eadcff!important;
  background:#fff!important;
  border-radius:22px!important;
  padding:18px!important;
  margin:0!important;
  box-shadow:0 10px 22px rgba(109,40,217,.06)!important;
}
body.passenger-v284-legacy-spec .schedule-trip-card + .schedule-trip-card{
  margin-top:0!important;
}
body.passenger-v284-legacy-spec .trip-card-head{
  display:flex!important;
  justify-content:space-between!important;
  align-items:flex-start!important;
  gap:10px!important;
  flex-wrap:wrap!important;
  margin-bottom:10px!important;
}
body.passenger-v284-legacy-spec .trip-card-head b{
  color:#33235f!important;
  font-size:22px!important;
  line-height:1.3!important;
}
body.passenger-v284-legacy-spec .trip-card-stats{
  display:grid!important;
  grid-template-columns:repeat(3,minmax(0,1fr))!important;
  gap:8px!important;
  margin:10px 0!important;
}
body.passenger-v284-legacy-spec .trip-card-stats p{
  margin:0!important;
  padding:10px!important;
  background:#fbf8ff!important;
  border:1px solid #efe2ff!important;
  border-radius:14px!important;
}
body.passenger-v284-legacy-spec .schedule-trip-card .form-row{
  margin-top:12px!important;
}
body.passenger-v284-legacy-spec .schedule-trip-card .big-actions{
  margin-top:12px!important;
}
body.passenger-v284-legacy-spec .schedule-empty{
  padding:14px!important;
  border:1px dashed #eadcff!important;
  border-radius:16px!important;
  background:#fff!important;
}
body.passenger-v284-legacy-spec .schedule-trip-card button[disabled],
body.passenger-v284-legacy-spec .schedule-trip-card select[disabled]{
  opacity:.55!important;
}
@media(max-width:760px){
  body.passenger-v284-legacy-spec .trip-card-stats{grid-template-columns:1fr!important;}
  body.passenger-v284-legacy-spec .trip-card-head b{font-size:21px!important;}
}

/* UI44 小新移除首頁快速問題按鈕：保留文字輸入查詢與導引，不直接送出扣點操作 */
body.passenger-v284-legacy-spec .xin-helper-card{
  margin-top:16px;
  padding:14px;
  border:1px solid #eadcff;
  border-radius:20px;
  background:linear-gradient(135deg,#fff7fb 0%,#ffffff 50%,#f7f1ff 100%);
  box-shadow:0 8px 20px rgba(139,77,255,.10);
}
body.passenger-v284-legacy-spec .xin-helper-head h3{font-size:22px!important;margin:6px 0 4px!important;color:#7c2d92!important;}
body.passenger-v284-legacy-spec .xin-helper-badge{background:#fff1f2!important;color:#be185d!important;border:1px solid #fbcfe8!important;}
body.passenger-v284-legacy-spec .xin-helper-input-row{display:grid;grid-template-columns:1fr auto;gap:8px;align-items:center;margin-top:8px;}
body.passenger-v284-legacy-spec .xin-helper-input-row input{height:44px!important;border-radius:14px!important;font-size:15px!important;}
body.passenger-v284-legacy-spec .xin-helper-input-row button{height:44px!important;min-height:44px!important;border-radius:14px!important;font-size:15px!important;white-space:nowrap;}
body.passenger-v284-legacy-spec .xin-helper-answer{margin-top:12px;border:1px solid #f5d0fe;background:#fff;border-radius:16px;padding:12px;font-size:15px;line-height:1.55;color:#4c1d95;}
body.passenger-v284-legacy-spec .xin-helper-answer.xin-error{border-color:#fecdd3;color:#9f1239;background:#fff1f2;}
body.passenger-v284-legacy-spec .xin-helper-answer p{margin:6px 0;}
body.passenger-v284-legacy-spec .xin-helper-answer ol{margin:8px 0 8px 20px;padding:0;}
body.passenger-v284-legacy-spec .xin-helper-answer li{margin:4px 0;}
body.passenger-v284-legacy-spec .xin-schedule-list{display:grid;gap:8px;margin-top:10px;}
body.passenger-v284-legacy-spec .xin-schedule-row{border:1px solid #e9d5ff;border-radius:14px;background:#faf5ff;padding:9px 10px;display:grid;gap:3px;}
body.passenger-v284-legacy-spec .xin-schedule-row b{color:#6b21a8;}
body.passenger-v284-legacy-spec .xin-schedule-row span{font-weight:900;color:#334155;}
body.passenger-v284-legacy-spec .xin-schedule-row small{color:#64748b;font-weight:800;}
body.passenger-v284-legacy-spec .xin-answer-actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px;}
body.passenger-v284-legacy-spec .xin-link-btn{min-height:36px!important;border-radius:12px!important;font-size:14px!important;}
@media(max-width:520px){
  body.passenger-v284-legacy-spec .xin-helper-input-row{grid-template-columns:1fr;}
}

/* UI52: 加班車卡片橘黃色提醒 */
body.passenger-v284-legacy-spec .schedule-trip-card.extra-trip-card{
  border-color:#facc15!important;
  background:linear-gradient(180deg,#fff7ed,#fff)!important;
}
body.passenger-v284-legacy-spec .extra-trip-notice{
  margin:8px 0 12px!important;
  padding:10px 12px!important;
  border:1px solid #f59e0b!important;
  background:#fef3c7!important;
  color:#92400e!important;
  border-radius:14px!important;
  font-weight:1000!important;
  line-height:1.45!important;
}

/* UI54 passkey prompt guard */
.service-plan-panel{border:1px solid #dbe7f3;border-radius:16px;padding:14px;margin:8px 0 14px;background:#f8fbff;}
.service-plan-title{font-weight:1000;margin-bottom:4px;color:#0f2a55;}
.plan-card-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:12px;margin-top:10px;}
.plan-choice-card{border:2px solid #dbe7f3;background:#fff;border-radius:16px;padding:14px;text-align:left;cursor:pointer;font:inherit;min-height:104px;}
.plan-choice-card strong{display:block;font-size:1.12rem;color:#0f2a55;margin-bottom:6px;}
.plan-choice-card span{display:block;color:#5b6b82;font-size:.95rem;line-height:1.45;}
.plan-choice-card.active{border-color:#157f72;background:#eafff9;box-shadow:0 8px 24px rgba(21,127,114,.14);}


/* UI55: 移除乘客端灰色副文字並放大功能按鍵 */
body.passenger-v284-legacy-spec #appCard .hint{display:none!important;}
body.passenger-v284-legacy-spec #appCard .menu-grid small{display:none!important;}
body.passenger-v284-legacy-spec #xinAssistantCard h3{display:none!important;}
body.passenger-v284-legacy-spec #appCard .passenger-category-main,
body.passenger-v284-legacy-spec #appCard .feature-tile{min-height:86px!important;font-size:24px!important;line-height:1.28!important;padding:18px 16px!important;justify-content:center!important;}
body.passenger-v284-legacy-spec #appCard .passenger-main-menu .menu-grid{gap:16px!important;}
body.passenger-v284-legacy-spec #appCard .trip-card-stats p{font-size:20px!important;line-height:1.45!important;}
@media(max-width:860px){
  body.passenger-v284-legacy-spec #appCard .passenger-category-main,
  body.passenger-v284-legacy-spec #appCard .feature-tile{min-height:80px!important;font-size:22px!important;line-height:1.26!important;padding:16px 14px!important;}
  body.passenger-v284-legacy-spec #appCard .trip-card-stats p{font-size:18px!important;}
}

/* UI56: AI 小新操作助理、月票與預約提醒 */
body.passenger-v284-legacy-spec .xin-smart-reminders{display:grid;gap:10px;margin:10px 0 12px;}
body.passenger-v284-legacy-spec .xin-reminder-card{border:1px solid #f5d0fe;background:linear-gradient(135deg,#fff7ed,#faf5ff);border-radius:16px;padding:12px;color:#4c1d95;font-weight:900;line-height:1.55;box-shadow:0 10px 22px rgba(124,58,237,.08);}
body.passenger-v284-legacy-spec .xin-reminder-card.urgent{border-color:#fecaca;background:linear-gradient(135deg,#fff1f2,#fff7ed);color:#9f1239;}
body.passenger-v284-legacy-spec .xin-reminder-title{font-size:17px;font-weight:1000;margin-bottom:4px;}
body.passenger-v284-legacy-spec .xin-reminder-actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px;}
body.passenger-v284-legacy-spec .xin-action-btn{min-height:38px!important;border-radius:12px!important;font-size:14px!important;padding:8px 12px!important;}
body.passenger-v284-legacy-spec .xin-note{display:block;margin:6px 0;color:#6b5f87;font-weight:850;line-height:1.55;}
body.passenger-v284-legacy-spec .xin-schedule-row.with-action{display:grid;gap:6px;}
body.passenger-v284-legacy-spec .xin-schedule-row .xin-action-btn{justify-self:start;}
@media(max-width:860px){
  body.passenger-v284-legacy-spec .xin-reminder-title{font-size:16px;}
  body.passenger-v284-legacy-spec .xin-action-btn{font-size:13px!important;}
}


/* UI58: 小新來源標示與自然對話按鈕 */
.xin-source-line{display:inline-block;margin:0 0 10px;padding:6px 10px;border-radius:999px;background:#f3e8ff;color:#6d28d9;font-size:13px;font-weight:900;line-height:1.25}
.xin-answer-actions .xin-action-btn{margin:4px 6px 4px 0}
body.passenger-v284-legacy-spec .xin-helper-answer p{line-height:1.65}

/* UI59: 功能按鍵保留短說明、首次說明小視窗、AI 改為右下角預留浮動模組 */
body.passenger-v284-legacy-spec #appCard .menu-grid small{
  display:block!important;
  margin-top:8px!important;
  font-size:15px!important;
  line-height:1.35!important;
  color:#7b7194!important;
  font-weight:850!important;
}
body.passenger-v284-legacy-spec #appCard .passenger-category-main,
body.passenger-v284-legacy-spec #appCard .feature-tile{
  min-height:100px!important;
  gap:4px!important;
}
.feature-intro-content{font-size:18px;line-height:1.7;color:#3b2575;font-weight:850;margin:8px 0 18px;white-space:pre-line}
.feature-intro-note{font-size:14px;color:#7b7194;font-weight:800;margin-top:8px}
.help-topic-list{display:grid;gap:12px;margin-top:12px}.help-topic-button{width:100%;text-align:left!important;justify-content:flex-start!important;align-items:flex-start!important;min-height:78px!important}.help-topic-button b{display:block;font-size:22px;color:#6d28d9}.help-topic-button small{display:block!important;font-size:15px!important;color:#7b7194!important;margin-top:6px!important}.help-topic-detail{border:1px solid #eadcff;background:#fff;border-radius:18px;padding:18px;margin-top:14px}.help-topic-detail h3{margin-top:0;color:#3b2575}.help-topic-detail .help-steps{font-size:18px;line-height:1.75;color:#3b2575;font-weight:850;white-space:pre-line}.help-topic-detail .help-actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:16px}.xin-floating-wrap{position:fixed;right:18px;bottom:calc(18px + env(safe-area-inset-bottom));z-index:9998}.xin-floating-btn{border:0;border-radius:999px;background:linear-gradient(135deg,#fb5a66,#9333ea);color:#fff;font-weight:1000;font-size:18px;padding:16px 18px;box-shadow:0 18px 38px rgba(109,40,217,.28);cursor:pointer}.xin-floating-panel{position:absolute;right:0;bottom:72px;width:min(420px,92vw);max-height:72vh;overflow:auto}.xin-floating-panel .xin-helper-card{margin:0;background:#fff}.xin-helper-head{display:flex;justify-content:space-between;gap:10px;align-items:center}.xin-floating-close{font-size:14px!important;min-height:auto!important;padding:8px 12px!important}.xin-reserved-note{font-size:13px;color:#7b7194;font-weight:850;margin-top:8px}.hidden{display:none!important}@media(max-width:860px){.xin-floating-wrap{right:14px;bottom:calc(14px + env(safe-area-inset-bottom))}.xin-floating-panel{width:calc(100vw - 28px);max-height:74vh}.xin-floating-btn{font-size:17px;padding:14px 16px}body.passenger-v284-legacy-spec #appCard .menu-grid small{font-size:14px!important}}


/* UI63: 時間下拉對應選定日期與路線的後台班次 */
.route-empty-reason{border-color:#ead8ff!important;background:#fff!important;}
.route-empty-reason b{display:block;color:#3b2365;font-size:22px;margin-bottom:10px;}
.route-empty-reason p{font-size:20px;line-height:1.6;color:#594879;margin:0;}

/* UI64: 預約篩選固定顯示、移除載入按鈕，預約狀態改為卡片/彈窗 */
body.passenger-v284-legacy-spec #reservationOptions.reservation-options-fixed{
  margin-top:14px!important;
}
body.passenger-v284-legacy-spec .reservation-status-modal-card{
  max-width:560px!important;
}
body.passenger-v284-legacy-spec .reservation-status-card-list{
  display:grid!important;
  gap:14px!important;
  margin-top:12px!important;
}
body.passenger-v284-legacy-spec .reservation-status-card{
  border:1px solid #eadcff!important;
  border-radius:22px!important;
  background:#fff!important;
  padding:18px!important;
  box-shadow:0 10px 22px rgba(109,40,217,.06)!important;
}
body.passenger-v284-legacy-spec .reservation-status-success,
body.passenger-v284-legacy-spec .reservation-status-active{
  border-color:#bbf7d0!important;
  background:linear-gradient(180deg,#f0fdf4,#fff)!important;
}
body.passenger-v284-legacy-spec .reservation-status-closed{
  border-color:#fecaca!important;
  background:linear-gradient(180deg,#fff1f2,#fff)!important;
}
body.passenger-v284-legacy-spec .reservation-status-done{
  border-color:#dbeafe!important;
  background:linear-gradient(180deg,#eff6ff,#fff)!important;
}
body.passenger-v284-legacy-spec .reservation-status-sub{
  margin:4px 0 0!important;
  color:#6b5f8a!important;
  font-weight:900!important;
}
body.passenger-v284-legacy-spec .reservation-status-grid{
  display:grid!important;
  grid-template-columns:repeat(3,minmax(0,1fr))!important;
  gap:8px!important;
  margin:12px 0!important;
}
body.passenger-v284-legacy-spec .reservation-status-grid p{
  margin:0!important;
  padding:10px!important;
  border:1px solid #efe2ff!important;
  border-radius:14px!important;
  background:#fbf8ff!important;
}
body.passenger-v284-legacy-spec .reservation-status-grid b,
body.passenger-v284-legacy-spec .reservation-status-grid span{
  display:block!important;
}
body.passenger-v284-legacy-spec .reservation-status-grid b{
  color:#33235f!important;
  font-size:14px!important;
  margin-bottom:4px!important;
}
body.passenger-v284-legacy-spec .reservation-status-grid span{
  color:#4c1d95!important;
  font-weight:1000!important;
  line-height:1.35!important;
}
body.passenger-v284-legacy-spec .reservation-card-actions,
body.passenger-v284-legacy-spec .reservation-status-modal-actions{
  display:flex!important;
  flex-wrap:wrap!important;
  gap:8px!important;
}
@media(max-width:760px){
  body.passenger-v284-legacy-spec .reservation-status-grid{grid-template-columns:1fr!important;}
}


/* UI66：乘客端藍白圖卡式介面。
   只改乘客端視覺，不改掃碼、預約、座位狀態、儲值等既有 API/扣點邏輯。 */
body.passenger-ui66-beauty{
  --ui66-blue:#0b5ed7;
  --ui66-blue2:#1d7ff2;
  --ui66-ink:#0f1f46;
  --ui66-muted:#667085;
  --ui66-card:#ffffff;
  --ui66-soft:#f3f8ff;
  --ui66-green:#108a48;
  background:
    radial-gradient(circle at 20% 0%,rgba(29,127,242,.18),transparent 32%),
    linear-gradient(180deg,#f7fbff 0%,#eef6ff 55%,#f8fbff 100%)!important;
  color:var(--ui66-ink)!important;
}
body.passenger-ui66-beauty .container.passenger-ui{max-width:520px!important;margin:0 auto!important;padding:12px 12px 90px!important;}
body.passenger-ui66-beauty .card{border:1px solid rgba(17,93,214,.09)!important;box-shadow:0 14px 34px rgba(15,73,132,.10)!important;background:rgba(255,255,255,.96)!important;}
body.passenger-ui66-beauty .passenger-entry-clean{overflow:hidden!important;position:relative!important;padding:28px 20px 24px!important;border-radius:30px!important;background:linear-gradient(160deg,#fff 0%,#eaf5ff 100%)!important;}
body.passenger-ui66-beauty .passenger-entry-clean:before{content:'🚌';display:grid;place-items:center;width:86px;height:86px;margin:0 auto 14px;border-radius:28px;background:linear-gradient(135deg,#0b5ed7,#37a0ff);box-shadow:0 18px 34px rgba(11,94,215,.24);font-size:48px;}
body.passenger-ui66-beauty .passenger-entry-clean h1{color:var(--ui66-blue)!important;font-size:30px!important;font-weight:1000!important;letter-spacing:.02em!important;}
body.passenger-ui66-beauty .passenger-entry-subtitle,body.passenger-ui66-beauty .passenger-entry-communities{color:#41516f!important;font-weight:800!important;}
body.passenger-ui66-beauty .primary,body.passenger-ui66-beauty button.primary{background:linear-gradient(135deg,#0b5ed7,#1d7ff2)!important;border:0!important;color:#fff!important;border-radius:18px!important;box-shadow:0 10px 20px rgba(11,94,215,.22)!important;font-weight:950!important;}
body.passenger-ui66-beauty .secondary,body.passenger-ui66-beauty button.secondary{border:1px solid rgba(11,94,215,.14)!important;background:#fff!important;color:#183b73!important;font-weight:900!important;}
body.passenger-ui66-beauty .ui66-status-card{display:grid!important;grid-template-columns:minmax(0,1fr) auto!important;gap:12px!important;align-items:center!important;padding:18px!important;border-radius:28px!important;background:linear-gradient(135deg,#ffffff 0%,#eef7ff 100%)!important;margin-bottom:12px!important;}
body.passenger-ui66-beauty .ui66-brand-head{display:flex;gap:12px;align-items:center;min-width:0;}
body.passenger-ui66-beauty .ui66-bus-logo{width:58px;height:58px;border-radius:18px;display:grid;place-items:center;background:linear-gradient(135deg,#0b5ed7,#45a3ff);color:#fff;font-size:34px;box-shadow:0 12px 26px rgba(11,94,215,.22);flex:0 0 auto;}
body.passenger-ui66-beauty .ui66-status-card .badge{background:#e9f3ff!important;color:#0759c7!important;border:0!important;font-weight:950!important;}
body.passenger-ui66-beauty .ui66-status-card h1{font-size:26px!important;line-height:1.1!important;color:var(--ui66-blue)!important;margin:4px 0!important;font-weight:1000!important;}
body.passenger-ui66-beauty #passengerSummary,body.passenger-ui66-beauty #passengerMeta{color:#3e4e68!important;font-size:14.5px!important;line-height:1.45!important;}
body.passenger-ui66-beauty .ui66-balance-pill{min-width:116px;padding:10px;border-radius:20px;background:#fff;border:1px solid rgba(11,94,215,.10);text-align:center;box-shadow:0 10px 22px rgba(11,94,215,.08);}
body.passenger-ui66-beauty .ui66-balance-pill span{font-size:12px;color:#667085;font-weight:900;display:block;}
body.passenger-ui66-beauty .ui66-balance-pill b{font-size:20px;color:#0b5ed7;display:block;line-height:1.1;margin:3px 0 8px;}
body.passenger-ui66-beauty .ui66-balance-pill button{min-height:44px!important;border-radius:12px!important;font-size:14px!important;padding:8px 10px!important;width:100%;}
body.passenger-ui66-beauty .ui66-welcome-card{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:14px;align-items:center;padding:18px;margin:0 0 16px;border-radius:26px;background:linear-gradient(135deg,#e8f5ff,#ffffff 56%,#eaf7ff);border:1px solid rgba(11,94,215,.10);box-shadow:inset 0 0 0 1px rgba(255,255,255,.8);}
body.passenger-ui66-beauty .ui66-mini-badge{display:inline-block;padding:6px 10px;border-radius:999px;background:#e8f1ff;color:#0b5ed7;font-size:12px;font-weight:950;}
body.passenger-ui66-beauty .ui66-welcome-card h2{font-size:23px!important;color:#0b3c92!important;margin:9px 0 8px!important;line-height:1.2!important;font-weight:1000!important;}
body.passenger-ui66-beauty .ui66-welcome-card p{margin:0;color:#41516f;font-weight:800;line-height:1.55;}
body.passenger-ui66-beauty .ui66-welcome-illust{width:76px;height:76px;border-radius:26px;background:#fff;display:grid;place-items:center;font-size:33px;box-shadow:0 16px 30px rgba(11,94,215,.12);}
body.passenger-ui66-beauty .passenger-main-menu{border-radius:28px!important;padding:16px!important;background:#fff!important;}
body.passenger-ui66-beauty .passenger-main-menu>h2{position:relative;padding-left:13px;color:#0b3c92!important;font-size:25px!important;font-weight:1000!important;}
body.passenger-ui66-beauty .passenger-main-menu>h2:before{content:'';position:absolute;left:0;top:.2em;width:5px;height:1.05em;border-radius:10px;background:#0b5ed7;}
body.passenger-ui66-beauty .passenger-main-menu>.hint{display:none!important;}
body.passenger-ui66-beauty .menu-grid{display:grid!important;grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:12px!important;margin-top:14px!important;}
body.passenger-ui66-beauty .passenger-category-grid{grid-template-columns:1fr!important;}
body.passenger-ui66-beauty .ui66-tile{min-height:118px!important;border-radius:24px!important;padding:16px 12px!important;text-align:center!important;display:flex!important;flex-direction:column!important;align-items:center!important;justify-content:center!important;gap:7px!important;background:#fff!important;border:1px solid rgba(11,94,215,.10)!important;box-shadow:0 12px 24px rgba(15,73,132,.09)!important;transition:transform .15s ease,box-shadow .15s ease!important;}
body.passenger-ui66-beauty .passenger-category-grid .ui66-tile{min-height:96px!important;display:grid!important;grid-template-columns:64px minmax(0,1fr)!important;text-align:left!important;align-items:center!important;justify-items:start!important;column-gap:13px!important;}
body.passenger-ui66-beauty .ui66-tile:active{transform:scale(.985);box-shadow:0 8px 18px rgba(15,73,132,.10)!important;}
body.passenger-ui66-beauty .ui66-tile-icon{width:54px;height:54px;border-radius:19px;display:grid;place-items:center;background:linear-gradient(135deg,#0b5ed7,#39a3ff);color:#fff;font-size:27px;font-weight:1000;box-shadow:0 10px 20px rgba(11,94,215,.20);}
body.passenger-ui66-beauty .ui66-tile b{font-size:20px!important;line-height:1.16!important;color:#172033!important;font-weight:1000!important;}
body.passenger-ui66-beauty .ui66-tile small{font-size:13px!important;line-height:1.35!important;color:#667085!important;font-weight:850!important;}
body.passenger-ui66-beauty .passenger-feature-page{border-radius:28px!important;padding:16px!important;}
body.passenger-ui66-beauty .passenger-feature-page h2{font-size:26px!important;color:#0b3c92!important;font-weight:1000!important;margin-bottom:12px!important;}
body.passenger-ui66-beauty .notice,body.passenger-ui66-beauty .scan-step-card,body.passenger-ui66-beauty .monthly-pass-info{border-radius:22px!important;background:#f8fbff!important;border:1px solid rgba(11,94,215,.10)!important;}
body.passenger-ui66-beauty .reservation-card,body.passenger-ui66-beauty .seat-balance-card,body.passenger-ui66-beauty .schedule-option-card{border-radius:20px!important;box-shadow:0 10px 22px rgba(15,73,132,.08)!important;}
body.passenger-ui66-beauty .ui66-bottom-nav{position:fixed;left:50%;bottom:10px;transform:translateX(-50%);z-index:1400;width:min(520px,calc(100vw - 20px));display:grid;grid-template-columns:repeat(5,1fr);gap:3px;padding:8px;border-radius:24px;background:rgba(255,255,255,.94);border:1px solid rgba(11,94,215,.12);box-shadow:0 18px 42px rgba(11,38,92,.20);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);}
body.passenger-ui66-beauty .ui66-bottom-nav button{border:0;background:transparent;min-height:50px;border-radius:18px;color:#526070;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;font-weight:950;padding:4px;}
body.passenger-ui66-beauty .ui66-bottom-nav button span{font-size:22px;line-height:1;}
body.passenger-ui66-beauty .ui66-bottom-nav button b{font-size:12px;line-height:1.1;}
body.passenger-ui66-beauty .ui66-bottom-nav button.active{background:#e8f2ff;color:#0b5ed7;}
body.passenger-ui66-beauty .xin-floating-wrap{bottom:92px!important;}
@media(max-width:420px){
 body.passenger-ui66-beauty .container.passenger-ui{padding:10px 9px 88px!important;}
 body.passenger-ui66-beauty .ui66-status-card{grid-template-columns:1fr!important;}
 body.passenger-ui66-beauty .ui66-balance-pill{display:grid;grid-template-columns:1fr 1fr auto;gap:8px;align-items:center;text-align:left;min-width:0;}
 body.passenger-ui66-beauty .ui66-balance-pill b{margin:0;}
 body.passenger-ui66-beauty .ui66-balance-pill button{width:auto;}
 body.passenger-ui66-beauty .ui66-welcome-card{grid-template-columns:1fr;}
 body.passenger-ui66-beauty .ui66-welcome-illust{display:none;}
 body.passenger-ui66-beauty .menu-grid{grid-template-columns:1fr!important;}
 body.passenger-ui66-beauty .ui66-tile{min-height:94px!important;display:grid!important;grid-template-columns:58px minmax(0,1fr)!important;text-align:left!important;align-items:center!important;justify-items:start!important;}
 body.passenger-ui66-beauty .ui66-tile small{grid-column:2;}
}

/* UI67: 置頂摘要卡移除帳號與月票效期文字，只保留樣板式抬頭。 */
body.passenger-ui66-beauty #passengerMeta{display:none!important;}
.passenger-status-card .ui66-brand-text{gap:6px;}

/* UI68: 每個功能鍵改為直角犀利科技風，不再使用圓角圖卡。 */
body.passenger-ui66-beauty .ui66-tile{border-radius:2px!important;background:linear-gradient(180deg,#ffffff 0%,#f5faff 100%)!important;border:1px solid rgba(11,94,215,.24)!important;box-shadow:0 0 0 1px rgba(11,94,215,.06),0 14px 28px rgba(8,37,94,.10)!important;position:relative;overflow:hidden;}
body.passenger-ui66-beauty .ui66-tile::before{content:"";position:absolute;inset:0;border:1px solid rgba(120,190,255,.32);pointer-events:none;}
body.passenger-ui66-beauty .ui66-tile:active{transform:translateY(1px)!important;box-shadow:0 0 0 1px rgba(11,94,215,.10),0 8px 16px rgba(8,37,94,.12)!important;}
body.passenger-ui66-beauty .ui66-tile-icon{border-radius:2px!important;background:linear-gradient(135deg,#083b9a,#1e88ff)!important;box-shadow:0 0 0 1px rgba(255,255,255,.15) inset,0 10px 18px rgba(11,94,215,.18)!important;}
body.passenger-ui66-beauty .passenger-category-grid .ui66-tile{border-left:4px solid #0b5ed7!important;}
body.passenger-ui66-beauty .ui66-bottom-nav{border-radius:8px!important;}
body.passenger-ui66-beauty .ui66-bottom-nav button{border-radius:2px!important;}

/* UI69: 依功能類型重新調整每個功能鍵大小，讓視覺更平衡。 */
body.passenger-ui66-beauty .passenger-category-grid .ui66-tile{min-height:104px!important;grid-template-columns:58px minmax(0,1fr)!important;column-gap:12px!important;padding:14px 14px!important;}
body.passenger-ui66-beauty .passenger-category-grid .ui66-tile b{font-size:23px!important;line-height:1.12!important;}
body.passenger-ui66-beauty .passenger-category-grid .ui66-tile small{font-size:13.5px!important;line-height:1.28!important;margin-top:2px!important;}
body.passenger-ui66-beauty .passenger-category-grid .ui66-tile-icon{width:46px!important;height:46px!important;font-size:23px!important;}
body.passenger-ui66-beauty .menu-grid .feature-tile.ui66-tile{min-height:92px!important;grid-template-columns:50px minmax(0,1fr)!important;column-gap:12px!important;padding:13px 14px!important;}
body.passenger-ui66-beauty .menu-grid .feature-tile.ui66-tile b{font-size:21px!important;line-height:1.12!important;}
body.passenger-ui66-beauty .menu-grid .feature-tile.ui66-tile small{font-size:12.5px!important;line-height:1.28!important;margin-top:2px!important;}
body.passenger-ui66-beauty .menu-grid .feature-tile.ui66-tile .ui66-tile-icon{width:42px!important;height:42px!important;font-size:21px!important;}
@media(max-width:860px){
  body.passenger-ui66-beauty .passenger-category-grid .ui66-tile{min-height:96px!important;grid-template-columns:54px minmax(0,1fr)!important;padding:13px 12px!important;}
  body.passenger-ui66-beauty .passenger-category-grid .ui66-tile b{font-size:21px!important;}
  body.passenger-ui66-beauty .passenger-category-grid .ui66-tile small{font-size:13px!important;}
  body.passenger-ui66-beauty .passenger-category-grid .ui66-tile-icon{width:42px!important;height:42px!important;font-size:21px!important;}
  body.passenger-ui66-beauty .menu-grid .feature-tile.ui66-tile{min-height:84px!important;grid-template-columns:46px minmax(0,1fr)!important;padding:12px 12px!important;}
  body.passenger-ui66-beauty .menu-grid .feature-tile.ui66-tile b{font-size:19px!important;}
  body.passenger-ui66-beauty .menu-grid .feature-tile.ui66-tile small{font-size:12px!important;}
  body.passenger-ui66-beauty .menu-grid .feature-tile.ui66-tile .ui66-tile-icon{width:38px!important;height:38px!important;font-size:19px!important;}
}

/* UI70: 功能鍵縮成像 APP 中間四格那種小型卡片樣式，保留科技風。 */
body.passenger-ui66-beauty .passenger-category-grid,
body.passenger-ui66-beauty .menu-grid{grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:12px!important;}
body.passenger-ui66-beauty .passenger-category-grid .ui66-tile,
body.passenger-ui66-beauty .menu-grid .feature-tile.ui66-tile{min-height:122px!important;display:flex!important;flex-direction:column!important;align-items:center!important;justify-content:center!important;text-align:center!important;grid-template-columns:none!important;column-gap:0!important;padding:14px 10px!important;border-left-width:1px!important;}
body.passenger-ui66-beauty .passenger-category-grid .ui66-tile .ui66-tile-icon,
body.passenger-ui66-beauty .menu-grid .feature-tile.ui66-tile .ui66-tile-icon{width:48px!important;height:48px!important;font-size:22px!important;margin-bottom:6px!important;}
body.passenger-ui66-beauty .passenger-category-grid .ui66-tile b,
body.passenger-ui66-beauty .menu-grid .feature-tile.ui66-tile b{font-size:18px!important;line-height:1.18!important;text-align:center!important;}
body.passenger-ui66-beauty .passenger-category-grid .ui66-tile small,
body.passenger-ui66-beauty .menu-grid .feature-tile.ui66-tile small{font-size:11.5px!important;line-height:1.3!important;margin-top:4px!important;text-align:center!important;color:#5f6f85!important;}
@media(min-width:768px){
  body.passenger-ui66-beauty .passenger-category-grid,
  body.passenger-ui66-beauty .menu-grid{grid-template-columns:repeat(4,minmax(0,1fr))!important;}
  body.passenger-ui66-beauty .passenger-category-grid .ui66-tile,
  body.passenger-ui66-beauty .menu-grid .feature-tile.ui66-tile{min-height:126px!important;}
}
@media(max-width:420px){
  body.passenger-ui66-beauty .passenger-category-grid,
  body.passenger-ui66-beauty .menu-grid{grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:10px!important;}
  body.passenger-ui66-beauty .passenger-category-grid .ui66-tile,
  body.passenger-ui66-beauty .menu-grid .feature-tile.ui66-tile{min-height:112px!important;padding:12px 8px!important;}
  body.passenger-ui66-beauty .passenger-category-grid .ui66-tile .ui66-tile-icon,
  body.passenger-ui66-beauty .menu-grid .feature-tile.ui66-tile .ui66-tile-icon{width:42px!important;height:42px!important;font-size:19px!important;margin-bottom:5px!important;}
  body.passenger-ui66-beauty .passenger-category-grid .ui66-tile b,
  body.passenger-ui66-beauty .menu-grid .feature-tile.ui66-tile b{font-size:16px!important;}
  body.passenger-ui66-beauty .passenger-category-grid .ui66-tile small,
  body.passenger-ui66-beauty .menu-grid .feature-tile.ui66-tile small{font-size:10.5px!important;}
}

/* UI71: 依使用者手繪標示修正首頁：置頂資訊上下置中、歡迎卡左右滿版、小型 APP 功能鍵。 */
body.passenger-ui66-beauty #appCard>.ui66-status-card{
  min-height:178px!important;
  padding:20px 18px!important;
  display:grid!important;
  grid-template-columns:minmax(0,1fr) auto!important;
  align-items:center!important;
  justify-content:center!important;
}
body.passenger-ui66-beauty #appCard>.ui66-status-card .ui66-brand-head{
  min-height:118px!important;
  display:flex!important;
  align-items:center!important;
  justify-content:flex-start!important;
  gap:14px!important;
}
body.passenger-ui66-beauty #appCard>.ui66-status-card .ui66-bus-logo{
  width:60px!important;
  height:60px!important;
  font-size:30px!important;
  flex:0 0 60px!important;
}
body.passenger-ui66-beauty #appCard>.ui66-status-card .ui66-brand-text{
  display:flex!important;
  flex-direction:column!important;
  justify-content:center!important;
  gap:4px!important;
}
body.passenger-ui66-beauty #appCard>.ui66-status-card .ui66-brand-text .badge{
  align-self:flex-start!important;
  font-size:14px!important;
  padding:6px 14px!important;
  margin:0!important;
}
body.passenger-ui66-beauty #appCard>.ui66-status-card h1{
  font-size:30px!important;
  line-height:1.08!important;
  margin:0!important;
}
body.passenger-ui66-beauty #appCard>.ui66-status-card #passengerSummary{
  font-size:15.5px!important;
  line-height:1.25!important;
  margin:0!important;
  white-space:nowrap!important;
}
body.passenger-ui66-beauty #appCard>.ui66-status-card .ui66-balance-pill{
  align-self:start!important;
  margin-top:0!important;
}
body.passenger-ui66-beauty #passengerHome{
  padding-left:12px!important;
  padding-right:12px!important;
}
body.passenger-ui66-beauty #passengerHome .ui66-welcome-card{
  width:100%!important;
  margin:0 0 16px!important;
  padding:18px 16px!important;
  border-radius:18px!important;
  box-sizing:border-box!important;
}
body.passenger-ui66-beauty #passengerHome .ui66-welcome-card h2{
  font-size:27px!important;
  line-height:1.16!important;
}
body.passenger-ui66-beauty #passengerHome .ui66-welcome-card p{
  font-size:17px!important;
  line-height:1.55!important;
}
body.passenger-ui66-beauty #appCard .passenger-main-menu .menu-grid,
body.passenger-ui66-beauty #appCard .passenger-category-grid{
  display:grid!important;
  grid-template-columns:repeat(2,minmax(0,1fr))!important;
  gap:10px!important;
}
body.passenger-ui66-beauty #appCard .passenger-main-menu .menu-grid>button.ui66-tile,
body.passenger-ui66-beauty #appCard .passenger-category-grid>button.ui66-tile,
body.passenger-ui66-beauty #appCard .menu-grid>button.feature-tile.ui66-tile{
  width:100%!important;
  min-height:104px!important;
  display:flex!important;
  flex-direction:column!important;
  align-items:center!important;
  justify-content:center!important;
  text-align:center!important;
  padding:10px 8px!important;
  gap:4px!important;
  grid-template-columns:none!important;
  border-left-width:1px!important;
}
body.passenger-ui66-beauty #appCard .ui66-tile .ui66-tile-icon{
  width:42px!important;
  height:42px!important;
  font-size:20px!important;
  margin:0 0 4px!important;
}
body.passenger-ui66-beauty #appCard .ui66-tile b{
  font-size:16.5px!important;
  line-height:1.15!important;
  text-align:center!important;
}
body.passenger-ui66-beauty #appCard .ui66-tile small{
  font-size:10.8px!important;
  line-height:1.25!important;
  margin-top:2px!important;
  text-align:center!important;
  grid-column:auto!important;
}
@media(max-width:420px){
  body.passenger-ui66-beauty #appCard>.ui66-status-card{min-height:170px!important;padding:18px 14px!important;}
  body.passenger-ui66-beauty #appCard>.ui66-status-card .ui66-brand-head{min-height:110px!important;gap:12px!important;}
  body.passenger-ui66-beauty #appCard>.ui66-status-card .ui66-bus-logo{width:54px!important;height:54px!important;font-size:27px!important;flex-basis:54px!important;}
  body.passenger-ui66-beauty #appCard>.ui66-status-card h1{font-size:28px!important;}
  body.passenger-ui66-beauty #appCard>.ui66-status-card #passengerSummary{font-size:14.5px!important;white-space:normal!important;}
  body.passenger-ui66-beauty #passengerHome .ui66-welcome-card{padding:17px 14px!important;border-radius:16px!important;}
  body.passenger-ui66-beauty #passengerHome .ui66-welcome-card h2{font-size:25px!important;}
  body.passenger-ui66-beauty #passengerHome .ui66-welcome-card p{font-size:16px!important;}
  body.passenger-ui66-beauty #appCard .passenger-main-menu .menu-grid>button.ui66-tile,
  body.passenger-ui66-beauty #appCard .passenger-category-grid>button.ui66-tile,
  body.passenger-ui66-beauty #appCard .menu-grid>button.feature-tile.ui66-tile{min-height:98px!important;padding:9px 7px!important;}
  body.passenger-ui66-beauty #appCard .ui66-tile .ui66-tile-icon{width:39px!important;height:39px!important;font-size:18px!important;}
  body.passenger-ui66-beauty #appCard .ui66-tile b{font-size:15.5px!important;}
  body.passenger-ui66-beauty #appCard .ui66-tile small{font-size:10px!important;}
}

/* UI72: 首頁左右幾乎滿版，置頂卡片上下再壓縮，減少留白。 */
body.passenger-ui66-beauty .container.passenger-ui{max-width:100%!important;margin:0!important;padding:6px 4px 92px!important;}
body.passenger-ui66-beauty #appCard{margin:0!important;padding:0!important;}
body.passenger-ui66-beauty #appCard>.card,
body.passenger-ui66-beauty #appCard>.passenger-main-menu{margin-left:0!important;margin-right:0!important;}
body.passenger-ui66-beauty #appCard>.ui66-status-card{min-height:146px!important;padding:14px 12px!important;border-radius:var(--radius)!important;margin-bottom:10px!important;}
body.passenger-ui66-beauty #appCard>.ui66-status-card .ui66-brand-head{min-height:84px!important;gap:12px!important;align-items:center!important;}
body.passenger-ui66-beauty #appCard>.ui66-status-card .ui66-bus-logo{width:56px!important;height:56px!important;font-size:28px!important;flex:0 0 56px!important;}
body.passenger-ui66-beauty #appCard>.ui66-status-card .ui66-brand-text{gap:2px!important;}
body.passenger-ui66-beauty #appCard>.ui66-status-card .ui66-brand-text .badge{font-size:13px!important;padding:5px 12px!important;}
body.passenger-ui66-beauty #appCard>.ui66-status-card h1{font-size:28px!important;line-height:1.04!important;}
body.passenger-ui66-beauty #appCard>.ui66-status-card #passengerSummary{font-size:14px!important;line-height:1.2!important;}
body.passenger-ui66-beauty #appCard>.ui66-status-card .ui66-balance-pill{padding:4px!important;border-radius:18px!important;}
body.passenger-ui66-beauty #passengerHome{padding-left:0!important;padding-right:0!important;}
body.passenger-ui66-beauty #passengerHome .ui66-welcome-card{margin:0 0 12px!important;padding:16px 14px!important;border-radius:16px!important;}
body.passenger-ui66-beauty .passenger-main-menu{padding:12px 10px!important;border-radius:18px!important;}
body.passenger-ui66-beauty .passenger-main-menu>h2{margin-left:2px!important;}
@media(max-width:420px){
  body.passenger-ui66-beauty .container.passenger-ui{padding:4px 2px 92px!important;}
  body.passenger-ui66-beauty #appCard>.ui66-status-card{min-height:132px!important;padding:12px 10px!important;border-radius:var(--radius)!important;}
  body.passenger-ui66-beauty #appCard>.ui66-status-card .ui66-brand-head{min-height:76px!important;gap:10px!important;}
  body.passenger-ui66-beauty #appCard>.ui66-status-card .ui66-bus-logo{width:50px!important;height:50px!important;font-size:24px!important;flex-basis:50px!important;}
  body.passenger-ui66-beauty #appCard>.ui66-status-card .ui66-brand-text .badge{font-size:12px!important;padding:4px 10px!important;}
  body.passenger-ui66-beauty #appCard>.ui66-status-card h1{font-size:25px!important;}
  body.passenger-ui66-beauty #appCard>.ui66-status-card #passengerSummary{font-size:13.2px!important;line-height:1.18!important;}
  body.passenger-ui66-beauty #appCard>.ui66-status-card .ui66-balance-pill{padding:4px!important;}
  body.passenger-ui66-beauty #passengerHome .ui66-welcome-card{padding:14px 12px!important;border-radius:14px!important;}
  body.passenger-ui66-beauty .passenger-main-menu{padding:10px 8px!important;border-radius:16px!important;}
}

/* UI73: 卡片全部改直角、首頁更滿版、功能鍵移除灰字並改回圓角。
   batch4b：#appCard>.ui66-status-card 移出直角名單（業主指定頂部白底改圓角 var(--radius)，全寬出血維持）。 */
body.passenger-ui66-beauty .container.passenger-ui{max-width:100%!important;margin:0!important;padding:4px 0 92px!important;}
body.passenger-ui66-beauty #appCard{margin:0!important;padding:0!important;}
body.passenger-ui66-beauty #passengerHome .ui66-welcome-card,
body.passenger-ui66-beauty .passenger-main-menu,
body.passenger-ui66-beauty .passenger-feature-page,
body.passenger-ui66-beauty .notice,
body.passenger-ui66-beauty .scan-step-card,
body.passenger-ui66-beauty .monthly-pass-info,
body.passenger-ui66-beauty .reservation-card,
body.passenger-ui66-beauty .seat-balance-card,
body.passenger-ui66-beauty .schedule-option-card,
body.passenger-ui66-beauty .ui66-bottom-nav{border-radius:0!important;}
body.passenger-ui66-beauty #appCard>.ui66-status-card,
body.passenger-ui66-beauty #passengerHome .ui66-welcome-card,
body.passenger-ui66-beauty .passenger-main-menu{margin-left:0!important;margin-right:0!important;width:100%!important;box-sizing:border-box!important;}
body.passenger-ui66-beauty #appCard>.ui66-status-card{padding:10px 10px!important;min-height:112px!important;}
body.passenger-ui66-beauty #appCard>.ui66-status-card .ui66-brand-head{min-height:56px!important;}
body.passenger-ui66-beauty #passengerHome{padding-left:0!important;padding-right:0!important;}
body.passenger-ui66-beauty #passengerHome .ui66-welcome-card{padding:14px 12px!important;margin:0 0 10px!important;}
body.passenger-ui66-beauty .passenger-main-menu{padding:10px 0!important;}
body.passenger-ui66-beauty #appCard .passenger-main-menu .menu-grid,
body.passenger-ui66-beauty #appCard .passenger-category-grid{padding-left:0!important;padding-right:0!important;}
body.passenger-ui66-beauty #appCard .passenger-main-menu .menu-grid>button.ui66-tile,
body.passenger-ui66-beauty #appCard .passenger-category-grid>button.ui66-tile,
body.passenger-ui66-beauty #appCard .menu-grid>button.feature-tile.ui66-tile{border-radius:18px!important;min-height:96px!important;}
body.passenger-ui66-beauty #appCard .ui66-tile .ui66-tile-icon{border-radius:12px!important;}
body.passenger-ui66-beauty #appCard .ui66-tile small{display:none!important;}
body.passenger-ui66-beauty #appCard .ui66-tile b{margin-top:4px!important;}
@media(max-width:420px){
  body.passenger-ui66-beauty .container.passenger-ui{padding:2px 0 92px!important;}
  body.passenger-ui66-beauty #appCard>.ui66-status-card{padding:7px 8px!important;min-height:104px!important;}
  body.passenger-ui66-beauty #appCard>.ui66-status-card .ui66-brand-head{min-height:52px!important;gap:8px!important;}
  body.passenger-ui66-beauty #passengerHome .ui66-welcome-card{padding:12px 10px!important;}
  body.passenger-ui66-beauty .passenger-main-menu{padding:8px 0!important;}
  body.passenger-ui66-beauty #appCard .passenger-main-menu .menu-grid>button.ui66-tile,
  body.passenger-ui66-beauty #appCard .passenger-category-grid>button.ui66-tile,
  body.passenger-ui66-beauty #appCard .menu-grid>button.feature-tile.ui66-tile{min-height:90px!important;border-radius:16px!important;}
}

/* UI74: 修正登入頁與首頁右側留白，並在首頁第二排加入「功能說明」按鍵。 */
body.passenger-ui66-beauty .container.passenger-ui{width:100%!important;max-width:none!important;margin:0!important;padding:2px 0 92px!important;}
body.passenger-ui66-beauty #passengerLoginLanding,
body.passenger-ui66-beauty #loginCard{width:100%!important;max-width:none!important;margin:0 0 10px!important;box-sizing:border-box!important;}
body.passenger-ui66-beauty #passengerLoginLanding.card,
body.passenger-ui66-beauty #loginCard.card{padding-left:12px!important;padding-right:12px!important;}
body.passenger-ui66-beauty #loginCard .topbar,
body.passenger-ui66-beauty #loginCard form{width:100%!important;max-width:none!important;}
body.passenger-ui66-beauty #appCard,
body.passenger-ui66-beauty #passengerHome,
body.passenger-ui66-beauty .passenger-main-menu,
body.passenger-ui66-beauty #passengerCategoryPage{width:100%!important;max-width:none!important;}
body.passenger-ui66-beauty #appCard .passenger-main-menu .menu-grid.passenger-category-grid{display:grid!important;grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:10px!important;}
body.passenger-ui66-beauty #appCard .passenger-main-menu .menu-grid.passenger-category-grid>button.ui66-tile{min-height:92px!important;}
@media(max-width:420px){
  body.passenger-ui66-beauty .container.passenger-ui{padding:0 0 92px!important;}
  body.passenger-ui66-beauty #passengerLoginLanding.card,
  body.passenger-ui66-beauty #loginCard.card{padding-left:10px!important;padding-right:10px!important;}
}

/* UI75: 功能鍵改成 APP 圖示風格，小圖示在上、文字在圖示下方，不包在卡片裡。 */
body.passenger-ui66-beauty #appCard .passenger-main-menu .menu-grid.passenger-category-grid,
body.passenger-ui66-beauty #passengerCategoryPage .menu-grid{display:grid!important;grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:18px 10px!important;justify-items:center!important;padding:2px 0 4px!important;}
body.passenger-ui66-beauty #appCard .passenger-main-menu .menu-grid>button.ui66-tile,
body.passenger-ui66-beauty #passengerCategoryPage .menu-grid>button.ui66-tile,
body.passenger-ui66-beauty #passengerCategoryPage .menu-grid>button.feature-tile.ui66-tile{background:transparent!important;border:0!important;box-shadow:none!important;border-radius:0!important;min-height:auto!important;padding:4px 2px 2px!important;display:flex!important;flex-direction:column!important;align-items:center!important;justify-content:flex-start!important;gap:8px!important;width:100%!important;text-align:center!important;}
body.passenger-ui66-beauty #appCard .ui66-tile .ui66-tile-icon,
body.passenger-ui66-beauty #passengerCategoryPage .ui66-tile .ui66-tile-icon{width:66px!important;height:66px!important;border-radius:18px!important;background:linear-gradient(135deg,#2e6fe9,#4aa3ff)!important;box-shadow:0 10px 22px rgba(46,111,233,.22)!important;display:grid!important;place-items:center!important;font-size:30px!important;margin:0 auto!important;flex:0 0 66px!important;}
body.passenger-ui66-beauty #appCard .ui66-tile b,
body.passenger-ui66-beauty #passengerCategoryPage .ui66-tile b{display:block!important;font-size:16px!important;line-height:1.22!important;text-align:center!important;color:#14213d!important;font-weight:1000!important;margin:0 auto!important;max-width:92%!important;}
body.passenger-ui66-beauty #appCard .ui66-tile small,
body.passenger-ui66-beauty #passengerCategoryPage .ui66-tile small{display:none!important;}
body.passenger-ui66-beauty #appCard .ui66-tile:hover,
body.passenger-ui66-beauty #passengerCategoryPage .ui66-tile:hover{transform:none!important;filter:none!important;}
body.passenger-ui66-beauty #appCard .ui66-tile:active .ui66-tile-icon,
body.passenger-ui66-beauty #passengerCategoryPage .ui66-tile:active .ui66-tile-icon{transform:scale(.97)!important;}
@media(min-width:768px){
  body.passenger-ui66-beauty #appCard .passenger-main-menu .menu-grid.passenger-category-grid,
  body.passenger-ui66-beauty #passengerCategoryPage .menu-grid{grid-template-columns:repeat(4,minmax(0,1fr))!important;}
}
@media(max-width:420px){
  body.passenger-ui66-beauty #appCard .passenger-main-menu .menu-grid.passenger-category-grid,
  body.passenger-ui66-beauty #passengerCategoryPage .menu-grid{gap:16px 6px!important;}
  body.passenger-ui66-beauty #appCard .ui66-tile .ui66-tile-icon,
  body.passenger-ui66-beauty #passengerCategoryPage .ui66-tile .ui66-tile-icon{width:60px!important;height:60px!important;font-size:27px!important;border-radius:16px!important;}
  body.passenger-ui66-beauty #appCard .ui66-tile b,
  body.passenger-ui66-beauty #passengerCategoryPage .ui66-tile b{font-size:15px!important;max-width:96%!important;}
}

/* UI76: 首頁四個功能鍵改成像 APP 一樣同一排排列。 */
body.passenger-ui66-beauty #appCard .passenger-main-menu .menu-grid.passenger-category-grid{grid-template-columns:repeat(4,minmax(0,1fr))!important;gap:10px 4px!important;justify-items:center!important;align-items:start!important;padding:4px 0 2px!important;}
body.passenger-ui66-beauty #appCard .passenger-main-menu .menu-grid.passenger-category-grid>button.ui66-tile{padding:2px 0!important;gap:6px!important;min-width:0!important;}
body.passenger-ui66-beauty #appCard .passenger-main-menu .ui66-tile .ui66-tile-icon{width:54px!important;height:54px!important;flex-basis:54px!important;border-radius:16px!important;font-size:24px!important;box-shadow:0 8px 18px rgba(46,111,233,.18)!important;}
body.passenger-ui66-beauty #appCard .passenger-main-menu .ui66-tile b{font-size:12.5px!important;line-height:1.18!important;max-width:100%!important;word-break:keep-all!important;letter-spacing:-.01em!important;}
body.passenger-ui66-beauty #appCard .passenger-main-menu>h2{margin-bottom:10px!important;}
@media(max-width:420px){
  body.passenger-ui66-beauty #appCard .passenger-main-menu .menu-grid.passenger-category-grid{gap:8px 2px!important;}
  body.passenger-ui66-beauty #appCard .passenger-main-menu .ui66-tile .ui66-tile-icon{width:50px!important;height:50px!important;flex-basis:50px!important;font-size:22px!important;border-radius:14px!important;}
  body.passenger-ui66-beauty #appCard .passenger-main-menu .ui66-tile b{font-size:12px!important;line-height:1.16!important;}
}

/* UI77: 登入提示改為第二個彈跳視窗，並修正登入頁版面歪斜。 */
body.passenger-ui66-beauty #loginCard{overflow:hidden!important;}
body.passenger-ui66-beauty #loginCard .topbar{display:block!important;width:100%!important;margin:0 0 14px!important;padding:0!important;background:transparent!important;border:0!important;box-shadow:none!important;}
body.passenger-ui66-beauty #loginCard .topbar .hint{display:none!important;}
body.passenger-ui66-beauty #loginForm{display:grid!important;grid-template-columns:1fr!important;gap:10px!important;width:100%!important;max-width:none!important;box-sizing:border-box!important;}
body.passenger-ui66-beauty #loginForm label{display:block!important;width:100%!important;margin:0!important;line-height:1.35!important;}
body.passenger-ui66-beauty #loginForm input{display:block!important;width:100%!important;max-width:none!important;box-sizing:border-box!important;margin:0!important;}
body.passenger-ui66-beauty #loginAccount{grid-column:1/-1!important;}
body.passenger-ui66-beauty #loginForm .password-field-wrap{display:grid!important;grid-template-columns:minmax(0,1fr) 92px!important;gap:8px!important;width:100%!important;max-width:none!important;align-items:stretch!important;}
body.passenger-ui66-beauty #loginForm .remember-login-options{display:grid!important;grid-template-columns:1fr!important;gap:10px!important;width:100%!important;}
body.passenger-ui66-beauty #loginForm .big-actions{display:flex!important;flex-wrap:wrap!important;gap:8px!important;width:100%!important;}
body.passenger-ui66-beauty #loginForm .big-actions .primary,
body.passenger-ui66-beauty #loginForm .big-actions .secondary{flex:1 1 auto!important;}
body.passenger-ui66-beauty .passenger-login-guide-modal-card h2{color:#3b246f!important;font-size:26px!important;}
body.passenger-ui66-beauty .passenger-login-guide-content p{font-size:18px!important;line-height:1.7!important;color:#4d4269!important;font-weight:900!important;}
@media(max-width:420px){
  body.passenger-ui66-beauty #loginCard.card{padding-left:12px!important;padding-right:12px!important;}
  body.passenger-ui66-beauty #loginForm .password-field-wrap{grid-template-columns:minmax(0,1fr) 82px!important;}
  body.passenger-ui66-beauty #loginForm .big-actions .primary,
  body.passenger-ui66-beauty #loginForm .big-actions .secondary{flex:1 1 100%!important;}
}

/* UI78: 修正登入頁 checkbox 被通用 input 寬度撐爆造成版面歪斜。 */
body.passenger-ui66-beauty #loginCard{overflow:visible!important;}
body.passenger-ui66-beauty #loginForm .remember-login-options{display:grid!important;grid-template-columns:1fr!important;gap:12px!important;margin:12px 0 14px!important;padding:0!important;overflow:visible!important;}
body.passenger-ui66-beauty #loginForm .remember-login-options label{display:flex!important;flex-direction:row!important;align-items:center!important;justify-content:flex-start!important;gap:12px!important;width:100%!important;max-width:100%!important;box-sizing:border-box!important;margin:0!important;padding:0!important;line-height:1.35!important;color:#3b246f!important;white-space:normal!important;}
body.passenger-ui66-beauty #loginForm .remember-login-options input[type="checkbox"]{appearance:auto!important;-webkit-appearance:auto!important;display:block!important;width:28px!important;min-width:28px!important;max-width:28px!important;height:28px!important;min-height:28px!important;margin:0!important;padding:0!important;transform:none!important;flex:0 0 28px!important;box-sizing:border-box!important;}
body.passenger-ui66-beauty #loginForm input[type="checkbox"]{width:28px!important;max-width:28px!important;}
body.passenger-ui66-beauty #loginForm .big-actions{margin-top:2px!important;}
@media(max-width:420px){
  body.passenger-ui66-beauty #loginForm .remember-login-options label{font-size:17px!important;gap:10px!important;}
  body.passenger-ui66-beauty #loginForm .remember-login-options input[type="checkbox"]{width:26px!important;min-width:26px!important;max-width:26px!important;height:26px!important;min-height:26px!important;flex-basis:26px!important;}
}

/* UI79: 將歡迎卡片放到帳號密碼登入欄位上方，並調整登入頁版面。 */
body.passenger-ui66-beauty #loginCard .login-welcome-card{display:grid!important;grid-template-columns:minmax(0,1fr) auto!important;gap:14px!important;align-items:center!important;padding:16px 14px!important;margin:0 0 16px!important;border-radius:18px!important;background:linear-gradient(135deg,#e8f5ff,#ffffff 56%,#eaf7ff)!important;border:1px solid rgba(11,94,215,.10)!important;box-shadow:inset 0 0 0 1px rgba(255,255,255,.8)!important;}
body.passenger-ui66-beauty #loginCard .login-welcome-card h2{font-size:22px!important;color:#0b3c92!important;margin:6px 0 8px!important;line-height:1.18!important;font-weight:1000!important;}
body.passenger-ui66-beauty #loginCard .login-welcome-card p{margin:0!important;color:#41516f!important;font-weight:800!important;line-height:1.55!important;font-size:15px!important;}
body.passenger-ui66-beauty #loginCard .login-welcome-card .ui66-mini-badge{display:inline-block!important;padding:8px 14px!important;border-radius:999px!important;background:#eef4ff!important;color:#3567d6!important;font-weight:900!important;margin-bottom:4px!important;}
body.passenger-ui66-beauty #loginCard .login-welcome-card .ui66-welcome-illust{display:grid!important;place-items:center!important;min-width:112px!important;min-height:112px!important;border-radius:28px!important;background:rgba(255,255,255,.86)!important;font-size:52px!important;box-shadow:inset 0 0 0 1px rgba(11,94,215,.06)!important;}
body.passenger-ui66-beauty #loginCard form{margin-top:0!important;}
@media(max-width:680px){
  body.passenger-ui66-beauty #loginCard .login-welcome-card{grid-template-columns:1fr!important;padding:14px 12px!important;}
  body.passenger-ui66-beauty #loginCard .login-welcome-card .ui66-welcome-illust{min-width:96px!important;min-height:96px!important;font-size:44px!important;justify-self:end!important;}
  body.passenger-ui66-beauty #loginCard .login-welcome-card h2{font-size:20px!important;}
  body.passenger-ui66-beauty #loginCard .login-welcome-card p{font-size:14px!important;}
}

/* UI80: 修正 UI79 未插入登入頁歡迎卡；卡片確實放在帳號/密碼欄位上方。 */
body.passenger-ui66-beauty #loginCard .login-welcome-card{display:grid!important;grid-template-columns:minmax(0,1fr) auto!important;gap:14px!important;align-items:center!important;padding:16px 14px!important;margin:0 0 16px!important;border-radius:18px!important;background:linear-gradient(135deg,#e8f5ff,#ffffff 56%,#eaf7ff)!important;border:1px solid rgba(11,94,215,.10)!important;box-shadow:inset 0 0 0 1px rgba(255,255,255,.8)!important;}
body.passenger-ui66-beauty #loginCard .login-welcome-card h2{font-size:22px!important;color:#0b3c92!important;margin:6px 0 8px!important;line-height:1.18!important;font-weight:1000!important;}
body.passenger-ui66-beauty #loginCard .login-welcome-card p{margin:0!important;color:#41516f!important;font-weight:800!important;line-height:1.55!important;font-size:15px!important;}
body.passenger-ui66-beauty #loginCard .login-welcome-card .ui66-mini-badge{display:inline-block!important;padding:8px 14px!important;border-radius:999px!important;background:#eef4ff!important;color:#3567d6!important;font-weight:900!important;margin-bottom:4px!important;}
body.passenger-ui66-beauty #loginCard .login-welcome-card .ui66-welcome-illust{display:grid!important;place-items:center!important;min-width:112px!important;min-height:112px!important;border-radius:28px!important;background:rgba(255,255,255,.86)!important;font-size:52px!important;box-shadow:inset 0 0 0 1px rgba(11,94,215,.06)!important;}
@media(max-width:680px){
  body.passenger-ui66-beauty #loginCard .login-welcome-card{grid-template-columns:minmax(0,1fr) auto!important;padding:13px 12px!important;gap:10px!important;}
  body.passenger-ui66-beauty #loginCard .login-welcome-card .ui66-welcome-illust{min-width:70px!important;min-height:70px!important;font-size:34px!important;border-radius:20px!important;}
  body.passenger-ui66-beauty #loginCard .login-welcome-card h2{font-size:20px!important;}
  body.passenger-ui66-beauty #loginCard .login-welcome-card p{font-size:14px!important;line-height:1.45!important;}
}

/* UI81: 登入頁歡迎卡片改成參考樣式的圖案版。 */
body.passenger-ui66-beauty #loginCard .login-welcome-card{grid-template-columns:minmax(0,1fr) 240px!important;align-items:stretch!important;overflow:hidden!important;}
body.passenger-ui66-beauty #loginCard .login-welcome-card .login-welcome-photo{display:block!important;min-width:240px!important;min-height:170px!important;padding:0!important;background:transparent!important;box-shadow:none!important;border-radius:26px!important;overflow:hidden!important;}
body.passenger-ui66-beauty #loginCard .login-welcome-card .login-welcome-photo img{display:block!important;width:100%!important;height:100%!important;object-fit:cover!important;object-position:center!important;}
body.passenger-ui66-beauty #loginCard .login-welcome-card h2{font-size:24px!important;line-height:1.22!important;}
body.passenger-ui66-beauty #loginCard .login-welcome-card p{font-size:16px!important;max-width:95%!important;}
@media(max-width:680px){
  body.passenger-ui66-beauty #loginCard .login-welcome-card{grid-template-columns:minmax(0,1fr) 160px!important;gap:10px!important;}
  body.passenger-ui66-beauty #loginCard .login-welcome-card .login-welcome-photo{min-width:160px!important;min-height:128px!important;border-radius:22px!important;}
  body.passenger-ui66-beauty #loginCard .login-welcome-card h2{font-size:21px!important;}
  body.passenger-ui66-beauty #loginCard .login-welcome-card p{font-size:14px!important;line-height:1.48!important;}
}
@media(max-width:430px){
  body.passenger-ui66-beauty #loginCard .login-welcome-card{grid-template-columns:1fr!important;}
  body.passenger-ui66-beauty #loginCard .login-welcome-card .login-welcome-photo{min-width:100%!important;min-height:156px!important;order:2!important;}
}

/* UI82: 修正登入歡迎圖案外溢，改用獨立插圖，不再放整張手機截圖。 */
body.passenger-ui66-beauty #loginCard{overflow:hidden!important;}
body.passenger-ui66-beauty #loginCard .login-welcome-card{grid-template-columns:minmax(0,1fr) 190px!important;align-items:center!important;overflow:hidden!important;position:relative!important;}
body.passenger-ui66-beauty #loginCard .login-welcome-card .login-welcome-photo{display:block!important;width:190px!important;min-width:190px!important;height:150px!important;min-height:150px!important;max-width:190px!important;max-height:150px!important;border-radius:24px!important;overflow:hidden!important;background:#eaf7ff!important;box-shadow:0 16px 30px rgba(11,94,215,.10)!important;justify-self:end!important;}
body.passenger-ui66-beauty #loginCard .login-welcome-card .login-welcome-photo img{display:block!important;width:100%!important;height:100%!important;max-width:100%!important;max-height:100%!important;object-fit:cover!important;object-position:center!important;}
@media(max-width:680px){
  body.passenger-ui66-beauty #loginCard .login-welcome-card{grid-template-columns:minmax(0,1fr) 112px!important;gap:8px!important;padding:13px 12px!important;}
  body.passenger-ui66-beauty #loginCard .login-welcome-card .login-welcome-photo{width:112px!important;min-width:112px!important;height:104px!important;min-height:104px!important;max-width:112px!important;max-height:104px!important;border-radius:20px!important;}
}
@media(max-width:430px){
  body.passenger-ui66-beauty #loginCard .login-welcome-card{grid-template-columns:minmax(0,1fr) 96px!important;}
  body.passenger-ui66-beauty #loginCard .login-welcome-card .login-welcome-photo{width:96px!important;min-width:96px!important;height:92px!important;min-height:92px!important;max-width:96px!important;max-height:92px!important;border-radius:18px!important;}
  body.passenger-ui66-beauty #loginCard .login-welcome-card h2{font-size:19px!important;line-height:1.2!important;}
  body.passenger-ui66-beauty #loginCard .login-welcome-card p{font-size:13.5px!important;line-height:1.42!important;}
}

/* UI83: 登入歡迎圖改成內嵌 SVG，不再依賴外部圖片檔，避免顯示問號破圖。 */
body.passenger-ui66-beauty #loginCard .login-welcome-card{grid-template-columns:minmax(0,1fr) 210px!important;align-items:center!important;overflow:hidden!important;}
body.passenger-ui66-beauty #loginCard .login-welcome-card .login-inline-illustration{display:block!important;width:210px!important;min-width:210px!important;height:148px!important;min-height:148px!important;max-width:210px!important;max-height:148px!important;border-radius:24px!important;overflow:hidden!important;background:#eaf7ff!important;box-shadow:0 16px 30px rgba(11,94,215,.10)!important;justify-self:end!important;padding:0!important;}
body.passenger-ui66-beauty #loginCard .login-welcome-card .login-inline-illustration svg{display:block!important;width:100%!important;height:100%!important;max-width:100%!important;max-height:100%!important;}
body.passenger-ui66-beauty #loginCard .login-welcome-card .login-inline-illustration img{display:none!important;}
@media(max-width:680px){
  body.passenger-ui66-beauty #loginCard .login-welcome-card{grid-template-columns:minmax(0,1fr) 118px!important;gap:8px!important;padding:13px 12px!important;}
  body.passenger-ui66-beauty #loginCard .login-welcome-card .login-inline-illustration{width:118px!important;min-width:118px!important;height:104px!important;min-height:104px!important;max-width:118px!important;max-height:104px!important;border-radius:20px!important;}
}
@media(max-width:390px){
  body.passenger-ui66-beauty #loginCard .login-welcome-card{grid-template-columns:minmax(0,1fr) 100px!important;}
  body.passenger-ui66-beauty #loginCard .login-welcome-card .login-inline-illustration{width:100px!important;min-width:100px!important;height:92px!important;min-height:92px!important;max-width:100px!important;max-height:92px!important;border-radius:18px!important;}
  body.passenger-ui66-beauty #loginCard .login-welcome-card h2{font-size:19px!important;line-height:1.2!important;}
  body.passenger-ui66-beauty #loginCard .login-welcome-card p{font-size:13.5px!important;line-height:1.42!important;}
}

/* UI84: 登入歡迎卡片改成整張滿版背景圖，移除上方小標籤。 */
body.passenger-ui66-beauty #loginCard .login-welcome-card.login-full-card-art{
  display:block!important;
  padding:0!important;
  margin:0 0 18px!important;
  border-radius:22px!important;
  overflow:hidden!important;
  border:1px solid rgba(11,94,215,.10)!important;
  box-shadow:inset 0 0 0 1px rgba(255,255,255,.85)!important;
  background:#eef7ff!important;
}
body.passenger-ui66-beauty #loginCard .login-welcome-card.login-full-card-art img{
  display:block!important;
  width:100%!important;
  height:auto!important;
  aspect-ratio:831/441;
  object-fit:cover!important;
  object-position:center!important;
}
@media(max-width:680px){
  body.passenger-ui66-beauty #loginCard .login-welcome-card.login-full-card-art{margin:0 0 16px!important;border-radius:20px!important;}
}

/* UI85: 乘客端入口移除公車圖示與「乘客端入口」標籤，改放協會 LOGO。 */
body.passenger-ui66-beauty .passenger-entry-clean:before{display:none!important;content:none!important;}
body.passenger-ui66-beauty .passenger-entry-title-clean>.badge{display:none!important;}
body.passenger-ui66-beauty .passenger-entry-association-logo{display:block!important;width:116px!important;height:116px!important;object-fit:contain!important;margin:0 auto 18px!important;border-radius:28px!important;box-shadow:0 16px 34px rgba(11,94,215,.18)!important;background:rgba(255,255,255,.78)!important;padding:8px!important;}
body.passenger-ui66-beauty .passenger-entry-clean h1{margin-top:0!important;}
@media(max-width:680px){
  body.passenger-ui66-beauty .passenger-entry-association-logo{width:98px!important;height:98px!important;margin-bottom:14px!important;border-radius:24px!important;padding:7px!important;}
}

/* UI86: 入口頁協會 LOGO 縮小，徹底移除原巴士圖示。 */
body.passenger-ui66-beauty .passenger-entry-clean:before,
body.passenger-ui66-beauty .passenger-login-landing.passenger-entry-clean:before,
body.passenger-ui66-beauty .passenger-entry-clean::before{
  display:none!important;
  content:none!important;
  width:0!important;
  height:0!important;
  margin:0!important;
  padding:0!important;
  box-shadow:none!important;
  background:none!important;
  font-size:0!important;
}
body.passenger-ui66-beauty .passenger-entry-association-logo{
  display:block!important;
  width:100px!important;
  height:100px!important;
  max-width:100px!important;
  max-height:100px!important;
  object-fit:contain!important;
  margin:0 auto 14px!important;
  border-radius:24px!important;
  box-shadow:0 10px 24px rgba(11,94,215,.14)!important;
  background:rgba(255,255,255,.84)!important;
  padding:6px!important;
}
body.passenger-ui66-beauty .passenger-entry-title-clean h1{margin-top:0!important;}

/* Closed-beta: server-resolved passenger entry shown only inside passenger tabs. */
.passenger-entry-admin-card{border-top:5px solid var(--brand);}
.passenger-entry-admin-grid{align-items:center;}
.passenger-entry-admin-card code{display:inline-block;max-width:100%;overflow-wrap:anywhere;margin-top:8px;padding:8px 10px;}
.passenger-entry-qr{min-height:220px;display:grid;place-items:center;color:var(--muted);font-weight:850;}
.passenger-entry-qr img{display:block;width:min(320px,78vw);height:auto;aspect-ratio:1;background:#fff;border:1px solid var(--line);border-radius:18px;padding:14px;box-shadow:var(--shadow-soft);}
@media(max-width:760px){.passenger-entry-admin-grid{grid-template-columns:1fr!important}.passenger-entry-qr{min-height:0}}
.qr-card-media{margin:10px 0;display:grid;place-items:center;min-height:220px}
.qr-card-image{display:block;width:min(260px,76vw);height:auto;aspect-ratio:1;background:#fff;border-radius:16px;padding:12px;box-shadow:0 10px 24px rgba(15,23,42,.12)}
.qr-card-image-large{width:min(320px,86vw);padding:14px}
@media(max-width:760px){
  body.passenger-ui66-beauty .passenger-entry-association-logo{
    width:92px!important;
    height:92px!important;
    max-width:92px!important;
    max-height:92px!important;
    margin-bottom:12px!important;
    border-radius:22px!important;
    padding:5px!important;
  }
}

/* UI87: 移除入口頁協會 LOGO 白底。 */
body.passenger-ui66-beauty .passenger-entry-association-logo{
  background:transparent!important;
  box-shadow:none!important;
  padding:0!important;
  border-radius:0!important;
}


/* UI88: 班次查詢頁，參考 APP 班次表 UI，底部路線查詢更名為班次查詢。 */
body.passenger-ui66-beauty.ui88-schedule-active #appCard>.ui66-status-card{display:none!important;}
body.passenger-ui66-beauty .ui88-schedule-page{padding:0!important;border:0!important;box-shadow:none!important;background:#f8fbff!important;border-radius:0!important;margin:0!important;}
body.passenger-ui66-beauty .ui88-schedule-page .passenger-page-bottom-back{display:none!important;}
.ui88-schedule-shell{background:#f8fbff;color:#08132b;padding:8px 12px 92px;min-height:calc(100vh - 20px);font-family:inherit;}
.ui88-schedule-head{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:4px 2px 10px;border-bottom:1px solid rgba(15,23,42,.08);}
.ui88-back,.ui88-bell{border:0!important;background:transparent!important;min-height:auto!important;padding:6px!important;color:#0b5ed7!important;box-shadow:none!important;font-size:28px!important;line-height:1!important;}
.ui88-mini-brand{display:flex;align-items:center;justify-content:center;gap:7px;font-size:19px;color:#0b5ed7;font-weight:1000;letter-spacing:.02em;}
.ui88-mini-brand span{font-size:25px}.ui88-bell{position:relative;color:#0f172a!important}.ui88-bell i{position:absolute;right:4px;top:3px;width:9px;height:9px;background:#ef4444;border-radius:999px;border:2px solid #fff;}
.ui88-page-title{font-size:28px!important;line-height:1.15!important;margin:18px 4px 14px!important;color:#111827!important;font-weight:1000!important;letter-spacing:.02em!important;}
.ui88-route-tabs{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin:0 4px 14px;}
.ui88-route-tabs button{border:0!important;background:transparent!important;color:#1f2937!important;font-weight:900!important;font-size:17px!important;min-height:44px!important;border-radius:18px!important;box-shadow:none!important;}
.ui88-route-tabs button.active{background:#0b66e4!important;color:#fff!important;box-shadow:0 10px 22px rgba(11,102,228,.22)!important;}
.ui88-route-note{display:flex;align-items:center;justify-content:space-between;gap:8px;color:#5c6779;font-size:12px;font-weight:800;margin:8px 4px 14px;}
.ui88-route-section{margin:0 4px;background:transparent;}.ui88-route-title{display:flex;align-items:flex-end;justify-content:space-between;gap:10px;margin:0 0 8px;padding-left:10px;border-left:6px solid #0b66e4;}.ui88-route-title h3{margin:0;color:#0f2c56;font-size:24px;font-weight:1000;}.ui88-route-title p{margin:3px 0 0;color:#334155;font-size:14px;font-weight:800;}.ui88-route-info{border:0!important;background:transparent!important;color:#0b66e4!important;font-size:14px!important;font-weight:1000!important;box-shadow:none!important;min-height:auto!important;padding:4px!important;}
.ui88-trip-row{display:grid;grid-template-columns:76px minmax(0,1fr) auto;gap:0;align-items:stretch;margin:8px 0;border:1px solid #dde7f3;border-radius:12px;background:#fff;box-shadow:0 7px 16px rgba(15,23,42,.06);overflow:hidden;}.ui88-trip-time{display:grid;place-items:center;background:#eef6ff;color:#0f172a;font-size:23px;font-weight:1000;}.ui88-trip-main{padding:11px 12px;min-width:0;}.ui88-trip-main b{display:block;font-size:16px;color:#111827;font-weight:1000;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.ui88-trip-main span{display:block;margin-top:3px;font-size:12px;color:#5b6475;font-weight:800;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.ui88-trip-right{display:flex;align-items:center;gap:6px;padding:0 9px 0 4px;}.ui88-trip-badge{display:inline-flex;align-items:center;justify-content:center;min-width:56px;padding:5px 8px;border-radius:9px;font-size:13px;font-weight:1000;border:1px solid transparent;white-space:nowrap;}.ui88-trip-badge.ready{color:#16a34a;background:#ecfdf3;border-color:#9ce7b2;}.ui88-trip-badge.soon{color:#9a6500;background:#fff7db;border-color:#f4d36c;}.ui88-trip-badge.warning{color:#c2410c;background:#ffedd5;border-color:#fdba74;}.ui88-trip-badge.muted{color:#64748b;background:#f1f5f9;border-color:#cbd5e1;}.ui88-chevron{font-size:30px;color:#94a3b8;line-height:1;}.ui88-empty-card{background:#fff;border:1px solid #dde7f3;border-radius:14px;padding:16px;color:#334155;font-weight:800;}.ui88-empty-card b{font-size:20px;color:#0f2c56;}.ui88-route-footnote{text-align:center;color:#64748b;font-size:12px;font-weight:800;margin:14px 0 2px;}
@media(max-width:430px){.ui88-schedule-shell{padding:6px 8px 92px}.ui88-page-title{font-size:26px!important;margin-top:16px!important}.ui88-route-tabs{gap:8px}.ui88-route-tabs button{font-size:16px!important;min-height:42px!important}.ui88-route-note{font-size:11px}.ui88-trip-row{grid-template-columns:68px minmax(0,1fr) auto}.ui88-trip-time{font-size:21px}.ui88-trip-badge{min-width:50px;font-size:12px;padding:5px 6px}.ui88-trip-main{padding:10px 9px}.ui88-trip-main b{font-size:15px}}


/* UI89：預約服務頁改為 APP 版面，先填上下車地點，預約後掃碼免再填上下車問卷。 */
body.passenger-ui66-beauty.ui89-reservation-active #appCard>.ui66-status-card{display:none!important;}
body.passenger-ui66-beauty .ui89-reservation-page{padding:0!important;border:0!important;box-shadow:none!important;background:#f8fbff!important;border-radius:0!important;margin:0!important;}
body.passenger-ui66-beauty .ui89-reservation-page .passenger-page-bottom-back{display:none!important;}
.ui89-reservation-hintbox{display:none!important;}
.ui89-my-reservation-wrap{padding:10px 12px 92px;background:#f8fbff;}
.ui89-my-reservation-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin:4px 0 10px;}
.ui89-my-reservation-head h3{margin:0;font-size:22px;color:#0f2c56;font-weight:1000;}
.ui89-my-reservation-head .secondary{min-height:40px!important;padding:8px 14px!important;border-radius:14px!important;}
.ui89-res-shell{background:#f8fbff;color:#08132b;padding:8px 12px 24px;min-height:calc(100vh - 20px);font-family:inherit;}
.ui89-form-card{margin:8px 4px 12px;padding:12px 14px;background:#fff;border:1px solid #dde7f3;border-radius:20px;box-shadow:0 10px 24px rgba(15,23,42,.06);display:grid;grid-template-columns:1fr;gap:0;}
.ui89-form-card label{display:grid;grid-template-columns:98px minmax(0,1fr);align-items:center;gap:10px;padding:14px 4px;border-bottom:1px solid #e9eef6;}
.ui89-form-card label:last-child{border-bottom:0;}
.ui89-form-card span{color:#0f172a;font-size:15px;font-weight:900;display:flex;align-items:center;gap:6px;}
.ui89-form-card select{width:100%;border:0;background:transparent;font-size:15px;font-weight:900;color:#0f172a;outline:none;padding:0 18px 0 0;appearance:none;background-image:linear-gradient(45deg,transparent 50%,#64748b 50%),linear-gradient(135deg,#64748b 50%,transparent 50%);background-position:calc(100% - 10px) calc(50% - 2px),calc(100% - 5px) calc(50% - 2px);background-size:5px 5px,5px 5px;background-repeat:no-repeat;}
.ui89-fixed-value{font-size:15px;font-weight:900;color:#0f172a;text-align:right;}
.ui89-section-head{display:flex;align-items:center;justify-content:space-between;gap:8px;margin:10px 4px 8px;}
.ui89-section-head h3{margin:0;color:#0f2c56;font-size:24px;font-weight:1000;}
.ui89-section-head button{border:0!important;background:transparent!important;color:#0b66e4!important;font-size:14px!important;font-weight:1000!important;box-shadow:none!important;min-height:auto!important;padding:4px!important;}
.ui89-trip-list{margin:0 4px;}
.ui89-trip-card{display:grid;grid-template-columns:84px minmax(0,1fr) 104px;gap:0;align-items:stretch;margin:10px 0;border:1px solid #dde7f3;border-radius:16px;background:#fff;box-shadow:0 7px 16px rgba(15,23,42,.06);overflow:hidden;}
.ui89-trip-card.disabled{opacity:.72;}
.ui89-trip-time{display:grid;place-items:center;background:#eef6ff;color:#0f172a;font-size:24px;font-weight:1000;}
.ui89-trip-body{padding:12px 12px 10px;min-width:0;}
.ui89-trip-line{display:flex;align-items:center;justify-content:space-between;gap:8px;}
.ui89-trip-line b{display:block;font-size:17px;color:#111827;font-weight:1000;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.ui89-trip-body p{margin:5px 0 0;color:#475569;font-size:12px;font-weight:800;}
.ui89-trip-body small{display:block;margin-top:4px;color:#64748b;font-size:12px;font-weight:800;}
.ui89-seat-pill{display:inline-flex;align-items:center;justify-content:center;padding:4px 8px;border-radius:999px;background:#ecfdf3;color:#15803d;font-size:13px;font-weight:1000;white-space:nowrap;}
.ui89-trip-action{display:grid;place-items:center;padding:10px;}
.ui89-trip-action .primary{min-height:44px!important;padding:10px 18px!important;border-radius:13px!important;box-shadow:0 10px 18px rgba(11,102,228,.16)!important;}
.ui89-empty-card{background:#fff;border:1px solid #dde7f3;border-radius:14px;padding:16px;color:#334155;font-weight:800;}
.ui89-empty-card b{font-size:18px;color:#0f2c56;display:block;margin-bottom:6px;}
.ui89-note{text-align:center;color:#64748b;font-size:12px;font-weight:800;margin:14px 8px 2px;}
@media(max-width:430px){.ui89-res-shell{padding:6px 8px 24px}.ui89-form-card label{grid-template-columns:86px minmax(0,1fr);padding:12px 2px}.ui89-form-card span,.ui89-form-card select,.ui89-fixed-value{font-size:14px}.ui89-trip-card{grid-template-columns:76px minmax(0,1fr) 92px}.ui89-trip-time{font-size:22px}.ui89-trip-line{flex-direction:column;align-items:flex-start}.ui89-seat-pill{font-size:12px}.ui89-route-tabs{gap:8px}}


/* UI96: 1-1 顯示已建立路線停靠站清單，讓 1-2 發車地點可直接讀取。 */
#routeTable{margin-top:10px;}
#routeTable .table-wrap{border:1px solid #dbe7f5;border-radius:16px;overflow:auto;background:#fff;box-shadow:0 8px 20px rgba(15,23,42,.05);}
#routeTable table{min-width:900px;}
#routeTable th{background:#eef6ff;color:#0f2c56;font-weight:900;}

/* UI97: 1-1 路線停靠站改為動態欄位，第一站與最後一站不固定。 */
.route-stop-form .full-row{grid-column:1/-1;}
.route-stop-fields{display:grid;grid-template-columns:1fr;gap:10px;margin:4px 0 0;}
.route-stop-row{display:grid;grid-template-columns:110px minmax(0,1fr) 76px;gap:10px;align-items:center;background:#f8fbff;border:1px solid #d7e5f8;border-radius:14px;padding:10px;}
.route-stop-row label{font-weight:900;color:#12306b;}
.route-stop-row .input{width:100%;}
.route-stop-row .btn[disabled]{opacity:.45;cursor:not-allowed;}
@media(max-width:760px){.route-stop-row{grid-template-columns:1fr}.route-stop-row .btn{width:100%;}}


/* UI102: 將我的預約收進右上角鈴鐺；只有預約快到時顯示紅點。 */
body.passenger-ui66-beauty .ui102-reservation-bell-store{display:none!important;}
body.passenger-ui66-beauty .ui102-reservation-bell i{display:none!important;}
body.passenger-ui66-beauty .ui102-reservation-bell.has-urgent i{display:block!important;}
.ui102-reservation-modal-card{max-width:680px!important;width:min(94vw,680px)!important;max-height:86vh!important;overflow:hidden!important;padding:0!important;}
.ui102-reservation-modal-head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:18px 18px 12px;border-bottom:1px solid #e5edf7;background:#f8fbff;}
.ui102-reservation-modal-head h2{margin:0;color:#0f2c56;font-size:24px;font-weight:1000;}
.ui102-reservation-modal-head p{margin:4px 0 0;color:#64748b;font-weight:900;}
.ui102-bell-warning{display:inline-flex;align-items:center;gap:6px;color:#dc2626;font-weight:1000;}
.ui102-bell-warning:before{content:'';width:9px;height:9px;border-radius:999px;background:#ef4444;display:inline-block;}
.ui102-reservation-modal-body{padding:12px 14px;max-height:62vh;overflow:auto;background:#f8fbff;}
.ui102-bell-list{display:grid;gap:10px;}
.ui102-urgent-reservation{border:2px solid rgba(239,68,68,.55)!important;box-shadow:0 12px 24px rgba(239,68,68,.12)!important;}
.ui102-urgent-line{margin:5px 0 0!important;color:#dc2626!important;font-size:13px!important;font-weight:1000!important;}
.ui102-bell-empty{padding:18px;border:1px dashed #cbd5e1;border-radius:16px;background:#fff;color:#64748b;font-weight:900;text-align:center;}
@media(max-width:760px){.ui102-reservation-modal-card{width:96vw!important;max-height:88vh!important}.ui102-reservation-modal-head{padding:14px 14px 10px}.ui102-reservation-modal-body{max-height:68vh;padding:10px}.ui102-reservation-modal-head h2{font-size:22px}}

/* UI104: 預約服務與班次查詢加入去程/回程下拉與顏色區分。 */
.ui104-direction-field.outbound,
.ui104-schedule-direction-select.outbound{
  background:#eff8ff!important;
  border-radius:16px!important;
}
.ui104-direction-field.inbound,
.ui104-schedule-direction-select.inbound{
  background:#fff1f7!important;
  border-radius:16px!important;
}
.ui104-direction-field.outbound select,
.ui104-schedule-direction-select.outbound select{color:#075985!important;}
.ui104-direction-field.inbound select,
.ui104-schedule-direction-select.inbound select{color:#be185d!important;}
.ui104-schedule-direction-select{
  display:grid;
  grid-template-columns:98px minmax(0,1fr);
  align-items:center;
  gap:10px;
  margin:0 4px 12px;
  padding:12px 14px;
  border:1px solid #d8e7f7;
  box-shadow:0 8px 18px rgba(15,23,42,.05);
}
.ui104-schedule-direction-select span{
  font-size:14px;
  color:#0f172a;
  font-weight:1000;
}
.ui104-schedule-direction-select select{
  width:100%;
  border:0;
  background:transparent;
  outline:none;
  font-size:16px;
  font-weight:1000;
  appearance:none;
  padding-right:18px;
  background-image:linear-gradient(45deg,transparent 50%,#64748b 50%),linear-gradient(135deg,#64748b 50%,transparent 50%);
  background-position:calc(100% - 10px) calc(50% - 2px),calc(100% - 5px) calc(50% - 2px);
  background-size:5px 5px,5px 5px;
  background-repeat:no-repeat;
}
.ui104-dir-card.outbound{background:linear-gradient(90deg,#eff8ff 0%,#fff 28%,#fff 100%)!important;border-color:#bfdbfe!important;}
.ui104-dir-card.inbound{background:linear-gradient(90deg,#fff1f7 0%,#fff 28%,#fff 100%)!important;border-color:#fbcfe8!important;}
.ui104-dir-card.outbound .ui88-trip-time,
.ui104-dir-card.outbound .ui89-trip-time{background:#dff2ff!important;color:#075985!important;}
.ui104-dir-card.inbound .ui88-trip-time,
.ui104-dir-card.inbound .ui89-trip-time{background:#ffe4ef!important;color:#be185d!important;}
.ui104-dir-pill{
  display:inline-flex!important;
  align-items:center!important;
  justify-content:center!important;
  margin:0 7px 0 0!important;
  padding:3px 8px!important;
  border-radius:999px!important;
  font-size:12px!important;
  line-height:1.2!important;
  font-weight:1000!important;
  white-space:nowrap!important;
  vertical-align:middle!important;
}
.ui104-dir-pill.outbound{background:#dbeafe!important;color:#075985!important;border:1px solid #93c5fd!important;}
.ui104-dir-pill.inbound{background:#fce7f3!important;color:#be185d!important;border:1px solid #f9a8d4!important;}
.ui88-trip-main b .ui104-dir-pill,
.ui89-trip-line b .ui104-dir-pill{display:inline-flex!important;}
@media(max-width:430px){
  .ui104-schedule-direction-select{grid-template-columns:86px minmax(0,1fr);padding:10px 12px;margin-bottom:10px;}
  .ui104-schedule-direction-select span{font-size:13px;}
  .ui104-schedule-direction-select select{font-size:15px;}
  .ui104-dir-pill{font-size:11px!important;padding:3px 7px!important;margin-right:5px!important;}
}


/* UI105: 班次查詢點選班次後，顯示該班座位即時狀態小視窗。 */
.ui105-seat-trigger{
  width:100%!important;
  border:1px solid #dde7f3!important;
  font:inherit!important;
  text-align:left!important;
  cursor:pointer!important;
  appearance:none!important;
  padding:0!important;
}
.ui105-seat-trigger:active{transform:scale(.995);}
.ui105-seat-trigger:focus-visible{outline:3px solid rgba(37,99,235,.25);outline-offset:2px;}
.ui105-seat-modal{position:relative;width:min(560px,94vw)!important;border-radius:28px!important;padding:20px!important;background:linear-gradient(180deg,#fff,#f8fbff)!important;}
.ui105-seat-close{position:absolute;right:14px;top:12px;width:38px;height:38px;border-radius:999px;border:0;background:#eef2f7;color:#334155;font-size:26px;font-weight:900;line-height:1;cursor:pointer;z-index:2;}
.ui105-seat-head{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;border-radius:22px;padding:18px 18px 16px;margin-bottom:14px;border:1px solid #dbeafe;background:#eff8ff;}
.ui105-seat-head.inbound{border-color:#fbcfe8;background:#fff1f7;}
.ui105-seat-head h3{font-size:28px;line-height:1.1;margin:8px 0 6px;color:#13213a;font-weight:1000;}
.ui105-seat-head p{margin:0!important;color:#334155!important;font-size:17px;font-weight:900;}
.ui105-seat-head strong{white-space:nowrap;margin-top:4px;border-radius:16px;padding:9px 13px;background:#fff;color:#2563eb;border:1px solid #bfdbfe;font-size:16px;font-weight:1000;}
.ui105-seat-head.inbound strong{color:#be185d;border-color:#f9a8d4;}
.ui105-seat-route{display:flex;justify-content:space-between;gap:12px;border:1px solid #e2e8f0;border-radius:18px;background:#fff;padding:13px 15px;margin-bottom:12px;font-weight:950;color:#0f172a;}
.ui105-seat-route span{text-align:right;color:#334155;}
.ui105-seat-stats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin-bottom:14px;}
.ui105-seat-stats div{background:#fff;border:1px solid #e2e8f0;border-radius:18px;padding:13px 12px;box-shadow:0 8px 18px rgba(15,23,42,.04);}
.ui105-seat-stats small{display:block;color:#64748b;font-weight:900;font-size:12px;margin-bottom:5px;}
.ui105-seat-stats b{display:block;color:#0f172a;font-size:20px;font-weight:1000;}
.ui105-seat-section{background:#fff;border:1px solid #e2e8f0;border-radius:20px;padding:15px;margin-bottom:12px;}
.ui105-seat-section h4{margin:0 0 10px;color:#0f2c56;font-size:18px;font-weight:1000;}
.ui105-stop-list{list-style:none;padding:0;margin:0;display:grid;gap:8px;}
.ui105-stop-list li{display:grid;grid-template-columns:34px minmax(0,1fr);align-items:center;gap:10px;padding:9px 10px;border-radius:14px;background:#f8fafc;color:#0f172a;font-weight:900;}
.ui105-stop-list li b{display:grid;place-items:center;width:28px;height:28px;border-radius:999px;background:#e0edff;color:#2563eb;}
.ui105-seat-note{margin:8px 2px 14px!important;color:#64748b!important;font-size:13px!important;font-weight:800;line-height:1.45;}
.ui105-seat-actions{display:grid;grid-template-columns:1fr 1fr;gap:10px;}
.ui105-seat-actions button{min-height:48px!important;border-radius:16px!important;font-size:17px!important;font-weight:1000!important;}
@media(max-width:430px){.ui105-seat-modal{padding:16px!important}.ui105-seat-head h3{font-size:25px}.ui105-seat-stats{grid-template-columns:1fr}.ui105-seat-actions{grid-template-columns:1fr}.ui105-seat-route{display:grid}.ui105-seat-route span{text-align:left}}

/* UI106: API 載入失敗時保留暫存資料提示 */
.ui106-cache-warning{margin:8px 0 12px;padding:10px 12px;border-radius:14px;border:1px solid #facc15;background:#fffbe6;color:#854d0e;font-size:13px;font-weight:900;display:flex;align-items:center;justify-content:space-between;gap:8px;}
.ui106-cache-warning button{border:0;border-radius:999px;background:#0b66e4;color:white;font-weight:900;padding:7px 12px;}

/* UI110: QR 掃描可讀性修正：白框改小，提示 QR 需填滿框線。 */
.qr-camera-guide{inset:18%!important;border-width:4px!important;border-color:rgba(255,255,255,.96)!important;}
.qr-camera-guide::after{content:'請讓 QR 填滿白框';position:absolute;left:50%;bottom:-42px;transform:translateX(-50%);background:rgba(15,23,42,.78);color:#fff;border-radius:999px;padding:7px 12px;font-size:14px;font-weight:900;white-space:nowrap;}
@media(max-width:760px){.qr-camera-guide{inset:18%!important}.qr-camera-hint{font-size:clamp(18px,4.8vw,26px)!important;line-height:1.45!important}.qr-camera-video{height:min(66vh,540px)!important}}

/* UI118: 移除乘客端 APP 功能鍵外圍藍色細線，只保留藍色 APP 圖示本體。 */
body.passenger-ui66-beauty #appCard .passenger-main-menu .menu-grid,
body.passenger-ui66-beauty #passengerCategoryPage .menu-grid,
body.passenger-ui66-beauty #appCard .passenger-category-grid{
  border:0!important;
  box-shadow:none!important;
  background:transparent!important;
}
body.passenger-ui66-beauty #appCard .passenger-main-menu .menu-grid>button.ui66-tile,
body.passenger-ui66-beauty #appCard .passenger-category-grid>button.ui66-tile,
body.passenger-ui66-beauty #appCard .menu-grid>button.feature-tile.ui66-tile,
body.passenger-ui66-beauty #passengerCategoryPage .menu-grid>button.ui66-tile,
body.passenger-ui66-beauty #passengerCategoryPage .menu-grid>button.feature-tile.ui66-tile{
  border:0!important;
  outline:0!important;
  box-shadow:none!important;
  background:transparent!important;
  border-radius:0!important;
}
body.passenger-ui66-beauty #appCard .ui66-tile::before,
body.passenger-ui66-beauty #appCard .ui66-tile::after,
body.passenger-ui66-beauty #passengerCategoryPage .ui66-tile::before,
body.passenger-ui66-beauty #passengerCategoryPage .ui66-tile::after{
  display:none!important;
  content:none!important;
  border:0!important;
  box-shadow:none!important;
}
body.passenger-ui66-beauty #appCard .ui66-tile:focus,
body.passenger-ui66-beauty #appCard .ui66-tile:focus-visible,
body.passenger-ui66-beauty #passengerCategoryPage .ui66-tile:focus,
body.passenger-ui66-beauty #passengerCategoryPage .ui66-tile:focus-visible{
  outline:0!important;
  box-shadow:none!important;
}

/* UI118: APP 功能鍵放大版。保留 UI117 移除外框，只放大藍色 APP 圖示與文字。 */
body.passenger-ui66-beauty #appCard .passenger-main-menu .menu-grid.passenger-category-grid{
  grid-template-columns:repeat(4,minmax(0,1fr))!important;
  gap:14px 6px!important;
  padding:8px 2px 6px!important;
  align-items:start!important;
  justify-items:center!important;
}
body.passenger-ui66-beauty #appCard .passenger-main-menu .menu-grid.passenger-category-grid>button.ui66-tile{
  min-height:112px!important;
  padding:4px 0!important;
  gap:8px!important;
}
body.passenger-ui66-beauty #appCard .passenger-main-menu .ui66-tile .ui66-tile-icon{
  width:68px!important;
  height:68px!important;
  flex:0 0 68px!important;
  border-radius:20px!important;
  font-size:31px!important;
  box-shadow:0 12px 24px rgba(46,111,233,.20)!important;
}
body.passenger-ui66-beauty #appCard .passenger-main-menu .ui66-tile b{
  font-size:15px!important;
  line-height:1.18!important;
  letter-spacing:-.01em!important;
  max-width:100%!important;
}
body.passenger-ui66-beauty #passengerCategoryPage .menu-grid{
  grid-template-columns:repeat(2,minmax(0,1fr))!important;
  gap:22px 10px!important;
  padding:10px 4px 8px!important;
  justify-items:center!important;
}
body.passenger-ui66-beauty #passengerCategoryPage .menu-grid>button.ui66-tile,
body.passenger-ui66-beauty #passengerCategoryPage .menu-grid>button.feature-tile.ui66-tile{
  min-height:128px!important;
  padding:6px 2px!important;
  gap:10px!important;
}
body.passenger-ui66-beauty #passengerCategoryPage .ui66-tile .ui66-tile-icon{
  width:82px!important;
  height:82px!important;
  flex:0 0 82px!important;
  border-radius:24px!important;
  font-size:38px!important;
  box-shadow:0 14px 28px rgba(46,111,233,.22)!important;
}
body.passenger-ui66-beauty #passengerCategoryPage .ui66-tile b{
  font-size:18px!important;
  line-height:1.18!important;
  max-width:100%!important;
}
@media(max-width:430px){
  body.passenger-ui66-beauty #appCard .passenger-main-menu .menu-grid.passenger-category-grid{
    gap:12px 4px!important;
    padding-top:7px!important;
  }
  body.passenger-ui66-beauty #appCard .passenger-main-menu .menu-grid.passenger-category-grid>button.ui66-tile{
    min-height:106px!important;
    gap:7px!important;
  }
  body.passenger-ui66-beauty #appCard .passenger-main-menu .ui66-tile .ui66-tile-icon{
    width:64px!important;
    height:64px!important;
    flex-basis:64px!important;
    border-radius:19px!important;
    font-size:29px!important;
  }
  body.passenger-ui66-beauty #appCard .passenger-main-menu .ui66-tile b{
    font-size:14px!important;
  }
  body.passenger-ui66-beauty #passengerCategoryPage .menu-grid{
    gap:20px 8px!important;
  }
  body.passenger-ui66-beauty #passengerCategoryPage .ui66-tile .ui66-tile-icon{
    width:76px!important;
    height:76px!important;
    flex-basis:76px!important;
    border-radius:22px!important;
    font-size:35px!important;
  }
  body.passenger-ui66-beauty #passengerCategoryPage .ui66-tile b{
    font-size:17px!important;
  }
}

/* UI119: 乘客端儲值紀錄系統簽證顯示 */
body.passenger-ui66-beauty .recharge-history-panel{
  margin-top:18px;
  padding:16px;
  border-radius:22px;
  background:rgba(255,255,255,.86);
  box-shadow:0 10px 24px rgba(15,23,42,.06);
}
body.passenger-ui66-beauty .recharge-history-panel h3{
  margin:0 0 6px;
  color:#172554;
  font-size:1.18rem;
}
body.passenger-ui66-beauty .recharge-history-list h4{
  margin:14px 0 8px;
  color:#1d4ed8;
  font-size:1.02rem;
}
body.passenger-ui66-beauty .recharge-history-card{
  margin:8px 0;
  border-radius:16px;
  border:1px solid rgba(37,99,235,.14);
  background:#fff;
}

/* UI121: 主頁 APP 功能鍵改成真正 2x2 四分割，圖案再放大。只動乘客端 APP 尺寸，不動功能邏輯。 */
body.passenger-ui66-beauty #appCard .passenger-main-menu .menu-grid.passenger-category-grid{
  display:grid!important;
  grid-template-columns:repeat(2,minmax(0,1fr))!important;
  gap:12px!important;
  padding:10px 10px 12px!important;
  align-items:stretch!important;
  justify-items:stretch!important;
  width:100%!important;
  box-sizing:border-box!important;
}
body.passenger-ui66-beauty #appCard .passenger-main-menu .menu-grid.passenger-category-grid>button.ui66-tile,
body.passenger-ui66-beauty #appCard .passenger-main-menu .menu-grid.passenger-category-grid>button.feature-tile.ui66-tile{
  width:100%!important;
  min-height:198px!important;
  padding:20px 8px 18px!important;
  display:flex!important;
  flex-direction:column!important;
  align-items:center!important;
  justify-content:center!important;
  gap:14px!important;
  background:rgba(255,255,255,.92)!important;
  border:1px solid rgba(148,163,184,.20)!important;
  border-radius:18px!important;
  box-shadow:0 12px 26px rgba(15,73,132,.06)!important;
  text-align:center!important;
  overflow:hidden!important;
}
body.passenger-ui66-beauty #appCard .passenger-main-menu .menu-grid.passenger-category-grid>button.ui66-tile::before,
body.passenger-ui66-beauty #appCard .passenger-main-menu .menu-grid.passenger-category-grid>button.ui66-tile::after{
  display:none!important;
  content:none!important;
}
body.passenger-ui66-beauty #appCard .passenger-main-menu .ui66-tile .ui66-tile-icon{
  width:112px!important;
  height:112px!important;
  flex:0 0 112px!important;
  border-radius:30px!important;
  font-size:54px!important;
  margin:0 auto!important;
  display:grid!important;
  place-items:center!important;
  box-shadow:0 16px 32px rgba(46,111,233,.24)!important;
}
body.passenger-ui66-beauty #appCard .passenger-main-menu .ui66-tile b{
  display:block!important;
  font-size:22px!important;
  line-height:1.12!important;
  color:#14213d!important;
  font-weight:1000!important;
  letter-spacing:-.02em!important;
  margin:0 auto!important;
  max-width:100%!important;
}
body.passenger-ui66-beauty #appCard .passenger-main-menu .ui66-tile small{display:none!important;}
body.passenger-ui66-beauty #appCard .passenger-main-menu .ui66-tile:active{
  transform:scale(.985)!important;
  box-shadow:0 8px 18px rgba(15,73,132,.08)!important;
}
body.passenger-ui66-beauty #appCard .passenger-main-menu .ui66-tile:active .ui66-tile-icon{transform:scale(.97)!important;}

/* UI121: 功能分類頁的 APP 圖案也加大，但維持 2 欄排列。 */
body.passenger-ui66-beauty #passengerCategoryPage .menu-grid{
  grid-template-columns:repeat(2,minmax(0,1fr))!important;
  gap:26px 14px!important;
  padding:14px 10px 10px!important;
  justify-items:stretch!important;
  align-items:stretch!important;
}
body.passenger-ui66-beauty #passengerCategoryPage .menu-grid>button.ui66-tile,
body.passenger-ui66-beauty #passengerCategoryPage .menu-grid>button.feature-tile.ui66-tile{
  width:100%!important;
  min-height:166px!important;
  padding:14px 6px!important;
  gap:12px!important;
  background:transparent!important;
  border:0!important;
  box-shadow:none!important;
}
body.passenger-ui66-beauty #passengerCategoryPage .ui66-tile .ui66-tile-icon{
  width:98px!important;
  height:98px!important;
  flex:0 0 98px!important;
  border-radius:28px!important;
  font-size:46px!important;
  box-shadow:0 16px 32px rgba(46,111,233,.24)!important;
}
body.passenger-ui66-beauty #passengerCategoryPage .ui66-tile b{
  font-size:20px!important;
  line-height:1.15!important;
  font-weight:1000!important;
}
@media(max-width:430px){
  body.passenger-ui66-beauty #appCard .passenger-main-menu .menu-grid.passenger-category-grid{
    gap:10px!important;
    padding:8px 8px 10px!important;
  }
  body.passenger-ui66-beauty #appCard .passenger-main-menu .menu-grid.passenger-category-grid>button.ui66-tile,
  body.passenger-ui66-beauty #appCard .passenger-main-menu .menu-grid.passenger-category-grid>button.feature-tile.ui66-tile{
    min-height:184px!important;
    padding:18px 6px 16px!important;
    gap:12px!important;
  }
  body.passenger-ui66-beauty #appCard .passenger-main-menu .ui66-tile .ui66-tile-icon{
    width:104px!important;
    height:104px!important;
    flex-basis:104px!important;
    border-radius:28px!important;
    font-size:50px!important;
  }
  body.passenger-ui66-beauty #appCard .passenger-main-menu .ui66-tile b{font-size:21px!important;}
  body.passenger-ui66-beauty #passengerCategoryPage .ui66-tile .ui66-tile-icon{
    width:92px!important;
    height:92px!important;
    flex-basis:92px!important;
    border-radius:26px!important;
    font-size:43px!important;
  }
  body.passenger-ui66-beauty #passengerCategoryPage .ui66-tile b{font-size:19px!important;}
}

/* UI125: 乘客端正常版／長者版切換。預設保留目前大小為長者版；切到正常版時壓縮字體、卡片與 APP 圖示。 */
body.passenger-normal-legacy .passenger-size-toggle{
  width:100%!important;
  min-height:38px!important;
  margin:6px 0 2px!important;
  border-radius:14px!important;
  font-size:14px!important;
  font-weight:950!important;
  padding:7px 10px!important;
  white-space:nowrap!important;
}
body.passenger-normal-legacy.passenger-size-normal{font-size:14px!important;line-height:1.42!important;}
body.passenger-normal-legacy.passenger-size-normal .container{max-width:720px!important;padding-left:8px!important;padding-right:8px!important;}
body.passenger-normal-legacy.passenger-size-normal .card{padding:12px!important;border-radius:16px!important;}
body.passenger-normal-legacy.passenger-size-normal .passenger-status-card{display:grid!important;grid-template-columns:minmax(0,1fr) auto!important;gap:8px!important;padding:10px 12px!important;border-radius:18px!important;margin-bottom:8px!important;}
body.passenger-normal-legacy.passenger-size-normal .ui66-bus-logo{width:48px!important;height:48px!important;border-radius:13px!important;font-size:23px!important;}
body.passenger-normal-legacy.passenger-size-normal #passengerOperatingUnitBadge{font-size:11px!important;padding:4px 8px!important;}
body.passenger-normal-legacy.passenger-size-normal .passenger-status-card h1{font-size:21px!important;line-height:1.12!important;margin:4px 0!important;}
body.passenger-normal-legacy.passenger-size-normal #passengerSummary{font-size:13.5px!important;line-height:1.35!important;}
body.passenger-normal-legacy.passenger-size-normal .status-balance-box{gap:5px!important;min-width:84px!important;}
body.passenger-normal-legacy.passenger-size-normal .status-balance-box span{font-size:11px!important;}
body.passenger-normal-legacy.passenger-size-normal .status-balance-box b{font-size:17px!important;line-height:1.12!important;}
body.passenger-normal-legacy.passenger-size-normal #logoutBtn{min-height:34px!important;font-size:13px!important;padding:6px 10px!important;border-radius:12px!important;}
body.passenger-normal-legacy.passenger-size-normal .passenger-size-toggle{min-height:32px!important;font-size:12px!important;padding:5px 8px!important;border-radius:12px!important;margin:4px 0!important;}
body.passenger-normal-legacy.passenger-size-normal .passenger-main-menu{padding:12px!important;border-radius:18px!important;margin-bottom:8px!important;}
body.passenger-normal-legacy.passenger-size-normal .passenger-main-menu h2,
body.passenger-normal-legacy.passenger-size-normal #passengerCategoryTitle{font-size:21px!important;line-height:1.16!important;margin-bottom:5px!important;}
body.passenger-normal-legacy.passenger-size-normal .passenger-main-menu .hint,
body.passenger-normal-legacy.passenger-size-normal #passengerCategoryHint,
body.passenger-normal-legacy.passenger-size-normal .hint{font-size:13px!important;line-height:1.35!important;}
body.passenger-ui66-beauty.passenger-size-normal #appCard .passenger-main-menu .menu-grid.passenger-category-grid{gap:8px!important;padding:6px!important;}
body.passenger-ui66-beauty.passenger-size-normal #appCard .passenger-main-menu .menu-grid.passenger-category-grid>button.ui66-tile,
body.passenger-ui66-beauty.passenger-size-normal #appCard .passenger-main-menu .menu-grid.passenger-category-grid>button.feature-tile.ui66-tile{min-height:122px!important;padding:10px 6px!important;gap:8px!important;border-radius:15px!important;}
body.passenger-ui66-beauty.passenger-size-normal #appCard .passenger-main-menu .ui66-tile .ui66-tile-icon{width:70px!important;height:70px!important;flex-basis:70px!important;border-radius:20px!important;font-size:34px!important;}
body.passenger-ui66-beauty.passenger-size-normal #appCard .passenger-main-menu .ui66-tile b{font-size:16px!important;line-height:1.12!important;}
body.passenger-ui66-beauty.passenger-size-normal #passengerCategoryPage .menu-grid{gap:12px 8px!important;padding:8px 6px!important;}
body.passenger-ui66-beauty.passenger-size-normal #passengerCategoryPage .menu-grid>button.ui66-tile,
body.passenger-ui66-beauty.passenger-size-normal #passengerCategoryPage .menu-grid>button.feature-tile.ui66-tile{min-height:112px!important;padding:8px 4px!important;gap:7px!important;}
body.passenger-ui66-beauty.passenger-size-normal #passengerCategoryPage .ui66-tile .ui66-tile-icon{width:66px!important;height:66px!important;flex-basis:66px!important;border-radius:19px!important;font-size:31px!important;}
body.passenger-ui66-beauty.passenger-size-normal #passengerCategoryPage .ui66-tile b{font-size:15.5px!important;line-height:1.12!important;}
body.passenger-normal-legacy.passenger-size-normal .passenger-feature-page h2{font-size:21px!important;line-height:1.2!important;}
body.passenger-normal-legacy.passenger-size-normal .scan-step-card,
body.passenger-normal-legacy.passenger-size-normal .notice,
body.passenger-normal-legacy.passenger-size-normal .receipt{font-size:13.5px!important;line-height:1.42!important;padding:9px 10px!important;border-radius:13px!important;}
body.passenger-normal-legacy.passenger-size-normal input,
body.passenger-normal-legacy.passenger-size-normal select,
body.passenger-normal-legacy.passenger-size-normal textarea{min-height:40px!important;font-size:14px!important;padding:7px 9px!important;border-radius:12px!important;}
body.passenger-normal-legacy.passenger-size-normal button.primary,
body.passenger-normal-legacy.passenger-size-normal button.secondary,
body.passenger-normal-legacy.passenger-size-normal .btn{min-height:40px!important;font-size:14px!important;padding:7px 11px!important;border-radius:13px!important;}
body.passenger-normal-legacy.passenger-size-normal .ui66-bottom-nav{height:64px!important;padding:5px 6px!important;}
body.passenger-normal-legacy.passenger-size-normal .ui66-bottom-nav button{font-size:11px!important;gap:2px!important;}
body.passenger-normal-legacy.passenger-size-normal .ui66-bottom-nav span{font-size:21px!important;}
body.passenger-normal-legacy.passenger-size-normal #featureContainer{margin-bottom:76px!important;}
body.passenger-normal-legacy .recharge-amount-modal-card input#rechargeModalAmount{width:100%;margin:8px 0 14px;font-weight:900;}

/* UI127：系統總後台協助操作模式提示區 */
.assist-mode-banner{margin:12px auto 0;max-width:1280px;border:2px solid #fecaca;background:#fff1f2;color:#7f1d1d;border-radius:18px;padding:14px 18px;display:flex;align-items:center;justify-content:space-between;gap:14px;box-shadow:0 12px 28px rgba(127,29,29,.12);font-weight:800;}
.assist-mode-banner strong{font-size:18px;color:#991b1b;}
.assist-mode-banner .actions{display:flex;gap:8px;flex-wrap:wrap;align-items:center;}
.assist-mode-banner .muted{color:#9f1239;font-weight:700;}
.global-overview-tree .ops-row{background:#f8fafc;border:1px solid #dbeafe;border-radius:16px;padding:14px;margin:10px 0;}
.global-overview-tree .community-row{margin:8px 0 8px 20px;padding:12px;border-left:4px solid #93c5fd;background:#fff;border-radius:12px;}
.global-overview-tree .unit-title{font-size:17px;font-weight:950;color:#0f172a;}
.global-overview-tree .unit-meta{margin-top:6px;color:#475569;font-weight:750;}
.global-overview-tree .unit-actions{margin-top:10px;display:flex;gap:8px;flex-wrap:wrap;}
@media(max-width:720px){.assist-mode-banner{margin:8px 10px 0;display:block}.assist-mode-banner .actions{margin-top:10px}}

/* UI128：全域營運總覽改為營運單位可展開，下層執行單位預設收合；操作按鍵只保留在單位卡片與單位清單。 */
.global-overview-tree .global-ops-group{border:1px solid #dbeafe;border-radius:18px;background:#fff;margin:12px 0;overflow:hidden;}
.global-overview-tree .global-ops-group>summary{list-style:none;cursor:pointer;display:block;padding:0;position:relative;}
.global-overview-tree .global-ops-group>summary::-webkit-details-marker{display:none;}
.global-overview-tree .global-ops-group>summary .ops-row{margin:0;border:0;border-radius:0;background:#f8fafc;padding-right:170px;}
.global-overview-tree .global-ops-group>summary::after{content:'展開';position:absolute;right:16px;top:16px;background:#eff6ff;color:#1d4ed8;border:1px solid #bfdbfe;border-radius:999px;padding:6px 12px;font-weight:950;}
.global-overview-tree .global-ops-group[open]>summary::after{content:'收合';}
.global-overview-tree .collapse-hint{position:absolute;right:76px;top:18px;color:#64748b;font-size:13px;font-weight:850;}
.global-overview-tree .global-ops-children{padding:8px 12px 14px;background:#fff;}
.global-overview-tree .global-ops-children .community-row{margin:8px 0 8px 10px;}
.global-overview-tree .empty.small{font-size:14px;margin:8px 0;padding:10px;border-radius:12px;background:#f8fafc;color:#64748b;}
@media(max-width:820px){.global-overview-tree .global-ops-group>summary .ops-row{padding-right:14px;padding-bottom:42px}.global-overview-tree .collapse-hint{left:14px;right:auto;top:auto;bottom:12px}.global-overview-tree .global-ops-group>summary::after{right:14px;top:auto;bottom:8px}}

/* UI128：全域營運總覽改為營運單位可展開，下層執行單位預設收合；操作按鍵只保留在單位卡片與單位清單。 */
.global-overview-tree .global-ops-group{border:1px solid #dbeafe;border-radius:18px;background:#fff;margin:12px 0;overflow:hidden;}
.global-overview-tree .global-ops-group>summary{list-style:none;cursor:pointer;display:block;padding:0;position:relative;}
.global-overview-tree .global-ops-group>summary::-webkit-details-marker{display:none;}
.global-overview-tree .global-ops-group>summary .ops-row{margin:0;border:0;border-radius:0;background:#f8fafc;padding-right:170px;}
.global-overview-tree .global-ops-group>summary::after{content:'展開';position:absolute;right:16px;top:16px;background:#eff6ff;color:#1d4ed8;border:1px solid #bfdbfe;border-radius:999px;padding:6px 12px;font-weight:950;}
.global-overview-tree .global-ops-group[open]>summary::after{content:'收合';}
.global-overview-tree .collapse-hint{position:absolute;right:76px;top:18px;color:#64748b;font-size:13px;font-weight:850;}
.global-overview-tree .global-ops-children{padding:8px 12px 14px;background:#fff;}
.global-overview-tree .global-ops-children .community-row{margin:8px 0 8px 10px;}
.global-overview-tree .empty.small{font-size:14px;margin:8px 0;padding:10px;border-radius:12px;background:#f8fafc;color:#64748b;}
@media(max-width:820px){.global-overview-tree .global-ops-group>summary .ops-row{padding-right:14px;padding-bottom:42px}.global-overview-tree .collapse-hint{left:14px;right:auto;top:auto;bottom:12px}.global-overview-tree .global-ops-group>summary::after{right:14px;top:auto;bottom:8px}}

/* UI132: 乘客端正常/長者版切換按鍵移出上方狀態卡，避免遮住姓名與標題；功能主頁 APP 圖示外框再次強制移除。 */
body.passenger-normal-legacy .passenger-size-toggle-row{
  display:flex!important;
  justify-content:flex-end!important;
  align-items:center!important;
  width:100%!important;
  box-sizing:border-box!important;
  padding:6px 18px 2px!important;
  margin:0 0 4px!important;
  background:transparent!important;
  border:0!important;
  box-shadow:none!important;
  position:relative!important;
  z-index:3!important;
}
body.passenger-normal-legacy .passenger-size-toggle-row .passenger-size-toggle{
  width:auto!important;
  min-width:154px!important;
  max-width:100%!important;
  min-height:38px!important;
  margin:0!important;
  border-radius:999px!important;
  padding:7px 13px!important;
  white-space:nowrap!important;
  box-shadow:none!important;
}
body.passenger-normal-legacy.passenger-size-normal .passenger-size-toggle-row{
  padding:4px 12px 0!important;
  margin:0 0 2px!important;
}
body.passenger-normal-legacy.passenger-size-normal .passenger-size-toggle-row .passenger-size-toggle{
  width:auto!important;
  min-width:138px!important;
  min-height:32px!important;
  font-size:12px!important;
  padding:5px 10px!important;
  margin:0!important;
}
body.passenger-ui66-beauty #appCard #passengerHome .menu-grid.passenger-category-grid,
body.passenger-ui66-beauty #appCard .passenger-main-menu .menu-grid.passenger-category-grid{
  border:0!important;
  outline:0!important;
  box-shadow:none!important;
  background:transparent!important;
}
body.passenger-ui66-beauty #appCard #passengerHome .menu-grid.passenger-category-grid>button.ui66-tile,
body.passenger-ui66-beauty #appCard .passenger-main-menu .menu-grid.passenger-category-grid>button.ui66-tile,
body.passenger-ui66-beauty #appCard #passengerHome .menu-grid.passenger-category-grid>button.passenger-category-main,
body.passenger-ui66-beauty #appCard .passenger-main-menu .menu-grid.passenger-category-grid>button.passenger-category-main{
  background:transparent!important;
  border:0!important;
  outline:0!important;
  box-shadow:none!important;
  border-radius:0!important;
}
body.passenger-ui66-beauty #appCard #passengerHome .menu-grid.passenger-category-grid>button.ui66-tile::before,
body.passenger-ui66-beauty #appCard #passengerHome .menu-grid.passenger-category-grid>button.ui66-tile::after,
body.passenger-ui66-beauty #appCard .passenger-main-menu .menu-grid.passenger-category-grid>button.ui66-tile::before,
body.passenger-ui66-beauty #appCard .passenger-main-menu .menu-grid.passenger-category-grid>button.ui66-tile::after{
  display:none!important;
  content:none!important;
  border:0!important;
  box-shadow:none!important;
}
@media(max-width:430px){
  body.passenger-normal-legacy .passenger-size-toggle-row{
    justify-content:flex-end!important;
    padding:5px 12px 1px!important;
  }
  body.passenger-normal-legacy .passenger-size-toggle-row .passenger-size-toggle{
    min-width:144px!important;
    font-size:13px!important;
  }
}

/* UI133: 乘客登入頁長者/正常版切換放到右上紅框位置；長者版用原老人圖，正常版用年輕家庭圖。 */
body.passenger-ui66-beauty #loginCard .topbar{
  position:relative!important;
  min-height:86px!important;
  padding-right:214px!important;
  overflow:visible!important;
}
body.passenger-ui66-beauty #loginCard .topbar>div:first-child{
  max-width:100%!important;
}
body.passenger-normal-legacy .passenger-size-toggle-login-row{
  position:absolute!important;
  right:0!important;
  top:8px!important;
  width:198px!important;
  padding:0!important;
  margin:0!important;
  display:flex!important;
  justify-content:flex-end!important;
  z-index:4!important;
}
body.passenger-normal-legacy .passenger-size-toggle-login-row .passenger-size-toggle{
  width:198px!important;
  min-width:198px!important;
  min-height:56px!important;
  border-radius:999px!important;
  font-size:19px!important;
  font-weight:1000!important;
  padding:12px 18px!important;
  background:#fff!important;
  color:#173b73!important;
  border:1px solid rgba(191,205,224,.92)!important;
  box-shadow:0 10px 24px rgba(15,23,42,.06)!important;
}
body.passenger-normal-legacy.passenger-size-normal .passenger-size-toggle-login-row .passenger-size-toggle{
  min-height:48px!important;
  font-size:16px!important;
  padding:9px 14px!important;
}
body.passenger-normal-legacy .passenger-size-toggle-app-row{
  justify-content:flex-end!important;
}
@media(max-width:430px){
  body.passenger-ui66-beauty #loginCard .topbar{
    min-height:82px!important;
    padding-right:172px!important;
  }
  body.passenger-normal-legacy .passenger-size-toggle-login-row{
    width:166px!important;
    top:6px!important;
  }
  body.passenger-normal-legacy .passenger-size-toggle-login-row .passenger-size-toggle{
    width:166px!important;
    min-width:166px!important;
    min-height:50px!important;
    font-size:16px!important;
    padding:9px 12px!important;
  }
}
@media(max-width:360px){
  body.passenger-ui66-beauty #loginCard .topbar{
    min-height:0!important;
    padding-right:0!important;
  }
  body.passenger-normal-legacy .passenger-size-toggle-login-row{
    position:relative!important;
    right:auto!important;
    top:auto!important;
    width:100%!important;
    margin-top:10px!important;
    justify-content:flex-start!important;
  }
  body.passenger-normal-legacy .passenger-size-toggle-login-row .passenger-size-toggle{
    width:auto!important;
    min-width:170px!important;
  }
}


/* UI135: 乘客端功能主頁新增登入口人物滿版卡片；首頁長者切換先移除。 */
body.passenger-ui66-beauty #passengerSizeToggleRow,
body.passenger-ui66-beauty #passengerSizeToggle{
  display:none!important;
}
body.passenger-ui66-beauty .ui135-home-welcome-card{
  display:block!important;
  width:100%!important;
  margin:0 0 14px!important;
  padding:0!important;
  border-radius:24px!important;
  overflow:hidden!important;
  background:#eef7ff!important;
  border:1px solid rgba(11,94,215,.12)!important;
  box-shadow:0 14px 30px rgba(15,73,132,.10)!important;
}
body.passenger-ui66-beauty .ui135-home-welcome-card img{
  display:block!important;
  width:100%!important;
  height:auto!important;
  border:0!important;
  margin:0!important;
}
body.passenger-ui66-beauty #appCard #passengerHome{
  margin-top:0!important;
}
body.passenger-normal-legacy.passenger-size-normal .ui135-home-welcome-card{
  border-radius:20px!important;
  margin-bottom:12px!important;
}
@media(max-width:430px){
  body.passenger-ui66-beauty .ui135-home-welcome-card{
    border-radius:18px!important;
    margin:0 0 12px!important;
  }
}

/* UI136B Phase 2 - Commercial Test Platform Dashboard */
body .system-score-card{display:grid;gap:14px;align-content:start;}
body .score-ring{width:154px;height:154px;border-radius:999px;display:grid;place-items:center;font-size:44px;font-weight:1000;letter-spacing:-.04em;background:conic-gradient(#0f766e 0 98%,#e5e7eb 98% 100%);color:#0f172a;box-shadow:inset 0 0 0 14px #fff,0 14px 34px rgba(15,23,42,.12);margin:4px auto 0;}
body .score-ring.score-excellent{background:conic-gradient(#16a34a 0 98%,#e5e7eb 98% 100%);}
body .score-ring.score-good{background:conic-gradient(#0f766e 0 88%,#e5e7eb 88% 100%);}
body .score-ring.score-watch{background:conic-gradient(#f59e0b 0 74%,#e5e7eb 74% 100%);}
body .score-ring.score-danger{background:conic-gradient(#dc2626 0 55%,#e5e7eb 55% 100%);}
body .score-grade{text-align:center;font-size:22px;font-weight:1000;color:#0f172a;}
body .system-test-hero{background:linear-gradient(135deg,#ffffff 0%,#ecfeff 44%,#f5f3ff 100%);}


/* UI136B-5B bilingual system test platform */
body .en-sub{display:block;font-size:12px;font-weight:700;color:#64748b;letter-spacing:.02em;margin-top:3px;}
body .hero-title .en-sub{font-size:15px;color:#475569;margin-top:6px;}
body .view[data-view="system-test"] h2{line-height:1.25;}
body .view[data-view="system-test"] .btn{white-space:normal;line-height:1.25;}

/* UI136B-5B Auto Test Runner dashboard */
body .run-full-card{display:grid!important;grid-template-columns:auto 1fr;gap:2px 10px;align-items:center;text-align:left;min-width:220px;padding:14px 18px!important;border-radius:16px!important;box-shadow:0 12px 28px rgba(15,118,110,.12);} 
body .run-full-card .btn-icon{grid-row:1/4;font-size:28px;line-height:1;} 
body .run-full-card .btn-main{font-size:16px;font-weight:1000;color:#0f172a;} 
body .run-full-card .btn-en{font-size:12px;font-weight:800;color:#475569;} 
body .run-full-card .btn-note{font-size:11px;font-weight:700;color:#64748b;} 
body .auto-test-progress{margin-top:12px;padding:14px;border:1px solid #c7d2fe;background:#eef2ff;border-radius:16px;color:#1e1b4b;} 
body .progress-title{font-weight:1000;font-size:15px;margin-bottom:9px;} 
body .progress-title span{display:block;color:#64748b;font-size:12px;font-weight:800;} 
body .progress-bar{height:12px;border-radius:999px;background:#dbeafe;overflow:hidden;box-shadow:inset 0 0 0 1px rgba(30,64,175,.08);} 
body .progress-bar i{display:block;height:100%;background:linear-gradient(90deg,#0f766e,#22c55e);border-radius:999px;transition:width .3s ease;} 
body .progress-meta{margin-top:8px;font-size:12px;font-weight:800;color:#334155;} 
body .auto-test-summary{margin-top:12px;padding:14px;border:1px solid #bbf7d0;background:#f0fdf4;border-radius:16px;} 
body .summary-grid{display:grid;grid-template-columns:repeat(5,minmax(80px,1fr));gap:10px;margin-bottom:12px;} 
body .summary-grid div{background:#fff;border:1px solid #e2e8f0;border-radius:14px;padding:10px;text-align:center;} 
body .summary-grid b{display:block;font-size:24px;color:#0f172a;} 
body .summary-grid span{display:block;font-size:11px;color:#64748b;font-weight:800;line-height:1.3;} 
body .summary-grid .ok b{color:#16a34a;} body .summary-grid .warn b{color:#f59e0b;} body .summary-grid .fail b{color:#dc2626;} 
body .module-results{display:grid;gap:8px;} 
body .module-result{background:#fff;border-left:6px solid #94a3b8;border-radius:12px;padding:10px;display:grid;grid-template-columns:1fr auto;gap:2px 10px;} 
body .module-result.ok{border-left-color:#16a34a;} body .module-result.fail{border-left-color:#dc2626;} body .module-result.warn{border-left-color:#f59e0b;} 
body .module-result b{font-size:13px;color:#0f172a;} body .module-result span{font-size:12px;font-weight:1000;} body .module-result em{grid-column:1/3;font-size:11px;color:#64748b;font-style:normal;} 
body .coverage-dashboard{display:grid;gap:10px;} 
body .coverage-row{display:grid;grid-template-columns:1fr 160px 44px;align-items:center;gap:10px;padding:10px;border:1px solid #e2e8f0;border-radius:14px;background:#fff;} 
body .coverage-row b{display:block;color:#0f172a;} body .coverage-row span{font-size:12px;color:#64748b;font-weight:800;} body .coverage-row em{font-style:normal;font-weight:1000;color:#0f766e;text-align:right;} 
body .coverage-bar{height:10px;background:#e2e8f0;border-radius:999px;overflow:hidden;} body .coverage-bar i{display:block;height:100%;background:linear-gradient(90deg,#0f766e,#22c55e);border-radius:999px;} 
@media (max-width:760px){body .summary-grid{grid-template-columns:repeat(2,1fr);}body .coverage-row{grid-template-columns:1fr;}}

/* UI136B-5B test report modal */
.modal-backdrop{position:fixed;inset:0;background:rgba(15,23,42,.48);z-index:9999;display:flex;align-items:center;justify-content:center;padding:18px}
.modal-card{background:#fff;border-radius:18px;box-shadow:0 24px 80px rgba(15,23,42,.28);max-height:88vh;overflow:auto;width:min(1080px,96vw);padding:20px;border:1px solid #dbeafe}
.modal-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;border-bottom:1px solid #e2e8f0;margin-bottom:12px;padding-bottom:10px}
.report-modal-card .report-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:12px;margin:10px 0 14px}
.report-modal-card .report-stat{border:1px solid #dbeafe;background:#f8fbff;border-radius:14px;padding:12px}
.report-modal-card .report-stat strong{display:block;font-size:22px;margin-bottom:4px}
.report-modal-card .report-section{border:1px solid #e2e8f0;border-radius:14px;padding:12px;margin:12px 0;background:#fff}
.report-modal-card pre{white-space:pre-wrap;word-break:break-word;max-height:360px;overflow:auto}

/* UI137-9A Operation Alert Center */
body .operation-alert-center{border-top:5px solid #dc2626;background:linear-gradient(180deg,#fff 0%,#fffafa 100%)}
body .alert-policy-row{display:flex;flex-wrap:wrap;gap:8px;margin:12px 0 14px}
body .alert-policy-chip{display:inline-flex;align-items:center;border:1px solid #dbe4f0;border-radius:999px;padding:7px 11px;background:#fff;color:#475569;font-size:12px;font-weight:900}
body .alert-policy-chip.ok{background:#ecfdf3;color:#047857;border-color:#86efac}
body .operation-alert-status{display:grid;gap:5px;margin:14px 0;padding:16px;border-radius:16px;border:1px solid #dbe4f0;background:#f8fafc}
body .operation-alert-status>div{display:flex;justify-content:space-between;align-items:center;gap:12px}
body .operation-alert-status b{font-size:20px;color:#0f172a}
body .operation-alert-status span{font-size:12px;font-weight:1000;border-radius:999px;padding:6px 10px;background:#e2e8f0;color:#334155}
body .operation-alert-status small{color:#64748b;font-weight:700}
body .operation-alert-status.action_required{background:#fef2f2;border-color:#fecaca}.operation-alert-status.action_required span{background:#fee2e2;color:#b91c1c}
body .operation-alert-status.attention{background:#fffbeb;border-color:#fde68a}.operation-alert-status.attention span{background:#fef3c7;color:#b45309}
body .operation-alert-status.notice{background:#eff6ff;border-color:#bfdbfe}.operation-alert-status.notice span{background:#dbeafe;color:#1d4ed8}
body .operation-alert-status.normal{background:#ecfdf3;border-color:#86efac}.operation-alert-status.normal span{background:#d1fae5;color:#047857}
body .operation-alert-legend{display:flex;flex-wrap:wrap;gap:8px;margin:16px 0 12px}
body .operation-severity{display:inline-flex;align-items:center;justify-content:center;border-radius:999px;padding:5px 9px;font-size:11px;font-weight:1000;white-space:nowrap;border:1px solid transparent}
body .operation-severity.critical{background:#fee2e2;color:#b91c1c;border-color:#fecaca}
body .operation-severity.warning{background:#fef3c7;color:#b45309;border-color:#fde68a}
body .operation-severity.info{background:#dbeafe;color:#1d4ed8;border-color:#bfdbfe}
body .operation-severity.pass{background:#d1fae5;color:#047857;border-color:#86efac}
body .operation-alert-list{display:grid;gap:12px;margin:12px 0 18px}
body .operation-alert-card{border:1px solid #dbe4f0;border-left:7px solid #3b82f6;border-radius:16px;background:#fff;padding:15px;box-shadow:0 8px 22px rgba(15,23,42,.04)}
body .operation-alert-card.critical{border-left-color:#dc2626;background:#fffafa}
body .operation-alert-card.warning{border-left-color:#f59e0b;background:#fffdf7}
body .operation-alert-card.info{border-left-color:#3b82f6;background:#f8fbff}
body .operation-alert-card h3{margin:10px 0 6px;color:#0f172a;font-size:18px}
body .operation-alert-card p{margin:0 0 10px;color:#475569;line-height:1.65}
body .operation-alert-card>small{display:block;margin-top:9px;color:#64748b;font-weight:700}
body .operation-alert-card-head{display:flex;justify-content:space-between;align-items:flex-start;gap:12px}
body .operation-alert-card-head>div{display:flex;flex-wrap:wrap;gap:7px;align-items:center}
body .operation-alert-card-head>strong{display:grid;place-items:center;min-width:42px;height:42px;border-radius:12px;background:#f1f5f9;color:#0f172a;font-size:22px}
body .operation-alert-category{font-size:12px;font-weight:900;color:#475569}
body .operation-alert-details{margin:8px 0 10px;padding:10px 10px 10px 28px;border-radius:12px;background:#f8fafc;color:#334155;font-size:12px;line-height:1.6}
body .operation-alert-action{border-radius:12px;padding:10px 12px;background:#f1f5f9;color:#334155;line-height:1.55}
body .operation-alert-all-clear{border:1px solid #86efac;border-left:7px solid #16a34a;border-radius:16px;padding:18px;background:#ecfdf3;color:#047857;line-height:1.65}
@media(max-width:760px){body .operation-alert-status>div,body .operation-alert-card-head{align-items:flex-start;flex-direction:column}body .operation-alert-card-head>strong{min-width:38px;height:38px}}

/* UI137-14 Commercial Operations Suite */
.commercial-suite-card{border-top:4px solid #0f766e}
.suite-toolbar{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin:12px 0}
.suite-toolbar input,.suite-toolbar select{min-height:42px;border:1px solid #cbd5e1;border-radius:10px;padding:8px 10px;background:#fff}
.compact-form{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.compact-form .btn{width:100%}
.commercial-drill-manual{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin:12px 0}
.commercial-drill-manual label{display:flex;gap:8px;align-items:flex-start;border:1px solid #d7e1ec;border-radius:10px;padding:10px;background:#f8fbfd}
.drill-check{display:flex;gap:10px;align-items:flex-start;border:1px solid #d7e1ec;border-radius:10px;padding:10px;margin:7px 0;background:#fff}
.drill-check>span{display:inline-grid;place-items:center;width:28px;height:28px;border-radius:50%;font-weight:800}
.drill-check.pass{border-left:5px solid #16a34a}.drill-check.pass>span{background:#dcfce7;color:#166534}
.drill-check.fail{border-left:5px solid #dc2626}.drill-check.fail>span{background:#fee2e2;color:#991b1b}
#dailyHandoverNote,#commercialDrillNotes{width:100%;border:1px solid #cbd5e1;border-radius:10px;padding:10px;margin:8px 0}
#notificationReadinessBox .notice{margin-bottom:8px}
details{border:1px solid #d7e1ec;border-radius:10px;padding:10px;margin-top:12px;background:#fff}
details summary{font-weight:800;cursor:pointer}
@media(max-width:900px){.commercial-drill-manual,.compact-form{grid-template-columns:1fr}.suite-toolbar>*{width:100%}}

/* UI138-1 Hotfix6: Smart Migration Center moved beside System Test Center. */
.migration-center-shell{padding:14px !important;overflow:hidden}
.migration-center-actions{justify-content:flex-end;margin:0 0 12px}
.migration-center-frame{display:block;width:100%;height:980px;min-height:980px;border:0;border-radius:18px;background:#f3f6fa}
@media(max-width:720px){.migration-center-shell{padding:8px !important}.migration-center-actions{justify-content:stretch}.migration-center-actions .btn{width:100%}.migration-center-frame{min-height:1200px;height:1200px;border-radius:14px}}
.ui141-about-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin:16px 0}
.ui141-about-link{display:block;padding:18px;border-radius:14px;background:#f5f8fc;border:1px solid #dfe7f1;text-decoration:none;color:#174a7e;font-weight:700;text-align:center}
@media(max-width:640px){.ui141-about-grid{grid-template-columns:1fr}}

#passengerHome .ui141-home-about-entry{margin:20px 0 0!important;width:100%;}
#passengerHome .ui141-home-about-entry>[data-open-feature="about"]{display:block!important;width:100%!important;min-height:0!important;padding:10px 12px!important;margin:0!important;text-align:left!important;background:transparent!important;border:0!important;outline:0!important;box-shadow:none!important;border-radius:0!important;color:#153f79!important;font-size:28px!important;font-weight:950!important;line-height:1.25!important;}
#passengerHome .ui141-home-about-entry>[data-open-feature="about"] small{display:block!important;margin-top:10px!important;color:#786a99!important;font-size:16px!important;font-weight:850!important;text-align:left!important;}
@media(max-width:640px){#passengerHome .ui141-home-about-entry>[data-open-feature="about"]{font-size:26px!important;}#passengerHome .ui141-home-about-entry>[data-open-feature="about"] small{font-size:15px!important;}}

/* Closed-beta hardening: class-driven UI state keeps strict CSP compatible. */
.ui-toast{opacity:1;transform:translateY(0);transition:opacity .25s ease,transform .25s ease}
.ui-toast.leaving{opacity:0;transform:translateY(8px)}
.auth-error-notice{margin:12px}
.guest-scan-form{margin-top:16px}

/* UI141 passenger placement cards restored without external Ads runtime. */
/* batch4a：廣告獨立白底板——與 .card 同視覺、水平內距同原頁卡（廣告可視寬不變），垂直不加內距 */
.passenger-ad-board{background:var(--card,#fff);border:1px solid var(--line,#e2e8f0);border-radius:var(--radius,20px);box-shadow:var(--shadow-soft,0 1px 2px rgba(15,23,42,.06));padding:0 15px;margin:0 0 10px;}
.passenger-ad-board[data-ad-board-for="home"]{padding:0 15px;margin:10px 0;--cyc-ad-frame-mt:38px;--cyc-ad-frame-mb:0px;}
/* batch4c：分類頁廣告板改回內容之下——板在頁卡後方，間距由板的上邊距提供 */
.passenger-ad-board[data-ad-board-for^="cat-"]{margin:10px 0 0;}
/* batch4d：回首頁按鈕獨立白底板——視覺同廣告板，間距沿用同一 10px 來源 */
.passenger-back-board{background:var(--card,#fff);border:1px solid var(--line,#e2e8f0);border-radius:var(--radius,20px);box-shadow:var(--shadow-soft,0 1px 2px rgba(15,23,42,.06));padding:12px 15px;margin:10px 0 0;}
/* batch4b：關於我們獨立板（置中；按鈕寬度唯一來源仍在 r38s） */
.passenger-about-board{display:flex;justify-content:center;padding:12px 15px;}
.ui141-ad-frame{margin:18px 0;border:2px solid #d9e6f7;border-radius:18px;overflow:hidden;background:#fff;min-height:150px;box-shadow:0 8px 24px rgba(21,65,110,.08)}
.ui141-ad-link{display:block;color:inherit;text-decoration:none;position:relative}
.ui141-ad-badge{position:absolute;z-index:2;top:10px;left:10px;background:rgba(0,0,0,.68);color:#fff;padding:5px 9px;border-radius:999px;font-size:12px}
.ui141-ad-placeholder{min-height:150px;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:28px;background:linear-gradient(135deg,#eef6ff,#fff7e8);text-align:center;gap:8px}
.ui141-ad-placeholder strong{font-size:24px}.ui141-ad-placeholder span{font-size:15px;color:#52606d}
.ui141-ad-frame img{display:block;width:100%;height:auto;min-height:150px;object-fit:cover}
body.ui141-ads-20-page .ui141-ad-frame{min-height:300px!important;margin:22px 0!important;border-width:2px!important;border-radius:22px!important;box-shadow:0 14px 34px rgba(21,65,110,.13)!important}
body.ui141-ads-20-page .ui141-ad-link{display:block;min-height:300px}
body.ui141-ads-20-page .ui141-ad-placeholder{min-height:300px!important;padding:42px 30px!important}
body.ui141-ads-20-page .ui141-ad-placeholder strong{font-size:30px!important}
body.ui141-ads-20-page .ui141-ad-placeholder span{font-size:17px!important}
body.ui141-ads-20-page .ui141-ad-frame img{display:block;width:100%!important;height:300px!important;min-height:300px!important;object-fit:cover!important;object-position:center!important}
body.ui141-ads-20-page .ui141-ad-badge{top:12px!important;left:12px!important;padding:7px 11px!important;font-size:13px!important}
body.ui141-ads-20-page .ui141-category-ad-frame{margin-top:8px!important}

/* UI90 好康快搜 page restored. */
body.passenger-ui66-beauty.ui90-deals-active #appCard>.ui66-status-card,
body.passenger-ui66-beauty.ui90-deals-active #appCard>.ui66-ad-top{display:none!important}
body.passenger-ui66-beauty .ui90-deals-page{padding:0!important;border:0!important;box-shadow:none!important;background:#f8fbff!important;border-radius:0!important;margin:0!important}
body.passenger-ui66-beauty .ui90-deals-page .passenger-page-bottom-back{display:none!important}
body.passenger-ui66-beauty .ui66-bottom-nav button[data-ui66-nav="deals"] b{font-size:11px!important;white-space:nowrap}
.ui90-deals-shell{background:#f8fbff;color:#08132b;padding:8px 12px 96px;min-height:calc(100vh - 20px);font-family:inherit}
.ui90-deals-head{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:4px 2px 10px;border-bottom:1px solid rgba(15,23,42,.08)}
.ui90-deals-filter{border:0!important;background:#e8f2ff!important;color:#0b5ed7!important;min-height:36px!important;border-radius:13px!important;padding:7px 12px!important;font-weight:1000!important;box-shadow:none!important}
.ui90-deals-hero{margin:14px 4px 12px;padding:20px;border-radius:24px;background:linear-gradient(135deg,#0b66e4,#7c3aed);color:#fff;box-shadow:0 18px 34px rgba(11,102,228,.22)}
.ui90-deals-hero p{margin:0 0 6px;font-size:13px;font-weight:900;opacity:.92}.ui90-deals-hero h2{margin:0;font-size:30px;line-height:1.1;font-weight:1000;color:#fff!important}.ui90-deals-hero span{display:block;margin-top:8px;font-size:14px;font-weight:850;opacity:.95}
.ui90-revenue-card,.ui90-total-card{margin:12px 4px;padding:15px 16px;border-radius:18px;background:#fff;border:1px solid #dde7f3;box-shadow:0 8px 20px rgba(15,23,42,.06)}.ui90-revenue-card b,.ui90-total-card b{display:block;color:#0f2c56;font-size:19px;font-weight:1000}.ui90-revenue-card p,.ui90-total-card p{margin:6px 0 0;color:#475569;font-size:13px;font-weight:800;line-height:1.55}
.ui90-deals-ad-demo{display:grid;grid-template-columns:52px minmax(0,1fr) auto;gap:10px;align-items:center;margin:12px 4px;padding:12px;border-radius:18px;background:linear-gradient(100deg,#fff,#fffaf0 48%,#f0fff8);border:2px dashed #ef4444;box-shadow:0 10px 24px rgba(15,23,42,.08)}.ui90-demo-logo{width:48px;height:48px;border-radius:15px;border:3px solid #118455;color:#118455;display:grid;place-items:center;font-size:25px;font-weight:1000}.ui90-deals-ad-demo b{display:block;color:#04764a;font-size:20px;font-weight:1000}.ui90-deals-ad-demo span{display:block;color:#20304e;font-size:13px;font-weight:900}.ui90-deals-ad-demo em{display:block;font-style:normal;color:#11764b;font-size:11px;font-weight:900;margin-top:4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ui90-deals-ad-demo strong{background:#ecfdf3;color:#15803d;border-radius:999px;padding:6px 10px;font-size:12px;white-space:nowrap}
.ui90-section-title{font-size:22px!important;color:#0f2c56!important;margin:16px 6px 8px!important;font-weight:1000!important}.ui90-package-list{display:grid;gap:9px;margin:0 4px}.ui90-package-card{display:grid;grid-template-columns:44px minmax(0,1fr) 84px;gap:10px;align-items:center;background:#fff;border:1px solid #dde7f3;border-radius:16px;padding:11px;box-shadow:0 7px 16px rgba(15,23,42,.05)}.ui90-package-code{width:42px;height:42px;border-radius:14px;background:#e8f2ff;color:#0b5ed7;display:grid;place-items:center;font-weight:1000}.ui90-package-card b{display:block;font-size:15px;color:#111827;font-weight:1000}.ui90-package-card p{margin:2px 0 0;font-size:12px;color:#475569;font-weight:800}.ui90-package-card small{display:block;margin-top:3px;font-size:11px;color:#64748b;font-weight:800}.ui90-package-card strong{text-align:right;color:#0b5ed7;font-size:13px;font-weight:1000}
.ui90-category-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px;margin:0 4px}.ui90-category-card{background:#fff;border:1px solid #dde7f3;border-radius:16px;padding:13px;box-shadow:0 7px 16px rgba(15,23,42,.05)}.ui90-category-card b{display:block;color:#111827;font-size:16px;font-weight:1000}.ui90-category-card p{margin:6px 0;color:#475569;font-size:12px;font-weight:800;line-height:1.45}.ui90-category-card span{display:block;color:#0b5ed7;font-size:12px;font-weight:1000}
@media(max-width:430px){.ui90-deals-shell{padding:6px 8px 96px}.ui90-deals-hero h2{font-size:27px}.ui90-deals-ad-demo{grid-template-columns:48px minmax(0,1fr)}.ui90-deals-ad-demo strong{grid-column:1/-1;text-align:center}.ui90-package-card{grid-template-columns:40px minmax(0,1fr)}.ui90-package-card strong{grid-column:1/-1;text-align:left}.ui90-category-grid{grid-template-columns:1fr}}

/* UI141 R14: independent CYC Ads public feed playback. */
body.ui141-ads-20-page .ui141-ad-frame{
  position:relative!important;
  width:100%!important;
  min-height:0!important;
  aspect-ratio:16/5;
  background:#edf4fb!important;
  isolation:isolate;
}
body.ui141-ads-20-page .ui141-ad-link{
  display:block!important;
  width:100%!important;
  min-height:0!important;
  aspect-ratio:16/5;
  overflow:hidden;
}
body.ui141-ads-20-page .ui141-ad-frame.ui141-ad-mobile,
body.ui141-ads-20-page .ui141-ad-frame.ui141-ad-mobile .ui141-ad-link{
  aspect-ratio:4/3;
}
body.ui141-ads-20-page .ui141-ad-frame img{
  display:block!important;
  width:100%!important;
  height:100%!important;
  min-height:0!important;
  aspect-ratio:inherit;
  object-fit:cover!important;
  object-position:center!important;
}
body.ui141-ads-20-page .ui141-ad-loading::after{
  content:'廣告載入中…';
  position:absolute;
  inset:0;
  z-index:-1;
  display:grid;
  place-items:center;
  color:#617389;
  font-size:14px;
  font-weight:800;
}
body.ui141-ads-20-page .ui141-ad-frame.ui141-ad-empty-state{
  aspect-ratio:auto;
  min-height:54px!important;
  margin:12px 0!important;
  border-style:dashed!important;
  box-shadow:none!important;
  background:#f7f9fc!important;
}
.ui141-ad-empty{
  min-height:54px;
  display:grid;
  place-items:center;
  color:#6b7788;
  font-size:14px;
  font-weight:800;
}

/* UI141 R15: restore the 4:3 large-carousel canvas shown by the CYC Ads placement-7 template. */
body.passenger-ui66-beauty .passenger-entry-association-logo{
  width:150px!important;
  height:150px!important;
  max-width:150px!important;
  max-height:150px!important;
}
@media(max-width:680px){
  body.passenger-ui66-beauty .passenger-entry-association-logo{
    width:138px!important;
    height:138px!important;
    max-width:138px!important;
    max-height:138px!important;
  }
}
body.ui141-ads-20-page .ui141-ad-frame,
body.ui141-ads-20-page .ui141-ad-frame.ui141-ad-mobile{
  height:auto!important;
  min-height:0!important;
  aspect-ratio:4/3!important;
}
body.ui141-ads-20-page .ui141-ad-link,
body.ui141-ads-20-page .ui141-ad-frame.ui141-ad-mobile .ui141-ad-link{
  height:100%!important;
  min-height:0!important;
  aspect-ratio:4/3!important;
}
body.ui141-ads-20-page .ui141-ad-frame img{
  height:100%!important;
  min-height:0!important;
  aspect-ratio:4/3!important;
  object-fit:cover!important;
}
body.ui141-ads-20-page .ui141-ad-frame.ui141-ad-empty-state{
  height:auto!important;
  min-height:54px!important;
  aspect-ratio:auto!important;
}

/* UI141 R16: passenger header identity and restored large-ad placement order. */
body.passenger-ui66-beauty #appCard>.ui66-status-card .ui66-association-logo{
  display:block!important;
  width:44px!important;
  height:44px!important;
  flex:0 0 44px!important;
  object-fit:contain!important;
  border-radius:50%!important;
  background:#fff!important;
  box-shadow:0 7px 16px rgba(11,94,215,.14)!important;
}
body.passenger-ui66-beauty #appCard>.ui66-status-card .ui66-brand-text .badge{
  font-size:19.5px!important;
  line-height:1.2!important;
  padding:4px 14px!important;
  white-space:nowrap!important;
}
body.passenger-ui66-beauty #appCard>.ui66-status-card #passengerSummary{
  font-size:15px!important;
  line-height:1.35!important;
  margin:2px 0 0!important;
  font-weight:850!important;
  max-width:100%!important;
  white-space:nowrap!important;
  overflow:hidden!important;
  text-overflow:ellipsis!important;
}
@media(max-width:430px){
  body.passenger-ui66-beauty #appCard>.ui66-status-card .ui66-association-logo{
    width:40px!important;
    height:40px!important;
    flex-basis:40px!important;
  }
  body.passenger-ui66-beauty #appCard>.ui66-status-card .ui66-brand-text .badge{
    font-size:18px!important;
    padding:3px 12px!important;
  }
}

/* UI141 R17: all public Ads creatives keep their complete foreground image.
   The source image is repeated only as a softened background to fill the
   fixed 4:3 large panel; each carousel render creates a fresh pair. */
body.ui141-ads-20-page .ui141-ad-link{
  position:relative!important;
  display:grid!important;
  width:100%!important;
  height:100%!important;
  min-height:0!important;
  place-items:center!important;
  overflow:hidden!important;
  isolation:isolate;
  background:#10263b!important;
}
body.ui141-ads-20-page .ui141-ad-link::after{
  content:'';
  position:absolute;
  inset:0;
  z-index:1;
  pointer-events:none;
  background:linear-gradient(180deg,rgba(7,20,34,.14),rgba(7,20,34,.24));
}
body.ui141-ads-20-page .ui141-ad-frame img.ui141-ad-background{
  position:absolute!important;
  inset:-9%!important;
  z-index:0!important;
  display:block!important;
  width:118%!important;
  max-width:none!important;
  height:118%!important;
  min-height:0!important;
  aspect-ratio:auto!important;
  object-fit:cover!important;
  object-position:center!important;
  -webkit-filter:blur(20px) saturate(.92) brightness(.74)!important;
  filter:blur(20px) saturate(.92) brightness(.74)!important;
  opacity:.72!important;
  transform:scale(1.04);
  pointer-events:none!important;
  user-select:none!important;
}
body.ui141-ads-20-page .ui141-ad-frame img.ui141-ad-foreground{
  position:relative!important;
  z-index:2!important;
  display:block!important;
  width:100%!important;
  height:100%!important;
  max-height:100%!important;
  min-height:0!important;
  aspect-ratio:auto!important;
  object-fit:contain!important;
  object-position:center!important;
  background:transparent!important;
}
body.ui141-ads-20-page .ui141-ad-frame .ui141-ad-badge{
  z-index:3!important;
}

/* UI141 R31 V4: A-T distributed six-second rotation and CYC recruitment full-panel adapter. */
body.ui141-ads-20-page .ui141-ad-media {
  position: relative;
  display: block;
  width: 100%;
  height: 300px;
  min-height: 300px;
  overflow: hidden;
  background: #eef6ff;
}

body.ui141-ads-20-page .ui141-ad-media .ui141-ad-banner {
  display: block;
  width: 100% !important;
  height: 300px !important;
  min-height: 300px !important;
  object-fit: cover !important;
  object-position: center !important;
}

body.ui141-ads-20-page .ui141-ad-photo-fill {
  display: none;
}

@media (max-width: 640px) {
  body.ui141-ads-20-page .ui141-ad-media--cyc-recruitment {
    display: grid;
    grid-template-rows: auto minmax(0, 1fr);
    height: 300px;
    min-height: 300px;
    background: #eaf5ff;
  }

  body.ui141-ads-20-page .ui141-ad-media--cyc-recruitment .ui141-ad-banner {
    position: relative;
    z-index: 1;
    width: 100% !important;
    height: auto !important;
    min-height: 0 !important;
    max-height: 138px !important;
    object-fit: contain !important;
    object-position: center top !important;
    background: #eef7ff;
  }

  body.ui141-ads-20-page .ui141-ad-media--cyc-recruitment .ui141-ad-photo-fill {
    position: relative;
    display: block;
    width: 100%;
    height: 100%;
    min-height: 0;
    object-fit: cover;
    object-position: right center;
    background-color: #dfefff;
  }
}

/* UI141 R33 V1: ten distinct 8:7 industry creatives use one image per passenger panel. */
body.ui141-ads-20-page .ui141-ad-media--cyc-recruitment {
  position: relative !important;
  display: block !important;
  width: 100% !important;
  height: 300px !important;
  min-height: 300px !important;
  overflow: hidden !important;
  background: #eaf5ff !important;
}

body.ui141-ads-20-page .ui141-ad-media--cyc-recruitment .ui141-ad-banner {
  position: relative !important;
  display: block !important;
  width: 100% !important;
  height: 300px !important;
  min-height: 300px !important;
  max-height: none !important;
  object-fit: cover !important;
  object-position: center center !important;
  background: #eaf5ff !important;
}

body.ui141-ads-20-page .ui141-ad-media--cyc-recruitment .ui141-ad-photo-fill {
  display: none !important;
}

/* UI141 R34 V1: accepted carousel metadata is no longer shown over passenger creatives. */
body.ui141-ads-20-page .ui141-ad-badge,
.ui141-ad-frame .ui141-ad-badge {
  display: none !important;
  visibility: hidden !important;
}

/* UI141 R35: privacy-preserving CWA commute weather inside the passenger status card. */
body.passenger-ui66-beauty #commuteWeatherCard {
  grid-column: 1 / -1 !important;
  display: grid !important;
  grid-template-columns: minmax(0, 1fr) auto !important;
  gap: 8px 14px !important;
  width: 100% !important;
  min-width: 0 !important;
  margin: 4px 0 0 !important;
  padding: 12px 14px !important;
  box-sizing: border-box !important;
  border: 1px solid rgba(11, 94, 215, .16) !important;
  border-radius: var(--radius) !important;
  background: linear-gradient(135deg, rgba(232, 247, 255, .98), rgba(245, 251, 255, .98)) !important;
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, .88) !important;
  color: #173553 !important;
}
/* batch3z：左＝圖示＋（地點／天氣描述／降雨機率），右上＝溫度大字 */
body.passenger-ui66-beauty #commuteWeatherCard .commute-weather-main {
  display: grid !important;
  grid-template-columns: auto minmax(0, 1fr) auto !important;
  align-items: start !important;
  gap: 4px 10px !important;
  min-width: 0 !important;
}
body.passenger-ui66-beauty #commuteWeatherCard .commute-weather-icon {
  display: grid !important;
  place-items: center !important;
  width: 42px !important;
  height: 42px !important;
  font-size: 28px !important;
  line-height: 1 !important;
  border-radius: 13px !important;
  background: rgba(255, 255, 255, .78) !important;
}
body.passenger-ui66-beauty #commuteWeatherCard .commute-weather-copy {
  display: grid !important;
  gap: 1px !important;
  min-width: 0 !important;
}
body.passenger-ui66-beauty #commuteWeatherCard .commute-weather-eyebrow {
  font-size: 11px !important;
  line-height: 1.25 !important;
  font-weight: 800 !important;
  letter-spacing: .04em !important;
  color: #36709f !important;
}
body.passenger-ui66-beauty #commuteWeatherCard #commuteWeatherPlace {
  overflow: hidden !important;
  font-size: 25px !important;
  line-height: 1.15 !important;
  font-weight: 900 !important;
  white-space: nowrap !important;
  text-overflow: ellipsis !important;
  color: #123f68 !important;
}
body.passenger-ui66-beauty #commuteWeatherCard #commuteWeatherText {
  overflow: hidden !important;
  font-size: 21px !important;
  line-height: 1.2 !important;
  white-space: nowrap !important;
  text-overflow: ellipsis !important;
  color: #375f7f !important;
}
body.passenger-ui66-beauty #commuteWeatherCard .commute-weather-temperature {
  font-size: 39px !important;
  line-height: 1 !important;
  font-weight: 950 !important;
  color: #0b5ed7 !important;
}
body.passenger-ui66-beauty #commuteWeatherCard .commute-weather-details {
  margin: 0 !important;
  font-size: 22px !important;
  line-height: 1.2 !important;
  font-weight: 900 !important;
  color: #35597a !important;
}
body.passenger-ui66-beauty #commuteWeatherCard .commute-weather-tabs {
  grid-column: 2 !important;
  grid-row: 1 / 3 !important;
  display: grid !important;
  grid-template-columns: repeat(3, minmax(66px, auto)) !important;
  align-content: center !important;
  gap: 6px !important;
}
body.passenger-ui66-beauty #commuteWeatherCard .commute-weather-tab {
  position: relative !important;
  z-index: 0 !important;
  min-height: 44px !important;
  margin: 0 !important;
  padding: 7px 9px !important;
  border: 0 !important;
  border-radius: 12px !important;
  background: transparent !important;
  box-shadow: none !important;
  font-size: 13px !important;
  line-height: 1.2 !important;
  font-weight: 850 !important;
  color: #245a87 !important;
}
/* 視覺藥丸縮小為 30px，點擊區維持按鈕本體 44px（batch3x） */
body.passenger-ui66-beauty #commuteWeatherCard .commute-weather-tab::before {
  content: "";
  position: absolute;
  left: 0;
  right: 0;
  top: 50%;
  transform: translateY(-50%);
  height: 24px;
  border: 1px solid rgba(11, 94, 215, .2);
  border-radius: 10px;
  background: rgba(255, 255, 255, .9);
  z-index: -1;
}
body.passenger-ui66-beauty #commuteWeatherCard .commute-weather-tab.is-active {
  color: #fff !important;
}
body.passenger-ui66-beauty #commuteWeatherCard .commute-weather-tab.is-active::before {
  border-color: #0b5ed7;
  background: #0b5ed7;
}
body.passenger-ui66-beauty #commuteWeatherCard .commute-weather-tab:focus-visible {
  outline: 3px solid rgba(11, 94, 215, .28) !important;
  outline-offset: 2px !important;
}
body.passenger-ui66-beauty #commuteWeatherCard .commute-weather-foot {
  grid-column: 1 / -1 !important;
  display: flex !important;
  align-items: center !important;
  justify-content: space-between !important;
  gap: 8px !important;
  padding-top: 2px !important;
  border-top: 1px solid rgba(34, 91, 134, .1) !important;
  font-size: 10.5px !important;
  line-height: 1.35 !important;
  color: #668096 !important;
}
body.passenger-ui66-beauty #commuteWeatherCard #refreshCommuteWeather {
  min-height: 26px !important;
  padding: 4px 8px !important;
  font-size: 10.5px !important;
}
body.passenger-ui66-beauty #commuteWeatherCard .commute-weather-notice {
  grid-column: 1 / -1 !important;
  margin: 0 !important;
  padding: 6px 8px !important;
  border-radius: 8px !important;
  background: rgba(255, 255, 255, .72) !important;
  font-size: 11px !important;
  line-height: 1.4 !important;
  color: #23614d !important;
}
body.passenger-ui66-beauty #commuteWeatherCard .commute-weather-notice.is-warning {
  background: #fff8e7 !important;
  color: #8a5400 !important;
}
body.passenger-ui66-beauty #commuteWeatherCard .commute-weather-source {
  grid-column: 1 / -1 !important;
  justify-self: end !important;
  font-size: 10px !important;
  line-height: 1.3 !important;
  color: #567b98 !important;
  text-decoration: none !important;
}
@media (max-width: 560px) {
  body.passenger-ui66-beauty #commuteWeatherCard {
    grid-template-columns: 1fr !important;
    gap: 8px !important;
    padding: 11px 10px !important;
  }
  body.passenger-ui66-beauty #commuteWeatherCard .commute-weather-main,
  body.passenger-ui66-beauty #commuteWeatherCard .commute-weather-details,
  body.passenger-ui66-beauty #commuteWeatherCard .commute-weather-tabs {
    grid-column: 1 !important;
  }
  body.passenger-ui66-beauty #commuteWeatherCard .commute-weather-tabs {
    grid-row: auto !important;
    grid-template-columns: repeat(3, minmax(0, 1fr)) !important;
  }
  body.passenger-ui66-beauty #commuteWeatherCard .commute-weather-tab {
    min-width: 0 !important;
    padding: 7px 3px !important;
    white-space: nowrap !important;
  }
  body.passenger-ui66-beauty #commuteWeatherCard .commute-weather-current {
    font-size: 11px !important;
  }
}
@media (max-width: 360px) {
  body.passenger-ui66-beauty #commuteWeatherCard .commute-weather-temperature { font-size: 36px !important; }
  body.passenger-ui66-beauty #commuteWeatherCard #commuteWeatherPlace { font-size: 23px !important; }
  body.passenger-ui66-beauty #commuteWeatherCard .commute-weather-icon { width: 38px !important; height: 38px !important; font-size: 25px !important; }
}

/* UI141 R37: MP4/H.264 ads occupy at least two contiguous six-second slots. */
body.ui141-ads-20-page .ui141-ad-media--video,
body.ui141-ads-20-page .ui141-ad-media--video .ui141-ad-video {
  display: block !important;
  width: 100% !important;
  height: 300px !important;
  min-height: 300px !important;
  max-height: 300px !important;
  overflow: hidden !important;
  object-fit: cover !important;
  object-position: center center !important;
  opacity: 1 !important;
  filter: none !important;
  -webkit-filter: none !important;
  background: #071827 !important;
}

/* UI141 R37 FINAL2: CYC recruitment creatives display at source brightness. */
body.ui141-ads-20-page .ui141-ad-media--cyc-recruitment {
  position: relative !important;
  z-index: 2 !important;
  opacity: 1 !important;
  -webkit-filter: none !important;
  filter: none !important;
  mix-blend-mode: normal !important;
}

body.ui141-ads-20-page .ui141-ad-media--cyc-recruitment .ui141-ad-banner {
  position: relative !important;
  z-index: 2 !important;
  opacity: 1 !important;
  -webkit-filter: none !important;
  filter: none !important;
  mix-blend-mode: normal !important;
}

/* Remove the legacy full-frame veil only when the panel contains one of the
   ten CYC recruitment creatives. Other public Ads retain their own styling. */
@supports selector(.ui141-ad-link:has(.ui141-ad-media--cyc-recruitment)) {
  body.ui141-ads-20-page .ui141-ad-link:has(.ui141-ad-media--cyc-recruitment)::after {
    content: none !important;
    display: none !important;
    background: none !important;
    opacity: 0 !important;
  }
}

/* R38J_PASSENGER_ROUTE_TABS_BEGIN */
.ui88-route-tabs button{
  padding:8px 5px!important;
  line-height:1.2!important;
  white-space:normal!important;
  overflow-wrap:anywhere;
}
@media(max-width:430px){
  .ui88-route-tabs button{
    min-height:52px!important;
    padding:7px 3px!important;
    font-size:14px!important;
  }
}
/* R38J_PASSENGER_ROUTE_TABS_END */
