:root{
  --bg:#f6f5f3;
  --card:#ffffff;
  --ink:#1c1c1c;
  --muted:#6b6b6b;
  --line:#e7e4df;
  --accent:#2d6cdf;

  --sep:#efece7;
  --sep-light:#f4f2ee;
}

*{box-sizing:border-box}
html,body{margin:0;padding:0}
body{
  font-family:system-ui,-apple-system,"Segoe UI",Roboto,Arial,sans-serif;
  background:var(--bg); color:var(--ink); line-height:1.6;
}

.wrap{max-width:960px;margin:0 auto;padding:32px 16px 56px}

/* HERO portrait */
.hero{
  position:relative; border-radius:16px; overflow:hidden;
  border:1px solid var(--line); background:var(--card);
  margin:0 0 18px 0; min-height:240px;
}
.hero img{ width:100%; height:360px; object-fit:cover; display:block; }
.hero.hero-empty{ display:flex; align-items:center; justify-content:center; height:180px; }
.hero-meta{
  position:relative; padding:12px 16px; background:var(--card); border-top:1px solid var(--line);
}
.hero-name{ font-size:22px; font-weight:700; letter-spacing:.2px; }
.hero-dates{ color:var(--muted); margin-top:2px; }

/* Cards & notice */
.card{
  background:var(--card);
  border:1px solid var(--line);
  border-radius:14px;
  padding:18px;
  margin:16px 0;
}
.notice p{ margin:0 0 10px }
.notice{ margin-bottom: 28px; } /* extra breathing room under notice */

/* Section separators */
.section-sep{ height:22px; margin:10px 0 14px; background:var(--sep); border-radius:10px; }
.section-sep.light{ background:var(--sep-light); }

/* Forms minimal */
.stack>*{display:block;width:100%;margin:8px 0}
input[type="text"],textarea{
  width:100%;border:1px solid var(--line);border-radius:10px;
  padding:10px 12px;font-size:16px;background:#fbfbfb
}
textarea{resize:vertical}
button{
  display:inline-block;background:var(--accent);color:#fff;border:none;
  padding:10px 16px;border-radius:10px;font-weight:600;cursor:pointer
}
button:hover{opacity:.93}
button.ghost{
  background:transparent; color:var(--accent); border:1px solid var(--accent);
}
.help,.muted{color:var(--muted);font-size:13px}

/* Messages */
.messages{margin:10px 0}
.msg{padding:10px 12px;border-radius:10px;border:1px solid var(--line);background:#fff;margin:8px 0}
.msg.ok{background:#e9f8ef;border-color:#c7edd3;color:#135c30}
.msg.error{background:#fdecec;border-color:#f4c7c7;color:#7a1c1c}

/* Guestbook */
.guestbook-card{ padding-top:12px; }
.guestbook{list-style:none;padding:0;margin:12px 0 0}
.entry{padding:12px;border:1px solid var(--line);border-radius:10px;margin-bottom:10px;background:#fff}
.entry-head{display:flex;gap:10px;align-items:baseline;flex-wrap:wrap}
.entry-head .time{color:var(--muted);font-size:12px}

/* Upload form */
.upload{display:flex;gap:12px;flex-wrap:wrap;align-items:center}
label.file input[type="file"]{
  padding:10px;border:1px dashed #cfcfcf;border-radius:10px;background:#fbfbfb
}

/* Slideshow (auto) */
.slideshow{
  position:relative;overflow:hidden;border-radius:14px;border:1px solid var(--line);
  background:var(--card);height:clamp(260px,45vw,520px); margin-top:2px;
}
.slide{position:absolute;inset:0;opacity:0;transition:opacity .6s ease;
  display:flex;align-items:center;justify-content:center}
.slide.active{opacity:1}
.slide img{width:100%;height:100%;object-fit:cover}

.slideshow .nav{
  position:absolute;top:50%;transform:translateY(-50%);
  background:rgba(0,0,0,.45);color:#fff;border:none;width:40px;height:40px;
  border-radius:999px;cursor:pointer;line-height:40px;font-size:20px
}
.slideshow .prev{left:10px}
.slideshow .next{right:10px}
.slideshow .nav:hover{background:rgba(0,0,0,.6)}
.dots{display:flex;gap:8px;justify-content:center;margin:10px 0 0}
.dots .dot{
  width:10px;height:10px;border-radius:50%;border:1px solid var(--muted);
  background:transparent;cursor:pointer
}
.dots .dot.active{background:var(--muted)}

/* Videos grid (quiet at bottom) */
.gallery{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:14px}
.tile{
  background:var(--card);border:1px solid var(--line);border-radius:14px;
  padding:8px;aspect-ratio:1/1;display:flex;align-items:center;justify-content:center;overflow:hidden
}
.tile video{max-width:100%;max-height:100%;object-fit:cover;border-radius:8px}

footer{margin-top:24px;text-align:center;color:var(--muted);font-size:14px}