/* 色票（深/淺）由 /css/theme.css 統一提供（key=podvault_theme）。
   §3.1：本檔只保留 episodes 專屬版面變數，主題色一律用 var()，不自建 [data-theme] 色覆蓋。 */
:root {
  --nav-h: 54px;
  --sidebar-w: 260px;
  --graph-w: 460px;
}

/* §3.1 集中化：本頁不再自維護 [data-theme="light"] 色覆蓋。
   所有主題色改用 theme.css 語意 token（--fx-nav-bg/--surface-input/--track-bg/
   --skeleton-lo/-hi/--on-gold/--type-*…），深/淺各在 theme.css 定義一次。 */
/* 亮暗切換按鈕（桌機/手機皆顯示） */
.topbar-theme-btn{
  display:flex;align-items:center;justify-content:center;
  background:none;border:none;color:var(--text-secondary);
  font-size:0.9rem;cursor:pointer;padding:0.25rem 0.5rem;
  transition:color .2s;-webkit-tap-highlight-color:transparent;
}
.topbar-theme-btn:hover{color:var(--accent-gold);}
/* 共用 theme.js 會注入「淺色模式/深色模式」文字，此按鈕維持純圖示 */
.topbar-theme-btn .theme-toggle-text{display:none;}
/* ══════════ 亮色模式結束 ══════════ */

*{margin:0;padding:0;box-sizing:border-box;}
html,body{height:100%;overflow:hidden;}
body{
  font-family:'Noto Sans TC',-apple-system,sans-serif;
  background:var(--bg-deep); color:var(--text-primary);
  line-height:1.7; -webkit-font-smoothing:antialiased;
}

/* ── 背景光暈 ── */
.bg-wrap{position:fixed;top:0;left:0;width:100%;height:100%;pointer-events:none;z-index:0;}
.bp{position:absolute;border-radius:50%;filter:blur(130px);opacity:var(--fx-glow-opacity);animation:pFloat 16s ease-in-out infinite;}
.bp1{width:600px;height:600px;top:-10%;left:-8%;background:radial-gradient(circle,rgba(200,169,126,.4) 0%,transparent 70%);animation-delay:0s;}
.bp2{width:500px;height:500px;bottom:5%;right:-8%;background:radial-gradient(circle,rgba(184,133,122,.3) 0%,transparent 70%);animation-delay:-5s;animation-duration:19s;}
.bp3{width:400px;height:400px;top:40%;left:15%;background:radial-gradient(circle,rgba(90,100,130,.2) 0%,transparent 70%);animation-delay:-9s;animation-duration:22s;}
@keyframes pFloat{0%,100%{transform:translate(0,0)}25%{transform:translate(24px,-14px)}50%{transform:translate(-14px,18px)}75%{transform:translate(-18px,-8px)}}
.bg-grain{position:fixed;top:0;left:0;width:100%;height:100%;pointer-events:none;z-index:1;opacity:var(--fx-grain-opacity);background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='0.01'/%3E%3C/svg%3E");}

/* ── 頂部導覽 ── */
.topbar{
  position:fixed;top:0;left:0;right:0;height:var(--nav-h);
  background:var(--fx-nav-bg);backdrop-filter:blur(24px);
  border-bottom:1px solid var(--border-subtle);
  display:flex;align-items:center;justify-content:space-between;
  padding:0 1.8rem;z-index:100;
}
.logo-group{display:flex;align-items:center;gap:0.7rem;text-decoration:none;}
.logo-mark{
  width:36px;height:36px;border:1.5px solid var(--accent-gold);border-radius:4px;
  display:flex;align-items:center;justify-content:center;
  color:var(--accent-gold);font-size:0.85rem;font-weight:400;position:relative;
}
.logo-mark::after{content:'';position:absolute;width:7px;height:7px;background:var(--accent-rose);border-radius:50%;top:-3px;right:-3px;opacity:.85;}
.logo-text{font-family:'Cormorant Garamond',serif;font-weight:500;font-size:1.2rem;letter-spacing:2px;color:var(--text-primary);text-transform:uppercase;}
.logo-text span{color:var(--accent-gold);font-weight:600;}
.topbar-nav{display:flex;align-items:center;gap:1.8rem;}
.topbar-nav a{
  color:var(--text-secondary);text-decoration:none;font-size:0.78rem;font-weight:400;
  letter-spacing:1.6px;text-transform:uppercase;position:relative;transition:color .3s;
}
.topbar-nav a::after{content:'';position:absolute;bottom:-4px;left:0;width:0;height:1px;background:var(--accent-gold);transition:width .3s;}
.topbar-nav a:hover{color:var(--text-primary);}
.topbar-nav a:hover::after,.topbar-nav a.active::after{width:100%;}
.topbar-nav a.active{color:var(--accent-gold);}
.topbar-right{display:flex;align-items:center;gap:1rem;}
.btn-pill{
  background:transparent;border:1px solid var(--accent-gold);color:var(--accent-gold);
  padding:0.38rem 1.2rem;border-radius:100px;font-size:0.76rem;letter-spacing:1.6px;
  text-transform:uppercase;cursor:pointer;text-decoration:none;transition:all .3s;
  font-family:'Noto Sans TC',sans-serif;font-weight:400;
  position:relative;overflow:hidden;
}
.btn-pill::before{content:'';position:absolute;top:50%;left:50%;width:0;height:0;background:rgba(200,169,126,.18);border-radius:50%;transform:translate(-50%,-50%);transition:width .5s,height .5s;}
.btn-pill:hover::before{width:300px;height:300px;}
.btn-pill:hover{background:var(--accent-gold);color:var(--on-gold);}
.topbar-user{font-size:0.76rem;color:var(--text-tertiary);letter-spacing:1px;}

/* ── 右上角導航選單（手機版，取代「我的帳號」藥丸）── */
.topbar-menu-btn{display:none;}
.topbar-menu{display:none;}

/* ── 主體佈局 ── */
.page-wrap{
  display:flex;
  height:calc(100vh - var(--nav-h));
  margin-top:var(--nav-h);
  position:relative;z-index:2;
}

/* ── 左側索引 ── */
.ep-sidebar{
  width:var(--sidebar-w);
  flex-shrink:0;
  display:flex;
  flex-direction:column;
  background:var(--bg-sidebar);
  border-right:1px solid var(--border-subtle);
  overflow:hidden;
}

/* Accordion 區塊 */
.sidebar-section{
  display:flex;flex-direction:column;min-height:0;flex:1;
  border-bottom:1px solid var(--border-subtle);
}
.sidebar-section.collapsed{flex:0 0 auto;}
.sidebar-section-header{
  display:flex;justify-content:space-between;align-items:center;
  padding:0.85rem 1rem;cursor:pointer;flex-shrink:0;user-select:none;
  transition:background .2s;
}
.sidebar-section-header:hover{background:rgba(200,169,126,.05);}
.section-info{display:flex;flex-direction:column;gap:0.18rem;}
.section-title{
  font-family:'Cormorant Garamond',serif;font-size:0.85rem;font-weight:500;
  color:var(--accent-gold);letter-spacing:2.5px;text-transform:uppercase;
}
.section-meta{font-size:0.65rem;color:var(--text-tertiary);letter-spacing:0.5px;}
.sidebar-chevron{font-size:0.6rem;color:var(--text-tertiary);transition:transform .3s ease;flex-shrink:0;}
.sidebar-section.collapsed .sidebar-chevron{transform:rotate(-90deg);}
.sidebar-section-body{flex:1;overflow-y:auto;min-height:0;}
.sidebar-section.collapsed .sidebar-section-body{display:none;}
.sidebar-section-body::-webkit-scrollbar{width:3px;}
.sidebar-section-body::-webkit-scrollbar-thumb{background:rgba(200,169,126,.18);border-radius:2px;}
.ep-list{padding:0.3rem 0;}

.ep-item{
  display:flex;align-items:flex-start;gap:0.6rem;
  padding:0.7rem 1rem;cursor:pointer;
  border-left:2px solid transparent;
  transition:background .2s, border-color .2s;
}
.ep-item:hover{background:rgba(200,169,126,.04);border-left-color:rgba(200,169,126,.3);}
.ep-item.active{background:rgba(200,169,126,.08);border-left-color:var(--accent-gold);}
.ep-num-badge{
  flex-shrink:0;font-size:0.62rem;letter-spacing:0.5px;
  color:var(--text-tertiary);padding-top:0.15rem;min-width:36px;
  font-family:'Cormorant Garamond',serif;
}
.ep-item.active .ep-num-badge{color:var(--accent-gold);}
.ep-item-title{
  font-size:0.78rem;color:var(--text-secondary);font-weight:400;
  line-height:1.4;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;
}
.ep-item.active .ep-item-title{color:var(--text-primary);}
.ep-item-date{font-size:0.65rem;color:var(--text-tertiary);margin-top:0.15rem;letter-spacing:0.5px;}

.skeleton{background:linear-gradient(90deg,var(--skeleton-lo) 25%,var(--skeleton-hi) 50%,var(--skeleton-lo) 75%);background-size:200% 100%;animation:shimmer 1.5s infinite;border-radius:3px;}
@keyframes shimmer{0%{background-position:200% 0}100%{background-position:-200% 0}}

/* ── 中間主內容 ── */
.ep-main{flex:1;overflow-y:auto;min-width:0;}
.ep-main::-webkit-scrollbar{width:4px;}
.ep-main::-webkit-scrollbar-thumb{background:rgba(200,169,126,.15);border-radius:2px;}
.ep-detail{max-width:760px;margin:0 auto;padding:2.4rem 2rem 4rem;}

.empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;height:60vh;text-align:center;}
.empty-icon{font-size:2.5rem;color:var(--text-tertiary);margin-bottom:1rem;opacity:.5;}
.empty-text{font-size:0.88rem;color:var(--text-tertiary);}

