:root {
  --tffo-ink: #21152f;
  --tffo-night: #10071f;
  --tffo-violet: #6d3b8c;
  --tffo-gold: #d7bb72;
  --tffo-paper: #fffdf9;
  --tffo-line: #e3d9e9;
}

.tffo-offer-section {
  margin: 44px 0;
  padding: clamp(22px, 4vw, 38px);
  border: 1px solid var(--tffo-line);
  background: linear-gradient(145deg, #fffdf9, #faf5ff);
  box-shadow: 0 20px 50px rgba(38, 18, 52, .09);
}
.tffo-kicker { margin: 0 0 8px !important; color: #9b7930 !important; font-size: 11px !important; font-weight: 800; letter-spacing: .16em; }
.tffo-offer-section h2 { margin-top: 0 !important; }
.tffo-disclosure { padding: 14px 16px; border-left: 3px solid var(--tffo-gold); background: #fff; }
.tffo-disclosure strong { display: inline-block; margin-right: 8px; color: #fff; padding: 2px 8px; background: var(--tffo-violet); font-size: 12px; }
.tffo-table-scroll { overflow-x: auto; -webkit-overflow-scrolling: touch; }
.tffo-offer-table { width: 100%; min-width: 760px; border-collapse: collapse; background: #fff; }
.tffo-offer-table th, .tffo-offer-table td { padding: 15px 14px !important; border: 1px solid var(--tffo-line) !important; text-align: left; vertical-align: middle; }
.tffo-offer-table thead th { color: #fff !important; background: var(--tffo-night) !important; white-space: nowrap; }
.tffo-offer-table tbody th { min-width: 170px; color: var(--tffo-ink); }
.tffo-pr-link { display: inline-flex; align-items: center; gap: 6px; min-width: 140px; justify-content: center; padding: 11px 14px; border-radius: 4px; color: #fff !important; background: linear-gradient(135deg, #6f3f8f, #3f285e); font-weight: 800; text-decoration: none !important; }
.tffo-pr-link:hover, .tffo-pr-link:focus { color: #fff !important; filter: brightness(1.08); }
.tffo-table-note { margin: 12px 0 0 !important; color: #685d70 !important; font-size: 13px !important; }

.tffo-policy-shell { max-width: 1040px; margin: 0 auto 60px; color: var(--tffo-ink); }
.tffo-policy-hero { position: relative; overflow: hidden; padding: clamp(34px, 7vw, 76px); color: #fff; background: radial-gradient(circle at 86% 15%, rgba(215,187,114,.28), transparent 28%), linear-gradient(135deg, #10071f, #28133d 58%, #40234f); }
.tffo-policy-hero::after { content: ""; position: absolute; inset: 18px; border: 1px solid rgba(215,187,114,.2); pointer-events: none; }
.tffo-policy-hero h1 { position: relative; margin: 0 0 16px !important; color: #fff !important; font-size: clamp(36px, 6vw, 62px) !important; letter-spacing: .02em; }
.tffo-policy-hero > p { position: relative; max-width: 720px; line-height: 1.9; }
.tffo-policy-body { padding: clamp(24px, 5vw, 58px); border: 1px solid var(--tffo-line); border-top: 0; background: var(--tffo-paper); box-shadow: 0 24px 60px rgba(38,18,52,.08); }
.tffo-policy-body h2 { margin: 48px 0 18px; padding-bottom: 10px; border-bottom: 1px solid var(--tffo-line); color: #3b2252; }
.tffo-policy-body h2:first-child { margin-top: 0; }
.tffo-policy-body h3 { color: #55306f; }
.tffo-policy-body p, .tffo-policy-body li { line-height: 2; }
.tffo-policy-body table { width: 100%; border-collapse: collapse; }
.tffo-policy-body th, .tffo-policy-body td { padding: 13px 14px; border: 1px solid var(--tffo-line); text-align: left; }
.tffo-policy-body th { width: 28%; background: #f7f0fb; }
.tffo-primary-link { display: inline-flex; padding: 14px 22px; color: #fff !important; background: linear-gradient(135deg, #6f3f8f, #3f285e); border-radius: 4px; font-weight: 800; text-decoration: none !important; }
.tffo-date { margin-top: 48px !important; color: #6d6274; font-size: 13px; }
@media (max-width: 680px) {
  .tffo-offer-section { margin: 34px -2px; padding: 20px 14px; }
  .tffo-table-scroll { overflow: visible; }
  .tffo-offer-table { display: block; min-width: 0; width: 100%; background: transparent; }
  .tffo-offer-table thead { position: absolute !important; width: 1px !important; height: 1px !important; margin: -1px !important; padding: 0 !important; overflow: hidden !important; clip: rect(0 0 0 0) !important; white-space: nowrap !important; border: 0 !important; }
  .tffo-offer-table tbody { display: grid; gap: 14px; }
  .tffo-offer-table tr { display: grid; min-width: 0; border: 1px solid var(--tffo-line); background: #fff; box-shadow: 0 10px 24px rgba(38,18,52,.06); }
  .tffo-offer-table th, .tffo-offer-table td { display: block; width: 100%; min-width: 0 !important; border: 0 !important; border-bottom: 1px solid var(--tffo-line) !important; }
  .tffo-offer-table tbody th { color: #fff !important; background: linear-gradient(135deg, #21112f, #3f285e); }
  .tffo-offer-table td::before { display: block; margin-bottom: 4px; color: #8c6c25; font-size: 10px; font-weight: 800; letter-spacing: .12em; }
  .tffo-offer-table td:nth-child(2)::before { content: "相談形式"; }
  .tffo-offer-table td:nth-child(3)::before { content: "申込み前の確認"; }
  .tffo-offer-table td:nth-child(4)::before { content: "公式・申込み先 / PR"; }
  .tffo-offer-table td:last-child { border-bottom: 0 !important; }
  .tffo-pr-link { width: 100%; min-width: 0; }
  .tffo-policy-hero { padding: 42px 24px; }
  .tffo-policy-body { padding: 28px 20px; }
  .tffo-policy-body table, .tffo-policy-body tbody, .tffo-policy-body tr, .tffo-policy-body th, .tffo-policy-body td { display: block; width: 100%; }
  .tffo-policy-body th { border-bottom: 0; }
}
