/* ============================================================
   god.novice.tw ｜ 與神同行初心者
   版式對齊新手村家族（tkr.novice.tw / code.novice.tw）：
   固定 50px 頂欄、暖白底、1px 細線、低陰影、明體標題、
   右側欄密度優先、手機底部導覽。
   設計原則：留白只用來分組，不用來撐高級感。
   ============================================================ */
:root{
  --bg:#f7f7f4; --bg-soft:#efefea; --card:#fff;
  --ink:#14181d; --ink-2:#3f4750; --ink-3:#778089;
  --navy:#16324f; --navy-2:#0f2740;
  --brand:#b3401e; --brand-2:#8f3211; --brand-soft:#fbf0ea; --brand-line:#ecc9ba;
  --line:rgba(20,24,29,.14); --line-2:rgba(20,24,29,.07);
  --gold:#9a6206; --gold-soft:#fbf3e0;
  --sans:-apple-system,BlinkMacSystemFont,"Segoe UI","Noto Sans TC","PingFang TC","Hiragino Sans TC","Microsoft JhengHei",Roboto,sans-serif;
  --serif:"Noto Serif TC","Songti TC","Source Han Serif TC","PMingLiU",serif;
  --radius:8px; --shadow:0 1px 2px rgba(16,24,40,.04); --max:1120px;
}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}
body{
  margin:0;background:var(--bg);color:var(--ink);font-family:var(--sans);
  font-size:15px;line-height:1.6;letter-spacing:.002em;padding-top:50px;
  font-variant-numeric:tabular-nums;
}
img{max-width:100%;height:auto}
a{color:var(--navy);text-decoration:none}
a:hover{color:var(--navy-2);text-decoration:underline;text-underline-offset:3px}
:focus-visible{outline:2px solid var(--navy);outline-offset:2px;border-radius:4px}
h1,h2,h3,h4{line-height:1.3;letter-spacing:-.01em;margin:0 0 .4em;font-weight:750}
h1,h2{font-family:var(--serif);font-weight:600}
h1{font-size:clamp(1.38rem,3vw,1.8rem)}
h2{font-size:clamp(1.02rem,2vw,1.2rem)}
h3{font-size:.96rem}
p{margin:0 0 .7em}
.wrap{max-width:var(--max);margin:0 auto;padding-left:18px;padding-right:18px}
.muted{color:var(--ink-3)}
.small{font-size:.84rem}
.center{text-align:center}
.skip-link{position:absolute;left:-9999px;top:0;z-index:200;background:var(--navy);color:#fff;padding:.6rem 1rem}
.skip-link:focus{left:10px;top:6px}

/* ---------- 頂欄 ---------- */
.topbar{position:fixed;inset:0 0 auto 0;z-index:100;height:50px;background:rgba(247,247,244,.94);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);border-bottom:1px solid var(--line)}
.topbar-inner{max-width:var(--max);margin:0 auto;height:100%;padding:0 14px;display:flex;align-items:center;gap:10px}
.brand{display:inline-flex;align-items:center;gap:.45rem;color:var(--ink);flex:0 0 auto;min-height:38px}
.brand:hover{text-decoration:none;color:var(--ink)}
.brand-mark{width:22px;height:22px;border-radius:5px;display:inline-flex;align-items:center;justify-content:center;background:var(--brand);color:#fff;font-weight:700;font-size:12px;flex:0 0 auto;font-family:var(--serif)}
.brand-text{font-weight:800;font-size:.95rem;white-space:nowrap}
.brand-text em{font-style:normal;color:var(--brand)}
.topnav{display:flex;align-items:center;gap:0;flex:1 1 auto;min-width:0;overflow:hidden}
.topnav-link{padding:.3rem .5rem;border-radius:6px;color:var(--ink-2);font-size:.86rem;font-weight:600;white-space:nowrap}
.topnav-link:hover{background:var(--bg-soft);color:var(--navy);text-decoration:none}
.topnav-link.is-active{color:var(--brand-2);background:var(--brand-soft)}
.topsearch{flex:0 0 auto;display:flex;align-items:center}
.topsearch input{width:168px;height:32px;padding:0 .55rem;border:1px solid var(--line);border-right:0;border-radius:7px 0 0 7px;background:#fff;font-size:.84rem;font-family:inherit}
.topsearch input:focus{outline:none;border-color:rgba(179,64,30,.55)}
.topsearch button{height:32px;width:34px;border:1px solid var(--line);border-left:0;border-radius:0 7px 7px 0;background:#fff;color:var(--brand);cursor:pointer;display:inline-flex;align-items:center;justify-content:center}
.topsearch button:hover{background:var(--brand-soft)}

/* ---------- 帳號區（登入／登出／後台） ---------- */
.acct{flex:0 0 auto;display:flex;align-items:center;gap:.3rem;font-size:.82rem;font-weight:600;white-space:nowrap}
.acct-login{height:32px;padding:0 .7rem;border:1px solid var(--line);border-radius:7px;background:#fff;color:var(--ink-2);gap:.28rem}
.acct-login:hover{background:var(--brand-soft);border-color:rgba(179,64,30,.35);color:var(--brand);text-decoration:none}
.acct-user{padding-left:.15rem}
.acct-avatar{width:22px;height:22px;border-radius:50%;object-fit:cover;background:var(--bg-soft);flex:0 0 auto}
.acct-name{color:var(--ink-2);max-width:6.5rem;overflow:hidden;text-overflow:ellipsis}
.acct-btn{height:26px;display:inline-flex;align-items:center;padding:0 .55rem;border-radius:6px;background:var(--brand-soft);color:var(--brand-2);font-size:.8rem}
.acct-btn:hover{background:rgba(179,64,30,.16);color:var(--brand-2);text-decoration:none}
.acct-out{display:inline-flex;margin:0}
.acct-out button{height:26px;padding:0 .45rem;border:1px solid var(--line);border-radius:6px;background:#fff;color:var(--ink-3);font:inherit;font-size:.78rem;font-weight:600;cursor:pointer}
.acct-out button:hover{border-color:rgba(179,64,30,.35);color:var(--brand)}

/* 廟頁的管理員工具列：只給有權限的人看，不要外露成一般讀者的干擾 */
.admin-bar{display:flex;flex-wrap:wrap;align-items:center;gap:.45rem;margin:.2rem 0 .8rem;padding:.4rem .6rem;border:1px dashed var(--line);border-radius:8px;background:rgba(255,255,255,.6);font-size:.78rem;color:var(--ink-3)}
.admin-bar .ab-label{font-weight:700;color:var(--brand-2)}
.admin-bar>a{padding:.12rem .45rem;border-radius:5px;background:var(--bg-soft);color:var(--ink-2)}
.admin-bar>a:hover{background:var(--brand-soft);color:var(--brand-2);text-decoration:none}

/* 封面流水：上一間／進度／下一間。
   放在同一列，寬度不夠時整組換行，不要把「下一間」擠到看不見。 */
.sw-nav{display:inline-flex;align-items:center;gap:.3rem;flex-wrap:wrap}
.sw-step{display:inline-flex;align-items:center;height:22px;padding:0 .5rem;border:1px solid var(--line);border-radius:6px;background:#fff;color:var(--ink-2);font-weight:700;white-space:nowrap}
.sw-step:hover{background:var(--brand-soft);border-color:rgba(179,64,30,.35);color:var(--brand-2);text-decoration:none}
.sw-step.is-off{background:var(--bg-soft);color:var(--ink-3);opacity:.55;border-style:dashed}
.sw-step.sw-next{background:var(--brand);border-color:var(--brand);color:#fff}
.sw-step.sw-next:hover{background:var(--brand-2);border-color:var(--brand-2);color:#fff}
.sw-count{color:var(--ink-3);white-space:nowrap;padding:0 .15rem}
.sw-count strong{color:var(--brand-2);font-variant-numeric:tabular-nums}
.sw-done{font-size:.72rem}
.sw-mode{padding:.12rem .45rem;border-radius:5px;border:1px dashed var(--line);color:var(--ink-3)}
.sw-mode:hover{color:var(--brand-2);border-color:rgba(179,64,30,.35);text-decoration:none}
@media(max-width:760px){
  /* 手機：整條工具列自己一列，箭頭拉大一點才點得到 */
  .admin-bar{gap:.35rem}
  .sw-nav{width:100%;justify-content:space-between}
  .sw-step{height:30px;padding:0 .7rem}
}
@media(max-width:980px){
  /* 名字先收，頭像與「後台」留著；導覽比名字重要 */
  .acct-name{display:none}
}

/* ---------- 麵包屑 ---------- */
.crumbs{border-bottom:1px solid var(--line-2);background:rgba(255,255,255,.55);margin-bottom:0}
.crumbs ol{list-style:none;display:flex;flex-wrap:wrap;gap:.3rem;margin:0;padding:.34rem 0;font-size:.76rem;color:var(--ink-3)}
.crumbs li+li::before{content:"/";margin-right:.3rem;color:var(--line)}
.crumbs a{color:var(--ink-3)}
.crumbs [aria-current]{color:var(--ink-2);font-weight:600}

/* ---------- 版型 ---------- */
.page-layout{max-width:var(--max);margin:0 auto;padding:0 14px 4px;display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:12px;align-items:start}
.page-layout.no-side{grid-template-columns:minmax(0,1fr)}
main{min-width:0}

/* ---------- Hero ---------- */
.hero{padding:11px 13px 9px;background:linear-gradient(180deg,#fff,var(--bg));border:1px solid var(--line-2);border-top:0;border-radius:0 0 var(--radius) var(--radius)}
.hero .eyebrow{display:inline-flex;align-items:center;gap:.35rem;font-size:.72rem;font-weight:700;letter-spacing:.09em;color:var(--brand-2);background:var(--brand-soft);border:1px solid var(--brand-line);padding:.14rem .5rem;border-radius:999px;margin-bottom:6px;text-transform:none}
.hero h1{font-size:clamp(1.45rem,3.4vw,2rem);line-height:1.24;margin-bottom:.28em}
.hero .lead{color:var(--ink-2);max-width:700px;font-size:.94rem;line-height:1.65;margin-bottom:.4em}
.hero .lead strong{color:var(--ink);font-weight:700}
.hero-stats{display:flex;flex-wrap:wrap;margin-top:8px;border:1px solid var(--line);border-radius:var(--radius);background:#fff;overflow:hidden;max-width:620px}
.hero-stats>div{flex:1 1 110px;padding:.32rem .65rem;border-right:1px solid var(--line-2)}
.hero-stats>div:last-child{border-right:0}
.hero-stats strong{display:block;font-size:1.18rem;color:var(--navy);line-height:1.15;font-family:var(--serif);font-weight:600}
.hero-stats span{font-size:.74rem;color:var(--ink-3)}

/* ---------- 搜尋框 ---------- */
.search-box{display:flex;max-width:620px;margin:7px 0 6px}
.search-box input{flex:1;height:42px;padding:0 .85rem;border:1px solid var(--line);border-right:0;border-radius:8px 0 0 8px;background:#fff;font-size:.92rem;font-family:inherit;min-width:0}
.search-box input:focus{outline:none;border-color:rgba(179,64,30,.55)}
.search-box button{height:42px;padding:0 1.1rem;border:1px solid var(--brand);border-radius:0 8px 8px 0;background:var(--brand);color:#fff;font-weight:700;cursor:pointer;font-family:inherit;white-space:nowrap;font-size:.9rem}
.search-box button:hover{background:var(--brand-2)}

/* ---------- 按鈕 ---------- */
.btn{display:inline-flex;align-items:center;gap:.4rem;padding:.45rem .95rem;border:1px solid var(--line);border-radius:7px;background:#fff;color:var(--navy);font-weight:700;font-size:.87rem;cursor:pointer;font-family:inherit}
.btn:hover{background:var(--bg-soft);text-decoration:none}
.btn-primary{background:var(--brand);border-color:var(--brand);color:#fff}
.btn-primary:hover{background:var(--brand-2);color:#fff}
.btn.small{padding:.28rem .65rem;font-size:.8rem}

/* ---------- 區塊 ---------- */
.section{margin:14px 0 4px}
.sec-head,.section-head{display:flex;justify-content:space-between;align-items:baseline;gap:.7rem;margin:11px 0 6px;padding-bottom:4px;border-bottom:1px solid var(--line)}
.sec-head h2,.section-head h2{margin:0;display:flex;align-items:center;gap:.45rem;font-size:clamp(1.02rem,2vw,1.2rem)}
.sec-head h2::before,.section-head h2::before{content:"";width:3px;height:1em;background:var(--brand);border-radius:2px;flex:0 0 auto}
.sec-head a,.section-head .more{font-size:.84rem;font-weight:600;white-space:nowrap}

/* ---------- 網格 ---------- */
.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:8px}
.grid.cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}
.grid.cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}
.grid.cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}
@media (max-width:760px){
  .grid.cols-3,.grid.cols-4{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media (max-width:430px){
  .grid.cols-3,.grid.cols-4,.grid.cols-2{grid-template-columns:minmax(0,1fr)}
}

/* ---------- 宮廟卡 ---------- */
.card,.temple-card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);overflow:hidden;display:flex;flex-direction:column;transition:border-color .15s}
.card:hover,.temple-card:hover{border-color:rgba(179,64,30,.45)}
.card{padding:0}
.tc-img{display:block;background:var(--bg-soft)}
.tc-img img{width:100%;height:104px;object-fit:cover;display:block}
.card-body,.tc-body{padding:6px 9px 7px;display:flex;flex-direction:column;gap:1px}
/* 這裡的每一條都要含 .temple-card：
   temple_card() 輸出的是 <article class="temple-card">，不是 .card。
   先前只寫 .card 內的字級規則，全部沒接到，卡片內文就掉回 body 的 15px
   —— 卡片只有 250px 寬，15px 的行高會把三行字撐成一整片，
   看起來就是「字太大」。 */
.card h3,.temple-card h3,.tc-body h3{margin:.1rem 0;line-height:1.3;font-size:.94rem;font-family:var(--serif);font-weight:600}
.card h3 a,.temple-card h3 a{color:var(--ink)}
.card h3 a:hover,.temple-card h3 a:hover{color:var(--brand-2);text-decoration:none}
.card .meta,.temple-card .meta{font-size:.74rem;color:var(--ink-3);margin:0;line-height:1.45}
.card .deity-line,.temple-card .deity-line{margin:0;font-size:.78rem;color:var(--ink-2);line-height:1.45}
.card .deity-line strong,.temple-card .deity-line strong{color:var(--ink);font-weight:700}
.card .excerpt,.temple-card .excerpt{margin:0;font-size:.74rem;color:var(--ink-3);line-height:1.45;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.card .foot,.temple-card .foot{margin-top:auto;padding-top:5px;font-size:.72rem;color:var(--ink-3);display:flex;gap:.5rem;flex-wrap:wrap;border-top:1px solid var(--line-2)}
.card .foot span,.temple-card .foot span{display:inline-flex;align-items:center;gap:.2rem}
.tag,.badge{display:inline-flex;align-items:center;font-size:.68rem;font-weight:700;letter-spacing:.04em;color:var(--brand-2);background:var(--brand-soft);border:1px solid var(--brand-line);padding:.08rem .45rem;border-radius:999px;line-height:1.7;white-space:nowrap}
.badge.red{background:var(--brand-soft);color:var(--brand-2);border-color:var(--brand-line)}
.badge.jade{background:#eef4ef;color:#2f6b52;border-color:#cfe2d7}
.badge.line{background:#fff;color:var(--ink-3);border-color:var(--line)}
.badge.gold{background:var(--gold-soft);color:var(--gold);border-color:#f0e0b0}

/* ---------- 篩選 chips ---------- */
.filters{display:flex;flex-wrap:wrap;gap:4px;margin:6px 0}
.filters a,.filters span{background:#fff;border:1px solid var(--line);padding:.24rem .65rem;border-radius:999px;color:var(--ink-2);font-size:.82rem;font-weight:600;display:inline-flex;align-items:center;gap:.25rem}
.filters a:hover{border-color:var(--brand-line);color:var(--brand-2);text-decoration:none}
.filters a.on,.filters .on{background:var(--brand);border-color:var(--brand);color:#fff}
.filters span.muted{border:0;background:transparent;padding-left:0;font-weight:600}

/* ---------- 縣市格 ---------- */
.city-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(132px,1fr));gap:5px}
.city-grid a{display:flex;justify-content:space-between;align-items:center;gap:.4rem;padding:.4rem .6rem;background:#fff;border:1px solid var(--line);border-radius:7px;color:var(--ink-2);font-size:.86rem;font-weight:600}
.city-grid a:hover{border-color:var(--brand-line);color:var(--brand-2);text-decoration:none}
.city-grid a .muted{font-size:.76rem}

/* ---------- 清單列 ---------- */
.list{display:grid;gap:5px}
.row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:.8rem;align-items:center;padding:.5rem .75rem;background:#fff;border:1px solid var(--line);border-radius:7px}
.row .title{font-family:var(--serif);font-size:.95rem;font-weight:600}
.row .sub{font-size:.78rem;color:var(--ink-3)}
.row .side{text-align:right;font-size:.78rem;color:var(--ink-3)}

/* 分頁：可換行、不撐破容器。頁碼由 pager_nav() 收斂成首/尾/目前±2，
   所以這裡不需要為「80 頁」做特別處理，但還是留 flex-wrap 當保險。
   注意：基底規則寫成 .pager>a,.pager>span（specificity 0,1,1），
   後面的 .pager-gap / .pager-info 必須加到 0,2,0 才蓋得過，
   否則「省略號」會被畫成一個帶框的按鈕、「第 X / Y 頁」在桌機也跟著露出來。 */
.pager{display:flex;flex-wrap:wrap;align-items:center;gap:4px;justify-content:center;margin-top:14px}
.pager>a,.pager>span{display:inline-flex;align-items:center;justify-content:center;min-width:26px;height:26px;padding:0 7px;border:1px solid var(--line);border-radius:5px;background:#fff;font-size:.8rem;font-weight:700;color:var(--ink-2);text-decoration:none}
.pager>a:hover{border-color:var(--brand);color:var(--brand);text-decoration:none}
.pager>.on{background:var(--brand);border-color:var(--brand);color:#fff}
.pager>.pager-step{font-weight:600}
.pager>.pager-step.is-off{color:var(--ink-3);opacity:.45;background:var(--bg-soft);cursor:default}
.pager>.pager-gap{border:0;background:transparent;color:var(--ink-3);letter-spacing:.05em;padding:0}
.pager>.pager-info{display:none;border:0;background:transparent;color:var(--ink-3);font-weight:600;font-size:.8rem;padding:0 .2rem}
.empty{text-align:center;color:var(--ink-3);padding:2rem 1rem;background:#fff;border:1px dashed var(--line);border-radius:var(--radius);font-size:.9rem}
.notice{padding:.55rem .8rem;border-radius:7px;background:var(--gold-soft);border:1px solid #f0e0b0;font-size:.84rem;color:#6b4f06;line-height:1.6}

/* ---------- 宮廟內頁 ---------- */
.page-head{padding:12px 0 2px}
.page-head h1{margin-bottom:.2em}
.page-head p{color:var(--ink-2);font-size:.9rem;margin-bottom:.3em}
.detail h1{margin:7px 0 1px}
.temple-head{display:grid;grid-template-columns:minmax(0,1fr) 280px;gap:12px;align-items:start}
.photo{width:100%;aspect-ratio:4/3;object-fit:cover;border-radius:var(--radius);background:var(--bg-soft);border:1px solid var(--line);display:block}
/* 大圖（主視覺）用 16:9。
   為什麼不沿用 4:3：4:3 在大螢幕上會把首屏吃光，往下滑才看得到地址電話；
   16:9 讓首屏同時放得下標題、評分與「基本資料」的前兩行。
   注意別再壓 max-height —— 之前 16:9 + max-height:320px 會渲染成 2.5:1 的細長條，
   等於把每張封面都裁成全景照。 */
.photo-hero{aspect-ratio:16/9;max-height:none;margin-bottom:8px}
.panel{background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:2px 12px;margin:8px 0;box-shadow:var(--shadow)}
.panel h2{font-size:.98rem;margin:.55rem 0 .45rem;display:flex;align-items:center;gap:.4rem}
.panel h2::before{content:"";width:3px;height:.95em;background:var(--brand);border-radius:2px;flex:0 0 auto}
.panel p{font-size:.88rem;line-height:1.75;color:var(--ink-2)}
.panel p:last-child{margin-bottom:.6rem}
.facts{display:grid;grid-template-columns:7.2rem minmax(0,1fr);gap:0;margin:0 0 .5rem;font-size:.88rem}
.facts dt{color:var(--ink-3);font-size:.8rem;padding:.32rem 0;border-bottom:1px solid var(--line-2)}
.facts dd{margin:0;padding:.32rem 0;border-bottom:1px solid var(--line-2);color:var(--ink);line-height:1.55;word-break:break-word}
.facts dd a{word-break:break-all}
.deity-chip{display:inline-flex;align-items:center;gap:.25rem;padding:.14rem .55rem;border-radius:999px;background:var(--bg-soft);border:1px solid var(--line-2);color:var(--ink-2);font-size:.8rem;margin:0 .25rem .25rem 0;font-weight:600}
.deity-chip.main{background:var(--brand-soft);border-color:var(--brand-line);color:var(--brand-2);font-weight:700}
.deity-chip a{color:inherit}
.hours{list-style:none;margin:0 0 .6rem;padding:0;font-size:.86rem}
.hours li{padding:.28rem 0;border-bottom:1px solid var(--line-2);display:flex;gap:.8rem}
.hours li:last-child{border-bottom:0}
.hours li b{flex:0 0 5rem;font-weight:600;color:var(--ink-3);font-size:.8rem}
.hours-table{width:100%;border-collapse:collapse;font-size:.86rem;margin-bottom:.5rem}
.hours-table td{padding:.3rem 0;border-bottom:1px solid var(--line-2)}
.hours-table td:first-child{color:var(--ink-3);width:5.5rem;font-size:.8rem}
.hint{font-size:.76rem;color:var(--ink-3);line-height:1.55;margin:.3rem 0 .6rem}

/* ---------- 側欄 ---------- */
.sidebar{display:flex;flex-direction:column;gap:8px;padding-top:8px;min-width:0}
.side-card{background:#fff;border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);overflow:hidden}
.side-head{display:flex;align-items:center;gap:.4rem;padding:.4rem .65rem;border-bottom:1px solid var(--line-2);background:var(--bg-soft);font-weight:800;font-size:.88rem}
.side-head svg{color:var(--brand);width:13px;height:13px;flex:0 0 auto}
.side-head small{margin-left:auto;font-weight:600;font-size:.7rem;color:var(--ink-3)}
.side-body{padding:7px}
.side-nav{display:flex;flex-direction:column;padding:3px}
.side-nav a{display:flex;align-items:center;gap:.45rem;padding:.28rem .45rem;border-radius:6px;color:var(--ink-2);font-size:.87rem;font-weight:600;border-left:3px solid transparent}
.side-nav a:hover{background:var(--bg-soft);color:var(--navy);text-decoration:none}
.side-nav a.is-active{background:var(--brand-soft);border-left-color:var(--brand);color:var(--brand-2)}
.side-count{margin-left:auto;font-size:.72rem;font-weight:700;color:var(--ink-3);background:var(--bg-soft);border:1px solid var(--line-2);padding:0 .4rem;border-radius:999px}
.side-search-form{display:flex;flex-direction:column;gap:6px}
.side-search-form>input{height:34px;padding:0 .55rem;border:1px solid var(--line);border-radius:7px;background:#fff;font-family:inherit;font-size:.84rem;width:100%}
.side-search-form>input:focus{outline:none;border-color:rgba(179,64,30,.55)}
.side-search-row{display:flex}
.side-search-row select{flex:1;min-width:0;height:34px;padding:0 .55rem;border:1px solid var(--line);border-right:0;border-radius:7px 0 0 7px;background:#fff;font-family:inherit;font-size:.84rem}
.side-search-row button{height:34px;padding:0 .8rem;border:1px solid var(--brand);border-radius:0 7px 7px 0;background:var(--brand);color:#fff;font-weight:700;font-size:.84rem;cursor:pointer;font-family:inherit}
.side-search-row button:hover{background:var(--brand-2)}
.rank-list{list-style:none;margin:0;padding:4px;display:flex;flex-direction:column;gap:1px}
.rank-list li{display:flex;align-items:center;gap:.55rem;padding:.28rem .35rem;border-radius:6px}
.rank-list li:hover{background:var(--bg-soft)}
.rank{flex:0 0 auto;width:20px;height:20px;border-radius:5px;background:var(--navy);color:#fff;font-size:.72rem;font-weight:800;display:inline-flex;align-items:center;justify-content:center}
.rank-list li:nth-child(1) .rank{background:var(--brand)}
.rank-body{min-width:0;display:flex;flex-direction:column;line-height:1.35}
.rank-body a{color:var(--ink);font-weight:700;font-size:.87rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.rank-body small{color:var(--ink-3);font-size:.72rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.side-latest a{flex-direction:column;align-items:flex-start;gap:0}
.side-latest a small{color:var(--ink-3);font-size:.72rem;font-weight:500}
.side-note{font-size:.78rem;color:var(--ink-3);line-height:1.6;margin:0;padding:2px}
@media(max-width:980px){
  .page-layout{grid-template-columns:minmax(0,1fr)}
  .sidebar{padding-top:4px;display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));align-items:start}
}

/* ---------- 頁尾 ---------- */
.sitefoot{margin-top:14px;border-top:1px solid var(--line);background:#fff}
.foot-grid{display:grid;grid-template-columns:2fr 1fr 1fr;gap:14px;padding-top:11px;padding-bottom:6px}
.foot-title{font-weight:800;font-family:var(--serif);display:flex;align-items:center;gap:.45rem;margin-bottom:.4rem}
.foot-title .brand-mark{width:20px;height:20px;font-size:11px}
.foot-desc{color:var(--ink-2);font-size:.86rem;line-height:1.6}
.foot-note{color:var(--ink-3);font-size:.78rem;line-height:1.55}
.foot-col h2{font-size:.88rem;margin-bottom:.45rem;font-family:var(--sans);font-weight:800}
.foot-col ul{list-style:none;margin:0;padding:0;line-height:1.7}
.foot-col a{color:var(--ink-2);font-size:.86rem}
.foot-bottom{display:flex;flex-wrap:wrap;justify-content:space-between;gap:.5rem;border-top:1px solid var(--line-2);padding-top:9px;padding-bottom:12px;font-size:.78rem;color:var(--ink-3)}
.foot-links a{margin-left:.9rem;color:var(--ink-3)}

/* ---------- 手機底部導覽 ---------- */
.mnav{display:none}
@media(max-width:760px){
  body{padding-bottom:58px}
  .topsearch{display:none}
  /* 手機版把名字收起來，只留頭像／登入鈕，否則頂欄會擠掉導覽 */
  .acct-name{display:none}
  .acct-login span{display:none}
  .acct-login{width:32px;padding:0;justify-content:center}
  .topnav{overflow-x:auto;scrollbar-width:none}
  .topnav::-webkit-scrollbar{display:none}
  .topnav-link{padding:.3rem .35rem;font-size:.82rem}
  .mnav{display:flex;position:fixed;inset:auto 0 0 0;z-index:100;background:rgba(255,255,255,.97);border-top:1px solid var(--line);height:54px}
  .mnav a{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1px;color:var(--ink-3);font-size:.66rem;font-weight:600}
  .mnav a svg{width:16px;height:16px}
  .mnav a:hover{text-decoration:none}
  .mnav a.is-active{color:var(--brand)}
  /* 手機只留「上一頁／第 X / Y 頁／下一頁」，頁碼全部收起來 */
  .pager>.pager-num,.pager>.pager-gap{display:none}
  .pager>.pager-info{display:inline-flex}
  .pager{gap:6px}
  .pager>.pager-step{min-width:70px;height:30px}
  .grid{grid-template-columns:repeat(auto-fill,minmax(155px,1fr));gap:8px}
  .tc-img img{height:102px}
  .hero{padding:12px 12px 10px}
  .temple-head{grid-template-columns:minmax(0,1fr)}
  .foot-grid{grid-template-columns:1fr 1fr;gap:10px}
  .foot-grid>div:first-child{grid-column:1 / -1}
  .foot-bottom{gap:6px}
  .facts{grid-template-columns:6.2rem minmax(0,1fr)}
}

/* ---------- 後台 ---------- */
.admin-body{background:var(--bg);padding-top:0}
.admin-wrap{max-width:1000px;margin:16px auto 40px;padding:0 14px}
.admin-card{background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:10px 14px;margin-bottom:10px;box-shadow:var(--shadow)}
.admin-card h2{font-size:1rem;margin:.3rem 0 .6rem}
label{display:block;font-size:.82rem;color:var(--ink-2);margin-bottom:.2rem;font-weight:600}
input[type=text],input[type=url],input[type=password],input[type=search],select,textarea{width:100%;padding:.45rem .6rem;border:1px solid var(--line);border-radius:7px;font-size:.88rem;font-family:inherit;background:#fff;color:var(--ink)}
input:focus,select:focus,textarea:focus{outline:none;border-color:rgba(179,64,30,.55)}
textarea{min-height:80px;resize:vertical}
.form-row{margin-bottom:.7rem}
.form-2{display:grid;grid-template-columns:1fr 1fr;gap:.7rem}
.form-3{display:grid;grid-template-columns:1fr 1fr 1fr;gap:.7rem}
.hint{font-size:.76rem;color:var(--ink-3);margin-top:.2rem}
.alert{padding:.5rem .8rem;border-radius:7px;margin-bottom:.8rem;font-size:.86rem;border:1px solid}
.alert.ok{background:#eef7f1;color:#1e5c3d;border-color:#bfe3d0}
.alert.err{background:#fdf1ef;color:#8a1c12;border-color:#f5c6c0}
.alert.info{background:#eef4fb;color:#1d4e79;border-color:#c6dcf3}
table.admin{width:100%;border-collapse:collapse;font-size:.86rem}
table.admin th,table.admin td{padding:.4rem .35rem;border-bottom:1px solid var(--line-2);text-align:left;vertical-align:top}
table.admin th{color:var(--ink-3);font-weight:600;font-size:.78rem}
@media (max-width:760px){.form-2,.form-3{grid-template-columns:1fr}.row{grid-template-columns:1fr}.row .side{text-align:left}}

/* 宮廟頁側欄與清單 */
.temple-side{min-width:0}
.plain-list{list-style:none;margin:0;padding:0;font-size:.86rem;line-height:1.7}
.plain-list li{padding:.18rem 0;border-bottom:1px solid var(--line-2);color:var(--ink-2)}
.plain-list li:last-child{border-bottom:0}
.plain-list a{font-weight:600}
.temple-side .panel:first-child{margin-top:0}
@media (max-width:980px){.temple-side{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:8px}}

/* 分類色票：紅=主祀／財神，青=已核對，金=文資 */
.sec-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:8px}
.section > p.small{color:var(--ink-3);font-size:.82rem;line-height:1.7}

/* ---------- 宮廟相片 ---------- */
.main-photo{position:relative;margin:0 0 7px;border-radius:8px;overflow:hidden;background:var(--bg-soft)}
.main-photo .photo-hero{margin:0;border-radius:0;display:block;width:100%}
.photo-source{position:absolute;right:8px;bottom:8px;background:rgba(255,255,255,.92);color:var(--ink-3);border:1px solid var(--line-2);border-radius:999px;padding:.14rem .55rem;font-size:.7rem;font-weight:600;letter-spacing:.02em;pointer-events:none;backdrop-filter:blur(4px)}

/* 縮圖：固定格線，每張同寬同高（不隨內容被壓縮） */
.gallery-thumbs{display:grid;grid-template-columns:repeat(6,1fr);gap:4px;margin:0 0 10px}
.gallery-thumbs a{display:block;padding:0;border:1px solid var(--line);border-radius:6px;overflow:hidden;background:var(--bg-soft);aspect-ratio:4/3;flex:0 0 auto;transition:border-color .15s,transform .15s}
.gallery-thumbs a:hover,.gallery-thumbs a:focus-visible{border-color:var(--brand);transform:translateY(-1px)}
.gallery-thumbs img{width:100%;height:100%;object-fit:cover;display:block}

/* 相片集：管理員可指定封面（前台直接換，不必進後台） */
.gallery-thumbs .gt-item{position:relative;min-width:0}
.gallery-thumbs .gt-item.is-cover a{border-color:var(--brand);box-shadow:0 0 0 1px var(--brand) inset}
/* 目前大圖正在顯示的那一格。跟「封面」是兩件事：
   封面 = 資料庫裡的地位（列表、分享預覽用），這裡 = 畫面上正在看哪張。 */
.gallery-thumbs a.is-active{border-color:var(--brand);box-shadow:0 0 0 2px var(--brand) inset}
.gallery-thumbs a.is-active::after{content:"";position:absolute;inset:0;border-radius:5px;background:rgba(179,64,30,.10);pointer-events:none}
.gallery-thumbs .gt-item a{position:relative}
.gt-badge{position:absolute;left:3px;top:3px;background:var(--brand);color:#fff;font-size:.58rem;font-weight:700;line-height:1;padding:2px 4px;border-radius:4px;letter-spacing:.02em;pointer-events:none}
.gt-form{margin:0}
.gt-form button{display:block;width:100%;margin-top:2px;padding:2px 0;font-size:.62rem;line-height:1.3;font-weight:700;color:var(--ink-2);background:var(--bg-soft);border:1px solid var(--line);border-radius:5px;cursor:pointer;transition:background .15s,color .15s,border-color .15s}
.gt-form button:hover,.gt-form button:focus-visible{background:var(--brand);border-color:var(--brand);color:#fff}
.gt-hint{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin:0 0 10px;font-size:.72rem}
.gt-reset{margin:0}
.gt-reset button{padding:1px 6px;font-size:.68rem;font-weight:700;color:var(--ink-2);background:transparent;border:1px solid var(--line);border-radius:5px;cursor:pointer}
.gt-reset button:hover{border-color:var(--brand);color:var(--brand)}
.gt-ok{color:#1f7a3d;font-weight:700}
.gt-err{color:#b3401e;font-weight:700}
/* 流水模式的說明。只在 ?review=1 出現，一般人不會看到。 */
.gt-flow{color:var(--brand-2);font-weight:600}
.gt-flow::before{content:"▸ ";opacity:.6}
/* 管理員看到的縮圖多了一行按鈕，格子給它一點高度 */
.gallery-thumbs.is-admin{grid-template-columns:repeat(4,1fr);gap:6px}

/* ---------- Google 評論 ---------- */
.rv-summary{display:flex;align-items:stretch;gap:12px;background:var(--bg-soft);border:1px solid var(--line-2);border-radius:8px;padding:9px 11px;margin:0 0 8px}
.rv-score-box{flex:0 0 auto;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1px;padding-right:12px;border-right:1px solid var(--line-2);min-width:74px}
.rv-score-box b{font-family:var(--serif);font-size:1.85rem;line-height:1;color:var(--navy);font-weight:600;letter-spacing:-.01em}
.rv-score-box .stars{color:#e79a12;font-size:.8rem;letter-spacing:.06em}
.rv-score-box small{color:var(--ink-3);font-size:.68rem;letter-spacing:.02em}
.rv-summary-text{flex:1 1 auto;min-width:0;display:flex;flex-direction:column;gap:3px;justify-content:center}
.rv-summary-text p{margin:0;font-size:.83rem;line-height:1.55;color:var(--ink-2)}
.rv-summary-text p b{color:var(--ink);font-weight:700}
.rv-summary-note{color:var(--ink-3)!important;font-size:.75rem!important}
.rv-all{align-self:flex-start;font-size:.78rem;font-weight:700;color:var(--brand);text-decoration:none;border-bottom:1px solid rgba(179,64,30,.28);padding-bottom:1px}
.rv-all:hover{border-bottom-color:var(--brand)}

.rv-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px}
.rv-item{background:#fff;border:1px solid var(--line-2);border-radius:8px;padding:8px 10px 9px}
.rv-head{display:flex;align-items:center;gap:8px}
.rv-avatar{position:relative;flex:0 0 auto;width:32px;height:32px;border-radius:50%;overflow:hidden;background:var(--navy);display:inline-flex;align-items:center;justify-content:center}
.rv-avatar-fallback{color:#fff;font-weight:700;font-size:.86rem;line-height:1}
.rv-avatar img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;border-radius:50%}
.rv-who{display:flex;flex-direction:column;gap:2px;min-width:0;line-height:1.35}
.rv-who b{color:var(--ink);font-size:.85rem;font-weight:700;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.rv-stars{display:flex;align-items:center;gap:6px;font-size:.72rem;color:var(--ink-3)}
.rv-stars .stars{color:#e79a12;font-size:.76rem;letter-spacing:.04em}
.rv-stars time{font-variant-numeric:tabular-nums}
.rv-text{margin:5px 0 0;color:var(--ink-2);font-size:.855rem;line-height:1.72;word-break:break-word;display:-webkit-box;-webkit-line-clamp:4;-webkit-box-orient:vertical;overflow:hidden}

@media (max-width:560px){
  .gallery-thumbs{grid-template-columns:repeat(4,1fr)}
  .rv-summary{flex-direction:column;gap:8px}
  .rv-score-box{flex-direction:row;justify-content:flex-start;gap:7px;padding:0 0 7px;border-right:0;border-bottom:1px solid var(--line-2);min-width:0}
  .rv-score-box b{font-size:1.5rem}
}

/* ---------- 文章收錄（後台） ---------- */
.at-table td{font-size:.84rem}
.at-table tr.at-gap{background:#fdf7f5}
.at-table tr.at-gap:hover{background:#fbf0ec}
.at-form{display:flex;flex-direction:column;gap:3px;margin:0}
.at-form select,.at-form input[type=text]{padding:.24rem .35rem;font-size:.78rem}
.at-form input[type=text]{width:100%}
.at-actions{display:flex;flex-wrap:wrap;gap:3px}
.at-actions button{padding:.16rem .45rem;font-size:.74rem;font-weight:600;border:1px solid var(--line);background:#fff;color:var(--ink-2);border-radius:5px;cursor:pointer;font-family:inherit}
.at-actions button:hover{border-color:var(--brand);color:var(--brand-2)}
.at-actions button[name=action][value=ignore]:hover{border-color:#c0392b;color:#a5281a}

/* 後台頂列顯示目前登入的站群帳號 */
.admin-who{font-size:.8rem;font-weight:700;color:var(--ink-2);margin-right:.5rem;white-space:nowrap;align-self:center}

/* 後台選單上的待辦數字（名冊待人工） */
.nav-badge{display:inline-block;margin-left:4px;padding:0 5px;border-radius:9px;background:var(--brand);color:#fff;font-size:.62rem;font-weight:700;line-height:1.5;vertical-align:middle}

/* 名冊擴充進度（後台） */
.ge-bar{height:9px;border-radius:5px;background:var(--bg-soft);border:1px solid var(--line-2);overflow:hidden}
.ge-bar>span{display:block;height:100%;background:linear-gradient(90deg,var(--brand),#d4703f);border-radius:5px 0 0 5px;transition:width .4s}
.ge-mini{display:inline-block;width:76px;height:6px;border-radius:4px;background:var(--bg-soft);border:1px solid var(--line-2);overflow:hidden;vertical-align:middle;margin-right:5px}
.ge-mini>span{display:block;height:100%;background:var(--brand)}
.admin .num{text-align:right;white-space:nowrap}

/* ---------- 宗教盛事 ---------- */
.stat-row{display:flex;flex-wrap:wrap;gap:6px;margin:10px 0 6px}
.stat{flex:1 1 120px;background:#fff;border:1px solid var(--line);border-radius:8px;padding:.5rem .65rem;display:flex;flex-direction:column;gap:1px;box-shadow:var(--shadow)}
.stat b{font-family:var(--serif);font-size:1.28rem;line-height:1.15;color:var(--brand-2);font-variant-numeric:tabular-nums}
.stat span{font-size:.74rem;color:var(--ink-3);font-weight:600}

.fc-search{display:flex;gap:6px;margin:10px 0 4px}
.fc-search input[type=search]{flex:1;min-width:0;padding:.42rem .7rem;border:1px solid var(--line);border-radius:7px;font-size:.88rem;font-family:inherit;background:#fff;color:var(--ink)}
.fc-search input[type=search]:focus{border-color:var(--brand);outline:none;box-shadow:0 0 0 2px var(--brand-soft)}

.fc-bucket{margin:16px 0 4px}
.fc-bucket-h{font-size:1rem;margin:0 0 .5rem;padding-left:8px;border-left:3px solid var(--brand);line-height:1.35}
.fc-bucket-h .muted{font-weight:600}

.festival-card{background:#fff;border:1px solid var(--line);border-radius:8px;padding:.6rem .7rem .55rem;box-shadow:var(--shadow);display:flex;flex-direction:column;gap:2px}
.festival-card:hover{border-color:var(--brand-line)}
.fc-head{display:flex;flex-wrap:wrap;gap:4px;margin-bottom:2px}
.festival-card h3{font-size:.95rem;margin:0;line-height:1.4}
.festival-card h3 a{color:var(--ink)}
.festival-card h3 a:hover{color:var(--brand-2);text-decoration:none}
.festival-card .meta{margin:1px 0 0;font-size:.75rem;color:var(--ink-3);line-height:1.5}
.fc-next{margin:5px 0 0;display:flex;align-items:baseline;gap:.25rem;font-size:.78rem;color:var(--ink-2);line-height:1.4}
.fc-next.muted{font-size:.76rem}
.fc-year{font-family:var(--serif);font-size:1.32rem;font-weight:600;color:var(--brand);line-height:1;font-variant-numeric:tabular-nums}
.fc-excerpt{margin:4px 0 0;font-size:.78rem;line-height:1.62;color:var(--ink-3);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}

/* 單頁重點表 */
.facts{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:6px;margin:10px 0 4px}
.fact{background:#fff;border:1px solid var(--line);border-radius:8px;padding:.5rem .65rem;display:flex;flex-direction:column;gap:1px;box-shadow:var(--shadow)}
.fact-k{font-size:.7rem;font-weight:700;letter-spacing:.06em;color:var(--ink-3)}
.fact-v{font-size:.98rem;font-weight:700;color:var(--ink);line-height:1.35}
.fact-n{font-size:.73rem;color:var(--ink-3);line-height:1.5}

.reason-list{margin:0 0 .6rem;padding-left:1.25rem;font-size:.88rem;line-height:1.8;color:var(--ink-2)}
.reason-list li{margin-bottom:.25rem}
.ceremony-list{margin:0 0 .7rem;padding:0;list-style:none;counter-reset:cer}
.ceremony-list>li{position:relative;padding:0 0 .55rem 1.75rem;counter-increment:cer;border-left:1px solid var(--line-2);margin-left:.55rem}
.ceremony-list>li::before{content:counter(cer);position:absolute;left:-0.55rem;top:.15rem;width:1.1rem;height:1.1rem;border-radius:50%;background:var(--brand-soft);border:1px solid var(--brand-line);color:var(--brand-2);font-size:.66rem;font-weight:700;display:flex;align-items:center;justify-content:center}
.ceremony-list>li:last-child{border-left-color:transparent}
.ceremony-list h3{font-size:.9rem;margin:0 0 .15rem}
.ceremony-list p{font-size:.85rem;line-height:1.75;color:var(--ink-2);margin:0 0 .3rem}

.feature{margin-bottom:.7rem}
.feature h3{font-size:.9rem;margin:0 0 .15rem;color:var(--brand-2)}
.feature p{font-size:.86rem;line-height:1.78}
.fc-figure{margin:.35rem 0 .6rem}
.fc-figure img{border-radius:6px;border:1px solid var(--line-2);max-height:280px;object-fit:cover;width:auto}
.fc-figure figcaption{font-size:.72rem;color:var(--ink-3);margin-top:2px}

.kv-table{width:100%;border-collapse:collapse;font-size:.84rem;margin-bottom:.5rem}
.kv-table th,.kv-table td{text-align:left;padding:.32rem .45rem;border-bottom:1px solid var(--line-2)}
.kv-table th{font-size:.74rem;letter-spacing:.04em;color:var(--ink-3);font-weight:700;background:var(--bg-soft)}
.kv-table tr:last-child td{border-bottom:0}

.source-list{list-style:none;margin:0 0 .5rem;padding:0;display:flex;flex-direction:column;gap:4px}
.source-list li{display:flex;flex-wrap:wrap;gap:.35rem;align-items:baseline;font-size:.85rem}
.source-list a{font-weight:600}

.festival-detail h1{margin-bottom:.25rem}
.festival-detail header{margin-bottom:.6rem}
.festival-detail header .badge{margin-right:4px}

@media (max-width:560px){
  .stat{flex:1 1 calc(50% - 6px)}
  .fc-figure img{max-height:200px}
}

/* 分組標題右側的「看全部」：不限於 .section-head 時也要有樣式 */
.fc-bucket-h .more{margin-left:auto;font-size:.78rem;font-weight:600;white-space:nowrap}
.fc-bucket-h{display:flex;align-items:baseline;gap:.4rem}

/* ---------- 神明聖誕（農曆） ---------- */
.sd-now{display:flex;flex-wrap:wrap;gap:8px;margin:10px 0 6px}
.sd-now-today,.sd-now-next{flex:1 1 300px;min-width:0;background:#fff;border:1px solid var(--line);
  border-radius:var(--radius);padding:.55rem .8rem;display:flex;flex-wrap:wrap;align-items:baseline;
  gap:.4rem;box-shadow:var(--shadow)}
.sd-now-today b{font-family:var(--serif);font-size:1.12rem;color:var(--brand-2);letter-spacing:.02em}
.sd-now-next{background:var(--brand-soft);border-color:var(--brand-line)}
.sd-now-next b{font-family:var(--serif);font-size:1.05rem;color:var(--brand-2)}
.sd-now-next a{font-weight:700;color:var(--brand-2)}
.sd-count{margin-left:auto;background:var(--brand);color:#fff;border-radius:999px;
  padding:.1rem .55rem;font-size:.75rem;font-weight:700;white-space:nowrap}

.sd-soon{display:grid;grid-template-columns:repeat(auto-fill,minmax(148px,1fr));gap:6px}
.sd-soon-card{display:flex;flex-direction:column;gap:1px;background:#fff;border:1px solid var(--line);
  border-radius:8px;padding:.48rem .62rem;box-shadow:var(--shadow);color:var(--ink)}
.sd-soon-card:hover{border-color:var(--brand-line);text-decoration:none;background:var(--brand-soft)}
.sd-soon-day{font-family:var(--serif);font-size:1.18rem;font-weight:600;color:var(--brand-2);line-height:1.15}
.sd-soon-day em{font-style:normal;font-size:.76rem;color:var(--ink-3);font-family:var(--sans);font-weight:600}
.sd-soon-name{font-weight:700;font-size:.86rem;line-height:1.35}
.sd-soon-lunar{font-size:.76rem;color:var(--ink-3)}
.sd-soon-gap{font-size:.74rem;color:var(--gold);font-weight:700}

.sd-month{margin:14px 0 2px}
.sd-mh{font-size:.95rem;margin:0 0 .35rem;padding-left:8px;border-left:3px solid var(--brand);
  display:flex;align-items:baseline;gap:.45rem;line-height:1.35}
.sd-list{list-style:none;margin:0;padding:0;background:#fff;border:1px solid var(--line);
  border-radius:var(--radius);overflow:hidden;box-shadow:var(--shadow)}
.sd-row{display:grid;grid-template-columns:4.6rem minmax(0,1fr) auto 7.4rem;
  align-items:center;gap:.5rem;padding:.42rem .8rem;border-top:1px solid var(--line-2);font-size:.88rem}
.sd-row:first-child{border-top:0}
.sd-row:hover{background:var(--bg-soft)}
.sd-row-soon{background:#fffdf8}
.sd-day{font-family:var(--serif);font-size:.9rem;color:var(--ink-2);letter-spacing:.02em;white-space:nowrap}
.sd-name{display:flex;align-items:center;gap:.4rem;min-width:0}
.sd-name>a{font-weight:700;color:var(--ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.sd-tag{font-size:.72rem;font-weight:700;color:var(--ink-3);background:var(--bg-soft);
  border:1px solid var(--line-2);border-radius:999px;padding:.02rem .45rem;white-space:nowrap}
.sd-tag.on{color:var(--brand-2);background:var(--brand-soft);border-color:var(--brand-line)}
.sd-temples{font-size:.75rem;color:var(--ink-3);white-space:nowrap}
.sd-solar{text-align:right;font-size:.84rem;color:var(--ink-2);white-space:nowrap}
.sd-solar em{font-style:normal;font-size:.74rem}

.sd-var{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:8px}
.sd-var-item{background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:.55rem .75rem}
.sd-var-name{font-weight:700;font-size:.92rem}
.sd-var-item p{margin:.3rem 0 0;font-size:.82rem;line-height:1.68;color:var(--ink-3)}

@media (max-width:640px){
  .sd-row{grid-template-columns:3.4rem minmax(0,1fr) 5.4rem;gap:.35rem;padding:.45rem .6rem}
  .sd-temples{display:none}
  .sd-name{gap:.3rem}
  .sd-tag{font-size:.68rem;padding:0 .35rem}
  .sd-solar{font-size:.8rem}
}

/* ---------- 神明頁的聖誕區塊 ---------- */
.dd-list{display:flex;flex-direction:column;gap:6px}
.dd-item{background:#fff;border:1px solid var(--line);border-radius:var(--radius);
  padding:.5rem .75rem;box-shadow:var(--shadow)}
.dd-head{display:flex;flex-wrap:wrap;align-items:baseline;gap:.45rem}
.dd-lunar{font-family:var(--serif);font-size:1.06rem;font-weight:600;color:var(--brand-2);letter-spacing:.02em}
.dd-next{font-size:.84rem;color:var(--ink-2);font-weight:600}
.dd-next em{font-style:normal;color:var(--gold);font-weight:700;font-size:.78rem}
.dd-note{margin:.3rem 0 0;font-size:.84rem;line-height:1.7;color:var(--ink-2)}
.dd-src{display:inline-block;margin-top:.15rem;font-size:.74rem;color:var(--ink-3)}
.sd-sub{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem;margin:0 0 4px}

/* ---------- 行事曆 ---------- */
.cal-bar{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem;margin:10px 0 8px}
.cal-years{display:flex;gap:2px;background:#fff;border:1px solid var(--line);border-radius:8px;padding:2px}
.cal-years a{padding:.22rem .62rem;border-radius:6px;font-size:.86rem;font-weight:700;color:var(--ink-3)}
.cal-years a:hover{background:var(--bg-soft);text-decoration:none}
.cal-years a.on{background:var(--brand);color:#fff}
.cal-bar .btn{margin-left:auto}

.cal-month{margin:12px 0 0}
.cal-mh{display:flex;align-items:baseline;gap:.5rem;font-size:1rem;margin:0 0 .35rem;
  padding-left:8px;border-left:3px solid var(--brand);font-family:var(--serif);letter-spacing:.04em}
.cal-list{list-style:none;margin:0;padding:0;background:#fff;border:1px solid var(--line);
  border-radius:var(--radius);overflow:hidden;box-shadow:var(--shadow)}
.cal-row{display:grid;grid-template-columns:3.1rem minmax(0,1fr) 6.2rem 3.1rem;align-items:center;
  gap:.55rem;padding:.42rem .7rem;border-top:1px solid var(--line-soft)}
.cal-row:first-child{border-top:0}
.cal-row:hover{background:var(--bg-soft)}
.cal-date{font-family:var(--serif);font-size:1.02rem;font-weight:600;color:var(--brand-2);text-align:center;line-height:1.1}
.cal-date em{display:block;font-style:normal;font-size:.7rem;color:var(--ink-3);font-family:var(--sans);font-weight:600}
.cal-main{display:flex;flex-wrap:wrap;align-items:baseline;gap:.4rem;min-width:0}
.cal-main>a{font-weight:700;color:var(--ink)}
.cal-label{font-size:.72rem;font-weight:700;color:var(--brand-2);background:var(--brand-soft);
  border:1px solid var(--brand-line);border-radius:4px;padding:0 .32rem;white-space:nowrap}
.cal-meta{font-size:.76rem;color:var(--ink-3)}
.cal-lunar{font-size:.8rem;color:var(--ink-2);white-space:nowrap}
.cal-kind{font-size:.72rem;font-weight:700;text-align:center;color:var(--ink-2);
  background:var(--bg-soft);border-radius:4px;padding:.1rem 0}
.cal-k-birth .cal-kind{background:#eef6f0;color:#2c6b45}
.cal-k-festival .cal-kind{background:#fdf3e6;color:#8a5a12}
.cal-k-divine .cal-kind{background:#f1eefb;color:#54417f}
.cal-k-divine .cal-date{color:#54417f}
.cal-row.is-today{background:#fffdf3;box-shadow:inset 3px 0 0 var(--gold,#b8862b)}
.cal-row.is-over{opacity:.62}

.cal-past{margin:8px 0 0;border:1px dashed var(--line);border-radius:var(--radius);padding:.4rem .7rem;background:var(--bg-soft)}
.cal-past>summary{cursor:pointer;font-size:.85rem;font-weight:700;color:var(--ink-2)}
.cal-past[open]>summary{margin-bottom:.5rem}

.cal-pending{margin-top:20px}
.cal-undated{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:6px}
.cal-ud{display:flex;flex-direction:column;gap:1px;background:#fff;border:1px solid var(--line);
  border-radius:var(--radius);padding:.45rem .7rem;box-shadow:var(--shadow)}
.cal-ud:hover{border-color:var(--brand-line);background:var(--brand-soft);text-decoration:none}
.cal-ud-name{font-weight:700;font-size:.9rem;color:var(--ink)}
.cal-ud-known{font-size:.8rem;font-weight:700;color:#8a5a12}
.cal-ud-known.divine{color:#54417f}
.cal-ud-why{font-size:.76rem;color:var(--ink-3);line-height:1.55}
.cal-ud-meta{font-size:.72rem;color:var(--ink-3)}

@media(max-width:640px){
  .cal-row{grid-template-columns:2.6rem minmax(0,1fr) 3rem;gap:.4rem;padding:.42rem .55rem}
  .cal-lunar{display:none}
  .cal-main{gap:.3rem}
  .cal-meta{display:none}
}

/* ---------- 廟頁：位置與交通（三套件：停車／公車／YouBike） ----------
   排版順序＝讀者的思考順序：地圖 → 導航按鈕 → 現場細節（頁籤）。
   頁籤用 radio + CSS，不用 JS：沒有 JS 也切得動，鍵盤方向鍵是瀏覽器內建的，
   而且三個面板都留在 HTML 裡（display:none），搜尋引擎讀得到全部內容。 */

.tp .tp-mapbox{margin:.2rem 0 .5rem}
.tp .tp-map{height:300px;border:1px solid var(--line);border-radius:var(--radius);
  background:var(--bg-soft);z-index:0}
.tp .tp-addr{margin:.45rem 0 0;font-size:.82rem;color:var(--ink-2);line-height:1.6}
.tp .tp-addr a{color:var(--brand-2);font-weight:700}

.tp-acts{display:flex;flex-wrap:wrap;gap:.4rem;margin:.15rem 0 .6rem}
.tp-acts .btn.small{padding:.34rem .7rem;font-size:.82rem}

.tp-tabs{position:relative;border-top:1px solid var(--line-soft);margin-top:.2rem}
.tp-radio{position:absolute;width:1px;height:1px;opacity:0;pointer-events:none}
.tp-tabbar{display:flex;gap:.3rem;padding:.5rem 0 .45rem;flex-wrap:wrap}
.tp-tab{display:inline-flex;align-items:center;gap:.32rem;cursor:pointer;
  padding:.28rem .6rem;border:1px solid var(--line);border-radius:999px;
  background:#fff;font-size:.82rem;font-weight:700;color:var(--ink-2);line-height:1.2}
.tp-tab em{font-style:normal;font-size:.7rem;font-weight:700;color:var(--ink-3);
  background:var(--bg-soft);border-radius:999px;padding:0 .34rem;min-width:1.2em;text-align:center}
.tp-panel{display:none}

/* 選到哪一個頁籤，就顯示哪一個面板 */
#tpt-park:checked ~ .tp-tabbar .tp-tab[for="tpt-park"],
#tpt-bus:checked ~ .tp-tabbar .tp-tab[for="tpt-bus"],
#tpt-bike:checked ~ .tp-tabbar .tp-tab[for="tpt-bike"]{
  background:var(--brand-soft);border-color:var(--brand-line);color:var(--brand-2)}
#tpt-park:checked ~ .tp-tabbar .tp-tab[for="tpt-park"] em,
#tpt-bus:checked ~ .tp-tabbar .tp-tab[for="tpt-bus"] em,
#tpt-bike:checked ~ .tp-tabbar .tp-tab[for="tpt-bike"] em{background:#fff;color:var(--brand-2)}
#tpt-park:checked ~ .tp-panel-park,
#tpt-bus:checked ~ .tp-panel-bus,
#tpt-bike:checked ~ .tp-panel-bike{display:block}
.tp-radio:focus-visible ~ .tp-tabbar .tp-tab{outline:2px solid var(--navy);outline-offset:2px}

.tp-note{margin:0 0 .35rem;font-size:.74rem;line-height:1.5;color:var(--ink-3)}
.tp-list{display:grid;gap:5px}

.tp-row{display:grid;grid-template-columns:minmax(0,1fr) auto auto auto;align-items:center;
  gap:.3rem .45rem;padding:.42rem .55rem;background:#fff;border:1px solid var(--line);
  border-radius:6px;transition:border-color .15s,background .15s}
.tp-row.is-active{border-color:var(--brand-line);background:var(--brand-soft)}
.tp-row-main{display:flex;flex-direction:column;gap:.1rem;min-width:0}
.tp-row-main b{font-size:.88rem;font-weight:700;color:var(--ink);overflow:hidden;
  text-overflow:ellipsis;white-space:nowrap}
.tp-meta{font-size:.75rem;color:var(--ink-3)}

.tp-bar{display:block;height:3px;border-radius:2px;background:var(--bg-soft);overflow:hidden;margin-top:.15rem}
.tp-bar i{display:block;height:100%;background:#3f7d5c;border-radius:2px}
.tp-bar i.tight{background:#c9761f}
.tp-bar i.full{background:#a83a22}

.tp-locate,.tp-go{font-size:.74rem;font-weight:700;border-radius:6px;padding:.2rem .45rem;
  white-space:nowrap;line-height:1.5}
.tp-locate{background:var(--bg-soft);border:1px solid var(--line);color:var(--ink-2);cursor:pointer;
  font-family:inherit}
.tp-locate:hover{background:#e6e6df;color:var(--ink)}
.tp-go{border:1px solid var(--line);color:var(--navy);background:#fff}
.tp-go:hover{background:var(--bg-soft);text-decoration:none}

.tp-live{justify-self:end;display:inline-flex;align-items:center;
  font-size:.74rem;font-weight:700;color:#2f6b4f;background:#eef6f1;border-radius:999px;
  padding:.1rem .5rem;white-space:nowrap;line-height:1.5}
.tp-live.tight{color:#8a5210;background:#fdf3e3}
.tp-live.full{color:#93331f;background:#fbeee9}

.tp-chips{display:flex;flex-wrap:wrap;gap:.22rem;margin-top:.15rem}
.tp-chip{font-size:.68rem;font-weight:700;color:var(--navy);background:#eef2f6;
  border-radius:4px;padding:0 .3rem;line-height:1.5}
.tp-chip.more{color:var(--ink-3);background:var(--bg-soft)}

.tp-etas{grid-column:1/-1;display:flex;flex-wrap:wrap;gap:.25rem}
.tp-eta{display:inline-flex;align-items:center;gap:.3rem;font-size:.72rem;
  background:var(--bg-soft);border-radius:5px;padding:.1rem .4rem;color:var(--ink-2)}
.tp-eta.soon{background:#eef6f1;color:#2f6b4f;font-weight:700}
.tp-eta.idle{opacity:.72}
.tp-eta-route{font-weight:700}
.tp-eta-time{font-variant-numeric:tabular-nums}
.tp-none{font-size:.72rem;color:var(--ink-3)}

.tp-pill{font-size:.72rem;font-weight:700;border-radius:999px;padding:.1rem .45rem;
  background:#eef6f1;color:#2f6b4f;white-space:nowrap;line-height:1.5}
.tp-pill small{display:block;font-weight:400;font-size:.62rem;color:var(--ink-3)}
.tp-pill.ret{background:#eef2f6;color:var(--navy)}
.tp-pill.zero{background:#fbeee9;color:#93331f}
.tp-pill.off{background:var(--bg-soft);color:var(--ink-3)}

.tp-empty{font-size:.82rem;line-height:1.7;color:var(--ink-2);background:var(--bg-soft);
  border-radius:6px;padding:.55rem .7rem;margin:.2rem 0 .5rem}

/* Leaflet 的圖示與小卡 */
.tpm-pin-wrap{background:none;border:0}
.tpm-pin{display:inline-flex;align-items:center;justify-content:center;min-width:24px;height:24px;
  padding:0 5px;border-radius:6px;font-size:.66rem;font-weight:800;color:#fff;
  box-shadow:0 1px 3px rgba(0,0,0,.35);border:1.5px solid #fff;line-height:1}
.tpm-pin.temple{background:var(--brand);font-size:.74rem;min-width:27px;height:27px}
.tpm-pin.park{background:#2b5c8a}
.tpm-pin.bus{background:#3f7d5c}
.tpm-pin.bike{background:#c9761f}
.tpm-pop{font-size:.8rem;line-height:1.45;min-width:0}
.tpm-pop b{display:block;font-size:.84rem}
.tpm-pop span{color:#5b6570;font-size:.75rem}
.tpm-legend{background:rgba(255,255,255,.94);border-radius:6px;padding:.28rem .45rem;
  box-shadow:0 1px 4px rgba(0,0,0,.18);display:flex;gap:.5rem;font-size:.7rem;color:#333}
.tpm-legend span{display:inline-flex;align-items:center;gap:.22rem;white-space:nowrap}
.tpm-legend .tpm-pin{min-width:18px;height:16px;font-size:.58rem;border-width:1px}
.leaflet-container{font-family:var(--sans)}

@media(max-width:760px){
  .tp .tp-map{height:240px}
  .tp-row{grid-template-columns:minmax(0,1fr) auto auto}
  .tp-go{grid-column:auto}
  .tp-acts .btn.small{flex:1 1 auto;text-align:center}
}
