:root{
  --bg:#eceee6;
  --surface:#fbfbf7;
  --surface-2:#f3f5ee;
  --ink:#22271f;
  --muted:#5a6452;
  --pine:#2f4a36;
  --pine-deep:#233a29;
  --moss:#8c9b7e;
  --gold:#b8892f;
  --line:#d3d9cb;
  --sel:#e1e9da;
  --danger:#7b342f;
  --shadow:0 1px 2px rgba(28,38,24,.06),0 8px 24px rgba(28,38,24,.09);
  --shadow-strong:0 2px 5px rgba(20,30,18,.12),0 14px 34px rgba(20,30,18,.16);
  box-sizing:border-box;
}
*,*::before,*::after{box-sizing:inherit}
html{min-height:100%;scroll-behavior:smooth}
body{
  margin:0;min-height:100vh;background:var(--bg);color:var(--ink);
  font:400 16px/1.55 "Public Sans",system-ui,-apple-system,"Segoe UI",sans-serif;
  -webkit-text-size-adjust:100%;
}
button,input,textarea,select{font:inherit}
button{cursor:pointer}
a{color:inherit}
.topbar{
  position:sticky;top:0;z-index:20;display:flex;justify-content:space-between;align-items:center;
  min-height:68px;padding:10px max(18px,env(safe-area-inset-left));
  padding-right:max(18px,env(safe-area-inset-right));
  background:color-mix(in srgb,var(--bg) 94%,transparent);backdrop-filter:blur(14px);
  border-bottom:1px solid rgba(47,74,54,.09)
}
.brand{text-decoration:none;display:flex;flex-direction:column;line-height:1.05}
.brand-main{font:600 22px/1 "Newsreader",Georgia,serif;color:var(--pine)}
.brand-sub{font-size:10px;text-transform:uppercase;letter-spacing:.12em;color:var(--muted);margin-top:4px}
.account-btn{
  border:1px solid var(--line);background:var(--surface);color:var(--pine);border-radius:999px;
  padding:9px 13px;font-weight:600;box-shadow:0 1px 5px rgba(20,30,18,.05)
}
main{padding-bottom:92px;min-height:calc(100vh - 68px)}
.hero{
  position:relative;min-height:58vh;display:flex;align-items:flex-end;
  background:
    linear-gradient(180deg,rgba(14,18,13,.06) 18%,rgba(14,18,13,.78) 100%),
    url("images/hero.jpg") center/cover no-repeat,
    linear-gradient(165deg,#c7a45e,#526548 66%,#233126);
}
.hero-inner{width:min(100%,760px);padding:56px 20px 34px;margin:0 auto;color:#f7f4e9}
.eyebrow{font-size:12px;letter-spacing:.16em;text-transform:uppercase;font-weight:600;opacity:.83}
.hero h1,.display{
  font:500 clamp(36px,9vw,58px)/1.02 "Newsreader",Georgia,serif;
  letter-spacing:-.025em;margin:10px 0 14px
}
.hero .purpose{font:400 20px/1.38 "Newsreader",Georgia,serif;max-width:35rem;color:#eee8d9;margin:0}
.hero-actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:24px}
.btn{
  appearance:none;border:1px solid var(--line);background:var(--surface);color:var(--pine);
  border-radius:999px;padding:12px 17px;font-weight:600;box-shadow:var(--shadow);
  text-decoration:none;display:inline-flex;align-items:center;justify-content:center;gap:8px
}
.btn.primary{background:var(--pine);color:#f7f6ef;border-color:var(--pine-deep);box-shadow:var(--shadow-strong)}
.btn.soft{background:rgba(247,246,239,.14);color:#fff;border-color:rgba(255,255,255,.35);box-shadow:none}
.btn.danger{color:var(--danger)}
.btn:disabled{opacity:.48;cursor:not-allowed}
.wrap{width:min(100%,760px);margin:0 auto;padding:0 18px}
.section{padding:28px 0}
.section-title{
  font:500 30px/1.15 "Newsreader",Georgia,serif;margin:0 0 8px;color:var(--pine)
}
.section-help{color:var(--muted);margin:0 0 18px}
.sheet{
  background:var(--surface);border:1px solid rgba(47,74,54,.09);border-radius:22px;
  padding:20px;box-shadow:var(--shadow);margin:16px 0
}
.sheet.inset{background:var(--surface-2)}
.post-card{
  overflow:hidden;background:var(--surface);border-radius:24px;border:1px solid rgba(47,74,54,.08);
  box-shadow:var(--shadow);margin:18px 0
}
.post-photo{width:100%;aspect-ratio:16/9;object-fit:cover;display:block;background:#d7dccf}
.post-body{padding:20px}
.post-kicker{display:flex;flex-wrap:wrap;gap:7px;margin-bottom:12px}
.pill{
  display:inline-flex;border-radius:999px;background:var(--sel);color:var(--pine);
  padding:5px 9px;font-size:12px;font-weight:600
}
.post-title{font:500 30px/1.12 "Newsreader",Georgia,serif;margin:0 0 8px}
.post-date{font-size:13px;color:var(--muted)}
.post-text{white-space:pre-wrap;margin:18px 0 0;font-size:17px;line-height:1.68}
.post-link{display:inline-block;margin-top:16px;color:var(--pine);font-weight:600;text-underline-offset:4px}
.notice{
  border-left:4px solid var(--gold);background:#f5efdf;border-radius:12px;padding:13px 14px;
  color:#55492d;margin:16px 0
}
.notice.private{border-left-color:var(--pine);background:var(--sel);color:var(--ink)}
.preview-banner{
  background:#6b5125;color:#fff4dc;padding:10px 16px;text-align:center;font-size:13px
}
.grid{display:grid;gap:14px}
@media(min-width:680px){.grid.two{grid-template-columns:1fr 1fr}}
label{display:block;font-weight:600;margin:15px 0 7px}
input,textarea,select{
  width:100%;border:1px solid var(--line);background:var(--surface);color:var(--ink);
  border-radius:14px;padding:13px 14px;outline:none;box-shadow:0 1px 4px rgba(20,30,18,.04)
}
textarea{min-height:120px;resize:vertical;line-height:1.55}
input:focus,textarea:focus,select:focus{border-color:var(--pine);box-shadow:0 0 0 3px var(--sel)}
.form-row{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-top:16px}
.status-card{display:flex;gap:14px;align-items:flex-start}
.status-dot{width:12px;height:12px;border-radius:50%;margin-top:6px;background:var(--gold);flex:none}
.status-dot.approved{background:#4f7b59}
.status-dot.restricted{background:var(--danger)}
.member-row{
  display:grid;grid-template-columns:1fr;gap:10px;padding:15px 0;border-top:1px solid var(--line)
}
.member-row:first-child{border-top:0}
.member-meta{color:var(--muted);font-size:13px}
.member-actions{display:flex;gap:8px;flex-wrap:wrap}
.admin-tabs{display:flex;gap:8px;overflow:auto;padding-bottom:4px;margin-bottom:16px}
.admin-tabs button{white-space:nowrap}
.empty{padding:24px;text-align:center;color:var(--muted)}
.bottom-nav{
  position:fixed;z-index:30;left:0;right:0;bottom:0;display:flex;justify-content:center;
  background:color-mix(in srgb,var(--surface) 96%,transparent);backdrop-filter:blur(14px);
  border-top:1px solid var(--line);padding:7px max(10px,env(safe-area-inset-right)) calc(7px + env(safe-area-inset-bottom))
}
.bottom-nav a{
  min-width:72px;padding:8px 12px;text-align:center;text-decoration:none;color:var(--muted);
  border-radius:12px;font-size:13px;font-weight:600
}
.bottom-nav a.active{background:var(--sel);color:var(--pine)}
#toast{
  position:fixed;left:50%;bottom:92px;z-index:60;transform:translateX(-50%);
  max-width:calc(100vw - 28px);background:var(--ink);color:var(--bg);padding:10px 15px;
  border-radius:999px;font-size:14px;opacity:0;pointer-events:none;transition:opacity .18s
}
#toast.show{opacity:1}
.modal-backdrop{
  position:fixed;inset:0;z-index:50;background:rgba(15,20,14,.54);display:flex;
  align-items:flex-end;justify-content:center;padding:18px
}
.modal{
  width:min(100%,520px);max-height:88vh;overflow:auto;background:var(--bg);
  border-radius:24px;padding:22px;box-shadow:var(--shadow-strong)
}
.modal h2{font:500 30px/1.15 "Newsreader",Georgia,serif;margin:0 0 8px}
.modal .close{float:right;border:0;background:transparent;font-size:24px;color:var(--muted)}
.skeleton{height:18px;border-radius:8px;background:linear-gradient(90deg,#e2e6dc,#f3f5ef,#e2e6dc);background-size:200% 100%;animation:shimmer 1.2s infinite;margin:12px 0}
.skeleton.wide{height:36px;width:76%}.skeleton.short{width:44%}
@keyframes shimmer{to{background-position:-200% 0}}
.small{font-size:13px;color:var(--muted)}
code{font-family:ui-monospace,SFMono-Regular,Menlo,monospace}
