:root{
  --teal:#128395;         /* rings / lines */
  --teal-deep:#0c6675;    /* top fill */
  --teal-bright:#17a7bd;  /* vivid accent */
  --ink:#12212a;          /* near-black */
  --paper:#f7f5f0;
  --paper-ring:#e6e1d6;
  --muted:rgba(18,33,42,.6);
  --line:rgba(18,33,42,.14);
  --disp:"Oswald",Impact,sans-serif;
  --sans:"Instrument Sans",-apple-system,sans-serif;
}
*{margin:0;padding:0;box-sizing:border-box}
html{scroll-behavior:smooth}
body{
  font-family:var(--sans);color:var(--ink);
  background:var(--paper);
  min-height:100vh;line-height:1.6;-webkit-font-smoothing:antialiased;overflow-x:hidden;
}

/* ---- Seigaiha (Japanese wave-scale) pattern ---- */
/* Line-art wave tiles are in seigaiha-teal.svg / seigaiha-paper.svg.
   To make the waves thinner/thicker, edit stroke-width in those files. */
.seigaiha{background-repeat:repeat;background-size:110px 55px}
.seigaiha--teal{background-color:#0c6675;background-image:url("seigaiha-teal.svg")}
.seigaiha--paper{background-color:#f7f5f0;background-image:url("seigaiha-paper.svg")}

/* ---- Top hero band ---- */
.hero{
  position:relative;text-align:center;color:#fff;
  padding:clamp(2.4rem,7vw,4.5rem) 1.5rem clamp(5rem,10vw,7rem);
  overflow:hidden;
}
.hero .logo{width:clamp(84px,12vw,116px);height:auto;
  filter:drop-shadow(0 6px 20px rgba(0,0,0,.25));
  opacity:0;animation:rise .8s .05s ease forwards}
.kicker{
  margin-top:1.1rem;font-family:var(--disp);font-weight:500;
  font-size:clamp(.72rem,1.6vw,.85rem);letter-spacing:.4em;text-transform:uppercase;
  color:rgba(255,255,255,.85);
  opacity:0;animation:rise .8s .18s ease forwards}

.poster-title{
  margin-top:1.4rem;font-family:var(--disp);text-transform:uppercase;
  line-height:.86;letter-spacing:.01em;
  display:flex;flex-direction:column;align-items:center;
}
.poster-title .line{display:block;opacity:0;animation:rise .8s ease forwards}
.line.outline{
  font-weight:500;font-size:clamp(2.6rem,11vw,6.4rem);
  color:transparent;-webkit-text-stroke:2px rgba(255,255,255,.92);
  animation-delay:.3s}
.line.solid{
  font-weight:700;font-size:clamp(3.4rem,15vw,8.6rem);color:#fff;
  animation-delay:.42s}

.hero-sub{
  max-width:40ch;margin:1.6rem auto 0;font-size:clamp(1rem,1.6vw,1.12rem);
  color:rgba(255,255,255,.9);
  opacity:0;animation:rise .8s .55s ease forwards}

.actions{display:flex;flex-wrap:wrap;gap:.7rem;justify-content:center;margin-top:2rem;
  opacity:0;animation:rise .8s .68s ease forwards}
.btn{
  font-family:var(--disp);font-weight:500;font-size:.9rem;letter-spacing:.09em;text-transform:uppercase;
  padding:.75rem 1.5rem;border-radius:3px;text-decoration:none;cursor:pointer;
  border:2px solid transparent;display:inline-flex;align-items:center;gap:.5rem;
  transition:transform .2s ease, background .2s ease, color .2s ease, border-color .2s ease}
.btn svg{width:15px;height:15px;flex:none}
.btn-solid{background:#fff;color:var(--teal-deep)}
.btn-solid:hover{transform:translateY(-2px);background:var(--paper)}
.btn-outline{background:transparent;color:#fff;border-color:rgba(255,255,255,.7)}
.btn-outline:hover{transform:translateY(-2px);background:rgba(255,255,255,.12);border-color:#fff}

/* ---- Content ---- */
.content{max-width:860px;margin:0 auto;padding:clamp(1.5rem,4vw,2.5rem) clamp(1.3rem,5vw,2.5rem) 3rem}

.section-head{text-align:center;margin:1rem 0 2.4rem}
.section-head h2{font-family:var(--disp);font-weight:700;text-transform:uppercase;
  font-size:clamp(1.8rem,5vw,2.8rem);letter-spacing:.02em;line-height:1}
.section-head h2 em{font-style:normal;font-weight:300;color:transparent;
  -webkit-text-stroke:1.5px var(--ink)}
.section-head .divider{width:54px;height:3px;background:var(--teal-bright);margin:1rem auto 0}

.group-label{font-family:var(--disp);font-size:.78rem;letter-spacing:.26em;text-transform:uppercase;
  color:var(--teal);font-weight:600;margin:0 0 1rem}
.group-label.coming{margin-top:2.6rem}

/* Weekly rhythm */
.rhythm{list-style:none;border-top:2px solid var(--line)}
.rhythm li{
  display:grid;grid-template-columns:150px 1fr auto;align-items:baseline;gap:1.2rem;
  padding:1.1rem .3rem;border-bottom:1px solid var(--line)}
.rhythm .day{font-family:var(--disp);font-weight:600;text-transform:uppercase;letter-spacing:.04em;
  font-size:1.15rem;color:var(--teal-bright)}
.rhythm .name{font-size:1.1rem;font-weight:500}
.rhythm .time{font-family:var(--disp);font-weight:500;font-size:1rem;color:var(--muted);
  white-space:nowrap;text-align:right;letter-spacing:.03em}
@media (max-width:600px){
  .rhythm li{grid-template-columns:1fr auto;row-gap:.3rem}
  .rhythm .day{grid-column:1/-1}
  /* halve the outlined-text stroke on mobile */
  .line.outline{-webkit-text-stroke-width:1px}
  .section-head h2 em{-webkit-text-stroke-width:.75px}
}

/* Coming-up cards */
.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:1rem}
.card{
  background:#fff;border:1px solid var(--line);border-top:4px solid var(--teal-bright);
  padding:1.6rem 1.5rem;min-height:168px;display:flex;flex-direction:column;
  transition:transform .25s ease, box-shadow .25s ease}
.card:hover{transform:translateY(-3px);box-shadow:0 16px 30px -18px rgba(12,45,55,.5)}
.card .when{font-family:var(--disp);font-weight:600;font-size:.8rem;letter-spacing:.1em;
  text-transform:uppercase;color:var(--teal-bright);margin-bottom:.7rem}
.card h3{font-family:var(--disp);font-weight:600;text-transform:uppercase;
  font-size:1.35rem;line-height:1.05;letter-spacing:.01em;margin-bottom:.5rem}
.card p{font-size:.92rem;color:var(--muted);margin-top:auto}
.card .book{margin-top:.9rem;font-family:var(--disp);font-weight:500;text-transform:uppercase;
  letter-spacing:.06em;font-size:.82rem;color:var(--teal);text-decoration:none;
  display:inline-flex;align-items:center;gap:.4rem}
.card .book:hover{color:var(--teal-deep)}
.card .book svg{width:14px;height:14px;flex:none}

/* Footer */
footer{margin-top:3.5rem;padding:3rem 1rem 1rem;text-align:center;
  display:flex;flex-direction:column;align-items:center;
  border-top:1px solid var(--line);position:relative}
footer::before{content:"";position:absolute;top:-2px;left:50%;transform:translateX(-50%);
  width:56px;height:3px;background:var(--teal-bright)}
.foot-logo{width:132px;height:auto;margin-bottom:1.3rem;opacity:.9}
.foot-name{font-family:var(--disp);font-weight:600;text-transform:uppercase;letter-spacing:.06em;
  font-size:1.2rem}
.foot-meta{color:var(--muted);font-size:.85rem;margin-top:.3rem}
.foot-email{margin-top:.5rem}
.foot-email a{color:var(--teal);font-family:var(--disp);letter-spacing:.05em;font-size:.9rem;
  text-decoration:none;border-bottom:1px solid transparent;transition:border-color .2s,color .2s}
.foot-email a:hover{color:var(--teal-deep);border-color:currentColor}
.foot-links{margin-top:1.5rem;display:flex;gap:0;justify-content:center;flex-wrap:wrap;align-items:center}
.foot-links a{font-family:var(--disp);text-transform:uppercase;letter-spacing:.09em;
  color:var(--muted);font-size:.8rem;text-decoration:none;transition:color .2s;padding:0 1.1rem}
.foot-links a:not(:last-child){border-right:1px solid var(--line)}
.foot-links a:hover{color:var(--teal-bright)}
.foot-copy{margin-top:1.8rem;color:var(--muted);opacity:.7;font-size:.72rem;letter-spacing:.03em}

@keyframes rise{from{opacity:0;transform:translateY(16px)}to{opacity:1;transform:none}}
@media (prefers-reduced-motion:reduce){
  *{animation:none!important}
  .logo,.kicker,.poster-title .line,.hero-sub,.actions{opacity:1}
}
