:root{
  --bg:#FFFFFF;
  --text:#241E33;
  --text-dim:#6B6480;
  --accent1:#FDBA74;
  --accent2:#C084FC;
  --accent3:#60A5FA;
  --border:#EFEAF7;
  --card:#FBF8FF;
}
*{margin:0;padding:0;box-sizing:border-box;}
html{scroll-behavior:smooth;}
body{
  background:var(--bg);color:var(--text);
  font-family:"Hiragino Sans","Yu Gothic UI","Noto Sans JP",sans-serif;
  line-height:1.8;
}
a{color:inherit;}
.wrap{max-width:960px;margin:0 auto;padding:0 24px;}

/* header (shared) */
header{
  position:sticky;top:0;z-index:10;
  background:rgba(255,255,255,0.85);
  backdrop-filter:blur(8px);
  border-bottom:1px solid var(--border);
}
header .wrap{display:flex;align-items:center;justify-content:space-between;height:72px;}
.logo{
  font-size:20px;font-weight:800;text-decoration:none;
  background:linear-gradient(90deg,var(--accent1),var(--accent2),var(--accent3));
  -webkit-background-clip:text;background-clip:text;color:transparent;
}
nav ul{display:flex;gap:28px;list-style:none;}
nav a{font-size:14px;color:var(--text-dim);text-decoration:none;transition:color .2s ease;}
nav a:hover,nav a:focus-visible{color:var(--accent2);}
header a.back{font-size:14px;color:var(--text-dim);text-decoration:none;}
header a.back:hover{color:var(--accent2);}

/* footer (shared) */
footer{
  border-top:1px solid var(--border);padding:36px 0;
  color:var(--text-dim);font-size:13px;
}
footer a{text-decoration:underline;text-decoration-color:var(--border);}
footer a:hover{color:var(--accent2);}

/* ---- top page ---- */
.hero{
  padding:120px 0 190px;text-align:center;position:relative;overflow:hidden;
  opacity:0;animation:fadeUp .9s ease forwards;
}
.hero::before{
  content:"";position:absolute;inset:-20% -10% auto -10%;height:420px;z-index:-1;
  background:radial-gradient(circle at 30% 30%, var(--accent1) 0%, transparent 55%),
             radial-gradient(circle at 70% 40%, var(--accent2) 0%, transparent 55%),
             radial-gradient(circle at 50% 70%, var(--accent3) 0%, transparent 55%);
  opacity:0.35;filter:blur(40px);
  animation:drift 14s ease-in-out infinite alternate;
}
.hero .eyebrow{
  display:inline-block;font-size:13px;color:#fff;letter-spacing:0.1em;
  margin-bottom:22px;padding:6px 16px;border-radius:999px;
  background:linear-gradient(90deg,var(--accent1),var(--accent2));
}
.hero h1{font-size:clamp(34px,6vw,58px);font-weight:800;letter-spacing:0.01em;margin-bottom:0;position:relative;z-index:1;}

.waves{
  position:absolute;left:0;right:0;bottom:0;height:170px;
  line-height:0;pointer-events:none;
}
.waves svg{display:block;width:100%;height:100%;}
.wave-back{animation:waveSway 13s ease-in-out infinite alternate;}
.wave-mid{animation:waveSway 10s ease-in-out infinite alternate-reverse;}

section{padding:80px 0;}
section h2{font-size:14px;color:var(--accent2);letter-spacing:0.14em;margin-bottom:16px;font-weight:700;}
section .lead{font-size:26px;font-weight:800;margin-bottom:20px;max-width:640px;}
section p.body{color:var(--text-dim);font-size:16px;max-width:620px;}

.card{
  margin-top:32px;background:var(--card);border:1px solid var(--border);
  border-radius:20px;padding:30px 34px;
}
.contact-addr{font-size:18px;font-weight:700;margin-bottom:18px;}
.btn{
  display:inline-block;
  background:linear-gradient(90deg,var(--accent1),var(--accent2),var(--accent3));
  color:#fff;font-weight:700;font-size:15px;
  padding:14px 30px;border-radius:999px;text-decoration:none;
  transition:transform .2s ease, box-shadow .2s ease;
}
.btn:hover,.btn:focus-visible{
  transform:translateY(-2px);
  box-shadow:0 10px 28px rgba(192,132,252,0.35);
}

.reveal{opacity:0;transform:translateY(16px);animation:fadeUp .8s ease forwards;animation-delay:.1s;}

footer .footer-row{
  display:flex;justify-content:space-between;flex-wrap:wrap;gap:12px;
}

@keyframes fadeUp{from{opacity:0;transform:translateY(16px);}to{opacity:1;transform:translateY(0);}}
@keyframes drift{from{transform:translateY(0) scale(1);}to{transform:translateY(20px) scale(1.05);}}
@keyframes waveSway{from{transform:translateX(-16px);}to{transform:translateX(16px);}}

/* ---- privacy policy page ---- */
main.policy{padding:64px 0 96px;max-width:760px;margin:0 auto;}
main.policy h1{font-size:32px;margin-bottom:12px;font-weight:800;}
main.policy .updated{color:var(--text-dim);font-size:14px;margin-bottom:48px;}
main.policy h2{font-size:18px;color:var(--accent2);margin:40px 0 12px;font-weight:700;}
main.policy p{color:var(--text-dim);font-size:15.5px;margin-bottom:14px;}
main.policy ul{color:var(--text-dim);font-size:15.5px;margin:0 0 14px 22px;}
main.policy li{margin-bottom:6px;}
main.policy strong{color:var(--text);}
main.policy a{color:var(--accent2);}

@media (max-width:640px){
  nav ul{gap:16px;}
  .hero{padding:90px 0 130px;}
  .waves{height:110px;}
  section{padding:56px 0;}
  .card{padding:24px;}
}
