/* ===========================================================================
   kichifu.com — site.css  ガーリーネオンY2K standalone (no Tailwind)
   =========================================================================== */

/* === 1. Design Tokens ===================================================== */
:root {
  --bg-0: #fff9fb;
  --bg-1: #fce7f3;
  --bg-2: #f9cfe7;
  --neon-pink: #ec4899;
  --neon-pink-hot: #db2777;
  --lavender: #c084fc;
  --lav-soft: #a855f7;
  --neon-lav: #e9d5ff;
  --text: #500724;
  --text-soft: #831843;
  --text-mute: #9d174d;
  --header-h: 74px;
}

/* === 2. Reset & Base ====================================================== */
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
html { scroll-behavior: smooth; }
body {
  font-family: 'M PLUS Rounded 1c', system-ui, sans-serif;
  background-color: var(--bg-0);
  color: var(--text);
  line-height: 1.6;
  -webkit-font-smoothing: antialiased;
}
body.menu-open,
body.reserve-open { overflow: hidden; }
img { display: block; max-width: 100%; height: auto; }
a { color: inherit; text-decoration: none; }
button { cursor: pointer; }

/* === 3. Typography Helpers ================================================ */
.font-script {
  font-family: 'Pacifico', cursive;
  font-weight: 400;
}
.neon-pink-glow {
  color: #fff;
  text-shadow:
    0 0 6px rgba(255,79,216,.9),
    0 0 16px rgba(255,79,216,.7),
    0 0 34px rgba(255,45,155,.55);
}
.neon-lav-glow {
  color: var(--lav-soft);
  text-shadow:
    0 0 6px rgba(255,143,214,.85),
    0 0 18px rgba(255,143,214,.55);
}
.holo-text {
  background: linear-gradient(100deg, var(--neon-pink) 0%, var(--lav-soft) 38%,
                                      var(--neon-pink) 70%, var(--lavender) 100%);
  background-size: 220% 100%;
  -webkit-background-clip: text;
  background-clip: text;
  color: transparent;
  animation: holo-shift 8s ease-in-out infinite;
}
.text-mute     { color: var(--text-mute); }
.text-soft     { color: var(--text-soft); }
.text-pink     { color: var(--neon-pink); }
.text-lav-soft { color: var(--lav-soft); }

/* === 4. Layout Helpers ==================================================== */
.wrap    { max-width: 1200px; margin: 0 auto; padding: 0 24px; }
.wrap-md { max-width:  860px; margin: 0 auto; padding: 0 24px; }
.wrap-lg { max-width: 1100px; margin: 0 auto; padding: 0 24px; }

/* === 5. Header ============================================================ */
.site-header {
  position: fixed;
  top: 0; left: 0; right: 0;
  z-index: 100;
  height: var(--header-h);
  background: rgba(255,255,255,.86);
  backdrop-filter: blur(20px);
  -webkit-backdrop-filter: blur(20px);
  border-bottom: 1px solid rgba(255,79,216,.35);
}
.site-header-inner {
  max-width: 1344px;
  margin: 0 auto;
  padding: 0 14px 0 6px;
  height: 100%;
  display: flex;
  align-items: center;
  gap: 8px;
}
.header-spacer { height: var(--header-h); }

/* brand */
.brand {
  display: flex;
  align-items: center;
  gap: 9px;
  flex-shrink: 0;
}
.brand-script {
  font-family: 'Pacifico', cursive;
  /* 3段ロゴの高さに合わせて大きく。狭い端末では自動縮小して横はみ出しを防ぐ */
  font-size: clamp(1.875rem, calc(45.7vw - 134.5px), 2.875rem);
  line-height: 1;
  /* Pacifico は line box 中心とインク中心が 0.0425em ズレる→ em 単位で光学補正し3段ブロックと中央揃え（フォントサイズ非依存） */
  transform: translateY(0.0425em);
  color: #fff;
  text-shadow:
    0 0 6px rgba(255,79,216,.9),
    0 0 16px rgba(255,79,216,.7),
    0 0 34px rgba(255,45,155,.55);
}
.brand-sub {
  display: flex;
  flex-direction: column;
  justify-content: center;
  line-height: 1.3;
  padding-left: 9px;
  border-left: 1px solid rgba(255,79,216,.40);
}
.brand-since { font-size: 10px; letter-spacing: .08em; color: var(--lav-soft); white-space: nowrap; }
.brand-genre { font-size: 10px; font-weight: 600; letter-spacing: .04em; color: var(--lavender); white-space: nowrap; }
.brand-catch {
  font-size: 11px;
  font-weight: 700;
  color: var(--neon-pink);
  white-space: nowrap;
  letter-spacing: .02em;
  text-shadow: 0 0 8px rgba(255,79,216,.55);
}
/* 極小端末（iPhone SE初代/5系・小型Android 320〜340px）のヘッダー横はみ出し救済 */
@media (max-width: 340px) {
  .brand-since, .brand-genre { font-size: 9px; }
  .reserve-hours, .reserve-time { display: none; }
}

/* desktop nav */
.site-nav {
  display: none;
  align-items: center;
  gap: 14px;
  margin-left: 18px;
  margin-right: auto;
}
.site-nav a {
  font-size: .875rem;
  font-weight: 600;
  color: var(--text-soft);
  transition: color .2s;
  white-space: nowrap;
}
.site-nav a:hover { color: var(--neon-pink); }

