/* 裕誠營運手機版：大按鈕、單手好按（按鈕至少 44px）、跟著系統深淺色 */
:root {
  --bg: #f5f6f8; --card: #fff; --ink: #1b2430; --muted: #6b7280; --line: #e5e7eb;
  --navy: #183052; --green: #16a34a; --blue: #2563eb; --amber: #b45309; --red: #b91c1c;
  --amber-bg: #fef3c7; --red-bg: #fee2e2; --ok-bg: #dcfce7;
}
/* 底色：預設跟裝置；「我」那頁可以選白底／黑底（html data-theme） */
:root { color-scheme: light dark; }
:root[data-theme=light] { color-scheme: light; }
@media (prefers-color-scheme: dark) {
  :root:not([data-theme=light]) { --bg: #0a1224; --card: #111c34; --ink: #e8eef8; --muted: #9fb0cc; --line: #22314f;
          --amber-bg: #3a2a0c; --red-bg: #3b1515; --ok-bg: #12301d; }
}
:root[data-theme=dark] { color-scheme: dark; --bg: #0a1224; --card: #111c34; --ink: #e8eef8; --muted: #9fb0cc; --line: #22314f;
          --amber-bg: #3a2a0c; --red-bg: #3b1515; --ok-bg: #12301d; }
* { box-sizing: border-box; -webkit-tap-highlight-color: transparent; }
html, body { margin: 0; background: var(--bg); color: var(--ink);
  font: 16px/1.5 -apple-system, BlinkMacSystemFont, "PingFang TC", "Noto Sans TC", "Microsoft JhengHei", sans-serif; }
a { color: var(--blue); text-decoration: none; }
.top { position: sticky; top: 0; z-index: 10; display: flex; align-items: center; gap: 8px;
  padding: calc(env(safe-area-inset-top) + 10px) 16px 10px; background: var(--navy); color: #fff; }
.top h1 { flex: 1; margin: 0; font-size: 18px; }
.top-link { color: #cbd5e1; font-size: 13px; }
.back { color: #fff; font-size: 28px; line-height: 1; padding: 0 8px 0 0; }
main { padding: 12px 16px calc(env(safe-area-inset-bottom) + 84px); max-width: 640px; margin: 0 auto; }
.tabbar { position: fixed; bottom: 0; left: 0; right: 0; z-index: 10; display: flex; background: var(--card);
  border-top: 1px solid var(--line); padding-bottom: env(safe-area-inset-bottom); }
.tabbar a { flex: 1; display: flex; flex-direction: column; align-items: center; padding: 6px 0 8px;
  font-size: 11px; color: var(--muted); min-height: 52px; }
.tabbar a span { font-size: 21px; line-height: 1.2; }
.tabbar a.on { color: var(--navy); font-weight: 700; }
@media (prefers-color-scheme: dark) { :root:not([data-theme=light]) .tabbar a.on { color: #93c5fd; } }
:root[data-theme=dark] .tabbar a.on { color: #93c5fd; }
.hello { color: var(--muted); margin: 4px 0 12px; }
.bigs { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
.big { display: flex; flex-direction: column; gap: 4px; min-height: 132px; padding: 16px; border-radius: 18px;
  background: var(--card); color: var(--ink); box-shadow: 0 1px 3px rgba(0,0,0,.06); border: 1px solid var(--line); }
.big:active { transform: scale(.98); }
.big-icon { font-size: 34px; line-height: 1; }
.big-title { font-size: 17px; font-weight: 700; }
.big-sub { font-size: 13px; color: var(--muted); }
.links { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; margin-top: 14px; }
.links a { background: var(--card); border: 1px solid var(--line); border-radius: 12px; padding: 12px; font-size: 14px; color: var(--ink); }
.install-hint, .hint { color: var(--muted); font-size: 13px; margin: 10px 2px; }
.red { color: var(--red); }
.muted { color: var(--muted); }
.small { font-size: 12px; }
.msgs { padding: 8px 16px 0; max-width: 640px; margin: 0 auto; }
.msg { padding: 10px 12px; border-radius: 10px; background: var(--ok-bg); margin-bottom: 6px; font-size: 14px; }
.msg-error { background: var(--red-bg); }
.group { font-size: 14px; margin: 18px 2px 8px; color: var(--muted); }
.group.red { color: var(--red); }
.cards { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 8px; }
.card { display: block; position: relative; overflow: hidden; background: var(--card); color: var(--ink);
  border: 1px solid var(--line); border-radius: 14px; padding: 12px 14px; }
.card.row, .row { display: flex; justify-content: space-between; align-items: center; gap: 10px; }
.card.important { border-left: 4px solid var(--red); }
.card.done .todo-title { text-decoration: line-through; color: var(--muted); }
.todo-title { font-weight: 600; }
.todo-meta { color: var(--muted); font-size: 13px; }
.summary { font-size: 14px; white-space: pre-wrap; }
.right { text-align: right; display: flex; flex-direction: column; align-items: flex-end; gap: 4px; white-space: nowrap; }
.pill { font-size: 12px; padding: 2px 10px; border-radius: 999px; background: var(--line); font-weight: 600; }
.pill-ok { background: var(--ok-bg); color: var(--green); }
.pill-warn { background: var(--amber-bg); color: var(--amber); }
.pill-danger { background: var(--red-bg); color: var(--red); }
.stat { display: grid; grid-template-columns: 2fr 1fr 1fr; gap: 8px; }
.stat > div { background: var(--card); border: 1px solid var(--line); border-radius: 14px; padding: 10px 12px;
  display: flex; flex-direction: column; }
.stat b { font-size: 20px; }
.stat small { color: var(--muted); font-size: 12px; }
.stat .amber { background: var(--amber-bg); }
.stat .redbox { background: var(--red-bg); }
.btns { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 10px; }
.btns form { margin: 0; }
.btn { display: inline-flex; align-items: center; justify-content: center; gap: 6px; min-height: 44px; padding: 0 16px;
  border-radius: 999px; border: 1px solid transparent; font-size: 15px; font-weight: 600; cursor: pointer; font-family: inherit; }
.btn.wide { width: 100%; margin: 6px 0; }
.btn.green { background: var(--green); color: #fff; }
.btn.blue { background: var(--navy); color: #fff; }
.btn.light { background: var(--card); color: var(--ink); border-color: var(--line); }
.btn.danger { background: var(--card); color: var(--red); border-color: var(--red-bg); }
.reject-box, .reply-box { margin-top: 10px; }
.reject-box textarea, .reply-box textarea { width: 100%; min-height: 4.5em; font: inherit; font-size: 15px; padding: 8px 10px;
  border-radius: 10px; border: 1px solid var(--line); background: var(--bg); color: var(--ink); box-sizing: border-box; }
.reject-box .btn, .reply-box .btn { margin-top: 8px; }
.two { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; }
.filters { display: flex; gap: 6px; margin: 10px 0; overflow-x: auto; }
.filters a { padding: 6px 14px; border-radius: 999px; background: var(--card); border: 1px solid var(--line);
  color: var(--ink); font-size: 14px; white-space: nowrap; }
.filters a.on { background: var(--navy); color: #fff; border-color: var(--navy); }
.form label { display: flex; flex-direction: column; gap: 4px; margin-bottom: 12px; font-size: 14px; color: var(--muted); }
.form label.check { flex-direction: row; align-items: center; gap: 8px; color: var(--ink); }
.form input, .form select, .form textarea { font: inherit; font-size: 16px; color: var(--ink); background: var(--bg);
  border: 1px solid var(--line); border-radius: 10px; padding: 11px 12px; width: 100%; }
.form input[type=checkbox] { width: 22px; height: 22px; }
.form .errorlist { color: var(--red); margin: 2px 0 0; padding: 0; list-style: none; font-size: 13px; }
.date-presets { display: flex; gap: 6px; }
.date-presets .chip { padding: 5px 12px; font-size: 13px; }
.photo { border: 2px dashed var(--line); border-radius: 14px; padding: 18px; text-align: center; color: var(--ink) !important;
  font-weight: 600; }
.photo input { margin-top: 8px; }
.previews, .thumbs { display: flex; gap: 6px; flex-wrap: wrap; margin: 6px 0 10px; }
.previews img, .thumbs img { width: 72px; height: 72px; object-fit: cover; border-radius: 10px; }
.quick-add { display: flex; gap: 6px; }
.quick-add input { flex: 1; min-width: 0; font: inherit; padding: 11px 12px; border-radius: 12px; border: 1px solid var(--line);
  background: var(--card); color: var(--ink); }
.quick-add input[type=date] { flex: 0 0 132px; }
.quick-add button { border: 0; border-radius: 12px; background: var(--navy); color: #fff; padding: 0 16px; font: inherit; font-weight: 700; }
.kv { display: grid; grid-template-columns: auto 1fr; gap: 4px 12px; margin: 10px 0 0; font-size: 14px; }
.kv dt { color: var(--muted); }
.kv dd { margin: 0; text-align: right; }
.empty { text-align: center; color: var(--muted); padding: 24px 0; list-style: none; }
details summary { color: var(--blue); font-size: 13px; margin-top: 6px; cursor: pointer; }
/* 滑動完成 */
.todo .swipe-bg { position: absolute; inset: 0; display: flex; justify-content: space-between; align-items: center;
  padding: 0 18px; font-weight: 700; color: #fff; background: linear-gradient(90deg, var(--green) 50%, var(--amber) 50%);
  opacity: 0; }
.todo .todo-body { position: relative; background: var(--card); transition: transform .2s; }
.todo.swiping .swipe-bg { opacity: 1; }
.card.leaving { transition: opacity .25s, max-height .3s; opacity: 0; }
/* 訂單進度 */
.steps { display: flex; gap: 3px; margin: 8px 0 4px; }
.steps i { flex: 1; height: 6px; border-radius: 3px; background: var(--line); }
.steps i.done { background: var(--green); }
.steps i.now { background: var(--amber); }
.next { font-size: 13px; }

/* 交辦 Rita */
.wide-big { display: flex; min-height: 0; margin-bottom: 12px; background: var(--navy); color: #fff; border-color: var(--navy); }
.wide-big .big-sub { color: #cbd5e1; }
.wide-big .red { color: #fecaca; }
.thread { display: flex; flex-direction: column; gap: 10px; margin: 12px 0; }
.bubble { max-width: 88%; padding: 10px 12px; border-radius: 16px; background: var(--card); border: 1px solid var(--line); }
.bubble.miles { align-self: flex-end; background: #dbeafe; border-color: #bfdbfe; color: #1e3a5f; }
.bubble.rita { align-self: flex-start; }
.bubble .who { font-size: 12px; color: var(--muted); margin-bottom: 4px; }
.bubble .file { margin-top: 8px; padding-top: 8px; border-top: 1px dashed var(--line); }
.bubble .file img { max-width: 100%; border-radius: 10px; }
.file-row { display: flex; justify-content: space-between; gap: 8px; font-size: 14px; }
.file-name { word-break: break-all; }
@media (prefers-color-scheme: dark) { :root:not([data-theme=light]) .bubble.miles { background: #1e3a5f; border-color: #1e3a5f; color: #e8edf3; } }
:root[data-theme=dark] .bubble.miles { background: #1e3a5f; border-color: #1e3a5f; color: #e8edf3; }

/* 標案雷達篩選 */
.radar-filters .filters { margin: 6px 0; }
.chip { display: inline-flex; align-items: center; padding: 6px 14px; border-radius: 999px; background: var(--card);
  border: 1px solid var(--line); font-size: 14px; white-space: nowrap; cursor: pointer; color: var(--ink); }
.chip.on { background: var(--navy); color: #fff; border-color: var(--navy); }
.chip input { display: none; }
.radar-filters select { font: inherit; font-size: 15px; padding: 9px 10px; border-radius: 12px; border: 1px solid var(--line);
  background: var(--card); color: var(--ink); width: 100%; margin: 6px 0; }
.radar-filters .quick-add { margin: 6px 0; align-items: center; }
.radar-filters .dims { display: grid; grid-template-columns: repeat(3, 1fr); gap: 6px; }

/* 待你決定 */
/* 燈號（Miles 10/11）：沒有＝綠、有未處理＝橘、有急件或過期＝紅 */
.light-big.lv-ok { background: #15803d; border-color: #15803d; }
.light-big.lv-warn { background: #c2410c; border-color: #c2410c; }
.light-big.lv-danger { background: #b91c1c; border-color: #b91c1c; }
.decide-big .big-sub { color: rgba(255, 255, 255, .88); }
.ok { color: var(--green); font-weight: 700; }
.card.decision.lv-warn { border: 2px solid var(--amber); }
.card.decision.lv-danger { border: 2px solid var(--red); }
.dgroup > summary .amber, .dgroup > summary .red { font-weight: 700; }
.dgroup { margin: 10px 0; }
.dgroup > summary { list-style: none; padding: 10px 14px; border-radius: 12px; background: var(--card); border: 1px solid var(--line);
  color: var(--ink); font-size: 15px; cursor: pointer; }
.dgroup > .cards { margin-top: 8px; }
.opts { display: flex; flex-direction: column; gap: 6px; margin: 8px 0; }
.opt { display: flex; align-items: center; gap: 10px; padding: 10px 12px; border-radius: 12px; border: 1px solid var(--line);
  background: var(--bg); cursor: pointer; }
.opt input { width: 20px; height: 20px; accent-color: #16a34a; }
.opt:has(input:checked) { border-color: #16a34a; background: var(--ok-bg); font-weight: 600; }
.rec { background: var(--bg); padding: 8px 10px; border-radius: 10px; }
.decision textarea.reply { width: 100%; font: inherit; font-size: 15px; padding: 8px 10px; border-radius: 10px;
  border: 1px solid var(--line); background: var(--bg); color: var(--ink); }
.sticky-submit { position: sticky; bottom: calc(env(safe-area-inset-bottom) + 64px); padding: 8px 0; }

/* ── 電腦（寬螢幕）：左側固定選單、內容加寬、清單排兩欄（Miles 10/11：桌機也要好用） ── */
@media (min-width: 1024px) {
  body { padding-left: 200px; }
  .top { padding-left: 24px; }
  main { max-width: 1480px; padding: 20px 28px 40px; }
  .msgs { max-width: 1480px; }
  .tabbar { top: 0; bottom: 0; right: auto; width: 200px; flex-direction: column; justify-content: flex-start;
    border-top: 0; border-right: 1px solid var(--line); padding: 72px 10px 16px; gap: 4px; }
  .tabbar a { flex: 0 0 auto; flex-direction: row; gap: 10px; justify-content: flex-start; padding: 10px 12px;
    border-radius: 10px; font-size: 15px; min-height: 0; }
  .tabbar a span { font-size: 18px; }
  .tabbar a.on { background: var(--bg); }
  .bigs { grid-template-columns: repeat(4, 1fr); }
  .links { grid-template-columns: repeat(4, 1fr); }
  main > .wide-big { display: inline-flex; width: calc(50% - 6px); vertical-align: top; min-height: 110px; }
  main > a.wide-big:nth-of-type(odd) { margin-right: 8px; }
  .cards { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; }
  .cards > .empty { grid-column: 1 / -1; }
  .thread .cards, .split .cards { display: flex; }
  .split { display: grid; grid-template-columns: 420px minmax(0, 1fr); gap: 20px; align-items: start; }
  .split.wide-left { grid-template-columns: minmax(0, 1fr) 380px; }
  .split > form { position: sticky; top: 76px; }
  .stat { max-width: 760px; }
  .sticky-submit { bottom: 12px; max-width: 420px; margin-left: auto; }
  .bubble { max-width: 78%; }
}

/* ── 團隊狀態 ── */
.staff-name { font-size: 17px; }
.staff-state { display: flex; gap: 8px; align-items: center; margin: 8px 0 4px; }
.staff-basis { font-size: 14px; margin: 8px 0; padding: 8px 10px; border-radius: 10px; background: var(--bg); }
.staff-basis.inference { background: var(--amber-bg); }
.staff-basis a { margin-left: 6px; }
.tag-warn { display: inline-block; background: var(--amber-bg); color: var(--amber); font-weight: 700; border-radius: 6px; padding: 0 6px; }
.staff-sec { font-size: 14px; margin: 6px 0; }
.staff-sec ul { margin: 2px 0 0; padding-left: 20px; }
.card.staff { display: block; }
.card.staff.has-inference { border-right: 4px solid var(--amber); }
@media (min-width: 1024px) {
  .cards.staff-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .cards.staff-history { grid-template-columns: 1fr; max-width: 820px; }
}
.amber { color: var(--amber); font-weight: 700; }
.scope-box { margin: 8px 0; font-size: 14px; }
.scope-box summary { cursor: pointer; font-weight: 600; }
.scope-ext { background: var(--amber-bg); border-radius: 10px; padding: 6px 10px; }
.card.ext .ext-line { margin: 6px 0; font-size: 15px; }
.card.ext.pending { border-left: 4px solid var(--amber); }
.card.ext textarea { width: 100%; margin-top: 6px; }
@media (min-width: 1024px) {
  .cards.one { display: flex; flex-direction: column; }
  .split .cards.one { display: flex; }
}

/* ── 理解全貌（整篇閱讀；手機一欄，電腦左邊文章、右邊已看過／意見） ── */
.profile-sum { display: block; margin: 8px 0; padding: 10px 12px; border-radius: 10px; background: var(--bg);
  color: inherit; text-decoration: none; }
.profile-sum.changed { background: var(--amber-bg); }
.profile-sum > span { display: block; margin-top: 4px; }
.profile-sum .row { margin-top: 0; }
.profile-sum .link { color: var(--blue); }
.profile-wrap { display: block; margin-bottom: 20px; }
.profile-doc { display: block; }
.profile-head { margin-bottom: 8px; }
.profile-side .card { display: block; margin-top: 10px; }
.profile-side select, .profile-side textarea { width: 100%; margin: 6px 0; }
.profile-comments, .profile-versions { margin: 6px 0 0; padding-left: 18px; font-size: 14px; }
.profile-comments li { margin-bottom: 8px; }
.seg { display: flex; gap: 6px; margin: 4px 0 8px; flex-wrap: wrap; }
.seg a { padding: 6px 12px; border-radius: 999px; border: 1px solid var(--line); font-size: 14px; color: inherit; text-decoration: none; }
.seg a.on { background: var(--navy); color: #fff; border-color: var(--navy); }
.md { font-size: 16px; line-height: 1.75; overflow-wrap: anywhere; }
.md .md-h { margin: 18px 0 6px; font-size: 18px; color: var(--navy); }
.md h4.md-h { font-size: 16px; }
.md .md-p { margin: 4px 0; }
.md .md-gap { height: 6px; }
.md .md-li { display: flex; gap: 8px; margin: 2px 0; }
.md .md-li.d1 { padding-left: 20px; } .md .md-li.d2 { padding-left: 40px; } .md .md-li.d3 { padding-left: 60px; }
.md .md-mark { flex: none; min-width: 1em; color: var(--muted); }
.md .md-quote { border-left: 3px solid var(--line); padding: 2px 10px; margin: 6px 0; color: var(--muted); }
.md code { background: var(--bg); border-radius: 4px; padding: 0 4px; font-size: 14px; }
.md-add { background: var(--ok-bg); box-shadow: inset 3px 0 0 var(--green); padding-left: 6px; border-radius: 4px; }
.md-del { background: var(--red-bg); box-shadow: inset 3px 0 0 var(--red); padding-left: 6px; border-radius: 4px;
  text-decoration: line-through; text-decoration-color: rgba(185, 28, 28, .45); }
.diff-legend span { padding: 2px 8px; margin-right: 6px; }
@media (prefers-color-scheme: dark) { :root:not([data-theme=light]) .md .md-h { color: #9cc0f0; } }
:root[data-theme=dark] .md .md-h { color: #9cc0f0; }
@media (min-width: 1024px) {
  .profile-wrap { display: grid; grid-template-columns: minmax(0, 760px) 340px; gap: 20px; align-items: start; }
  .profile-doc { padding: 24px 32px; }
  .profile-side { position: sticky; top: 76px; }
  .profile-side > .card:first-child, .profile-side > p:first-child { margin-top: 0; }
}

/* ── Markdown 表格、圖片（理解全貌、待你審閱共用） ── */
.md .md-table { overflow-x: auto; margin: 8px 0; border: 1px solid var(--line); border-radius: 8px; }
.md .md-tr { display: grid; grid-auto-flow: column; grid-auto-columns: minmax(96px, 1fr); border-top: 1px solid var(--line); font-size: 14px; }
.md .md-table .md-tr:first-child { border-top: 0; }
.md .md-tr > span { padding: 6px 8px; border-left: 1px solid var(--line); }
.md .md-tr > span:first-child { border-left: 0; }
.md .md-th { font-weight: 700; background: var(--bg); }
.md .md-img { max-width: 100%; border-radius: 8px; margin: 6px 0; border: 1px solid var(--line); }

/* ── 📥 待你審閱：手機一欄；電腦 左清單、中全文、右回覆 ── */
.rv-left { display: none; }
.rv-list { margin-bottom: 8px; }
.rv-list > li { list-style: none; }
.rv-item { display: block; color: inherit; text-decoration: none; }
.rv-item.lv-warn { border-left: 4px solid var(--amber); }
.rv-item.lv-danger { border-left: 4px solid var(--red); }
.rv-item.on { outline: 2px solid var(--navy); }
.rv-tags { display: flex; flex-wrap: wrap; gap: 4px; margin: 4px 0; }
.rv-doc { display: block; }
.rv-title { font-size: 20px; margin: 0 0 4px; }
.rv-summary { font-size: 15px; margin: 8px 0; }
.rv-rita { background: var(--bg); border-left: 4px solid var(--navy); border-radius: 8px; padding: 8px 12px; margin: 10px 0; font-size: 15px; }
.rv-rita.empty { color: var(--muted); border-left-color: var(--line); }
.rv-files { display: flex; flex-wrap: wrap; gap: 8px; margin: 10px 0; }
.rv-file { display: inline-flex; align-items: center; gap: 6px; padding: 8px 12px; border: 1px solid var(--line); border-radius: 10px;
  color: inherit; text-decoration: none; font-size: 14px; min-height: 44px; }
.rv-thumb { display: inline-flex; flex-direction: column; width: 120px; font-size: 12px; color: var(--muted); text-decoration: none; }
.rv-thumb img { width: 120px; height: 90px; object-fit: cover; border-radius: 8px; border: 1px solid var(--line); }
.rv-act .card { display: block; margin-top: 10px; }
.rv-act select, .rv-act textarea { width: 100%; margin: 6px 0; font: inherit; }
.rv-q { margin-bottom: 8px; }
.rv-q p { margin: 4px 0; }
.rv-btns { display: grid; gap: 8px; }
.btn.amber-btn { background: var(--amber); color: #fff; border-color: var(--amber); }
.rv-rel { margin-top: 16px; }
@media (min-width: 1024px) {
  .rv-wrap { display: grid; grid-template-columns: 280px minmax(0, 1fr) 320px; gap: 16px; align-items: start; }
  .rv-left { display: block; position: sticky; top: 76px; max-height: calc(100vh - 96px); overflow-y: auto; }
  .rv-doc { padding: 24px 32px; }
  .rv-act { position: sticky; top: 76px; }
  .rv-act .card:first-child { margin-top: 0; }
}

/* ── 意見輸入框（Miles 10/11：桌機打字太擠）：手機約 3 行、桌機約 7 行；可往下拉高；打字時自動長高（app.js） ── */
main textarea { display: block; box-sizing: border-box; width: 100%; font: inherit; font-size: 16px; line-height: 1.55;
  padding: 8px 10px; border-radius: 10px; border: 1px solid var(--line); background: var(--card); color: var(--ink);
  min-height: 5.2em; max-height: 70vh; resize: vertical; }
.decision textarea.reply { min-height: 3.8em; }
@media (min-width: 1024px) {
  main textarea { min-height: 11.5em; }
  .decision textarea.reply { min-height: 8em; }
}

/* ── D37：⑦ 每一條旁邊的 👍／✋、收合的歷史 ── */
.ext-inline { display: flex; flex-wrap: wrap; gap: 6px; align-items: center; margin: 2px 0 10px 24px; }
.ext-inline .opt { padding: 4px 10px; min-height: 36px; }
.ext-inline input[type=text] { flex: 1 1 200px; font: inherit; font-size: 15px; padding: 6px 10px; border-radius: 10px;
  border: 1px solid var(--line); background: var(--card); color: var(--ink); min-height: 36px; }
.ext-inline.done { font-size: 14px; color: var(--muted); }
.hist-box { margin: 10px 0; }
.hist-box > summary { cursor: pointer; }

/* ── 📰 今日匯報 ── */
.brief-card { display: block; margin-bottom: 12px; }
.brief-card > summary { cursor: pointer; font-size: 16px; }
.brief-card .md { margin: 8px 0; }
.brief-nav { margin-bottom: 10px; }
.brief-doc, .brief-form { display: block; margin-bottom: 10px; }
@media (min-width: 1024px) { .brief-doc { padding: 24px 32px; max-width: 860px; } .brief-form { max-width: 860px; } }

/* 標案區分頁（Miles 10/29）：雷達、投標追蹤、每個朋友各一頁 */
.tender-tabs { margin: 4px 0 12px; padding-bottom: 10px; border-bottom: 1px solid var(--line); }
.tender-tabs a { font-size: 15px; font-weight: 600; padding: 8px 14px; text-decoration: none; }

/* 歷期 401（10/31） */
.tax-table{width:100%;border-collapse:collapse;margin:6px 0;font-size:14px}
.tax-table th,.tax-table td{padding:3px 4px;border-bottom:1px solid rgba(127,127,127,.2);text-align:right}
.tax-table th:first-child,.tax-table td:first-child{text-align:left}
.card.redbox{border:2px solid var(--red)}
/* 財務專區分頁、官網統計（10/31） */
.finance-tabs a { font-size: 14px; padding: 6px 10px; }
ul.plain { margin: 6px 0 0; padding-left: 18px; font-size: 14px; }
ul.plain li { margin: 3px 0; }
.bars { display: flex; align-items: flex-end; gap: 2px; height: 90px; margin: 8px 0 2px; }
.bars span { flex: 1; background: var(--blue, #2563eb); border-radius: 2px 2px 0 0; min-height: 1px; }
.bars-x { display: flex; justify-content: space-between; font-size: 11px; color: var(--muted); }
.rank { width: 100%; border-collapse: collapse; font-size: 14px; }
.rank td { padding: 4px 2px; border-bottom: 1px solid var(--line); }
.rank td.n { text-align: right; white-space: nowrap; }
/* 內外帳比對（10/31） */
.dash { display: grid; grid-template-columns: repeat(2, 1fr); gap: 8px; margin: 8px 0; }
.dash > div, .dash > a { background: var(--card); border: 1px solid var(--line); border-radius: 14px; padding: 10px 12px;
  display: flex; flex-direction: column; color: var(--ink); text-decoration: none; min-width: 0; }
.dash b { font-size: 18px; }
.dash small { color: var(--muted); font-size: 12px; }
.dash .amber { background: var(--amber-bg); }
.dash .redbox { background: var(--red-bg); }
.recon-wrap { overflow-x: auto; margin: 6px -4px; -webkit-overflow-scrolling: touch; }
.recon { border-collapse: collapse; font-size: 13px; white-space: nowrap; }
.recon th, .recon td { padding: 5px 6px; border-bottom: 1px solid var(--line); text-align: left; vertical-align: top; }
.recon th { position: sticky; top: 0; background: var(--card); font-weight: 600; }
.recon th a { color: inherit; }
.recon .n { text-align: right; }
.recon tr.t-danger td { background: var(--red-bg); }
.recon tr.t-warn td { background: var(--amber-bg); }
.recon tr.t-muted td { color: var(--muted); }
@media (min-width: 700px) { .dash { grid-template-columns: repeat(4, 1fr); } }
/* 損益頁：每期毛利長條、案子表（10/31 Miles 選定版面） */
.pbars { display: flex; align-items: flex-end; gap: 6px; height: 130px; margin-top: 6px; }
.pbars a { flex: 1; display: flex; flex-direction: column; justify-content: flex-end; align-items: center; height: 100%;
  color: var(--ink); text-decoration: none; min-width: 0; }
.pbars span { width: 70%; background: #2563eb; border-radius: 4px 4px 0 0; opacity: .75; }
.pbars a.on span { opacity: 1; outline: 2px solid var(--ink); }
.pbars a.neg span { background: #dc2626; }
.pbars em { font-style: normal; font-size: 11px; color: var(--muted); }
.pbars small { font-size: 11px; color: var(--muted); margin-top: 2px; }
.recon.pnl { white-space: normal; width: 100%; }
.recon.pnl td.n, .recon.pnl th.n { white-space: nowrap; }
.recon.pnl summary { cursor: pointer; font-weight: 700; color: var(--ink); font-size: 14px; margin: 0;
  list-style: none; display: flex; gap: 4px; align-items: baseline; }
.recon.pnl summary::-webkit-details-marker { display: none; }
.recon.pnl summary::before { content: "＋"; flex: none; display: inline-block; width: 18px; height: 18px; line-height: 18px;
  text-align: center; border-radius: 4px; border: 1.5px solid var(--ink); font-size: 12px; font-weight: 700; }
.recon.pnl details[open] > summary::before { content: "－"; }
.recon.pnl td.code { font-family: ui-monospace, Menlo, Consolas, monospace; font-weight: 700; color: var(--ink); }
.recon.pnl tr.sum td { border-top: 2px solid var(--ink); }
.why { color: var(--muted); font-size: 13px; }
.dash b.small-b { font-size: 14px; }
.card.amberbox { background: var(--amber-bg); }

/* 總表：每個人按了什麼 */
.who-row { display: flex; flex-wrap: wrap; gap: 6px; margin: 8px 0 4px; }
/* 總表：每個人的狀態可以直接改（下拉選單長得跟標籤一樣）、撞案警告 */
.who-edit { margin: 0; }
.who-edit .pill { display: inline-flex; align-items: center; gap: 2px; cursor: pointer; }
.who-edit select { font: inherit; color: inherit; background: transparent; border: 0; padding: 0 2px; cursor: pointer;
  text-decoration: underline dotted; text-underline-offset: 3px; }
.who-edit select option { color: var(--ink); background: var(--card); }
.clash { margin: 8px 0 0; padding: 6px 10px; border-radius: 10px; background: var(--red-bg); color: var(--red); font-size: 14px; font-weight: 700; }
/* 上方底色切換鈕 */
.theme-toggle { margin: 0; }
.theme-toggle button { font: inherit; font-size: 13px; color: #fff; background: rgba(255,255,255,.12); border: 1px solid rgba(255,255,255,.25);
  border-radius: 999px; padding: 4px 10px; cursor: pointer; white-space: nowrap; }

/* ── 標案清單新版面（Miles 11/8 參考 GPT 的圖）：摘要五格、篩選面板、卡片三欄、卡片／列表切換、分頁 ── */
:root { --c-green: #16a34a; --c-blue: #2563eb; --c-purple: #7c3aed; --c-gray: #64748b; --glow: rgba(37,99,235,.10); }
.ico { flex: none; vertical-align: -3px; }
.page-sub { margin: -2px 2px 10px; color: var(--muted); font-size: 14px; }
.kpis { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; margin: 6px 0 14px; }
.kpi { display: flex; align-items: center; gap: 12px; padding: 14px; border-radius: 16px; background: var(--card);
  border: 1px solid var(--line); color: var(--ink); min-width: 0; transition: transform .1s, box-shadow .15s; }
.kpi:hover { box-shadow: 0 4px 16px var(--glow); }
.kpi:active { transform: scale(.98); }
.kpi small { display: block; font-size: 13px; color: var(--muted); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.kpi b { font-size: 26px; line-height: 1.1; margin-right: 4px; }
.kpi-ico { display: grid; place-items: center; width: 44px; height: 44px; border-radius: 12px; flex: none; color: #fff; }
.k-all .kpi-ico { background: #3b5b8f; }
.k-high .kpi-ico { background: var(--c-green); }
.k-follow .kpi-ico { background: var(--c-purple); }
.k-bid .kpi-ico { background: var(--c-blue); }
.k-skip .kpi-ico { background: var(--c-gray); }
.kpi.on { border-color: var(--c-blue); box-shadow: 0 0 0 2px var(--c-blue) inset; }
.k-high.on { border-color: var(--c-green); box-shadow: 0 0 0 2px var(--c-green) inset; }
.kpi-add { grid-column: 1 / -1; min-height: 44px; }
.btn.blue.kpi-add, .searchbar .btn.blue { background: var(--c-blue); }

.panel { background: var(--card); border: 1px solid var(--line); border-radius: 16px; padding: 14px; margin-bottom: 14px; }
.panel-head { display: flex; flex-wrap: wrap; align-items: center; gap: 0 16px; }
.panel-head h2 { margin: 0; font-size: 17px; display: flex; align-items: center; gap: 6px; }
.chips { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; margin: 8px 0; }
.chips-label { color: var(--muted); font-size: 13px; }
.chips-sep { width: 1px; height: 22px; background: var(--line); margin: 0 6px; }
.panel .chip.on { background: var(--c-blue); border-color: var(--c-blue); color: #fff; }
.selects { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; margin: 10px 0; }
.selects select, .perpage select { font: inherit; font-size: 14px; color: var(--ink); background: var(--bg); border: 1px solid var(--line);
  border-radius: 10px; padding: 9px 10px; width: 100%; }
.searchbar { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; }
.search-in { flex: 1 1 240px; display: flex; align-items: center; gap: 8px; padding: 0 12px; border-radius: 12px;
  background: var(--bg); border: 1px solid var(--line); color: var(--muted); }
.search-in input { flex: 1; min-width: 0; border: 0; background: transparent; color: var(--ink); font: inherit; font-size: 15px; padding: 11px 0; outline: none; }
.reset { display: inline-flex; align-items: center; gap: 4px; color: var(--muted); font-size: 14px; padding: 0 6px; }

.results-bar { display: flex; flex-wrap: wrap; align-items: center; gap: 10px; margin: 6px 2px 12px; }
.results-bar h3 { margin: 0; flex: 1; font-size: 18px; white-space: nowrap; }
.results-bar h3 small { font-size: 13px; color: var(--muted); font-weight: 400; margin-left: 6px; }
.viewsw { display: inline-flex; border: 1px solid var(--line); border-radius: 10px; overflow: hidden; background: var(--card); }
.viewsw a { display: inline-flex; align-items: center; gap: 6px; padding: 7px 12px; font-size: 13px; color: var(--muted); }
.viewsw a.on { background: var(--glow); color: var(--c-blue); font-weight: 700; }
.perpage { display: inline-flex; align-items: center; gap: 6px; font-size: 13px; color: var(--muted); }
.perpage select { width: auto; padding: 6px 8px; }

.tcards { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: minmax(0, 1fr); gap: 12px; }
.tcards > .empty { grid-column: 1 / -1; }
.tcard { position: relative; display: flex; flex-direction: column; background: var(--card); color: var(--ink);
  border: 1px solid var(--line); border-radius: 16px; padding: 14px 16px; overflow: hidden;
  background-image: radial-gradient(120% 90% at 100% 0%, var(--glow), transparent 60%); }
.tcard.leaving { transition: opacity .25s, max-height .3s; opacity: 0; }
.ribbon { position: absolute; top: 0; left: 12px; color: #fff; background: var(--c-purple); padding: 4px 3px 6px;
  border-radius: 0 0 6px 6px; line-height: 0; }
.ribbon.r-bid { background: var(--c-blue); }
.tcard.marked .tc-title { padding-left: 22px; }
.tc-head { display: flex; align-items: flex-start; gap: 10px; }
.tc-title { flex: 1; font-weight: 700; font-size: 16px; line-height: 1.4; }
.score { flex: none; display: inline-flex; align-items: center; gap: 3px; font-size: 13px; font-weight: 700; padding: 2px 9px;
  border-radius: 999px; background: var(--line); color: var(--muted); white-space: nowrap; }
.score.s-high { background: var(--ok-bg); color: var(--green); }
.score.s-medium { background: var(--amber-bg); color: var(--amber); }
.tc-body { display: flex; align-items: center; gap: 10px; margin-top: 8px; }
.facts { list-style: none; margin: 0; padding: 0; flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 3px; font-size: 14px; }
.facts li { display: flex; align-items: center; gap: 8px; }
.facts li .ico { color: var(--muted); }
.facts li span { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.facts li.late { color: var(--muted); }
.facts .sep { font-style: normal; color: var(--muted); margin: 0 4px; }
.tc-art { flex: none; color: var(--c-blue); opacity: .55; }
.tc-note { font-size: 12.5px; color: var(--muted); margin-top: 6px; }
.tc-note.amber { color: var(--amber); }
.tc-btns { display: flex; flex-wrap: wrap; gap: 6px; margin-top: auto; padding-top: 12px; }
.tc-btns form { margin: 0; }
.tb { display: inline-flex; align-items: center; gap: 5px; min-height: 38px; padding: 0 12px; border-radius: 10px; font: inherit;
  font-size: 14px; font-weight: 600; cursor: pointer; background: var(--bg); color: var(--ink); border: 1px solid var(--line); }
.tb-green { background: var(--c-green); border-color: var(--c-green); color: #fff; }
.tb-blue { background: var(--c-blue); border-color: var(--c-blue); color: #fff; }
.pager { display: flex; justify-content: center; align-items: center; gap: 14px; margin: 16px 0; font-size: 14px; color: var(--muted); }
.pager a { padding: 8px 14px; border-radius: 10px; background: var(--card); border: 1px solid var(--line); }

/* 列表檢視：一案一列，比較密 */
.tcards.as-list { gap: 6px; }
.as-list .tcard { padding: 10px 14px; background-image: none; }
.as-list .tc-body { margin-top: 4px; }
.as-list .facts { flex-direction: row; flex-wrap: wrap; gap: 2px 16px; font-size: 13px; }
.as-list .tc-art, .as-list .tc-note { display: none; }
.as-list .tc-btns { padding-top: 6px; }
.as-list .tb { min-height: 32px; font-size: 13px; }

@media (min-width: 700px) {
  .kpis { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .selects { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .tcards { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (min-width: 1280px) {
  .kpis { grid-template-columns: repeat(5, minmax(0, 1fr)) auto; }
  .kpi-add { grid-column: auto; align-self: center; }
  .selects { grid-template-columns: repeat(5, minmax(0, 1fr)); }
  .tcards { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}
.tcards.as-list { grid-template-columns: minmax(0, 1fr); }

/* 篩選框可收合：摘要列（手機上點了才展開；電腦一律展開，摘要不顯示） */
.fbox > summary { list-style: none; cursor: pointer; }
.fbox > summary::-webkit-details-marker { display: none; }
.fsum { display: none; }
.fbox > summary + .panel-head { margin-top: 0; }

/* ── 手機（加到主畫面當 App 用）：第一個畫面就看得到標案 ── */
@media (max-width: 699px) {
  .page-sub { display: none; }
  /* 摘要五格 → 一條可以左右滑的小卡 */
  .kpis { display: flex; overflow-x: auto; gap: 8px; margin: 4px -16px 10px; padding: 0 16px 2px; scroll-snap-type: x proximity;
    scrollbar-width: none; }
  .kpis::-webkit-scrollbar { display: none; }
  .kpi { flex: 0 0 auto; gap: 8px; padding: 8px 12px 8px 8px; border-radius: 14px; scroll-snap-align: start; }
  .kpi-ico { width: 32px; height: 32px; border-radius: 10px; }
  .kpi-ico .ico { width: 18px; height: 18px; }
  .kpi small { font-size: 11px; }
  .kpi b { font-size: 19px; }
  .kpi-add { flex: 0 0 auto; min-height: 0; padding: 0 14px; border-radius: 14px; font-size: 14px; }
  /* 篩選框：收起來只剩一行 */
  .panel { padding: 10px 12px; }
  .fbox > summary { display: flex; align-items: center; justify-content: space-between; gap: 8px; }
  .fbox > summary h2 { font-size: 15px; }
  .fsum { display: inline; font-size: 13px; color: var(--c-blue); font-weight: 600; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
  .fbox[open] .fsum { display: none; }
  .chips { flex-wrap: nowrap; overflow-x: auto; scrollbar-width: none; margin: 8px -12px; padding: 0 12px; }
  .chips::-webkit-scrollbar { display: none; }
  .chips .chip { flex: none; }
  .chips-label { flex: none; }
  .results-bar { gap: 8px; }
  .results-bar h3 { font-size: 16px; flex-basis: 100%; }
  .viewsw a { padding: 6px 10px; }
  /* 卡片 */
  .tcard { padding: 12px 12px 10px; border-radius: 14px; }
  .tc-title { font-size: 15.5px; }
  .tc-art .ico { width: 40px; height: 40px; }
  .tc-art { align-self: flex-start; margin-top: 4px; }
  .facts { font-size: 13.5px; }
  /* 按鈕：一排五格，圖示在上、字在下（像 App 的工具列） */
  .tc-btns { display: grid; grid-auto-flow: column; grid-auto-columns: minmax(0, 1fr); gap: 6px; }
  .tc-btns form, .tc-btns form .tb { width: 100%; }
  .tb { flex-direction: column; justify-content: center; gap: 2px; min-height: 50px; padding: 4px 2px; font-size: 12px; border-radius: 12px; }
  .tb .ico { width: 18px; height: 18px; order: -1; }
  .tc-btns .pill { align-self: center; justify-self: center; }
  .as-list .tb { min-height: 44px; }
}

/* ── 選單圖示（線條圖示取代 emoji）＋電腦版左側欄重做、畫面放大（Miles 11/8：網頁也要好看） ── */
.tabbar .brand { display: none; }
.tabbar a span { display: grid; place-items: center; height: 26px; }
.tabbar a.on { color: var(--c-blue); }
:root[data-theme=dark] .tabbar a.on { color: #7fb0ff; }
@media (prefers-color-scheme: dark) { :root:not([data-theme=light]) .tabbar a.on { color: #7fb0ff; } }

@media (min-width: 1024px) {
  body { padding-left: 248px; }
  .tabbar { width: 248px; padding: 18px 14px; gap: 6px; border-right: 1px solid var(--line);
    background: linear-gradient(180deg, var(--card), var(--bg)); }
  .tabbar .brand { display: flex; align-items: center; gap: 10px; padding: 6px 10px 26px; color: var(--ink); font-size: 19px; }
  .tabbar .brand .ico { color: var(--c-blue); }
  .tabbar a { gap: 14px; padding: 12px 16px; border-radius: 12px; font-size: 16px; font-weight: 600; color: var(--muted); }
  .tabbar a span { height: auto; }
  .tabbar a:hover { background: var(--glow); color: var(--ink); }
  .tabbar a.on, :root[data-theme=dark] .tabbar a.on { background: var(--c-blue); color: #fff; box-shadow: 0 6px 18px rgba(37,99,235,.35); }
  .tabbar a.brand:hover { background: none; }
  /* 上方標題列：跟內容同底色、字放大 */
  .top { background: var(--bg); color: var(--ink); border-bottom: 1px solid var(--line); padding: 18px 32px 14px; gap: 12px;
    backdrop-filter: blur(8px); }
  .top h1 { font-size: 26px; letter-spacing: .5px; }
  .top .back { color: var(--ink); }
  .top-link { color: var(--ink); font-size: 15px; font-weight: 600; padding: 6px 12px; border-radius: 999px;
    background: var(--card); border: 1px solid var(--line); }
  .theme-toggle button { color: var(--ink); background: var(--card); border-color: var(--line); font-size: 14px; padding: 6px 14px; }
  main { max-width: 1760px; padding: 18px 32px 48px; }
  .msgs { max-width: 1760px; padding: 10px 32px 0; }
  .page-sub { font-size: 15px; margin-top: 0; }
}
@media (prefers-color-scheme: dark) { @media (min-width: 1024px) { :root:not([data-theme=light]) .tabbar a.on { color: #fff; } } }

/* 大螢幕：字跟元件都放大一點，比較好讀 */
@media (min-width: 1280px) {
  .kpi { padding: 18px; gap: 14px; }
  .kpi-ico { width: 52px; height: 52px; border-radius: 14px; }
  .kpi-ico .ico { width: 26px; height: 26px; }
  .kpi small { font-size: 14px; }
  .kpi b { font-size: 30px; }
  .kpi-add { font-size: 16px; padding: 0 22px; min-height: 52px; }
  .panel { padding: 18px 20px; }
  .panel-head h2 { font-size: 19px; }
  .chip, .chips-label { font-size: 15px; }
  .selects select, .search-in input { font-size: 15px; }
  .results-bar h3 { font-size: 20px; }
  .tcard { padding: 18px 20px; }
  .tc-title { font-size: 17.5px; }
  .facts { font-size: 15px; gap: 5px; }
  .tc-note { font-size: 13.5px; }
  .tb { font-size: 15px; min-height: 42px; padding: 0 14px; }
}
@media (min-width: 2000px) {
  .tcards { grid-template-columns: repeat(4, minmax(0, 1fr)); }
  main { max-width: 2100px; }
}
.tcards.as-list { grid-template-columns: minmax(0, 1fr); }
@media (min-width: 1280px) {
  .who-row .pill { font-size: 14px; padding: 4px 12px; }
  .cards > .card { border-radius: 16px; padding: 16px 18px; }
}

/* ── 點狀態就彈出選項（總表每個人、投標追蹤進度；Miles 11/8：下拉看不出能改） ── */
.smenu { position: relative; display: inline-block; }
.smenu > summary { list-style: none; cursor: pointer; display: inline-flex; align-items: center; gap: 6px; user-select: none; }
.smenu > summary::-webkit-details-marker { display: none; }
.smenu-edit { font-size: 12px; font-weight: 700; padding: 1px 8px; border-radius: 999px; background: var(--card); color: var(--c-blue);
  border: 1px solid var(--line); }
.smenu[open] > summary { outline: 2px solid var(--c-blue); outline-offset: 1px; }
.smenu-pop { position: absolute; z-index: 30; top: calc(100% + 6px); left: 0; min-width: 210px; margin: 0; padding: 8px;
  display: flex; flex-direction: column; gap: 4px; background: var(--card); border: 1px solid var(--line); border-radius: 14px;
  box-shadow: 0 12px 32px rgba(0,0,0,.25); }
.smenu-right .smenu-pop { left: auto; right: 0; }
.smenu-title { font-size: 12px; color: var(--muted); padding: 2px 6px 4px; }
.smenu-pop button { font: inherit; font-size: 15px; text-align: left; padding: 10px 12px; border-radius: 10px; border: 0;
  background: transparent; color: var(--ink); cursor: pointer; }
.smenu-pop button:hover { background: var(--glow); }
.smenu-pop button.on { background: var(--c-blue); color: #fff; cursor: default; }
.card:has(.smenu[open]) { overflow: visible; z-index: 5; }
.bid-card .row { align-items: flex-start; gap: 8px; }
.bid-card .todo-title { color: var(--ink); text-decoration: none; flex: 1; }
.bid-card-body { display: block; color: inherit; text-decoration: none; }
.bid-more { display: inline-block; margin-top: 6px; font-size: 13px; color: var(--c-blue); font-weight: 600; }
.smenu-note { font-size: 12.5px; line-height: 1.5; color: var(--muted); padding: 8px 8px 2px; border-top: 1px solid var(--line); margin-top: 4px; max-width: 260px; }

/* 用 Google 登入 */
.btn.google { display: flex; align-items: center; justify-content: center; gap: 10px; background: #fff; color: #1f1f1f;
  border: 1px solid #dadce0; font-weight: 600; text-decoration: none; }
.btn.google:hover { background: #f8f9fa; }
.hint.center { text-align: center; margin: 4px 0; }

/* 行程（11/9） */
.ev-head { display: flex; align-items: center; gap: 8px; margin-bottom: 4px; }
.ev-time { font-weight: 800; font-size: 1.15em; font-variant-numeric: tabular-nums; }
.todo-title a { color: inherit; }
h2.group.today { color: var(--c-blue); }
.chip.add { margin-left: auto; }
.form ul { list-style: none; padding: 0; margin: 4px 0; display: flex; flex-wrap: wrap; gap: 6px 16px; }
.form ul label { display: inline-flex; align-items: center; gap: 6px; font-weight: 500; }
@media (max-width: 699px) { .tabbar a { font-size: 11px; } }
#id_people { display: flex; flex-wrap: wrap; gap: 8px 22px; margin: 6px 0 4px; }
#id_people label { display: inline-flex; flex-direction: row; align-items: center; gap: 8px; margin: 0; font-size: 1.05em; color: var(--ink); }
#id_people input { width: 20px; height: 20px; margin: 0; }
.form.card.ev-form { max-width: 760px; }
.ev-people { margin: 12px 0; }
/* 總表改版（11/9） */
.bkpis { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 10px; margin: 6px 0 14px; }
.bk { background: var(--card); border: 1px solid var(--line); border-radius: 14px; padding: 12px 14px; display: flex; flex-direction: column; }
.bk b { font-size: 28px; line-height: 1.1; }
.bk span { font-size: 13px; color: var(--muted); }
.bk.red b { color: #dc2626; } .bk.amber b { color: #d97706; }
.bk.small b { font-size: 20px; }
@media (max-width: 699px) { .bkpis { grid-template-columns: repeat(5, minmax(64px, 1fr)); gap: 6px; }
  .bk { padding: 8px; } .bk b { font-size: 22px; } .bk span { font-size: 11px; } }
h2.group.g-today { color: #dc2626; } h2.group.g-decide { color: #d97706; }
.bcase.g-today { border-left: 4px solid #dc2626; } .bcase.g-decide, .bcase.g-soon { border-left: 4px solid #f59e0b; }
.bc-head { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; margin-bottom: 4px; }
.bc-left { font-weight: 800; font-size: 1.05em; margin-right: 4px; }
.bc-left.red { color: #dc2626; } .bc-left.amber { color: #d97706; }
.pill.assist { background: #ede9fe; color: #6d28d9; }
:root[data-theme=dark] .pill.assist { background: #3b2a66; color: #ddd6fe; }
@media (prefers-color-scheme: dark) { :root:not([data-theme=light]) .pill.assist { background: #3b2a66; color: #ddd6fe; } }
.bc-facts { display: grid; grid-template-columns: auto 1fr; gap: 2px 12px; margin: 8px 0 4px; font-size: .93em; }
.bc-facts dt { color: var(--muted); } .bc-facts dd { margin: 0; }
.bc-missing { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; margin: 6px 0; font-size: .92em; }
.bc-missing b { color: #dc2626; margin-right: 2px; }
.bc-missing .miss { background: #fef2f2; color: #b91c1c; border-radius: 999px; padding: 2px 10px; }
:root[data-theme=dark] .bc-missing .miss { background: #4a1d1d; color: #fecaca; }
@media (prefers-color-scheme: dark) { :root:not([data-theme=light]) .bc-missing .miss { background: #4a1d1d; color: #fecaca; } }
.bc-missing.ok { color: #16a34a; }
.stats-table { width: 100%; border-collapse: collapse; font-size: .95em; background: var(--card); border-radius: 12px; overflow: hidden; }
.stats-table th, .stats-table td { padding: 10px 12px; border-bottom: 1px solid var(--line); text-align: right; white-space: nowrap; }
.stats-table th:first-child, .stats-table td:first-child, .stats-table td:nth-child(2), .stats-table th:nth-child(2) { text-align: left; }
.stats-table tfoot td { font-weight: 800; }
.table-wrap { overflow-x: auto; }
@media (min-width: 1280px) { .board-cards { display: grid; grid-template-columns: repeat(auto-fill, minmax(520px, 1fr)); gap: 14px; align-items: start; }
  .board-cards > li { max-width: none; margin: 0; } }
/* 行程表：電腦是表格、手機是卡片（11/9 Miles：時間、地點、案名、種類、決標方式） */
.sched { display: flex; flex-direction: column; gap: 8px; margin-bottom: 8px; }
.sched-head { display: none; }
.sched-row { background: var(--card); border: 1px solid var(--line); border-radius: 14px; padding: 12px 14px;
  display: grid; grid-template-columns: auto 1fr; gap: 4px 10px; align-items: center; }
.sched-row.unplanned { border-left: 4px solid #f59e0b; }
.sched-row .s-time { font-weight: 800; font-size: 1.1em; font-variant-numeric: tabular-nums; }
.sched-row .s-title, .sched-row .s-award, .sched-row .s-where, .sched-row .s-who, .sched-row .s-act { grid-column: 1 / -1; }
.sched-row .s-title a { color: inherit; font-weight: 700; }
.sched-row .s-title small { display: block; font-size: .85em; }
.sched-row .s-award:has(.muted) { display: none; }
.sched-row .s-act:empty { display: none; }
@media (min-width: 1024px) {
  .sched { gap: 0; border: 1px solid var(--line); border-radius: 14px; overflow: hidden; background: var(--card); }
  .sched-head, .sched-row { display: grid; grid-template-columns: 70px 150px minmax(0, 2.4fr) 100px minmax(0, 1.6fr) 130px 110px;
    gap: 12px; padding: 10px 16px; align-items: center; }
  .sched-head { font-size: 13px; color: var(--muted); background: var(--bg); border-bottom: 1px solid var(--line); }
  .sched-row { border: 0; border-bottom: 1px solid var(--line); border-radius: 0; }
  .sched-row:last-child { border-bottom: 0; }
  .sched-row.unplanned { border-left: 0; box-shadow: inset 4px 0 0 #f59e0b; }
  .sched-row > span { grid-column: auto !important; }
  .sched-row .s-award:has(.muted) { display: block; }
  .sched-row .s-act { display: block !important; text-align: right; }
  .sched-row .s-act .btn { padding: 6px 12px; }
}
details.gcal { display: inline-block; }
details.gcal > summary { list-style: none; cursor: pointer; }
details.gcal > summary::-webkit-details-marker { display: none; }
.gcal-box { margin-top: 8px; max-width: 620px; }
.gcal-box input[readonly] { width: 100%; font-size: 12px; margin-top: 4px; }
.gcal-scope { display: flex; align-items: center; gap: 6px; margin: 8px 0; }
label.inline { display: inline-flex; align-items: center; gap: 4px; margin-right: 12px; }
label.inline input { width: auto; }
/* 行程表（Miles 11/9 給的樣子）：卡片＝進度列＋最低標／最有利＋案名＋地點＋誰去；右邊今日重點、統計、工作量 */
.gc-bar { display: flex; align-items: center; flex-wrap: wrap; gap: 8px; margin: 0 0 10px; }
.gc-arrow { width: 36px; height: 36px; display: inline-flex; align-items: center; justify-content: center; border-radius: 10px;
  border: 1px solid var(--line); background: var(--card); font-size: 20px; color: var(--ink); text-decoration: none; }
.gc-title { font-size: 24px; font-weight: 800; margin: 0 6px; line-height: 1.15; }
.gc-title small { display: block; font-size: 12px; font-weight: 500; color: var(--muted); }
.gc-btn { display: inline-flex; align-items: center; gap: 4px; padding: 7px 14px; border: 1px solid var(--line); border-radius: 10px;
  background: var(--card); color: var(--ink); font: inherit; font-size: 14px; font-weight: 600; cursor: pointer; white-space: nowrap; text-decoration: none; }
.gc-google { color: var(--c-blue); }
.gc-views { display: inline-flex; gap: 6px; margin-left: 8px; }
.gc-views a { padding: 7px 14px; border: 1px solid var(--line); border-radius: 10px; background: var(--card); color: var(--ink);
  font-size: 14px; font-weight: 600; text-decoration: none; white-space: nowrap; }
.gc-views a.on { background: var(--c-blue); border-color: var(--c-blue); color: #fff; }
.gc-search { margin-left: auto; }
.gc-search input { width: 240px; max-width: 100%; padding: 8px 12px; border: 1px solid var(--line);
  border-radius: 10px; background: var(--card); color: var(--ink); font: inherit; font-size: 14px; box-sizing: border-box; }
.gc-filters { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; margin: 0 0 12px; }
.gc-flabel { font-size: 13px; font-weight: 700; color: var(--muted); }
.gc-sep { width: 1px; height: 20px; background: var(--line); margin: 0 4px; }
.gc-right { margin-left: auto; display: inline-flex; gap: 6px; flex-wrap: wrap; }
.fchip { padding: 5px 12px; border-radius: 999px; font-size: 13px; font-weight: 600; text-decoration: none; white-space: nowrap;
  border: 1px solid var(--line); background: var(--card); color: var(--ink); }
.fchip.on { background: var(--c-blue); border-color: var(--c-blue); color: #fff; }
.fchip.aw-low { color: #1d4ed8; background: #dbeafe; border-color: #bfdbfe; }
.fchip.aw-most { color: #c2410c; background: #ffedd5; border-color: #fed7aa; }
.fchip.kg-deadline { color: #b45309; background: #fef3c7; border-color: #fde68a; }
.fchip.kg-open { color: #15803d; background: #dcfce7; border-color: #bbf7d0; }
.fchip.kg-present { color: #7e22ce; background: #f3e8ff; border-color: #e9d5ff; }
.fchip.kg-other { color: #475569; background: #f1f5f9; }
.fchip.aw-low.on, .fchip.aw-most.on, .fchip.kg-deadline.on, .fchip.kg-open.on, .fchip.kg-present.on, .fchip.kg-other.on { box-shadow: 0 0 0 2px currentColor inset; }
.fchip.clear { color: var(--muted); }
.gc-wrap { display: grid; grid-template-columns: minmax(0, 1fr) 300px; gap: 16px; align-items: start; }
.gc { border: 1px solid var(--line); border-radius: 12px; overflow: hidden; background: var(--card); }
.gc-wd, .gc-week { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); }
.gc-wd span { padding: 9px 0; font-size: 13px; font-weight: 700; text-align: center; background: var(--bg); border-right: 1px solid var(--line); }
.gc-wd span.we { color: #dc2626; }
.gc-wd span:last-child, .gc-day:nth-child(7) { border-right: 0; }
.gc-day { min-height: 120px; padding: 4px 5px 8px; border-right: 1px solid var(--line); border-top: 1px solid var(--line);
  display: flex; flex-direction: column; gap: 5px; min-width: 0; }
.gc-day.out { background: color-mix(in srgb, var(--bg) 60%, transparent); }
.gc-day.out .gc-num { opacity: .5; }
.gc-num { font-size: 13px; font-weight: 700; padding: 2px 2px 0; }
.gc-num span { display: inline-block; min-width: 24px; height: 24px; line-height: 24px; text-align: center; border-radius: 999px; padding: 0 3px; box-sizing: border-box; }
.gc-day.today .gc-num span { background: var(--c-blue); color: #fff; }
.gc-weekview .gc-day { min-height: 420px; }
.gcard { border-radius: 8px; overflow: hidden; cursor: pointer; border: 1px solid #e2e8f0; border-left: 3px solid #94a3b8;
  background: #f8fafc; color: #1e293b; font-size: 12px; line-height: 1.35; box-shadow: 0 1px 2px rgba(15,23,42,.06); }
.gcard:hover { box-shadow: 0 3px 10px rgba(15,23,42,.14); }
.gcard:focus-visible { outline: 2px solid var(--c-blue); }
.gcard.aw-low { background: #eff6ff; border-color: #bfdbfe; border-left-color: #3b82f6; }
.gcard.aw-most { background: #fff7ed; border-color: #fed7aa; border-left-color: #f97316; }
.gcard.is-follow { opacity: .8; border-style: dashed; }
.gc-head { padding: 3px 7px; font-weight: 700; font-size: 12px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.gc-head.inl { display: inline-block; border-radius: 6px; }
.gc-head.kg-deadline { background: #fef3c7; color: #92400e; }
.gc-head.kg-open { background: #dcfce7; color: #166534; }
.gc-head.kg-present { background: #f3e8ff; color: #6b21a8; }
.gc-head.kg-other { background: #f1f5f9; color: #475569; }
.gc-body { padding: 4px 7px 6px; }
.gc-aw { font-weight: 700; font-size: 11.5px; color: #1d4ed8; display: flex; align-items: center; gap: 4px; flex-wrap: wrap; }
.aw-most .gc-aw { color: #c2410c; }
.aw-none .gc-aw { color: #475569; }
.gc-st { font-weight: 600; font-size: 10.5px; padding: 0 5px; border-radius: 4px; background: rgba(15,23,42,.08); color: #334155; }
.gc-name { font-weight: 800; font-size: 12.5px; margin: 2px 0; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.gc-meta { color: #475569; font-size: 11.5px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.gc-meta b { color: #b91c1c; }
.gc-meta.amber { color: #b45309; font-weight: 700; }
.gc-list { display: grid; grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); gap: 10px; }
.gc-list .gc-name { -webkit-line-clamp: 3; }
h3.cal-dlabel { margin: 16px 0 8px; font-size: 1em; }
h3.cal-dlabel.today { color: var(--c-blue); }
.gc-side { display: flex; flex-direction: column; gap: 12px; }
.gs { padding: 14px; margin: 0; }
.gs h3 { margin: 0 0 10px; font-size: 15px; }
.gs-today { border-left: 3px solid #94a3b8; padding: 6px 0 6px 10px; margin-bottom: 8px; }
.gs-today.kg-open { border-color: #16a34a; }
.gs-today.kg-deadline { border-color: #d97706; }
.gs-today.kg-present { border-color: #9333ea; }
.gs-t { font-size: 13px; font-weight: 700; }
.gs-n { font-weight: 800; font-size: 14px; margin: 2px 0; }
.gs-m { font-size: 12px; color: var(--muted); }
.gs-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; }
.gs-box { border-radius: 10px; padding: 8px 10px; font-size: 12px; background: #f1f5f9; color: #334155; }
.gs-box span { display: block; font-weight: 700; }
.gs-box b { font-size: 24px; margin-right: 2px; }
.gs-box.aw-low { background: #dbeafe; color: #1e40af; }
.gs-box.aw-most { background: #ffedd5; color: #9a3412; }
.gs-box.kg-deadline { background: #fef3c7; color: #92400e; }
.gs-box.kg-open { background: #dcfce7; color: #166534; }
.gs-box.kg-present { background: #f3e8ff; color: #6b21a8; }
.gs-work { display: grid; grid-template-columns: 76px 1fr auto; gap: 8px; align-items: center; font-size: 13px; margin: 6px 0; }
.gs-work i { height: 8px; border-radius: 999px; background: var(--line); overflow: hidden; }
.gs-work s { display: block; height: 100%; background: var(--c-blue); border-radius: 999px; }
.gd-dlg { border: 0; border-radius: 16px; padding: 22px 22px 18px; width: min(460px, calc(100vw - 32px)); box-sizing: border-box;
  background: var(--card); color: var(--ink); box-shadow: 0 20px 50px rgba(0,0,0,.25); }
.gd-dlg::backdrop { background: rgba(15,23,42,.35); }
.gd-x { position: absolute; right: 10px; top: 8px; width: 34px; height: 34px; border: 0; border-radius: 50%; background: none;
  color: var(--muted); font-size: 18px; cursor: pointer; }
.gd-kind { display: flex; flex-wrap: wrap; gap: 6px; align-items: center; padding-right: 34px; }
.gd-title { margin: 10px 34px 12px 0; font-size: 18px; line-height: 1.4; }
.gd { display: grid; grid-template-columns: auto 1fr; gap: 8px 12px; margin: 0 0 14px; font-size: 15px; }
.gd dt { color: var(--muted); white-space: nowrap; }
.gd dd { margin: 0; }
.gd-url { width: 100%; box-sizing: border-box; font-size: 12px; padding: 6px; }
:root[data-theme=dark] .gcard, :root[data-theme=dark] .gs-box { filter: brightness(.88); }
@media (prefers-color-scheme: dark) { :root:not([data-theme=light]) .gcard, :root:not([data-theme=light]) .gs-box { filter: brightness(.88); } }
@media (max-width: 1279px) {
  .gc-wrap { grid-template-columns: 1fr; }
  .gc-side { display: grid; grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); }
}
@media (max-width: 699px) {
  .gc-title { font-size: 19px; }
  .gc-views { margin-left: 0; }
  .gc-views a, .gc-btn { padding: 6px 10px; font-size: 13px; }
  .gc-search { margin-left: 0; width: 100%; }
  .gc-search input { width: 100%; }
  .gc-right { margin-left: 0; }
  .gc-sep { display: none; }
  .gc-filters { gap: 5px; }
  .gc-wd span { font-size: 11px; }
  .gc-day { min-height: 80px; padding: 2px 1px 4px; gap: 3px; }
  .gc .gcard { font-size: 10px; border-radius: 4px; border-left-width: 2px; }
  .gc .gc-head { font-size: 9.5px; padding: 1px 3px; }
  .gc .gc-head b { display: none; }
  .gc .gc-body { padding: 1px 3px 2px; }
  .gc .gc-aw, .gc .gc-meta + .gc-meta { display: none; }
  .gc .gc-name { font-size: 10px; font-weight: 700; }
  .gc .gc-meta { font-size: 9.5px; }
  .gc-weekview .gc-day { min-height: 160px; }
}
.gc-head + .gc-head { border-top: 1px solid rgba(255,255,255,.7); }
.gc-go { font-weight: 600; font-size: 11px; margin-left: 6px; }
.gd-step { border-top: 1px solid var(--line); padding-top: 10px; margin-top: 10px; }
.gd-step .gd { margin: 8px 0; }
@media (max-width: 699px) { .gc .gc-go { display: none; } }
.gcard[draggable="true"] { cursor: grab; }
.gcard.dragging { opacity: .45; }
.gc-day.drop { background: var(--glow); outline: 2px dashed var(--c-blue); outline-offset: -3px; }
.gc-next { font-size: 10.5px; color: #64748b; margin-top: 2px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.gd-move { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; padding: 10px; border-radius: 10px; background: var(--glow); margin: 0 0 10px; }
.gd-move input[type=date] { font: inherit; padding: 5px 8px; border: 1px solid var(--line); border-radius: 8px; background: var(--card); color: var(--ink); }
.gd-step.main .gc-head { outline: 2px solid currentColor; }
@media (max-width: 699px) { .gc .gc-next { display: none; } }
.gd-dlg [hidden] { display: none !important; }
