/* 免登入收藏與比較（spec 2026-10-07-guest-saved-communities-compare）：首頁、城市頁、地圖／圈頁、/saved、/compare 共用。
   自帶 --sv-* token（不依賴各頁 --ink 等命名；城市頁的 --ink 是城市墨色）。所有 selector 都帶 sv-／cmp-／saved- 前綴，不影響既有元件。 */
:root{--sv-card:#fff;--sv-bg:#f6f7fa;--sv-ink:#181a2a;--sv-muted:#5f6475;--sv-hair:#dfe3ec;--sv-brand:#1F4A80;--sv-brand-ink:#fff;--sv-tint:#e7eef8;--sv-shadow:rgba(20,30,60,.14);--sv-warn-bg:#fff4e0;--sv-warn:#7a4300;}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]){--sv-card:#1a2130;--sv-bg:#0f1420;--sv-ink:#f0f3fa;--sv-muted:#a4acbd;--sv-hair:#2e3747;--sv-brand:#7fb0e6;--sv-brand-ink:#0d1420;--sv-tint:#1f2c42;--sv-shadow:rgba(0,0,0,.5);--sv-warn-bg:#3a2a12;--sv-warn:#ffd79a;}}
[data-theme="dark"]{--sv-card:#1a2130;--sv-bg:#0f1420;--sv-ink:#f0f3fa;--sv-muted:#a4acbd;--sv-hair:#2e3747;--sv-brand:#7fb0e6;--sv-brand-ink:#0d1420;--sv-tint:#1f2c42;--sv-shadow:rgba(0,0,0,.5);--sv-warn-bg:#3a2a12;--sv-warn:#ffd79a;}
[data-theme="light"]{--sv-card:#fff;--sv-bg:#f6f7fa;--sv-ink:#181a2a;--sv-muted:#5f6475;--sv-hair:#dfe3ec;--sv-brand:#1F4A80;--sv-brand-ink:#fff;--sv-tint:#e7eef8;--sv-shadow:rgba(20,30,60,.14);--sv-warn-bg:#fff4e0;--sv-warn:#7a4300;}
/* hidden 一律贏（地圖頁的 style.css 沒有全域 [hidden] 規則；無 JS 時收藏鈕不能露出來） */
.sv-toggle[hidden],.saved-toast[hidden],.saved-local[hidden],.ns-n[hidden],.sv-bar[hidden]{display:none!important;}
.sr-only{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0;}

/* ── 站頭「收藏」入口：桌面在語言切換前；手機改在更多選單（spec §4.1） ── */
#topnav .nav-saved{display:inline-flex;align-items:center;gap:6px;min-height:44px;padding:0 12px;border-radius:999px;text-decoration:none;font-weight:700;font-size:14px;color:inherit;white-space:nowrap;}
#topnav .nav-saved:hover{background:var(--sv-tint);}
#topnav .nav-saved[aria-current="page"]{background:var(--sv-tint);}
#topnav .nav-saved svg{width:17px;height:17px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linejoin:round;}
.nav-saved .ns-n,.more-item .ns-n{min-width:20px;height:20px;padding:0 6px;border-radius:10px;background:var(--sv-brand);color:var(--sv-brand-ink);font-size:12px;line-height:20px;text-align:center;}
#topnav .nav-saved:focus-visible{outline:3px solid var(--sv-brand);outline-offset:2px;}
/* 手機：書籤圖示＋數量角標（使用者 2026-10-07）；文字藏起來，連結 aria-label 是「我的收藏」 */
@media (max-width:768px){#topnav .nav-saved{position:relative;justify-content:center;width:44px;height:44px;min-height:44px;padding:0;border-radius:50%;flex:0 0 44px;}
  #topnav .nav-saved > span:not(.ns-n){display:none;}
  #topnav .nav-saved svg{width:20px;height:20px;}
  #topnav .nav-saved .ns-n{position:absolute;top:2px;right:0;min-width:18px;height:18px;padding:0 5px;font-size:11px;line-height:18px;}}
@media (max-width:360px){#topnav .lang-mini{display:none !important;}}   /* 320px 放不下：語言切換在選單裡 */

/* ── 收藏鈕（城市卡、圈頁／地圖面板、比較欄）：原生 button＋aria-pressed；不只靠顏色（圖示實心＋文字「已收藏」） ── */
.sv-toggle{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-width:44px;min-height:44px;padding:0 14px;border:1.5px solid var(--sv-hair);border-radius:22px;
  background:var(--sv-card);color:var(--sv-ink);font:inherit;font-size:14px;font-weight:700;cursor:pointer;white-space:nowrap;}
.sv-toggle .sv-ico{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.9;stroke-linejoin:round;flex:none;}
.sv-toggle[aria-pressed="true"]{border-color:var(--sv-brand);background:var(--sv-tint);color:var(--sv-brand);}
.sv-toggle[aria-pressed="true"] .sv-ico{fill:currentColor;}
.sv-toggle:focus-visible{outline:3px solid var(--sv-brand);outline-offset:2px;}
.sv-toggle[aria-busy="true"]{opacity:.6;}

/* ── 提示（aria-live=polite，不搶焦點）：底部置中，避開手機安全區 ── */
.saved-toast{position:fixed;left:50%;bottom:calc(16px + env(safe-area-inset-bottom,0px));transform:translateX(-50%);z-index:3000;max-width:min(92vw,520px);
  display:flex;flex-wrap:wrap;align-items:center;gap:6px 12px;padding:12px 16px;border-radius:14px;background:var(--sv-ink);color:var(--sv-card);box-shadow:0 8px 24px var(--sv-shadow);font-size:14px;line-height:1.4;}
.saved-toast .st-link{color:inherit;font-weight:800;text-decoration:underline;background:none;border:0;font:inherit;cursor:pointer;padding:0;min-height:32px;}
.saved-toast .st-note{flex-basis:100%;font-size:13px;opacity:.85;}

/* ── 暫存模式頁內清單 ── */
.saved-local{position:fixed;right:12px;bottom:calc(84px + env(safe-area-inset-bottom,0px));z-index:3000;width:min(92vw,340px);max-height:70vh;overflow:auto;padding:14px 16px;border:1px solid var(--sv-hair);border-radius:14px;background:var(--sv-card);color:var(--sv-ink);box-shadow:0 10px 30px var(--sv-shadow);}
.saved-local .sl-head{display:flex;justify-content:space-between;align-items:center;gap:8px;}
.saved-local h2{font-size:16px;}
.saved-local button,.saved-local .sl-cta{min-height:44px;}
.saved-local .sl-head button{padding:0 14px;border:1.5px solid var(--sv-hair);border-radius:22px;background:transparent;color:inherit;font:inherit;font-size:14px;font-weight:700;cursor:pointer;}
.saved-local .sl-warn{margin:8px 0;padding:8px 10px;border-radius:8px;background:var(--sv-warn-bg);color:var(--sv-warn);font-size:13px;}
.saved-local .sl-list{list-style:none;padding:0;margin:6px 0;}
.saved-local .sl-list label{display:flex;align-items:center;gap:8px;min-height:44px;}
.saved-local .sl-cta{display:inline-flex;align-items:center;padding:0 14px;border-radius:22px;background:var(--sv-brand);color:var(--sv-brand-ink);font-weight:800;text-decoration:none;}

/* ── /saved、/compare 頁面 ── */
.sv-page{background:var(--sv-bg);color:var(--sv-ink);}
.sv-wrap{max-width:960px;margin:0 auto;padding:28px 20px calc(120px + env(safe-area-inset-bottom,0px));}
.sv-h1{font-size:30px;font-weight:900;letter-spacing:-.4px;line-height:1.2;}
.sv-count{font-size:15px;font-weight:700;color:var(--sv-muted);margin-left:6px;}
.sv-note{margin:8px 0 18px;color:var(--sv-muted);font-size:14px;line-height:1.5;}
.sv-status{margin:12px 0;padding:12px 14px;border-radius:10px;background:var(--sv-warn-bg);color:var(--sv-warn);font-size:14px;line-height:1.5;}
.sv-status a,.sv-status button{color:inherit;font-weight:800;}
.sv-retry{min-height:44px;padding:0 14px;border:1.5px solid currentColor;border-radius:22px;background:transparent;font:inherit;cursor:pointer;}
.sv-h2{font-size:14px;font-weight:800;color:var(--sv-muted);letter-spacing:.04em;margin:8px 0;}
.sv-list{list-style:none;padding:0;margin:0;display:grid;gap:10px;}
.sv-row{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;padding:14px 16px;border:1px solid var(--sv-hair);border-radius:14px;background:var(--sv-card);}
.sv-main{min-width:0;flex:1 1 auto;}
.sv-city{font-size:12px;font-weight:800;color:var(--sv-muted);letter-spacing:.06em;}
.sv-name{font-size:19px;font-weight:900;margin:2px 0;overflow-wrap:anywhere;}
.sv-name a{text-decoration:none;color:inherit;}
.sv-name a:hover{text-decoration:underline;}
.sv-tl{font-size:14px;line-height:1.5;color:var(--sv-ink);margin-top:2px;}
.sv-date{font-size:12px;color:var(--sv-muted);margin-top:4px;}
.sv-flag{display:inline-block;font-size:13px;font-weight:800;color:var(--sv-warn);background:var(--sv-warn-bg);padding:2px 8px;border-radius:6px;}
.sv-key{font-family:ui-monospace,Menlo,monospace;font-size:13px;color:var(--sv-muted);overflow-wrap:anywhere;}
.sv-acts{display:flex;flex-direction:column;align-items:flex-end;gap:6px;flex:none;}
.sv-pick{display:inline-flex;align-items:center;gap:8px;min-height:44px;padding:0 12px;border:1.5px solid var(--sv-hair);border-radius:22px;font-size:14px;font-weight:700;cursor:pointer;}
.sv-pick input{width:20px;height:20px;accent-color:var(--sv-brand);}
.sv-pick:has(input:checked){border-color:var(--sv-brand);background:var(--sv-tint);}
.sv-pick:focus-within{outline:3px solid var(--sv-brand);outline-offset:2px;}
.sv-remove{min-height:44px;padding:0 12px;border:0;background:transparent;color:var(--sv-muted);font:inherit;font-size:14px;font-weight:700;text-decoration:underline;cursor:pointer;}
.sv-remove:focus-visible,.sv-name a:focus-visible,.cmp-open:focus-visible,.cmp-rm:focus-visible,.cmp-toggle:focus-visible{outline:3px solid var(--sv-brand);outline-offset:2px;}
.sv-empty{margin-top:24px;padding:28px 22px;border:1px dashed var(--sv-hair);border-radius:16px;text-align:center;background:var(--sv-card);}
.sv-empty h2{font-size:20px;font-weight:900;}
.sv-empty p{margin:8px 0 16px;color:var(--sv-muted);line-height:1.5;}
.sv-cta,.sv-bar-cta{display:inline-flex;align-items:center;justify-content:center;min-height:44px;padding:0 18px;border-radius:22px;background:var(--sv-brand);color:var(--sv-brand-ink);font-weight:800;text-decoration:none;}
.sv-bar{position:sticky;bottom:0;z-index:10;display:flex;align-items:center;justify-content:space-between;gap:10px;margin:18px -20px 0;padding:12px 20px calc(12px + env(safe-area-inset-bottom,0px));
  background:var(--sv-card);border-top:1px solid var(--sv-hair);box-shadow:0 -6px 20px var(--sv-shadow);}
.sv-bar-msg{font-size:14px;color:var(--sv-muted);line-height:1.4;}
.sv-bar-cta[aria-disabled="true"]{background:var(--sv-hair);color:var(--sv-muted);cursor:not-allowed;}
.sv-bar-cta:focus-visible{outline:3px solid var(--sv-brand);outline-offset:2px;}
@media (max-width:560px){.sv-row{flex-direction:column;}.sv-acts{flex-direction:row;align-items:center;justify-content:space-between;width:100%;}.sv-h1{font-size:24px;}}

/* 比較頁 */
.cmp-actions{margin:6px 0 14px;}
.cmp-reselect{display:inline-flex;align-items:center;min-height:44px;font-weight:700;color:var(--sv-muted);text-decoration:none;}
.cmp-h2{font-size:13px;font-weight:800;color:var(--sv-muted);letter-spacing:.04em;margin-bottom:6px;}
.cmp-cands ul{list-style:none;padding:0;margin:0 0 14px;display:flex;flex-wrap:wrap;gap:8px;}
.cmp-cands li{display:inline-flex;align-items:center;gap:6px;padding:0 4px 0 12px;border:1px solid var(--sv-hair);border-radius:22px;background:var(--sv-card);font-size:14px;font-weight:700;max-width:100%;}
.cmp-cands li>span:first-child{overflow-wrap:anywhere;}
.cmp-rm{min-width:44px;min-height:44px;padding:0 10px;border:0;background:transparent;color:var(--sv-muted);font:inherit;font-size:13px;text-decoration:underline;cursor:pointer;}
.cmp-view{margin:0 0 12px;}
.cmp-view-lbl{font-size:13px;font-weight:800;color:var(--sv-muted);margin-bottom:6px;}
.cmp-view-sel{display:grid;grid-template-columns:1fr 1fr;gap:8px;}
.cmp-view-sel label{display:flex;flex-direction:column;gap:4px;font-size:12px;font-weight:700;color:var(--sv-muted);min-width:0;}
.cmp-view-sel select{min-height:44px;width:100%;border:1.5px solid var(--sv-hair);border-radius:10px;background:var(--sv-card);color:var(--sv-ink);font:inherit;font-size:14px;padding:0 8px;}
.cmp-notice{margin:0 0 14px;padding:12px 14px;border-radius:10px;background:var(--sv-tint);font-size:14px;line-height:1.55;}
.cmp-cols{display:grid;gap:10px;grid-template-columns:repeat(var(--cmp-n,2),minmax(0,1fr));margin-bottom:16px;}
.cmp-cols.n1{--cmp-n:1;}.cmp-cols.n2{--cmp-n:2;}.cmp-cols.n3{--cmp-n:3;}
.cmp-col{display:flex;flex-direction:column;gap:6px;min-width:0;padding:14px;border:1px solid var(--sv-hair);border-radius:14px;background:var(--sv-card);}
.cmp-name{font-size:18px;font-weight:900;line-height:1.25;overflow-wrap:anywhere;}
.cmp-alt{font-size:12px;color:var(--sv-muted);}
.cmp-col-acts{margin-top:auto;display:flex;flex-wrap:wrap;gap:8px;align-items:center;padding-top:6px;}
.cmp-open{display:inline-flex;align-items:center;min-height:44px;font-weight:800;color:var(--sv-brand);text-decoration:none;}
.cmp-gone{border-style:dashed;}
.cmp-scope{font-size:13px;color:var(--sv-muted);margin:0 0 8px;}
.cmp-tbl{width:100%;border-collapse:separate;border-spacing:0;table-layout:fixed;background:var(--sv-card);border:1px solid var(--sv-hair);border-radius:14px;overflow:hidden;}
.cmp-tbl th,.cmp-tbl td{padding:10px 12px;text-align:left;vertical-align:top;border-bottom:1px solid var(--sv-hair);font-size:14px;overflow-wrap:anywhere;}
.cmp-tbl tr:last-child>*{border-bottom:0;}
.cmp-tbl thead th{font-size:13px;color:var(--sv-muted);font-weight:800;}
.cmp-tbl tbody th{font-weight:800;width:28%;}
.cmp-tbl .cmp-sub th{padding-left:24px;font-weight:600;color:var(--sv-muted);}
.cmp-tbl .v{display:block;font-size:20px;font-weight:900;}
.cmp-tbl .rk{display:block;font-size:12px;color:var(--sv-muted);}
.cmp-tbl .na{color:var(--sv-muted);font-weight:600;}
.cmp-toggle{display:inline-flex;align-items:center;min-height:44px;margin:8px 0;padding:0 14px;border:1.5px solid var(--sv-hair);border-radius:22px;background:var(--sv-card);color:var(--sv-ink);font:inherit;font-size:14px;font-weight:700;cursor:pointer;}
.cmp-toggle[aria-expanded="true"]{border-color:var(--sv-brand);}
.cmp-overall{margin-top:6px;}
.cmp-note{font-size:13px;color:var(--sv-muted);margin:4px 0 8px;}
.cmp-foot{margin-top:16px;font-size:13px;color:var(--sv-muted);line-height:1.55;}
.cmp-foot a{color:inherit;font-weight:700;}
@media (max-width:767px){.cmp-tbl tbody th{width:34%;}.cmp-tbl th,.cmp-tbl td{padding:9px 8px;}.cmp-tbl .v{font-size:18px;}.cmp-col{padding:12px;}.cmp-name{font-size:16px;}}

/* 圈頁／地圖面板標題旁的收藏鈕 */
.cp-hero .sv-toggle{margin-top:10px;}
/* 城市卡：收藏鈕跟「看地圖」連結並排（兄弟元素，不在 <a> 裡） */
.card .cg-card-acts{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-top:10px;}
.card .cg-card-acts .go{margin-top:0;}

/* ===== spec §15：收藏卡片格＋單色比較表 ===== */
:root{--sv-art:#eef0f5;--sv-line:#16192a;--sv-bar:#16192a;--sv-bar-bg:#e6e8ef;--sv-dim:#a7acb9;}
[data-theme="dark"]{--sv-art:#232b3b;--sv-line:#e8ecf5;--sv-bar:#e8ecf5;--sv-bar-bg:#2e3747;--sv-dim:#5d6578;}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]){--sv-art:#232b3b;--sv-line:#e8ecf5;--sv-bar:#e8ecf5;--sv-bar-bg:#2e3747;--sv-dim:#5d6578;}}
.sv-wrap{max-width:1180px;}
.sv-list{grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:20px;}
.sv-card{display:flex;flex-direction:column;padding:0;overflow:hidden;border:0;border-radius:20px;box-shadow:0 1px 2px var(--sv-shadow),0 8px 24px var(--sv-shadow);}
.sv-card.picked{outline:3px solid var(--sv-ink);outline-offset:-3px;}
.sv-art{position:relative;height:168px;display:flex;align-items:center;justify-content:center;background:var(--sv-art);flex:none;}
.sv-art svg{width:112px;height:112px;}
.sv-art path{fill:var(--sv-card);stroke:var(--sv-line);stroke-width:2.2;vector-effect:non-scaling-stroke;stroke-linejoin:round;}
.sv-cityTag{position:absolute;left:12px;top:12px;font-size:11px;font-weight:800;letter-spacing:.1em;color:var(--sv-ink);background:var(--sv-card);padding:5px 10px;border-radius:999px;}
.sv-card .sv-bm{position:absolute;right:10px;top:8px;width:44px;height:44px;padding:0;border-radius:50%;background:var(--sv-card);box-shadow:0 2px 8px var(--sv-shadow);display:flex;align-items:center;justify-content:center;text-decoration:none;}
.sv-bm svg{width:20px;height:20px;fill:var(--sv-ink);stroke:var(--sv-ink);stroke-width:1.8;}
.sv-card .sv-pick{position:absolute;left:10px;bottom:10px;border:0;background:var(--sv-card);box-shadow:0 2px 8px var(--sv-shadow);}
.sv-card .sv-pick:has(input:checked){background:var(--sv-ink);color:var(--sv-card);}
.sv-body{padding:14px 16px 16px;display:flex;flex-direction:column;gap:2px;flex:1;}
.sv-alt{font-size:12px;color:var(--sv-muted);}
.sv-card .sv-name{font-size:18px;}
.sv-mets{display:flex;gap:8px;margin-top:10px;}
.sv-met{flex:1;min-width:0;border-radius:12px;background:var(--sv-bg);padding:8px 10px;}
.sv-met span:first-child{display:block;font-size:11px;font-weight:700;color:var(--sv-muted);}
.sv-met b{display:block;font-size:20px;font-weight:900;line-height:1.25;}
.cbar{display:block;height:5px;border-radius:3px;background:var(--sv-bar-bg);margin-top:6px;overflow:hidden;}
.cbar i{display:block;height:100%;border-radius:3px;background:var(--sv-bar);}
.sv-card .sv-date{margin-top:10px;}
.sv-plain{grid-column:1/-1;}
/* 浮動選取列（膠囊） */
.sv-bar{position:fixed;left:50%;right:auto;bottom:calc(18px + env(safe-area-inset-bottom,0px));transform:translateX(-50%);margin:0;width:max-content;max-width:calc(100vw - 24px);
  padding:8px 8px 8px 16px;border:0;border-radius:999px;background:var(--sv-ink);color:var(--sv-card);box-shadow:0 12px 30px rgba(10,15,30,.35);gap:12px;}
.sv-bar .sv-bar-msg{color:inherit;opacity:.85;}
.sv-bar .sv-bar-cta{background:var(--sv-card);color:var(--sv-ink);}
.sv-bar .sv-bar-cta[aria-disabled="true"]{background:rgba(255,255,255,.18);color:inherit;opacity:.7;}
.sv-bar-av{display:flex;}
.sv-bar-av span{width:34px;height:34px;margin-left:-8px;border-radius:50%;background:var(--sv-art);border:2px solid var(--sv-ink);display:flex;align-items:center;justify-content:center;}
.sv-bar-av span:first-child{margin-left:0;}
.sv-bar-av svg{width:22px;height:22px;}
.sv-bar-av path{fill:var(--sv-card);stroke:var(--sv-line);stroke-width:2;vector-effect:non-scaling-stroke;}
@media (max-width:560px){.sv-list{grid-template-columns:1fr;}.sv-art{height:140px;}.sv-bar{left:12px;right:12px;transform:none;width:auto;}.sv-bar-msg{font-size:13px;}}
/* 比較：欄頂線圖、單色、較低分變淡 */
.cmp-col{padding:0 0 14px;overflow:hidden;border-radius:18px;}
.cmp-col > :not(.sv-art):not(.cmp-x):not(.cmp-confirm){margin-left:14px;margin-right:14px;}
.cmp-col .sv-art{height:120px;margin-bottom:10px;}
.cmp-col .sv-art svg{width:84px;height:84px;}
.cmp-tbl td .cbar{margin-top:8px;}
.cmp-tbl td.e-dim .v,.cmp-tbl td.e-dim .rk{color:var(--sv-dim);}
.cmp-tbl td.e-dim .cbar i{background:var(--sv-bar-bg);filter:brightness(.9);}
.cmp-tbl{border-radius:18px;}
@media (max-width:767px){.cmp-col .sv-art{height:88px;}.cmp-col .sv-art svg{width:60px;height:60px;}.cmp-col > :not(.sv-art){margin-left:10px;margin-right:10px;}}
.sv-card{align-items:stretch;justify-content:flex-start;}
.sv-card .sv-art{width:100%;}
.sv-card .sv-pick,.sv-cityTag{white-space:nowrap;}

/* ===== 使用者 2026-10-07 第二輪：比較列置頂、取消收藏兩步確認、跨城說明卡 ===== */
.sv-wrap .sv-bar{position:sticky;top:62px;left:auto;right:auto;bottom:auto;transform:none;width:auto;max-width:none;z-index:15;margin:0 0 18px;
  padding:12px 12px 12px 18px;border-radius:18px;background:var(--sv-ink);color:var(--sv-card);box-shadow:0 10px 26px rgba(10,15,30,.22);display:flex;align-items:center;gap:14px;}
.sv-bar-text{flex:1;min-width:0;}
.sv-bar-title{font-size:15px;font-weight:900;}
.sv-bar .sv-bar-msg{font-size:13px;opacity:.85;margin-top:2px;}
.sv-bar .sv-bar-msg:empty{display:none;}
.sv-bar .sv-bar-msg.warn{opacity:1;color:#ffd79a;}
.sv-bar-av:empty{display:none;}
@media (max-width:560px){.sv-wrap .sv-bar{top:58px;left:auto;right:auto;flex-wrap:wrap;padding:12px;}.sv-bar-text{flex-basis:100%;}.sv-bar .sv-bar-cta{flex:1;}}
/* 取消收藏：平常是「已收藏」，hover／focus 變紅「取消收藏」；第二步確認 */
.sv-unsave{display:inline-flex;align-items:center;gap:6px;min-height:44px;padding:0 14px 0 12px;border:1.5px solid var(--sv-hair);border-radius:22px;background:var(--sv-card);color:var(--sv-ink);
  font:inherit;font-size:13.5px;font-weight:800;cursor:pointer;box-shadow:0 2px 8px var(--sv-shadow);white-space:nowrap;}
.sv-unsave svg{width:17px;height:17px;fill:currentColor;stroke:currentColor;stroke-width:1.8;}
.sv-unsave .u-off{display:none;}
.sv-unsave:hover,.sv-unsave:focus-visible{border-color:#c62f3d;color:#c62f3d;background:#fff1f2;}
.sv-unsave:hover svg,.sv-unsave:focus-visible svg{fill:none;}
.sv-unsave:hover .u-on,.sv-unsave:focus-visible .u-on{display:none;}
.sv-unsave:hover .u-off,.sv-unsave:focus-visible .u-off{display:inline;}
.sv-unsave:focus-visible{outline:3px solid #c62f3d;outline-offset:2px;}
.sv-card .sv-art > .sv-unsave{position:absolute;right:10px;top:8px;}
.sv-confirm{position:absolute;inset:0;z-index:2;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;padding:16px;text-align:center;
  background:rgba(255,255,255,.96);color:#16192a;font-weight:800;font-size:15px;}
[data-theme="dark"] .sv-confirm{background:rgba(26,33,48,.97);color:#f0f3fa;}
.sv-plain .sv-confirm{position:static;background:transparent;flex-direction:row;padding:0;}
.sv-confirm-acts{display:flex;gap:8px;}
.sv-confirm button{min-height:44px;padding:0 16px;border-radius:22px;font:inherit;font-weight:800;cursor:pointer;}
.sv-confirm-yes{border:0;background:#c62f3d;color:#fff;}
.sv-confirm-no{border:1.5px solid var(--sv-hair);background:var(--sv-card);color:var(--sv-ink);}
.sv-confirm button:focus-visible{outline:3px solid var(--sv-brand);outline-offset:2px;}
/* 跨城說明卡＋下一步 */
.cmp-notice.cross{padding:18px 20px;border-radius:16px;background:var(--sv-card);border:1.5px solid var(--sv-hair);box-shadow:0 6px 20px var(--sv-shadow);}
.cmp-notice.cross h2{font-size:18px;font-weight:900;margin-bottom:6px;}
.cmp-notice.cross p{color:var(--sv-muted);}
.cmp-acts{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px;}
.cmp-act{display:inline-flex;align-items:center;min-height:44px;padding:0 16px;border-radius:22px;background:var(--sv-ink);color:var(--sv-card);font-weight:800;text-decoration:none;}
.cmp-act.ghost{background:transparent;color:var(--sv-ink);border:1.5px solid var(--sv-hair);}
.cmp-act:focus-visible{outline:3px solid var(--sv-brand);outline-offset:2px;}
.cmp-cand-city{margin-left:6px;font-size:11px;font-weight:700;color:var(--sv-muted);}
/* 不同城市：鎖住＋說明小視窗（使用者 2026-10-07） */
.sv-card .sv-pick.locked{background:var(--sv-art);color:var(--sv-dim);box-shadow:none;border:1.5px dashed var(--sv-hair);}
.sv-card .sv-pick.locked input{opacity:.35;}
.sv-block{position:fixed;inset:0;z-index:4000;display:flex;align-items:center;justify-content:center;padding:20px;background:rgba(12,16,28,.45);}
.sv-block[hidden]{display:none;}
.sv-block-card{width:min(440px,100%);padding:22px;border-radius:18px;background:var(--sv-card);color:var(--sv-ink);box-shadow:0 20px 50px rgba(0,0,0,.3);}
.sv-block-card h2{font-size:19px;font-weight:900;line-height:1.35;}
.sv-block-card p{margin:10px 0 18px;color:var(--sv-muted);line-height:1.55;font-size:14.5px;}
.sv-block-acts{display:flex;flex-wrap:wrap;gap:8px;}
.sv-block-acts button{min-height:44px;padding:0 16px;border-radius:22px;font:inherit;font-weight:800;cursor:pointer;}
.sv-block-ok{border:0;background:var(--sv-ink);color:var(--sv-card);}
.sv-block-sw{border:1.5px solid var(--sv-hair);background:transparent;color:var(--sv-ink);}
.sv-block-acts button:focus-visible{outline:3px solid var(--sv-brand);outline-offset:2px;}
/* 比較頁「加入生活圈」搜尋（spec §18） */
.cmp-add{margin:0 0 16px;padding:14px 16px;border:1.5px dashed var(--sv-hair);border-radius:16px;background:var(--sv-card);}
.cmp-add-lbl{display:block;font-size:14px;font-weight:900;margin-bottom:8px;}
.cmp-add-q{width:100%;min-height:44px;padding:0 14px;border:1.5px solid var(--sv-hair);border-radius:22px;background:var(--sv-bg);color:var(--sv-ink);font:inherit;font-size:15px;}
.cmp-add-q:focus-visible{outline:3px solid var(--sv-brand);outline-offset:2px;}
.cmp-add-hint{font-size:12.5px;color:var(--sv-muted);margin-top:6px;}
.cmp-add-list{list-style:none;padding:0;margin:8px 0 0;display:flex;flex-direction:column;gap:4px;}
.cmp-add-list:empty{display:none;}
.cmp-add-opt{display:flex;align-items:center;justify-content:space-between;gap:10px;width:100%;min-height:44px;padding:0 14px;border:0;border-radius:12px;background:var(--sv-bg);color:var(--sv-ink);font:inherit;font-weight:800;text-align:left;cursor:pointer;}
.cmp-add-opt:hover,.cmp-add-opt:focus-visible{background:var(--sv-tint);outline:none;}
.cmp-add-opt .ct{font-size:12px;font-weight:700;color:var(--sv-muted);}
.cmp-add-list .none{font-size:13.5px;color:var(--sv-muted);padding:8px 2px;}
/* 一張表＋卡片 ✕（使用者 2026-10-07，spec §19） */
.cmp-col{position:relative;}
.cmp-x{position:absolute;right:10px;top:10px;z-index:1;width:44px;height:44px;padding:0;border:0;border-radius:50%;background:var(--sv-card);color:var(--sv-ink);box-shadow:0 2px 8px var(--sv-shadow);display:flex;align-items:center;justify-content:center;cursor:pointer;}
.cmp-x svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:2.4;stroke-linecap:round;}
.cmp-x:hover{background:#fff1f2;color:#c62f3d;}
.cmp-x:focus-visible{outline:3px solid var(--sv-brand);outline-offset:2px;}
.cmp-gone{padding-top:56px;}
.cmp-tbl tr.cmp-overall-row>*{background:var(--sv-art);border-bottom:2px solid var(--sv-ink);}
.cmp-tbl tr.cmp-overall-row th{font-size:16px;font-weight:900;}
.cmp-tbl tr.cmp-overall-row .v{font-size:24px;}
.cmp-tbl tr.cmp-group>*{background:var(--sv-bg);border-top:2px solid var(--sv-hair);}
.cmp-tbl tr.cmp-group th{font-size:15px;font-weight:900;}
.cmp-tbl tr.cmp-group .v{font-size:21px;}
.cmp-tbl tr.cmp-sub th{padding-left:26px;font-weight:600;color:var(--sv-muted);font-size:13.5px;}
.cmp-tbl tr.cmp-sub .v{font-size:17px;}
.cmp-rnote{display:block;margin-top:4px;font-size:11.5px;font-weight:600;color:var(--sv-muted);line-height:1.4;}
.cmp-scope{line-height:1.5;}
/* 手機並列三個（使用者 2026-10-07，spec §20）：小卡＋指標名獨立一行、下面三格各 1/3 */
@media (max-width:767px){
  .cmp-cols{gap:6px;}
  .cmp-cols .cmp-col{padding-bottom:10px;border-radius:14px;}
  .cmp-cols .cmp-col .sv-art{height:64px;margin-bottom:6px;}
  .cmp-cols .cmp-col .sv-art svg{width:44px;height:44px;}
  .cmp-cols .cmp-col > :not(.sv-art):not(.cmp-x):not(.cmp-confirm){margin-left:8px;margin-right:8px;}
  .cmp-cols .cmp-col .sv-tl,.cmp-cols .cmp-col .cmp-alt{display:none;}
  .cmp-cols .cmp-col .sv-city{font-size:10.5px;}
  .cmp-cols .cmp-name{font-size:14px;line-height:1.3;}
  .cmp-cols .cmp-open{min-height:36px;font-size:12.5px;}
  .cmp-x{right:2px;top:2px;background:transparent;box-shadow:none;}   /* 觸控仍 44px（spec U1），手機小卡上不加白底 */
  .cmp-x svg{background:var(--sv-card);border-radius:50%;padding:6px;width:30px;height:30px;box-shadow:0 2px 8px var(--sv-shadow);}
  .cmp-tbl{table-layout:fixed;}
  .cmp-tbl thead th{font-size:11.5px;padding:8px 6px;}
  .cmp-tbl tr.cmp-lbl th{width:auto;padding:10px 10px 0;border-bottom:0;font-size:13px;font-weight:900;color:var(--sv-ink);text-align:left;}
  .cmp-tbl tr.cmp-sub.cmp-lbl th{font-weight:700;color:var(--sv-muted);padding-left:14px;}
  .cmp-tbl tr.cmp-vals td{padding:4px 8px 10px;}
  .cmp-tbl tr.cmp-vals .v{font-size:18px;}
  .cmp-tbl tr.cmp-overall-row.cmp-vals .v{font-size:20px;}
  .cmp-tbl tr.cmp-vals .rk{font-size:10.5px;}
  .cmp-tbl tr.cmp-lbl.cmp-overall-row>*,.cmp-tbl tr.cmp-lbl.cmp-group>*{border-bottom:0;}
}
/* ✕ 貼最右上角、像關閉鈕；按了先確認（使用者 2026-10-07） */
.cmp-x{right:0;top:0;width:44px;height:44px;background:transparent;box-shadow:none;border-radius:0 14px 0 14px;}
.cmp-x svg{width:26px;height:26px;padding:6px;border-radius:50%;background:var(--sv-card);box-shadow:0 1px 4px var(--sv-shadow);stroke-width:2.6;}
.cmp-x:hover{background:transparent;}
.cmp-x:hover svg{background:#c62f3d;color:#fff;}
.cmp-confirm{position:absolute;inset:0;z-index:3;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;padding:12px;text-align:center;
  background:rgba(255,255,255,.96);color:#16192a;font-weight:800;font-size:14.5px;border-radius:inherit;}
[data-theme="dark"] .cmp-confirm{background:rgba(26,33,48,.97);color:#f0f3fa;}
@media (max-width:767px){.cmp-x svg{width:24px;height:24px;padding:5px;}.cmp-confirm{font-size:12.5px;gap:8px;padding:8px;}.cmp-confirm .sv-confirm-acts{flex-direction:column;width:100%;}.cmp-confirm button{width:100%;padding:0 6px;}}
@media (max-width:420px){#topnav .brand-copy{display:none;}}   /* 站頭多了收藏圖示：≤420 只留 logo 圖示（連結 aria-label 仍是品牌名；英文字標較寬） */
.cmp-col > .cmp-confirm{margin:0;}
.cmp-confirm .sv-confirm-acts{display:flex;gap:8px;}
.cmp-confirm button{min-height:44px;padding:0 16px;border-radius:22px;font:inherit;font-weight:800;cursor:pointer;}
.cmp-confirm .sv-confirm-yes{border:0;background:#c62f3d;color:#fff;}
.cmp-confirm .sv-confirm-no{border:1.5px solid var(--sv-hair);background:var(--sv-card);color:var(--sv-ink);}
.cmp-confirm button:focus-visible{outline:3px solid var(--sv-brand);outline-offset:2px;}
.cmp-col > .cmp-x{margin:0;align-items:flex-start;justify-content:flex-end;padding:6px;}
.cmp-cols .cmp-col > .cmp-confirm{margin:0;}
@media (max-width:767px){.cmp-confirm button{min-height:40px;padding:0 6px;font-size:13px;white-space:nowrap;}.cmp-confirm .sv-confirm-acts{gap:6px;}}