/* 集數 hero */
.ep-hero{display:flex;gap:1.6rem;align-items:flex-start;margin-bottom:2rem;}
.ep-cover{width:120px;height:120px;flex-shrink:0;border-radius:8px;object-fit:cover;border:1px solid var(--border-gold);}
.ep-cover-placeholder{width:120px;height:120px;flex-shrink:0;border-radius:8px;border:1px solid var(--border-gold);background:var(--bg-card);display:flex;align-items:center;justify-content:center;font-size:2.2rem;color:var(--accent-gold);opacity:.5;}
.ep-eyebrow{font-size:0.7rem;letter-spacing:2.5px;text-transform:uppercase;color:var(--accent-gold);margin-bottom:0.5rem;font-family:'Cormorant Garamond',serif;font-weight:400;}
.ep-title-h{font-family:'Cormorant Garamond',serif;font-size:clamp(1.4rem,3vw,2rem);font-weight:400;color:var(--text-primary);line-height:1.25;margin-bottom:0.8rem;}
.ep-tags{display:flex;flex-wrap:wrap;gap:0.5rem;align-items:center;}
.ep-tag{font-size:0.7rem;letter-spacing:1px;color:var(--text-tertiary);border:1px solid var(--border-subtle);border-radius:100px;padding:0.18rem 0.7rem;}
.ep-audio-wrap{margin:1.6rem 0 1rem;}
.ep-audio-wrap audio{width:100%;height:40px;border-radius:8px;filter:invert(1) brightness(.7) sepia(1) hue-rotate(20deg);outline:none;}
.ep-links{display:flex;gap:0.8rem;flex-wrap:wrap;margin-top:0.8rem;}
.ep-link-btn{display:inline-flex;align-items:center;gap:0.4rem;font-size:0.72rem;letter-spacing:1.5px;text-transform:uppercase;color:var(--text-tertiary);text-decoration:none;border:1px solid var(--border-subtle);border-radius:100px;padding:0.3rem 0.9rem;transition:all .3s;}
.ep-link-btn:hover{color:var(--accent-gold);border-color:var(--border-gold);}
.ep-divider{border:none;border-top:1px solid var(--border-subtle);margin:1.6rem 0;}
.ep-desc-label{font-size:0.7rem;letter-spacing:2px;text-transform:uppercase;color:var(--text-tertiary);margin-bottom:0.8rem;}
.ep-desc-body{font-size:0.88rem;color:var(--text-read);line-height:1.85;white-space:pre-line;}

/* 知識點 */
.knowledge-section{margin-top:2.4rem;}
.knowledge-header{display:flex;align-items:center;gap:0.8rem;margin-bottom:1.2rem;}
.knowledge-label{font-family:'Cormorant Garamond',serif;font-size:1.1rem;font-weight:400;color:var(--accent-gold);letter-spacing:3px;text-transform:uppercase;}
.knowledge-badge{font-size:0.62rem;letter-spacing:1px;color:var(--accent-gold);border:1px solid var(--border-gold);border-radius:100px;padding:0.12rem 0.6rem;opacity:.7;}
.knowledge-locked{border:1px solid var(--border-subtle);border-radius:8px;padding:2rem;text-align:center;background:var(--surface-locked);position:relative;overflow:hidden;}
.knowledge-locked::before{content:'';position:absolute;inset:0;background:linear-gradient(135deg,rgba(200,169,126,.04) 0%,transparent 60%);}
.lock-icon{font-size:1.8rem;color:var(--text-tertiary);margin-bottom:1rem;opacity:.5;}
.lock-title{font-size:0.9rem;color:var(--text-secondary);margin-bottom:0.4rem;}
.lock-sub{font-size:0.78rem;color:var(--text-tertiary);margin-bottom:1.2rem;}
.lock-cta{display:inline-flex;align-items:center;gap:0.5rem;background:transparent;border:1px solid var(--accent-gold);color:var(--accent-gold);padding:0.5rem 1.4rem;border-radius:100px;font-size:0.76rem;letter-spacing:1.8px;text-transform:uppercase;cursor:pointer;text-decoration:none;transition:all .3s;position:relative;overflow:hidden;}
.lock-cta:hover{background:var(--accent-gold);color:var(--on-gold);}
.knowledge-wip{border:1px solid var(--border-gold);border-radius:8px;padding:1.6rem;background:rgba(200,169,126,.03);}
.wip-icon{font-size:1.2rem;color:var(--accent-gold);opacity:.5;margin-bottom:0.8rem;}
.wip-title{font-size:0.88rem;color:var(--text-secondary);margin-bottom:0.3rem;}
.wip-sub{font-size:0.76rem;color:var(--text-tertiary);}

