:root{--bg:#f7f4ee;--card:#fff;--ink:#3a3530;--muted:#8a8178;--accent:#7a5c3e;--line:#e6dfd3}
*{box-sizing:border-box}
body{margin:0;background:var(--bg);color:var(--ink);font-family:"Noto Serif TC","PingFang TC","Microsoft JhengHei",serif;line-height:1.8;font-size:17px}
.top{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:.5rem;padding:.7rem 1.2rem;background:#fff;border-bottom:1px solid var(--line);position:sticky;top:0;z-index:5}
.brand{font-weight:bold;color:var(--accent);text-decoration:none}
nav a{margin-left:1rem;color:var(--ink);text-decoration:none}nav a:hover{color:var(--accent)}
.hero{text-align:center;padding:4rem 1rem 3rem;background:linear-gradient(#e9e1d3,#f7f4ee)}
.hero h1{margin:0 0 .5rem;font-size:clamp(1.6rem,5vw,2.5rem);letter-spacing:.1em}
.hero p{color:var(--muted);margin:0}
main{max-width:960px;margin:0 auto;padding:1.2rem}
h1,h2{color:var(--accent)}h2{border-bottom:1px solid var(--line);padding-bottom:.3rem;margin-top:2rem}
.card{background:var(--card);border:1px solid var(--line);border-radius:10px;padding:1rem 1.2rem;margin:.8rem 0}
.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:.8rem}.grid .card{margin:0}
.card h3{margin:0 0 .3rem;font-size:1.05rem}
.msg .body{white-space:pre-wrap;margin:0 0 .5rem}.meta,.muted{color:var(--muted);font-size:.9rem;margin:0}
.gallery{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:.8rem}
.gallery figure{margin:0;background:#fff;border:1px solid var(--line);border-radius:10px;overflow:hidden;padding:0}
.gallery img{width:100%;aspect-ratio:4/3;object-fit:cover;display:block;background:#eee}
.gallery figcaption{padding:.4rem .6rem;font-size:.9rem;color:var(--muted)}
.gallery .actions{padding:0 .6rem .6rem}
label{display:block;margin:.6rem 0}
input,textarea{display:block;width:100%;padding:.6rem;margin-top:.25rem;border:1px solid var(--line);border-radius:8px;font:inherit;background:#fffdf9}
.hp{position:absolute;left:-9999px;width:1px;height:1px}
.btn{display:inline-block;background:var(--accent);color:#fff;border:0;border-radius:8px;padding:.6rem 1.3rem;font:inherit;cursor:pointer;text-decoration:none}
.btn:disabled{opacity:.6}.btn.small{padding:.25rem .8rem;font-size:.9rem;margin-right:.4rem}
.btn.reject{background:#a08a6e}.btn.delete{background:#a94442}
.more{text-align:center}.count{color:var(--muted)}
.status.ok{color:#2e7d32}.status.err{color:#a94442}
.ts{margin:.6rem 0;min-height:65px}
.preview{max-width:240px;border-radius:8px;margin:.5rem 0}
details summary{cursor:pointer;color:var(--accent);font-weight:bold}
.tabs button{background:#fff;border:1px solid var(--line);border-radius:8px;padding:.4rem 1rem;font:inherit;margin:.2rem;cursor:pointer}.tabs .on{background:var(--accent);color:#fff}
footer{text-align:center;color:var(--muted);padding:2rem 1rem;font-size:.9rem}
.cover{display:block;max-width:min(360px,80%);max-height:420px;margin:0 auto 1.2rem;border-radius:12px;box-shadow:0 4px 18px rgba(0,0,0,.12);object-fit:cover}
[data-rich] p{margin:.4rem 0}
.editor label{font-weight:bold}.editor textarea{font-weight:normal}.hint{color:var(--muted);font-size:.85rem;font-weight:normal}
.edit-form{margin-top:.5rem}.edit-form textarea,.edit-form input{margin-bottom:.4rem}
[hidden]{display:none!important}
.mem-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:1rem}
.mem-card{display:block;background:#fff;border:1px solid var(--line);border-radius:12px;overflow:hidden;text-decoration:none;color:var(--ink);text-align:center;padding-bottom:.6rem}
.mem-card img,.mem-ph{width:100%;aspect-ratio:3/4;object-fit:cover;display:block;background:#e9e1d3}
.mem-ph{display:flex;align-items:center;justify-content:center;font-size:3rem;color:#b9a68c}
.mem-card h3{margin:.6rem .5rem 0;color:var(--accent)}.mem-card p{margin:0 .5rem}
.thumbs{display:flex;gap:.5rem;flex-wrap:wrap;margin:.3rem 0 .5rem}
.thumbs img{width:96px;height:96px;object-fit:cover;border-radius:8px;cursor:zoom-in;border:1px solid var(--line)}
.preview-list img{cursor:default}
.gallery img{cursor:zoom-in}
.lightbox{position:fixed;inset:0;background:rgba(0,0,0,.85);display:flex;align-items:center;justify-content:center;z-index:50;cursor:zoom-out}
.lightbox img{max-width:95vw;max-height:92vh;border-radius:6px}
.thumb-wrap{position:relative;display:inline-block}.thumb-wrap button{position:absolute;top:2px;right:2px;background:#a94442;color:#fff;border:0;border-radius:50%;width:24px;height:24px;cursor:pointer}
.switcher{display:flex;gap:.5rem;align-items:center;flex-wrap:wrap;margin:.5rem 0}.switcher select{padding:.4rem;font:inherit;border-radius:8px}
.badge{color:#fff;background:#a94442;border-radius:10px;padding:0 .4rem;font-size:.8rem;margin-left:.3rem}
.inline{display:flex;gap:.5rem;align-items:center}.inline input{width:auto}
.notice{max-width:760px;margin:1rem auto;padding:1rem 1.2rem;background:#fff8e6;border:2px solid #d9b26a;border-radius:12px;text-align:center;font-size:1.15rem}.notice strong{display:block;color:var(--accent);font-size:1.3rem}
.notice .map{margin-top:.6rem}
.ann-venue{font-size:1.15em;margin-top:.3rem}.ann-addr{color:#6b5d4f;font-size:.95em}.card p.ann-venue,.card p.ann-addr,.card p.ann-line{margin:.2rem 0}
.verse{max-width:640px;margin:1rem auto .6rem;padding:.4rem 1.4rem;font-family:"Noto Serif TC","Songti TC",serif;font-style:normal;font-size:1.12rem;line-height:2;color:#5b4a3a;border-left:3px solid #d9b26a;border-right:3px solid #d9b26a;letter-spacing:.04em}
.verse::before{content:"“";color:#d9b26a;font-size:1.6em;line-height:0;vertical-align:-.3em;margin-right:.15em}
@media(max-width:800px){.notice{margin:1rem}}
