:root{
  --cream:#FBF4E6;
  --cream-deep:#F3E6CC;
  --ink:#3A2E22;
  --amber:#E0A11C;
  --amber-deep:#C57B12;
  --terra:#C75B39;
  --sage:#6E8B5B;
  --sage-deep:#57714a;
}
*{box-sizing:border-box;margin:0;padding:0;}
html,body{
  background:radial-gradient(140% 60% at 50% -5%, var(--cream) 0%, var(--cream) 45%, var(--cream-deep) 100%);
  font-family:'Quicksand',sans-serif;
  color:var(--ink);
  font-size:19px;
  line-height:1.6;
  -webkit-font-smoothing:antialiased;
}
.wrap{ max-width:1400px; margin:0 auto; padding:48px 36px 130px; }

/* ---------- masthead ---------- */
.masthead{ text-align:center; margin-bottom:24px; position:relative; }
.sun{ position:absolute; top:-110px; left:50%; transform:translateX(-50%); width:300px; height:300px; pointer-events:none; z-index:0; }
.hero-photo{
  width:140px; height:140px; border-radius:50%; object-fit:cover; object-position:50% 42%;
  border:6px solid #fff; box-shadow:0 0 0 4px var(--amber), 0 12px 30px rgba(58,46,34,.32);
  position:relative; z-index:2; margin:0 auto 16px; display:block; background:var(--cream-deep);
}
.kicker{ font-weight:700; letter-spacing:.4em; text-transform:uppercase; font-size:13px; color:var(--amber-deep); position:relative; z-index:2; }
.masthead h1{ font-family:'Playfair Display',serif; font-weight:700; font-size:50px; line-height:1.04; margin:8px 0 6px; position:relative; z-index:2; }
.masthead h1 em{ font-style:italic; color:var(--terra); }
.masthead .name{ font-weight:700; letter-spacing:.32em; text-transform:uppercase; font-size:15px; color:#6B5A45; position:relative; z-index:2; }

/* ---------- telos ribbon ---------- */
.telos{ display:flex; align-items:center; justify-content:center; gap:14px; flex-wrap:wrap; margin:0 auto 6px; max-width:760px; font-family:'Playfair Display',serif; font-style:italic; position:relative; z-index:2; }
.telos span{ font-size:22px; } .telos b{ color:var(--amber-deep); font-style:normal; font-weight:700; } .telos .arrow{ color:var(--terra); }

/* ---------- hero banner ---------- */
.hero-banner{
  position:relative; border:5px solid var(--ink); border-radius:26px; overflow:hidden;
  box-shadow:0 16px 36px rgba(58,46,34,.22); margin:18px 0 8px; background:var(--cream-deep);
}
.hero-banner img{ width:100%; display:block; aspect-ratio:3/2; object-fit:cover; }
.hero-banner .label{
  position:absolute; left:0; right:0; bottom:0; padding:40px 28px 22px;
  background:linear-gradient(to top, rgba(58,46,34,.78), rgba(58,46,34,0));
  color:#fff; font-family:'Playfair Display',serif; font-weight:700; font-size:38px;
}

/* ---------- section band ---------- */
.band{ display:flex; align-items:center; gap:18px; margin:46px 0 26px; }
.band .line{ flex:1; height:3px; background:var(--amber); border-radius:3px; opacity:.5; }
.band h2{ font-family:'Playfair Display',serif; font-weight:700; font-size:32px; white-space:nowrap; }
.speak{ border:2px solid var(--amber); cursor:pointer; flex-shrink:0; background:#fff; color:var(--amber-deep);
  border-radius:999px; padding:8px 16px; font-family:'Quicksand',sans-serif; font-weight:700; font-size:15px;
  box-shadow:0 4px 10px rgba(58,46,34,.14); transition:transform .12s ease, background .12s ease; }
.speak:hover{ transform:translateY(-2px); background:var(--cream); }

/* ---------- card grid (image-led, comic style) ---------- */
.grid{ display:grid; grid-template-columns:repeat(auto-fit, minmax(320px, 1fr)); gap:26px; }
.card{ background:#fff; border:5px solid var(--ink); border-radius:22px; overflow:hidden;
  box-shadow:0 14px 30px rgba(58,46,34,.20); display:flex; flex-direction:column; position:relative; }
.card .pic{ position:relative; background:var(--cream-deep); }
.card .pic img{ width:100%; aspect-ratio:1/1; object-fit:cover; display:block; }
.card .num{ position:absolute; top:14px; left:14px; width:50px; height:50px; border-radius:50%;
  background:var(--amber); color:#fff; border:4px solid #fff; display:grid; place-items:center;
  font-family:'Playfair Display',serif; font-weight:700; font-size:23px; box-shadow:0 4px 12px rgba(58,46,34,.35); }
.card .star-ribbon{ position:absolute; top:18px; right:-46px; transform:rotate(38deg);
  background:var(--terra); color:#fff; font-weight:700; font-size:12px; letter-spacing:.12em; text-transform:uppercase;
  padding:6px 56px; box-shadow:0 4px 10px rgba(58,46,34,.3); z-index:2; }
.card .cap{ background:var(--amber); color:#fff; padding:18px 20px; border-top:5px solid var(--ink); flex:1;
  display:flex; flex-direction:column; gap:8px; }
.card .cap h3{ font-family:'Playfair Display',serif; font-weight:700; font-size:23px; line-height:1.2; text-align:center; }
.card .cap p{ font-size:18px; line-height:1.5; text-align:center; }
.card .tag{ align-self:center; font-size:13px; font-weight:700; letter-spacing:.08em; text-transform:uppercase; background:rgba(255,255,255,.25); padding:3px 12px; border-radius:999px; }
/* colour variants */
.card.sage .num{ background:var(--sage); } .card.sage .cap{ background:var(--sage); }
.card.terra .num{ background:var(--terra); } .card.terra .cap{ background:var(--terra); }
.card.amberdeep .num{ background:var(--amber-deep); } .card.amberdeep .cap{ background:var(--amber-deep); }
/* steps ladder inside a caption */
.steps{ list-style:none; display:flex; flex-direction:column; gap:8px; width:100%; }
.steps li{ display:flex; align-items:flex-start; gap:10px; background:rgba(255,255,255,.18); border-radius:12px; padding:10px 12px; text-align:left; }
.steps .n{ flex-shrink:0; width:30px; height:30px; border-radius:50%; background:#fff; color:var(--ink); display:grid; place-items:center; font-family:'Playfair Display',serif; font-weight:700; font-size:16px; }

/* ---------- hub menu cards ---------- */
.menu{ display:grid; grid-template-columns:repeat(auto-fit,minmax(280px,1fr)); gap:26px; margin-top:30px; }
.menu a{ text-decoration:none; color:inherit; background:#fff; border:5px solid var(--ink); border-radius:22px;
  overflow:hidden; box-shadow:0 14px 30px rgba(58,46,34,.18); transition:transform .14s ease, box-shadow .14s ease; }
.menu a:hover{ transform:translateY(-5px); box-shadow:0 20px 40px rgba(58,46,34,.26); }
.menu .mp{ font-size:64px; text-align:center; padding:30px 0 8px; }
.menu .mt{ background:var(--amber); color:#fff; border-top:5px solid var(--ink); padding:16px; text-align:center;
  font-family:'Playfair Display',serif; font-weight:700; font-size:24px; }
.menu a:nth-child(2) .mt{ background:var(--sage); }
.menu a:nth-child(3) .mt{ background:var(--terra); }

.intro{ text-align:center; max-width:780px; margin:8px auto 0; font-size:21px; }

.footer{ text-align:center; margin-top:50px; font-family:'Playfair Display',serif; font-style:italic; font-size:21px; color:#6B5A45; line-height:1.5; }

/* ---------- bottom nav ---------- */
.bottomnav{ position:fixed; left:0; right:0; bottom:0; z-index:50; display:flex; justify-content:center; gap:8px;
  padding:10px 12px calc(10px + env(safe-area-inset-bottom)); background:rgba(251,244,230,.92);
  backdrop-filter:blur(8px); border-top:3px solid var(--amber); box-shadow:0 -6px 20px rgba(58,46,34,.14); }
.bottomnav a{ text-decoration:none; color:var(--ink); display:flex; flex-direction:column; align-items:center; gap:2px;
  padding:8px 18px; border-radius:16px; font-weight:700; font-size:14px; transition:background .12s ease; min-width:80px; }
.bottomnav a .ic{ font-size:26px; line-height:1; }
.bottomnav a:hover{ background:var(--cream-deep); }
.bottomnav a.active{ background:var(--amber); color:#fff; }

@media (max-width:560px){
  .masthead h1{ font-size:38px; } .hero-banner .label{ font-size:26px; }
  .bottomnav a{ padding:8px 12px; min-width:64px; font-size:12px; }
  .wrap{ padding:36px 18px 120px; }
}