/* ── Markdown 渲染 ── */
.wiki-body{font-size:0.9rem;color:var(--text-read);line-height:1.9;}
.wiki-body h1{font-family:'Cormorant Garamond',serif;font-size:1.6rem;font-weight:400;color:var(--text-primary);margin:0 0 0.4rem;}
.wiki-body h2{font-family:'Cormorant Garamond',serif;font-size:1.15rem;font-weight:500;color:var(--accent-gold);letter-spacing:2px;text-transform:uppercase;margin:1.8rem 0 0.7rem;padding-bottom:0.4rem;border-bottom:1px solid var(--border-subtle);}
.wiki-body h3{font-size:0.9rem;font-weight:600;color:var(--text-primary);margin:1.2rem 0 0.4rem;}
.wiki-body p{margin-bottom:0.9rem;}
.wiki-body ul{padding-left:1.2rem;margin-bottom:0.8rem;}
.wiki-body li{margin-bottom:0.3rem;}
.wiki-body strong{color:var(--text-primary);font-weight:600;}
.wiki-body em{color:var(--accent-gold-light);font-style:italic;}
.wiki-body hr{border:none;border-top:1px solid var(--border-subtle);margin:1.4rem 0;}
.wiki-body a,.ep-desc-body a{color:var(--accent-gold);text-decoration:none;border-bottom:1px solid rgba(200,169,126,.35);transition:color .2s,border-color .2s;}
.wiki-body a:hover,.ep-desc-body a:hover{color:var(--accent-gold-light);border-bottom-color:var(--accent-gold);}
.wikilink{
  display:inline-flex;align-items:center;gap:0.25rem;
  color:var(--accent-gold);text-decoration:none;cursor:pointer;
  border-bottom:1px dashed rgba(200,169,126,.4);
  transition:border-color .2s,color .2s;
  font-size:inherit;background:none;border-left:none;border-right:none;border-top:none;
  padding:0;font-family:inherit;
}
.wikilink:hover{color:var(--accent-gold-light);border-bottom-color:var(--accent-gold);}
.wikilink::before{content:'↗';font-size:0.7em;opacity:.6;}

/* Markdown 表格 */
.wiki-table-wrap{overflow-x:auto;margin:1rem 0;border-radius:6px;border:1px solid var(--border-subtle);}
.wiki-table{width:100%;border-collapse:collapse;font-size:0.82rem;}
.wiki-table th{color:var(--accent-gold);font-weight:500;letter-spacing:1px;text-align:left;padding:0.55rem 0.9rem;border-bottom:1px solid var(--border-gold);font-size:0.72rem;text-transform:uppercase;background:rgba(200,169,126,.04);}
.wiki-table td{padding:0.45rem 0.9rem;border-bottom:1px solid var(--border-subtle);color:var(--text-secondary);vertical-align:top;line-height:1.6;}
.wiki-table tr:last-child td{border-bottom:none;}
.wiki-table tr:hover td{background:rgba(200,169,126,.03);}

/* Obsidian callout 區塊 */
.wiki-callout{border-radius:6px;padding:0.7rem 1rem;margin:0.9rem 0;display:flex;gap:0.6rem;align-items:flex-start;font-size:0.85rem;line-height:1.6;}
.wiki-callout-icon{flex-shrink:0;font-size:1rem;margin-top:0.05rem;}
.wiki-callout-body{flex:1;}
.wiki-callout-title{font-weight:600;margin-bottom:0.2rem;}
.wiki-callout-note{background:rgba(90,128,176,0.12);border-left:3px solid var(--type-location);color:var(--text-secondary);}
.wiki-callout-note .wiki-callout-title{color:var(--status-info);}
.wiki-callout-tip{background:rgba(90,138,106,0.12);border-left:3px solid var(--type-store);color:var(--text-secondary);}
.wiki-callout-tip .wiki-callout-title{color:var(--status-success);}
.wiki-callout-warning{background:rgba(184,133,122,0.12);border-left:3px solid var(--accent-rose);color:var(--text-secondary);}
.wiki-callout-warning .wiki-callout-title{color:var(--accent-rose);}

/* Entity 頁面頂部返回列 */
.entity-breadcrumb{
  display:flex;align-items:center;gap:0.8rem;margin-bottom:1.6rem;
  font-size:0.75rem;color:var(--text-tertiary);letter-spacing:1px;
}
.entity-back{
  display:inline-flex;align-items:center;gap:0.4rem;
  color:var(--text-secondary);cursor:pointer;
  transition:color .2s;background:none;border:none;font-size:0.75rem;font-family:inherit;
}
.entity-back:hover{color:var(--accent-gold);}
.entity-type-badge{
  font-size:0.65rem;letter-spacing:1.5px;text-transform:uppercase;
  color:var(--text-tertiary);border:1px solid var(--border-subtle);
  border-radius:100px;padding:0.12rem 0.6rem;
}
/* breadcrumb 階層導航（Phase 2）：緊湊排列，內部可換行避免手機撐破 */
.bc-path{display:inline-flex;align-items:center;gap:0.3rem;flex-wrap:wrap;}
.bc-seg{color:var(--text-secondary);cursor:pointer;transition:color .2s;}
.bc-seg:hover{color:var(--accent-gold);}
.bc-sep{color:var(--border-medium);}
.bc-current{color:var(--accent-gold);font-weight:500;}
.entity-type-badge.person{color:var(--accent-rose);border-color:rgba(184,133,122,.3);}
.entity-type-badge.store{color:var(--type-store);border-color:rgba(90,138,106,.3);}
.entity-type-badge.location{color:var(--type-location);border-color:rgba(90,128,176,.3);}
.entity-type-badge.concept{color:var(--text-tertiary);}

