/* Shared reading and navigation layout for privacy and terms. Policy wording stays in the templates. */
.ff-policy-layout { box-sizing: border-box; display: grid; grid-template-columns: 240px minmax(0, 680px); column-gap: 48px; max-width: 1016px; margin: 0 auto; padding: 48px var(--ff-gutter) 80px; align-items: start; }
.ff-policy-title { grid-column: 2; grid-row: 1; padding-bottom: 28px; }
.ff-policy-title h1 { margin: 0; color: #1f2937; font-size: var(--ff-title-size); font-weight: 500; line-height: 1.25; }
.ff-policy-layout .info-page { box-sizing: border-box; grid-column: 2; grid-row: 2; min-width: 0; width: 100%; max-width: none; margin: 0; padding: 0; background: transparent; }
.ff-policy-body p, .ff-policy-body li { overflow-wrap: anywhere; }
.ff-policy-layout .info-page p, .ff-policy-layout .info-page li { color: #374151; font-size: var(--ff-body-size); line-height: 1.8; margin: 0 0 22px; }
.ff-policy-layout .info-page h2 { margin: 52px 0 20px; padding-top: 28px; border-top: 1px solid #e5e7eb; color: #1f2937; font-size: 24px; line-height: 1.4; font-weight: 600; scroll-margin-top: 28px; }
.ff-policy-layout .info-page h2:first-child { margin-top: 0; padding-top: 0; border-top: 0; }
.ff-policy-layout .info-page h3 { margin: 38px 0 18px; font-size: 20px; line-height: 1.4; font-weight: 600; scroll-margin-top: 28px; }
.ff-policy-layout .info-page ul, .ff-policy-layout .info-page ol { margin: 0 0 24px; padding-left: 24px; }
.ff-policy-body h2:focus, .ff-policy-body h3:focus { outline: none; }
.ff-policy-body h2:target, .ff-policy-body h3:target { color: #0b63c9; }
.ff-policy-index { grid-column: 1; grid-row: 1 / span 2; position: sticky; top: 24px; min-width: 0; }
.ff-policy-contents { padding: 16px 12px; border: 1px solid #e5e7eb; border-radius: 12px; background: #f6f7fa; }
.ff-policy-contents summary { padding: 0 8px; color: #1f2937; font-size: 16px; font-weight: 600; cursor: pointer; }
.ff-policy-contents nav { max-height: calc(100dvh - 140px); overflow-y: auto; margin-top: 12px; }
.ff-policy-contents ul { list-style: none; padding: 0; margin: 0; }
.ff-policy-contents li { margin: 0; padding: 0; }
.ff-policy-contents a { display: block; padding: 8px; color: #4b5563; font-size: 14px; line-height: 1.5; text-decoration: none; border-radius: 6px; }
.ff-policy-contents a:hover { color: #0b63c9; background: #eaf3ff; }
.ff-policy-contents a:focus-visible, .ff-policy-contents summary:focus-visible { outline: 2px solid #9db8d9; outline-offset: 2px; }
.ff-policy-contents .ff-policy-subsection a { padding-left: 20px; font-size: 13px; }
@media (max-width: 999px) {
  .ff-policy-layout { display: block; max-width: 728px; padding: 28px var(--ff-gutter) 56px; }
  .ff-policy-title { padding-bottom: 24px; }
  .ff-policy-title h1 { font-size: var(--ff-title-size); }
  .ff-policy-index { top: 0; z-index: 25; padding: 8px 0; margin: 0 0 24px; background: #fff; }
  .ff-policy-contents { padding: 12px; }
  .ff-policy-contents nav { max-height: 55dvh; }
  .ff-policy-layout .info-page h2, .ff-policy-layout .info-page h3 { scroll-margin-top: 88px; }
}
@media (max-width: 480px) {
  .ff-policy-layout { padding-left: var(--ff-gutter); padding-right: var(--ff-gutter); }
  .ff-policy-layout .info-page h2 { font-size: 22px; }
  .ff-policy-layout .info-page h3 { font-size: 19px; }
}

/* Make the collapsible section index recognizable even where the browser hides the default marker. */
.ff-policy-contents summary { display: flex; align-items: center; justify-content: space-between; gap: 12px; }
.ff-policy-contents summary::after { content: "+"; font-size: 20px; line-height: 1; }
.ff-policy-contents[open] > summary::after { content: "−"; }
.ff-policy-contents summary::-webkit-details-marker { display: none; }
