:root {
    /* 品牌色（2026-10-24 標誌 D「風印」定案）：深藍主色、青綠重點、淺青只用在深色底 */
    --fq-primary: #1f3a5f;
    --fq-primary-dark: #14263f;
    --fq-accent: #157a80;
    --fq-accent-dark: #0f5e63;
    --fq-accent-light: #7cc6c4;
    --fq-ink: #1b2430;
    --fq-muted: #5b6675;
    --fq-line: #e3e8ef;
    --fq-mist: #f5f7fa;
    /* Bootstrap 吃變數的部分直接換掉；字型用系統字（蘋方／微軟正黑體），不載入網頁字型 */
    --bs-primary: #1f3a5f;
    --bs-primary-rgb: 31, 58, 95;
    --bs-link-color: #157a80;
    --bs-link-color-rgb: 21, 122, 128;
    --bs-link-hover-color: #0f5e63;
    --bs-link-hover-color-rgb: 15, 94, 99;
    --bs-body-color: #1b2430;
    --bs-body-color-rgb: 27, 36, 48;
    --bs-secondary-rgb: 91, 102, 117;
    --bs-secondary-color: #5b6675;
    --bs-border-color: #e3e8ef;
    --bs-font-sans-serif: -apple-system, BlinkMacSystemFont, "PingFang TC", "Noto Sans TC", "Microsoft JhengHei", "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
    --bs-focus-ring-color: rgba(21, 122, 128, .25);
}
/* Bootstrap 5.3 這些元件的顏色寫死在元件裡，不吃 --bs-primary，要逐個覆寫，否則會留下預設的亮藍 #0d6efd */
.btn-primary { --bs-btn-bg: #1f3a5f; --bs-btn-border-color: #1f3a5f; --bs-btn-hover-bg: #14263f; --bs-btn-hover-border-color: #14263f; --bs-btn-active-bg: #14263f; --bs-btn-active-border-color: #14263f; --bs-btn-disabled-bg: #1f3a5f; --bs-btn-disabled-border-color: #1f3a5f; --bs-btn-focus-shadow-rgb: 31, 58, 95; }
.btn-outline-primary { --bs-btn-color: #1f3a5f; --bs-btn-border-color: #1f3a5f; --bs-btn-hover-bg: #1f3a5f; --bs-btn-hover-border-color: #1f3a5f; --bs-btn-active-bg: #1f3a5f; --bs-btn-active-border-color: #1f3a5f; --bs-btn-disabled-color: #1f3a5f; --bs-btn-disabled-border-color: #1f3a5f; --bs-btn-focus-shadow-rgb: 31, 58, 95; }
.btn-link { --bs-btn-color: #157a80; --bs-btn-hover-color: #0f5e63; --bs-btn-active-color: #0f5e63; }
.form-control:focus, .form-select:focus { border-color: #7cc6c4; box-shadow: 0 0 0 .25rem rgba(21, 122, 128, .2); }
.form-check-input:checked { background-color: #1f3a5f; border-color: #1f3a5f; }
.form-check-input:focus { border-color: #7cc6c4; box-shadow: 0 0 0 .25rem rgba(21, 122, 128, .2); }
.accordion { --bs-accordion-active-color: #1f3a5f; --bs-accordion-active-bg: #e9eef5; --bs-accordion-btn-focus-box-shadow: 0 0 0 .25rem rgba(21, 122, 128, .2); }
.nav-pills { --bs-nav-pills-link-active-bg: #1f3a5f; }
.pagination { --bs-pagination-color: #157a80; --bs-pagination-hover-color: #0f5e63; --bs-pagination-active-bg: #1f3a5f; --bs-pagination-active-border-color: #1f3a5f; --bs-pagination-focus-box-shadow: 0 0 0 .25rem rgba(21, 122, 128, .2); }
.progress, .progress-stacked { --bs-progress-bar-bg: #157a80; }
.list-group { --bs-list-group-active-bg: #1f3a5f; --bs-list-group-active-border-color: #1f3a5f; }
.dropdown-menu { --bs-dropdown-link-active-bg: #1f3a5f; }
.fq-navbar { background: var(--fq-primary); }
.fq-navbar .navbar-brand { display: inline-flex; align-items: center; gap: .55rem; letter-spacing: .04em; }
.fq-navbar .navbar-brand img { width: 32px; height: 32px; }
article.post { max-width: 820px; }
article.post img { max-width: 100%; height: auto; }
article.post p > img { display: block; margin: 1rem auto; border: 1px solid #e3e6ea; border-radius: .5rem; box-shadow: 0 .25rem .75rem rgba(0,0,0,.08); }
article.post p > img + em, article.post p > em:only-child { display: block; text-align: center; color: #6c757d; font-size: .875rem; font-style: normal; }
.fq-case-cover { height: 200px; object-fit: cover; object-position: top; border-bottom: 1px solid #e3e6ea; }
article.post pre { background: #f6f8fa; padding: 1rem; border-radius: .375rem; overflow-x: auto; }
article.post code { font-size: .9em; }
article.post table { width: 100%; margin-bottom: 1rem; border-collapse: collapse; }
article.post table th, article.post table td { border: 1px solid #dee2e6; padding: .4rem .6rem; }
article.post blockquote { border-left: 4px solid var(--fq-accent); padding-left: 1rem; color: #555; }
article.post h2, article.post h3 { margin-top: 1.8rem; }
.post-meta { color: #6c757d; font-size: .9rem; }
.tag { font-size: .8rem; }
/* 右下角 AI 客服（2026-10-24） */
.fq-chat-btn { position: fixed; right: 16px; bottom: 16px; z-index: 1040; }
.fq-chat { position: fixed; right: 16px; bottom: 72px; z-index: 1041; width: min(360px, calc(100vw - 32px)); height: min(520px, calc(100vh - 120px)); display: flex; flex-direction: column; }
.fq-chat[hidden] { display: none; }
.fq-chat-log { overflow-y: auto; flex: 1; display: flex; flex-direction: column; gap: .5rem; background: #f8f9fb; }
.fq-msg { max-width: 85%; padding: .5rem .75rem; border-radius: .75rem; white-space: pre-wrap; word-break: break-word; font-size: .925rem; }
.fq-me { align-self: flex-end; background: var(--fq-accent); color: #fff; }
.fq-bot { align-self: flex-start; background: #fff; border: 1px solid #e3e6ea; }
.fq-sys { align-self: center; color: #6c757d; font-size: .8rem; }
.fq-hp { position: absolute; left: -10000px; width: 1px; height: 1px; opacity: 0; }
/* 觀點改版（2026-10-24）：列表卡片、分類標籤、文章閱讀體驗 */
.fq-chip { display: inline-flex; align-items: center; gap: .35rem; padding: .35rem .85rem; border: 1px solid #d5dbe3; border-radius: 999px; color: #34495e; text-decoration: none; font-size: .9rem; background: #fff; }
.fq-chip:hover { border-color: var(--fq-accent); color: var(--fq-accent); }
.fq-chip.active { background: var(--fq-primary); border-color: var(--fq-primary); color: #fff; }
.fq-chip-n { font-size: .75rem; opacity: .7; }
.fq-post-card { border: 1px solid #e6eaef; border-radius: .75rem; transition: transform .15s, box-shadow .15s; overflow: hidden; }
.fq-post-card:hover { transform: translateY(-2px); box-shadow: 0 .5rem 1.25rem rgba(31,58,95,.12); }
.fq-post-card .card-img-top { height: 180px; object-fit: cover; object-position: top; }
.fq-post-title { color: #1f2d3d; line-height: 1.45; }
.fq-featured .fq-post-title { font-size: 1.6rem; }
.fq-excerpt { display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; }
.fq-featured .fq-excerpt { -webkit-line-clamp: 4; font-size: 1.05rem; }
.fq-cat { display: inline-block; padding: .1rem .55rem; border-radius: .35rem; background: #eaf4f8; color: var(--fq-accent); font-weight: 600; }
article.post { max-width: 760px; }
.fq-post-h1 { font-size: clamp(1.6rem, 3.2vw, 2.25rem); line-height: 1.35; font-weight: 700; margin-bottom: .75rem; }
.fq-lead { color: var(--fq-muted); font-size: 1.15rem; line-height: 1.85; }
.fq-body { font-size: 1.075rem; line-height: 1.9; color: #24303c; letter-spacing: .01em; }
.fq-body p { margin-bottom: 1.15rem; }
.fq-body h2 { font-size: 1.45rem; margin-top: 2.4rem; margin-bottom: 1rem; padding-bottom: .35rem; border-bottom: 1px solid #e6eaef; scroll-margin-top: 1rem; }
.fq-body h3 { font-size: 1.2rem; margin-top: 1.8rem; }
.fq-body li { margin-bottom: .4rem; }
.fq-body a { color: var(--fq-accent); }
.fq-toc { background: #f6f8fa; border-radius: .6rem; padding: 1rem 1.25rem; margin: 1.5rem 0 2rem; font-size: .95rem; }
.fq-toc-h { font-weight: 700; margin-bottom: .4rem; }
.fq-toc ol { margin: 0; padding-left: 1.25rem; }
.fq-toc a { color: #34495e; text-decoration: none; }
.fq-toc a:hover { color: var(--fq-accent); text-decoration: underline; }
/* 預約討論步驟（2026-10-24） */
.fq-steps li { display: flex; gap: 1rem; align-items: flex-start; margin-bottom: 1rem; }
.fq-step-n { flex: 0 0 2rem; height: 2rem; border-radius: 50%; background: var(--fq-accent); color: #fff; display: inline-flex; align-items: center; justify-content: center; font-weight: 700; }
.fq-body blockquote.fq-callout { border: 1px solid var(--fq-line); background: var(--fq-mist); padding: 1rem 1.25rem; border-radius: .625rem; color: var(--fq-ink); }
.fq-callout-h { font-weight: 700; margin-bottom: .35rem; color: var(--fq-primary); }
.fq-body blockquote.fq-callout p:last-child { margin-bottom: 0; }
/* 家庭區首頁（2026-10-24） */
.fq-home-card { border: 1px solid #e6eaef; border-radius: .75rem; }
a.fq-home-card:hover { box-shadow: 0 .4rem 1rem rgba(31,58,95,.1); }
/* 拖放上傳（2026-10-24） */
.fq-drop { border: 2px dashed #c9d3de; border-radius: .6rem; padding: 1rem; text-align: center; background: #fafbfc; transition: background .15s, border-color .15s; }
.fq-drop-on { border-color: var(--fq-accent); background: #eaf4f8; }
.fq-drop-hint { color: #5a6b7b; }
.fq-drop-hint .bi { font-size: 1.4rem; vertical-align: middle; margin-right: .25rem; }
.fq-drop-pick { color: var(--fq-accent); text-decoration: underline; cursor: pointer; margin-left: .15rem; }
.fq-drop-list { display: flex; flex-wrap: wrap; gap: .5rem; justify-content: center; margin-top: .5rem; }
.fq-drop-item { display: flex; flex-direction: column; align-items: center; font-size: .8rem; max-width: 120px; word-break: break-all; }
.fq-drop-item img { width: 96px; height: 72px; object-fit: cover; border-radius: .35rem; margin-bottom: .2rem; }
.fq-stage > summary { cursor: pointer; }
/* 學習地圖（2026-10-24）：學年 × 月份 */
.fq-map-wrap { overflow-x: auto; -webkit-overflow-scrolling: touch; border: 1px solid #e6eaef; border-radius: .75rem; }
.fq-map { display: grid; grid-template-columns: 150px repeat(12, minmax(72px, 1fr)); min-width: 1010px; }
.fq-map > div, .fq-map > a { border-bottom: 1px solid #eef1f4; border-right: 1px solid #f3f5f7; }
.fq-map-head { background: #f6f8fa; font-size: .8rem; font-weight: 600; text-align: center; padding: .4rem 0; position: sticky; top: 0; }
.fq-map-year { position: sticky; left: 0; background: #fff; padding: .5rem .6rem; z-index: 1; border-right: 2px solid #e6eaef !important; }
.fq-map-head.fq-map-year { background: #f6f8fa; z-index: 2; text-align: left; }
.fq-map-cell { min-height: 78px; position: relative; display: block; overflow: hidden; }
.fq-map-has { text-decoration: none; background: #f2f8fb; }
.fq-map-has img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; transition: transform .15s; }
.fq-map-has:hover img { transform: scale(1.06); }
.fq-map-hi::after { content: ""; position: absolute; inset: 0; box-shadow: inset 0 0 0 3px #f2b705; pointer-events: none; }
.fq-map-icons { position: absolute; left: 4px; bottom: 4px; display: flex; flex-wrap: wrap; gap: 1px; font-size: 1.05rem; text-shadow: 0 0 3px #fff, 0 0 3px #fff; }
@media (max-width: 576px) {
  .fq-map { grid-template-columns: 84px repeat(12, 68px); min-width: 0; }
  .fq-map-year { padding: .4rem .45rem; font-size: .85rem; }
  .fq-map-ad { display: none; }
  .fq-map-cell { min-height: 68px; }
}
.fq-map-more { font-size: .75rem; font-weight: 700; background: rgba(255,255,255,.85); border-radius: .3rem; padding: 0 .25rem; margin-left: 2px; color: #1f3a5f; }

/* ===== UI 優化（2026-10-24，Aaron「整體優化：易用性與美化，呈現有質感的企業網站」）=====
   規範：深藍 #1f3a5f／夜藍 #14263f／青綠 #157a80（白底文字）／淺青 #7cc6c4（只用在深色底）；
   卡片白底、1px 淡灰框、圓角 10、極淡陰影；不用漸層洗色、不用卡片左側色條。 */
body { line-height: 1.75; color: var(--fq-ink); -webkit-font-smoothing: antialiased; }
h1, h2, h3, h4, h5, h6 { letter-spacing: .01em; }
.btn { border-radius: .5rem; font-weight: 500; }
.btn-lg { padding: .7rem 1.4rem; font-size: 1.05rem; }
:focus-visible { outline: 3px solid rgba(21, 122, 128, .45); outline-offset: 2px; }

/* 導覽列：固定在頂端；目前所在頁有底線；右邊的「預約討論」 */
.fq-navbar { padding-top: .65rem; padding-bottom: .65rem; box-shadow: 0 1px 0 rgba(255, 255, 255, .06), 0 4px 16px rgba(20, 38, 63, .12); }
.fq-navbar .nav-link { color: rgba(255, 255, 255, .8); font-weight: 500; position: relative; }
.fq-navbar .nav-link:hover, .fq-navbar .nav-link:focus { color: #fff; }
.fq-navbar .nav-link.active { color: #fff; }
@media (min-width: 992px) {
  .fq-navbar .nav-link { padding-left: .85rem !important; padding-right: .85rem !important; }
  .fq-navbar .nav-link.active::after { content: ""; position: absolute; left: .85rem; right: .85rem; bottom: -.15rem; height: 2px; border-radius: 2px; background: var(--fq-accent-light); }
}
@media (max-width: 991.98px) {
  .fq-navbar .navbar-collapse { padding: .5rem 0 .75rem; }
  .fq-navbar .nav-link { padding: .6rem .75rem; border-radius: .4rem; }
  .fq-navbar .nav-link.active { background: rgba(255, 255, 255, .08); }
}
.fq-nav-cta { background: var(--fq-accent-light); color: var(--fq-primary-dark); font-weight: 700; padding: .45rem 1rem; }
.fq-nav-cta:hover, .fq-nav-cta:focus { background: #96d3d1; color: var(--fq-primary-dark); }

/* 首頁 hero：實色深藍＋標誌風線放大成底紋 */
.fq-hero { position: relative; overflow: hidden; background: var(--fq-primary); color: #fff; padding: 96px 0 88px; }
.fq-hero-wind { position: absolute; right: -6%; top: -18%; width: 58%; max-width: 760px; pointer-events: none; }
.fq-hero-wind path { stroke: #2a4b76; }
.fq-hero-wind .fq-hero-wind-a { stroke: #285a73; }
.fq-hero-h1 { font-size: clamp(2rem, 4.2vw, 3.1rem); font-weight: 700; line-height: 1.3; letter-spacing: .02em; max-width: 860px; margin-bottom: 1.25rem; }
.fq-hero-lead { font-size: 1.15rem; line-height: 1.85; color: #d5dee9; max-width: 720px; margin-bottom: 0; }
.fq-hero-trust { display: flex; flex-wrap: wrap; gap: .75rem 1.75rem; margin: 2.25rem 0 0; color: #c9d3e0; font-size: .95rem; }
.fq-hero-trust i { color: var(--fq-accent-light); margin-right: .4rem; }
.fq-btn-hero { color: var(--fq-primary) !important; font-weight: 700; }
@media (max-width: 767.98px) { .fq-hero { padding: 64px 0 56px; } .fq-hero-wind { width: 110%; right: -45%; top: 10%; opacity: .7; } .fq-hero-lead { font-size: 1.05rem; } }

/* 區塊與標題 */
.fq-section { padding-top: 80px; padding-bottom: 80px; }
.fq-section-mist { background: var(--fq-mist); border-top: 1px solid var(--fq-line); border-bottom: 1px solid var(--fq-line); }
@media (max-width: 767.98px) { .fq-section { padding-top: 56px; padding-bottom: 56px; } }
.fq-eyebrow { font-size: .85rem; font-weight: 700; letter-spacing: .14em; color: var(--fq-accent); margin-bottom: .6rem; }
.fq-eyebrow-light { color: var(--fq-accent-light); }
.fq-sec-head { margin-bottom: 2.25rem; }
.fq-h2 { font-size: clamp(1.5rem, 2.6vw, 2rem); font-weight: 700; color: var(--fq-primary); line-height: 1.4; margin-bottom: .75rem; }
.fq-sec-lead { color: var(--fq-muted); font-size: 1.05rem; max-width: 680px; margin-bottom: 0; }
.fq-body-p { font-size: 1.05rem; line-height: 1.9; }

/* 內頁標題區 */
.fq-page-head { background: var(--fq-mist); border-bottom: 1px solid var(--fq-line); padding: 64px 0 48px; }
.fq-page-h1 { font-size: clamp(1.75rem, 3.4vw, 2.5rem); font-weight: 700; color: var(--fq-primary); line-height: 1.35; margin-bottom: .9rem; }
.fq-page-lead { color: var(--fq-muted); font-size: 1.1rem; line-height: 1.8; max-width: 760px; margin-bottom: 0; }
@media (max-width: 767.98px) { .fq-page-head { padding: 44px 0 32px; } .fq-page-lead { font-size: 1.02rem; } }

/* 卡片 */
.fq-card { display: flex; flex-direction: column; background: #fff; border: 1px solid var(--fq-line); border-radius: .625rem; padding: 1.75rem; box-shadow: 0 1px 2px rgba(20, 38, 63, .04); color: inherit; text-decoration: none; }
.fq-card-link { transition: transform .15s ease, box-shadow .15s ease, border-color .15s ease; }
.fq-card-link:hover { color: inherit; border-color: #cfd8e3; box-shadow: 0 12px 28px rgba(20, 38, 63, .09); transform: translateY(-2px); }
.fq-card-link:hover .fq-more i { transform: translateX(3px); }
.fq-icon { display: inline-flex; align-items: center; justify-content: center; width: 48px; height: 48px; border-radius: 12px; background: #e6f2f2; color: var(--fq-accent); font-size: 1.4rem; margin-bottom: 1.1rem; flex: none; }
.fq-icon-lg { width: 56px; height: 56px; font-size: 1.6rem; }
.fq-card-h { font-size: 1.125rem; font-weight: 700; color: var(--fq-ink); line-height: 1.5; margin-bottom: .5rem; }
.fq-card-p { color: var(--fq-muted); font-size: .975rem; line-height: 1.8; margin-bottom: 1rem; }
.fq-more { display: inline-flex; align-items: center; gap: .35rem; color: var(--fq-accent); font-weight: 600; font-size: .95rem; text-decoration: none; }
.fq-more:hover { color: var(--fq-accent-dark); }
.fq-more i { transition: transform .15s ease; }
.fq-card .fq-more { margin-top: auto; }
.fq-clamp-2 { display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.fq-clamp-3 { display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; }

/* 案例卡片與類型標籤 */
.fq-case { padding: 0; overflow: hidden; }
.fq-case-img { width: 100%; height: 210px; object-fit: cover; object-position: top; border-bottom: 1px solid var(--fq-line); background: var(--fq-mist); }
.fq-case-body { display: flex; flex-direction: column; flex: 1; padding: 1.5rem 1.5rem 1.6rem; }
.fq-badge { align-self: flex-start; display: inline-block; font-size: .8rem; font-weight: 600; padding: .2rem .65rem; border-radius: 999px; margin-bottom: .8rem; }
.fq-badge-0 { background: #e9eef5; color: var(--fq-primary); }
.fq-badge-1 { background: #e6f2f2; color: var(--fq-accent-dark); }
.fq-badge-2 { background: #f1f3f6; color: #4a5462; }

/* 為什麼找我們、合作步驟 */
.fq-reason { display: flex; flex-direction: column; height: 100%; }
.fq-process { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 1.5rem; margin: 0; }
.fq-process li { background: #fff; border: 1px solid var(--fq-line); border-radius: .625rem; padding: 1.5rem; }
.fq-process .fq-step-n { margin-bottom: 1rem; }
.fq-process .fq-card-p { margin-bottom: 0; }
@media (max-width: 991.98px) { .fq-process { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 575.98px) { .fq-process { grid-template-columns: 1fr; } }
.fq-step-n { width: 2.25rem; height: 2.25rem; flex: 0 0 2.25rem; }
.fq-steps li { gap: 1.1rem; margin-bottom: 1.75rem; }
.fq-steps .fq-card-p { margin-bottom: 0; }

/* 收尾行動區 */
.fq-cta-band { background: var(--fq-primary); color: #fff; padding: 64px 0; }
.fq-cta-h { font-size: 1.6rem; font-weight: 700; color: #fff; margin-bottom: .5rem; }
.fq-cta-band p { color: #d5dee9; }
.fq-cta-list li { color: #d5dee9; margin-bottom: .4rem; }
.fq-cta-list i { color: var(--fq-accent-light); margin-right: .5rem; }
.fq-cta { border: 1px solid var(--fq-line); background: var(--fq-mist); border-radius: .625rem; }

/* 服務頁 */
.fq-jump { display: flex; flex-wrap: wrap; gap: .5rem; margin-top: 1.75rem; }
.fq-jump a { display: inline-flex; align-items: center; gap: .4rem; padding: .45rem .95rem; border: 1px solid var(--fq-line); background: #fff; border-radius: 999px; color: var(--fq-ink); font-size: .925rem; text-decoration: none; }
.fq-jump a:hover { border-color: var(--fq-accent); color: var(--fq-accent); }
.fq-jump i { color: var(--fq-accent); }
.fq-svc { scroll-margin-top: 96px; }
.fq-svc + .fq-svc { margin-top: 1.5rem; }
.fq-svc-card { padding: 2rem; }
.fq-svc-h { font-size: 1.4rem; font-weight: 700; color: var(--fq-primary); margin: 0 0 .75rem; }
.fq-tech { font-size: .85rem; color: var(--fq-muted); line-height: 1.7; }
.fq-svc-part + .fq-svc-part { margin-top: 1.25rem; }
.fq-svc-label { font-size: .8rem; font-weight: 700; letter-spacing: .08em; color: var(--fq-accent); margin-bottom: .35rem; }
.fq-svc-part p { margin: 0; line-height: 1.85; }
.fq-svc-gain { background: #f2f8f8; border-radius: .5rem; padding: 1rem 1.25rem; }
@media (max-width: 575.98px) { .fq-svc-card { padding: 1.5rem; } }

/* 關於、聯絡 */
.fq-cert li { margin-top: .5rem; }
.fq-cert i { color: var(--fq-accent); margin-right: .5rem; }
.fq-contact-card { gap: .75rem; }
.fq-contact-card .fq-card-h { margin-bottom: .25rem; }
.fq-contact-mail { color: var(--fq-muted); font-size: .925rem; margin-top: .25rem; }
.fq-empty { max-width: 560px; margin: 1rem auto; padding: 3rem 1.5rem; align-items: center; }

/* 頁尾：對外頁面深色三欄；家庭、後台精簡版 */
.fq-footer { background: var(--fq-primary-dark); color: #c9d3e0; }
.fq-footer-brand { display: inline-flex; align-items: center; gap: .6rem; color: #fff; font-weight: 700; font-size: 1.1rem; letter-spacing: .04em; text-decoration: none; }
.fq-footer-brand:hover { color: #fff; }
.fq-footer-brand img { width: 30px; height: 30px; }
.fq-footer-text { color: #aebbcb; font-size: .925rem; line-height: 1.8; }
.fq-footer-h { color: #fff; font-weight: 700; font-size: .95rem; margin-bottom: .9rem; }
.fq-footer-links li { margin-bottom: .55rem; }
.fq-footer-links a, .fq-footer-link { color: #c9d3e0; text-decoration: none; font-size: .925rem; }
.fq-footer-links a:hover, .fq-footer-link:hover { color: #fff; }
.fq-footer-bar { border-top: 1px solid rgba(255, 255, 255, .08); color: #8fa0b5; }
.fq-footer-lite { background: var(--fq-mist); border-top: 1px solid var(--fq-line); }

/* 手機上 AI 客服縮成圓形圖示，不擋內容 */
@media (max-width: 575.98px) {
  .fq-chat-btn { width: 52px; height: 52px; padding: 0; border-radius: 50% !important; display: inline-flex; align-items: center; justify-content: center; font-size: 1.3rem; }
  .fq-chat-btn span { display: none; }
}

/* ===== 家庭區、投資、後台（2026-10-24 UI 優化第二批）：淺灰底＋白卡片，統一分頁選單、表格與狀態色 ===== */
.fq-app { background: var(--fq-mist); }
.fq-app main h1 { color: var(--fq-primary); font-weight: 700; }
.fq-app .card { border: 1px solid var(--fq-line); border-radius: .625rem; box-shadow: 0 1px 2px rgba(20, 38, 63, .04); }
.fq-app a.card { transition: box-shadow .15s ease, border-color .15s ease; }
.fq-app a.card:hover { border-color: #cfd8e3; box-shadow: 0 8px 20px rgba(20, 38, 63, .08); }
.fq-app .table { --bs-table-bg: #fff; font-size: .925rem; box-shadow: 0 0 0 1px var(--fq-line); }
.fq-app .table > thead th { background: #eef2f6; color: var(--fq-muted); font-weight: 600; font-size: .8rem; letter-spacing: .03em; white-space: nowrap; border-bottom: 1px solid var(--fq-line); }
.fq-app .table td { vertical-align: middle; }
.fq-app .table-hover > tbody > tr:hover > * { --bs-table-bg-state: #f2f8f8; }
.fq-app .list-group { box-shadow: 0 1px 2px rgba(20, 38, 63, .04); }
.fq-app .accordion { --bs-accordion-border-color: var(--fq-line); }
/* Bootstrap 的青色、黃色換成品牌色（黃字在白底上對比只有 1.6:1，看不清楚） */
.fq-app .text-info { color: var(--fq-accent) !important; }
.fq-app .text-warning { color: #9a6700 !important; }
.fq-app .text-bg-info { background-color: #e6f2f2 !important; color: var(--fq-accent-dark) !important; }
/* 分頁選單：手機上可左右滑 */
.fq-tabs { display: flex; gap: .3rem; width: fit-content; max-width: 100%; overflow-x: auto; padding: .35rem; margin: 0 0 1.5rem; background: #fff; border: 1px solid var(--fq-line); border-radius: .75rem; scrollbar-width: none; }
.fq-tabs::-webkit-scrollbar { display: none; }
.fq-tabs a { flex: none; display: inline-flex; align-items: center; gap: .4rem; padding: .5rem .9rem; border-radius: .5rem; color: var(--fq-muted); text-decoration: none; font-weight: 500; font-size: .95rem; white-space: nowrap; }
.fq-tabs a:hover { background: var(--fq-mist); color: var(--fq-ink); }
.fq-tabs a.active { background: var(--fq-primary); color: #fff; }
/* 登入 */
.fq-login { max-width: 420px; margin-top: 4vh; padding: 2.25rem; }
.fq-nowrap-btns .btn { white-space: nowrap; }
/* ===== 私人區內頁（2026-10-24 UI 優化第三批）：家庭首頁、學習歷程、後台總覽 ===== */
.fq-app-head { margin-bottom: 1.25rem; }
.fq-card-top { display: flex; align-items: center; gap: .6rem; margin-bottom: 1rem; }
.fq-icon-sm { width: 36px; height: 36px; border-radius: 10px; font-size: 1.05rem; margin-bottom: 0; }
/* 狀態膠囊：灰＝沒有／一般、青綠＝完成、琥珀＝等處理、紅＝要人處理 */
.fq-status { display: inline-flex; align-items: center; gap: .3rem; padding: .15rem .6rem; border-radius: 999px; font-size: .82rem; font-weight: 600; background: #f1f3f6; color: #4a5462; white-space: nowrap; }
.fq-status-ok { background: #e6f2f2; color: var(--fq-accent-dark); }
.fq-status-ok::before { content: ""; width: .45rem; height: .45rem; border-radius: 50%; background: var(--fq-accent); }
.fq-status-wait { background: #fff4d6; color: #7a5200; }
.fq-status-warn { background: #fde8e4; color: #a3321f; }
.fq-status-list li { display: flex; justify-content: space-between; align-items: center; gap: .75rem; padding: .55rem 0; border-top: 1px solid #eef1f4; }
.fq-status-list li:first-child { border-top: 0; padding-top: 0; }
.fq-status-list li > span:first-child i { color: var(--fq-accent); margin-right: .45rem; }
.fq-mini-list li { display: flex; align-items: baseline; gap: .6rem; padding: .35rem 0; }
.fq-date-chip { flex: none; min-width: 3.1rem; text-align: center; font-size: .8rem; font-weight: 600; color: var(--fq-muted); background: var(--fq-mist); border-radius: .35rem; padding: .05rem .4rem; }
.fq-kpis { display: flex; flex-wrap: wrap; gap: 1.75rem; }
.fq-kpi-l { font-size: .82rem; color: var(--fq-muted); }
.fq-kpi-v { font-size: 1.35rem; font-weight: 700; font-variant-numeric: tabular-nums; line-height: 1.3; }
/* 後台總覽 */
.fq-group-h { font-size: .9rem; font-weight: 700; letter-spacing: .08em; color: var(--fq-muted); margin: 0 0 .75rem; }
.fq-tile .card-body { padding: 1.25rem 1.35rem; }
.fq-tile .fq-card-top { margin-bottom: .75rem; }
.fq-tile-t { font-weight: 700; }
.fq-tile-v { font-size: 1.75rem; font-weight: 700; color: var(--fq-primary); font-variant-numeric: tabular-nums; line-height: 1.2; margin-bottom: .25rem; }
.fq-tile-d { font-size: .9rem; color: var(--fq-muted); }
/* 學習歷程 */
.fq-filter { display: flex; flex-wrap: wrap; align-items: center; gap: .4rem; margin-bottom: .5rem; }
.fq-filter-l { font-size: .82rem; font-weight: 700; color: var(--fq-muted); margin-right: .25rem; min-width: 2.5rem; }
.fq-filter .fq-chip { padding: .25rem .75rem; font-size: .875rem; }
.fq-tip { background: #fff; border: 1px solid var(--fq-line); border-radius: .5rem; padding: .55rem .9rem; font-size: .9rem; color: var(--fq-muted); }
.fq-tip summary { cursor: pointer; font-weight: 600; color: var(--fq-ink); }
.fq-tip summary i { color: #06c755; }
.fq-tip > div { margin-top: .4rem; }
.fq-day { display: flex; align-items: baseline; gap: .5rem; margin: 1.5rem 0 .6rem; }
.fq-day-d { font-size: 1.15rem; font-weight: 700; color: var(--fq-primary); font-variant-numeric: tabular-nums; }
.fq-day-w { font-size: .875rem; color: var(--fq-muted); }
.fq-entry .card-body { padding: 1.1rem 1.25rem; }
.fq-entry { scroll-margin-top: 90px; }
.fq-entry:target { box-shadow: 0 0 0 3px rgba(21, 122, 128, .35); }
.fq-entry-top { display: flex; justify-content: space-between; align-items: flex-start; gap: .5rem; margin-bottom: .4rem; }
.fq-entry-tags { display: flex; flex-wrap: wrap; gap: .35rem; align-items: center; }
.fq-kind { display: inline-flex; align-items: center; gap: .3rem; padding: .1rem .55rem; border-radius: 999px; font-size: .8rem; font-weight: 600; background: #f1f3f6; color: #4a5462; }
.fq-kind-sub { background: #e9eef5; color: var(--fq-primary); }
.fq-entry-award .fq-kind:first-child, .fq-entry-competition .fq-kind:first-child { background: #fff4d6; color: #7a5200; }
.fq-entry-score .fq-kind:first-child { background: #e9eef5; color: var(--fq-primary); }
.fq-score { font-weight: 700; color: var(--fq-primary); font-variant-numeric: tabular-nums; }
.fq-entry-edit { padding: .15rem .55rem; font-size: .8rem; }
.fq-entry-h { font-size: 1.05rem; font-weight: 700; line-height: 1.5; margin: 0 0 .35rem; color: var(--fq-ink); }
.fq-entry-body { white-space: pre-wrap; font-size: .95rem; line-height: 1.8; color: #33404d; }
.fq-entry-meta { font-size: .8rem; color: var(--fq-muted); margin-top: .6rem; }
.fq-photos { display: grid; grid-template-columns: repeat(auto-fill, minmax(120px, 1fr)); gap: .5rem; max-width: 820px; }
.fq-photos img { width: 100%; aspect-ratio: 1; object-fit: cover; border-radius: .5rem; border: 1px solid var(--fq-line); display: block; }
.fq-photos-one { grid-template-columns: minmax(0, 420px); }
.fq-photos-one img { aspect-ratio: auto; max-height: 360px; object-fit: contain; background: var(--fq-mist); }
.fq-auto { display: flex; flex-wrap: wrap; gap: .4rem 1.25rem; font-size: .85rem; color: var(--fq-muted); padding: .1rem .25rem; }
.fq-auto a { color: var(--fq-muted); }
.fq-auto i { color: var(--fq-accent); margin-right: .2rem; }
/* ===== 後台 Archy 對話（2026-10-24）：像 LINE 聊天室；我＝右邊深藍、Archy＝左邊白底 ===== */
.fq-ac { display: flex; flex-direction: column; height: calc(100vh - 230px); min-height: 480px; overflow: hidden; }
.fq-ac-log { flex: 1; overflow-y: auto; padding: 1.25rem; display: flex; flex-direction: column; gap: .9rem; background: #f7f9fb; }
.fq-ac-empty { margin: auto; max-width: 420px; text-align: center; color: var(--fq-muted); font-size: .95rem; }
.fq-ac-row { display: flex; flex-direction: column; max-width: 82%; }
.fq-ac-me { align-self: flex-end; align-items: flex-end; }
.fq-ac-archy { align-self: flex-start; align-items: flex-start; }
.fq-ac-bub { padding: .65rem .9rem; border-radius: 1rem; line-height: 1.7; word-break: break-word; }
.fq-ac-me .fq-ac-bub { background: var(--fq-primary); color: #fff; border-bottom-right-radius: .3rem; }
.fq-ac-me .fq-ac-bub a { color: var(--fq-accent-light); }
.fq-ac-archy .fq-ac-bub { background: #fff; border: 1px solid var(--fq-line); border-bottom-left-radius: .3rem; }
.fq-ac-text { white-space: pre-wrap; }
.fq-ac-bub img { display: block; max-width: 240px; max-height: 240px; border-radius: .6rem; margin-bottom: .35rem; }
.fq-ac-tag { font-size: .75rem; font-weight: 700; opacity: .85; margin-bottom: .2rem; }
.fq-ac-meta { display: flex; gap: .5rem; font-size: .75rem; color: var(--fq-muted); margin-top: .2rem; padding: 0 .3rem; }
.fq-ac-quick { display: flex; flex-wrap: wrap; gap: .35rem; margin-top: .45rem; }
.fq-ac-quick .fq-chip { padding: .25rem .75rem; font-size: .85rem; cursor: pointer; }
.fq-ac-quick.fq-ac-old { display: none; }
.fq-ac-form { border-top: 1px solid var(--fq-line); padding: .75rem; background: #fff; }
.fq-ac-mode { display: flex; flex-wrap: wrap; align-items: center; gap: .4rem; margin-bottom: .5rem; }
.fq-ac-target { width: auto; }
.fq-ac-hint { font-size: .8rem; color: #7a5200; background: #fff4d6; border-radius: .4rem; padding: .35rem .6rem; margin-bottom: .5rem; }
.fq-ac-input { display: flex; gap: .5rem; align-items: flex-end; }
.fq-ac-input textarea { resize: none; min-height: 42px; max-height: 180px; }
.fq-ac-pic { display: inline-flex; align-items: center; justify-content: center; height: 42px; cursor: pointer; }
.fq-ac-input .btn-primary { height: 42px; }
.fq-ac-err { margin-top: .4rem; }
.fq-ac-menu { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: .4rem; }
.fq-ac-btn { display: flex; flex-direction: column; align-items: flex-start; gap: .1rem; text-align: left; padding: .55rem .6rem; border: 1px solid var(--fq-line); border-radius: .5rem; background: #fff; color: var(--fq-ink); font-size: .875rem; font-weight: 600; line-height: 1.3; cursor: pointer; }
.fq-ac-btn:hover { border-color: var(--fq-accent); background: #f2f8f8; }
.fq-ac-btn-s { font-size: .72rem; font-weight: 400; color: var(--fq-muted); }
@media (max-width: 991.98px) { .fq-ac { height: 70vh; } .fq-ac-row { max-width: 92%; } }
/* ===== 後台 Archy 排程（2026-10-24 版面優化）：每個排程一列；桌機四欄（名稱／今天／狀態／操作），手機直排 ===== */
.fq-job { display: grid; grid-template-columns: minmax(0, 1fr) 150px 170px 300px; gap: .5rem 1rem; align-items: center; padding: .8rem 1.1rem; border-top: 1px solid #eef1f4; scroll-margin-top: 90px; }
.fq-job:first-child { border-top: 0; }
.fq-job:target { background: #f2f8f8; }
.fq-job-paused { background: #fafbfc; }
.fq-job-paused .fq-job-name { color: var(--fq-muted); }
.fq-job-name { font-weight: 700; line-height: 1.4; }
.fq-job-sub { font-size: .85rem; color: var(--fq-muted); line-height: 1.5; }
.fq-job-code { font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-size: .75rem; color: #8a94a3; margin-left: .25rem; }
.fq-job-today, .fq-job-flags { display: flex; flex-wrap: wrap; align-items: center; gap: .35rem; }
.fq-job-by { font-size: .8rem; color: var(--fq-muted); }
.fq-job-run { font-size: .8rem; color: var(--fq-accent); }
.fq-job-run i { font-size: .5rem; vertical-align: middle; }
.fq-job-act { display: flex; flex-wrap: wrap; justify-content: flex-end; align-items: flex-start; gap: .35rem; }
.fq-job-act form { margin: 0; }
.fq-job-edit summary { list-style: none; }
.fq-job-edit summary::-webkit-details-marker { display: none; }
.fq-job-edit[open] summary { background: var(--fq-mist); }
.fq-job-edit form { display: flex; gap: .35rem; margin-top: .4rem; }
.fq-job-edit input { width: 150px; }
.fq-quota li { padding: .4rem 0; border-top: 1px solid #eef1f4; font-size: .925rem; }
.fq-quota li:first-child { border-top: 0; padding-top: 0; }
.fq-quota .progress { margin-top: .3rem; }
.fq-quota-n { font-weight: 700; font-variant-numeric: tabular-nums; }
.fq-quota-n small { font-weight: 400; color: var(--fq-muted); }
@media (max-width: 991.98px) {
  .fq-job { grid-template-columns: minmax(0, 1fr) auto; }
  .fq-job-main { grid-column: 1 / -1; }
  .fq-job-act { grid-column: 1 / -1; justify-content: flex-start; }
}
/* ===== 投資總覽（2026-10-24 版面優化）：持股清單桌機五欄、手機兩行；紅漲綠跌 ===== */
.fq-index { display: flex; align-items: baseline; gap: .5rem; background: #fff; border: 1px solid var(--fq-line); border-radius: .6rem; padding: .45rem .8rem; font-variant-numeric: tabular-nums; }
.fq-inv-kpis { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 1rem 1.5rem; }
.fq-inv-kpis .fq-kpi-v small { font-size: .8rem; font-weight: 600; }
.fq-kpi-big { font-size: 1.75rem; color: var(--fq-primary); }
@media (max-width: 767.98px) { .fq-inv-kpis { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
.fq-inv-bar { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: center; gap: .6rem; }
.fq-inv-tools { display: flex; gap: .4rem; }
.fq-inv-tools input { width: 190px; }
.fq-inv-tools select { width: auto; }
.fq-h-head, .fq-h { display: grid; grid-template-columns: minmax(0, 2fr) minmax(0, 1.1fr) minmax(0, 1fr) minmax(0, 1.4fr) minmax(0, 1.2fr); gap: .25rem 1rem; padding: .6rem 1rem; align-items: center; }
.fq-h-head { background: #eef2f6; color: var(--fq-muted); font-size: .78rem; font-weight: 600; border-top: 1px solid var(--fq-line); border-bottom: 1px solid var(--fq-line); }
.fq-h-head span:not(:first-child) { text-align: right; }
.fq-h { border-top: 1px solid #eef1f4; font-variant-numeric: tabular-nums; font-size: .95rem; }
.fq-h:first-child { border-top: 0; }
.fq-h:hover { background: #f7f9fb; }
.fq-h-name a { font-weight: 700; color: var(--fq-ink); text-decoration: none; }
.fq-h-name a:hover { color: var(--fq-accent); }
.fq-h-code { font-size: .78rem; color: #8a94a3; margin-left: .3rem; }
.fq-h-qty, .fq-h-px, .fq-h-mv, .fq-h-pnl { text-align: right; display: flex; flex-direction: column; align-items: flex-end; line-height: 1.35; }
.fq-h-sub { font-size: .8rem; color: var(--fq-muted); }
.fq-h-pnl .fq-h-sub, .fq-h-px .fq-h-sub.text-danger, .fq-h-px .fq-h-sub.text-success { color: inherit; }
.fq-h-pnl { font-weight: 600; }
.fq-h-w { display: inline-flex; align-items: center; gap: .35rem; font-size: .78rem; color: var(--fq-muted); }
.fq-h-wbar { display: inline-block; width: 56px; height: 5px; background: #e9eef5; border-radius: 3px; overflow: hidden; }
.fq-h-wbar span { display: block; height: 100%; background: var(--fq-primary); border-radius: 3px; min-width: 2px; }
.fq-h-watch { grid-template-columns: minmax(0, 2fr) minmax(0, 1fr) minmax(0, 3fr); }
.fq-h-note { font-size: .85rem; color: var(--fq-muted); }
@media (max-width: 767.98px) {
  .fq-h-head { display: none; }
  .fq-h { grid-template-columns: minmax(0, 1fr) auto; grid-template-areas: "name mv" "px pnl"; padding: .7rem .9rem; }
  .fq-h-name { grid-area: name; } .fq-h-mv { grid-area: mv; } .fq-h-px { grid-area: px; flex-direction: row; gap: .4rem; justify-content: flex-start; align-items: baseline; } .fq-h-pnl { grid-area: pnl; }
  .fq-h-qty, .fq-h-w { display: none; }
  .fq-h-watch { grid-template-areas: "name px" "note note"; }
  .fq-h-watch .fq-h-px { justify-content: flex-end; }
  .fq-h-note { grid-area: note; }
  .fq-inv-tools { width: 100%; } .fq-inv-tools input { flex: 1; width: auto; }
}
.fq-pre { white-space: pre-wrap; font-family: inherit; font-size: .9rem; line-height: 1.75; margin: 0; color: #33404d; }
.fq-fold { max-height: 15rem; overflow: hidden; position: relative; margin-bottom: .6rem; }
.fq-fold::after { content: ""; position: absolute; left: 0; right: 0; bottom: 0; height: 3rem; background: linear-gradient(rgba(255, 255, 255, 0), #fff); }
.fq-fold.fq-fold-open { max-height: none; }
.fq-fold.fq-fold-open::after { display: none; }
/* ===== Ray 的今天（2026-10-24 版面優化）===== */
.fq-daynav .btn { white-space: nowrap; }
.fq-daynav .btn.active { background: var(--fq-primary); border-color: var(--fq-primary); color: #fff; }
.fq-today-strip { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: .75rem; margin-bottom: 1rem; }
.fq-today-cell { display: flex; align-items: center; gap: .75rem; background: #fff; border: 1px solid var(--fq-line); border-radius: .625rem; padding: .85rem 1rem; color: inherit; text-decoration: none; }
a.fq-today-cell:hover { border-color: #cfd8e3; box-shadow: 0 6px 16px rgba(20, 38, 63, .07); color: inherit; }
.fq-today-cell > span:last-child { display: flex; flex-wrap: wrap; align-items: center; gap: .35rem .5rem; min-width: 0; }
.fq-today-l { font-weight: 700; width: 100%; line-height: 1.2; }
.fq-today-drill { font-size: .9rem; color: var(--fq-ink); }
@media (max-width: 767.98px) { .fq-today-strip { grid-template-columns: 1fr; gap: .5rem; } .fq-today-l { width: auto; margin-right: .25rem; } }
.fq-note { font-size: .875rem; color: #7a5200; background: #fff4d6; border-radius: .45rem; padding: .45rem .7rem; }
.fq-hw { font-size: 1rem; line-height: 1.9; color: var(--fq-ink); }
.fq-meta { font-size: .8rem; color: var(--fq-muted); margin-top: .75rem; }
.fq-sub-h { font-size: .82rem; font-weight: 700; color: var(--fq-muted); letter-spacing: .04em; margin-bottom: .4rem; }
.fq-rd-head { display: flex; flex-wrap: wrap; align-items: center; gap: .4rem .6rem; margin-bottom: .6rem; }
.fq-checks li { display: flex; align-items: baseline; gap: .5rem; padding: .35rem 0; border-top: 1px solid #eef1f4; }
.fq-checks li:first-child { border-top: 0; }
.fq-checks i { color: #b6c0cc; flex: none; }
.fq-checks li.is-done i { color: var(--fq-accent); }
.fq-checks li.is-done a, .fq-checks li.is-done > span:not(.fq-status):not(.small) { color: var(--fq-muted); }
.fq-takes li { display: flex; flex-wrap: wrap; align-items: center; gap: .35rem .6rem; padding: .45rem 0; border-top: 1px solid #eef1f4; font-size: .925rem; }
.fq-takes li:first-child { border-top: 0; }
.fq-takes-t { flex: 1 1 200px; min-width: 0; }
.fq-takes-acc { font-weight: 700; font-variant-numeric: tabular-nums; white-space: nowrap; }
.fq-takes-acc.is-good { color: var(--fq-accent-dark); }
.fq-takes-acc.is-mid { color: #7a5200; }
.fq-takes-acc.is-low { color: #a3321f; }
/* ===== 品學堂總覽（2026-10-24 版面優化）===== */
.fq-abil li { padding: .5rem 0; border-top: 1px solid #eef1f4; }
.fq-abil li:first-child { border-top: 0; padding-top: 0; }
.fq-abil-top { display: flex; justify-content: space-between; align-items: baseline; gap: .5rem; margin-bottom: .3rem; }
.fq-abil-n { font-weight: 600; }
.fq-abil-v { font-size: .875rem; color: var(--fq-muted); font-variant-numeric: tabular-nums; white-space: nowrap; }
.fq-abil-v strong { color: var(--fq-ink); margin-left: .35rem; }
.fq-abil-bar { height: 8px; background: #e9eef5; border-radius: 4px; overflow: hidden; }
.fq-abil-bar span { display: block; height: 100%; border-radius: 4px; }
.fq-abil-bar .is-good { background: var(--fq-accent); }
.fq-abil-bar .is-mid { background: var(--fq-primary); }
.fq-abil-bar .is-low { background: #d99a1e; }
.fq-rows li, .fq-takes li { display: flex; flex-wrap: wrap; align-items: center; gap: .35rem .6rem; padding: .45rem 0; border-top: 1px solid #eef1f4; font-size: .925rem; }
.fq-rows li:first-child { border-top: 0; }
.fq-rows-d { flex: 0 0 4.6rem; font-variant-numeric: tabular-nums; font-size: .875rem; }
.fq-rows-main { flex: 1 1 140px; display: flex; flex-wrap: wrap; align-items: center; gap: .35rem; min-width: 0; }
.fq-rows-t { font-size: .8rem; color: var(--fq-muted); min-width: 2.6rem; text-align: right; }
.fq-takes .fq-rows-d { flex-basis: 2.8rem; color: var(--fq-muted); }
/* ===== 後台文章管理（2026-10-24 版面優化）===== */
.fq-posts-bar { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: center; gap: .6rem; margin-bottom: 1rem; }
.fq-posts-bar input { width: 240px; }
.fq-dot { width: .45rem; height: .45rem; border-radius: 50%; background: #d99a1e; display: inline-block; margin-right: .1rem; }
.fq-post { display: flex; gap: 1rem; justify-content: space-between; align-items: flex-start; background: #fff; border: 1px solid var(--fq-line); border-radius: .625rem; padding: 1rem 1.15rem; margin-bottom: .6rem; }
.fq-post.is-pending { border-color: #f0d9a6; box-shadow: 0 0 0 3px #fff8e6; }
.fq-post-main { min-width: 0; flex: 1; }
.fq-post-tags { display: flex; flex-wrap: wrap; gap: .35rem; margin-bottom: .35rem; }
.fq-post-t { display: block; font-weight: 700; font-size: 1.02rem; line-height: 1.5; color: var(--fq-ink); text-decoration: none; }
.fq-post-t:hover { color: var(--fq-accent); }
.fq-post-meta { display: flex; flex-wrap: wrap; gap: .15rem .9rem; font-size: .8rem; color: var(--fq-muted); margin-top: .2rem; }
.fq-post-meta a { color: var(--fq-accent); text-decoration: none; }
.fq-post-note { margin-top: .6rem; font-size: .875rem; line-height: 1.7; color: #33404d; background: var(--fq-mist); border-radius: .45rem; padding: .55rem .75rem; white-space: pre-wrap; }
.fq-post-note i { color: var(--fq-muted); }
.fq-post-act { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: .35rem; flex: none; max-width: 290px; }
.fq-post-act form { margin: 0; }
@media (max-width: 767.98px) {
  .fq-post { flex-direction: column; }
  .fq-post-act { max-width: none; justify-content: flex-start; }
  .fq-posts-bar input { width: 100%; }
}
/* ===== 後台客服（2026-10-24 版面優化）===== */
.fq-sup-kpis { display: flex; flex-wrap: wrap; align-items: center; gap: 1rem 2rem; }
.fq-sup-budget { font-size: .82rem; color: #33404d; border-top: 1px solid #eef1f4; margin-top: .9rem; padding-top: .7rem; line-height: 1.7; }
.fq-sup { display: flex; gap: .85rem; align-items: flex-start; background: #fff; border: 1px solid var(--fq-line); border-radius: .625rem; padding: .85rem 1rem; margin-bottom: .5rem; color: inherit; text-decoration: none; }
.fq-sup:hover { border-color: #cfd8e3; box-shadow: 0 6px 16px rgba(20, 38, 63, .07); color: inherit; }
.fq-sup.is-wait { border-color: #efc2b8; box-shadow: 0 0 0 3px #fdf0ed; }
.fq-sup-av { flex: none; width: 40px; height: 40px; border-radius: 50%; background: #e9eef5; color: var(--fq-primary); font-weight: 700; display: inline-flex; align-items: center; justify-content: center; }
.fq-sup-main { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: .2rem; }
.fq-sup-top { display: flex; flex-wrap: wrap; align-items: center; gap: .35rem; }
.fq-sup-name { font-weight: 700; margin-right: .15rem; }
.fq-sup-last { font-size: .9rem; color: #33404d; }
.fq-sup-contact { font-size: .8rem; color: var(--fq-muted); }
.fq-sup-side { flex: none; display: flex; flex-direction: column; align-items: flex-end; gap: .15rem; font-size: .78rem; color: var(--fq-muted); font-variant-numeric: tabular-nums; }
.fq-sup-state .btn.active { background: var(--fq-primary); border-color: var(--fq-primary); color: #fff; }
.fq-sup-state .btn.active.is-wait { background: #a3321f; border-color: #a3321f; }
.fq-sup-log { padding: 1.1rem; background: #f7f9fb; display: flex; flex-direction: column; gap: .8rem; border-radius: .625rem; }
.fq-sup-msg { display: flex; flex-direction: column; max-width: 82%; }
.fq-sup-msg.is-user { align-self: flex-start; align-items: flex-start; }
.fq-sup-msg.is-ai, .fq-sup-msg.is-human { align-self: flex-end; align-items: flex-end; }
.fq-sup-bub { padding: .6rem .85rem; border-radius: 1rem; white-space: pre-wrap; word-break: break-word; line-height: 1.7; }
.fq-sup-msg.is-user .fq-sup-bub { background: #fff; border: 1px solid var(--fq-line); border-bottom-left-radius: .3rem; }
.fq-sup-msg.is-ai .fq-sup-bub { background: #e6f2f2; border-bottom-right-radius: .3rem; }
.fq-sup-msg.is-human .fq-sup-bub { background: var(--fq-primary); color: #fff; border-bottom-right-radius: .3rem; }
.fq-sup-meta { font-size: .75rem; color: var(--fq-muted); margin-top: .2rem; padding: 0 .3rem; }
@media (max-width: 575.98px) { .fq-sup-av { display: none; } .fq-sup-msg { max-width: 92%; } }
/* Bootstrap 的提示框換成品牌色（info 原本是青色、warning 是亮黃） */
.alert-info { --bs-alert-bg: #e6f2f2; --bs-alert-color: #0f5e63; --bs-alert-border-color: #bfe0e0; }
.alert-warning { --bs-alert-bg: #fff4d6; --bs-alert-color: #7a5200; --bs-alert-border-color: #f0d9a6; }
/* ===== 功課月曆（2026-10-24 版面優化）：桌機月曆、手機清單 ===== */
.fq-cal { background: #fff; border: 1px solid var(--fq-line); border-radius: .625rem; overflow: hidden; }
.fq-cal-head, .fq-cal-week { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); }
.fq-cal-head span { text-align: center; font-size: .8rem; font-weight: 700; color: var(--fq-muted); background: #eef2f6; padding: .45rem 0; }
.fq-cal-day { min-height: 112px; padding: .45rem .55rem; border-top: 1px solid #eef1f4; border-left: 1px solid #eef1f4; display: flex; flex-direction: column; gap: .25rem; color: inherit; text-decoration: none; background: #fff; }
.fq-cal-week > :first-child { border-left: 0; }
.fq-cal-day.wkend { background: #fafbfc; }
.fq-cal-day.out { background: #f7f9fb; color: #b6c0cc; }
.fq-cal-day.has:hover { background: #f2f8f8; }
.fq-cal-day.today { box-shadow: inset 0 0 0 2px var(--fq-accent); }
.fq-cal-n { display: flex; align-items: center; justify-content: space-between; font-weight: 700; font-size: .9rem; font-variant-numeric: tabular-nums; }
.fq-cal-txt { font-size: .78rem; line-height: 1.45; color: #33404d; display: -webkit-box; -webkit-line-clamp: 4; -webkit-box-orient: vertical; overflow: hidden; }
.fq-cal-dot { display: inline-block; width: .5rem; height: .5rem; border-radius: 50%; }
.fq-cal-dot.ok { background: var(--fq-accent); }
.fq-cal-dot.wait { background: #d99a1e; }
.fq-cal-dot.bad { background: #a3321f; }
.fq-cal-legend { display: flex; gap: 1rem; font-size: .78rem; color: var(--fq-muted); padding: .55rem .8rem; border-top: 1px solid #eef1f4; }
.fq-cal-legend > span { display: inline-flex; align-items: center; gap: .35rem; }
.fq-hw-list li a { display: flex; flex-wrap: wrap; align-items: center; gap: .3rem .7rem; background: #fff; border: 1px solid var(--fq-line); border-radius: .6rem; padding: .7rem .9rem; margin-bottom: .45rem; color: inherit; text-decoration: none; }
.fq-hw-d { flex: 0 0 auto; font-size: .9rem; }
.fq-hw-t { flex: 1 1 100%; font-size: .875rem; color: #33404d; }