/* ── 問題回報區塊 ── */
.report-wrap{margin-top:2.4rem;border-top:1px solid var(--border-subtle);padding-top:1.2rem;}
.report-toggle{
  display:inline-flex;align-items:center;gap:0.5rem;
  background:none;border:1px solid var(--border-subtle);border-radius:100px;
  color:var(--text-tertiary);font-size:0.72rem;font-family:inherit;letter-spacing:.5px;
  padding:0.35rem 0.9rem;cursor:pointer;transition:all .2s;
}
.report-toggle:hover{color:var(--accent-gold);border-color:rgba(200,169,126,.4);}
.report-toggle i{font-size:0.65rem;}
.report-form{margin-top:1rem;}
.report-page-tag{
  font-size:0.7rem;color:var(--text-tertiary);letter-spacing:.5px;
  margin-bottom:0.6rem;
  display:flex;align-items:center;gap:0.4rem;
}
.report-page-tag i{color:var(--accent-gold);font-size:0.65rem;}
.report-textarea{
  width:100%;min-height:90px;resize:vertical;
  background:var(--surface-input);border:1px solid var(--border-subtle);
  border-radius:8px;color:var(--text-primary);font-size:0.82rem;
  font-family:inherit;line-height:1.7;padding:0.7rem 0.9rem;outline:none;
  transition:border-color .2s;box-sizing:border-box;
}
.report-textarea::placeholder{color:var(--text-tertiary);}
.report-textarea:focus{border-color:rgba(200,169,126,.4);}
.report-actions{display:flex;align-items:center;justify-content:space-between;margin-top:0.6rem;}
.report-char-hint{font-size:0.68rem;color:var(--text-tertiary);}
.report-submit-btn{
  background:rgba(200,169,126,.12);border:1px solid rgba(200,169,126,.3);
  color:var(--accent-gold);font-size:0.75rem;font-family:inherit;
  padding:0.38rem 1rem;border-radius:100px;cursor:pointer;transition:all .2s;
  position:relative;overflow:hidden;
}
.report-submit-btn::before{
  content:'';position:absolute;top:50%;left:50%;
  width:0;height:0;background:rgba(200,169,126,.15);border-radius:50%;
  transform:translate(-50%,-50%);transition:width .4s,height .4s;
}
.report-submit-btn:hover::before{width:200px;height:200px;}
.report-submit-btn:hover{background:rgba(200,169,126,.2);border-color:rgba(200,169,126,.5);}
.report-submit-btn:disabled{opacity:.5;cursor:not-allowed;}
.report-msg{font-size:0.75rem;margin-top:0.5rem;min-height:1.2em;}
.report-msg.ok{color:var(--status-success);}
.report-msg.err{color:var(--accent-rose);}

/* ── 右欄拖動分隔線 ── */
.graph-resizer{
  width:4px;flex-shrink:0;cursor:col-resize;
  background:var(--border-subtle);
  transition:background .2s;position:relative;z-index:10;
}
.graph-resizer:hover,.graph-resizer.dragging{background:rgba(200,169,126,.35);}

/* ── 右欄知識圖譜 ── */
.graph-panel{
  width:var(--graph-w);
  flex-shrink:0;
  display:flex;flex-direction:column;
  background:var(--bg-sidebar);
  border-left:1px solid var(--border-subtle);
  overflow:hidden;
  transition:width .25s ease;
}
.graph-panel.hidden{display:none;}
.graph-panel-header{
  display:flex;justify-content:space-between;align-items:center;
  padding:0.8rem 1rem;border-bottom:1px solid var(--border-subtle);
  flex-shrink:0;
}
.graph-panel-title{
  font-family:'Cormorant Garamond',serif;font-size:0.82rem;
  color:var(--accent-gold);letter-spacing:2.5px;text-transform:uppercase;
}
.graph-panel-actions{display:flex;gap:0.5rem;align-items:center;}
.graph-btn{
  background:none;border:none;color:var(--text-tertiary);cursor:pointer;
  font-size:0.85rem;padding:0.2rem 0.4rem;border-radius:3px;
  transition:color .2s,background .2s;
}
.graph-btn:hover{color:var(--accent-gold);background:rgba(200,169,126,.08);}
.graph-canvas-wrap{flex:1;position:relative;overflow:hidden;}
#mini-graph-canvas{width:100%;height:100%;display:block;}
.graph-legend{
  padding:0.6rem 0.8rem;border-top:1px solid var(--border-subtle);
  display:flex;flex-wrap:wrap;gap:0.5rem;flex-shrink:0;
}
.legend-dot{display:flex;align-items:center;gap:0.3rem;font-size:0.62rem;color:var(--text-tertiary);}
.legend-dot span{width:7px;height:7px;border-radius:50%;flex-shrink:0;}

/* 右欄收合後的展開按鈕 */
.graph-expand-btn{
  position:fixed;bottom:1.4rem;right:1.2rem;z-index:50;
  width:36px;height:36px;border-radius:50%;
  background:var(--fx-panel-bg);border:1px solid var(--border-gold);
  color:var(--accent-gold);font-size:1rem;cursor:pointer;
  display:flex;align-items:center;justify-content:center;
  transition:all .2s;backdrop-filter:blur(10px);
}
.graph-expand-btn:hover{background:var(--accent-gold);color:var(--on-gold);}

/* ── 側邊欄搜尋 ── */
.sidebar-search{flex-shrink:0;padding:0.65rem 0.8rem;border-bottom:1px solid var(--border-subtle);position:relative;}
.sidebar-search-inner{position:relative;}
.sidebar-search-input{
  width:100%;background:var(--surface-input);border:1px solid var(--border-subtle);
  border-radius:100px;padding:0.38rem 1.8rem 0.38rem 1.8rem;
  color:var(--text-primary);font-size:0.75rem;font-family:inherit;outline:none;transition:border-color .2s;
}
.sidebar-search-input::placeholder{color:var(--text-tertiary);}
.sidebar-search-input:focus{border-color:var(--border-gold);}
.sidebar-search-icon{position:absolute;left:0.65rem;top:50%;transform:translateY(-50%);font-size:0.6rem;color:var(--text-tertiary);pointer-events:none;}
.sidebar-search-clear{position:absolute;right:0.65rem;top:50%;transform:translateY(-50%);background:none;border:none;color:var(--text-tertiary);cursor:pointer;font-size:0.75rem;display:none;padding:0;}
.sidebar-search-results{display:none;overflow-y:auto;}
.sidebar-search-results::-webkit-scrollbar{width:3px;}
.sidebar-search-results::-webkit-scrollbar-thumb{background:rgba(200,169,126,.18);border-radius:2px;}
.sidebar-search-results.active{display:block;}
.search-section-label{padding:0.55rem 1rem 0.2rem;font-size:0.62rem;letter-spacing:2px;text-transform:uppercase;color:var(--text-tertiary);border-top:1px solid var(--border-subtle);margin-top:0.2rem;}
.search-section-label:first-child{border-top:none;margin-top:0;}
.search-ri{
  display:flex;align-items:flex-start;gap:0.5rem;padding:0.5rem 1rem;
  cursor:pointer;border-left:2px solid transparent;transition:background .15s,border-color .15s;
  touch-action:manipulation;-webkit-tap-highlight-color:transparent;
}
.search-ri:hover{background:rgba(200,169,126,.05);border-left-color:rgba(200,169,126,.3);}
.search-ri:active{background:rgba(200,169,126,.14);border-left-color:var(--accent-gold);}
.search-ri-badge{flex-shrink:0;font-size:0.6rem;color:var(--text-tertiary);min-width:32px;padding-top:0.12rem;font-family:'Cormorant Garamond',serif;}
.search-ri-text{font-size:0.76rem;color:var(--text-secondary);line-height:1.4;}
.search-empty{padding:1.5rem 1rem;text-align:center;font-size:0.76rem;color:var(--text-tertiary);}