/* tel */
.header-tel { display: none; text-align: right; line-height: 1.35; margin-right: 4px; }
.header-reception { font-size: 11px; color: var(--text-mute); }
.header-tel-num { font-size: .875rem; font-weight: 700; color: #fff; transition: color .2s; }
.header-tel-num:hover { color: var(--neon-pink); }

/* reserve button */
.reserve-stack {
  flex-shrink: 0;
  margin-left: auto;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 2px;
}
.reserve-hours {
  font-size: 10px;
  font-weight: 600;
  color: var(--lav-soft);
  text-align: center;
  white-space: nowrap;
  letter-spacing: .04em;
  line-height: 1.15;
}
.reserve-time {
  font-size: 11px;
  font-weight: 700;
  color: var(--text-soft);
  text-align: center;
  white-space: nowrap;
  letter-spacing: .02em;
  line-height: 1.15;
}
.reserve-btn {
  flex-shrink: 0;
  padding: 2px 13px;
  border-radius: 9999px;
  font-size: .75rem;
  line-height: 1.25;
  font-weight: 700;
  color: #fff;
  white-space: nowrap;
  border: none;
  background: linear-gradient(180deg, rgba(255,255,255,.16), rgba(255,79,216,.18));
  border: 1px solid rgba(255,79,216,.45);
  box-shadow: 0 6px 22px -8px rgba(255,45,155,.6), inset 0 1px 0 rgba(255,255,255,.35);
  transition: transform .2s, box-shadow .2s;
}
.reserve-btn:hover {
  transform: translateY(-1px);
  box-shadow: 0 10px 28px -8px rgba(255,45,155,.8), inset 0 1px 0 rgba(255,255,255,.5);
}

/* hamburger */
.burger {
  flex-shrink: 0;
  width: 44px;
  height: 44px;
  /* 右端の余白を詰めてギリギリに寄せる（inner の右 padding 14px に -8px 食い込ませ実質 6px）。1024px未満のみ表示なのでモバイルヘッダー限定 */
  margin-right: -8px;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 5px;
  border-radius: 12px;
  border: 1px solid rgba(255,79,216,.35);
  background: none;
}
.burger span {
  display: block;
  width: 22px;
  height: 2px;
  background: var(--lav-soft);
  border-radius: 2px;
  transition: transform .25s ease, opacity .25s ease;
}

@media (min-width: 1024px) {
  .brand-sub { display: flex; }
}
@media (min-width: 1200px) {
  .site-nav { display: flex; }
  .burger    { display: none; }
  .reserve-stack { margin-left: 0; }
}
@media (min-width: 1360px) {
  .header-tel { display: block; }
}

/* === 6. Footer ============================================================ */
.site-footer { background: var(--bg-0); padding: 0 0 32px; }
.footer-top-divider {
  height: 1px;
  border: none;
  margin: 48px 0 48px;
  background: linear-gradient(90deg, transparent 5%, var(--neon-pink) 35%, var(--lavender) 65%, transparent 95%);
  box-shadow: 0 0 8px rgba(255,79,216,.9), 0 0 20px rgba(255,79,216,.5), 0 0 40px rgba(255,143,214,.3);
}
.footer-inner {
  max-width: 860px;
  margin: 0 auto;
  padding: 0 24px;
  text-align: center;
}
.footer-brand {
  font-family: 'Pacifico', cursive;
  font-size: 2.25rem;
  margin-bottom: 4px;
}
.footer-sub { font-size: .875rem; color: var(--text-mute); margin-bottom: 24px; }
.footer-cta {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 12px;
  margin-bottom: 6px;
}
.footer-cta-tel,
.footer-cta-line {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  width: 100%;
  max-width: 360px;
  padding: 14px 28px;
  border-radius: 9999px;
  font-size: 1.0625rem;
  font-weight: 700;
  color: #fff;
}
.footer-cta-line {
  background: #06c755;
  transition: filter .2s;
}
.footer-cta-line:hover { filter: brightness(1.12); }
.footer-cta-note {
  font-size: .8125rem;
  color: var(--text-soft);
  text-align: center;
  line-height: 1.5;
  margin: 4px 0 28px;
}
.footer-cta-note-em {
  color: var(--neon-pink);
  font-weight: 700;
  text-shadow: 0 0 8px rgba(255,79,216,.5);
}
.footer-reception { font-size: .75rem; color: var(--text-mute); margin-bottom: 32px; }
.footer-links {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 6px 20px;
  margin-bottom: 40px;
}
.footer-links a { font-size: .875rem; color: var(--text-soft); transition: color .2s; }
.footer-links a:hover { color: var(--neon-pink); }
.footer-copy { font-size: 11px; color: rgba(198,176,230,.7); }

/* holo divider */
.holo-divider {
  height: 2px;
  border: none;
  background: linear-gradient(90deg, transparent, var(--neon-pink), var(--lavender), transparent);
  box-shadow: 0 0 12px rgba(255,79,216,.6);
  margin-bottom: 40px;
}

/* === 7. Offcanvas ========================================================= */
.offcanvas-overlay {
  position: fixed;
  inset: 0;
  z-index: 200;
  background: rgba(0,0,0,.7);
  backdrop-filter: blur(4px);
  -webkit-backdrop-filter: blur(4px);
  opacity: 0;
  pointer-events: none;
  transition: opacity .3s ease;
}
body.menu-open .offcanvas-overlay {
  opacity: 1;
  pointer-events: auto;
}
.offcanvas {
  position: fixed;
  top: 0; right: 0;
  z-index: 201;
  width: 82%;
  max-width: 340px;
  height: 100%;
  background: var(--bg-1);
  border-left: 1px solid rgba(255,79,216,.4);
  box-shadow: -20px 0 60px rgba(0,0,0,.6);
  display: flex;
  flex-direction: column;
  transform: translateX(100%);
  transition: transform .32s cubic-bezier(.4,0,.2,1);
}
body.menu-open .offcanvas { transform: translateX(0); }

.offcanvas-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 0 20px;
  height: var(--header-h);
  border-bottom: 1px solid rgba(255,255,255,.1);
  flex-shrink: 0;
}
.offcanvas-close {
  width: 40px; height: 40px;
  display: flex; align-items: center; justify-content: center;
  border-radius: 8px;
  font-size: 1.25rem;
  color: var(--lav-soft);
  background: none;
  border: none;
  transition: color .2s;
}
.offcanvas-close:hover { color: #fff; }
.offcanvas-nav { flex: 1; overflow-y: auto; padding: 8px 0; }
.offcanvas-nav a {
  display: block;
  padding: 14px 24px;
  font-size: 1rem;
  font-weight: 600;
  color: #fff;
  border-bottom: 1px solid rgba(255,255,255,.05);
  transition: background .2s;
}
.offcanvas-nav a:hover { background: rgba(255,79,216,.1); }
.offcanvas-foot {
  padding: 20px;
  border-top: 1px solid rgba(255,255,255,.1);
  flex-shrink: 0;
}
.offcanvas-reserve-btn {
  display: block;
  width: 100%;
  padding: 12px;
  border-radius: 9999px;
  font-weight: 700;
  font-size: .9375rem;
  color: #fff;
  border: none;
  margin-bottom: 12px;
  background: linear-gradient(180deg, rgba(255,255,255,.16), rgba(255,79,216,.18));
  border: 1px solid rgba(255,79,216,.45);
  box-shadow: 0 6px 22px -8px rgba(255,45,155,.6), inset 0 1px 0 rgba(255,255,255,.35);
  transition: transform .2s, box-shadow .2s;
}
.offcanvas-reserve-btn:hover {
  transform: translateY(-1px);
  box-shadow: 0 10px 28px -8px rgba(255,45,155,.8), inset 0 1px 0 rgba(255,255,255,.5);
}
.offcanvas-tel-link {
  display: block;
  text-align: center;
  font-size: .875rem;
  color: var(--text-soft);
}

/* === 8. Reserve Modal ===================================================== */
.modal-overlay {
  position: fixed;
  inset: 0;
  z-index: 500;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 16px;
  background: rgba(0,0,0,.75);
  backdrop-filter: blur(4px);
  -webkit-backdrop-filter: blur(4px);
  opacity: 0;
  pointer-events: none;
  transition: opacity .3s ease;
}
body.reserve-open .modal-overlay {
  opacity: 1;
  pointer-events: auto;
}
.modal-box {
  background: linear-gradient(160deg, rgba(255,79,216,.08), rgba(255,143,214,.06));
  border: 1px solid rgba(255,79,216,.3);
  backdrop-filter: blur(14px);
  -webkit-backdrop-filter: blur(14px);
  box-shadow: 0 0 0 1px rgba(255,255,255,.04) inset,
              0 18px 60px -20px rgba(255,45,155,.45);
  width: 100%;
  max-width: 440px;
  border-radius: 24px;
  padding: 24px;
  transform: translateY(16px) scale(.98);
  transition: transform .3s ease;
}
body.reserve-open .modal-box {
  transform: translateY(0) scale(1);
}
.modal-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: 20px;
  gap: 12px;
}
.modal-title { font-size: 1.0625rem; font-weight: 800; }
.modal-sub { font-size: .8125rem; color: var(--text-mute); text-align: center; margin: -4px 0 4px; }
.modal-close {
  width: 36px; height: 36px;
  display: flex; align-items: center; justify-content: center;
  flex-shrink: 0;
  border-radius: 8px;
  font-size: 1.125rem;
  color: var(--lav-soft);
  background: none;
  border: none;
  transition: color .2s;
}
.modal-close:hover { color: #fff; }
.reserve-cards { display: flex; flex-direction: column; gap: 12px; }
.reserve-card {
  display: flex;
  align-items: center;
  gap: 16px;
  border-radius: 16px;
  padding: 16px;
  background: rgba(255,255,255,.05);
  border: 1px solid rgba(255,79,216,.3);
  transition: border-color .2s, background .2s;
}
.reserve-card:hover {
  border-color: rgba(255,79,216,.7);
  background: rgba(255,79,216,.1);
}
.reserve-icon  { font-size: 1.5rem; flex-shrink: 0; }
.reserve-label { display: block; font-weight: 700; color: #fff; }
.reserve-note  { display: block; font-size: .75rem; color: var(--text-mute); margin-top: 2px; }

/* === 9. Components ======================================================== */

/* glossy pill */
.glossy-pill {
  background: linear-gradient(180deg, rgba(255,255,255,.16), rgba(255,79,216,.18));
  border: 1px solid rgba(255,79,216,.45);
  box-shadow: 0 6px 22px -8px rgba(255,45,155,.6), inset 0 1px 0 rgba(255,255,255,.35);
  transition: transform .2s ease, box-shadow .2s ease;
}
.glossy-pill:hover {
  transform: translateY(-1px);
  box-shadow: 0 10px 28px -8px rgba(255,45,155,.8), inset 0 1px 0 rgba(255,255,255,.5);
}

/* glass card */
.glass-card {
  background: linear-gradient(160deg, rgba(255,79,216,.08), rgba(255,143,214,.06));
  border: 1px solid rgba(255,79,216,.30);
  backdrop-filter: blur(14px);
  -webkit-backdrop-filter: blur(14px);
  box-shadow: 0 0 0 1px rgba(255,255,255,.04) inset,
              0 18px 60px -20px rgba(255,45,155,.45);
}

/* neon chip */
.neon-chip {
  display: inline-block;
  background: rgba(255,79,216,.12);
  border: 1px solid rgba(255,79,216,.40);
  color: var(--text-soft);
  box-shadow: inset 0 1px 0 rgba(255,255,255,.15);
  border-radius: 9999px;
  padding: 2px 8px;
  font-size: 10px;
  line-height: 1.5;
}
.neon-chip.is-option {
  background: rgba(255,143,214,.12);
  border-color: rgba(255,143,214,.45);
}

/* neon room (decorative background) */
.neon-room {
  position: absolute;
  inset: 0;
  background:
    radial-gradient(60% 50% at 18% 12%, rgba(255,79,216,.30), transparent 70%),
    radial-gradient(55% 50% at 85% 80%, rgba(255,143,214,.28), transparent 72%),
    linear-gradient(180deg, rgba(42,8,22,.72) 0%, rgba(12,6,24,.86) 45%, rgba(42,8,22,.96) 100%);
  opacity: .5;
  pointer-events: none;
}

/* === 10. Page sections ==================================================== */
.page-section {
  position: relative;
  padding: 48px 0 64px;
  min-height: 60vh;
  background: var(--bg-0);
}
@media (min-width: 768px) { .page-section { padding: 64px 0 80px; } }

.section-head { text-align: center; margin-bottom: 32px; }
.section-eyebrow {
  display: block;
  font-size: .75rem;
  letter-spacing: .3em;
  font-weight: 700;
  text-align: center;
  margin-bottom: 4px;
}
.section-title {
  font-size: 1.5rem;
  font-weight: 800;
  color: #fff;
  text-align: center;
}
@media (min-width: 768px) { .section-title { font-size: 1.875rem; } }

/* breadcrumb */
.breadcrumb {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 6px;
  font-size: .8125rem;
  color: var(--text-mute);
  margin: -20px 0 16px;
}
@media (min-width: 768px) { .breadcrumb { margin: -28px 0 20px; } }
.breadcrumb a { color: var(--lav-soft); transition: color .2s; }
.breadcrumb a:hover { color: var(--neon-pink); }
.breadcrumb-sep { color: rgba(255,255,255,.25); }

/* back link */
.back-link {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-size: .875rem;
  color: var(--lav-soft);
  margin-bottom: 24px;
  transition: color .2s;
}
.back-link:hover { color: var(--neon-pink); }

/* empty state */
.empty-state {
  text-align: center;
  padding: 80px 0;
  color: var(--text-mute);
  font-size: .9375rem;
}

/* === 11. Girl grid ======================================================== */
.girl-grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 16px;
}
@media (min-width: 640px)  { .girl-grid { grid-template-columns: repeat(3,1fr); } }
@media (min-width: 1024px) { .girl-grid { grid-template-columns: repeat(4,1fr); } }

.girl-card {
  display: block;
  transition: transform .2s, border-color .2s, box-shadow .2s;
  border-radius: 16px;
  border: 1.5px solid rgba(255,79,216,.6);
  background: rgba(255,79,216,.06);
  box-shadow: 0 0 0 1.5px rgba(255,143,214,.45), 0 8px 26px -10px rgba(255,45,155,.6), 0 0 16px rgba(255,79,216,.32);
  overflow: visible; /* アイコンを右枠外へはみ出させるため。角丸は img-wrap が担保 */
  position: relative;
}
.girl-card:hover { transform: translateY(-3px); border-color: rgba(255,79,216,.7); }

.girl-card-img-wrap {
  position: relative;
  overflow: hidden;
  border-radius: 16px 16px 0 0; /* カード上角の丸みを維持（card は overflow:visible のため） */
}
.girl-card-img {
  width: 100%;
  aspect-ratio: 3/4;
  object-fit: cover;
  transition: transform .3s;
}
.girl-card:hover .girl-card-img { transform: scale(1.04); }
.girl-card-no-photo {
  width: 100%;
  aspect-ratio: 3/4;
  background: linear-gradient(160deg, var(--bg-2), var(--bg-1));
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 2.5rem;
  color: rgba(255,79,216,.25);
}
.girl-card-badge {
  position: absolute;
  top: 8px;
  padding: 2px 8px;
  border-radius: 9999px;
  font-size: 11px;
  font-weight: 700;
  color: #fff;
}
.girl-card-badge.new   { left: 8px; background: var(--neon-pink-hot); }
.girl-card-badge.trial { right: 8px; background: var(--neon-lav); }
/* 一覧カード右上の属性アイコン縦並び（フラグONのみ表示） */
.girl-card-flags {
  position: absolute;
  top: 10px;
  right: -12px; /* 約1/3を右枠外へはみ出させる */
  display: flex;
  flex-direction: column;
  gap: 6px;
  z-index: 3;
}
.girl-card-flag-icon {
  width: 34px;
  height: 34px;
  object-fit: contain;
  filter: drop-shadow(0 1px 2px rgba(0,0,0,.45));
}
/* 本日の出勤バッジ（schedule-badge.js が動的付与）名前の上に表示（.girl-card-info の先頭に挿入） */
.girl-card-shukkin {
  display: inline-block;
  margin-bottom: 5px;
  background: linear-gradient(135deg, #ff4fd8, #ff2d9b);
  color: #fff;
  font-size: 12px;
  font-weight: 800;
  padding: 3px 10px;
  border-radius: 9999px;
  box-shadow: 0 2px 8px rgba(255,45,155,.5);
  white-space: nowrap;
  letter-spacing: .02em;
}
/* ===== 本日の出勤ページ(/schedule) ===== */
.girl-grid.is-schedule .girl-card { display: none; } /* JSが選択日の出勤のみ表示 */

/* 日付タブ（1週間切替、admi2888 風） */
.schedule-tabs {
  display: flex;
  gap: 8px;
  overflow-x: auto;
  -webkit-overflow-scrolling: touch;
  scrollbar-width: none;
  padding: 2px 2px 8px;
  margin-bottom: 16px;
  scroll-snap-type: x proximity;
}
.schedule-tabs::-webkit-scrollbar { display: none; }
.schedule-tab {
  flex: 1 0 auto;
  min-width: 62px;
  scroll-snap-align: start;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 2px;
  padding: 9px 6px;
  border-radius: 14px;
  background: rgba(116,32,76,.7);
  border: 1.5px solid rgba(255,143,214,.35);
  color: var(--text-soft);
  font-weight: 800;
  cursor: pointer;
  line-height: 1.2;
  transition: transform .12s, box-shadow .12s, background .12s, border-color .12s;
}
.schedule-tab:hover { border-color: var(--neon-pink); transform: translateY(-1px); }
.schedule-tab-md { font-size: 1.0625rem; letter-spacing: .02em; }
.schedule-tab-wd { font-size: .75rem; }
.schedule-tab.is-sat .schedule-tab-md,
.schedule-tab.is-sat .schedule-tab-wd { color: var(--lavender); } /* 土＝紫（青は使わない） */
.schedule-tab.is-sun .schedule-tab-md,
.schedule-tab.is-sun .schedule-tab-wd { color: var(--neon-pink); } /* 日＝ピンク */
.schedule-tab.is-active {
  background: linear-gradient(135deg, var(--neon-pink), var(--neon-pink-hot));
  border-color: var(--neon-pink);
  color: #fff;
  box-shadow: 0 4px 14px rgba(255,45,155,.5);
}
.schedule-tab.is-active .schedule-tab-md,
.schedule-tab.is-active .schedule-tab-wd { color: #fff; } /* 選択中は曜日色を上書き */

.schedule-date-band {
  background: linear-gradient(135deg, #ff8fd0, #ff4fd8);
  color: #fff;
  font-size: 1.25rem;
  font-weight: 800;
  text-align: center;
  padding: 12px 8px;
  margin-bottom: 24px;
  letter-spacing: .06em;
  border-radius: 6px;
}
.is-schedule .girl-card-worktime {
  /* 写真の下・タグの上（サイズの下）に通常フローで配置 */
  background: rgba(255,79,216,.92);
  color: #fff;
  font-size: 14px;
  font-weight: 800;
  text-align: center;
  padding: 6px 4px;
  letter-spacing: .03em;
}
.girl-card-info {
  position: absolute;
  bottom: 0; left: 0; right: 0;
  padding: 16px 10px 9px;
  background: linear-gradient(to top, rgba(255,79,216,.95) 0%, rgba(160,110,235,.86) 50%, rgba(255,143,214,.2) 82%, transparent 100%);
}
.girl-card-name {
  font-weight: 800;
  color: #fff;
  line-height: 1.25;
  font-size: 1.0625rem;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  text-shadow: 0 1px 4px rgba(0,0,0,.95), 0 0 10px rgba(255,79,216,.5);
}
.girl-card-age  { font-size: .8125rem; color: #fff; margin-left: 3px; font-weight: 700; opacity: .92; }
.girl-card-size {
  font-size: 11.5px;
  font-weight: 700;
  color: #fff;
  letter-spacing: -.01em;
  margin-top: 3px;
  white-space: nowrap;
  text-shadow: 0 1px 4px rgba(0,0,0,.98);
}
.girl-card-tags {
  display: flex;
  flex-wrap: nowrap;
  justify-content: center;
  gap: 8px;
  padding: 10px 8px;
}
.girl-card-tag-ico {
  width: 28px;
  height: 28px;
  flex-shrink: 0;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border-radius: 50%;
  background: rgba(255,79,216,.12);
  border: 1px solid rgba(255,79,216,.40);
  box-shadow: inset 0 1px 0 rgba(255,255,255,.18);
  font-size: 15px;
  line-height: 1;
}

/* === 11b. 一覧 絞り込み・並び替えパネル ================================== */
.gpanel {
  border: 1px solid rgba(255,79,216,.30);
  border-radius: 14px;
  background: rgba(255,79,216,.05);
  margin-bottom: 14px;
  overflow: hidden;
}
.gpanel-head {
  width: 100%;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  padding: 14px 18px;
  background: none;
  border: none;
  color: #fff;
  font-size: 1rem;
  font-weight: 800;
  text-align: left;
  letter-spacing: .03em;
}
.gpanel-title { display: inline-flex; align-items: center; gap: 8px; }
.gpanel-chev { color: var(--neon-pink); transition: transform .25s; font-size: .8rem; }
.gpanel.is-open .gpanel-chev { transform: rotate(180deg); }
.gpanel-body {
  display: none;
  padding: 4px 18px 18px;
  border-top: 1px solid rgba(255,79,216,.18);
}
.gpanel.is-open .gpanel-body { display: block; }

.gfield { margin-top: 16px; }
.gfield-label { display: block; font-size: .8125rem; font-weight: 700; color: var(--lav-soft); margin-bottom: 8px; }
.gsearch-input {
  width: 100%;
  padding: 11px 14px;
  border-radius: 10px;
  border: 1px solid rgba(255,79,216,.35);
  background: rgba(42,8,22,.6);
  color: #fff;
  font-size: 16px;            /* iOSオートズーム防止 */
}
.gsearch-input::placeholder { color: var(--text-mute); }
.gsearch-input:focus { outline: none; border-color: var(--neon-pink); box-shadow: 0 0 0 3px rgba(255,79,216,.18); }

.gtag-list { display: flex; flex-wrap: wrap; gap: 8px; }
.gtag-chip {
  padding: 6px 12px;
  border-radius: 9999px;
  border: 1px solid rgba(255,79,216,.40);
  background: rgba(255,79,216,.08);
  color: var(--text-soft);
  font-size: 12.5px;
  font-weight: 700;
  transition: background .15s, color .15s, border-color .15s;
}
.gtag-chip.is-active {
  background: var(--neon-pink-hot);
  border-color: var(--neon-pink-hot);
  color: #fff;
  box-shadow: 0 0 12px -2px rgba(255,45,155,.7);
}
.gfield-row { display: flex; align-items: center; justify-content: space-between; gap: 12px; flex-wrap: wrap; }
.gcheck { display: inline-flex; align-items: center; gap: 8px; font-size: .9375rem; font-weight: 700; color: var(--text-soft); }
.gcheck input { width: 18px; height: 18px; accent-color: var(--neon-pink-hot); }
.greset {
  background: none;
  border: 1px solid rgba(255,79,216,.35);
  color: var(--lav-soft);
  font-size: 12.5px;
  font-weight: 700;
  padding: 7px 14px;
  border-radius: 9999px;
}

/* 並び替え */
.gsort-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 16px 20px; margin-top: 14px; }
.gsort-label { font-size: .875rem; font-weight: 800; color: #fff; margin-bottom: 8px; }
.gsort-btns { display: flex; gap: 8px; }
.gsort-btn {
  flex: 1;
  padding: 9px 6px;
  border-radius: 9999px;
  border: 1px solid rgba(255,79,216,.40);
  background: rgba(255,79,216,.06);
  color: var(--text-soft);
  font-size: 13px;
  font-weight: 700;
  white-space: nowrap;
  transition: background .15s, color .15s, border-color .15s;
}
.gsort-btn.is-active {
  background: var(--neon-pink-hot);
  border-color: var(--neon-pink-hot);
  color: #fff;
  box-shadow: 0 0 14px -2px rgba(255,45,155,.75);
}
@media (max-width: 520px) {
  .gsort-grid { grid-template-columns: 1fr; gap: 14px; }
}

.gresult-count { font-size: .8125rem; color: var(--text-mute); margin: 4px 2px 14px; }
.gresult-empty { text-align: center; color: var(--text-mute); padding: 40px 0; }

/* === 12. Girl detail ====================================================== */
.girl-detail-wrap { display: grid; grid-template-columns: 1fr; gap: 32px; }
@media (min-width: 768px) {
  .girl-detail-wrap { grid-template-columns: 320px 1fr; align-items: start; }
}

.girl-main-photo {
  width: 100%;
  aspect-ratio: 3/4;
  object-fit: cover;
  border-radius: 20px;
  border: 1px solid rgba(255,79,216,.4);
  box-shadow: 0 20px 60px -16px rgba(255,45,155,.5);
}
.girl-sub-photos {
  display: grid;
  grid-template-columns: repeat(3,1fr);
  gap: 8px;
  margin-top: 12px;
}
.girl-thumb {
  position: relative;
  padding: 0;
  margin: 0;
  background: none;
  border: 1px solid rgba(255,79,216,.25);
  border-radius: 10px;
  overflow: hidden;
  aspect-ratio: 3/4;
  cursor: pointer;
  transition: border-color .15s, box-shadow .15s, transform .15s;
}
.girl-thumb img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}
.girl-thumb:hover { transform: translateY(-2px); }
.girl-thumb.is-active {
  border-color: var(--neon-pink, #ff4fd8);
  box-shadow: 0 0 0 2px rgba(255,79,216,.65), 0 8px 24px -10px rgba(255,45,155,.6);
}
.girl-thumb:focus-visible {
  outline: 2px solid var(--neon-pink, #ff4fd8);
  outline-offset: 2px;
}

/* ===== メイン写真: 拡大ヒント ===== */
.girl-main-wrap { position: relative; cursor: zoom-in; border-radius: 20px; }
.girl-main-wrap .girl-main-photo { display: block; transition: transform .25s ease, box-shadow .25s ease; }
.girl-main-wrap:hover .girl-main-photo {
  transform: scale(1.012);
  box-shadow: 0 24px 70px -16px rgba(255,45,155,.7);
}
.girl-main-zoom {
  position: absolute; right: 10px; bottom: 10px;
  display: inline-flex; align-items: center; gap: 4px;
  padding: 6px 12px;
  font-size: 12px; font-weight: 700; color: #fff;
  background: rgba(42,8,22,.55);
  border: 1px solid rgba(255,79,216,.5);
  border-radius: 999px;
  -webkit-backdrop-filter: blur(6px); backdrop-filter: blur(6px);
  pointer-events: none; opacity: .9;
  transition: opacity .25s ease, transform .25s ease;
}
.girl-main-wrap:hover .girl-main-zoom { opacity: 1; transform: translateY(-2px); }

/* ===== ライトボックス（全画面ビューア） ===== */
body.lb-open { overflow: hidden; }
.lightbox {
  position: fixed; inset: 0; z-index: 9999;
  display: flex; align-items: center; justify-content: center;
  padding: 24px;
  background: rgba(28,6,16,.92);
  -webkit-backdrop-filter: blur(10px); backdrop-filter: blur(10px);
  opacity: 0; visibility: hidden;
  transition: opacity .25s ease, visibility .25s ease;
}
.lightbox[aria-hidden="false"] { opacity: 1; visibility: visible; }
.lightbox-stage {
  position: relative;
  display: flex; align-items: center; justify-content: center;
  max-width: min(92vw, 560px); max-height: 86vh;
}
.lightbox-img {
  max-width: 100%; max-height: 86vh; width: auto; height: auto;
  object-fit: contain; border-radius: 18px;
  border: 1.5px solid rgba(255,79,216,.6);
  box-shadow: 0 0 0 1px rgba(255,143,214,.3), 0 30px 90px -20px rgba(255,45,155,.7);
  transition: opacity .15s ease;
}
.lightbox[aria-hidden="false"] .lightbox-img { animation: lbpop .35s cubic-bezier(.2,.9,.3,1.2); }
.lightbox-img.is-fading { opacity: 0; }
@keyframes lbpop { from { transform: scale(.9); opacity: 0; } to { transform: scale(1); opacity: 1; } }

.lightbox-close {
  position: absolute; top: 16px; right: 16px; z-index: 2;
  width: 44px; height: 44px;
  display: flex; align-items: center; justify-content: center;
  font-size: 20px; color: #fff;
  background: rgba(42,8,22,.55);
  border: 1px solid rgba(255,79,216,.5);
  border-radius: 50%; cursor: pointer;
  transition: transform .15s ease, background .15s ease;
}
.lightbox-close:hover { transform: rotate(90deg) scale(1.05); background: rgba(255,79,216,.3); }

.lightbox-nav {
  position: absolute; top: 50%; transform: translateY(-50%); z-index: 2;
  width: 48px; height: 48px;
  display: flex; align-items: center; justify-content: center;
  font-size: 30px; line-height: 1; color: #fff;
  background: rgba(42,8,22,.45);
  border: 1px solid rgba(255,79,216,.4);
  border-radius: 50%; cursor: pointer;
  transition: transform .15s ease, background .15s ease, box-shadow .15s ease;
}
.lightbox-nav:hover { background: rgba(255,79,216,.35); box-shadow: 0 0 18px -2px rgba(255,79,216,.7); }
.lightbox-prev { left: 12px; }
.lightbox-next { right: 12px; }

.lightbox-dots {
  position: absolute; left: 0; right: 0; bottom: 56px;
  display: flex; justify-content: center; gap: 8px;
}
.lb-dot {
  width: 9px; height: 9px; padding: 0;
  border-radius: 50%; border: none; cursor: pointer;
  background: rgba(255,255,255,.3);
  transition: transform .15s, background .15s, box-shadow .15s;
}
.lb-dot.is-active {
  background: var(--neon-pink, #ff4fd8);
  transform: scale(1.3);
  box-shadow: 0 0 10px rgba(255,79,216,.9);
}
.lightbox-counter {
  position: absolute; left: 0; right: 0; bottom: 28px;
  text-align: center;
  font-size: 13px; font-weight: 700; letter-spacing: .05em;
  color: var(--lav-soft, #cdb6ff);
}

.lightbox-sparkles { position: absolute; inset: 0; pointer-events: none; overflow: visible; }
.lb-spark {
  position: absolute; opacity: 0;
  animation: lbspark 1s ease-out forwards;
  filter: drop-shadow(0 0 6px rgba(255,79,216,.8));
}
@keyframes lbspark {
  0%   { opacity: 0; transform: translateY(8px) scale(.4) rotate(0deg); }
  30%  { opacity: 1; transform: translateY(-6px) scale(1.1) rotate(20deg); }
  100% { opacity: 0; transform: translateY(-40px) scale(.6) rotate(-15deg); }
}

@media (min-width: 768px) {
  .lightbox-stage { max-width: min(70vw, 620px); }
}
@media (prefers-reduced-motion: reduce) {
  .lightbox, .lightbox-img,
  .girl-main-wrap .girl-main-photo,
  .lightbox-close, .lightbox-nav { transition: none; }
  .lightbox[aria-hidden="false"] .lightbox-img { animation: none; }
  .lb-spark { display: none; }
}
.girl-detail-name {
  font-size: clamp(2.125rem, 8vw, 2.75rem);
  font-weight: 800;
  color: #fff;
  line-height: 1.15;
  margin-bottom: 12px;
}
.girl-detail-age { display: inline; font-size: 1.25rem; color: var(--lav-soft); font-weight: 700; margin-left: 8px; }

/* 女の子詳細: 上余白を詰める + 名前を写真上に大きく中央表示 */
.girl-detail-section { padding-top: 12px; }
.girl-detail-section .breadcrumb { margin-top: 0; }
@media (min-width: 768px) { .girl-detail-section { padding-top: 20px; } }
.girl-hero-name {
  text-align: center;
  font-size: clamp(2.5rem, 12vw, 4rem);
  font-weight: 800;
  color: #fff;
  line-height: 1.08;
  margin: 6px 0 22px;
  text-shadow: 0 0 10px rgba(255,79,216,.6), 0 0 26px rgba(255,45,155,.42);
}
.girl-hero-age { font-size: .42em; color: var(--lav-soft); font-weight: 700; margin-left: 12px; vertical-align: middle; }
.girl-flags { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; margin-bottom: 20px; }
.girl-flag-chip {
  display: inline-block;
  padding: 4px 12px;
  border-radius: 9999px;
  font-size: .75rem;
  font-weight: 700;
  color: #fff;
  background: rgba(255,79,216,.2);
  border: 1px solid rgba(255,79,216,.5);
}
.girl-flag-chip.is-new  { background: var(--neon-pink-hot); border-color: var(--neon-pink-hot); }
.girl-flag-chip.is-trial{ background: var(--neon-lav);      border-color: var(--neon-lav); }
/* 属性アイコン（新人/待ち合わせ/インバウンド/ジェンダーレス/電話）— フラグONのみ表示 */
.girl-flag-icon {
  height: 40px;
  width: 40px;
  object-fit: contain;
  filter: drop-shadow(0 1px 3px rgba(0,0,0,.4));
}

.girl-catch {
  font-size: 1rem;
  color: var(--lav-soft);
  font-style: italic;
  margin-bottom: 24px;
  padding: 12px 16px;
  border-left: 3px solid var(--neon-pink);
  background: rgba(255,79,216,.06);
  border-radius: 0 8px 8px 0;
}

.girl-tags {
  display: flex;
  flex-wrap: wrap;
  gap: 7px;
  margin-bottom: 24px;
}
.girl-tag-chip {
  display: inline-block;
  background: linear-gradient(135deg, rgba(255,79,216,.22), rgba(255,143,214,.18));
  border: 1px solid rgba(255,79,216,.55);
  color: #fff;
  border-radius: 9999px;
  padding: 4px 13px;
  font-size: 12px;
  font-weight: 700;
  letter-spacing: .02em;
  box-shadow: 0 0 10px rgba(255,79,216,.25), inset 0 1px 0 rgba(255,255,255,.2);
}

.section-label {
  font-size: .6875rem;
  letter-spacing: .25em;
  text-transform: uppercase;
  color: var(--lav-soft);
  font-weight: 700;
  margin-bottom: 10px;
  padding-bottom: 6px;
  border-bottom: 1px solid rgba(255,79,216,.25);
}

.girl-size-grid {
  display: grid;
  grid-template-columns: repeat(5,1fr);
  gap: 8px;
  margin-bottom: 24px;
}
.girl-size-item { text-align: center; }
.girl-size-label { font-size: 10px; color: var(--text-mute); display: block; }
.girl-size-val   { font-size: 1rem; font-weight: 700; color: #fff; }

.girl-profile-table { width: 100%; border-collapse: collapse; margin-bottom: 24px; }
.girl-profile-table th,
.girl-profile-table td {
  padding: 8px 12px;
  text-align: left;
  border-bottom: 1px solid rgba(255,255,255,.07);
  font-size: .875rem;
}
.girl-profile-table th { width: 38%; color: var(--lav-soft); font-weight: 600; }
.girl-profile-table td { color: var(--text-soft); }

.girl-options { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 24px; }

/* エロポイント: プレイ見出し＋チップ（男性向けに強めのネオン演出） */
.play-label {
  font-size: .95rem;
  letter-spacing: .08em;
  text-transform: none;
  color: #fff;
  border-bottom-color: rgba(255,45,155,.55);
  text-shadow: 0 0 12px rgba(255,45,155,.7);
}
.play-label::before { content: "🔥"; margin-right: 7px; }
.play-label-option::before { content: "✨"; }
.play-chip {
  display: inline-block;
  padding: 7px 16px;
  border-radius: 9999px;
  font-size: 13px;
  font-weight: 700;
  color: #fff;
  background: linear-gradient(135deg, rgba(255,45,155,.36), rgba(255,79,216,.18));
  border: 1px solid rgba(255,79,216,.7);
  box-shadow: 0 0 16px -2px rgba(255,45,155,.65), inset 0 1px 0 rgba(255,255,255,.28);
  text-shadow: 0 1px 3px rgba(0,0,0,.55);
}
.play-chip.is-option {
  background: linear-gradient(135deg, rgba(255,143,214,.32), rgba(255,143,214,.14));
  border-color: rgba(255,143,214,.7);
  box-shadow: 0 0 14px -3px rgba(140,90,220,.6), inset 0 1px 0 rgba(255,255,255,.22);
}

.comment-box {
  background: rgba(255,79,216,.06);
  border: 1px solid rgba(255,79,216,.2);
  border-radius: 12px;
  padding: 16px 20px;
  color: var(--text-soft);
  line-height: 1.9;
  font-size: .9375rem;
  white-space: pre-line;
}

/* 店舗/女の子コメントは HTMLウィジェットをそのまま描画する枠（自前styleを尊重し最小限） */
.girl-shop-comment {
  margin-bottom: 24px;
  color: var(--text-soft);
  line-height: 1.95;
  font-size: .9375rem;
  word-break: break-word;
}
.girl-shop-comment img { max-width: 100%; height: auto; }

/* === 13. News list ======================================================== */
.news-list { display: flex; flex-direction: column; gap: 12px; }
.news-item {
  display: flex;
  align-items: center;
  gap: 16px;
  padding: 12px 16px;
  border-radius: 16px;
  background: rgba(255,255,255,.03);
  border: 1px solid rgba(255,255,255,.1);
  transition: border-color .2s, background .2s;
}
.news-item:hover {
  border-color: rgba(255,79,216,.5);
  background: rgba(255,79,216,.06);
}
.news-thumb {
  width: 80px;
  height: 80px;
  flex-shrink: 0;
  border-radius: 12px;
  object-fit: cover;
  border: 1px solid rgba(255,255,255,.1);
}
.news-no-thumb {
  width: 80px;
  height: 80px;
  flex-shrink: 0;
  border-radius: 12px;
  background: linear-gradient(160deg, var(--bg-2), var(--bg-1));
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 1.5rem;
  border: 1px solid rgba(255,255,255,.1);
}
@media (min-width: 768px) {
  .news-thumb   { width: 112px; height: 112px; }
  .news-no-thumb{ width: 112px; height: 112px; }
}
.news-meta  { min-width: 0; }
.news-date  { font-size: .75rem; color: var(--lav-soft); margin-bottom: 4px; }
.news-title {
  font-weight: 700;
  color: #fff;
  line-height: 1.4;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
  transition: color .2s;
}
.news-item:hover .news-title { color: var(--neon-pink); }
.news-excerpt {
  font-size: .875rem;
  color: var(--text-mute);
  margin-top: 4px;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
}

/* News detail */
.news-detail-title {
  font-size: 1.375rem;
  font-weight: 800;
  color: #fff;
  line-height: 1.4;
  margin-bottom: 8px;
}
@media (min-width: 768px) { .news-detail-title { font-size: 1.75rem; } }
.news-detail-date { font-size: .875rem; color: var(--lav-soft); margin-bottom: 24px; }
.news-detail-thumb {
  width: 100%;
  max-height: 400px;
  object-fit: cover;
  border-radius: 16px;
  border: 1px solid rgba(255,79,216,.25);
  margin-bottom: 32px;
}
.prose-neon {
  color: var(--text-soft);
  line-height: 1.95;
  font-size: .9375rem;
}
.prose-neon p  { margin-bottom: 1.15em; }
.prose-neon strong { color: var(--lav-soft); }

/* === 14. Hero ============================================================= */
.hero-bg {
  background-image:
    linear-gradient(135deg, rgba(255,45,155,.42) 0%, rgba(150,60,220,.46) 55%, rgba(138,15,77,.5) 100%),
    url('/img/indexbg.jpg');
  background-position: center, center;
  background-size: cover, cover;
  background-blend-mode: multiply, normal;
}
@media (min-width: 768px) {
  .hero-bg { background-attachment: fixed, fixed; }
}
.hero-scrim {
  background:
    linear-gradient(180deg, rgba(42,8,22,.92) 0%, rgba(42,8,22,.18) 13%, transparent 22%),
    radial-gradient(78% 60% at 50% 60%, rgba(28,6,16,.80) 0%, rgba(28,6,16,.30) 52%, transparent 80%),
    radial-gradient(58% 50% at 12% 8%, rgba(255,79,216,.30), transparent 68%),
    radial-gradient(55% 50% at 88% 90%, rgba(255,143,214,.28), transparent 70%),
    linear-gradient(0deg, var(--bg-1) 0%, rgba(79,18,52,.25) 10%, transparent 20%);
}
.sparkle {
  position: absolute;
  color: #fff;
  text-shadow: 0 0 8px var(--neon-pink), 0 0 14px var(--lavender);
  pointer-events: none;
  user-select: none;
  animation: sparkle-twinkle 3.2s ease-in-out infinite;
}
.cta-enter {
  position: relative;
  display: inline-block;
  border-radius: 9999px;
  transition: transform .25s ease, filter .25s ease;
  filter: drop-shadow(0 0 18px rgba(255,79,216,.65));
  animation: cta-float 4.5s ease-in-out infinite;
}
.cta-enter:hover  { transform: scale(1.04); filter: drop-shadow(0 0 30px rgba(255,79,216,.95)); }
.cta-enter:active { transform: scale(.97); }
.cta-enter img    { display: block; width: 100%; height: auto; position: relative; z-index: 1; }
.cta-enter::after {
  content: '';
  position: absolute;
  inset: 0;
  z-index: 2;
  border-radius: inherit;
  background: linear-gradient(115deg, transparent 30%, rgba(255,255,255,.55) 48%, transparent 60%);
  background-size: 250% 100%;
  background-position: 200% 0;
  animation: shine-sweep 4.5s ease-in-out infinite;
  pointer-events: none;
  mix-blend-mode: screen;
}

/* === 15. Animations ======================================================= */
@keyframes holo-shift {
  0%,100% { background-position: 0% 0; }
  50%      { background-position: 100% 0; }
}
@keyframes fade-up {
  from { opacity: 0; transform: translateY(24px); }
  to   { opacity: 1; transform: translateY(0); }
}
@keyframes neon-flicker {
  0%,18%,22%,25%,53%,57%,100% {
    text-shadow: 0 0 6px rgba(255,79,216,.9),0 0 16px rgba(255,79,216,.7),0 0 34px rgba(255,45,155,.55);
    opacity: 1;
  }
  20%,24%,55% { text-shadow: none; opacity: .78; }
}
@keyframes shine-sweep {
  0%       { background-position: 200% 0; }
  55%,100% { background-position: -120% 0; }
}
@keyframes cta-float {
  0%,100% { transform: translateY(0); }
  50%     { transform: translateY(-7px); }
}
@keyframes sparkle-twinkle {
  0%,100% { opacity: .25; transform: scale(.7) rotate(0deg); }
  50%     { opacity: 1;   transform: scale(1.1) rotate(20deg); }
}
.reveal   { opacity: 0; animation: fade-up .8s ease forwards; }
.reveal-1 { animation-delay: .05s; }
.reveal-2 { animation-delay: .22s; }
.reveal-3 { animation-delay: .40s; }
.reveal-4 { animation-delay: .58s; }
.flicker  { animation: neon-flicker 6s ease-in-out 1s infinite; }
.reveal.flicker { opacity: 0; animation: fade-up .8s ease forwards, neon-flicker 6s ease-in-out 1.2s infinite; }
.reveal-1.flicker { animation-delay: .05s, 1.2s; }
.reveal-2.flicker { animation-delay: .22s, 1.2s; }

/* === 16. Top page sections ================================================ */
.top-news-section { background: var(--bg-1); padding: 10px 0; }
.top-girls-section { background: var(--bg-0); padding: 10px 0; }
.top-banner-section { background: var(--bg-1); padding: 34px 0; }

/* Y2K セクショントッパー（ホログラム線＋スパークル、各セクション上部） */
.section-topper {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 12px;
  margin-bottom: 16px;
}
.section-topper-line {
  height: 1px;
  width: clamp(36px, 16vw, 96px);
  background: linear-gradient(90deg, transparent, var(--neon-pink) 60%, var(--lavender));
  box-shadow: 0 0 8px rgba(255,79,216,.5);
}
.section-topper-line:last-child { transform: scaleX(-1); }
.section-topper-stars {
  font-size: .95rem;
  letter-spacing: .2em;
  color: var(--lav-soft);
  text-shadow: 0 0 10px var(--neon-pink-hot), 0 0 4px var(--lavender);
  white-space: nowrap;
  animation: topper-twinkle 3.2s ease-in-out infinite;
}
@keyframes topper-twinkle {
  0%, 100% { opacity: 1; text-shadow: 0 0 10px var(--neon-pink-hot), 0 0 4px var(--lavender); }
  50%      { opacity: .82; text-shadow: 0 0 16px var(--neon-pink-hot), 0 0 7px var(--lavender); }
}
@media (prefers-reduced-motion: reduce) {
  .section-topper-stars { animation: none; opacity: 1; }
}
.top-banner-grid {
  display: grid;
  gap: 16px;
  max-width: 720px;
  margin: 0 auto;
  padding: 0 24px;
}
@media (min-width: 640px) { .top-banner-grid { grid-template-columns: 1fr 1fr; } }

/* 下部バナー（管理画面 /ctrl で設定） */
.bottom-banner-section { background: var(--bg-0); padding: 8px 0 14px; }
/* スケジュール確認ボタン ↔ バナーエリアの区切り線（holo-dividerをバナー幅に合わせ中央寄せ） */
.bottom-banner-divider { width: min(600px, calc(100% - 32px)); margin: 4px auto 22px; }
.bottom-banner-grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: 14px;
  max-width: 600px;
  margin: 0 auto;
  padding: 0 16px;
}
.bottom-banner-item {
  display: block;
  border-radius: 12px;
  overflow: hidden;
  line-height: 0;
  box-shadow: 0 2px 10px rgba(0, 0, 0, .35);
  transition: transform .15s ease, box-shadow .15s ease;
}
.bottom-banner-item:hover { transform: translateY(-2px); box-shadow: 0 6px 16px rgba(255, 79, 216, .28); }
.bottom-banner-item img { width: 100%; height: auto; display: block; }
.top-banner-card {
  display: block;
  border-radius: 20px;
  padding: 24px;
  text-align: center;
  transition: filter .2s, transform .2s;
}
.top-banner-card:hover { filter: brightness(1.08); transform: translateY(-2px); }
.top-banner-card-title { font-size: 1.125rem; font-weight: 800; margin-bottom: 4px; }
.top-banner-card-sub   { font-size: .8125rem; opacity: .85; }
.section-more-wrap { text-align: center; margin-top: 24px; }
.section-more {
  display: inline-block;
  padding: 10px 28px;
  border-radius: 9999px;
  font-size: .875rem;
  font-weight: 700;
  color: #fff;
}

/* === 17. FujohoBanners section =========================================== */
.fujoho-section { background: var(--bg-0); padding: 10px 0 8px; position: relative; overflow: hidden; }
/* 口コミ局バナー直後の新人セクションは上の無駄な余白を詰める */
.fujoho-section + .top-girls-section { padding-top: 10px; }
.fujoho-wrap {
  position: relative;
  z-index: 1;
  max-width: 1120px;
  margin: 0 auto;
  padding: 0 24px;
}
.fujoho-grid {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 8px;
}
.fujoho-card {
  border-radius: 16px;
  padding: 8px;
  background: rgba(255,255,255,.05);
  border: 1px solid rgba(255,79,216,.30);
  box-shadow: 0 12px 40px -12px rgba(255,45,155,.5);
}
.fujoho-scroll-hint { display: none; } /* PCでは非表示 */
/* スマホは口コミ局バナーを横1行（横スクロール＋スナップ＋スクロール明示） */
@media (max-width: 640px) {
  .fujoho-scroll-hint {
    display: block;
    text-align: center;
    font-size: .8125rem;
    font-weight: 700;
    color: var(--neon-pink);
    margin-bottom: 12px;
    animation: fujoho-hint-swipe 1.5s ease-in-out infinite;
  }
  .fujoho-grid {
    flex-wrap: nowrap;
    justify-content: flex-start;
    align-items: flex-start;
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
    padding-bottom: 4px;
    scroll-snap-type: x proximity;
    scrollbar-width: none; /* Firefox: スクロールバー非表示（スワイプヒントで誘導） */
  }
  /* スクロールバーは隠す（常時表示の線が出るため。横スワイプはヒントで案内） */
  .fujoho-grid::-webkit-scrollbar { display: none; }
  /* 左揃え＝右端で次バナーがちら見え(peek) */
  .fujoho-card { flex: 0 0 auto; scroll-snap-align: start; }
}
@keyframes fujoho-hint-swipe { 0%,100% { opacity:.55; transform:translateX(-5px); } 50% { opacity:1; transform:translateX(5px); } }

/* Fujoho 横スクロールの矢印＋ドット操作（スマホのみ。PCは3枚全表示で不要） */
.fujoho-controls { display: none; }
@media (max-width: 640px) {
  .fujoho-controls {
    display: flex; align-items: center; justify-content: center; gap: 16px; margin-top: 12px;
  }
}
.fujoho-arrow {
  width: 36px; height: 36px; border-radius: 9999px; flex: 0 0 auto;
  background: rgba(255,79,216,.14); color: var(--neon-pink); border: 1px solid rgba(255,79,216,.45);
  font-size: 20px; line-height: 1; cursor: pointer;
  display: flex; align-items: center; justify-content: center;
  transition: background .2s, transform .12s, opacity .2s;
}
.fujoho-arrow:active { transform: scale(.92); }
.fujoho-arrow:disabled { opacity: .35; cursor: default; }
.fujoho-dots { display: flex; justify-content: center; gap: 7px; }
.fujoho-dot { width: 9px; height: 9px; border-radius: 9999px; background: rgba(255,255,255,.4); border: none; cursor: pointer; padding: 0; transition: width .2s, background .2s; }
.fujoho-dot.is-active { background: var(--neon-pink); width: 22px; }

/* スマホはセクション見出し上の余白を詰める（最新情報／新人 等の上の無駄な空き解消） */
@media (max-width: 640px) {
  .top-news-section, .top-girls-section, .fujoho-section,
  .fujoho-section + .top-girls-section { padding-top: 0; }
  .section-topper { margin-bottom: 8px; }
  .section-head { margin-bottom: 16px; }
}

/* === 18. System (courses) ================================================= */
.course-list { display: flex; flex-direction: column; gap: 12px; }
.course-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 16px 20px;
  border-radius: 16px;
  background: rgba(255,255,255,.04);
  border: 1px solid rgba(255,79,216,.2);
  gap: 12px;
}
.course-time  { font-size: 1.125rem; font-weight: 700; color: #fff; flex-shrink: 0; }
.course-desc  { font-size: .8125rem; color: var(--text-mute); flex: 1; }
.course-price {
  font-size: 1.25rem;
  font-weight: 800;
  color: var(--neon-pink);
  text-shadow: 0 0 14px rgba(255,79,216,.5);
  flex-shrink: 0;
}
.extras-list  { list-style: none; padding: 0; }
.extras-list li {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 10px 0;
  border-bottom: 1px solid rgba(255,255,255,.06);
  font-size: .9375rem;
  color: var(--text-soft);
}
.extras-list li::before { content: '♡'; color: var(--neon-pink); flex-shrink: 0; }
.system-note {
  margin-top: 20px;
  padding: 16px 20px;
  border-radius: 12px;
  background: rgba(255,143,214,.07);
  border: 1px solid rgba(255,143,214,.2);
  font-size: .875rem;
  color: var(--lav-soft);
  line-height: 1.9;
}

/* === 18b. System / pricing (FANTASY PRICE) ================================ */
/* FANTASY PRICE バナー */
.price-banner {
  text-align: center;
  padding: 20px 22px;
  border-radius: 18px;
  margin-bottom: 32px;
  background: linear-gradient(135deg, rgba(255,79,216,.16), rgba(255,143,214,.12));
  border: 1px solid rgba(255,79,216,.40);
  box-shadow: inset 0 1px 0 rgba(255,255,255,.22), 0 16px 44px -20px rgba(255,45,155,.6);
}
.price-banner-badge {
  display: inline-block;
  margin-bottom: 12px;
  padding: 5px 16px;
  border-radius: 999px;
  font-size: .8rem;
  font-weight: 700;
  letter-spacing: .02em;
  color: #fff;
  background: linear-gradient(135deg, #ff4fd8, #ff8fd6);
  box-shadow: 0 6px 20px -8px rgba(255,45,155,.9), inset 0 1px 0 rgba(255,255,255,.4);
}
.price-banner-en {
  display: block;
  font-family: 'Pacifico', cursive;
  font-size: 1.6rem;
  line-height: 1.1;
  margin-bottom: 6px;
}
.price-banner-jp { display: block; font-size: .875rem; color: var(--lav-soft); line-height: 1.6; }

/* コース料金グループ */
.price-group { margin-bottom: 32px; }
.price-group-head {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 8px;
  margin-bottom: 4px;
}
.price-group-title { font-size: 1.0625rem; font-weight: 800; color: #fff; }
.price-group-desc { font-size: .8125rem; color: var(--text-mute); margin-bottom: 14px; }

.price-table { display: flex; flex-direction: column; gap: 10px; }
.price-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding: 14px 18px;
  border-radius: 16px;
  background: rgba(255,255,255,.04);
  border: 1px solid rgba(255,79,216,.2);
}
.price-row-feature {
  background: linear-gradient(135deg, rgba(255,79,216,.12), rgba(255,143,214,.08));
  border-color: rgba(255,79,216,.4);
}
.price-row-course { display: flex; flex-direction: column; gap: 3px; min-width: 0; }
.price-row-time { font-size: 1.0625rem; font-weight: 700; color: #fff; }
.price-row-cond { font-size: .8125rem; color: var(--text-mute); line-height: 1.5; }
.price-row-amount {
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  line-height: 1.15;
  flex-shrink: 0;
}
.price-was {
  font-size: .75rem;
  color: var(--text-mute);
  text-decoration: line-through;
  text-decoration-color: rgba(255,79,216,.6);
}
.price-now {
  font-size: 1.375rem;
  font-weight: 800;
  color: var(--neon-pink);
  text-shadow: 0 0 14px rgba(255,79,216,.5);
}
.price-now small { font-size: .8125rem; font-weight: 700; }

/* 指名料・オプション・キャンセル 共通カード */
.fee-card {
  padding: 6px 18px;
  border-radius: 16px;
  background: rgba(255,255,255,.04);
  border: 1px solid rgba(255,79,216,.2);
}
.fee-list { display: flex; flex-direction: column; }
.fee-row {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 12px;
  padding: 13px 0;
  border-bottom: 1px solid rgba(255,255,255,.07);
}
.fee-row:last-child { border-bottom: none; }
.fee-name { font-size: .9375rem; color: var(--text-soft); display: flex; flex-direction: column; gap: 2px; }
.fee-name small { font-size: .75rem; color: var(--text-mute); }
.fee-amount {
  font-weight: 800;
  color: var(--neon-pink);
  flex-shrink: 0;
  white-space: nowrap;
  text-shadow: 0 0 12px rgba(255,79,216,.4);
}
.fee-amount small { font-size: .75rem; font-weight: 600; color: var(--text-mute); text-shadow: none; }

/* 交通費エリア */
.zone-list { display: flex; flex-direction: column; gap: 10px; }
.zone-card {
  padding: 14px 18px;
  border-radius: 14px;
  background: rgba(255,255,255,.04);
  border: 1px solid rgba(255,143,214,.22);
}
.zone-fee {
  display: inline-block;
  font-weight: 800;
  color: var(--neon-pink);
  text-shadow: 0 0 12px rgba(255,79,216,.45);
  margin-bottom: 4px;
}
.zone-area { display: block; font-size: .8125rem; color: var(--text-soft); line-height: 1.7; }

/* キャンセル表 */
.cancel-table { width: 100%; border-collapse: collapse; table-layout: fixed; }
.cancel-table th,
.cancel-table td {
  padding: 13px 0;
  border-bottom: 1px solid rgba(255,255,255,.07);
  font-size: .9375rem;
  vertical-align: top;
}
.cancel-table tr:last-child th,
.cancel-table tr:last-child td { border-bottom: none; }
.cancel-table th { text-align: left; color: var(--text-soft); font-weight: 600; width: 50%; }
.cancel-table td {
  text-align: right;
  color: var(--neon-pink);
  font-weight: 700;
  overflow-wrap: anywhere;
  padding-left: 12px;
}

/* ご利用にあたって */
.notice-box {
  padding: 18px 20px;
  border-radius: 16px;
  background: rgba(255,143,214,.06);
  border: 1px solid rgba(255,143,214,.22);
}
.notice-list { list-style: none; padding: 0; margin: 0; }
.notice-list li {
  position: relative;
  padding: 6px 0 6px 22px;
  font-size: .875rem;
  color: var(--text-soft);
  line-height: 1.6;
}
.notice-list li::before {
  content: '♡';
  position: absolute;
  left: 0;
  top: 6px;
  color: var(--neon-pink);
}
.notice-foot { margin-top: 12px; font-size: .8125rem; color: var(--text-mute); }

/* 利用規約 */
.terms-subtitle {
  text-align: center;
  font-size: .875rem;
  color: var(--text-mute);
  margin: -6px 0 16px;
}
.terms-head {
  font-size: .95rem;
  font-weight: 800;
  color: var(--neon-pink);
  margin: 18px 0 8px;
  letter-spacing: .03em;
}
.terms-head:first-child { margin-top: 0; }
.terms-text {
  font-size: .875rem;
  color: var(--text-soft);
  line-height: 1.7;
  margin: 0 0 8px;
}
.terms-strong {
  font-weight: 700;
  color: var(--lavender);
}
.terms-note {
  display: block;
  margin-top: 4px;
  font-size: .8125rem;
  color: var(--text-mute);
  line-height: 1.6;
}

/* 料金ページ CTA */
.system-cta {
  display: flex;
  flex-wrap: wrap;
  gap: 12px;
  margin-top: 40px;
  justify-content: center;
}
.system-cta-btn {
  flex: 1;
  min-width: 180px;
  justify-content: center;
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 14px 28px;
  border-radius: 9999px;
  font-weight: 700;
  color: #fff;
}

/* === 19. Howto (steps) ==================================================== */
.steps-list { display: flex; flex-direction: column; gap: 24px; }
.step-row {
  display: flex;
  gap: 20px;
  align-items: flex-start;
}
.step-num {
  width: 52px;
  height: 52px;
  flex-shrink: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  border-radius: 50%;
  font-size: 1.25rem;
  font-weight: 900;
  color: #fff;
  background: linear-gradient(135deg, var(--neon-pink-hot), var(--lavender));
  box-shadow: 0 4px 16px rgba(255,45,155,.4);
}
.step-body { flex: 1; padding-top: 4px; }
.step-title { font-size: 1.125rem; font-weight: 700; color: #fff; margin-bottom: 6px; }
.step-desc  { font-size: .9375rem; color: var(--text-mute); line-height: 1.8; }

/* ご利用施設カード */
.facility-list { display: flex; flex-direction: column; gap: 18px; }
.facility-card {
  padding: 20px 22px;
  border-radius: 18px;
  background: rgba(255,79,216,.05);
  border: 1px solid rgba(255,79,216,.22);
  box-shadow: inset 0 1px 0 rgba(255,255,255,.10);
}
.facility-card-head { display: flex; align-items: center; gap: 10px; margin-bottom: 10px; }
.facility-card-icon { font-size: 1.5rem; line-height: 1; }
.facility-card-title { font-size: 1.0625rem; font-weight: 700; color: #fff; }
.facility-card-lead { font-size: .9375rem; color: var(--text-soft); line-height: 1.8; margin: 0 0 8px; }
.facility-card-body { font-size: .9375rem; color: var(--text-mute); line-height: 1.9; margin: 0; }
.facility-card-body strong { color: var(--neon-pink); font-weight: 700; }
.facility-points { list-style: none; padding: 0; margin: 8px 0 12px; }
.facility-points li {
  position: relative;
  padding: 5px 0 5px 22px;
  font-size: .9375rem;
  color: var(--text-soft);
  line-height: 1.6;
}
.facility-points li::before {
  content: '♡';
  position: absolute;
  left: 0;
  top: 5px;
  color: var(--neon-pink);
}

/* === 20. Contacts (form) ================================================== */
.contact-form { max-width: 620px; margin: 0 auto; }
.form-group { margin-bottom: 20px; }
.form-label {
  display: block;
  font-size: .8125rem;
  font-weight: 700;
  color: var(--lav-soft);
  margin-bottom: 6px;
  letter-spacing: .05em;
}
.form-required { color: var(--neon-pink); font-size: 10px; margin-left: 4px; }
.form-control {
  width: 100%;
  padding: 12px 16px;
  border-radius: 12px;
  font-size: 1rem;
  font-family: inherit;
  color: #fff;
  background: rgba(255,255,255,.06);
  border: 1px solid rgba(255,79,216,.3);
  outline: none;
  transition: border-color .2s, background .2s;
  -webkit-appearance: none;
}
.form-control:focus {
  border-color: rgba(255,79,216,.8);
  background: rgba(255,79,216,.06);
}
.form-control::placeholder { color: rgba(198,176,230,.45); }
textarea.form-control { resize: vertical; min-height: 140px; }
.form-submit {
  display: block;
  width: 100%;
  padding: 14px;
  border-radius: 9999px;
  font-size: 1rem;
  font-weight: 700;
  font-family: inherit;
  color: #fff;
  background: linear-gradient(180deg, rgba(255,255,255,.16), rgba(255,79,216,.25));
  border: 1px solid rgba(255,79,216,.55);
  box-shadow: 0 6px 22px -8px rgba(255,45,155,.6), inset 0 1px 0 rgba(255,255,255,.35);
  cursor: pointer;
  transition: transform .2s, box-shadow .2s;
  margin-top: 8px;
}
.form-submit:hover {
  transform: translateY(-1px);
  box-shadow: 0 10px 28px -8px rgba(255,45,155,.8), inset 0 1px 0 rgba(255,255,255,.5);
}
.form-alt-cta {
  text-align: center;
  margin-top: 28px;
  padding-top: 24px;
  border-top: 1px solid rgba(255,255,255,.08);
}
.form-alt-cta p { font-size: .875rem; color: var(--text-mute); margin-bottom: 16px; }
.form-alt-btns { display: flex; flex-wrap: wrap; justify-content: center; gap: 12px; }
.form-done-msg {
  text-align: center;
  padding: 40px 20px;
  background: rgba(255,79,216,.06);
  border: 1px solid rgba(255,79,216,.2);
  border-radius: 20px;
}

/* === 21. Sitemap ========================================================== */
.sitemap-grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: 40px;
}
@media (min-width: 640px) { .sitemap-grid { grid-template-columns: 1fr 1fr; } }
.sitemap-group-title {
  font-size: .6875rem;
  letter-spacing: .3em;
  color: var(--lav-soft);
  font-weight: 700;
  text-transform: uppercase;
  margin-bottom: 12px;
  padding-bottom: 8px;
  border-bottom: 1px solid rgba(255,79,216,.25);
}
.sitemap-links { list-style: none; padding: 0; display: flex; flex-direction: column; gap: 2px; }
.sitemap-links a {
  display: block;
  padding: 7px 0;
  font-size: .9375rem;
  color: var(--text-soft);
  border-bottom: 1px solid rgba(255,255,255,.04);
  transition: color .2s, padding-left .15s;
}
.sitemap-links a:hover { color: var(--neon-pink); padding-left: 6px; }

/* === 15. Accessibility ==================================================== */
:focus-visible {
  outline: 3px solid var(--lav-soft);
  outline-offset: 3px;
  border-radius: 6px;
}
@media (prefers-reduced-motion: reduce) {
  /* 登場アニメ・トランジションは減らすが、ブランドロゴのネオン点滅は維持（移動を伴わない光のパルスのため） */
  .holo-text, .reveal { animation: none !important; }
  .reveal, .reveal.flicker { opacity: 1 !important; }
  .flicker { animation: neon-flicker 6s ease-in-out 1s infinite !important; }
  .girl-card-img, .girl-card, .offcanvas, .modal-box { transition: none; }
}

/* ===== 上部バナー（top ヒーロー直下）===== */
.top-hero-banners { padding: 18px 0 2px; }
.hero-banner-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(150px, 1fr));
  gap: 10px;
}
.hero-banner { display: block; line-height: 0; }
.hero-banner img {
  width: 100%;
  height: auto;
  border-radius: 12px;
  border: 1px solid rgba(255,79,216,.28);
  box-shadow: 0 6px 18px -10px rgba(255,45,155,.5);
}

/* バナースライダー（top ヒーロー） */
.hero-slider-section { background: var(--bg-0); }
.hero-slider { position: relative; overflow: hidden; max-width: 960px; margin: 0 auto; transition: height .35s ease; }
.hero-slider-track { display: flex; align-items: flex-start; transition: transform .5s ease; }
.hero-slide { flex: 0 0 100%; line-height: 0; }
.hero-slide img { width: 100%; height: auto; display: block; }
/* コントロール（矢印＋ドット）は画像の外＝下に横並び表示（✦⋆♡ ラインの上） */
.hero-slider-controls {
  display: flex; align-items: center; justify-content: center; gap: 16px;
  max-width: 960px; margin: 10px auto 0; padding: 0 16px;
}
.hero-slider-arrow {
  width: 36px; height: 36px; border-radius: 9999px; flex: 0 0 auto;
  background: rgba(255,79,216,.14); color: var(--neon-pink); border: 1px solid rgba(255,79,216,.45);
  font-size: 20px; line-height: 1; cursor: pointer;
  display: flex; align-items: center; justify-content: center;
  transition: background .2s, transform .12s;
}
.hero-slider-arrow:hover { background: rgba(255,79,216,.28); }
.hero-slider-arrow:active { transform: scale(.92); }
.hero-slider-dots { display: flex; justify-content: center; gap: 7px; }
.hero-slider-dot { width: 9px; height: 9px; border-radius: 9999px; background: rgba(255,255,255,.4); border: none; cursor: pointer; padding: 0; transition: width .2s, background .2s; }
.hero-slider-dot.is-active { background: var(--neon-pink); width: 22px; }

/* ===========================================================================
   ▼▼▼ LIGHT CANDY Y2K — site.css 末尾追記でダーク→ライト全面上書き
   地=白/淡ピンク・文字=濃プラム・カード=純白＋ピンク影＋ホット細枠。
   白文字 #fff は「色付きボタン/写真上グラデ帯/バッジ/play-chip/Fujoho」だけ維持。
   =========================================================================== */

/* 0. base */
body { background-color: var(--bg-0); color: var(--text); }

/* 1. グロー系テキスト: 黒影除去＋ソリッドなビビッドピンク＋ごく淡い白/ピンク影 */
.neon-pink-glow {
  color: var(--neon-pink);
  text-shadow: 0 1px 0 rgba(255,255,255,.6), 0 0 10px rgba(219,39,119,.28);
}
.neon-lav-glow {
  color: var(--neon-pink-hot);
  text-shadow: 0 1px 0 rgba(255,255,255,.6), 0 0 10px rgba(192,132,252,.22);
}
.holo-text {
  background: linear-gradient(100deg, #ec4899 0%, #f9a8d4 38%, #db2777 70%, #c084fc 100%);
  background-size: 220% 100%;
  -webkit-background-clip: text; background-clip: text; color: transparent;
}
.text-mute     { color: var(--text-mute); }
.text-soft     { color: var(--text-soft); }
.text-pink     { color: var(--neon-pink); }
.text-lav-soft { color: var(--lav-soft); }
/* 点滅は維持しつつ黒影を白地向けに作り替え（可視性はアニメ非依存・常に不透明寄り） */
@keyframes neon-flicker {
  0%,18%,22%,25%,53%,57%,100% {
    text-shadow: 0 1px 0 rgba(255,255,255,.6), 0 0 10px rgba(219,39,119,.28);
    opacity: 1;
  }
  20%,24%,55% { text-shadow: none; opacity: .92; }
}

/* 2. ヘッダー（淡ピンクのガラス帯／白文字をやめ濃文字へ） */
.site-header { border-bottom: 1px solid rgba(236,72,153,.22); box-shadow: 0 4px 18px -10px rgba(219,39,119,.35); }
.brand-script { color: var(--neon-pink); text-shadow: 0 1px 0 rgba(255,255,255,.6), 0 0 10px rgba(219,39,119,.28); }
.brand-sub { border-left: 1px solid rgba(236,72,153,.30); }
.brand-since { color: var(--text-mute); }
.brand-genre { color: var(--neon-pink-hot); }
.brand-catch { color: var(--neon-pink); text-shadow: none; }
.site-nav a { color: var(--text-soft); }
.site-nav a:hover { color: var(--neon-pink); }
.header-reception { color: var(--text-mute); }
.header-tel-num { color: var(--text); }
.header-tel-num:hover { color: var(--neon-pink); }
.reserve-hours { color: var(--text-mute); }
.reserve-time { color: var(--text-soft); }
.burger { border: 1px solid rgba(236,72,153,.30); background: rgba(255,255,255,.6); }
.burger span { background: var(--neon-pink); }

/* 3. 色付きピル/予約/送信ボタン: 白地で映えるソリッドなホットピンクグラデ＋白文字維持
   ※ contacts.astro/top.astro の inline color:#fff（背景なし）はこのクラス背景に依存するため
     ここで必ず塗りつぶす（半透明グラスのままだと白文字が白地に溶ける） */
.glossy-pill,
.reserve-btn,
.offcanvas-reserve-btn,
.form-submit,
.footer-cta-tel,
.system-cta-btn {
  color: #fff;
  background: linear-gradient(180deg, #f9a8d4, #ec4899);
  border: 1px solid rgba(236,72,153,.55);
  box-shadow: 0 8px 22px -8px rgba(236,72,153,.55), inset 0 1px 0 rgba(255,255,255,.55);
}
.glossy-pill:hover,
.reserve-btn:hover,
.offcanvas-reserve-btn:hover,
.form-submit:hover {
  box-shadow: 0 12px 28px -8px rgba(236,72,153,.7), inset 0 1px 0 rgba(255,255,255,.7);
}
.section-more { color: #fff; }

/* 4. フッター */
.site-footer { background: var(--bg-1); }
.footer-sub { color: var(--text-mute); }
.footer-top-divider {
  background: linear-gradient(90deg, transparent 5%, #ec4899 35%, #c084fc 65%, transparent 95%);
  box-shadow: 0 0 10px rgba(219,39,119,.4);
}
.footer-cta-note { color: var(--text-soft); }
.footer-cta-note-em { color: var(--neon-pink); text-shadow: none; }
.footer-reception { color: var(--text-mute); }
.footer-links a { color: var(--text-soft); }
.footer-links a:hover { color: var(--neon-pink); }
.footer-copy { color: rgba(157,23,77,.78); }
.holo-divider {
  background: linear-gradient(90deg, transparent, var(--neon-pink), var(--lavender), transparent);
  box-shadow: 0 0 12px rgba(219,39,119,.4);
}

/* 5. オフキャンバス（白パネル＋濃文字） */
.offcanvas-overlay { background: rgba(80,7,36,.45); }
.offcanvas { background: var(--bg-0); border-left: 1px solid rgba(236,72,153,.30); box-shadow: -20px 0 60px rgba(219,39,119,.2); }
.offcanvas-head { border-bottom: 1px solid rgba(236,72,153,.15); }
.offcanvas-close { color: var(--neon-pink); }
.offcanvas-close:hover { color: var(--neon-pink-hot); }
.offcanvas-nav a { color: var(--text); border-bottom: 1px solid rgba(236,72,153,.10); }
.offcanvas-nav a:hover { background: rgba(236,72,153,.07); }
.offcanvas-foot { border-top: 1px solid rgba(236,72,153,.15); }
.offcanvas-tel-link { color: var(--text-soft); }

/* 6. 予約モーダル（白カード） */
.modal-overlay { background: rgba(80,7,36,.5); }
.modal-box {
  background: #fff;
  border: 1px solid rgba(236,72,153,.25);
  box-shadow: 0 0 0 1px rgba(192,132,252,.12) inset, 0 18px 60px -18px rgba(219,39,119,.4);
}
.modal-sub { color: var(--text-mute); }
.modal-close { color: var(--neon-pink); }
.modal-close:hover { color: var(--neon-pink-hot); }
.reserve-card { background: var(--bg-1); border: 1px solid rgba(236,72,153,.25); }
.reserve-card:hover { border-color: rgba(236,72,153,.6); background: var(--bg-2); }
.reserve-label { color: var(--text); }
.reserve-note { color: var(--text-mute); }

/* 7. 汎用カード・チップ・装飾 */
.glass-card {
  background: #fff;
  border: 1px solid rgba(236,72,153,.22);
  backdrop-filter: none; -webkit-backdrop-filter: none;
  box-shadow: 0 0 0 1px rgba(192,132,252,.10) inset, 0 18px 50px -18px rgba(219,39,119,.35);
}
.neon-chip { background: rgba(236,72,153,.08); border: 1px solid rgba(236,72,153,.35); color: var(--neon-pink); box-shadow: inset 0 1px 0 rgba(255,255,255,.6); }
.neon-chip.is-option { background: rgba(192,132,252,.10); border-color: rgba(192,132,252,.4); color: var(--neon-pink-hot); }
.neon-room {
  background:
    radial-gradient(60% 50% at 18% 12%, rgba(236,72,153,.10), transparent 70%),
    radial-gradient(55% 50% at 85% 80%, rgba(192,132,252,.10), transparent 72%),
    linear-gradient(180deg, #ffffff 0%, var(--bg-1) 55%, var(--bg-0) 100%);
}

/* 8. ページセクション/見出し/パンくず */
.page-section { background: var(--bg-0); }
.section-title { color: var(--text); }
.breadcrumb { color: var(--text-mute); }
.breadcrumb a { color: var(--neon-pink); }
.breadcrumb a:hover { color: var(--neon-pink-hot); }
.breadcrumb-sep { color: rgba(157,23,77,.45); }
.back-link { color: var(--neon-pink); }
.back-link:hover { color: var(--neon-pink-hot); }
.empty-state { color: var(--text-mute); }
.section-topper-line { background: linear-gradient(90deg, transparent, var(--neon-pink) 60%, var(--lavender)); box-shadow: 0 0 6px rgba(219,39,119,.3); }
.section-topper-stars { color: var(--neon-pink); text-shadow: 0 0 8px rgba(192,132,252,.4); }
@keyframes topper-twinkle {
  0%,100% { opacity: 1; text-shadow: 0 0 8px rgba(192,132,252,.4); }
  50%      { opacity: .82; text-shadow: 0 0 14px rgba(192,132,252,.5); }
}

/* 9. 女の子カード（白カード＋ホット枠＋やわらかピンク影。名前帯は写真上＝白文字維持） */
.girl-card {
  border: 1.5px solid rgba(236,72,153,.45);
  background: #fff;
  box-shadow: 0 0 0 1.5px rgba(192,132,252,.25), 0 10px 26px -12px rgba(219,39,119,.5);
}
.girl-card:hover { border-color: rgba(236,72,153,.75); }
.girl-card-no-photo { background: linear-gradient(160deg, var(--bg-2), var(--bg-1)); color: rgba(236,72,153,.35); }
.girl-card-info {
  background: linear-gradient(to top, rgba(236,72,153,.96) 0%, rgba(192,132,252,.86) 50%, rgba(249,168,212,.2) 82%, transparent 100%);
}
.girl-card-name { text-shadow: 0 1px 3px rgba(100,15,40,.55); }
.girl-card-size { text-shadow: 0 1px 3px rgba(100,15,40,.6); }
.girl-card-flag-icon { filter: drop-shadow(0 1px 2px rgba(80,7,36,.35)); }
.girl-card-tag-ico { background: rgba(236,72,153,.10); border: 1px solid rgba(236,72,153,.35); box-shadow: inset 0 1px 0 rgba(255,255,255,.6); }

/* スケジュール（タブ／日付帯／出勤バッジ） */
.schedule-tab { background: var(--bg-1); border: 1.5px solid rgba(236,72,153,.30); color: var(--text-soft); }
.schedule-tab.is-sat .schedule-tab-md, .schedule-tab.is-sat .schedule-tab-wd { color: var(--lavender); }
.schedule-tab.is-sun .schedule-tab-md, .schedule-tab.is-sun .schedule-tab-wd { color: var(--neon-pink); }
.schedule-tab.is-active .schedule-tab-md, .schedule-tab.is-active .schedule-tab-wd { color: #fff; }
.schedule-date-band { background: linear-gradient(135deg, #f9a8d4, #ec4899); color: #fff; }
.is-schedule .girl-card-worktime { background: rgba(236,72,153,.92); color: #fff; }
.girl-card-shukkin {
  background: linear-gradient(135deg, #f9a8d4, #ec4899);
  box-shadow: 0 2px 8px rgba(236,72,153,.35), inset 0 1px 0 rgba(255,255,255,.4);
}

/* 絞り込み・並び替えパネル */
.gpanel { border: 1px solid rgba(236,72,153,.25); background: #fff; }
.gpanel-head { color: var(--text); }
.gpanel-chev { color: var(--neon-pink); }
.gpanel-body { border-top: 1px solid rgba(236,72,153,.15); }
.gfield-label { color: var(--text-soft); }
.gsearch-input { border: 1px solid rgba(236,72,153,.3); background: #fff; color: var(--text); }
.gsearch-input::placeholder { color: var(--text-mute); }
.gsearch-input:focus { border-color: var(--neon-pink); box-shadow: 0 0 0 3px rgba(236,72,153,.15); }
.gtag-chip { border: 1px solid rgba(236,72,153,.35); background: rgba(236,72,153,.06); color: var(--text-soft); }
.gtag-chip.is-active { background: var(--neon-pink-hot); border-color: var(--neon-pink-hot); color: #fff; box-shadow: 0 0 12px -2px rgba(219,39,119,.55); }
.gcheck { color: var(--text-soft); }
.greset { border: 1px solid rgba(236,72,153,.3); color: var(--neon-pink); background: #fff; }
.gsort-label { color: var(--text); }
.gsort-btn { border: 1px solid rgba(236,72,153,.35); background: rgba(236,72,153,.05); color: var(--text-soft); }
.gsort-btn.is-active { background: var(--neon-pink-hot); border-color: var(--neon-pink-hot); color: #fff; box-shadow: 0 0 12px -2px rgba(219,39,119,.6); }
.gresult-count, .gresult-empty { color: var(--text-mute); }

/* 10. 女の子詳細 */
.girl-main-photo { border: 1px solid rgba(236,72,153,.3); box-shadow: 0 20px 50px -18px rgba(219,39,119,.4); }
.girl-thumb { border: 1px solid rgba(236,72,153,.25); }
.girl-detail-name { color: var(--text); }
.girl-detail-age { color: var(--neon-pink); }
.girl-hero-name { color: var(--neon-pink); text-shadow: 0 1px 0 rgba(255,255,255,.6), 0 0 14px rgba(219,39,119,.22); }
.girl-hero-age { color: var(--neon-pink-hot); }
.girl-flag-chip { color: #fff; background: var(--neon-pink); border: 1px solid var(--neon-pink); }
.girl-catch { color: var(--text-soft); border-left: 3px solid var(--neon-pink); background: var(--bg-1); }
.girl-tag-chip {
  background: linear-gradient(135deg, rgba(236,72,153,.14), rgba(192,132,252,.10));
  border: 1px solid rgba(236,72,153,.4);
  color: var(--neon-pink);
  box-shadow: 0 0 8px rgba(192,132,252,.15), inset 0 1px 0 rgba(255,255,255,.5);
}
.section-label { color: var(--neon-pink); border-bottom: 1px solid rgba(236,72,153,.25); }
.girl-size-label { color: var(--text-mute); }
.girl-size-val { color: var(--text); }
.girl-profile-table th, .girl-profile-table td { border-bottom: 1px solid rgba(236,72,153,.12); }
.girl-profile-table th { color: var(--neon-pink); }
.girl-profile-table td { color: var(--text-soft); }
/* エロポイント：白地でも映えるソリッドピンク（黒影→淡ローズ）。chipは色付き面なので白文字維持 */
.play-label { color: var(--neon-pink); border-bottom-color: rgba(236,72,153,.45); text-shadow: none; }
.play-chip {
  color: #fff;
  background: linear-gradient(135deg, #ec4899, #f9a8d4);
  border: 1px solid rgba(236,72,153,.6);
  box-shadow: 0 4px 14px -3px rgba(219,39,119,.5), inset 0 1px 0 rgba(255,255,255,.4);
  text-shadow: 0 1px 2px rgba(100,15,40,.4);
}
.play-chip.is-option { background: linear-gradient(135deg, #f9a8d4, #ffa6dd); border-color: rgba(192,132,252,.6); }
.comment-box { background: var(--bg-1); border: 1px solid rgba(236,72,153,.18); color: var(--text-soft); }
.girl-shop-comment { color: var(--text-soft); }

/* 11. お知らせ */
.news-item { background: #fff; border: 1px solid rgba(236,72,153,.18); }
.news-item:hover { border-color: rgba(236,72,153,.5); background: var(--bg-1); }
.news-thumb { border: 1px solid rgba(236,72,153,.15); }
.news-no-thumb { background: linear-gradient(160deg, var(--bg-2), var(--bg-1)); border: 1px solid rgba(236,72,153,.15); }
.news-date { color: var(--neon-pink); }
.news-title { color: var(--text); }
.news-item:hover .news-title { color: var(--neon-pink); }
.news-excerpt { color: var(--text-mute); }
.news-detail-title { color: var(--text); }
.news-detail-date { color: var(--neon-pink); }
.news-detail-thumb { border: 1px solid rgba(236,72,153,.2); }
.prose-neon { color: var(--text-soft); }
.prose-neon strong { color: var(--neon-pink); }

/* 12. ヒーロー（白地では黒スクリム不要→淡ピンクのソフト発光に） */
.hero-bg {
  background-image:
    linear-gradient(135deg, rgba(255,255,255,.5) 0%, rgba(253,230,248,.4) 55%, rgba(253,242,248,.5) 100%),
    url('/img/indexbg.jpg');
  background-blend-mode: lighten, normal;
}
.hero-scrim {
  background:
    radial-gradient(72% 58% at 50% 58%, rgba(255,255,255,.55) 0%, rgba(253,232,248,.25) 52%, transparent 80%),
    radial-gradient(58% 50% at 12% 8%, rgba(236,72,153,.12), transparent 68%),
    radial-gradient(55% 50% at 88% 90%, rgba(192,132,252,.12), transparent 70%),
    linear-gradient(180deg, rgba(255,249,251,.85) 0%, rgba(255,249,251,.15) 14%, transparent 24%),
    linear-gradient(0deg, var(--bg-1) 0%, rgba(253,242,248,.3) 10%, transparent 20%);
}
.sparkle { color: var(--neon-pink); text-shadow: 0 0 6px var(--neon-pink-hot), 0 0 10px var(--lavender); }
.cta-enter { filter: drop-shadow(0 0 14px rgba(219,39,119,.35)); }
.cta-enter:hover { filter: drop-shadow(0 0 24px rgba(219,39,119,.55)); }

/* 13. Top セクション地（白↔淡ピンクで階調） */
.top-news-section { background: var(--bg-1); }
.top-girls-section { background: var(--bg-0); }
.top-banner-section { background: var(--bg-1); }
.bottom-banner-section { background: var(--bg-0); }
.hero-slider-section { background: var(--bg-0); }
.fujoho-section { background: var(--bg-0); }
.fujoho-card { background: #fff; border: 1px solid rgba(236,72,153,.2); box-shadow: 0 12px 32px -14px rgba(219,39,119,.4); }
.fujoho-scroll-hint { color: var(--neon-pink); }
.fujoho-arrow { background: rgba(236,72,153,.10); color: var(--neon-pink); border: 1px solid rgba(236,72,153,.4); }
.fujoho-arrow:hover { background: rgba(236,72,153,.2); }
.fujoho-dot { background: rgba(236,72,153,.25); }
.fujoho-dot.is-active { background: var(--neon-pink); }
.hero-banner img { border: 1px solid rgba(236,72,153,.22); box-shadow: 0 6px 18px -10px rgba(219,39,119,.4); }
.bottom-banner-item { box-shadow: 0 2px 10px rgba(219,39,119,.22); }
.bottom-banner-item:hover { box-shadow: 0 6px 16px rgba(236,72,153,.28); }
.hero-slider-arrow { background: rgba(236,72,153,.10); color: var(--neon-pink); border: 1px solid rgba(236,72,153,.4); }
.hero-slider-arrow:hover { background: rgba(236,72,153,.22); }
.hero-slider-dot { background: rgba(236,72,153,.25); }
.hero-slider-dot.is-active { background: var(--neon-pink); }

/* 14. System / 料金 */
.course-row { background: #fff; border: 1px solid rgba(236,72,153,.18); }
.course-time { color: var(--text); }
.course-desc { color: var(--text-mute); }
.course-price { color: var(--neon-pink); text-shadow: none; }
.extras-list li { color: var(--text-soft); border-bottom: 1px solid rgba(236,72,153,.10); }
.extras-list li::before { color: var(--neon-pink); }
.system-note { background: var(--bg-1); border: 1px solid rgba(192,132,252,.2); color: var(--text-soft); }
.price-banner {
  background: linear-gradient(135deg, #fce7f3, #f9cfe7);
  border: 1px solid rgba(236,72,153,.3);
  box-shadow: inset 0 1px 0 rgba(255,255,255,.7), 0 16px 40px -22px rgba(219,39,119,.4);
}
.price-banner-badge { color: #fff; background: linear-gradient(135deg, #c084fc, #f9a8d4); }
.price-banner-jp { color: var(--text-soft); }
.price-group-title { color: var(--text); }
.price-group-desc { color: var(--text-mute); }
.price-row { background: #fff; border: 1px solid rgba(236,72,153,.18); }
.price-row-feature { background: linear-gradient(135deg, #fce7f3, #f9cfe7); border-color: rgba(236,72,153,.35); }
.price-row-time { color: var(--text); }
.price-row-cond { color: var(--text-mute); }
.price-was { color: var(--text-mute); text-decoration-color: rgba(236,72,153,.55); }
.price-now { color: var(--neon-pink); text-shadow: none; }
.fee-card { background: #fff; border: 1px solid rgba(236,72,153,.18); }
.fee-row { border-bottom: 1px solid rgba(236,72,153,.10); }
.fee-name { color: var(--text-soft); }
.fee-name small { color: var(--text-mute); }
.fee-amount { color: var(--neon-pink); text-shadow: none; }
.fee-amount small { color: var(--text-mute); }
.zone-card { background: #fff; border: 1px solid rgba(192,132,252,.22); }
.zone-fee { color: var(--neon-pink); text-shadow: none; }
.zone-area { color: var(--text-soft); }
.cancel-table th, .cancel-table td { border-bottom: 1px solid rgba(236,72,153,.10); }
.cancel-table th { color: var(--text-soft); }
.cancel-table td { color: var(--neon-pink); }
.notice-box { background: var(--bg-1); border: 1px solid rgba(192,132,252,.22); }
.notice-list li { color: var(--text-soft); }
.notice-list li::before { color: var(--neon-pink); }
.notice-foot { color: var(--text-mute); }
.terms-subtitle { color: var(--text-mute); }
.terms-head { color: var(--neon-pink); }
.terms-text { color: var(--text-soft); }
.terms-strong { color: var(--neon-pink-hot); }
.terms-note { color: var(--text-mute); }

/* 15. Howto */
.step-num { color: #fff; background: linear-gradient(135deg, #ec4899, #f9a8d4); box-shadow: 0 4px 14px -4px rgba(219,39,119,.45); }
.step-title { color: var(--text); }
.step-desc { color: var(--text-mute); }
.facility-card { background: #fff; border: 1px solid rgba(236,72,153,.2); box-shadow: inset 0 1px 0 rgba(255,255,255,.6); }
.facility-card-title { color: var(--text); }
.facility-card-lead { color: var(--text-soft); }
.facility-card-body { color: var(--text-mute); }
.facility-card-body strong { color: var(--neon-pink); }
.facility-points li { color: var(--text-soft); }
.facility-points li::before { color: var(--neon-pink); }

/* 16. Contacts フォーム */
.form-label { color: var(--text-soft); }
.form-required { color: var(--neon-pink); }
.form-control { color: var(--text); background: #fff; border: 1px solid rgba(236,72,153,.3); }
.form-control:focus { border-color: rgba(236,72,153,.75); background: var(--bg-1); }
.form-control::placeholder { color: var(--text-mute); }
.form-alt-cta { border-top: 1px solid rgba(236,72,153,.12); }
.form-alt-cta p { color: var(--text-mute); }
.form-done-msg { background: var(--bg-1); border: 1px solid rgba(236,72,153,.2); }

/* 17. Sitemap */
.sitemap-group-title { color: var(--neon-pink); border-bottom: 1px solid rgba(236,72,153,.25); }
.sitemap-links a { color: var(--text-soft); border-bottom: 1px solid rgba(236,72,153,.08); }
.sitemap-links a:hover { color: var(--neon-pink); }

/* 18. focus / reduce-motion 可視性維持 */
:focus-visible { outline: 3px solid var(--neon-pink); }
@media (prefers-reduced-motion: reduce) {
  .holo-text { animation: none !important; }
  .reveal, .reveal.flicker { opacity: 1 !important; }
}


/* ===========================================================================
   ▼▼▼ PASTEL RAINBOW Y2K — ピンクベース7色パステルレインボー
   =========================================================================== */

/* 追加カラー変数（7色・ビビッドキャンディ） */
:root {
  --p-pink:   #f472b6;   /* pink-400 */
  --p-purple: #a855f7;   /* purple-500 */
  --p-blue:   #60a5fa;   /* blue-400 */
  --p-mint:   #34d399;   /* emerald-400 */
  --p-yellow: #fbbf24;   /* amber-400 */
  --p-peach:  #fb7185;   /* rose-400 */
  --p-sky:    #22d3ee;   /* cyan-400 */
}

/* holo-text: 7色ビビッドキャンディアニメ */
.holo-text {
  background: linear-gradient(100deg,
    #f472b6 0%, #a855f7 15%, #60a5fa 30%,
    #34d399 46%, #fbbf24 62%, #fb7185 78%,
    #f472b6 100%);
  background-size: 200% 100%;
  -webkit-background-clip: text; background-clip: text; color: transparent;
  animation: rainbow-shift 4s linear infinite;
}
@keyframes rainbow-shift {
  0%   { background-position: 0% 50%; }
  100% { background-position: 200% 50%; }
}

/* セクション区切り装飾: ビビッドレインボー */
.section-topper-line {
  background: linear-gradient(90deg,
    transparent 0%,
    #f472b6 15%, #a855f7 28%, #60a5fa 42%,
    #34d399 55%, #fbbf24 68%, #fb7185 82%,
    transparent 100%);
  height: 2px;
  box-shadow: 0 0 10px rgba(168,85,247,.55), 0 0 5px rgba(244,114,182,.4);
}
.section-topper-stars { color: #a855f7; }

/* キラキラ: ビビッド7色 */
.sparkle:nth-child(1) { color: #f472b6; text-shadow: 0 0 10px rgba(244,114,182,.9); }
.sparkle:nth-child(2) { color: #a855f7; text-shadow: 0 0 10px rgba(168,85,247,.9); }
.sparkle:nth-child(3) { color: #60a5fa; text-shadow: 0 0 10px rgba(96,165,250,.9); }
.sparkle:nth-child(4) { color: #fb7185; text-shadow: 0 0 10px rgba(251,113,133,.9); }
.sparkle:nth-child(5) { color: #34d399; text-shadow: 0 0 10px rgba(52,211,153,.9); }
.sparkle:nth-child(6) { color: #fbbf24; text-shadow: 0 0 10px rgba(251,191,36,.9); }

/* 女の子カード: ビビッドレインボーグロー枠 */
.girl-card {
  border-color: rgba(244,114,182,.65);
  box-shadow:
    0 0 0 1.5px rgba(168,85,247,.35),
    0 10px 26px -12px rgba(244,114,182,.5);
}
.girl-card:hover {
  border-color: rgba(244,114,182,.9);
  box-shadow:
    0 0 0 2px rgba(168,85,247,.55),
    0 0 0 4px rgba(96,165,250,.25),
    0 12px 30px -10px rgba(244,114,182,.65);
}

/* 名前帯: ビビッドピンク→パープル→消えるY2K */
.girl-card-info {
  background: linear-gradient(to top,
    rgba(244,114,182,.98) 0%,
    rgba(168,85,247,.88) 38%,
    rgba(96,165,250,.22) 65%,
    transparent 100%);
}

/* タグチップ: ビビッド3色ローテーション */
.girl-tag-chip:nth-child(3n+1) {
  background: linear-gradient(135deg, rgba(244,114,182,.25), rgba(168,85,247,.15));
  border-color: rgba(244,114,182,.55); color: #be185d;
}
.girl-tag-chip:nth-child(3n+2) {
  background: linear-gradient(135deg, rgba(96,165,250,.25), rgba(168,85,247,.18));
  border-color: rgba(96,165,250,.6); color: #2563eb;
}
.girl-tag-chip:nth-child(3n) {
  background: linear-gradient(135deg, rgba(52,211,153,.25), rgba(34,211,238,.18));
  border-color: rgba(52,211,153,.6); color: #059669;
}

/* プレイチップ: ビビッドキャンディ */
.play-chip {
  background: linear-gradient(135deg, #f472b6, #a855f7);
  border-color: rgba(168,85,247,.6);
  box-shadow: 0 4px 14px -3px rgba(168,85,247,.55), inset 0 1px 0 rgba(255,255,255,.45);
}
.play-chip.is-option {
  background: linear-gradient(135deg, #60a5fa, #a855f7);
  border-color: rgba(96,165,250,.6);
  box-shadow: 0 4px 12px -3px rgba(96,165,250,.55), inset 0 1px 0 rgba(255,255,255,.45);
}

/* neon-chip: ビビッド */
.neon-chip {
  background: rgba(244,114,182,.2);
  border-color: rgba(244,114,182,.55);
  color: #be185d;
}
.neon-chip.is-option {
  background: rgba(168,85,247,.2);
  border-color: rgba(168,85,247,.55);
  color: #7c3aed;
}

/* スケジュール日付帯: ビビッドレインボー */
.schedule-date-band {
  background: linear-gradient(135deg, #f472b6, #a855f7, #60a5fa);
  color: #fff;
  text-shadow: 0 1px 3px rgba(0,0,0,.2);
}
.is-schedule .girl-card-worktime {
  background: linear-gradient(135deg, rgba(244,114,182,.95), rgba(168,85,247,.85));
  color: #fff;
  text-shadow: 0 1px 2px rgba(0,0,0,.15);
}

/* 出勤バッジ: ビビッドミント→シアン */
.girl-card-shukkin {
  background: linear-gradient(135deg, #34d399, #22d3ee);
  color: #fff;
  font-weight: 700;
  text-shadow: 0 1px 2px rgba(0,0,0,.15);
  box-shadow: 0 2px 8px rgba(52,211,153,.55);
}

/* ステップ番号: ビビッドレインボー */
.step-num {
  background: linear-gradient(135deg, #f472b6, #a855f7, #60a5fa);
  box-shadow: 0 4px 16px -4px rgba(168,85,247,.65);
}

/* 価格バッジ: パープル→シアン */
.price-banner-badge {
  background: linear-gradient(135deg, #a855f7, #22d3ee);
  color: #fff;
  text-shadow: 0 1px 2px rgba(0,0,0,.15);
}

/* フッター・holo区切り線: ビビッド7色レインボー */
.footer-top-divider {
  display: block;
  height: 3px;
  border: none;
  margin: 48px 0 48px;
  background: linear-gradient(90deg,
    transparent 0%,
    #f472b6 12%, #a855f7 25%, #60a5fa 38%,
    #34d399 51%, #fbbf24 64%, #fb7185 77%,
    #f472b6 90%, transparent 100%);
  box-shadow:
    0 0 10px rgba(244,114,182,.8),
    0 0 20px rgba(168,85,247,.6),
    0 0 35px rgba(96,165,250,.4);
  border-radius: 2px;
}
.holo-divider {
  background: linear-gradient(90deg,
    transparent, #f472b6, #a855f7, #60a5fa,
    #34d399, #fbbf24, #fb7185, transparent);
  box-shadow: 0 0 12px rgba(168,85,247,.6);
}

/* ===========================================================================
   ▼▼▼ RAINBOW GRID — カードグリッド6色レインボー + ページ全体カラフル化
   =========================================================================== */

/* ページ背景: 超薄7色グラデで「白に近いが虹」感 */
body {
  background: linear-gradient(160deg,
    #fff9fb 0%, #fdf4ff 20%, #f0f9ff 40%,
    #f0fdf6 60%, #fffdf0 80%, #fff9fb 100%);
  background-attachment: fixed;
}

/* === 女の子カード 6色レインボーローテーション === */

/* ① ピンク（デフォルト） */
.girl-card:nth-child(6n+1) {
  border-color: rgba(244,114,182,.7);
  box-shadow: 0 0 0 1.5px rgba(168,85,247,.3), 0 8px 24px -10px rgba(244,114,182,.55);
}
.girl-card:nth-child(6n+1):hover {
  box-shadow: 0 0 0 2.5px rgba(244,114,182,.8), 0 0 0 5px rgba(168,85,247,.2), 0 10px 28px -8px rgba(244,114,182,.7);
}
.girl-card:nth-child(6n+1) .girl-card-info {
  background: linear-gradient(to top, rgba(244,114,182,.98) 0%, rgba(168,85,247,.85) 38%, rgba(96,165,250,.18) 65%, transparent 100%);
}

/* ② パープル */
.girl-card:nth-child(6n+2) {
  border-color: rgba(168,85,247,.7);
  box-shadow: 0 0 0 1.5px rgba(96,165,250,.3), 0 8px 24px -10px rgba(168,85,247,.55);
}
.girl-card:nth-child(6n+2):hover {
  box-shadow: 0 0 0 2.5px rgba(168,85,247,.85), 0 0 0 5px rgba(96,165,250,.25), 0 10px 28px -8px rgba(168,85,247,.7);
}
.girl-card:nth-child(6n+2) .girl-card-info {
  background: linear-gradient(to top, rgba(168,85,247,.98) 0%, rgba(96,165,250,.85) 38%, rgba(52,211,153,.18) 65%, transparent 100%);
}

/* ③ ブルー */
.girl-card:nth-child(6n+3) {
  border-color: rgba(96,165,250,.7);
  box-shadow: 0 0 0 1.5px rgba(34,211,238,.3), 0 8px 24px -10px rgba(96,165,250,.55);
}
.girl-card:nth-child(6n+3):hover {
  box-shadow: 0 0 0 2.5px rgba(96,165,250,.85), 0 0 0 5px rgba(34,211,238,.25), 0 10px 28px -8px rgba(96,165,250,.7);
}
.girl-card:nth-child(6n+3) .girl-card-info {
  background: linear-gradient(to top, rgba(96,165,250,.98) 0%, rgba(34,211,238,.85) 38%, rgba(168,85,247,.18) 65%, transparent 100%);
}

/* ④ シアン→ミント */
.girl-card:nth-child(6n+4) {
  border-color: rgba(34,211,238,.7);
  box-shadow: 0 0 0 1.5px rgba(52,211,153,.3), 0 8px 24px -10px rgba(34,211,238,.5);
}
.girl-card:nth-child(6n+4):hover {
  box-shadow: 0 0 0 2.5px rgba(34,211,238,.85), 0 0 0 5px rgba(52,211,153,.25), 0 10px 28px -8px rgba(34,211,238,.65);
}
.girl-card:nth-child(6n+4) .girl-card-info {
  background: linear-gradient(to top, rgba(34,211,238,.98) 0%, rgba(52,211,153,.85) 38%, rgba(251,191,36,.18) 65%, transparent 100%);
}

/* ⑤ ミント→イエロー */
.girl-card:nth-child(6n+5) {
  border-color: rgba(52,211,153,.7);
  box-shadow: 0 0 0 1.5px rgba(251,191,36,.3), 0 8px 24px -10px rgba(52,211,153,.5);
}
.girl-card:nth-child(6n+5):hover {
  box-shadow: 0 0 0 2.5px rgba(52,211,153,.85), 0 0 0 5px rgba(251,191,36,.25), 0 10px 28px -8px rgba(52,211,153,.65);
}
.girl-card:nth-child(6n+5) .girl-card-info {
  background: linear-gradient(to top, rgba(52,211,153,.98) 0%, rgba(251,191,36,.7) 38%, rgba(251,113,133,.18) 65%, transparent 100%);
}

/* ⑥ コーラル→ピンク */
.girl-card:nth-child(6n) {
  border-color: rgba(251,113,133,.7);
  box-shadow: 0 0 0 1.5px rgba(244,114,182,.3), 0 8px 24px -10px rgba(251,113,133,.5);
}
.girl-card:nth-child(6n):hover {
  box-shadow: 0 0 0 2.5px rgba(251,113,133,.85), 0 0 0 5px rgba(244,114,182,.25), 0 10px 28px -8px rgba(251,113,133,.65);
}
.girl-card:nth-child(6n) .girl-card-info {
  background: linear-gradient(to top, rgba(251,113,133,.98) 0%, rgba(244,114,182,.85) 38%, rgba(168,85,247,.18) 65%, transparent 100%);
}

/* 名前サイズ帯の文字は常に白+影 */
.girl-card-info .girl-name,
.girl-card-info .girl-size { color: #fff; text-shadow: 0 1px 4px rgba(0,0,0,.3); }

/* ===========================================================================
   ▼▼▼ MOBILE ANIMATION — スマホでも動く3種アニメ（hover不要）
   =========================================================================== */

/* ① 名前帯シマー — 斜め光が帯を流れるホログラム効果（自動ループ） */
/* position:absolute は line 764 のベースCSSを維持（写真オーバーレイ用）。overflow:hiddenのみ追加 */
.girl-card-info {
  overflow: hidden;
}
.girl-card-info::after {
  content: '';
  position: absolute;
  top: 0; left: -80%;
  width: 55%; height: 100%;
  background: linear-gradient(to right,
    transparent 0%,
    rgba(255,255,255,.08) 30%,
    rgba(255,255,255,.42) 50%,
    rgba(255,255,255,.08) 70%,
    transparent 100%);
  transform: skewX(-18deg);
  animation: name-shimmer 3.2s ease-in-out infinite;
  pointer-events: none;
}
@keyframes name-shimmer {
  0%, 55%  { left: -80%; opacity: 0; }
  58%      { opacity: 1; }
  100%     { left: 130%; opacity: 0; }
}

/* ② カード登場アニメ — 下からぽんと飛び出す（ページロード時） */
@keyframes card-entrance {
  from { opacity: 0; transform: scale(.88); }
  to   { opacity: 1; transform: scale(1); }
}
.girl-card {
  animation: card-entrance .42s cubic-bezier(.34, 1.56, .64, 1) both;
}
.girl-card:nth-child(1) { animation-delay: .03s; }
.girl-card:nth-child(2) { animation-delay: .08s; }
.girl-card:nth-child(3) { animation-delay: .13s; }
.girl-card:nth-child(4) { animation-delay: .18s; }
.girl-card:nth-child(5) { animation-delay: .23s; }
.girl-card:nth-child(6) { animation-delay: .28s; }
.girl-card:nth-child(7) { animation-delay: .33s; }
.girl-card:nth-child(8) { animation-delay: .38s; }
.girl-card:nth-child(n+9) { animation-delay: .43s; }

/* ③ タップバウンス — 押したらぷっくり押し込まれてポンと戻る */
.girl-card {
  transition: transform .18s cubic-bezier(.34, 1.56, .64, 1),
              box-shadow .25s ease;
}
.girl-card:active {
  transform: scale(.95) !important;
  transition: transform .08s ease !important;
}

/* キラキラのふわふわアニメ（セクション装飾） */
@keyframes sparkle-float {
  0%,100% { transform: translateY(0) scale(1);   opacity: .9; }
  33%      { transform: translateY(-3px) scale(1.15); opacity: 1; }
  66%      { transform: translateY(1px) scale(.9); opacity: .75; }
}
.sparkle:nth-child(1) { animation: sparkle-float 2.1s ease-in-out infinite; }
.sparkle:nth-child(2) { animation: sparkle-float 2.6s ease-in-out .4s infinite; }
.sparkle:nth-child(3) { animation: sparkle-float 1.9s ease-in-out .8s infinite; }
.sparkle:nth-child(4) { animation: sparkle-float 2.4s ease-in-out 1.1s infinite; }
.sparkle:nth-child(5) { animation: sparkle-float 2.2s ease-in-out .3s infinite; }
.sparkle:nth-child(6) { animation: sparkle-float 2.8s ease-in-out .7s infinite; }

/* ===========================================================================
   ▼▼▼ NEWS CARDS — ニュースカード6色レインボー + スマホアニメ
   =========================================================================== */

/* 共通: タップバウンス + 登場アニメ */
@keyframes news-entrance {
  from { opacity: 0; transform: translateX(-14px) scale(.96); }
  to   { opacity: 1; transform: translateX(0) scale(1); }
}
.news-item {
  animation: news-entrance .4s cubic-bezier(.34,1.56,.64,1) both;
  transition: transform .18s cubic-bezier(.34,1.56,.64,1), box-shadow .25s ease;
  border-left: 4px solid transparent;
  position: relative;
  overflow: hidden;
}
.news-item:active {
  transform: scale(.97) !important;
  transition: transform .08s ease !important;
}
.news-item:nth-child(1) { animation-delay: .04s; }
.news-item:nth-child(2) { animation-delay: .10s; }
.news-item:nth-child(3) { animation-delay: .16s; }
.news-item:nth-child(4) { animation-delay: .22s; }
.news-item:nth-child(n+5) { animation-delay: .28s; }

/* サムネシマー */
.news-item::before {
  content: '';
  position: absolute;
  top: 0; left: -70%;
  width: 45%; height: 100%;
  background: linear-gradient(to right,
    transparent, rgba(255,255,255,.28) 50%, transparent);
  transform: skewX(-15deg);
  animation: news-shimmer 4s ease-in-out infinite;
  pointer-events: none;
  z-index: 1;
}
@keyframes news-shimmer {
  0%, 60%  { left: -70%; opacity: 0; }
  62%      { opacity: 1; }
  100%     { left: 120%; opacity: 0; }
}

/* ① ピンク */
.news-item:nth-child(6n+1) {
  background: rgba(244,114,182,.07);
  border-left-color: #f472b6;
  box-shadow: 0 2px 14px -4px rgba(244,114,182,.3), inset 0 0 0 1px rgba(244,114,182,.15);
}
.news-item:nth-child(6n+1) .news-date { color: #db2777; }

/* ② パープル */
.news-item:nth-child(6n+2) {
  background: rgba(168,85,247,.07);
  border-left-color: #a855f7;
  box-shadow: 0 2px 14px -4px rgba(168,85,247,.3), inset 0 0 0 1px rgba(168,85,247,.15);
}
.news-item:nth-child(6n+2) .news-date { color: #7c3aed; }

/* ③ ブルー */
.news-item:nth-child(6n+3) {
  background: rgba(96,165,250,.07);
  border-left-color: #60a5fa;
  box-shadow: 0 2px 14px -4px rgba(96,165,250,.3), inset 0 0 0 1px rgba(96,165,250,.15);
}
.news-item:nth-child(6n+3) .news-date { color: #2563eb; }

/* ④ シアン */
.news-item:nth-child(6n+4) {
  background: rgba(34,211,238,.07);
  border-left-color: #22d3ee;
  box-shadow: 0 2px 14px -4px rgba(34,211,238,.28), inset 0 0 0 1px rgba(34,211,238,.15);
}
.news-item:nth-child(6n+4) .news-date { color: #0891b2; }

/* ⑤ ミント */
.news-item:nth-child(6n+5) {
  background: rgba(52,211,153,.07);
  border-left-color: #34d399;
  box-shadow: 0 2px 14px -4px rgba(52,211,153,.28), inset 0 0 0 1px rgba(52,211,153,.15);
}
.news-item:nth-child(6n+5) .news-date { color: #059669; }

/* ⑥ イエロー */
.news-item:nth-child(6n) {
  background: rgba(251,191,36,.07);
  border-left-color: #fbbf24;
  box-shadow: 0 2px 14px -4px rgba(251,191,36,.28), inset 0 0 0 1px rgba(251,191,36,.2);
}
.news-item:nth-child(6n) .news-date { color: #d97706; }

/* reduced-motion 配慮 */
@media (prefers-reduced-motion: reduce) {
  .girl-card { animation: none; }
  .girl-card-info::after { animation: none; }
  .sparkle { animation: none; }
  .news-item { animation: none; }
  .news-item::before { animation: none; }
  .brand-script { animation: none; }
}

/* ===========================================================================
   ▼▼▼ ロゴ ピカピカ — Admi レインボーY2Kホログラム
   =========================================================================== */
@keyframes logo-rainbow {
  from { background-position: 0% center; }
  to   { background-position: 300% center; }
}
.brand-script {
  background: linear-gradient(100deg,
    #ff4fd8 0%, #a855f7 18%, #60a5fa 35%,
    #34d399 50%, #fbbf24 65%, #fb7185 82%, #ff4fd8 100%);
  background-size: 300% auto;
  -webkit-background-clip: text;
  background-clip: text;
  color: transparent;
  text-shadow: none;
  filter:
    drop-shadow(0 0 6px rgba(255,79,216,.95))
    drop-shadow(0 0 18px rgba(168,85,247,.65));
  animation: logo-rainbow 2.8s linear infinite;
}

/* ===========================================================================
   ▼▼▼ ニュースカード：左線と同色の枠線
   =========================================================================== */
.news-item:nth-child(6n+1) { border-color: rgba(244,114,182,.55); }
.news-item:nth-child(6n+2) { border-color: rgba(168, 85,247,.52); }
.news-item:nth-child(6n+3) { border-color: rgba( 96,165,250,.52); }
.news-item:nth-child(6n+4) { border-color: rgba( 34,211,238,.48); }
.news-item:nth-child(6n+5) { border-color: rgba( 52,211,153,.48); }
.news-item:nth-child(6n)   { border-color: rgba(251,191, 36,.48); }

/* ===========================================================================
   ▼▼▼ 料金カード お得感強化
   =========================================================================== */
/* 4色グラデーション rotation */
.price-row:nth-child(1) { background: linear-gradient(135deg, rgba(244,114,182,.10) 0%, rgba(168,85,247,.06) 100%); border-color: rgba(244,114,182,.45); }
.price-row:nth-child(2) { background: linear-gradient(135deg, rgba(168,85,247,.10) 0%, rgba(96,165,250,.06) 100%);  border-color: rgba(168,85,247,.42); }
.price-row:nth-child(3) { background: linear-gradient(135deg, rgba(96,165,250,.10) 0%, rgba(52,211,153,.06) 100%);  border-color: rgba(96,165,250,.42); }
.price-row:nth-child(4) { background: linear-gradient(135deg, rgba(52,211,153,.10) 0%, rgba(251,191,36,.06) 100%);  border-color: rgba(52,211,153,.40); }

/* 人気 No.1 カード強調 */
.price-row-popular {
  box-shadow: 0 0 0 2px rgba(96,165,250,.7), 0 8px 28px -8px rgba(96,165,250,.45);
}

/* 人気バッジ */
.price-popular-badge {
  display: inline-block;
  font-size: .65rem;
  font-weight: 800;
  letter-spacing: .04em;
  padding: 2px 8px;
  border-radius: 20px;
  background: linear-gradient(90deg, #60a5fa, #34d399);
  color: #fff;
  margin-right: 6px;
  vertical-align: middle;
  text-shadow: none;
}

/* OFF バッジ */
.price-off-badge {
  display: inline-block;
  margin-top: 3px;
  font-size: .7rem;
  font-weight: 800;
  letter-spacing: .03em;
  padding: 2px 9px;
  border-radius: 20px;
  background: linear-gradient(90deg, #fbbf24, #f97316);
  color: #fff;
  text-shadow: 0 1px 2px rgba(0,0,0,.18);
}

/* 現在価格を少し大きく */
.price-table .price-now {
  font-size: 1.6rem;
}
.price-table .price-row-time {
  font-size: 1.125rem;
}

/* === 前へ戻るボタン === */
.back-bar {
  max-width: 860px;
  margin: 14px auto 0;
  padding: 0 20px;
}
.back-bar-btn {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  padding: 7px 16px;
  border-radius: 9999px;
  border: 1px solid rgba(183,143,255,.35);
  background: rgba(183,143,255,.08);
  color: var(--lav-soft, #b78fff);
  font-size: .8125rem;
  font-weight: 700;
  cursor: pointer;
  touch-action: manipulation;
  -webkit-tap-highlight-color: transparent;
  transition: background .15s, color .15s;
  font-family: inherit;
}
.back-bar-btn:hover { background: rgba(255,79,216,.14); color: var(--neon-pink, #ff4fd8); }
