/*
 * my/assets/my.css — 世新校務服務入口：設計規範與共用元件
 *   顏色一律用變數（--wine 主色、--wine-d 深色、--wine-l 淺色、--wine-rgb 給半透明用）；
 *   主版型 my_head() 依目前系統的主題色（後台可改）輸出這幾個變數，所以各系統只會換色、元件長相一致。
 *   版面類別沿用 ge-*（學位考試最早用的命名），各系統共用。
 */
:root{ --wine:#8c2039; --wine-d:#701a2e; --wine-l:#f8eef1; --wine-rgb:140,32,57; --wine-tl:#c78a99; --ink:#1f2430; --ink2:#374151; --mute:#6b7280; --line:#e6e8ee; --line2:#f0f1f4; --bg:#f3f4f7; --card:#fff; --card2:#f7f8fa;
       --wine-t:var(--wine); }
/* 深色模式（頁首調色盤切換；data-theme 由 head 裡的小程式設定） */
html[data-theme=dark]{ color-scheme:dark; --ink:#e6e8eb; --ink2:#c9cfd6; --mute:#9aa3ad; --line:#30363d; --line2:#262b31; --bg:#0f1216; --card:#181c21; --card2:#20252c;
       --wine-l:rgba(var(--wine-rgb),.22); --wine-t:var(--wine-tl); }

  html{ scroll-behavior:smooth; }
  body{ background:var(--bg); color:var(--ink); -webkit-tap-highlight-color:transparent;
        font-family:"Noto Sans TC","PingFang TC","Microsoft JhengHei","Heiti TC",system-ui,-apple-system,"Segoe UI",sans-serif; font-size:1rem; line-height:1.65; }
  a{ color:var(--wine-t); text-decoration:none; } a:hover{ color:var(--wine-d); text-decoration:underline; }
  html[data-theme=dark] a:hover{ color:var(--wine-tl); filter:brightness(1.15); }
  .text-wine{ color:var(--wine-t) !important; }

  /* 頁首 */
  .ge-top{ background:linear-gradient(135deg,var(--wine) 0%,var(--wine-d) 100%); color:#fff; box-shadow:0 2px 8px rgba(0,0,0,.18); }
  .ge-top-in{ max-width:920px; margin:0 auto; padding:12px 16px; display:flex; align-items:center; justify-content:space-between; gap:12px; }
  .ge-brand{ color:#fff !important; text-decoration:none !important; display:inline-flex; align-items:center; gap:10px; }
  .ge-brand .ic{ width:38px; height:38px; border-radius:10px; background:rgba(255,255,255,.16); display:inline-flex; align-items:center; justify-content:center; font-size:1.15rem; }
  .ge-brand .nm{ font-weight:700; font-size:1.05rem; line-height:1.2; letter-spacing:.5px; }
  .ge-brand .og{ font-size:.72rem; opacity:.85; }
  /* Logo（後台「入口網站設定」上傳）：icon＝放在名稱左邊的方塊；wide＝整條 Logo 取代名稱 */
  .ge-brand .ic.ic-img{ background:transparent; overflow:hidden; }
  .ge-brand .ic.ic-img img{ max-width:100%; max-height:100%; object-fit:contain; display:block; }
  .ge-brand .ic.ic-img.bg-w{ background:#fff; padding:3px; }
  .ge-brand .my-logo-wide{ height:42px; max-width:280px; object-fit:contain; display:block; }
  .ge-brand .my-logo-wide.bg-w{ background:#fff; padding:4px 8px; border-radius:8px; box-sizing:content-box; height:36px; }

  /* 登入者列與功能列 */
  .ge-user{ display:flex; align-items:center; justify-content:space-between; gap:10px; flex-wrap:wrap; margin-bottom:10px; font-size:.92rem; }
  .ge-user .who{ display:inline-flex; align-items:center; gap:10px; min-width:0; }
  .ge-user .av{ width:36px; height:36px; border-radius:50%; background:var(--wine-l); color:var(--wine); display:inline-flex; align-items:center; justify-content:center; flex:none; }
  .ge-user .nm{ font-weight:700; line-height:1.25; } .ge-user .sub{ color:var(--mute); font-size:.8rem; line-height:1.2; word-break:break-all; }
  .ge-user .out{ color:var(--mute); border:1px solid var(--line); background:var(--card); border-radius:999px; padding:4px 12px; font-size:.82rem; white-space:nowrap; }
  .ge-user .out:hover{ color:var(--wine); border-color:var(--wine); text-decoration:none; }
  .ge-nav{ display:flex; gap:6px; overflow-x:auto; padding:2px 0 10px; margin-bottom:6px; scrollbar-width:none; -webkit-overflow-scrolling:touch; }
  .ge-nav::-webkit-scrollbar{ display:none; }
  .ge-nav a{ flex:none; padding:7px 14px; border-radius:999px; background:var(--card); border:1px solid var(--line); color:var(--ink2); font-size:.9rem; white-space:nowrap; }
  .ge-nav a:hover{ border-color:var(--wine); color:var(--wine); text-decoration:none; }
  .ge-nav a.on{ background:var(--wine); border-color:var(--wine); color:#fff; font-weight:600; }
  .ge-nav a i{ margin-right:5px; opacity:.85; }

  /* 版面與卡片 */
  .ge-wrap{ max-width:920px; margin:0 auto; padding:16px 14px 8px; }
  .ge-wrap.wide, .ge-top-in.wide{ max-width:1140px; }
  .ge-card{ border:1px solid var(--line); border-radius:14px; padding:20px 22px; margin-bottom:16px; background:var(--card); box-shadow:0 1px 2px rgba(16,24,40,.04); }
  .ge-card > h5:first-child, .ge-card > h4:first-child{ font-weight:700; padding-bottom:10px; margin-bottom:14px !important; border-bottom:1px solid var(--line2); display:flex; align-items:center; flex-wrap:wrap; gap:4px 8px; }
  .ge-card > h5:first-child{ font-size:1.08rem; } .ge-card > h4:first-child{ font-size:1.2rem; }
  .ge-card > h5:first-child > i, .ge-card > h4:first-child > i{ width:30px; height:30px; border-radius:8px; background:var(--wine-l); display:inline-flex; align-items:center; justify-content:center; font-size:.9rem; margin-right:2px !important; flex:none; }
  .ge-card.border-success{ border-left:5px solid #198754 !important; } .ge-card.border-danger{ border-left:5px solid #dc3545 !important; }
  .ge-card.border-warning{ border-left:5px solid #f59e0b !important; } .ge-card.border-secondary{ border-left:5px solid #9ca3af !important; }
  form.ge-card{ display:block; }

  /* 按鈕 */
  .btn{ border-radius:9px; font-weight:500; } .btn-sm{ border-radius:8px; padding:.32rem .75rem; } .btn-lg{ border-radius:11px; font-size:1.05rem; padding:.6rem 1.4rem; }
  .btn-wine{ background:var(--wine); border-color:var(--wine); color:#fff; box-shadow:0 1px 2px rgba(var(--wine-rgb),.25); }
  .btn-wine:hover, .btn-wine:focus, .btn-wine:active{ background:var(--wine-d) !important; border-color:var(--wine-d) !important; color:#fff !important; text-decoration:none; }
  .btn-wine:disabled, .btn-wine.disabled{ background:#c9a3ad; border-color:#c9a3ad; color:#fff; box-shadow:none; }
  .btn-outline-wine{ background:var(--card); border:1px solid var(--wine); color:var(--wine-t); }
  .btn-outline-wine:hover, .btn-outline-wine:focus, .btn-outline-wine:active{ background:var(--wine) !important; border-color:var(--wine) !important; color:#fff !important; text-decoration:none; }
  .btn-outline-wine:disabled, .btn-outline-wine.disabled{ background:var(--card); border-color:#d9b9c1; color:#c9a3ad; }
  summary.btn{ list-style:none; } summary.btn::-webkit-details-marker{ display:none; }
  details[open] > summary.btn-outline-wine{ background:var(--wine); color:#fff; }
  .btn:focus-visible{ box-shadow:0 0 0 .22rem rgba(var(--wine-rgb),.25); }
  a.btn:hover{ text-decoration:none; }

  /* 表單 */
  .form-control, .form-select{ border-radius:9px; border-color:#d5d9e2; padding:.5rem .75rem; }
  .form-select{ padding-right:2.25rem; background-position:right .7rem center; }   /* 右側箭頭不要蓋到選項文字 */
  .form-select-sm{ padding:.3rem 2rem .3rem .6rem; min-width:4.2rem; }
  .form-control:focus, .form-select:focus{ border-color:var(--wine); box-shadow:0 0 0 .2rem rgba(var(--wine-rgb),.14); }
  .form-check-input:checked{ background-color:var(--wine); border-color:var(--wine); }
  .form-check-input:focus{ border-color:var(--wine); box-shadow:0 0 0 .2rem rgba(var(--wine-rgb),.14); }
  .form-check-input{ width:1.15em; height:1.15em; }
  .form-label{ margin-bottom:.3rem; } .form-text{ color:var(--mute); }
  /* 必填：標籤後的紅色 *、未填的紅框與說明（ctld-required.js） */
  .ge-req{ color:#dc3545; font-weight:700; margin-left:3px; }
  .ge-req-msg{ color:#dc3545; font-size:.82rem; margin-top:3px; }
  .form-control.is-invalid, .form-select.is-invalid{ border-color:#dc3545 !important; box-shadow:0 0 0 .18rem rgba(220,53,69,.15); }
  .form-check-input.is-invalid{ border-color:#dc3545; box-shadow:0 0 0 .15rem rgba(220,53,69,.2); }
  .form-check-input.is-invalid ~ .form-check-label{ color:#b02a37; }
  /* 上傳欄位：酒紅邊線（按鈕本身是瀏覽器的「選擇檔案」） */
  input[type=file].form-control{ padding:.35rem .5rem; border:1.5px solid var(--wine); background-color:var(--card); cursor:pointer; }
  input[type=file].form-control:hover{ background-color:var(--wine-l); }
  input[type=file].form-control::file-selector-button{ margin:0 .7rem 0 0; margin-inline-end:.7rem; padding:.3rem .8rem; border:0; border-radius:7px;
      color:#fff; font-weight:600; cursor:pointer; background:var(--wine); }
  input[type=file].form-control:hover:not(:disabled):not([readonly])::file-selector-button{ background-color:var(--wine-d); }
  input[type=file].form-control-sm::file-selector-button{ padding:.2rem .7rem; }
  input[type=file].form-control:disabled{ border-color:#d5d9e2; cursor:not-allowed; }
  input[type=file].form-control:disabled::file-selector-button{ background-color:#9ca3af; cursor:not-allowed; }

  /* 表格、標籤、提示 */
  .table{ --bs-table-bg:transparent; margin-bottom:0; } .table > :not(caption) > * > *{ padding:.55rem .6rem; border-bottom-color:var(--line2); }
  .table thead th{ background:var(--card2); color:var(--mute); font-weight:600; font-size:.85rem; border-bottom:1px solid var(--line) !important; white-space:nowrap; }
  .table tbody tr:last-child > *{ border-bottom:0; }
  .table-bordered > :not(caption) > * > *{ border-color:#e9ebf0; }
  .table-responsive{ border:1px solid var(--line); border-radius:10px; }
  .badge{ font-weight:600; border-radius:999px; padding:.38em .75em; letter-spacing:.3px; }
  .alert{ border-radius:0 10px 10px 0; border-width:0 0 0 4px; }   /* 左側色條直的，只有右邊圓角 */
  .alert-success{ background:#ecfdf3; color:#0f5132; border-color:#22a35a; } .alert-warning{ background:#fff8e6; color:#6b4a00; border-color:#f59e0b; }
  .alert-danger{ background:#fdeeee; color:#842029; border-color:#dc3545; } .alert-info{ background:#eef6ff; color:#0b4a78; border-color:#3b82f6; }
  .alert-secondary{ background:#f3f4f6; color:#374151; border-color:#9ca3af; } .alert-light{ background:#fafafa; border-color:#d1d5db; }

  /* 進度條（首頁） */
  .ge-steps{ display:flex; list-style:none; padding:0; margin:4px 0 2px; }
  .ge-steps li{ flex:1; text-align:center; position:relative; font-size:.82rem; color:var(--mute); padding-top:38px; line-height:1.3; }
  .ge-steps li::before{ content:attr(data-n); position:absolute; top:0; left:50%; transform:translateX(-50%); width:30px; height:30px; border-radius:50%; background:var(--line); color:var(--mute); font-weight:700; display:flex; align-items:center; justify-content:center; z-index:1; }
  .ge-steps li::after{ content:""; position:absolute; top:14px; left:-50%; width:100%; height:3px; background:var(--line); }
  .ge-steps li:first-child::after{ display:none; }
  .ge-steps li.done{ color:#198754; } .ge-steps li.done::before{ content:"\2713"; background:#198754; color:#fff; } .ge-steps li.done::after{ background:#198754; }
  .ge-steps li.cur{ color:var(--wine-t); font-weight:700; } .ge-steps li.cur::before{ background:var(--wine); color:#fff; box-shadow:0 0 0 5px rgba(var(--wine-rgb),.15); } .ge-steps li.cur::after{ background:#198754; }
  .ge-next{ background:var(--wine-l); border-radius:10px; padding:10px 14px; margin-top:14px; font-size:.95rem; display:flex; align-items:center; justify-content:space-between; gap:10px; flex-wrap:wrap; }

  /* 入口頁 */
  /* 頁面中間的大 Logo（my_logo_badge） */
  .my-badge{ width:64px; height:64px; border-radius:50%; background:var(--wine); color:#fff; font-size:1.7rem; display:inline-flex; align-items:center; justify-content:center; margin-bottom:.5rem; overflow:hidden; }
  .my-badge.img{ border-radius:16px; width:72px; height:72px; padding:8px; }
  .my-badge.img img{ max-width:100%; max-height:100%; object-fit:contain; display:block; }
  .my-badge.wide{ width:auto; height:auto; max-width:min(320px,100%); padding:10px 16px; }
  .my-badge.wide img{ height:48px; max-width:100%; }
  .my-badge.bg-w{ background:#fff; border:1px solid var(--line); box-shadow:0 2px 8px rgba(0,0,0,.06); }
  .ge-hero{ background:var(--card); border:1px solid var(--line); border-radius:16px; padding:28px 24px; margin-bottom:16px; text-align:center; }
  .ge-hero h2{ font-weight:800; font-size:1.5rem; color:var(--wine-t); margin-bottom:8px; }
  .ge-tiles{ display:grid; grid-template-columns:repeat(auto-fit,minmax(200px,1fr)); gap:12px; margin-bottom:16px; }
  .ge-tile{ background:var(--card); border:1px solid var(--line); border-radius:14px; padding:16px; font-size:.9rem; color:var(--ink2); }
  .ge-tile i{ color:var(--wine-t); font-size:1.25rem; margin-bottom:8px; display:block; } .ge-tile b{ display:block; font-size:1rem; margin-bottom:2px; color:var(--ink); }

  /* 申請表：分段編號、尚未送出的提示、固定在底部的送出列 */
  .ge-no{ width:26px; height:26px; border-radius:50%; background:var(--wine); color:#fff; font-size:.85rem; font-weight:700; display:inline-flex; align-items:center; justify-content:center; flex:none; margin-right:6px; }
  .ge-todo{ display:grid; grid-template-columns:repeat(auto-fit,minmax(150px,1fr)); gap:8px; margin-top:10px; }
  .ge-todo a{ display:flex; align-items:center; gap:8px; padding:8px 10px; border-radius:10px; background:var(--card); border:1px solid var(--line); color:var(--ink); font-size:.9rem; }
  .ge-todo a:hover{ border-color:var(--wine); text-decoration:none; }
  .ge-todo a.ok i{ color:#198754; } .ge-todo a.no i{ color:#d97706; }
  .ge-todo small{ display:block; color:var(--mute); font-size:.76rem; line-height:1.2; }
  .ge-stick{ position:fixed; left:0; right:0; bottom:0; z-index:1030; background:var(--card); border-top:1px solid var(--line); box-shadow:0 -4px 14px rgba(16,24,40,.08); }
  .ge-stick-in{ max-width:920px; margin:0 auto; padding:10px 14px; display:flex; align-items:center; justify-content:space-between; gap:10px; }
  .ge-stick .st{ font-size:.92rem; line-height:1.3; } .ge-stick .st b{ color:var(--wine-t); }
  body.has-stick{ padding-bottom:76px; }

  footer.ge-foot{ text-align:center; color:var(--mute); padding:18px 12px 26px; font-size:.74rem; line-height:1.8; }

  /* 頁首：入口名稱、目前系統、登入者 */
  .ge-top-in{ flex-wrap:wrap; }
  .my-app{ display:inline-flex; align-items:center; gap:6px; color:#fff !important; background:rgba(255,255,255,.14); border-radius:999px; padding:4px 12px; font-size:.86rem; text-decoration:none !important; }
  .my-app:hover{ background:rgba(255,255,255,.24); }
  .my-who{ margin-left:0; }
  .my-av{ display:inline-flex; align-items:center; gap:8px; color:#fff; font-size:.85rem; background:transparent; border:1px solid rgba(255,255,255,.35); border-radius:999px; padding:3px 10px 3px 3px; }
  .my-av:hover, .my-av[aria-expanded=true]{ background:rgba(255,255,255,.15); }
  .my-av .c{ width:28px; height:28px; border-radius:50%; background:#fff; color:var(--wine); font-weight:800; display:inline-flex; align-items:center; justify-content:center; flex:none; }
  .my-av .t{ display:flex; flex-direction:column; align-items:flex-start; line-height:1.15; }
  .my-av .nm{ font-weight:600; max-width:10rem; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
  .my-av .kd{ opacity:.8; font-size:.72rem; }
  .my-who .dropdown-item{ font-size:.9rem; }
  .my-bell{ position:relative; margin-left:auto; width:34px; height:34px; border-radius:50%; border:1px solid rgba(255,255,255,.45); color:#fff !important; display:inline-flex; align-items:center; justify-content:center; text-decoration:none !important; }
  .my-bell:hover{ background:rgba(255,255,255,.15); }
  .my-bell b{ position:absolute; top:-5px; right:-6px; min-width:18px; height:18px; padding:0 5px; border-radius:9px; background:#fff; color:var(--wine); font-size:.68rem; line-height:18px; text-align:center; box-shadow:0 1px 3px rgba(0,0,0,.25); }
  .my-bell + .my-ui{ margin-left:0; }
  .my-login{ display:inline-flex; align-items:center; color:var(--wine) !important; background:#fff; border-radius:999px; padding:6px 16px; font-size:.88rem; font-weight:700; text-decoration:none !important; white-space:nowrap; box-shadow:0 2px 6px rgba(0,0,0,.15); }
  .my-login:hover{ background:#f6eef0; }
  /* 首頁「山洞口選單」：內嵌山洞口的個人選單（樣式是山洞口原本的，入口改不了） */
  .my-sso{ padding:14px 16px; margin-bottom:16px; }
  .my-sso .hd{ display:flex; align-items:center; flex-wrap:wrap; gap:8px; margin-bottom:10px; }
  .my-sso .hd .tt{ font-weight:700; } .my-sso .hd .tt i{ color:var(--wine-t); }
  .my-sso .hd .ds{ color:var(--mute); font-size:.84rem; }
  .my-sso .hd .bt{ margin-left:auto; display:flex; flex-wrap:wrap; gap:6px; }
  .my-sso .col-menu iframe{ display:block; width:100%; height:560px; border:1px solid var(--line); border-radius:10px; background:#fff; }
  .my-sso .nt{ color:var(--mute); font-size:.78rem; margin-top:8px; line-height:1.6; }
  @media (max-width:575.98px){ .my-sso .col-menu iframe{ height:70vh; } .my-sso .hd .bt{ margin-left:0; } .my-login{ padding:5px 12px; } }

  /* 入口首頁：待辦與系統卡片 */
  .my-todo{ list-style:none; padding:0; margin:0; }
  .my-todo li{ display:flex; align-items:center; gap:10px; padding:10px 4px; border-bottom:1px solid var(--line2); }
  .my-todo li:last-child{ border-bottom:0; }
  .my-todo .ap{ font-size:.75rem; color:var(--mute); white-space:nowrap; }
  .my-todo .n{ font-weight:700; font-size:1.15rem; min-width:2rem; text-align:right; }
  .my-cards{ display:grid; grid-template-columns:repeat(auto-fit,minmax(260px,1fr)); gap:14px; margin-bottom:16px; }
  .my-card{ background:var(--card); border:1px solid var(--line); border-top:4px solid var(--c, var(--wine)); border-radius:14px; padding:16px 18px; display:flex; flex-direction:column; gap:8px; }
  .my-card .hd{ display:flex; align-items:center; gap:10px; }
  .my-card .ic{ width:40px; height:40px; border-radius:10px; display:inline-flex; align-items:center; justify-content:center; font-size:1.1rem; color:#fff; background:var(--c, var(--wine)); flex:none; }
  .my-card .tt{ font-weight:700; font-size:1.05rem; }
  .my-card .ln{ font-size:.9rem; color:var(--ink2); }
  .my-card .ft{ margin-top:auto; display:flex; flex-wrap:wrap; gap:6px; }

  /* 輔導追蹤沿用的卡片樣式 */
  .q-card{ border:1px solid var(--line); border-radius:12px; padding:14px 16px; margin-bottom:12px; background:var(--card); }

  /* ── 頁首「外觀」按鈕與選單 ── */
  .my-ui{ margin-left:auto; } .my-ui + .my-who{ margin-left:0; }
  .my-ui-btn{ width:34px; height:34px; border-radius:50%; border:1px solid rgba(255,255,255,.45); background:transparent; color:#fff; display:inline-flex; align-items:center; justify-content:center; }
  .my-ui-btn:hover{ background:rgba(255,255,255,.15); }
  .my-ui-menu{ width:260px; background:var(--card); color:var(--ink); border:1px solid var(--line); border-radius:12px; box-shadow:0 10px 30px rgba(0,0,0,.18); }
  .my-ui-menu .btn.active, .btn[data-ui-mode].active{ background:var(--wine) !important; color:#fff !important; }
  .my-ui-sw{ display:flex; flex-wrap:wrap; gap:8px; }
  .my-ui-sw .sw{ width:28px; height:28px; border-radius:50%; border:2px solid var(--card); box-shadow:0 0 0 1px var(--line); cursor:pointer; padding:0; display:inline-flex; align-items:center; justify-content:center; font-size:.75rem; color:var(--mute); background:var(--card2); position:relative; overflow:hidden; }
  .my-ui-sw .sw.on{ box-shadow:0 0 0 2px var(--ink); }
  .my-ui-sw .pick input{ position:absolute; inset:0; opacity:0; cursor:pointer; }

  /* ── 入口首頁：搜尋、分類、服務磚 ── */
  .my-hero{ text-align:center; padding:22px 8px 6px; }
  .my-hero h1{ font-size:1.6rem; font-weight:800; color:var(--wine-t); margin:6px 0 4px; }
  .my-hero .sub{ color:var(--mute); font-size:.92rem; margin-bottom:14px; }
  .my-search{ position:relative; max-width:640px; margin:0 auto 12px; }
  .my-search i{ position:absolute; left:16px; top:50%; transform:translateY(-50%); color:var(--mute); }
  .my-search input{ width:100%; border-radius:999px; border:1px solid var(--line); background:var(--card); color:var(--ink); padding:.8rem 1rem .8rem 2.6rem; font-size:1rem; box-shadow:0 2px 10px rgba(16,24,40,.06); }
  .my-search input:focus{ outline:0; border-color:var(--wine); box-shadow:0 0 0 .2rem rgba(var(--wine-rgb),.15); }
  .my-chips{ display:flex; flex-wrap:wrap; justify-content:center; gap:6px; margin:0 auto 18px; max-width:760px; }
  .my-chips button{ border:1px solid var(--line); background:var(--card); color:var(--ink2); border-radius:999px; padding:5px 12px; font-size:.86rem; }
  .my-chips button:hover{ border-color:var(--wine); color:var(--wine-t); }
  .my-chips button.on{ background:var(--wine); border-color:var(--wine); color:#fff; }
  .my-chips button i{ margin-right:5px; opacity:.8; }
  h5.my-sec{ font-size:1.02rem; font-weight:700; margin:18px 2px 10px; display:flex; align-items:center; gap:8px; color:var(--ink); }
  h5.my-sec > i{ color:var(--wine-t); } h5.my-sec .n{ margin-left:auto; font-size:.8rem; font-weight:400; color:var(--mute); }
  h5.my-sec a.more{ margin-left:auto; font-size:.82rem; font-weight:500; }
  .my-svcs{ display:grid; grid-template-columns:repeat(auto-fill,minmax(250px,1fr)); gap:10px; }
  a.my-svc{ display:flex; align-items:center; gap:12px; padding:12px 14px; border:1px solid var(--line); border-radius:12px; background:var(--card); color:var(--ink); text-decoration:none; min-width:0; transition:border-color .15s, box-shadow .15s; }
  a.my-svc:hover{ border-color:var(--wine); box-shadow:0 4px 14px rgba(16,24,40,.08); text-decoration:none; color:var(--ink); }
  .my-ico{ --ic:var(--wine); width:40px; height:40px; border-radius:11px; flex:none; display:inline-flex; align-items:center; justify-content:center; background:var(--ic); color:#fff; font-size:1.05rem; overflow:hidden; }
  .my-ico.img{ background:var(--card2); padding:4px; } .my-ico.img img{ max-width:100%; max-height:100%; object-fit:contain; }
  a.my-svc .tx{ min-width:0; display:flex; flex-direction:column; }
  a.my-svc .nm{ font-weight:600; font-size:.95rem; line-height:1.3; overflow:hidden; text-overflow:ellipsis; display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; }
  a.my-svc .sm{ font-size:.78rem; color:var(--mute); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
  a.my-svc .sso{ font-size:.7rem; color:var(--mute); }
  details.my-cat{ border:1px solid var(--line); border-radius:12px; background:var(--card); margin-bottom:8px; }
  details.my-cat > summary{ list-style:none; cursor:pointer; padding:12px 16px; font-weight:600; display:flex; align-items:center; gap:10px; }
  details.my-cat > summary::-webkit-details-marker{ display:none; }
  details.my-cat > summary .n{ margin-left:auto; color:var(--mute); font-weight:400; font-size:.82rem; }
  details.my-cat > summary::after{ content:"\f107"; font-family:"Font Awesome 5 Free"; font-weight:900; color:var(--mute); margin-left:8px; transition:transform .2s; }
  details.my-cat[open] > summary::after{ transform:rotate(180deg); }
  details.my-cat .my-svcs{ padding:0 12px 12px; }
  .my-cat-ic{ width:30px; height:30px; border-radius:8px; background:var(--wine-l); color:var(--wine-t); display:inline-flex; align-items:center; justify-content:center; font-size:.9rem; }
  .my-two{ display:grid; grid-template-columns:3fr 2fr; gap:14px; } .my-two > div{ min-width:0; }

  /* 我的常用：服務磚右上角的星號、自訂連結、最近使用 */
  .my-svc-w{ position:relative; min-width:0; }
  .my-svc-w > a.my-svc{ height:100%; padding-right:34px; }
  .my-star{ position:absolute; top:6px; right:6px; width:26px; height:26px; border:0; border-radius:50%; background:transparent; color:var(--mute); font-size:.8rem; display:inline-flex; align-items:center; justify-content:center; opacity:0; transition:opacity .15s, color .15s; }
  .my-svc-w:hover .my-star, .my-star:focus-visible, .my-star.on{ opacity:1; }
  .my-star:hover{ color:#f59e0b; background:var(--card2); } .my-star.on{ color:#f59e0b; }
  @media (hover:none){ .my-star{ opacity:.7; color:var(--mute); } .my-star.on{ opacity:1; color:#f59e0b; } }
  .my-used{ display:flex; flex-wrap:wrap; gap:6px; }
  .my-used a{ display:inline-flex; align-items:center; gap:6px; border:1px solid var(--line); background:var(--card); color:var(--ink2); border-radius:999px; padding:4px 12px 4px 4px; font-size:.84rem; text-decoration:none; max-width:100%; }
  .my-used a:hover{ border-color:var(--wine); color:var(--wine-t); }
  .my-used .my-ico{ width:24px; height:24px; border-radius:50%; font-size:.7rem; }
  /* 最近使用：每個後面接一顆星號（加入／移出我的常用；跟大圖示的星號同步） */
  .my-used-w{ display:inline-flex; align-items:center; max-width:100%; }
  .my-used-w .my-star{ position:static; opacity:.45; width:24px; height:24px; margin-left:2px; font-size:.72rem; flex:none; }
  .my-used-w:hover .my-star, .my-used-w .my-star:focus-visible{ opacity:1; } .my-used-w .my-star.on{ opacity:1; }
  .my-used span.t{ white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
  .my-toast{ position:fixed; left:50%; bottom:24px; transform:translate(-50%, 20px); background:#1f2430; color:#fff; padding:8px 18px; border-radius:999px; font-size:.9rem; opacity:0; pointer-events:none; transition:all .2s; z-index:2000; }
  .my-toast.on{ opacity:.95; transform:translate(-50%, 0); }
  .my-favlist{ list-style:none; padding:0; margin:0; }
  .my-favlist li{ display:flex; align-items:center; gap:10px; padding:8px 4px; border-bottom:1px solid var(--line2); }
  .my-favlist li:last-child{ border-bottom:0; }
  .my-favlist .nm{ flex:1; min-width:0; } .my-favlist .nm small{ display:block; color:var(--mute); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }

  /* ── 入口首頁 A1：動態背景、問候、大搜尋框、頁籤、大圖示 ── */
  /* 背景在最底層：canvas 後面的元素一律 position:relative（不設 z-index，依文件順序疊在 canvas 上面；不另建疊層，避免擋住 Bootstrap 視窗） */
  #myBg{ position:fixed; inset:0; width:100%; height:100%; z-index:0; pointer-events:none;
    -webkit-mask-image:linear-gradient(to bottom,#000 0,#000 42%,rgba(0,0,0,.35) 68%,rgba(0,0,0,.18) 100%); mask-image:linear-gradient(to bottom,#000 0,#000 42%,rgba(0,0,0,.35) 68%,rgba(0,0,0,.18) 100%); }
  #myBg ~ *, body:has(#myBg) footer.ge-foot{ position:relative; }
  .ge-top{ position:relative; z-index:5; }
  .my-tile .nm, .my-hello .sub, .my-tiles-empty{ text-shadow:0 0 3px var(--bg), 0 0 6px var(--bg), 0 0 10px var(--bg); }
  .my-launch{ padding:48px 0 4px; }
  .my-hello{ text-align:center; margin-bottom:16px; }
  .my-hello .my-badge{ width:68px; height:68px; font-size:1.7rem; margin:6px 0 4px; box-shadow:0 6px 18px rgba(var(--wine-rgb),.2); }
  .my-hello .my-badge.img{ width:76px; height:76px; padding:8px; border-radius:18px; }
  .my-hello .my-badge.wide{ width:auto; height:auto; padding:10px 14px; } .my-hello .my-badge.wide img{ height:46px; }
  .my-hello h1{ font-size:1.9rem; font-weight:800; color:var(--ink); margin:8px 0 4px; letter-spacing:.02em; }
  .my-hello .sub{ color:var(--mute); font-size:.92rem; }
  .my-search-lg{ max-width:680px; margin-bottom:22px; }
  .my-search-lg input{ padding:1rem 1.2rem 1rem 3rem; font-size:1.05rem; box-shadow:0 8px 28px rgba(var(--wine-rgb),.12); }
  .my-search-lg i{ left:20px; font-size:1.05rem; }
  .my-tabs{ display:flex; gap:6px; justify-content:center; flex-wrap:wrap; margin:0 auto 18px; max-width:900px; }
  .my-tabs button{ border:1px solid var(--line); background:var(--card); color:var(--ink2); border-radius:999px; padding:6px 14px; font-size:.88rem; white-space:nowrap; }
  .my-tabs button i{ margin-right:6px; opacity:.75; }
  .my-tabs button:hover{ border-color:var(--wine); color:var(--wine-t); }
  .my-tabs button.on{ background:var(--wine); border-color:var(--wine); color:#fff; } .my-tabs button.on i{ opacity:1; }
  .my-tiles{ display:grid; grid-template-columns:repeat(8,1fr); gap:22px 10px; margin:0 auto 10px; max-width:1000px; }
  .my-tile{ position:relative; min-width:0; }
  .my-tile > a{ display:flex; flex-direction:column; align-items:center; gap:8px; padding:6px 2px; border-radius:14px; color:var(--ink); text-decoration:none; text-align:center; }
  .my-tile > a:hover{ color:var(--wine-t); text-decoration:none; }
  .my-tile > a:hover .my-tile-ic{ transform:translateY(-3px); box-shadow:0 10px 22px rgba(var(--wine-rgb),.36); }
  .my-tile-ic{ --ic:var(--wine); width:64px; height:64px; border-radius:18px; flex:none; display:inline-flex; align-items:center; justify-content:center; background:var(--ic); color:#fff; font-size:1.5rem; overflow:hidden; box-shadow:0 6px 16px rgba(var(--wine-rgb),.28); transition:transform .15s, box-shadow .15s; }
  .my-tile-ic.img{ background:#fff; border:1px solid var(--line); padding:8px; box-shadow:0 4px 12px rgba(16,24,40,.08); } .my-tile-ic.img img{ max-width:100%; max-height:100%; object-fit:contain; }
  .my-tile .nm{ font-size:.84rem; line-height:1.3; font-weight:600; overflow:hidden; display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; word-break:break-word; }
  /* 鎖頭放圖示左上角、星號放右上角，兩個不會疊在一起 */
  .my-tile .sso{ position:absolute; top:0; left:calc(50% - 41px); font-size:.62rem; color:var(--mute); background:var(--card); border-radius:50%; padding:3px; box-shadow:0 1px 3px rgba(0,0,0,.12); }
  .my-tile .my-star{ top:-6px; right:calc(50% - 46px); }
  /* 我的常用拖動排序（v4.6.6） */
  .my-fav-tools{ display:flex; flex-wrap:wrap; align-items:center; justify-content:center; gap:8px; margin:6px 0 4px; }
  .my-fav-tools .hint{ color:var(--mute); font-size:.82rem; }
  .my-tiles.my-sorting .my-tile{ touch-action:none; cursor:grab; user-select:none; -webkit-user-select:none; -webkit-touch-callout:none; }
  .my-tiles.my-sorting .my-tile a{ pointer-events:none; -webkit-user-drag:none; }
  .my-tiles.my-sorting .my-tile .my-tile-ic{ animation:my-wiggle .9s ease-in-out infinite; }
  .my-tiles.my-sorting .my-tile .my-star{ display:none; }
  .my-tiles.my-sorting .my-tile:nth-child(2n) .my-tile-ic{ animation-delay:-.45s; }
  @keyframes my-wiggle{ 0%,100%{ transform:rotate(-2deg); } 50%{ transform:rotate(2deg); } }
  @media (prefers-reduced-motion:reduce){ .my-tiles.my-sorting .my-tile .my-tile-ic{ animation:none; } }
  .my-dragging{ opacity:.45; }
  .my-tiles.my-sorting .my-tile.my-dragging .my-tile-ic{ animation:none; box-shadow:0 0 0 3px var(--wine); }
  .my-favlist .my-drag{ flex:none; cursor:grab; touch-action:none; color:var(--mute); padding:6px 4px; margin-right:2px; }
  .my-favlist .my-drag:hover{ color:var(--wine-t); }
  .my-favlist li.my-dragging{ background:var(--wine-l); border-radius:8px; }
  .my-tile .fu{ font-size:.7rem; color:var(--mute); line-height:1.2; margin-top:-6px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; max-width:100%; }   /* 表單大圖示：處室 */
  .my-tile:hover .my-star{ opacity:1; }
  .my-tiles-empty{ margin:4px 0 20px; }
  /* 「山洞口選單」頁籤：左選單、右待辦（窄螢幕待辦在上）；待辦是山洞口頁的左半邊 505×628，依欄寬等比例縮小 */
  .my-sso-gate{ text-align:center; padding:28px 16px 22px; border:1px dashed var(--line2, var(--line)); border-radius:12px; background:var(--card2); }
  .my-sso-gate .ic{ display:inline-flex; width:52px; height:52px; border-radius:14px; align-items:center; justify-content:center; background:var(--wine); color:#fff; font-size:1.4rem; margin-bottom:10px; }
  .my-sso-gate .tt{ font-weight:700; font-size:1.05rem; margin-bottom:6px; }
  .my-sso-gate p{ color:var(--ink2); font-size:.9rem; max-width:560px; margin:0 auto 14px; line-height:1.7; }
  .my-sso-gate .bt{ display:flex; flex-wrap:wrap; gap:8px; justify-content:center; }
  .my-sso-gate .sm{ color:var(--mute); font-size:.78rem; margin-top:10px; }
  .my-sso-body{ display:grid; grid-template-columns:minmax(0,1fr) minmax(0,440px); gap:14px; align-items:start; }
  .my-sso-body .lb{ display:flex; align-items:center; gap:6px; font-size:.84rem; font-weight:700; color:var(--ink2); margin-bottom:6px; }
  .my-sso-body .lb a{ font-weight:400; font-size:.78rem; }
  .my-ssotodo{ min-width:0; } .my-ssotodo .fr{ width:100%; max-width:505px; height:486px; overflow:hidden; border-radius:10px; background:#fff; box-shadow:0 0 0 1px var(--line); }
  .my-ssotodo iframe{ display:block; width:505px; height:628px; border:0; transform-origin:0 0; }
  .my-sso-body > div{ min-width:0; }
  @media (max-width:767.98px){ .my-sso-body{ grid-template-columns:minmax(0,1fr); } .my-sso-body .col-todo{ order:-1; } }
  .my-dev-note{ font-size:.78rem; margin:2px 0 14px; } .my-dev-note a{ color:var(--wine-t); }
  .my-used-row{ display:flex; align-items:center; gap:10px; flex-wrap:wrap; margin:14px 0 18px; padding:10px 14px; border:1px solid var(--line); border-radius:14px; background:var(--card); }
  .my-used-row .lb{ font-size:.84rem; font-weight:700; color:var(--ink2); white-space:nowrap; }
  .my-used-row .my-used{ flex:1; min-width:0; }
  @media (max-width:991.98px){ .my-tiles{ grid-template-columns:repeat(6,1fr); } }

  /* 行事曆 */
  .my-ev{ display:flex; gap:12px; padding:9px 2px; border-bottom:1px solid var(--line2); font-size:.9rem; }
  .my-ev:last-child{ border-bottom:0; }
  .my-ev .d{ flex:none; width:112px; color:var(--wine-t); font-weight:600; font-size:.84rem; }
  .my-ev .t{ min-width:0; } .my-ev .l{ color:var(--mute); font-size:.78rem; }
  .my-ev.today .d{ color:#fff; background:var(--wine); border-radius:6px; padding:0 6px; height:fit-content; }
  .my-month{ width:100%; table-layout:fixed; border-collapse:collapse; }
  .my-month th{ text-align:center; font-size:.8rem; color:var(--mute); padding:6px 0; font-weight:600; }
  .my-month td{ vertical-align:top; height:92px; border:1px solid var(--line2); padding:4px; font-size:.74rem; background:var(--card); }
  .my-month td.out{ background:var(--card2); color:var(--mute); }
  .my-month td.today{ box-shadow:inset 0 0 0 2px var(--wine); }
  .my-month .dn{ font-weight:700; font-size:.8rem; margin-bottom:2px; }
  .my-month .e{ display:block; background:var(--wine-l); color:var(--ink); border-radius:4px; padding:1px 4px; margin-bottom:2px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }

  /* 找誰辦 */
  .my-cts{ display:grid; grid-template-columns:repeat(auto-fill,minmax(300px,1fr)); gap:10px; }
  .my-ct{ border:1px solid var(--line); border-radius:12px; background:var(--card); padding:12px 14px; font-size:.88rem; }
  .my-ct .it{ font-weight:700; font-size:.96rem; display:flex; align-items:center; gap:8px; }
  .my-ct .it .cat{ margin-left:auto; font-weight:400; font-size:.72rem; color:var(--mute); white-space:nowrap; }
  .my-ct .ds{ color:var(--ink2); margin:4px 0 6px; line-height:1.5; }
  .my-ct .wd{ font-size:.82rem; color:var(--mute); word-break:break-all; }
  /* 電腦教室軟體搜尋 */
  .my-sw{ display:flex; flex-wrap:wrap; align-items:center; gap:6px 10px; padding:8px 12px; border:1px solid var(--line); border-radius:10px; background:var(--card); margin-bottom:6px; }
  .my-sw .nm{ font-weight:600; min-width:13rem; }
  .my-pls{ display:grid; grid-template-columns:repeat(auto-fill,minmax(min(100%,22rem),1fr)); gap:6px; }
  .my-pl{ display:flex; align-items:center; gap:10px; padding:8px 12px; border:1px solid var(--line); border-radius:10px; background:var(--card); min-width:0; }
  .my-pl .ic{ flex:none; width:30px; height:30px; border-radius:8px; display:inline-flex; align-items:center; justify-content:center; background:var(--wine-l); color:var(--wine-t); font-size:.85rem; }
  .my-pl .tx{ flex:1; min-width:0; } .my-pl .t{ font-weight:600; overflow-wrap:anywhere; }
  .my-pl .w{ font-size:.78rem; color:var(--mute); } .my-pl .w .no{ margin-left:6px; padding:0 6px; border-radius:999px; background:var(--card2); border:1px solid var(--line); }
  .my-pl .ln{ flex:none; display:flex; flex-direction:column; gap:3px; }
  .my-pl .ln a{ font-size:.74rem; white-space:nowrap; border:1px solid var(--line); border-radius:999px; padding:0 8px; color:var(--ink); background:var(--card2); text-decoration:none; }
  .my-pl .ln a:hover{ border-color:var(--wine); color:var(--wine-t); }
  .my-fms{ display:grid; grid-template-columns:repeat(auto-fill,minmax(min(100%,22rem),1fr)); gap:6px; }
  .my-fm{ position:relative; padding:8px 12px; border:1px solid var(--line); border-radius:10px; background:var(--card); min-width:0; }
  .my-fm .nm{ font-weight:600; overflow-wrap:anywhere; padding-right:22px; }
  .my-fm .my-star{ top:4px; right:4px; opacity:.45; }
  .my-fm:hover .my-star{ opacity:1; }
  .my-fm .u{ display:block; font-weight:400; font-size:.78rem; color:var(--mute); }
  .my-fm .fl{ margin-top:4px; display:flex; flex-wrap:wrap; gap:4px; }
  .my-fm .fl a{ display:inline-flex; align-items:center; border:1px solid var(--line); border-radius:999px; padding:1px 9px; font-size:.78rem; background:var(--card2); color:var(--ink); text-decoration:none; white-space:nowrap; }
  .my-fm .fl a:hover{ border-color:var(--wine); color:var(--wine-t); }
  .my-fm .fl a.pg{ color:var(--mute); border-style:dashed; }
  .my-room{ display:inline-flex; align-items:center; border:1px solid var(--line); border-radius:999px; padding:2px 9px; font-size:.78rem; background:var(--card2); color:var(--ink); margin:0 4px 3px 0; white-space:nowrap; cursor:pointer; }
  .my-room:hover{ border-color:var(--wine); color:var(--wine-t); }
  .my-room small{ color:var(--mute); margin-left:4px; }
  .my-tel{ white-space:nowrap; font-weight:600; color:var(--wine-t); text-decoration:none; }
  .my-tel:hover{ text-decoration:underline; } .my-tel i{ font-size:.85em; }
  .my-ct .src{ font-size:.72rem; color:var(--mute); margin-top:4px; } .my-ct .src a{ color:var(--mute); text-decoration:underline; }

  /* ── 深色模式：Bootstrap 5.0 元件與頁面內寫死的白底 ── */
  html[data-theme=dark] body{ background:var(--bg); color:var(--ink); }
  html[data-theme=dark] .form-control, html[data-theme=dark] .form-select, html[data-theme=dark] .input-group-text{ background-color:var(--card2); color:var(--ink); border-color:var(--line); }
  html[data-theme=dark] .form-control::placeholder{ color:#6b7480; }
  html[data-theme=dark] .form-control:disabled, html[data-theme=dark] .form-control[readonly], html[data-theme=dark] .form-select:disabled{ background-color:#14181c; color:var(--mute); }
  html[data-theme=dark] .form-select{ background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23aab' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e"); }
  html[data-theme=dark] .form-check-input{ background-color:var(--card2); border-color:#55606c; }
  html[data-theme=dark] .table{ color:var(--ink); --bs-table-striped-color:var(--ink); --bs-table-hover-color:var(--ink); --bs-table-hover-bg:rgba(255,255,255,.04); --bs-table-striped-bg:rgba(255,255,255,.03); }
  html[data-theme=dark] .table-bordered > :not(caption) > * > *{ border-color:var(--line); }
  html[data-theme=dark] .table-light, html[data-theme=dark] .table-light > *{ --bs-table-bg:var(--card2); color:var(--ink); }
  html[data-theme=dark] .modal-content, html[data-theme=dark] .dropdown-menu, html[data-theme=dark] .card, html[data-theme=dark] .list-group-item, html[data-theme=dark] .accordion-item, html[data-theme=dark] .accordion-button{ background-color:var(--card); color:var(--ink); border-color:var(--line); }
  html[data-theme=dark] .dropdown-item{ color:var(--ink); } html[data-theme=dark] .dropdown-item:hover{ background:var(--card2); }
  html[data-theme=dark] .modal-header, html[data-theme=dark] .modal-footer, html[data-theme=dark] .card-header, html[data-theme=dark] .card-footer{ border-color:var(--line); background-color:transparent; }
  html[data-theme=dark] .btn-close{ filter:invert(1) grayscale(1); }
  html[data-theme=dark] .bg-white, html[data-theme=dark] .bg-light{ background-color:var(--card2) !important; color:var(--ink); }
  html[data-theme=dark] .text-dark{ color:var(--ink) !important; } html[data-theme=dark] .text-muted{ color:var(--mute) !important; } html[data-theme=dark] .text-secondary{ color:var(--mute) !important; }
  html[data-theme=dark] .border, html[data-theme=dark] .border-top, html[data-theme=dark] .border-bottom{ border-color:var(--line) !important; }
  html[data-theme=dark] .btn-light, html[data-theme=dark] .btn-outline-secondary{ background:var(--card2); color:var(--ink); border-color:var(--line); }
  html[data-theme=dark] .btn-link{ color:var(--wine-t); }
  html[data-theme=dark] .badge.bg-light{ background:var(--card2) !important; color:var(--ink) !important; }
  html[data-theme=dark] .alert-success{ background:#11281b; color:#9fe0b6; } html[data-theme=dark] .alert-warning{ background:#2a2210; color:#f3d48a; }
  html[data-theme=dark] .alert-danger{ background:#2c1416; color:#f2a7ad; } html[data-theme=dark] .alert-info{ background:#10233a; color:#9cc8f5; }
  html[data-theme=dark] .alert-secondary, html[data-theme=dark] .alert-light{ background:var(--card2); color:var(--ink2); }
  html[data-theme=dark] hr{ border-color:var(--line); opacity:1; }
  html[data-theme=dark] .nav-tabs{ border-color:var(--line); } html[data-theme=dark] .nav-tabs .nav-link.active{ background:var(--card); color:var(--ink); border-color:var(--line) var(--line) var(--card); }
  html[data-theme=dark] [style*="background:#fff"], html[data-theme=dark] [style*="background: #fff"], html[data-theme=dark] [style*="background:#ffffff"],
  html[data-theme=dark] [style*="background:#fafbfc"], html[data-theme=dark] [style*="background:#f7f8fa"], html[data-theme=dark] [style*="background:#f8f9fa"]{ background:var(--card2) !important; color:var(--ink); }
  html[data-theme=dark] .daterangepicker{ background:var(--card); border-color:var(--line); color:var(--ink); }
  html[data-theme=dark] .daterangepicker .calendar-table{ background:var(--card); border-color:var(--line); }
  html[data-theme=dark] .daterangepicker td.off{ background:var(--card2); }

  @media (max-width:767.98px){ .my-two{ grid-template-columns:1fr; } .my-month td{ height:64px; } .my-month .e{ font-size:.66rem; } }
  @media (max-width:575.98px){
    body{ font-size:.97rem; }
    .ge-wrap{ padding:12px 10px 6px; } .ge-card{ padding:16px 14px; border-radius:12px; }
    .ge-brand .nm{ font-size:.98rem; } .ge-top-in{ padding:10px 12px; }
    .ge-brand .my-logo-wide{ height:34px; max-width:180px; } .ge-brand .my-logo-wide.bg-w{ height:28px; }
    .my-av .t, .my-av .fa-angle-down{ display:none; } .my-av{ padding:3px; }
    .my-tiles{ grid-template-columns:repeat(4,1fr); gap:16px 6px; } .my-tile-ic{ width:54px; height:54px; border-radius:15px; font-size:1.3rem; }
    .my-tile .sso{ left:calc(50% - 36px); } .my-tile .my-star{ right:calc(50% - 40px); top:-6px; }
    .my-hello h1{ font-size:1.45rem; } .my-launch{ padding-top:36px; }
    /* 手機：頁籤一排、左右滑（貼齊畫面兩側，邊緣淡出提示還有更多） */
    .my-tabs{ flex-wrap:nowrap; justify-content:flex-start; overflow-x:auto; overscroll-behavior-x:contain; scroll-snap-type:x proximity; scrollbar-width:none;
      margin:0 -10px 16px; padding:2px 10px 4px; -webkit-mask-image:linear-gradient(to right,transparent 0,#000 7px,#000 calc(100% - 24px),transparent 100%); mask-image:linear-gradient(to right,transparent 0,#000 7px,#000 calc(100% - 24px),transparent 100%); }
    .my-tabs::-webkit-scrollbar{ display:none; }
    .my-tabs button{ flex:none; scroll-snap-align:start; }
    .btn-lg{ width:100%; margin:0 0 8px !important; }
    .ge-steps li{ font-size:.72rem; }
    .table{ font-size:.9rem; } .table-responsive > .table{ min-width:560px; }
    .ge-card .btn-sm{ margin:0 6px 6px 0 !important; }
  }