/* ── 知識圖譜 Overlay ── */
#kg-overlay{
  position:fixed;top:0;left:0;right:0;bottom:0;z-index:500;
  display:none;flex-direction:column;
  background:var(--bg-deep);
}
#kg-overlay.open{display:flex;}
#kg-overlay-bar{
  height:var(--nav-h);flex-shrink:0;position:relative;
  background:var(--fx-nav-bg);backdrop-filter:blur(24px);-webkit-backdrop-filter:blur(24px);
  border-bottom:1px solid var(--border-subtle);
  display:flex;align-items:center;justify-content:space-between;
  padding:0 1.8rem;z-index:501;
}
/* 主題切換鈕：釘在 bar 正中央（電腦／手機一致），不受標題與關閉鈕寬度影響 */
.kg-overlay-theme{
  position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);z-index:502;
}
#kg-overlay-title{
  display:flex;align-items:center;gap:0.7rem;
  font-family:'Cormorant Garamond',serif;font-size:1rem;font-weight:500;
  letter-spacing:2.5px;text-transform:uppercase;color:var(--accent-gold);
}
#kg-overlay-title i{font-size:0.82rem;opacity:.65;}
#kg-overlay-close{
  background:transparent;border:1px solid var(--border-gold);
  color:var(--accent-gold);font-size:0.76rem;letter-spacing:1.5px;
  text-transform:uppercase;cursor:pointer;
  padding:0.35rem 1.1rem;border-radius:100px;
  font-family:'Noto Sans TC',sans-serif;
  transition:all .25s;position:relative;overflow:hidden;
  display:flex;align-items:center;gap:0.4rem;
}
#kg-overlay-close::before{
  content:'';position:absolute;top:50%;left:50%;width:0;height:0;
  background:rgba(200,169,126,.18);border-radius:50%;
  transform:translate(-50%,-50%);transition:width .4s,height .4s;
}
#kg-overlay-close:hover::before{width:200px;height:200px;}
#kg-overlay-close:hover{background:var(--accent-gold);color:var(--on-gold);}
@media(max-width:768px){
  #kg-overlay-bar{padding:0 1rem;}
  #kg-overlay-title{font-size:0.88rem;letter-spacing:2px;}
  #kg-overlay-close{min-height:44px;min-width:44px;padding:0 1rem;}
}
#kg-frame{width:100%;flex:1;border:none;}

/* ── 底部自訂播放器 ── */
#mini-player{
  position:fixed;bottom:0;left:0;right:0;height:56px;z-index:200;
  background:var(--fx-panel-bg);backdrop-filter:blur(20px);
  border-top:1px solid var(--border-gold);
  display:none;align-items:center;gap:0.9rem;padding:0 1.2rem;
}
#main-audio{display:none;}
.mini-ep-info{display:flex;flex-direction:column;gap:0.06rem;flex-shrink:0;width:160px;}
.mini-ep-num{font-size:0.6rem;letter-spacing:1.5px;color:var(--accent-gold);font-family:'Cormorant Garamond',serif;text-transform:uppercase;}
.mini-ep-title{font-size:0.74rem;color:var(--text-secondary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.mini-controls{display:flex;align-items:center;gap:0.55rem;flex:1;min-width:0;}
#mini-play-btn{
  flex-shrink:0;width:28px;height:28px;border-radius:50%;
  background:rgba(200,169,126,.12);border:1px solid var(--border-gold);
  color:var(--accent-gold);font-size:0.7rem;cursor:pointer;
  display:flex;align-items:center;justify-content:center;transition:all .2s;
}
#mini-play-btn:hover{background:var(--accent-gold);color:var(--on-gold);}
.mini-time{font-size:0.64rem;color:var(--text-tertiary);font-variant-numeric:tabular-nums;flex-shrink:0;white-space:nowrap;}
.mini-progress{flex:1;height:3px;background:var(--track-bg);border-radius:2px;cursor:pointer;position:relative;min-width:60px;transition:height .15s;}
.mini-progress:hover{height:5px;}
.mini-progress-fill{height:100%;background:var(--accent-gold);border-radius:2px;width:0%;pointer-events:none;transition:width .3s linear;}
#mini-speed{
  flex-shrink:0;background:var(--surface-input);border:1px solid var(--border-subtle);
  color:var(--text-tertiary);font-size:0.64rem;border-radius:4px;padding:0.12rem 0.25rem;
  cursor:pointer;font-family:inherit;transition:border-color .2s,color .2s;
}
#mini-speed:hover{border-color:var(--border-gold);color:var(--accent-gold);}
#mini-vol-btn{flex-shrink:0;background:none;border:none;color:var(--text-tertiary);cursor:pointer;font-size:0.82rem;padding:0;transition:color .2s;}
#mini-vol-btn:hover{color:var(--accent-gold);}
.mini-back-btn{
  flex-shrink:0;background:none;border:1px solid var(--border-subtle);color:var(--text-tertiary);
  border-radius:100px;padding:0.22rem 0.75rem;font-size:0.68rem;letter-spacing:0.8px;cursor:pointer;
  font-family:inherit;white-space:nowrap;transition:all .2s;
}
.mini-back-btn:hover{color:var(--accent-gold);border-color:var(--border-gold);}

/* 有播放器時主體留出底部空間 */
body.has-player .page-wrap{padding-bottom:56px;}
/* 有播放器時展開按鈕往上移，避免被播放器遮住 */
body.has-player .graph-expand-btn{bottom:calc(56px + 0.8rem);}

/* ── RWD ── */
@media(max-width:900px){
  .graph-panel,.graph-resizer,.graph-expand-btn{display:none!important;}
}

/* 平板（769–1024px）：觸控優化 */
@media(min-width:769px) and (max-width:1024px){
  :root{--sidebar-w:210px;}

  /* 觸控目標：互動元素加大 */
  .entity-back{
    min-height:44px;padding:0 0.8rem;
    display:inline-flex;align-items:center;gap:0.35rem;
  }
  .wikilink{
    display:inline-flex;align-items:center;
    min-height:32px;padding:3px 4px;vertical-align:middle;
  }

  /* 播放器：iOS/iPadOS safe area */
  #mini-player{
    height:calc(56px + env(safe-area-inset-bottom, 0px));
    padding-bottom:env(safe-area-inset-bottom, 0px);
  }
  .ep-detail{
    padding-bottom:calc(4rem + env(safe-area-inset-bottom, 0px));
  }

  /* 集數列表項目加高，方便手指點選 */
  .ep-item{min-height:52px;}
  .ep-item .ep-num-badge{font-size:0.7rem;}

  /* sidebar 按鈕加大觸控區 */
  .sidebar-section-header{padding:1rem 1rem;}
  .ep-tag{min-height:36px;display:inline-flex;align-items:center;}
}

/* Mobile 遮罩（手機才作用）*/
.mobile-overlay{
  display:none;position:fixed;top:0;left:0;right:0;bottom:0;
  background:var(--scrim);z-index:250;backdrop-filter:blur(3px);
  -webkit-tap-highlight-color:transparent;
}
.mobile-overlay.active{display:block;}

/* Hamburger 按鈕（手機才顯示）*/
.topbar-hamburger{display:none;}

/* 側欄手機標頭（手機才顯示）*/
.sidebar-mobile-header{display:none;}


/* ── 知識圖譜按鈕（手機才顯示）── */
.topbar-kg-btn{display:none;}

/* ── 右上角全站導航選單（直向 ≤768px + 手機橫向共用；含「老司機の地圖」入口）──
   共用同一組斷點，確保直向與橫向不會再次不同步（老司機 PR29 review）*/
