* {margin:0;padding:0;box-sizing:border-box;}
body {font-family:"Hiragino Kaku Gothic ProN","ヒラギノ角ゴ ProN W3",Meiryo,sans-serif;background:linear-gradient(to bottom,#fff5f9,#fdfafd);color:#333;line-height:2;font-size:19px;}
a {color:#aa0033;text-decoration:none;}
img {max-width:100%;height:auto;border-radius:15px;box-shadow:0 8px 25px rgba(0,0,0,0.12);}
.header {background:linear-gradient(135deg,#aa0033,#dd2266);color:white;padding:35px 15px;text-align:center;position:relative;overflow:hidden;}
.header::before {content:"";position:absolute;top:-50%;left:-50%;width:200%;height:200%;background:rgba(255,255,255,0.1);transform:rotate(30deg);animation:shine 8s infinite;}
@keyframes shine {0%{transform:translateX(-100%) translateY(-100%) rotate(30deg)}100%{transform:translateX(100%) translateY(100%) rotate(30deg)}}
.header h1 {font-size:38px;letter-spacing:3px;text-shadow:3px 3px 8px rgba(0,0,0,0.6);position:relative;z-index:2;}
.header p {font-size:26px;margin-top:12px;position:relative;z-index:2;}
.topimg {width:100%;border-bottom:10px solid #aa0033;box-shadow:0 10px 30px rgba(170,0,51,0.3);}

.section {padding:40px 20px;background:white;margin:25px auto;max-width:1100px;border-radius:20px;box-shadow:0 12px 35px rgba(0,0,0,0.12);position:relative;}
.section::after {content:"";position:absolute;bottom:0;left:50%;width:100px;height:5px;background:#aa0033;transform:translateX(-50%);border-radius:5px;}

h2 {font-size:36px;color:#aa0033;text-align:center;margin-bottom:35px;padding:15px;background:linear-gradient(90deg,transparent,#ffecf2,transparent);border-radius:50px;}

.price-table {width:100%;border-collapse:collapse;border:5px solid #aa0033;border-radius:18px;overflow:hidden;margin:35px 0;box-shadow:0 10px 30px rgba(170,0,51,0.2);}
.price-table th {background:linear-gradient(#aa0033,#cc0044);color:white;padding:22px;font-size:28px;}
.price-table td {padding:22px;font-size:26px;text-align:center;background:#fff9fc;}

.cast-item {background:white;border-radius:20px;overflow:hidden;margin:40px 0;box-shadow:0 12px 35px rgba(170,0,51,0.15);transition:0.3s;}
.cast-item:hover {transform:translateY(-8px);box-shadow:0 20px 40px rgba(170,0,51,0.25);}
.cast-img {width:100%;height:450px;object-fit:cover;}
.cast-name {font-size:34px;color:#aa0033;font-weight:bold;margin:20px 0 10px;text-align:center;}
.cast-text {font-size:22px;padding:0 25px 30px;text-align:center;}

.review-box {background:#f8f0ff;padding:30px;border-radius:20px;margin:30px 0;border:3px solid #ee99bb;box-shadow:0 8px 25px rgba(0,0,0,0.1);}
.review-box p {font-size:22px;margin:18px 0;line-height:2;}
.review-name {text-align:right;color:#aa0033;font-weight:bold;font-size:20px;}

.hotel-area {background:linear-gradient(135deg,#fff0f5,#f8f8ff);padding:35px;border-radius:20px;margin:40px 0;font-size:23px;line-height:2.4;border:4px dashed #dd6699;}

.tel-fixed {position:fixed;bottom:0;left:0;width:100%;background:rgba(170,0,51,0.98);text-align:center;padding:16px 0;z-index:9999;box-shadow:0 -5px 20px rgba(0,0,0,0.3);}
.tel-fixed a {color:white;font-weight:bold;display:block;letter-spacing:2px;}

@media(min-width:768px){
  .cast-grid {display:grid;grid-template-columns:repeat(2,1fr);gap:40px;}
}