/* ===== Seishin Dojo — brand tokens ===== */
:root{
  --sumi:#0B0B10;
  --sumi-2:#141419;
  --washi:#F4F1EA;
  --kiai:#E11D8F;
  --yoru:#2A1638;
  --yoru-2:#38204a;

  --font-display:'Heros Cn','Arial Narrow',sans-serif;
  --font-body:'Poppins','Liberation Sans',sans-serif;

  --container:1120px;
}

@font-face{
  font-family:'Heros Cn';
  src:url('assets/fonts/HerosCn-Regular.woff2') format('woff2');
  font-weight:400; font-style:normal; font-display:swap;
}
@font-face{
  font-family:'Heros Cn';
  src:url('assets/fonts/HerosCn-Bold.woff2') format('woff2');
  font-weight:700; font-style:normal; font-display:swap;
}
@font-face{
  font-family:'Poppins';
  src:url('assets/fonts/Poppins-Regular.woff2') format('woff2');
  font-weight:400; font-style:normal; font-display:swap;
}
@font-face{
  font-family:'Poppins';
  src:url('assets/fonts/Poppins-Medium.woff2') format('woff2');
  font-weight:500; font-style:normal; font-display:swap;
}
@font-face{
  font-family:'Poppins';
  src:url('assets/fonts/Poppins-Bold.woff2') format('woff2');
  font-weight:700; font-style:normal; font-display:swap;
}

*,*::before,*::after{ box-sizing:border-box; }
html{ scroll-behavior:smooth; }
body{
  margin:0;
  background:var(--sumi);
  color:var(--washi);
  font-family:var(--font-body);
  font-size:16px;
  line-height:1.5;
  -webkit-font-smoothing:antialiased;
}
img{ max-width:100%; display:block; }
a{ color:inherit; }
.wrap{
  max-width:var(--container);
  margin:0 auto;
  padding:0 24px;
}
h1,h2,h3{
  font-family:var(--font-display);
  font-weight:700;
  line-height:0.98;
  margin:0;
  text-transform:uppercase;
  letter-spacing:.005em;
}
.eyebrow{
  font-family:var(--font-body);
  font-weight:600;
  font-size:13px;
  letter-spacing:.06em;
  color:var(--washi);
  opacity:.55;
}
.accent{ color:var(--kiai); }

/* ===== Skip link / focus ===== */
.skip-link{
  position:absolute; left:-999px; top:0;
  background:var(--kiai); color:var(--washi);
  padding:10px 16px; z-index:200;
}
.skip-link:focus{ left:16px; top:16px; }
a:focus-visible, button:focus-visible, input:focus-visible, select:focus-visible, textarea:focus-visible{
  outline:2px solid var(--kiai);
  outline-offset:2px;
}

/* ===== Top bar (fed affiliation, quiet) ===== */
.topbar{
  padding:14px 0;
  border-bottom:1px solid rgba(244,241,234,.08);
}
.topbar .wrap{
  display:flex;
  align-items:center;
  justify-content:center;
  gap:10px;
  font-size:12px;
  font-weight:600;
  color:var(--washi);
  opacity:.55;
  text-align:center;
  flex-wrap:wrap;
}
.topbar img{ height:20px; width:auto; }