@media (max-width:768px), (orientation:landscape) and (max-height:500px){
  .topbar-menu-btn{
    display:flex;align-items:center;justify-content:center;
    min-width:44px;min-height:44px;padding:0 0.5rem;
    background:none;border:none;color:var(--accent-gold);
    font-size:1rem;cursor:pointer;transition:color .2s;-webkit-tap-highlight-color:transparent;
  }
  .topbar-menu-btn:hover{color:var(--text-primary);}
  .topbar-menu.open{
    display:flex;flex-direction:column;
    position:absolute;top:var(--nav-h);right:0.6rem;
    min-width:160px;background:var(--fx-panel-bg);
    backdrop-filter:blur(25px);-webkit-backdrop-filter:blur(25px);
    border:1px solid rgba(200,169,126,0.18);border-radius:6px;
    box-shadow:0 8px 28px rgba(0,0,0,.6);z-index:320;padding:0.3rem 0;
  }
  .topbar-menu.open a{
    display:block;padding:0.7rem 1.1rem;font-size:0.82rem;letter-spacing:1.5px;
    color:var(--text-secondary);text-decoration:none;transition:color .2s,background .2s;
  }
  .topbar-menu.open a:hover{color:var(--accent-gold);background:rgba(200,169,126,0.07);}
  .topbar-menu.open a.active{color:var(--accent-gold);}
}

/* ── 手機（≤768px）── */
@media(max-width:768px){
  /* Topbar */
  .topbar{padding:0 0.9rem;}
  .topbar-nav{display:none;}
  .topbar-user{display:none;}
  /* 手機版：隱藏「我的帳號／登入」藥丸，改用右上角選單漢堡
     （.topbar-menu-btn / .topbar-menu.open 規則移到下方直向+橫向共用區塊）*/
  #nav-member,#nav-login{display:none!important;}
  .topbar-hamburger{
    display:flex;align-items:center;justify-content:center;
    background:none;border:none;color:var(--accent-gold);
    font-size:1rem;cursor:pointer;padding:0.25rem 0.5rem;
    transition:color .2s;-webkit-tap-highlight-color:transparent;
  }
  .topbar-hamburger:hover{color:var(--text-primary);}

  /* 知識圖譜入口（手機）*/
  .topbar-kg-btn{
    display:flex;align-items:center;justify-content:center;
    background:none;border:none;color:var(--text-secondary);
    font-size:0.85rem;cursor:pointer;padding:0.25rem 0.45rem;
    transition:color .2s;-webkit-tap-highlight-color:transparent;
  }
  .topbar-kg-btn:hover{color:var(--accent-gold);}

  /* 關鍵修正：page-wrap 取消 z-index，讓 sidebar(z:300) 能脫離其堆疊層 */
  .page-wrap{z-index:auto;}

  /* 搜尋結果在手機側欄內限制高度，確保可捲動不溢出 */
  .sidebar-search-results{max-height:calc(100vh - var(--nav-h) - 56px);overflow-y:auto;}

  /* 側欄：固定覆蓋層，預設 translate 出畫面 */
  .ep-sidebar{
    position:fixed!important;
    top:var(--nav-h);left:0;bottom:0;
    width:min(85vw,310px);max-width:310px;
    transform:translateX(-110%);
    transition:transform .3s cubic-bezier(.4,0,.2,1);
    z-index:300;
    box-shadow:4px 0 28px rgba(0,0,0,.6);
  }
  .ep-sidebar.mobile-open{transform:translateX(0);}

  /* 側欄手機標頭 */
  .sidebar-mobile-header{
    display:flex;align-items:center;justify-content:space-between;
    padding:0.65rem 1rem;border-bottom:1px solid var(--border-subtle);
    flex-shrink:0;
  }
  .sidebar-mobile-header-title{
    font-size:0.68rem;letter-spacing:2px;text-transform:uppercase;
    color:var(--text-tertiary);
  }
  .sidebar-mobile-close-btn{
    background:none;border:none;color:var(--text-tertiary);
    cursor:pointer;font-size:0.88rem;padding:0.15rem 0.3rem;line-height:1;
    transition:color .2s;-webkit-tap-highlight-color:transparent;
  }
  .sidebar-mobile-close-btn:hover{color:var(--accent-gold);}

  /* 主內容 */
  .ep-detail{padding:1.4rem 1rem 4.8rem;}
  .ep-hero{flex-direction:column;gap:1rem;}
  .ep-cover,.ep-cover-placeholder{width:96px;height:96px;}

  /* 播放器：加高進度條方便手指拖動 + iOS safe area */
  #mini-player{
    padding:0 0.75rem;gap:0.5rem;
    height:calc(60px + env(safe-area-inset-bottom, 0px));
    padding-bottom:env(safe-area-inset-bottom, 0px);
  }
  .mini-ep-info{display:none;}
  #mini-speed{display:none;}
  .mini-progress{height:6px;border-radius:3px;}
  .mini-progress:hover{height:6px;}
  .mini-progress-fill{border-radius:3px;}

  /* 觸控目標：導覽按鈕至少 44×44px */
  .topbar-hamburger{
    min-width:44px;min-height:44px;
    padding:0 0.5rem;
  }
  .topbar-kg-btn{
    min-width:44px;min-height:44px;
    padding:0 0.5rem;
  }
  .sidebar-mobile-close-btn{
    min-width:44px;min-height:44px;
    display:flex;align-items:center;justify-content:center;
  }

  /* 實體頁返回按鈕：加大觸控區 */
  .entity-back{
    min-height:44px;padding:0 0.8rem;
    display:inline-flex;align-items:center;gap:0.35rem;
  }

  /* wiki 連結：加大觸控高度 */
  .wikilink{
    display:inline-flex;align-items:center;
    min-height:32px;padding:3px 4px;
    vertical-align:middle;
  }

  /* 主內容底部留白：配合 safe area + 播放器高度 */
  .ep-detail{
    padding:1.4rem 1rem calc(4.8rem + env(safe-area-inset-bottom, 0px));
  }
}

