/*
Theme Name: SHIZUKU
Theme URI: https://club-shizuku-ikebukuro.com/
Description: 雫 -SHIZUKU-（池袋 会員制クラブ）専用テーマ。キャストと店舗情報は管理画面から更新できます。
Version: 1.0.5
Requires at least: 6.0
Requires PHP: 7.4
Author: SHIZUKU
Text Domain: shizuku
*/
*{box-sizing:border-box;}
html{scroll-behavior:smooth;}
body{margin:0;background:#06080c;color:#ece8e0;font-family:"Shippori Mincho",serif;-webkit-font-smoothing:antialiased;}
a{color:inherit;text-decoration:none;}
a:hover{color:#ffffff;}
img{display:block;}

/* visually hidden, still read by search engines / screen readers */
.sr-only{
  position:absolute;
  width:1px;
  height:1px;
  padding:0;
  margin:-1px;
  overflow:hidden;
  clip:rect(0,0,0,0);
  white-space:nowrap;
  border:0;
}

@keyframes riseIn{
  from{opacity:0;transform:translateY(14px);}
  to{opacity:1;transform:none;}
}

/* ---- header nav / hamburger menu ---- */

.site-header{transition:background .35s ease, padding .35s ease;}
.site-header.scrolled{
  background:rgba(6,8,12,.9) !important;
  -webkit-backdrop-filter:blur(8px);
  backdrop-filter:blur(8px);
  padding-top:14px !important;
  padding-bottom:14px !important;
}

.nav-desktop{
  display:flex;
  flex-wrap:nowrap;
  white-space:nowrap;
  justify-content:flex-end;
  gap:clamp(14px,1.8vw,30px);
  font-family:'Cormorant Garamond',serif;
  font-size:12px;
  letter-spacing:.26em;
  color:#cfcbc3;
}

.burger{
  display:none;
  flex-direction:column;
  justify-content:center;
  gap:7px;
  width:46px;
  height:46px;
  padding:0 8px;
  margin:0;
  cursor:pointer;
  border:none;
  outline:none;
  border-radius:0;
  box-shadow:none;
  background:none;
  background-color:transparent;
  appearance:none;
  -webkit-appearance:none;
  -webkit-tap-highlight-color:transparent;
}

.bar{
  display:block;
  width:100%;
  height:1px;
  background:#ece8e0;
  transition:transform .35s ease, opacity .3s ease;
}

.burger.open .bar-top{transform:translateY(8px) rotate(45deg);}
.burger.open .bar-mid{opacity:0;}
.burger.open .bar-bot{transform:translateY(-8px) rotate(-45deg);}

/* header tagline: hidden where it would run into the menu or the burger button
   (narrow desktop with the full menu, and phones) */
@media (min-width:1025px) and (max-width:1180px), (max-width:460px){
  .header-tagline{display:none;}
}

@media (max-width:1024px){
  .nav-desktop{display:none;}
  .burger{display:flex;}
}

/* ---- mobile full-screen menu overlay ---- */

.mobile-overlay{
  position:fixed;
  inset:0;
  z-index:45;
  display:flex;
  flex-direction:column;
  justify-content:center;
  align-items:center;
  gap:clamp(22px,5vh,40px);
  padding:104px 28px 64px;
  background:linear-gradient(180deg,#05070b 0%,#0a0e15 60%,#05070b 100%);
  opacity:0;
  visibility:hidden;
  pointer-events:none;
  transition:opacity .5s ease, visibility .5s ease;
}

.mobile-overlay.open{
  opacity:1;
  visibility:visible;
  pointer-events:auto;
}

/* ---- outline buttons (VIEW MORE / GOOGLE MAP / TEL / MAIL) ---- */

.btn-line:hover{
  border-color:#ece8e0;
  background:rgba(236,232,224,.08);
}

/* ---- gallery carousel ---- */

.gallery-nav-btn:hover{
  background:rgba(26,29,35,.06);
}

.gallery-track{
  display:flex;
  gap:14px;
  overflow-x:auto;
  overflow-y:hidden;
  scrollbar-width:none;
  -ms-overflow-style:none;
  -webkit-overflow-scrolling:touch;
  padding:0 2px 2px;
}

.gallery-slide{
  flex:0 0 clamp(260px,32vw,400px);
  scroll-snap-align:start;
  background:#0b0e13;
  overflow:hidden;
}

@media (max-width:820px){
  .gallery-slide{flex:0 0 82%;}
}

/* ---- system page: price / info rows ---- */

.price-row{
  display:flex;
  align-items:baseline;
  gap:12px;
  padding:14px 0;
  border-bottom:1px solid rgba(236,232,224,.12);
}

.price-row:last-child{
  border-bottom:none;
}

.price-row .row-label{
  flex:0 1 auto;
  font-size:clamp(13px,1.15vw,15px);
  letter-spacing:.08em;
  color:#e4e0d8;
}

.price-row .row-fill{
  flex:1 1 auto;
  min-width:16px;
  border-bottom:1px dotted rgba(236,232,224,.32);
  margin-bottom:6px;
}

.price-row .row-price{
  flex:0 0 auto;
  font-family:'Cormorant Garamond',serif;
  font-size:clamp(17px,1.7vw,23px);
  letter-spacing:.03em;
  color:#f6f3ed;
  white-space:nowrap;
}

.price-row .row-value{
  flex:0 0 auto;
  max-width:56%;
  font-size:clamp(12.5px,1.05vw,14px);
  letter-spacing:.06em;
  line-height:1.8;
  color:#cfcbc3;
  text-align:right;
}

@media (max-width:480px){
  .price-row{gap:8px;}
  .price-row .row-label{font-size:12.5px;}
}

/* ---- staff page: cast / management grid ----
   photo track width is capped at 240px, the native pixel width of the
   smallest source photos (reiko / riko / natsu / ryo), so no cast image
   is ever upscaled past its own resolution. */

.staff-grid{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,240px));
  justify-content:center;
  gap:clamp(44px,5.5vw,72px) clamp(28px,4vw,52px);
}

@media (min-width:760px){
  .staff-grid{grid-template-columns:repeat(3,minmax(0,240px));}
}

.staff-grid--center{
  grid-template-columns:minmax(0,min(240px,calc((100% - clamp(28px,4vw,52px)) / 2)));
  justify-content:center;
}

@media (min-width:760px){
  .staff-grid--center{grid-template-columns:minmax(0,min(240px,calc((100% - 2 * clamp(28px,4vw,52px)) / 3)));}
}

.staff-card{
  display:flex;
  flex-direction:column;
  align-items:center;
  width:100%;
  max-width:240px;
  margin:0 auto;
}

.staff-photo{
  position:relative;
  width:100%;
  max-width:240px;
  aspect-ratio:640/952;
  overflow:hidden;
  background:#0b0e13;
}

.staff-photo img{
  position:absolute;
  inset:0;
  width:100%;
  height:100%;
  object-fit:cover;
  display:block;
}

.staff-photo::after{
  content:"";
  position:absolute;
  inset:0;
  border:1px solid rgba(236,232,224,.16);
  pointer-events:none;
}

.staff-name-jp{
  margin:clamp(14px,1.6vw,18px) 0 0;
  font-size:14px;
  letter-spacing:.14em;
  color:#f0ede6;
  text-align:center;
}

/* role shown before the name on the same line, so names stay aligned across a row */
.staff-role{
  margin-right:.8em;
  padding-right:.8em;
  border-right:1px solid rgba(236,232,224,.28);
  font-size:11px;
  letter-spacing:.2em;
  color:#9e9a92;
}

.staff-name-en{
  margin:5px 0 0;
  font-family:'Cormorant Garamond',serif;
  font-size:10.5px;
  letter-spacing:.12em;
  color:#9e9a92;
  text-align:center;
}

/* ---- recruit page: benefit list / work information rows ---- */

.benefit-row{
  margin:0;
  padding:12px 0;
  font-size:clamp(13px,1.1vw,15px);
  letter-spacing:.07em;
  line-height:1.7;
  color:#cfcbc3;
  border-bottom:1px solid rgba(236,232,224,.1);
}

.benefit-row:last-child{
  border-bottom:none;
}

.benefit-row::before{
  content:"\2014\a0";
  color:#8e8a82;
}

.work-info-row{
  padding:clamp(20px,2.4vw,28px) 0;
  border-bottom:1px solid rgba(236,232,224,.12);
}

.work-info-row:last-child{
  border-bottom:none;
}

.work-info-en{
  margin:0;
  font-family:'Cormorant Garamond',serif;
  font-size:12px;
  letter-spacing:.32em;
  color:#9e9a92;
}

.work-info-main{
  margin:10px 0 0;
  font-size:clamp(15px,1.3vw,17px);
  letter-spacing:.08em;
  line-height:1.8;
  color:#f0ede6;
}

.work-info-sub{
  margin:8px 0 0;
  font-size:clamp(12px,1.02vw,13.5px);
  letter-spacing:.05em;
  line-height:1.9;
  color:#9e9a92;
}

/* ---- staff profile page (reiko.html etc.) ----
   master template for individual staff pages.
   - photo width is capped by --photo-max, which each page sets to the
     native pixel width of its source image, so a photo is never upscaled.
   - staff without a photo: omit .profile-photo and add .profile--nophoto
     to the section; the name block is centred and set larger instead.
   - profile items reuse .price-row / .row-label / .row-fill / .row-value. */

.profile-banner{
  position:relative;
  display:flex;
  align-items:center;
  justify-content:center;
  min-height:clamp(260px,28vw,400px);
  padding:clamp(80px,8vw,96px) 22px clamp(28px,3vw,40px);
  overflow:hidden;
  text-align:center;
}

.profile-banner__inner{
  position:relative;
  animation:riseIn 1.4s ease both;
}

.profile-banner__title{
  margin:0;
  font-family:'Cormorant Garamond',serif;
  font-weight:300;
  font-size:clamp(34px,4.6vw,62px);
  letter-spacing:.24em;
  text-indent:.24em;
  line-height:1.1;
  color:#f6f3ed;
}

.profile-banner__sub{
  margin:clamp(12px,1.4vw,18px) 0 0;
  font-size:12px;
  letter-spacing:.22em;
  text-indent:.22em;
  color:#b4b0a8;
}

.profile{
  background:#06080c;
  padding:clamp(56px,6.5vw,96px) clamp(22px,6vw,60px) clamp(72px,8vw,120px);
}

.profile__group{
  margin:0 0 clamp(40px,5vw,64px);
  text-align:center;
  font-family:'Cormorant Garamond',serif;
  font-size:13px;
  letter-spacing:.42em;
  text-indent:.42em;
  color:#cfcbc3;
}

.profile__group::after{
  content:"";
  display:block;
  width:42px;
  height:1px;
  margin:clamp(16px,1.8vw,22px) auto 0;
  background:#8e8a82;
}

.profile__inner{
  display:flex;
  align-items:center;
  justify-content:center;
  gap:clamp(56px,9vw,140px);
  max-width:900px;
  margin:0 auto;
}

.profile-photo{
  position:relative;
  flex:0 1 var(--photo-max,280px);
  width:100%;
  max-width:var(--photo-max,280px);
  margin:0;
}

.profile-photo::before{
  content:"";
  position:absolute;
  inset:0;
  transform:translate(12px,12px);
  border:1px solid rgba(236,232,224,.2);
  pointer-events:none;
}

.profile-photo img{
  position:relative;
  width:100%;
  height:auto;
  display:block;
}

.profile-info{
  flex:0 1 380px;
  min-width:0;
}

.profile-role{
  margin:0;
  font-family:'Cormorant Garamond',serif;
  font-size:12px;
  letter-spacing:.42em;
  color:#b4b0a8;
}

.profile-role-jp{
  margin-left:.8em;
  padding-left:1em;
  border-left:1px solid rgba(236,232,224,.28);
  font-family:"Shippori Mincho",serif;
  font-size:11px;
  letter-spacing:.2em;
  color:#9e9a92;
}

/* role shown in Japanese only (no English title) */
.profile-role--jp{
  font-family:"Shippori Mincho",serif;
  font-size:11px;
  letter-spacing:.2em;
  color:#9e9a92;
}

.profile-name-jp{
  margin:clamp(12px,1.3vw,16px) 0 0;
  font-weight:400;
  font-size:clamp(28px,2.6vw,36px);
  line-height:1.4;
  letter-spacing:.2em;
  color:#f6f3ed;
}

.profile-name-en{
  margin:8px 0 0;
  font-family:'Cormorant Garamond',serif;
  font-size:12px;
  letter-spacing:.2em;
  text-transform:uppercase;
  color:#9e9a92;
}

.profile-list{
  margin-top:clamp(28px,3vw,38px);
  border-top:1px solid rgba(236,232,224,.12);
}

.profile-list .price-row{
  padding:13px 0;
}

.profile-list .price-row:last-child{
  border-bottom:1px solid rgba(236,232,224,.12);
}

.profile-back{
  margin-top:clamp(30px,3.4vw,42px);
}

/* no-photo layout: the name block is centred and set larger */

.profile--nophoto .profile-info{
  flex:0 1 auto;
  width:100%;
  max-width:440px;
  text-align:center;
}

.profile--nophoto .profile-role::after{
  content:"";
  display:block;
  width:1px;
  height:clamp(36px,4vw,52px);
  margin:clamp(18px,2vw,24px) auto;
  background:rgba(236,232,224,.3);
}

.profile--nophoto .profile-name-jp{
  margin-top:0;
  font-size:clamp(34px,3.8vw,48px);
  letter-spacing:.24em;
  text-indent:.24em;
}

.profile--nophoto .profile-name-en{
  margin-top:12px;
  letter-spacing:.26em;
  text-indent:.26em;
}

.profile--nophoto .profile-list{
  margin-top:clamp(36px,4vw,48px);
  text-align:left;
}

.profile--nophoto .profile-back{
  display:flex;
  justify-content:center;
}

@media (max-width:760px){
  .profile__inner{
    flex-direction:column;
    gap:clamp(40px,10vw,52px);
  }
  .profile-photo{
    flex:0 0 auto;
    width:calc(100% - 12px);
    margin-right:12px;
  }
  .profile-info{
    flex:0 0 auto;
    width:100%;
    max-width:340px;
    text-align:center;
  }
  .profile-name-jp{text-indent:.2em;}
  .profile-name-en{text-indent:.2em;}
  .profile-list{text-align:left;}
  .profile-back{
    display:flex;
    justify-content:center;
  }
}

/* ---- index HERO: smartphone first-view reveal ----
   SP only (same 820px breakpoint as the hamburger menu). PC keeps the
   original inline riseIn on .hero-copy untouched.
   the background settles from a 4% zoom to its resting framing, then the
   copy fades up line by line. reduced-motion users see the static HERO. */

@keyframes heroBgSettle{
  from{transform:scale(1.04);}
  to{transform:scale(1);}
}

@keyframes heroFadeUp{
  from{opacity:0;transform:translateY(10px);}
  to{opacity:1;transform:none;}
}

@keyframes heroLineDraw{
  from{opacity:0;transform:scaleX(0);}
  to{opacity:1;transform:scaleX(1);}
}

@media (max-width:820px) and (prefers-reduced-motion:no-preference){
  .hero-bg{
    transform-origin:60% 50%;
    animation:heroBgSettle 2.8s cubic-bezier(.25,.46,.3,1) both;
  }
  .hero-copy{
    animation:none !important;
  }
  .hero-copy > *{
    animation:heroFadeUp .9s cubic-bezier(.22,.61,.36,1) both;
  }
  .hero-copy > :nth-child(1){animation-delay:.25s;}
  .hero-copy > :nth-child(2){animation-delay:.4s;}
  .hero-copy > :nth-child(3){animation-delay:.55s;}
  .hero-copy > :nth-child(4){
    transform-origin:left center;
    animation:heroLineDraw .8s cubic-bezier(.22,.61,.36,1) .7s both;
  }
  .hero-copy > :nth-child(5){animation-delay:.75s;animation-duration:.8s;}
}

@media (max-width:820px) and (prefers-reduced-motion:reduce){
  .hero-copy{
    animation:none !important;
  }
}

/* ---- WordPress: admin bar offset for the fixed header ---- */
.admin-bar .site-header{top:32px !important;}
@media (max-width:782px){ .admin-bar .site-header{top:46px !important;} }
/* ---- text pages (プライバシーポリシー etc., page.php) ---- */
.page-content h2{
  margin:clamp(40px,4.4vw,56px) 0 0;
  padding-bottom:12px;
  border-bottom:1px solid rgba(236,232,224,.14);
  font-weight:400;
  font-size:clamp(15px,1.3vw,17px);
  letter-spacing:.12em;
  color:#f0ede6;
}
.page-content > :first-child{margin-top:0;}
.page-content p{margin:18px 0 0;}
.page-content ul{margin:16px 0 0;padding-left:1.4em;}
.page-content li{margin:6px 0 0;}
.page-content a{color:#ece8e0;text-decoration:underline;text-underline-offset:3px;}
.page-content a:hover{color:#ffffff;}