/*
TRAVEL FIT Luxe — 会員レビュー機能 専用スタイル
front-page.php（トップページ）、page-reviews.php、taxonomy-tf_hotel.php、
single-tf_review.php のどこで使っても同じ見た目になるよう、
.tf-luxe の配色トークンに依存せず、このファイル単体で完結しています。
*/

.tfr{
  --tfr-ink:#0d1726;
  --tfr-paper:#f7f2e6;
  --tfr-card:#fffdf7;
  --tfr-text:#1b2a3f;
  --tfr-text-soft:#5c6472;
  --tfr-gold:#c49a44;
  --tfr-gold-deep:#8f6f2c;
  --tfr-line:#dfd2a8;
  font-family:"Zen Kaku Gothic New","Hiragino Sans","Noto Sans JP",sans-serif;
  color:var(--tfr-text);
  line-height:1.8;
}
.tfr *{ box-sizing:border-box; }
.tfr a{ color:var(--tfr-gold-deep); }

/* ---- 通知メッセージ ---- */
.tfr-notice{
  padding:12px 16px; border-radius:3px; font-size:0.9rem; margin:0 0 18px;
}
.tfr-notice--ok{ background:#eef5ec; color:#2e5b3a; border:1px solid #bfdcc4; }
.tfr-notice--error{ background:#fbecec; color:#8a2f2f; border:1px solid #e7bcbc; }

/* ---- 会員登録／ログイン ---- */
.tfr-auth-box{ max-width:420px; }
.tfr-logged-in{ font-size:0.92rem; }
.tfr-form{ display:flex; flex-direction:column; gap:14px; }
.tfr-field{ display:flex; flex-direction:column; gap:6px; margin:0; }
.tfr-field label,.tfr-label{ font-size:0.8rem; letter-spacing:0.03em; color:var(--tfr-text-soft); }
.tfr-field input[type="text"],
.tfr-field input[type="email"],
.tfr-field input[type="password"],
.tfr-field input[type="url"],
.tfr-field input[type="file"],
.tfr-field textarea,
.tfr-form input[type="text"],
.tfr-form input[type="password"]{
  width:100%; padding:11px 13px; border:1px solid var(--tfr-line); border-radius:2px;
  background:var(--tfr-card); color:var(--tfr-text); font-size:0.95rem; font-family:inherit;
}
.tfr-field textarea{ resize:vertical; }
.tfr-field input:focus,.tfr-field textarea:focus{ outline:2px solid var(--tfr-gold); outline-offset:1px; }
.tfr-field-hp{ position:absolute; left:-9999px; top:-9999px; }
.tfr-field-checkbox label{ display:flex; align-items:flex-start; gap:8px; font-size:0.86rem; color:var(--tfr-text); }
.tfr-field-checkbox input[type="checkbox"]{ width:auto; margin-top:3px; }
.tfr-field select{
  width:100%; padding:11px 13px; border:1px solid var(--tfr-line); border-radius:2px;
  background:var(--tfr-card); color:var(--tfr-text); font-size:0.95rem; font-family:inherit;
}

.tfr-btn{
  display:inline-flex; align-items:center; justify-content:center; gap:8px;
  background:var(--tfr-gold); color:var(--tfr-ink); border:none;
  padding:13px 30px; border-radius:2px; font-size:0.9rem; letter-spacing:0.06em;
  font-weight:600; cursor:pointer; transition:background .2s ease;
  text-decoration:none;
}
.tfr-btn:hover{ background:#d9ad56; color:var(--tfr-ink); }
.tfr-login-required{ font-size:0.92rem; color:var(--tfr-text-soft); }

/* ---- 星評価（CSS のみ・JavaScript不要） ---- */
.tfr-rating{ display:inline-flex; flex-direction:row-reverse; gap:2px; font-size:1.6rem; }
.tfr-rating input{ position:absolute; opacity:0; width:0; height:0; }
.tfr-rating label{
  cursor:pointer; color:#d9d2bb; transition:color .15s ease; line-height:1;
}
.tfr-rating input:checked ~ label,
.tfr-rating label:hover,
.tfr-rating label:hover ~ label{ color:var(--tfr-gold); }

.tfr-stars{ display:inline-flex; gap:1px; font-size:1rem; white-space:nowrap; }
.tfr-star{ color:#d9d2bb; }
.tfr-star.is-filled{ color:var(--tfr-gold); }

.tfr-note{ font-size:0.78rem; color:var(--tfr-text-soft); }

/* ---- レビューカード一覧 ---- */
.tfr-grid{
  display:grid; grid-template-columns:repeat(3,1fr); gap:20px; margin-top:8px;
}
@media (max-width:900px){ .tfr-grid{ grid-template-columns:repeat(2,1fr); } }
@media (max-width:620px){ .tfr-grid{ grid-template-columns:1fr; } }

.tfr-card{
  background:var(--tfr-card); border:1px solid var(--tfr-line); border-radius:4px;
  padding:20px; display:flex; flex-direction:column; gap:10px;
}
.tfr-card-head{ display:flex; align-items:center; justify-content:space-between; gap:10px; }
.tfr-card-hotel{ font-weight:700; font-size:0.98rem; margin:0; }
.tfr-card-body{ font-size:0.9rem; color:var(--tfr-text); margin:0; }
.tfr-card-photos{ display:grid; grid-template-columns:repeat(3,1fr); gap:6px; }
.tfr-card-photos img{ width:100%; height:80px; object-fit:cover; border-radius:2px; display:block; }
.tfr-card-video{ margin:0; font-size:0.86rem; }
.tfr-card-foot{
  display:flex; align-items:center; justify-content:space-between;
  font-size:0.76rem; color:var(--tfr-text-soft); margin:4px 0 0; padding-top:10px;
  border-top:1px solid var(--tfr-line);
}

/* ---- 空の状態 ---- */
.tfr-empty{
  text-align:center; padding:40px 20px; border:1px dashed var(--tfr-line); border-radius:4px;
  background:var(--tfr-card);
}
.tfr-empty p{ margin:0 0 16px; color:var(--tfr-text-soft); }

/* ---- 宿・エリアのタグ一覧 ---- */
.tfr-tagcloud{ display:flex; flex-wrap:wrap; gap:10px; }
.tfr-tag{
  display:inline-flex; align-items:center; gap:6px; padding:8px 16px; border-radius:20px;
  border:1px solid var(--tfr-line); background:var(--tfr-card); font-size:0.84rem;
  color:var(--tfr-text); text-decoration:none;
}
.tfr-tag:hover{ border-color:var(--tfr-gold); color:var(--tfr-gold-deep); }
.tfr-tag-count{ color:var(--tfr-text-soft); font-size:0.78rem; }

/* ---- ポイント（マイページ・一覧ページのテイザー） ---- */
.tfr-points-teaser{ font-size:0.86rem; color:var(--tfr-text-soft); margin:16px 0 0; }
.tfr-points-summary{
  background:var(--tfr-card); border:1px solid var(--tfr-line); border-radius:4px;
  padding:24px; margin:0 0 20px; text-align:center;
}
.tfr-points-total{
  font-family:"Cormorant Garamond",serif; font-size:2.4rem; font-weight:700;
  color:var(--tfr-gold-deep); margin:0 0 6px;
}
.tfr-points-total span{ font-size:1.1rem; margin-left:4px; }
.tfr-points-desc{ font-size:0.84rem; color:var(--tfr-text-soft); margin:0; }
.tfr-points-log{ width:100%; border-collapse:collapse; margin:10px 0 24px; font-size:0.86rem; }
.tfr-points-log th,.tfr-points-log td{ padding:9px 8px; border-bottom:1px solid var(--tfr-line); text-align:left; }
.tfr-points-log th{ color:var(--tfr-text-soft); font-weight:600; font-size:0.78rem; }
.tfr-points-log td.is-plus{ color:#2e5b3a; font-weight:700; }
.tfr-points-log td.is-minus{ color:#8a2f2f; font-weight:700; }
.tfr-redeem-history{ list-style:none; margin:0; padding:0; display:flex; flex-direction:column; gap:8px; font-size:0.88rem; }
.tfr-redeem-status{ font-size:0.76rem; padding:2px 10px; border-radius:12px; }
.tfr-redeem-status.is-pending{ background:#fbf3dc; color:#8f6f2c; }
.tfr-redeem-status.is-publish{ background:#eef5ec; color:#2e5b3a; }

/* ---- マル秘記事（一覧・単体） ---- */
.tfr-secret-grid{
  display:grid; grid-template-columns:repeat(2,1fr); gap:14px; margin-top:16px;
}
@media (max-width:640px){ .tfr-secret-grid{ grid-template-columns:1fr; } }
.tfr-secret-card{
  display:flex; align-items:center; gap:12px; padding:16px 18px;
  background:var(--tfr-card); border:1px solid var(--tfr-line); border-radius:4px;
  text-decoration:none; color:var(--tfr-text); transition:border-color .15s ease;
}
.tfr-secret-card:hover{ border-color:var(--tfr-gold); }
.tfr-secret-card.is-unlocked{ border-color:#bfdcc4; background:#f6faf5; }
.tfr-secret-icon{ font-size:1.4rem; line-height:1; }
.tfr-secret-title{ flex:1; font-size:0.92rem; font-weight:600; }
.tfr-secret-cost{ font-size:0.76rem; color:var(--tfr-gold-deep); white-space:nowrap; }
.tfr-secret-card.is-unlocked .tfr-secret-cost{ color:#2e5b3a; }

.tfr-secret-single .tfr-secret-teaser{ font-size:0.98rem; color:var(--tfr-text-soft); margin-bottom:28px; }
.tfr-secret-unlocked-badge{
  display:inline-block; font-size:0.78rem; padding:4px 12px; border-radius:12px;
  background:#eef5ec; color:#2e5b3a; margin-bottom:18px;
}
.tfr-secret-body{ font-size:0.98rem; line-height:1.9; }
.tfr-secret-lock-box{
  text-align:center; padding:40px 24px; border:1px dashed var(--tfr-line); border-radius:4px;
  background:var(--tfr-card);
}
.tfr-secret-lock-icon{ font-size:2rem; margin:0 0 8px; }
.tfr-secret-lock-cost{ margin:0 0 18px; font-size:1rem; }

/* ---- 友達紹介ボックス（マイページ・レビューページ） ---- */
.tfr-referral-box{
  background:var(--tfr-card); border:1px solid var(--tfr-line); border-radius:4px;
  padding:24px; max-width:620px;
}
.tfr-referral-lead{ font-size:0.9rem; margin:0 0 16px; line-height:1.8; }
.tfr-referral-link-row{ display:flex; gap:10px; flex-wrap:wrap; }
.tfr-referral-link-input{
  flex:1; min-width:220px; padding:10px 12px; border:1px solid var(--tfr-line);
  background:var(--tfr-paper); color:var(--tfr-text); font-family:inherit; font-size:0.84rem;
}
.tfr-btn-small{ padding:10px 20px; font-size:0.82rem; white-space:nowrap; }
.tfr-referral-count{ margin:14px 0 0; font-size:0.84rem; color:var(--tfr-text-soft); }

/* ---- ページ共通の見出し・余白（page-reviews.php / taxonomy-tf_hotel.php） ---- */
.tfr-page{ max-width:1080px; margin:0 auto; padding:56px 24px 100px; }
.tfr-page h1{ font-size:1.6rem; margin:0 0 8px; }
.tfr-page .tfr-lead{ color:var(--tfr-text-soft); margin:0 0 36px; }
.tfr-section{ margin:48px 0; }
.tfr-section h2{ font-size:1.15rem; margin:0 0 18px; border-left:4px solid var(--tfr-gold); padding-left:12px; }