/* ── 手機橫向（landscape + 矮螢幕）── */
@media (orientation: landscape) and (max-height: 500px) {
  /* topbar 縮小省高 */
  :root { --nav-h: 42px; }
  .topbar { padding: 0 0.9rem; }
  .topbar-nav { display: none; }
  .topbar-user { display: none; }
  .topbar-hamburger {
    display: flex; align-items: center; justify-content: center;
    background: none; border: none; color: var(--accent-gold);
    font-size: 1rem; cursor: pointer; padding: 0.25rem 0.5rem;
    transition: color .2s; -webkit-tap-highlight-color: transparent;
  }
  .topbar-kg-btn {
    display: flex; align-items: center; justify-content: center;
    background: none; border: none; color: var(--text-secondary);
    font-size: 0.85rem; cursor: pointer; padding: 0.25rem 0.45rem;
    transition: color .2s; -webkit-tap-highlight-color: transparent;
  }

  /* 主畫面 */
  .page-wrap { z-index: auto; }
  .mobile-overlay { z-index: 400; }
  .mobile-overlay.active { display: block; }
  .graph-panel, .graph-resizer, .graph-expand-btn { display: none !important; }
  .ep-main { flex: 1; }
  .ep-detail { padding: 1rem 1rem 4rem; }
  #mini-player { padding: 0 0.75rem; gap: 0.5rem; height: 50px; }
  .mini-ep-info { display: none; }
  #mini-speed { display: none; }

  /* 側欄：固定覆蓋，佔 92vw */
  .ep-sidebar {
    position: fixed !important;
    top: var(--nav-h); left: 0; bottom: 0;
    width: 92vw; max-width: 560px;
    transform: translateX(-110%);
    transition: transform .3s cubic-bezier(.4,0,.2,1);
    z-index: 500;
    box-shadow: 4px 0 28px rgba(0,0,0,.6);
    flex-direction: column;
  }
  .ep-sidebar.mobile-open { transform: translateX(0); }
  .sidebar-mobile-header {
    display: flex; align-items: center; justify-content: space-between;
    padding: 0.5rem 1rem; border-bottom: 1px solid var(--border-subtle);
    flex-shrink: 0;
  }

  /* ── 橫向雙欄：左 nav（150px）+ 右 detail（fill）── */
  .ls-split {
    display: flex;
    flex-direction: row;
    flex: 1;
    min-height: 0;
    overflow: hidden;
  }
  /* 強制顯示 detail panel（global display:none 在後面會蓋掉，用 !important 確保優先） */
  .ls-split { flex-direction: row !important; }
  .ls-detail {
    flex: 1 !important;
    overflow-y: auto !important;
    min-height: 0 !important;
    display: flex !important;
    flex-direction: column !important;
  }

  /* 左欄：手風琴變導航 tab，固定寬度 */
  #sidebar-accordion {
    flex: 0 0 150px !important;
    width: 150px;
    border-right: 1px solid var(--border-subtle);
    overflow-y: auto;
    overflow-x: hidden;
  }

  /* section header：充當 tab 按鈕 */
  #sidebar-accordion .sidebar-section-header {
    padding: 0.85rem 0.75rem;
    cursor: pointer;
    transition: background .15s;
  }
  #sidebar-accordion .sidebar-section-header:hover {
    background: rgba(200,169,126,.07);
  }
  /* 收起 meta 文字和 chevron 節省空間 */
  #sidebar-accordion .section-meta { display: none; }
  #sidebar-accordion .sidebar-chevron { display: none; }
  #sidebar-accordion .section-title {
    font-size: 0.78rem;
    letter-spacing: 1.5px;
  }

  /* section body 在左欄隱藏（移到右欄才顯示） */
  #sidebar-accordion .sidebar-section-body { display: none !important; }

  /* active tab 高亮 */
  #sidebar-accordion .sidebar-section.ls-active .sidebar-section-header {
    background: rgba(200,169,126,.12);
    border-left: 2px solid var(--accent-gold);
  }
  #sidebar-accordion .sidebar-section.ls-active .section-title {
    color: var(--accent-gold);
  }

  /* 右欄：詳情面板 */
  .ls-detail {
    flex: 1;
    overflow-y: auto;
    min-height: 0;
    display: flex;
    flex-direction: column;
  }

  /* detail 裡的 section-body：可見，充滿空間 */
  .ls-detail .sidebar-section-body {
    display: flex !important;
    flex-direction: column;
    flex: 1;
    min-height: 0;
    overflow-y: auto;
  }
  .ls-detail .thanks-body {
    display: flex;
    flex-direction: column;
    flex: 1;
    min-height: 0;
    overflow: hidden;
  }
}

/* ls-split / ls-detail：portrait 模式正常，不影響直向 */
.ls-split { display: flex; flex-direction: column; flex: 1; min-height: 0; overflow: hidden; }
.ls-detail { display: none; }

/* ── 地域折疊 accordion ── */
.region-accordion{margin-bottom:1px;}
.region-header{display:flex;align-items:center;gap:6px;width:100%;padding:0.2rem 0.6rem;cursor:pointer;background:transparent;border:none;font-size:0.76rem;font-family:inherit;color:var(--text-secondary);transition:background .2s;-webkit-appearance:none;appearance:none;border-radius:4px;}
.region-header:hover{background:rgba(200,169,126,.06);}
.region-header.open{color:var(--accent-gold);}
.region-chevron{font-size:0.55rem;margin-left:auto;opacity:.4;transition:transform .2s;}
.region-cities{display:none;padding-left:0.9rem;padding-bottom:0.3rem;}
.region-cities.open{display:block;}
.city-btn{display:flex;align-items:center;gap:5px;width:100%;padding:0.18rem 0.5rem;background:transparent;border:none;border-radius:3px;cursor:pointer;font-size:0.71rem;font-family:inherit;color:var(--text-tertiary);transition:background .2s,color .2s;-webkit-appearance:none;appearance:none;text-align:left;}
.city-btn:hover{background:rgba(200,169,126,.06);color:var(--text-secondary);}
.city-btn.active{color:var(--accent-gold);}

/* ── 店家卡片 ── */
.shop-card{display:flex;flex-direction:column;gap:3px;padding:0.65rem 0.8rem;border-radius:6px;margin-bottom:0.45rem;border-left:2px solid rgba(200,169,126,.15);background:var(--surface-faint);transition:background .2s,transform .15s;}
.shop-card.has-wiki{cursor:pointer;}
.shop-card.has-wiki:hover{transform:translateX(2px);}
.shop-card.recommend{border-left-color:rgba(200,169,126,.55);background:rgba(200,169,126,.035);}
.shop-card.recommend.has-wiki:hover{background:rgba(200,169,126,.07);}
.shop-card.warning{border-left-color:rgba(184,133,122,.55);background:rgba(184,133,122,.03);}
.shop-card.warning.has-wiki:hover{background:rgba(184,133,122,.07);}
.shop-card-name{font-size:0.8rem;font-weight:500;color:var(--text-primary);display:flex;align-items:center;gap:5px;flex-wrap:wrap;}
.shop-tag-star{color:var(--accent-gold);font-size:0.68rem;opacity:.9;}
.shop-tag-warn{color:var(--accent-rose);font-size:0.68rem;}
.shop-meta{display:flex;gap:6px;flex-wrap:wrap;font-size:0.66rem;color:var(--text-tertiary);}
.shop-meta-dot{opacity:.3;}
.shop-summary{font-size:0.7rem;color:var(--text-secondary);line-height:1.5;opacity:.75;}
.shop-no-wiki{font-size:0.62rem;color:var(--text-tertiary);opacity:.4;margin-left:auto;white-space:nowrap;}
.city-section-title{font-size:0.67rem;font-weight:600;letter-spacing:1.8px;text-transform:uppercase;color:var(--accent-gold);opacity:.55;padding:1rem 0 0.35rem;border-bottom:1px solid rgba(200,169,126,.08);margin-bottom:0.5rem;}
.city-section-title.warn-title{color:var(--accent-rose);opacity:.65;}

