:root {
  --gold: #B8860B;
  --gold-light: #F5EDD0;
  --gold-mid: #D4A017;
  --gold-pale: #FDF8EE;
  --burgundy: #6B1D2A;
  --burgundy-mid: #8B2535;
  --burgundy-light: #F0E4E7;
  --burgundy-dark: #3D0D16;
  --forest: #2D5016;
  --forest-light: #E8F0E0;
  --cream: #FAF7F0;
  --warm-white: #FFFEF9;
  --ink: #1C1208;
  --ink-mid: #4A3828;
  --ink-light: #7A6555;
  --border: rgba(184,134,11,0.2);
  --border-strong: rgba(107,29,42,0.25);
  --shadow: 0 2px 20px rgba(28,18,8,0.08);
}
* { margin:0; padding:0; box-sizing:border-box; }
body { font-family:'DM Sans',sans-serif; background:var(--cream); color:var(--ink); min-height:100vh; }
a { text-decoration:none; }
nav { background:var(--burgundy-dark); position:sticky; top:0; z-index:200; border-bottom:3px solid var(--gold); }
.nav-wrap { max-width:1280px; margin:0 auto; display:flex; align-items:stretch; justify-content:space-between; padding:0 1.5rem; flex-wrap:wrap; }
.nav-brand { display:flex; align-items:center; gap:.75rem; padding:.9rem 0; text-decoration:none; }
.nav-brand-icon { width:36px; height:36px; background:var(--gold); border-radius:50%; display:flex; align-items:center; justify-content:center; font-family:'Playfair Display',serif; font-size:1rem; color:var(--burgundy-dark); font-weight:700; flex-shrink:0; }
.nav-brand-text { font-family:'Playfair Display',serif; font-size:1.1rem; color:var(--gold-light); }
.nav-brand-text em { color:var(--gold); font-style:italic; }
.nav-links { display:flex; align-items:stretch; flex-wrap:wrap; }
.nav-a { font-size:.72rem; letter-spacing:.12em; text-transform:uppercase; color:rgba(245,237,208,.65); padding:0 .85rem; display:flex; align-items:center; border-bottom:3px solid transparent; margin-bottom:-3px; transition:all .2s; font-weight:500; text-decoration:none; }
.nav-a:hover,.nav-a.on { color:var(--gold); border-bottom-color:var(--gold); }
.nav-right { display:flex; align-items:center; gap:.5rem; }
.nav-user { font-size:.8rem; color:rgba(245,237,208,.7); padding:0 .5rem; }
.btn { font-family:'DM Sans',sans-serif; font-size:.73rem; letter-spacing:.1em; text-transform:uppercase; border-radius:2px; cursor:pointer; font-weight:500; transition:all .18s; border:1px solid; padding:.45rem 1rem; display:inline-block; }
.btn-ghost { background:transparent; color:var(--gold); border-color:rgba(184,134,11,.5); }
.btn-ghost:hover { background:rgba(184,134,11,.1); }
.btn-fill { background:var(--gold); color:var(--burgundy-dark); border-color:var(--gold); }
.btn-fill:hover { background:var(--gold-mid); }
.btn-burg { background:var(--burgundy); color:var(--gold-light); border-color:var(--burgundy); }
.btn-burg:hover { background:var(--burgundy-mid); }
.decor-stripe { height:5px; background:repeating-linear-gradient(90deg,var(--gold) 0,var(--gold) 10px,var(--burgundy) 10px,var(--burgundy) 20px,#8B5E0A 20px,#8B5E0A 25px,var(--burgundy) 25px,var(--burgundy) 35px); }
.section { max-width:1100px; margin:0 auto; padding:4rem 2rem; }
.sec-head { text-align:center; margin-bottom:3rem; }
.sec-eyebrow { font-size:.68rem; letter-spacing:.22em; text-transform:uppercase; color:var(--gold); margin-bottom:.6rem; display:flex; align-items:center; justify-content:center; gap:.75rem; }
.sec-eyebrow::before,.sec-eyebrow::after { content:'◆'; font-size:.4rem; opacity:.6; }
.sec-title { font-family:'Playfair Display',serif; font-size:clamp(1.8rem,3.5vw,2.8rem); color:var(--burgundy-dark); line-height:1.15; }
.sec-title em { color:var(--gold); font-style:italic; }
.hero { background:var(--burgundy-dark); padding:5rem 2rem 4rem; text-align:center; position:relative; overflow:hidden; }
.hero-bg { position:absolute; inset:0; opacity:.04; background-image:radial-gradient(circle,var(--gold) 1px,transparent 1px); background-size:30px 30px; pointer-events:none; }
.hero-pill { display:inline-flex; align-items:center; gap:.6rem; background:rgba(184,134,11,.12); border:1px solid rgba(184,134,11,.3); border-radius:2px; padding:.35rem 1rem; font-size:.7rem; letter-spacing:.18em; text-transform:uppercase; color:var(--gold); margin-bottom:1.5rem; }
.hero h1 { font-family:'Playfair Display',serif; font-size:clamp(2.8rem,6vw,5rem); color:var(--gold-light); line-height:1.05; margin-bottom:.5rem; position:relative; }
.hero h1 em { color:var(--gold); font-style:italic; }
.hero-sub { font-family:'Source Serif 4',serif; font-size:1.2rem; color:rgba(245,237,208,.6); font-style:italic; margin-bottom:2rem; }
.journey { display:inline-flex; align-items:center; gap:.6rem; flex-wrap:wrap; justify-content:center; margin-bottom:2rem; }
.j-stop { font-family:'Playfair Display',serif; font-size:.88rem; font-weight:700; color:var(--gold); background:rgba(184,134,11,.1); border:1px solid rgba(184,134,11,.2); padding:.3rem .7rem; border-radius:2px; }
.j-arr { color:rgba(184,134,11,.4); }
.hero-cta { display:flex; gap:1rem; justify-content:center; flex-wrap:wrap; }
.btn-hero { font-family:'DM Sans',sans-serif; font-size:.78rem; letter-spacing:.12em; text-transform:uppercase; padding:.8rem 2rem; border-radius:2px; cursor:pointer; font-weight:500; transition:all .2s; border:1px solid; text-decoration:none; display:inline-block; }
.btn-hp { background:var(--gold); color:var(--burgundy-dark); border-color:var(--gold); }
.btn-hs { background:transparent; color:var(--gold-light); border-color:rgba(245,237,208,.3); }
.stats-bar { background:var(--gold); display:flex; justify-content:center; flex-wrap:wrap; }
.stat { padding:1.1rem 2.5rem; text-align:center; border-right:1px solid rgba(107,29,42,.2); }
.stat:last-child { border-right:none; }
.stat-n { font-family:'Playfair Display',serif; font-size:2rem; color:var(--burgundy-dark); font-weight:700; line-height:1; }
.stat-l { font-size:.65rem; letter-spacing:.15em; text-transform:uppercase; color:var(--burgundy); margin-top:3px; }
.card { background:var(--warm-white); border:1px solid var(--border); border-radius:2px; box-shadow:var(--shadow); }
.heritage { background:linear-gradient(135deg,var(--forest) 0%,#1A3A0A 100%); padding:3rem 2rem; text-align:center; border-top:3px solid var(--gold); border-bottom:3px solid var(--gold); }
.heritage-inner { max-width:800px; margin:0 auto; }
.heritage-badge { display:inline-flex; align-items:center; gap:.5rem; background:rgba(184,134,11,.2); border:1px solid rgba(184,134,11,.4); padding:.3rem .85rem; border-radius:2px; font-size:.67rem; letter-spacing:.2em; text-transform:uppercase; color:var(--gold); margin-bottom:1.2rem; }
.heritage h2 { font-family:'Playfair Display',serif; font-size:2rem; color:var(--gold-light); margin-bottom:.75rem; }
.heritage p { font-family:'Source Serif 4',serif; font-size:1.05rem; color:rgba(245,237,208,.7); line-height:1.75; font-style:italic; }
.timeline { position:relative; }
.timeline::before { content:''; position:absolute; left:50%; top:0; bottom:0; width:2px; background:var(--border-strong); transform:translateX(-50%); }
.tl-item { display:grid; grid-template-columns:1fr 70px 1fr; gap:1.5rem; align-items:start; margin-bottom:3.5rem; }
.tl-content { background:var(--warm-white); border:1px solid var(--border); border-radius:2px; padding:1.5rem; box-shadow:var(--shadow); }
.tl-content.right { grid-column:3; }
.tl-content.left { grid-column:1; text-align:right; }
.tl-center { grid-column:2; display:flex; flex-direction:column; align-items:center; padding-top:1rem; gap:.4rem; }
.tl-dot { width:48px; height:48px; border-radius:50%; background:var(--burgundy-dark); border:3px solid var(--gold); display:flex; align-items:center; justify-content:center; font-size:1.3rem; }
.tl-year { font-family:'Playfair Display',serif; font-size:1.4rem; color:var(--gold); font-weight:700; }
.tl-place { font-size:.95rem; font-weight:500; color:var(--burgundy-dark); margin-bottom:.4rem; }
.tl-desc { font-size:.85rem; color:var(--ink-mid); line-height:1.7; }
.tl-tag { display:inline-block; font-size:.62rem; letter-spacing:.12em; text-transform:uppercase; background:var(--gold-light); color:var(--gold); padding:2px 8px; border-radius:2px; margin-bottom:.5rem; border:1px solid var(--border); }
.tree-wrap { background:var(--warm-white); border:1px solid var(--border); border-radius:2px; padding:2rem; overflow-x:auto; box-shadow:var(--shadow); }
.gen-label { font-size:.65rem; letter-spacing:.2em; text-transform:uppercase; color:var(--gold); padding:.3rem .75rem; border-left:3px solid var(--gold); background:var(--gold-light); display:inline-block; margin-bottom:1rem; }
.gen-row { display:flex; flex-wrap:wrap; gap:1rem; justify-content:center; align-items:flex-start; padding:.5rem 0; }
.tree-node { border:1.5px solid var(--border-strong); border-radius:2px; padding:.6rem .9rem; text-align:center; min-width:120px; background:var(--cream); transition:all .18s; position:relative; }
.tree-node:hover { background:var(--gold-light); border-color:var(--gold); }
.tree-node.root { background:var(--burgundy-dark); border-color:var(--gold); }
.tree-node.root .tn-name { color:var(--gold-light); }
.tree-node.root .tn-detail { color:var(--gold); }
.tree-node.notable { border-color:var(--gold); background:var(--gold-pale); }
.tn-flag { font-size:1.1rem; margin-bottom:2px; }
.tn-name { font-family:'Playfair Display',serif; font-size:.82rem; color:var(--burgundy-dark); font-weight:700; line-height:1.2; }
.tn-detail { font-size:.67rem; color:var(--ink-light); margin-top:2px; }
.tree-line-v { width:2px; height:25px; background:var(--border-strong); margin:.3rem auto; }
.couple-row { display:flex; align-items:center; justify-content:center; gap:.5rem; }
.couple-line { height:1.5px; width:35px; background:var(--gold); }
.couple-heart { color:var(--gold); font-size:.85rem; }
.add-btn { border:1.5px dashed var(--border-strong); background:transparent; border-radius:2px; padding:.6rem .75rem; font-size:.7rem; color:var(--ink-light); min-width:100px; font-family:'DM Sans',sans-serif; transition:all .18s; text-align:center; text-decoration:none; display:inline-block; }
.add-btn:hover { background:var(--gold-light); color:var(--gold); border-color:var(--gold); }
.feed { display:flex; flex-direction:column; gap:1.5rem; }
.post-card { background:var(--warm-white); border:1px solid var(--border); border-radius:2px; padding:1.5rem; box-shadow:var(--shadow); }
.post-header { display:flex; align-items:center; gap:.75rem; margin-bottom:1rem; }
.post-avatar { width:44px; height:44px; border-radius:50%; background:var(--burgundy); border:2px solid var(--gold); display:flex; align-items:center; justify-content:center; font-family:'Playfair Display',serif; font-size:.9rem; color:var(--gold-light); flex-shrink:0; }
.post-meta { flex:1; }
.post-author { font-weight:500; font-size:.9rem; color:var(--ink); }
.post-info { font-size:.75rem; color:var(--ink-light); margin-top:1px; }
.post-badge { display:inline-block; font-size:.6rem; letter-spacing:.1em; text-transform:uppercase; background:var(--gold-light); color:var(--gold); padding:2px 7px; border-radius:2px; border:1px solid var(--border); }
.post-title { font-family:'Playfair Display',serif; font-size:1.1rem; color:var(--burgundy-dark); margin-bottom:.5rem; }
.post-body { font-family:'Source Serif 4',serif; font-size:.92rem; color:var(--ink-mid); line-height:1.75; }
.post-footer { margin-top:1rem; padding-top:1rem; border-top:1px solid var(--border); display:flex; gap:1rem; align-items:center; }
.post-action { font-size:.75rem; color:var(--ink-light); cursor:pointer; background:none; border:none; font-family:'DM Sans',sans-serif; }
.post-action:hover { color:var(--gold); }
.announcement-card { background:var(--warm-white); border:2px solid var(--gold); border-radius:2px; padding:1.5rem; box-shadow:var(--shadow); }
.announce-type { font-size:.65rem; letter-spacing:.18em; text-transform:uppercase; color:var(--gold); margin-bottom:.5rem; }
.announce-title { font-family:'Playfair Display',serif; font-size:1.2rem; color:var(--burgundy-dark); margin-bottom:.4rem; }
.announce-body { font-size:.85rem; color:var(--ink-mid); line-height:1.65; }
.write-prompt { background:var(--gold-light); border:1px solid var(--border); border-radius:2px; padding:1.25rem 1.5rem; display:flex; align-items:center; justify-content:space-between; gap:1rem; flex-wrap:wrap; margin-bottom:1.5rem; }
.write-text { font-family:'Source Serif 4',serif; font-size:1rem; font-style:italic; color:var(--burgundy-dark); }
.cat-tabs { display:flex; gap:.5rem; flex-wrap:wrap; margin-bottom:1.5rem; }
.gallery-tab { font-size:.72rem; letter-spacing:.1em; text-transform:uppercase; padding:.4rem .9rem; border:1px solid var(--border-strong); border-radius:2px; cursor:pointer; color:var(--ink-mid); background:transparent; font-family:'DM Sans',sans-serif; transition:all .18s; text-decoration:none; display:inline-block; }
.gallery-tab.on { background:var(--burgundy-dark); color:var(--gold-light); border-color:var(--burgundy-dark); }
.gallery-grid { display:grid; grid-template-columns:repeat(auto-fill,minmax(160px,1fr)); gap:.75rem; }
.g-item { aspect-ratio:1; background:var(--gold-light); border:1px solid var(--border); border-radius:2px; display:flex; align-items:center; justify-content:center; overflow:hidden; cursor:pointer; }
.g-item img { width:100%; height:100%; object-fit:cover; }
.g-add { aspect-ratio:1; border:2px dashed var(--border-strong); background:transparent; border-radius:2px; display:flex; flex-direction:column; align-items:center; justify-content:center; cursor:pointer; gap:.4rem; transition:all .18s; font-family:'DM Sans',sans-serif; text-decoration:none; }
.g-add:hover { background:var(--gold-light); }
.notable-card { background:var(--warm-white); border:2px solid var(--gold); border-radius:2px; padding:2rem; box-shadow:var(--shadow); display:grid; grid-template-columns:100px 1fr; gap:1.5rem; align-items:start; }
.notable-avatar { width:100px; height:100px; border-radius:50%; background:var(--burgundy-dark); border:3px solid var(--gold); display:flex; align-items:center; justify-content:center; font-family:'Playfair Display',serif; font-size:2rem; color:var(--gold); }
.notable-name { font-family:'Playfair Display',serif; font-size:1.5rem; color:var(--burgundy-dark); margin-bottom:.3rem; }
.notable-sub { font-size:.85rem; color:var(--ink-light); margin-bottom:.75rem; }
.notable-body { font-family:'Source Serif 4',serif; font-size:.9rem; color:var(--ink-mid); line-height:1.75; margin-bottom:1rem; }
.notable-facts { display:flex; flex-wrap:wrap; gap:.5rem; }
.notable-fact { font-size:.72rem; background:var(--gold-light); color:var(--gold); padding:3px 10px; border-radius:2px; border:1px solid var(--border); }
.dna-card { background:var(--warm-white); border:2px solid var(--forest); border-radius:2px; padding:2rem; box-shadow:var(--shadow); }
.dna-header { display:flex; align-items:center; gap:1rem; margin-bottom:1rem; }
.dna-icon { width:56px; height:56px; border-radius:50%; background:var(--forest-light); border:2px solid var(--forest); display:flex; align-items:center; justify-content:center; font-size:1.5rem; flex-shrink:0; }
.dna-title { font-family:'Playfair Display',serif; font-size:1.4rem; color:var(--forest); }
.dna-sub { font-size:.83rem; color:var(--ink-mid); }
.dna-body { font-family:'Source Serif 4',serif; font-size:.9rem; color:var(--ink-mid); line-height:1.75; margin-bottom:1.25rem; }
.dna-link { display:inline-flex; align-items:center; gap:.5rem; background:var(--forest); color:var(--warm-white); padding:.65rem 1.25rem; border-radius:2px; font-size:.78rem; letter-spacing:.1em; text-transform:uppercase; transition:all .18s; font-weight:500; border:none; font-family:'DM Sans',sans-serif; text-decoration:none; }
.info-box { background:var(--warm-white); border:1px solid var(--border); border-radius:2px; padding:1.5rem; box-shadow:var(--shadow); }
.info-box-title { font-family:'Playfair Display',serif; font-size:1.1rem; color:var(--burgundy-dark); margin-bottom:.75rem; }
.info-box-body { font-size:.85rem; color:var(--ink-mid); line-height:1.7; }
.contact-pill { display:flex; align-items:center; gap:.75rem; background:var(--gold-light); border:1px solid var(--border); border-radius:2px; padding:.75rem 1rem; margin-top:1rem; }
.contact-pill-icon { font-size:1.25rem; }
.contact-pill-text { font-size:.83rem; color:var(--ink); }
.contact-pill-addr { font-size:.75rem; color:var(--gold); }
.form-card { background:var(--warm-white); border:1px solid var(--border); border-radius:2px; padding:2rem; box-shadow:var(--shadow); max-width:520px; margin:0 auto; }
.form-title { font-family:'Playfair Display',serif; font-size:1.6rem; color:var(--burgundy-dark); margin-bottom:.3rem; }
.form-sub { font-size:.83rem; color:var(--ink-mid); margin-bottom:1.5rem; }
.form-row { margin-bottom:1.1rem; }
.form-label { display:block; font-size:.7rem; letter-spacing:.1em; text-transform:uppercase; color:var(--ink-light); margin-bottom:.35rem; }
.form-input { width:100%; padding:.6rem .8rem; border:1px solid var(--border-strong); border-radius:2px; font-family:'DM Sans',sans-serif; font-size:.88rem; color:var(--ink); background:var(--cream); outline:none; transition:border-color .18s; }
.form-input:focus { border-color:var(--gold); }
.form-select { width:100%; padding:.6rem .8rem; border:1px solid var(--border-strong); border-radius:2px; font-family:'DM Sans',sans-serif; font-size:.88rem; color:var(--ink); background:var(--cream); outline:none; }
.form-textarea { width:100%; padding:.6rem .8rem; border:1px solid var(--border-strong); border-radius:2px; font-family:'Source Serif 4',serif; font-size:.92rem; color:var(--ink); background:var(--cream); outline:none; min-height:130px; resize:vertical; line-height:1.6; }
.form-textarea:focus { border-color:var(--gold); }
.btn-submit { width:100%; padding:.75rem; background:var(--burgundy-dark); color:var(--gold-light); border:none; border-radius:2px; font-family:'DM Sans',sans-serif; font-size:.78rem; letter-spacing:.12em; text-transform:uppercase; cursor:pointer; font-weight:500; transition:all .18s; margin-top:.5rem; }
.btn-submit:hover { background:var(--burgundy-mid); }
.form-switch { text-align:center; margin-top:1rem; font-size:.82rem; color:var(--ink-light); }
.form-link { color:var(--gold); text-decoration:none; }
.rules-box { background:var(--burgundy-light); border:1px solid var(--border-strong); border-radius:2px; padding:1rem 1.25rem; margin-bottom:1.25rem; }
.rules-title { font-size:.75rem; font-weight:500; color:var(--burgundy); margin-bottom:.5rem; text-transform:uppercase; }
.rules-list { font-size:.8rem; color:var(--ink-mid); line-height:1.75; padding-left:1rem; }
.alert-success { background:var(--forest-light); border:1px solid var(--forest); border-radius:2px; padding:1rem 1.25rem; color:var(--forest); font-size:.88rem; margin-bottom:1.5rem; line-height:1.6; }
.alert-error { background:var(--burgundy-light); border:1px solid var(--burgundy); border-radius:2px; padding:1rem 1.25rem; color:var(--burgundy); font-size:.88rem; margin-bottom:1.5rem; }
.alert-error ul { padding-left:1.25rem; }
.admin-tag { display:inline-flex; align-items:center; background:rgba(184,134,11,.15); border:1px solid var(--gold); border-radius:2px; font-size:.62rem; letter-spacing:.1em; text-transform:uppercase; color:var(--gold); padding:1px 6px; margin-left:.4rem; }
.admin-section { margin-bottom:2rem; }
.admin-section-title { font-family:'Playfair Display',serif; font-size:1.2rem; color:var(--burgundy-dark); margin-bottom:1rem; padding-bottom:.5rem; border-bottom:2px solid var(--gold); }
.admin-item { background:var(--warm-white); border:1px solid var(--border); border-radius:2px; padding:1.25rem; margin-bottom:.75rem; display:flex; gap:1rem; align-items:flex-start; justify-content:space-between; }
.admin-item-info { flex:1; font-size:.85rem; color:var(--ink-mid); line-height:1.7; }
.admin-item-actions { display:flex; gap:.5rem; flex-shrink:0; flex-wrap:wrap; }
footer { background:var(--burgundy-dark); color:rgba(245,237,208,.55); padding:2.5rem 2rem; border-top:3px solid var(--gold); margin-top:4rem; }
.footer-inner { max-width:1100px; margin:0 auto; display:grid; grid-template-columns:1fr 1fr 1fr; gap:2rem; }
.footer-brand { font-family:'Playfair Display',serif; font-size:1.1rem; color:var(--gold-light); margin-bottom:.5rem; }
.footer-brand em { color:var(--gold); font-style:italic; }
.footer-tagline { font-family:'Source Serif 4',serif; font-size:.82rem; font-style:italic; color:rgba(245,237,208,.45); line-height:1.6; }
.footer-head { font-size:.65rem; letter-spacing:.18em; text-transform:uppercase; color:var(--gold); margin-bottom:.6rem; }
.footer-link { font-size:.8rem; color:rgba(245,237,208,.55); display:block; margin-bottom:.3rem; text-decoration:none; }
.footer-link:hover { color:var(--gold); }
.footer-bottom { max-width:1100px; margin:1.5rem auto 0; padding-top:1.25rem; border-top:1px solid rgba(184,134,11,.2); font-size:.72rem; text-align:center; }
@media (max-width:768px) {
  .nav-links { display:none; }
  .tl-item { grid-template-columns:1fr; }
  .tl-content.left,.tl-content.right { grid-column:1; text-align:left; }
  .tl-center { grid-column:1; flex-direction:row; padding-top:0; }
  .timeline::before { display:none; }
  .notable-card { grid-template-columns:1fr; }
  .footer-inner { grid-template-columns:1fr; }
}
