/* Shared legal/policy text template. Scoped to .policy-main; reuses editorial tokens. */
.policy-main { padding-bottom: clamp(80px,9vw,144px); }
.policy-head { padding: 152px 0 clamp(40px,5vw,72px); border-bottom: 1px solid var(--rule); margin-bottom: clamp(40px,5vw,72px); }
.policy-breadcrumb { display: flex; flex-wrap: wrap; gap: 8px 16px; color: #666; margin-bottom: 40px; }
.policy-breadcrumb a:hover { color: var(--ink); text-decoration: underline; text-underline-offset: 5px; }
.policy-head h1 { font-size: clamp(36px,4.2vw,64px); line-height: 1.08; overflow-wrap: anywhere; hyphens: manual; }
.policy-preview-flag, .policy-status-tag { margin-top: 28px !important; max-width: 72ch; padding-left: 16px; border-left: 2px solid var(--accent); font: var(--text-compact)/var(--leading-compact) var(--body); color: #444; overflow-wrap: anywhere; }
.policy-preview-flag a { text-decoration: underline; text-underline-offset: 4px; }

.policy-layout { display: grid; grid-template-columns: minmax(200px,1fr) minmax(0,2.15fr); gap: 40px clamp(32px,6vw,96px); align-items: start; }
.policy-aside { position: sticky; top: 112px; max-height: calc(100dvh - 136px); overflow-y: auto; overscroll-behavior: contain; }
.policy-aside:empty { display: none; }
.policy-toc summary { min-height: 44px; display: flex; align-items: center; font: var(--text-label)/var(--leading-label) var(--mono); letter-spacing: .06em; text-transform: uppercase; color: #666; cursor: pointer; list-style: none; }
.policy-toc summary::-webkit-details-marker { display: none; }
.policy-toc ol { margin: 8px 0 0; padding: 0; list-style: none; display: grid; gap: 2px; border-left: 1px solid var(--rule); }
.policy-toc a { display: block; padding: 6px 0 6px 16px; font: var(--text-label)/1.45 var(--body); color: #555; }
.policy-toc a:hover { color: var(--ink); text-decoration: underline; text-underline-offset: 4px; }
.editorial .policy-toc a:focus-visible { outline: 2px solid var(--ink); outline-offset: 0; }

/* Long-form reading: fill the allocated text column, retaining generous leading and section rhythm. */
.policy-prose { font: 1rem/1.8 var(--body); overflow-wrap: break-word; }
.policy-prose > * + * { margin-top: 20px; }
.policy-prose h2 { margin-top: clamp(48px,5vw,72px); padding-top: 24px; border-top: 1px solid var(--rule); font-size: clamp(22px,1.9vw,28px); line-height: 1.25; scroll-margin-top: 120px; }
.policy-prose h2:first-child { margin-top: 0; }
.policy-prose h2 + * { margin-top: 20px; }
.policy-prose p { font: inherit; }
.policy-list { margin: 0; padding-left: 1.4em; display: grid; gap: 14px; }
.policy-list .policy-list { margin-top: 14px; }
.policy-list--plain { list-style: none; padding-left: 0; }
.policy-prose a { text-decoration: underline; text-underline-offset: 4px; overflow-wrap: anywhere; }
.policy-prose u { text-underline-offset: 3px; }
.editorial .policy-prose a:focus-visible { outline: 2px solid var(--ink); outline-offset: 3px; }

/* The published ISMS policy is Traditional Chinese. */
.policy-prose:lang(zh-Hant),
.policy-prose:lang(zh-Hant) :is(h2,h3),
.policy-aside:lang(zh-Hant) .policy-toc :is(summary,a) { font-family: "PingFang TC", "Microsoft JhengHei", var(--body); }
.policy-prose:lang(zh-Hant) { line-height: 1.9; }
.policy-prose h3 { font-size: clamp(18px,1.5vw,22px); line-height: 1.4; scroll-margin-top: 120px; }
.policy-prose .policy-declaration { font-weight: 600; }

@media (max-width: 1000px) {
  .policy-layout { grid-template-columns: 1fr; gap: 32px; }
  .policy-aside { position: static; max-height: none; overflow: visible; border-block: 1px solid var(--rule); }
  .policy-toc[open] { padding-bottom: 16px; }
  .policy-toc summary::after { content: "+"; margin-left: auto; font-size: 20px; }
  .policy-toc[open] summary::after { content: "−"; }
}
@media (max-width: 768px) {
  .policy-head { padding-top: 112px; }
  .policy-breadcrumb { margin-bottom: 28px; }
  .policy-head h1 { font-size: clamp(30px,8vw,44px); }
  .policy-prose { font-size: .9375rem; line-height: 1.75; }
  .policy-list { gap: 12px; }
}