/* ── 特別感謝祭區 ── */
.thanks-tabs{display:flex;gap:2px;padding:0.55rem 0.7rem 0;flex-shrink:0;}
.thanks-tab{flex:1;padding:0.3rem 0;font-size:0.63rem;letter-spacing:1.2px;text-align:center;cursor:pointer;background:transparent;border:none;border-bottom:1.5px solid transparent;color:var(--text-tertiary);font-family:inherit;transition:color .2s,border-color .2s;}
.thanks-tab:hover{color:var(--text-secondary);}
.thanks-tab.active{color:var(--accent-gold);border-bottom-color:var(--accent-gold);}
.thanks-pane{display:none;padding:0.5rem 0.5rem 0.7rem;overflow-y:auto;}
.thanks-pane::-webkit-scrollbar{width:3px;}
.thanks-pane::-webkit-scrollbar-thumb{background:rgba(200,169,126,.18);border-radius:2px;}
.thanks-pane.active{display:block;}
.person-card{display:flex;align-items:center;gap:0.55rem;padding:0.45rem 0.5rem;border-radius:5px;cursor:pointer;transition:background .18s;}
.person-card:hover{background:rgba(200,169,126,.07);}
.person-avatar{width:28px;height:28px;border-radius:50%;background:rgba(200,169,126,.12);border:1px solid rgba(200,169,126,.2);display:flex;align-items:center;justify-content:center;font-size:0.6rem;color:var(--accent-gold);flex-shrink:0;font-family:'Cormorant Garamond',serif;letter-spacing:0;}
.person-card.external .person-avatar{background:rgba(184,133,122,.12);border-color:rgba(184,133,122,.25);color:var(--accent-rose);}
.person-info{flex:1;min-width:0;}
.person-name{font-size:0.75rem;color:var(--text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.person-meta{font-size:0.62rem;color:var(--text-tertiary);margin-top:1px;}
.person-badge{font-size:0.6rem;background:rgba(200,169,126,.1);color:var(--accent-gold);border-radius:3px;padding:0.1rem 0.35rem;white-space:nowrap;flex-shrink:0;border:none;cursor:pointer;font-family:inherit;line-height:inherit;}
button.person-badge:hover{background:rgba(200,169,126,.22);}
.person-card.external .person-badge{background:rgba(184,133,122,.1);color:var(--accent-rose);}
.vendor-empty{padding:1.2rem 0.6rem;font-size:0.72rem;color:var(--text-tertiary);text-align:center;line-height:1.8;opacity:.6;}
.vendor-card{display:flex;align-items:center;gap:0.55rem;padding:0.5rem 0.5rem;border-radius:5px;cursor:pointer;transition:background .18s;border:1px solid rgba(200,169,126,.1);margin-bottom:0.35rem;background:rgba(200,169,126,.03);}
.vendor-card:hover{background:rgba(200,169,126,.09);border-color:rgba(200,169,126,.22);}
.vendor-icon{width:30px;height:30px;border-radius:5px;background:rgba(200,169,126,.1);border:1px solid rgba(200,169,126,.2);display:flex;align-items:center;justify-content:center;font-size:0.95rem;flex-shrink:0;}
.vendor-info{flex:1;min-width:0;}
.vendor-name{font-size:0.75rem;color:var(--text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.vendor-meta{font-size:0.62rem;color:var(--text-tertiary);margin-top:1px;}
.community-card{display:flex;align-items:flex-start;gap:0.5rem;padding:0.45rem 0.5rem;border-radius:5px;cursor:pointer;transition:background .18s;}
.community-card:hover{background:rgba(200,169,126,.07);}
.community-card.no-link{cursor:default;}
.community-card.no-link:hover{background:transparent;}
.community-icon{font-size:1rem;flex-shrink:0;margin-top:2px;}
.community-info{flex:1;min-width:0;}
.community-name{font-size:0.75rem;color:var(--text-primary);line-height:1.3;}
.community-source{font-size:0.62rem;color:var(--text-tertiary);margin-top:2px;}
.thanks-body{display:flex;flex-direction:column;min-height:0;}

/* 裝置未授權封鎖畫面 */
#device-block-overlay{
  display:none;position:fixed;inset:0;z-index:99999;
  background:var(--fx-overlay-bg);backdrop-filter:blur(16px);
  align-items:center;justify-content:center;padding:24px;
}
#device-block-overlay.active{display:flex;}
.device-block-box{
  max-width:440px;width:100%;
  background:var(--bg-card);
  border:1px solid rgba(184,133,122,0.3);
  border-radius:12px;padding:40px 32px 32px;text-align:center;
}
.device-block-icon{font-size:40px;margin-bottom:20px;display:block;}
.device-block-title{
  font-family:'Playfair Display',serif;
  font-size:22px;font-weight:600;color:var(--accent-rose);margin-bottom:12px;
}
.device-block-desc{
  font-size:14px;color:var(--text-secondary);line-height:1.8;margin-bottom:28px;
}
.device-block-desc strong{color:var(--accent-gold);}
.device-block-logout{
  display:block;width:100%;padding:12px;
  background:transparent;color:var(--text-tertiary);
  border:1px solid var(--border-medium);border-radius:8px;
  font-size:13px;cursor:pointer;transition:all 0.3s;
}
.device-block-logout:hover{color:var(--text-secondary);border-color:var(--border-medium);}

/* ── 手機效能優化 ─────────────────────────────────────
   手機 GPU 無法負荷 fractalNoise + blur(130px) 動畫
   手機版：關閉顆粒紋理、降低光暈模糊、停止浮動動畫
──────────────────────────────────────────────────── */
@media (max-width: 768px) {
  /* 最耗效能：SVG fractalNoise 顆粒紋理直接關閉 */
  .bg-grain { display: none !important; }

  /* 光暈圓圈：blur 130px → 30px，停止浮動動畫 */
  .bg-patch, .bp {
    filter: blur(30px) !important;
    animation: none !important;
  }

  /* 城市頁旋轉環：停止動畫 */
  .cuisine-ring, .cuisine-ring-2, .cuisine-ring-3,
  .hero-emblem { animation: none !important; }

  /* 導覽列毛玻璃：降低 blur 減輕 GPU */
  .nav-bar, .topbar, .navbar {
    backdrop-filter: blur(8px) !important;
    -webkit-backdrop-filter: blur(8px) !important;
  }
}
/* ── 字級調整控制 ── */
#font-size-ctrl{
  display:none;
  align-items:center;gap:6px;
  padding:0.55rem 0.9rem;
  margin-bottom:1rem;
  border-bottom:1px solid var(--border-subtle);
}
#font-size-ctrl span{
  font-size:0.68rem;letter-spacing:1.5px;text-transform:uppercase;
  color:var(--text-tertiary);margin-right:4px;
}
.fs-btn{
  background:transparent;
  border:1px solid rgba(200,169,126,0.25);
  border-radius:3px;
  color:var(--text-secondary);
  cursor:pointer;
  font-size:0.72rem;
  padding:2px 7px;
  line-height:1.5;
  transition:border-color .2s,color .2s;
  font-family:inherit;
}
.fs-btn:hover{border-color:var(--accent-gold);color:var(--accent-gold);}
.fs-btn.fs-active{border-color:var(--accent-gold);color:var(--accent-gold);}
