/* Purchase / legal presentation only. Loaded explicitly by their page heads.
   Keep the original body, consent labels, scripts and all commerce hooks intact.
   These v2.css tokens are repeated because purchase bodies cannot opt into .v2. */
body {
  --v2-ground:#fafafa; --v2-surface:#fff; --v2-soft:#f1f1f1;
  --v2-ink:#191919; --v2-muted:#606060; --v2-action:#191919; --v2-hover:#333;
  --v2-border:#e4e4e4; --v2-control:#858585;
  --v2-display:Newsreader,Georgia,serif; --sans:Geist,ui-sans-serif,system-ui,sans-serif;
  --paper:var(--v2-surface); --paper-2:var(--v2-soft);
  --ink:var(--v2-ink); --ink-2:var(--v2-muted); --placeholder:var(--v2-muted);
  --rule:var(--v2-border); --rule-strong:var(--v2-control);
  --anil:var(--v2-action); --anil-deep:var(--v2-hover); --anil-ink:var(--v2-ink);
  --anil-wash:#f5f5f5; --anil-line:#d8d8d8; --anil-pale:#ddd;
  --wrap:1152px; --gutter:24px; --head-h:64px; --measure:68ch; --r:10px;
  --docs-green:#276746; --docs-green-bg:#e9f4ec;
  margin:0; background:var(--v2-ground); color:var(--v2-ink);
  font:400 16px/1.7 var(--sans);
}
*,*::before,*::after { box-sizing:border-box }
[hidden] { display:none!important }
:is(h1,h2) { font-family:var(--v2-display); font-weight:420; letter-spacing:-.025em; color:var(--v2-ink) }
a { color:var(--v2-action); text-decoration-thickness:1px; text-underline-offset:.25em; text-decoration-color:#a8a8a8 }
a:hover { text-decoration-color:currentColor }
:is(a,button,summary,input):focus-visible { outline:3px solid var(--v2-action); outline-offset:4px; border-radius:4px }
:is(section,[id]) { scroll-margin-top:88px }
.wrap { width:100%; max-width:var(--wrap); padding-inline:var(--gutter); margin-inline:auto }
/* Same quiet navigation and footer treatment as the v3 home and kit pages. */
header.top { min-height:64px; background:rgb(255 255 255 / .96); border-bottom:1px solid #e9e9e9; backdrop-filter:blur(12px) }
.nav { min-height:64px; gap:22px }
.brand { font-size:17px; font-weight:600; gap:6px; letter-spacing:-.025em }
.brand span { color:var(--v2-ink); font-weight:400 }
.mark { width:26px; height:21px; color:#2541e0 }
.nav a.l { font-size:14px; font-weight:400; color:var(--v2-muted); min-height:44px }
.nav a.l::after { height:1px }
.lang { min-height:44px; padding:0 4px; border:0; background:transparent; color:var(--v2-muted); font-size:13px; font-weight:400; text-decoration:none }
.lang::before { content:none }
.lang:hover { background:var(--v2-soft); color:var(--v2-ink) }
footer { padding:48px 0; border-top:1px solid var(--v2-border); background:var(--v2-surface); color:var(--v2-muted); font-size:13px }
footer::before,footer .disc::before { content:none }
footer .wrap { gap:20px }
footer .foot-brand { color:var(--v2-ink); font-size:17px; font-weight:600; gap:6px }
footer .foot-brand span { color:var(--v2-ink); font-weight:400 }
footer .mark { color:#2541e0 }
footer a { color:var(--v2-ink) }
footer .disc { display:block; margin:0; padding:0; border:0; background:none; color:var(--v2-muted); font-size:13px }
footer :focus-visible { outline-color:var(--v2-action) }
/* Shared reading measure, page title and controls. */
.page { padding:56px 0 80px }
.page-head { max-width:800px; margin:0 auto 40px; text-align:center }
.page-head::before,.review h1::before { content:none }
.legal .page-head h1,.review h1 { font:500 clamp(36px,4.4vw,56px)/1.12 var(--v2-display); letter-spacing:-.035em; text-wrap:balance }
.legal .meta { margin:12px 0 16px; font-size:13px; font-weight:400; color:var(--v2-muted) }
.prose { font-size:16px; line-height:1.85; overflow-wrap:break-word }
.legal .prose h2 { margin:48px 0 18px; font:420 30px/1.2 var(--v2-display); letter-spacing:-.02em }
.prose h3 { font:550 18px/1.5 var(--sans) }
.prose strong { font-weight:600 }
.prose :is(p,ul,ol) { margin-bottom:20px }
.prose>div[lang]>* { max-width:68ch }
.btn { display:inline-flex; justify-content:center; align-items:center; gap:10px; min-height:48px; padding:12px 18px; border:1px solid var(--v2-action); border-radius:8px; background:var(--v2-action); color:#fff; font:500 14px/1.5 var(--sans); white-space:normal; text-align:center; text-decoration:none; box-shadow:none }
.btn:hover { background:var(--v2-hover); transform:none; box-shadow:none }
.btn.sec { background:var(--v2-surface); color:var(--v2-action); border-color:var(--v2-control) }
.btn.sec:hover { background:var(--v2-soft) }
input[type=email] { min-height:48px; min-width:0; max-width:100%; border:1px solid var(--v2-control); border-radius:8px; font:400 16px/1.5 var(--sans); background:#fff; color:var(--v2-ink) }
/* Legal contents use app.js's existing .toc / .prose>div[lang] contract. */
.docs-layout { max-width:68ch; margin-inline:auto }
.docs-layout .toc { margin:0 0 32px }
.docs-layout .toc details { border:1px solid var(--v2-border); border-radius:12px; background:var(--v2-surface) }
.docs-layout .toc summary { min-height:48px; padding:16px 20px; font-size:13px; font-weight:550 }
.docs-layout .toc ol { padding:0 20px 20px }
.docs-layout .toc a { padding:10px 0 10px 14px; font-size:13px; line-height:1.6; color:var(--v2-muted) }
.docs-layout .toc a[aria-current=true] { color:var(--v2-ink); font-weight:550 }
.docs-layout h2:target { background:var(--v2-soft); border-radius:4px; outline:8px solid var(--v2-soft) }
/* Checkout: the original order, assent tray, hints and optional rows. */
.review-page .review { max-width:680px }
.review h1 { text-align:center; margin:8px 0 36px }
.rv-back { margin:0 0 20px }
.rv-back a { font-size:13px; font-weight:400; color:var(--v2-muted) }
.review-panel { margin:0; padding:32px; border:1px solid var(--v2-border); border-radius:20px; background:var(--v2-surface); box-shadow:0 16px 36px -24px #00000026 }
.review-panel .rv-h { padding:0 0 18px; border-bottom:1px solid var(--v2-border); font:550 17px/1.5 var(--sans); letter-spacing:0 }
.rv-lines li { padding:16px 0; font-size:15px; gap:20px }
.rv-total { padding-top:24px }
.rv-total span { font-size:15px; font-weight:500 }
.rv-total b { font-size:36px; font-weight:550 }
.review-panel .rv-cur { margin-top:10px; font-size:13px }
.review-panel :is(.assent,.assent-eu-note,.assent-err,.rv-hint,.rv-cta) { border-inline:1px solid #b6b6b6; background:#f5f5f5; padding-inline:20px }
.review-panel .assent { border-top:1px solid #b6b6b6; margin-top:28px; padding-top:20px; font-size:14px; line-height:1.75; border-radius:10px 10px 0 0 }
.review-panel .assent.assent-eu { margin-top:0; border-radius:0; border-top:1px solid var(--v2-border) }
.review-panel .assent-eu-note { padding-left:20px; font-size:13px; line-height:1.7 }
.review-panel .rv-hint { font-size:13px; font-weight:500 }
.review-panel .rv-cta { border-bottom:1px solid #b6b6b6; padding-block:16px 20px; border-radius:0 0 10px 10px }
.review-panel .rv-cta .btn { min-height:52px; font-size:14px; box-shadow:none }
.review-panel .rv-cta .btn[aria-disabled=true] { border-color:var(--v2-control); box-shadow:none }
.review-panel :is(.rv-under,.rv-rights) { font-size:13px; line-height:1.75; color:var(--v2-muted) }
.review-panel .rv-under { padding-top:16px; border-top:1px solid var(--v2-border) }
.review-panel .rv-trust { margin-top:24px; gap:12px }
.review-panel .rv-trust li { font-size:14px; line-height:1.7 }
.review-panel .rv-trust li::before { border-color:var(--docs-green) }
.rv-addon,.rv-upsell { margin-top:36px }
:is(.rv-addon,.rv-upsell) legend { font-size:16px; font-weight:550 }
.rv-opt { padding:20px; border:1px solid var(--v2-border); border-radius:12px }
.rv-opt-name,.rv-opt-price { font-size:14px; font-weight:550 }
.rv-opt-desc { font-size:14px; line-height:1.7; color:var(--v2-muted) }
.rv-opt:has(input:checked) { border-color:var(--v2-control); background:var(--v2-soft); box-shadow:none }
/* Thanks and library keep every original text node and generated state. */
body:has(:is(#dl,#lib)) main>.wrap { max-width:848px }
body:has(:is(#dl,#lib)) .prose>* { max-width:none }
body:has(#dl) .prose { counter-reset:docs-step }
body:has(#dl:is([data-state=ready],[data-state=booked])) .page-head::before {
  content:""; display:block; width:56px; height:56px; margin:0 auto 24px;
  border:1px solid #b7d4c0; border-radius:50%; background:var(--docs-green-bg);
  mask:none; -webkit-mask:none;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='m6 12 4 4 8-8' fill='none' stroke='%23276746' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
  background-repeat:no-repeat; background-position:center; background-size:30px;
}
.prose #dl { margin:0 0 20px; padding:28px; border:1px solid var(--v2-border); border-radius:16px; background:var(--v2-surface); font-size:15px }
body:has(#dl) .prose>p:first-of-type { padding:24px 28px; border:1px solid var(--v2-border); border-radius:16px; background:var(--v2-surface) }
body:has(#dl[data-state=ready]) :is(#dl,.prose>p:first-of-type)::before { counter-increment:docs-step; content:counter(docs-step) / ""; display:grid; place-items:center; width:28px; height:28px; margin-bottom:16px; border:1px solid var(--v2-border); border-radius:8px; background:var(--v2-soft); color:var(--v2-ink); font:500 13px/1 var(--sans) }
.prose #dl[data-state=error] { border-color:#bb7777; background:#fff7f7; color:#7d2727 }
.prose #dl[data-state=booked] { border-color:#b7d4c0; background:var(--docs-green-bg) }
#dl .dl-h { font-size:17px; font-weight:550 }
#dl .dl-files { display:grid; grid-template-columns:minmax(0,1fr); gap:12px; margin:16px 0 20px }
#dl .dl-files .btn { justify-content:flex-start; text-align:left; padding:16px 20px }
#dl>p:not(.dl-h) { font-size:14px; line-height:1.8 }
#dl>p:last-child { margin-bottom:0 }
#dl .dl-lib { padding-top:20px; border-top:1px solid var(--v2-border) }
#dl .dl-lib .btn { display:flex; width:fit-content; margin-bottom:16px }
body:has(#dl) .prose>p:not(:first-of-type,.disc) { font-size:14px; line-height:1.85 }
.legal .lp-offer { margin:32px 0; padding:28px; border:1px solid var(--v2-border); border-radius:16px; background:var(--v2-surface); box-shadow:none }
.legal .lp-offer h2 { margin:0 0 16px; font-size:28px }
.lp-offer p,.lp-offer .assent { font-size:14px; line-height:1.8 }
.lp-offer .assent { padding:16px; border:1px solid #b6b6b6; border-radius:10px; background:var(--v2-soft) }
.lp-offer .assent-note { font-size:13px }
body:has(:is(#dl,#lib)) .prose>.disc { display:block; padding:24px 0 0; margin:40px 0 0; border:0; border-top:1px solid var(--v2-border); background:none; font-size:13px; color:var(--v2-muted) }
body:has(:is(#dl,#lib)) .prose>.disc::before { content:none }
/* File cards use only real library metadata. Sizes are not supplied by the API. */
.lib-status { padding:16px 20px; border:1px solid var(--v2-border); border-radius:12px; background:var(--v2-soft); font-size:14px }
.lib-card { margin:20px 0; padding:28px; border:1px solid var(--v2-border); border-radius:16px; background:var(--v2-surface) }
.legal .lib-card .lib-h { margin:0 0 16px; font:550 19px/1.5 var(--sans) }
.lib-card .lib-meta { display:inline-block; max-width:100%; margin:0 0 16px; padding:6px 12px; border:1px solid var(--v2-border); border-radius:16px; background:var(--v2-soft); font-size:12px; line-height:1.7; font-variant-numeric:tabular-nums }
.lib-card .lib-upd { margin:0 0 20px; padding:0; border:0; background:none; color:var(--v2-muted); font-size:13px; line-height:1.8 }
.lib-card .dl-files { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:12px; margin:0 }
.lib-card .dl-files .btn { justify-content:flex-start; text-align:left; padding:16px }
.lib-card .dl-files [data-lang=both] { grid-column:1/-1 }
/* Decorative archive icon, selected from the actual download filename. */
.dl-files a[download$=".zip" i]::before { content:""; flex:none; width:24px; height:28px; background:currentColor; mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 28'%3E%3Cpath d='M4 1h10l6 6v20H4zM14 1v7h6M9 2v3m0 2v3m0 2v3m0 2v3m-2 1h4v4H7z' fill='none' stroke='black' stroke-width='1.5' stroke-linejoin='round'/%3E%3C/svg%3E") center/contain no-repeat }
.lib-lang-note { margin:24px 0; font-size:14px; line-height:1.8 }
.lib-more { font-size:14px }
.lib-form { gap:12px; margin:24px 0 16px }
.lib-form input[type=email] { border-color:var(--v2-control); border-radius:8px; padding:12px 16px }
.lib-resend-status { font-size:14px; padding:16px; border:1px solid var(--v2-border); border-radius:8px; background:var(--v2-soft) }
@media(min-width:1080px) {
  .docs-layout { display:grid; grid-template-columns:240px minmax(0,68ch); gap:64px; align-items:start; max-width:none; justify-content:center }
  .docs-layout .toc { position:sticky; top:88px; max-height:calc(100dvh - 112px); overflow-y:auto; overscroll-behavior:contain; scrollbar-width:thin; margin:0 }
  .docs-layout .toc details { border:0; border-radius:0; background:none }
  .docs-layout .toc summary { padding:0 0 18px; min-height:44px }
  .docs-layout .toc ol { padding:0 4px 8px }
  .docs-layout .prose { min-width:0 }
  body:has(.docs-layout) .page-head { max-width:none; padding:0 0 40px; border-bottom:1px solid var(--v2-border) }
}
@media(max-width:639px) {
  body { --gutter:20px }
  .page { padding:36px 0 56px }
  .page-head { margin-bottom:28px }
  .nav { flex-wrap:wrap; gap:8px 14px; padding-block:10px }
  .nav a.l { display:inline-flex; align-items:center; font-size:13px; padding:4px 0 }
  .nav:has(a.l) .brand { flex-basis:calc(100% - 80px) }
  .nav:has(a.l) .lang { position:absolute; right:var(--gutter); top:10px }
  .docs-layout h2 { scroll-margin-top:136px }
  .review-panel { padding:20px; border-radius:16px }
  .review-panel :is(.assent,.assent-eu-note,.assent-err,.rv-hint,.rv-cta) { padding-inline:16px }
  .legal .prose h2 { font-size:27px }
  .legal .lp-offer,.lib-card,.prose #dl { padding:20px }
  .lib-card .dl-files { grid-template-columns:minmax(0,1fr) }
  .lib-form .btn { width:100% }
  #dl .dl-lib .btn { width:100% }
  .rv-opt { padding:16px }
}
@media(prefers-reduced-motion:reduce) {
  *,*::before,*::after { scroll-behavior:auto!important; transition:none!important; animation:none!important }
}
@media(forced-colors:active) {
  .review-panel,.lib-card,.prose #dl,.docs-layout .toc details,.lp-offer { border-color:CanvasText }
  .dl-files a[download]::before { background:ButtonText }
  .docs-layout h2:target { outline-color:Highlight }
}
@media print {
  @page { margin:18mm }
  body { background:#fff; color:#111; font-size:11pt }
  header.top,.skip,.docs-layout .toc { display:none!important }
  .page { padding:0 }
  .wrap { max-width:none; padding:0 }
  .docs-layout { display:block; max-width:68ch; margin:auto }
  .docs-layout .prose { font-size:11pt; line-height:1.6 }
  .page-head { padding:0; margin-bottom:24px; text-align:left }
  .legal .page-head h1 { font-size:28pt }
  .legal .prose h2 { margin-top:24pt; font-size:18pt; break-after:avoid }
  :is(p,li) { orphans:3; widows:3 }
  a { color:inherit; text-decoration:underline }
  .docs-layout h2:target { background:none; outline:0 }
  footer { margin-top:28px; padding-top:20px; font-size:9pt; break-inside:avoid }
  footer .disc { font-size:9pt }
  .review-panel,.lib-card,.legal .lp-offer,.prose #dl { box-shadow:none; background:#fff; border-color:#aaa }
}