/* ===== Header / nav ===== */
.site-header{
  position:sticky; top:0; z-index:100;
  background:var(--sumi);
  border-bottom:1px solid rgba(244,241,234,.08);
}
.site-header .wrap{
  display:flex;
  align-items:center;
  justify-content:space-between;
  padding:14px 24px;
}
.brand{
  display:flex;
  align-items:center;
  gap:12px;
  font-family:var(--font-display);
  font-weight:700;
  font-size:20px;
  text-transform:uppercase;
  text-decoration:none;
}
.brand img{ height:44px; width:44px; border-radius:50%; }
nav.main-nav{
  display:flex;
  align-items:center;
  gap:32px;
}
nav.main-nav a{
  text-decoration:none;
  font-size:15px;
  font-weight:500;
  color:var(--washi);
  opacity:.75;
  transition:opacity .15s ease;
}
nav.main-nav a:hover{ opacity:1; }
.btn{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  font-family:var(--font-body);
  font-weight:700;
  font-size:15px;
  text-decoration:none;
  border:none;
  border-radius:6px;
  padding:13px 26px;
  cursor:pointer;
  transition:transform .15s ease, background .15s ease;
}
.btn:hover{ transform:translateY(-1px); }
.btn-primary{
  background:var(--kiai);
  color:var(--washi);
}
.btn-primary:hover{ background:#c81a7e; }
.btn-ghost{
  background:transparent;
  color:var(--washi);
  border:1px solid rgba(244,241,234,.3);
}
.nav-cta{ display:none; }
@media(min-width:860px){ .nav-cta{ display:inline-flex; } }

.menu-toggle{
  display:inline-flex;
  background:none; border:none; color:var(--washi);
  font-size:26px; cursor:pointer; padding:4px 8px;
}
@media(min-width:860px){ .menu-toggle{ display:none; } }
@media(max-width:859px){
  .brand, .menu-toggle{ position:relative; z-index:160; }
  nav.main-nav{
    position:fixed;
    top:0; right:0; bottom:0; left:0;
    z-index:150;
    background:var(--sumi);
    flex-direction:column;
    align-items:flex-start;
    padding:28px 24px 32px 24px;
    gap:22px;
    overflow-y:auto;
    transform:translateX(100%);
    transition:transform .25s ease;
  }
  nav.main-nav.open{ transform:translateX(0); }
  nav.main-nav a{ font-size:20px; }
  nav.main-nav .btn{ margin-top:12px; width:100%; }
}

/* ===== Hero ===== */
.hero{
  position:relative;
  overflow:hidden;
  padding:64px 0 72px 0;
  border-bottom:1px solid rgba(244,241,234,.08);
}
.hero .wrap{
  display:grid;
  grid-template-columns:1.1fr 0.9fr;
  gap:48px;
  align-items:center;
}
@media(max-width:900px){
  .hero .wrap{ grid-template-columns:1fr; }
  .hero .hero-media{ order:-1; max-width:280px; margin:0 auto; }
}
.hero h1{
  font-size:clamp(40px,6vw,68px);
}
.hero .lede{
  margin-top:20px;
  font-size:18px;
  font-weight:400;
  opacity:.8;
  max-width:46ch;
}
.hero .cta-row{
  display:flex;
  gap:14px;
  margin-top:32px;
  flex-wrap:wrap;
}
.hero-media{
  position:relative;
  display:flex;
  align-items:center;
  justify-content:center;
}
.hero-media img{
  width:100%;
  max-width:380px;
}
.hero-stamp{
  position:absolute;
  top:6%;
  right:6%;
  width:98px; height:98px;
  border:2px solid var(--kiai);
  border-radius:50%;
  display:flex; align-items:center; justify-content:center;
  text-align:center;
  transform:rotate(-14deg);
  background:var(--sumi);
}
.hero-stamp span{
  font-family:var(--font-display);
  font-weight:700;
  font-size:14px;
  color:var(--kiai);
  line-height:1.05;
  text-transform:uppercase;
}

/* ===== Trust strip ===== */
.trust{
  padding:28px 0;
  border-bottom:1px solid rgba(244,241,234,.08);
}
.trust .wrap{
  display:flex;
  flex-wrap:wrap;
  gap:0;
}
.trust-item{
  flex:1 1 200px;
  padding:8px 22px;
  border-left:1px solid rgba(244,241,234,.14);
  display:flex;
  align-items:baseline;
  gap:10px;
}
.trust-item:first-child{ border-left:none; padding-left:0; }
.trust-item .mark{ color:var(--kiai); font-weight:700; }
.trust-item .txt{ font-size:14.5px; font-weight:600; opacity:.85; }

/* ===== Section shared ===== */
section{ padding:76px 0; }
.section-head{
  margin-bottom:40px;
  max-width:56ch;
}
.section-head .eyebrow{ margin-bottom:10px; display:block; }
.section-head h2{ font-size:clamp(30px,4vw,44px); }

/* ===== Schedule ===== */
.schedule-section{
  border-top:1px solid rgba(244,241,234,.08);
  border-bottom:1px solid rgba(244,241,234,.08);
  background:
    radial-gradient(600px 300px at 85% 20%, rgba(225,29,142,.06), transparent 70%);
}
.age-groups{
  background:var(--washi);
  color:var(--sumi);
  border-radius:14px;
  overflow:hidden;
}
.age-row{
  display:grid;
  grid-template-columns:220px 1fr;
  gap:24px;
  padding:26px 32px;
  align-items:center;
}
.age-row + .age-row{ border-top:1px solid rgba(11,11,16,.1); }
.age-row .age-label{
  font-family:var(--font-display);
  font-weight:700;
  font-size:22px;
  text-transform:uppercase;
}
.age-row .time-list{
  display:flex;
  gap:36px;
  flex-wrap:wrap;
}
.age-row .time-item .d{
  font-size:12.5px;
  font-weight:600;
  opacity:.55;
  text-transform:uppercase;
  letter-spacing:.03em;
}
.age-row .time-item .t{
  margin-top:2px;
  font-size:20px;
  font-weight:700;
  font-variant-numeric:tabular-nums;
}
@media(max-width:640px){
  .age-row{ grid-template-columns:1fr; gap:12px; }
}

/* ===== Contacts ===== */
.contact-grid{
  display:grid;
  grid-template-columns:repeat(2,1fr);
  gap:20px;
}
@media(max-width:640px){ .contact-grid{ grid-template-columns:1fr; } }
.contact-card{
  background:var(--yoru);
  border-left:3px solid var(--kiai);
  border-radius:10px;
  padding:26px 28px;
}
.contact-card .role{
  font-size:13px;
  font-weight:700;
  letter-spacing:.06em;
  text-transform:uppercase;
  opacity:.6;
}
.contact-card .who{
  margin-top:8px;
  font-size:17px;
  font-weight:600;
}
.contact-card .phone{
  margin-top:12px;
  font-size:24px;
  font-weight:700;
}
.contact-card .phone a{ text-decoration:none; }
.contact-extra{
  margin-top:24px;
  display:flex;
  align-items:center;
  gap:16px;
  flex-wrap:wrap;
}
.qr-chip{
  background:var(--washi);
  border-radius:10px;
  padding:10px;
  flex:0 0 auto;
}
.qr-chip img{ width:84px; height:84px; }
.contact-extra .txt{ font-size:14.5px; opacity:.75; max-width:38ch; }

/* ===== Booking form ===== */
.booking-section{
  background:var(--sumi-2);
  border-top:1px solid rgba(244,241,234,.08);
}
.booking-grid{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:56px;
  align-items:start;
}
@media(max-width:900px){ .booking-grid{ grid-template-columns:1fr; gap:36px; } }
.booking-form{
  background:var(--washi);
  color:var(--sumi);
  border-radius:14px;
  padding:36px;
}
.field{ margin-bottom:20px; }
.field label{
  display:block;
  font-size:13px;
  font-weight:600;
  margin-bottom:7px;
  opacity:.7;
}
.field input, .field select, .field textarea{
  width:100%;
  font-family:var(--font-body);
  font-size:15px;
  padding:13px 14px;
  border-radius:7px;
  border:1.5px solid rgba(11,11,16,.15);
  background:#fff;
  color:var(--sumi);
}
.field input:focus, .field select:focus, .field textarea:focus{
  border-color:var(--kiai);
  outline:none;
}
.field-row{ display:grid; grid-template-columns:1fr 1fr; gap:16px; }
@media(max-width:480px){ .field-row{ grid-template-columns:1fr; } }
.day-mode{
  display:flex;
  gap:8px;
  margin-bottom:10px;
  flex-wrap:wrap;
}
.day-option{
  display:inline-flex !important;
  align-items:center;
  gap:8px;
  margin:0;
  padding:10px 12px;
  border:1.5px solid rgba(11,11,16,.15);
  border-radius:999px;
  cursor:pointer;
  font-size:14px;
  font-weight:600;
  opacity:1;
  user-select:none;
  background:#fff;
}
.day-option input{
  width:auto;
  margin:0;
  accent-color:var(--kiai);
}
.day-option:has(input:checked){
  border-color:var(--kiai);
  background:rgba(200,16,46,.08);
}
.field input[type="date"]:disabled{
  opacity:.45;
  cursor:not-allowed;
  background:#f3f3f3;
}
.consent{
  display:flex;
  gap:10px;
  align-items:flex-start;
  font-size:13px;
  opacity:.7;
  margin-bottom:22px;
}
.consent input{ margin-top:3px; }
.submit-row{ display:flex; align-items:center; gap:16px; }
.form-msg{ font-size:14px; font-weight:600; }
.form-msg.ok{ color:#0a7a3d; }
.form-msg.err{ color:#c81a1a; }
.booking-side .li{
  display:flex;
  gap:14px;
  margin-bottom:22px;
}
.booking-side .num{
  font-family:var(--font-display);
  font-weight:700;
  font-size:26px;
  color:var(--kiai);
  flex:0 0 auto;
  width:38px;
}
.booking-side .li .t{ font-weight:600; margin-bottom:3px; }
.booking-side .li .d{ font-size:14px; opacity:.7; }

/* ===== Footer ===== */
footer{
  padding:40px 0 46px 0;
  border-top:1px solid rgba(244,241,234,.08);
}
footer .wrap{
  display:flex;
  align-items:center;
  justify-content:space-between;
  flex-wrap:wrap;
  gap:20px;
}
.foot-side{
  display:flex;
  align-items:center;
  gap:10px;
  opacity:.55;
  font-size:13px;
  font-weight:600;
}
.foot-side img.kanku{ height:20px; width:20px; }
.foot-side img.kanji{ height:30px; width:auto; }
