/* ==========================================================================
   StarOcean Activities — お客様の声（口コミ）試作スタイル
   style.css の変数を前提にしています。
   ========================================================================== */

/* ---------- stars（class r1〜r5 で塗り幅を切替：CMSの ###rating### をそのまま使える） ---------- */
.rv-stars{position:relative;display:inline-block;font-size:17px;line-height:1;letter-spacing:2px;color:#D9E1E8;white-space:nowrap;}
.rv-stars::before{content:"★★★★★";}
.rv-stars > span{position:absolute;left:0;top:0;overflow:hidden;color:#FFB400;width:0;}
.rv-stars > span::before{content:"★★★★★";}
.rv-stars.r1 > span{width:20%;}
.rv-stars.r2 > span{width:40%;}
.rv-stars.r3 > span{width:60%;}
.rv-stars.r4 > span{width:80%;}
.rv-stars.r5 > span{width:100%;}
.rv-stars.lg{font-size:24px;}

/* ---------- section on tour pages ---------- */
.rv-section-head{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:6px 16px;margin-bottom:6px;}
.rv-section-head .section-title{margin-bottom:10px;}
.rv-count{font-size:13px;color:var(--ink-soft);}
.rv-count b{color:var(--ocean-deep);font-size:15px;}
.rv-list{display:grid;gap:16px;}
.rv-empty{
  background:#fff;border:1.5px dashed var(--line);border-radius:var(--radius);
  padding:22px;text-align:center;color:var(--ink-soft);font-size:14px;margin:0;
}
.rv-actions{display:flex;flex-wrap:wrap;gap:10px;justify-content:center;margin-top:20px;}
.rv-post-note{text-align:center;font-size:12px;color:var(--ink-soft);margin:8px 0 0;}

/* ---------- review card ---------- */
.rv-card{
  display:grid;grid-template-columns:240px 1fr;gap:18px;
  background:#fff;border:1px solid var(--line);border-radius:var(--radius);
  box-shadow:var(--shadow-sm);padding:16px;
}
.rv-card.no-photo{grid-template-columns:1fr;}
@media (max-width:680px){.rv-card{grid-template-columns:1fr;}}
.rv-photos{display:flex;flex-direction:column;gap:6px;min-width:0;}
.rv-main{display:block;border-radius:var(--radius-sm);overflow:hidden;aspect-ratio:4/3;background:var(--lagoon-pale);}
.rv-main img{width:100%;height:100%;object-fit:cover;}
.rv-subs{display:grid;grid-template-columns:repeat(4,1fr);gap:6px;}
.rv-subs a{display:block;aspect-ratio:1/1;border-radius:6px;overflow:hidden;background:var(--lagoon-pale);}
.rv-subs img{width:100%;height:100%;object-fit:cover;}
.rv-body{min-width:0;display:flex;flex-direction:column;gap:6px;}
.rv-head{display:flex;flex-wrap:wrap;align-items:center;gap:6px 10px;}
.rv-score{font-weight:800;color:var(--ink);font-size:15px;}
.rv-tour{
  background:var(--lagoon-pale);color:var(--ocean-deep);font-size:12px;font-weight:700;
  padding:3px 10px;border-radius:999px;text-decoration:none;
}
a.rv-tour:hover{background:var(--ocean);color:#fff;}
.rv-meta{margin:0;font-size:13px;font-weight:700;}
.rv-meta span{font-weight:400;color:var(--ink-soft);font-size:12px;margin-left:10px;}
.rv-text{margin:0;font-size:14px;}
.clamp{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:4;overflow:hidden;}
.rv-reply-text.clamp{-webkit-line-clamp:3;}
.rv-more{font-size:12.5px;font-weight:700;color:var(--ocean);text-decoration:none;align-self:flex-start;}
.rv-more:hover{text-decoration:underline;}

/* ---------- compact card（ツアーページ用：写真・返信なし） ---------- */
.rv-latest{gap:10px;}
.rv-card.compact{display:flex;flex-direction:column;gap:4px;padding:12px 16px;}
.rv-card.compact .rv-head{gap:4px 8px;}
.rv-card.compact .rv-stars{font-size:15px;}
.rv-card.compact .rv-score{font-size:14px;}
.rv-card.compact .rv-meta{font-size:12.5px;margin-left:4px;}
.rv-card.compact .rv-meta span{margin-left:8px;}
.rv-card.compact .rv-text{font-size:13.5px;line-height:1.7;}
.rv-card.compact .clamp{-webkit-line-clamp:2;}
.rv-card.compact .rv-more{font-size:12px;}

/* ---------- staff reply ---------- */
.rv-reply{
  margin-top:6px;background:var(--paper-soft);border-left:4px solid var(--ocean);
  border-radius:0 var(--radius-sm) var(--radius-sm) 0;padding:10px 14px;
}
.rv-reply-head{margin:0 0 2px;font-size:12.5px;font-weight:800;color:var(--ocean-deep);display:flex;align-items:center;gap:6px;}
.rv-reply-head::before{content:"";width:18px;height:18px;border-radius:50%;background:var(--ocean) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='white'%3E%3Cpath d='M12 12a4 4 0 1 0 0-8 4 4 0 0 0 0 8zm0 2c-3.3 0-8 1.7-8 5v1h16v-1c0-3.3-4.7-5-8-5z'/%3E%3C/svg%3E") center/12px no-repeat;}
.rv-reply-text{margin:0;font-size:13.5px;color:var(--ink);}

/* ---------- list page: filter ---------- */
.rv-filter{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 20px;}
.rv-filter a{
  text-decoration:none;font-size:13px;font-weight:700;padding:7px 14px;border-radius:999px;
  background:#fff;border:1.5px solid var(--line);color:var(--ink-soft);
}
.rv-filter a:hover{border-color:var(--ocean);color:var(--ocean-deep);}
.rv-filter a.active{background:var(--ocean-deep);border-color:var(--ocean-deep);color:#fff;}
.rv-pager{display:flex;justify-content:center;gap:8px;margin-top:24px;}
.rv-pager a,.rv-pager span{
  min-width:40px;text-align:center;padding:8px 12px;border-radius:999px;font-size:13px;font-weight:700;
  background:#fff;border:1.5px solid var(--line);text-decoration:none;color:var(--ocean-deep);
}
.rv-pager span.cur{background:var(--ocean-deep);color:#fff;border-color:var(--ocean-deep);}
.rv-pager span.off{color:#C3CDD6;}

/* ---------- item page ---------- */
.rv-detail{padding:22px;}
.rv-detail .rv-head{margin-bottom:4px;}
.rv-gallery{margin:16px 0;}
.rv-gallery-main{border-radius:var(--radius-sm);overflow:hidden;background:var(--lagoon-pale);aspect-ratio:3/2;}
.rv-gallery-main img{width:100%;height:100%;object-fit:contain;background:#0E2A47;}
.rv-gallery-thumbs{display:grid;grid-template-columns:repeat(5,1fr);gap:8px;margin-top:8px;}
.rv-gallery-thumbs button{
  padding:0;border:2px solid transparent;border-radius:8px;overflow:hidden;cursor:pointer;
  aspect-ratio:1/1;background:var(--lagoon-pale);
}
.rv-gallery-thumbs button.on{border-color:var(--sunset);}
.rv-gallery-thumbs img{width:100%;height:100%;object-fit:cover;}
.rv-detail .rv-text{font-size:15px;line-height:1.9;}
.rv-detail .rv-reply{margin-top:22px;padding:16px 18px;}
.rv-detail .rv-reply-text{font-size:14.5px;line-height:1.85;}
.rv-gallery.rv-staff-gallery{margin:14px 0 0;}  /* スタッフ写真（返信欄）：お客様の写真と同じ形式 */
.breadcrumb{font-size:12px;color:var(--ink-soft);margin:0 0 14px;}
.breadcrumb a{color:var(--ocean);text-decoration:none;}

/* ---------- post form ---------- */
.star-input{display:inline-flex;flex-direction:row-reverse;gap:2px;}
.star-input input{position:absolute;opacity:0;pointer-events:none;}
.star-input label{font-size:36px;line-height:1;color:#D9E1E8;cursor:pointer;transition:transform .1s;}
.star-input label:hover{transform:scale(1.12);}
.star-input input:checked ~ label,
.star-input label:hover,
.star-input label:hover ~ label{color:#FFB400;}
.star-input input:focus-visible + label{outline:2px solid var(--lagoon);border-radius:4px;}
.star-caption{font-size:13px;font-weight:700;color:var(--sunset-deep);margin-left:10px;min-height:1em;}
.tour-fixed{
  display:flex;align-items:center;gap:10px;background:var(--lagoon-pale);border-radius:var(--radius-sm);
  padding:11px 14px;font-weight:800;color:var(--ocean-deep);
}
.tour-fixed small{font-weight:500;color:var(--ink-soft);font-size:11.5px;}
.photo-slots{display:grid;grid-template-columns:2fr 1fr 1fr;grid-template-rows:1fr 1fr;gap:10px;}
@media (max-width:560px){.photo-slots{grid-template-columns:1fr 1fr;grid-template-rows:auto;}.photo-slot.main{grid-column:1/-1;}}
.photo-slot{
  position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;
  border:2px dashed #C6D6E3;border-radius:var(--radius-sm);background:#fff;cursor:pointer;
  aspect-ratio:1/1;overflow:hidden;text-align:center;color:var(--ink-soft);font-size:12px;font-weight:700;
}
.photo-slot.main{grid-row:1/3;aspect-ratio:auto;min-height:220px;}
.photo-slot:hover{border-color:var(--ocean);color:var(--ocean-deep);}
.photo-slot input{position:absolute;inset:0;opacity:0;cursor:pointer;}
.photo-slot .plus{font-size:26px;line-height:1;font-weight:400;}
.photo-slot img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;}
.photo-slot .clear{
  position:absolute;top:6px;right:6px;z-index:3;width:26px;height:26px;border-radius:50%;border:none;
  background:rgba(8,26,46,.7);color:#fff;font-size:15px;line-height:26px;cursor:pointer;display:none;
}
.photo-slot.filled{border-style:solid;border-color:var(--ocean);}
.photo-slot.filled .clear{display:block;}
.photo-slot .tag{
  position:absolute;left:6px;bottom:6px;z-index:2;background:rgba(8,26,46,.7);color:#fff;
  font-size:10.5px;padding:2px 8px;border-radius:999px;display:none;
}
.photo-slot.filled .tag{display:block;}
.char-count{font-size:11.5px;color:var(--ink-soft);text-align:right;}
.char-count.ng{color:var(--danger);}
.hp-field{position:absolute !important;left:-9999px !important;width:1px;height:1px;overflow:hidden;}
.form-error{
  display:none;background:var(--danger-bg);border:1.5px solid #F3B7A9;color:var(--danger);
  border-radius:var(--radius-sm);padding:10px 14px;font-size:13px;font-weight:700;margin-bottom:14px;
}
.notice-box{
  background:#fff;border:1px solid var(--line);border-radius:var(--radius-sm);padding:12px 16px;
  font-size:12.5px;color:var(--ink-soft);
}
.notice-box ul{margin:4px 0 0;padding-left:1.2em;}

/* ---------- dev note（試作の説明用。本番では削除） ---------- */
.dev-note{
  border:1.5px solid #9CC8E6;background:#EEF7FD;border-radius:var(--radius);
  padding:16px 20px;margin:28px 0 0;font-size:13px;color:var(--ink);
}
.dev-note h3{margin:0 0 8px;font-size:14.5px;color:var(--ocean-deep);display:flex;align-items:center;gap:8px;}
.dev-note h3::before{content:"🛠️";}
.dev-note ul{margin:0;padding-left:1.2em;}
.dev-note code{background:#fff;border:1px solid #D2E6F5;border-radius:4px;padding:0 5px;font-size:12px;}
.dev-note table{border-collapse:collapse;width:100%;font-size:12.5px;background:#fff;}
.dev-note th,.dev-note td{border:1px solid #D2E6F5;padding:6px 8px;text-align:left;vertical-align:top;}
.dev-note th{background:#F5FAFE;white-space:nowrap;}
.dev-note .ask{color:var(--danger);font-weight:700;}

/* ==========================================================================
   管理画面（staff）試作 — CMS info の staff 画面を簡略化して再現
   ========================================================================== */
body.adm{background:#EEF1F4;}
.adm-head{background:#2B3A48;color:#fff;}
.adm-head .wrap{display:flex;align-items:center;justify-content:space-between;padding-top:12px;padding-bottom:12px;gap:12px;}
.adm-head b{font-size:15px;}
.adm-head nav{display:flex;gap:14px;font-size:13px;}
.adm-head nav a{color:#CFE0EE;text-decoration:none;}
.adm-head nav a.active,.adm-head nav a:hover{color:#fff;text-decoration:underline;}
.adm-box{background:#fff;border:1px solid #D5DDE4;border-radius:8px;padding:18px 20px;margin-bottom:16px;}
.adm-box h3{margin:0 0 12px;font-size:15px;color:#2B3A48;border-bottom:2px solid #2B3A48;padding-bottom:6px;}
.adm-box h3.reply{border-color:var(--ocean);color:var(--ocean-deep);}
.adm-table{width:100%;border-collapse:collapse;font-size:13px;background:#fff;}
.adm-table th,.adm-table td{border:1px solid #D5DDE4;padding:8px 10px;text-align:left;vertical-align:middle;}
.adm-table th{background:#F2F5F8;font-size:12px;white-space:nowrap;}
.adm-table tr.private td{background:#FFF8E6;}
.adm-scroll{overflow-x:auto;}
.adm-btn{
  display:inline-block;padding:5px 12px;border-radius:5px;font-size:12px;font-weight:700;text-decoration:none;
  border:1px solid #9FB1C1;background:#fff;color:#2B3A48;cursor:pointer;white-space:nowrap;
}
.adm-btn.edit{background:#2B3A48;color:#fff;border-color:#2B3A48;}
.adm-btn.del{color:var(--danger);border-color:#E7A99B;}
.adm-btn.save{background:var(--sunset);border-color:var(--sunset);color:#fff;font-size:15px;padding:12px 36px;border-radius:999px;}
.st{display:inline-block;font-size:11px;font-weight:700;padding:2px 8px;border-radius:999px;white-space:nowrap;}
.st.pub{background:#DDF3E8;color:var(--ok);}
.st.priv{background:#FFE7B8;color:#9A5B00;}
.st.noreply{background:#FFE3DD;color:var(--danger);}
.st.replied{background:var(--lagoon-pale);color:var(--ocean-deep);}
.adm-dl{display:grid;grid-template-columns:170px 1fr;gap:10px 16px;margin:0;font-size:13.5px;}
.adm-dl dt{font-weight:700;padding-top:8px;}
.adm-dl dt .req{color:var(--danger);}
.adm-dl dd{margin:0;}
@media (max-width:640px){.adm-dl{grid-template-columns:1fr;}.adm-dl dt{padding-top:0;}}
.adm-dl input[type=text],.adm-dl select,.adm-dl textarea{
  font-family:inherit;font-size:14px;border:1px solid #B8C6D3;border-radius:5px;padding:8px 10px;max-width:100%;
}
.adm-dl input[type=text],.adm-dl textarea{width:100%;}
.adm-dl textarea{min-height:140px;resize:vertical;}
.adm-hint{font-size:11.5px;color:var(--ink-soft);margin-top:4px;}
.adm-photos{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:12px;}
.adm-photo{border:1px solid #D5DDE4;border-radius:6px;padding:8px;font-size:12px;background:#FAFBFC;}
.adm-photo .lbl{font-weight:700;margin-bottom:6px;}
.adm-photo .thumb{aspect-ratio:4/3;background:#E5EBF0;border-radius:4px;overflow:hidden;display:flex;align-items:center;justify-content:center;color:#98A8B6;font-size:11px;margin-bottom:6px;}
.adm-photo .thumb img{width:100%;height:100%;object-fit:cover;}
.adm-photo input[type=file]{font-size:11px;max-width:100%;}
.adm-photo label{display:flex;align-items:center;gap:4px;margin-top:4px;color:var(--danger);}
.adm-bar{display:flex;justify-content:center;gap:12px;padding:10px 0 30px;}

/* ---------- Googleクチコミの評価（inc/google-reviews.htm） ---------- */
.g-reviews{
  display:flex;align-items:center;gap:14px;margin:0 0 16px;padding:14px 18px;
  background:#fff;border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow-sm);
  text-decoration:none;color:var(--ink);transition:box-shadow .15s,transform .15s;
}
.g-reviews:hover{box-shadow:var(--shadow);transform:translateY(-1px);}
.g-logo{flex:none;width:40px;height:40px;border-radius:50%;background:#fff;border:1px solid var(--line);display:flex;align-items:center;justify-content:center;}
.g-logo svg{width:24px;height:24px;}
.g-body{display:flex;flex-direction:column;gap:2px;flex:1 1 0;min-width:0;}
.g-title{font-size:12px;font-weight:700;color:var(--ink-soft);}
.g-score{display:flex;align-items:center;gap:8px;flex-wrap:wrap;}
.g-score b{font-size:20px;line-height:1;}
.g-count{font-size:13px;color:var(--ink-soft);font-weight:700;}
.g-note{font-size:11px;color:var(--ink-soft);}
.g-go{margin-left:auto;flex:none;font-size:13px;font-weight:800;color:var(--ocean);white-space:nowrap;}
@media (max-width:560px){
  .g-reviews{flex-wrap:wrap;gap:10px;padding:12px 14px;}
  .g-go{flex-basis:100%;margin-left:54px;}
}