/* Proceeds Ledger: the tool page (app.html).
   Loaded after style.css. It adds only what the shared stylesheet does not have: the one-step-at-a-time wizard (stepper,
   stage, step actions), the sample-data strip, the result hero and compact table, the ledger switch, the download area
   and the license card. Every value is a --pl-* token and every rule is scoped under body.page-tool. */

/* ---- Safety nets and the two CSS fixes the tool needs ---- */
body.page-tool [hidden] { display: none !important; }
body.page-tool .table-wrap { position: relative; }                 /* keeps .visually-hidden spans inside the scroll box */
body.page-tool .field > .dropzone {                                /* beats ".field label { display: block }" */
  display: flex; flex-direction: column; align-items: center; justify-content: center;
}
body.page-tool :is(#payments-error, #reports-error, #res-error, #res-choose, #res-table, #res-regions, #res-unpaid,
  #res-summary, #res-journal, #res-full, #res-apps):empty { display: none; }
/* Live regions stay rendered while empty (display: none would swallow their first message) but take no room. */
body.page-tool :is(#res-deposit, #export-status, #license-message):empty { position: absolute; width: 1px; height: 1px; overflow: hidden; }

/* ---- Column and page head ---- */
body.page-tool .tool-column { width: min(100% - var(--pl-gutter) * 2, var(--pl-tool)); }
body.page-tool .page-head { margin-bottom: var(--pl-space-4); }
body.page-tool .privacy-line { margin: 0; color: var(--pl-text-muted); font-size: var(--pl-type-support); }
body.page-tool noscript .callout { margin-bottom: var(--pl-space-5); }
/* Phones: less chrome above the step. A smaller title, and the privacy promise only on the Files step. */
body.page-tool .page-head h1 { font-size: var(--pl-type-title); }
body.page-tool:has(#stage-files[hidden]) .privacy-line { display: none; }
@media (min-width: 37.5rem) {
  body.page-tool .page-head h1 { font-size: var(--pl-type-heading-section); }
  body.page-tool:has(#stage-files[hidden]) .privacy-line { display: block; }
}

/* ---- Disclosures (native details): a hairline above and below each group ---- */
body.page-tool .disclosure { border-block: 1px solid var(--pl-divider); }
body.page-tool .disclosure > summary {
  display: flex; align-items: center; justify-content: space-between; gap: var(--pl-space-4);
  min-height: var(--pl-control-min); cursor: pointer; list-style: none;
  font-weight: var(--pl-weight-medium); color: var(--pl-text);
}
body.page-tool .disclosure > summary::-webkit-details-marker { display: none; }
body.page-tool .disclosure > summary::after {
  content: ""; flex: none; width: var(--pl-icon-xs); height: var(--pl-icon-xs); color: var(--pl-text-muted);
  background: linear-gradient(currentColor, currentColor) center / 100% 1.5px no-repeat,
              linear-gradient(currentColor, currentColor) center / 1.5px 100% no-repeat;
  transition: transform var(--pl-motion-base) var(--pl-ease-out);
}
body.page-tool .disclosure[open] > summary::after { transform: rotate(45deg); }
body.page-tool .disclosure > :not(summary) { margin-top: var(--pl-space-3); max-width: 100%; }
body.page-tool .disclosure > :not(summary):last-child { margin-bottom: var(--pl-space-4); }
body.page-tool .disclosure p { margin-bottom: 0; }
/* Neighbouring disclosures share one hairline and sit flush, whatever gap their container has. */
body.page-tool .disclosure + .disclosure { margin-top: calc(var(--stack, var(--pl-space-5)) * -1); border-top: 0; }
body.page-tool .disclosure[hidden] + .disclosure { margin-top: 0; border-top: 1px solid var(--pl-divider); }
body.page-tool .legend ul { margin: 0; padding-left: 1.25rem; display: grid; gap: var(--pl-space-2); }
body.page-tool .legend li { padding-left: var(--pl-space-1); }

/* ---- Sample-data strip: static, directly above the stepper. Phones: badge + button only; wide screens add the line. ---- */
body.page-tool .demo-bar {
  display: flex; flex-wrap: wrap; align-items: center; gap: var(--pl-space-1) var(--pl-space-3);
  margin-bottom: var(--pl-space-3); padding: var(--pl-space-1) var(--pl-space-1) var(--pl-space-1) var(--pl-space-3);
  border: 1px solid var(--pl-edge); border-radius: var(--pl-radius-surface-md); background: var(--pl-fill);
}
body.page-tool .demo-bar .btn { order: 1; margin-inline-start: auto; }
body.page-tool .demo-bar p {
  display: none; order: 2; flex: 1 1 100%; margin: 0; padding-bottom: var(--pl-space-2);
  color: var(--pl-text-muted); font-size: var(--pl-type-metadata); line-height: var(--pl-leading-note);
}
@media (min-width: 37.5rem) {
  body.page-tool .demo-bar { flex-wrap: nowrap; padding-block: 0; }
  body.page-tool .demo-bar .btn { order: 3; }
  body.page-tool .demo-bar p { display: block; order: 2; flex: 1 1 auto; padding-bottom: 0; }
}

/* ---- Stepper: one button per step ---- */
body.page-tool .tool-steps { margin-bottom: var(--pl-space-4); }
body.page-tool .stepper { flex-direction: row; flex-wrap: wrap; align-items: center; gap: var(--pl-space-1); }
body.page-tool .stepper > li { gap: var(--pl-space-2); }
body.page-tool .stepper > li + li::before { content: ""; width: var(--pl-space-3); height: 1px; background: var(--pl-divider); }
@media (min-width: 37.5rem) {
  body.page-tool .stepper { gap: var(--pl-space-1) var(--pl-space-2); }
  body.page-tool .stepper > li { gap: var(--pl-space-3); }
  body.page-tool .stepper > li + li::before { width: var(--pl-space-5); }
}
body.page-tool .step-link {
  display: flex; align-items: center; gap: var(--pl-space-2);
  min-height: var(--pl-control-min); padding: 0 var(--pl-space-1);
  border: 0; border-radius: var(--pl-radius-pill); background: none;
  color: inherit; font: inherit; text-align: left; cursor: pointer; -webkit-tap-highlight-color: transparent;
}
body.page-tool .step-link:hover .step-label { text-decoration: underline; text-underline-offset: 0.25em; }
body.page-tool .step-link[aria-disabled="true"] { cursor: default; }
body.page-tool .step-link[aria-disabled="true"]:hover .step-label { text-decoration: none; }
body.page-tool .stepper > li[data-state="locked"] { color: var(--pl-text-subtle); }
body.page-tool .stepper > li[data-state="locked"] .step-index { background: none; }
body.page-tool .stepper > li[data-state="upcoming"] .step-index { box-shadow: inset 0 0 0 1px var(--pl-control-border); color: var(--pl-text-muted); }
body.page-tool .stepper > li[data-state="done"] .step-index { background: var(--pl-selected); box-shadow: none; color: var(--pl-text); }
body.page-tool .step-link[aria-current="step"] { color: var(--pl-text); font-weight: var(--pl-weight-semibold); }
body.page-tool .stepper > li .step-link[aria-current="step"] .step-index { background: var(--pl-accent); box-shadow: none; color: var(--pl-text-on-action); }
body.page-tool :is(.step-index, .step-num) { font-size: var(--pl-type-metadata); }  /* 14px; style.css sets the 13px tag size */
body.page-tool .step-check {
  display: none; width: var(--pl-icon-xs); height: var(--pl-icon-xs);
  fill: none; stroke: currentColor; stroke-width: var(--pl-icon-stroke); stroke-linecap: round; stroke-linejoin: round;
}
body.page-tool .stepper > li[data-state="done"] .step-num { display: none; }
body.page-tool .stepper > li[data-state="done"] .step-check { display: block; }

/* ---- The one step on screen: flat on phones, a card on wide screens ---- */
body.page-tool .stage {
  --stack: var(--pl-space-5);
  display: flex; flex-direction: column; gap: var(--stack); align-content: start; min-width: 0; /* flex on phones: a sticky child needs the whole stage as its containing block, a grid row is too short */
  padding-block: var(--pl-space-5) 0; border-top: 1px solid var(--pl-divider);
}
body.page-tool .stage > *, body.page-tool :is(.check-body, .stage-body) > * { min-width: 0; }
body.page-tool :is(.check-body, .stage-body) { display: grid; gap: var(--stack); align-content: start; min-width: 0; }
body.page-tool .stage > h2 {
  font: var(--pl-weight-semibold) var(--pl-type-heading-card)/1.27 var(--pl-font-ui);
  letter-spacing: var(--pl-tracking-heading); text-wrap: balance;
}
@keyframes pl-stage-in { from { opacity: 0; } to { opacity: 1; } }
body.page-tool .stage.is-entering { animation: pl-stage-in 150ms var(--pl-ease-out) both; }
@media (prefers-reduced-motion: reduce) { body.page-tool .stage.is-entering { animation: none; } }
@media (min-width: 37.5rem) {
  body.page-tool .stage { display: grid; }
}
@media (min-width: 56.25rem) {
  body.page-tool .stage {
    padding: var(--pl-space-5); border: 1px solid var(--pl-edge); border-radius: var(--pl-radius-surface-lg);
    background: var(--pl-solid); box-shadow: var(--pl-specular);
  }
}

/* ---- Step actions: one primary button, one quiet one. Phones stack them full width. ---- */
body.page-tool .step-actions { display: flex; flex-direction: column; align-items: stretch; gap: var(--pl-space-2); }
body.page-tool .step-actions .btn { width: 100%; }
/* Phones: once a step has its primary button (Continue after a file is added, Continue to download), the bar stays
   pinned to the bottom of the screen, edge to edge, clear of the home indicator. The Download step has no such bar. */
body.page-tool .stage > .step-actions:has(> .btn-primary:not([hidden])) {
  position: sticky; bottom: 0; z-index: var(--pl-z-raised);
  margin-inline: calc(var(--pl-gutter) * -1);
  padding: var(--pl-space-3) var(--pl-gutter) calc(var(--pl-space-3) + env(safe-area-inset-bottom, 0px));
  background: var(--pl-canvas); border-top: 1px solid var(--pl-divider);
}
/* Keep a focused control from landing under the pinned bar. */
html:has(.stage:not([hidden]) > .step-actions > .btn-primary:not([hidden])) { scroll-padding-bottom: 9rem; }
@media (min-width: 37.5rem) {
  body.page-tool .step-actions { flex-direction: row; align-items: center; gap: var(--pl-space-3); }
  body.page-tool .step-actions .btn { width: auto; }
  body.page-tool .step-actions .btn-primary { min-width: 14rem; }
  body.page-tool .stage > .step-actions:has(> .btn-primary:not([hidden])) {
    position: static; margin-inline: 0; padding: 0; background: none; border-top: 0;
  }
  html:has(.stage:not([hidden]) > .step-actions > .btn-primary:not([hidden])) { scroll-padding-bottom: auto; }
}

/* ---- Step 1: files ---- */
body.page-tool .files-input { display: grid; gap: var(--pl-space-4); }
body.page-tool .files-input > * { min-width: 0; margin: 0; }
body.page-tool #payments-error { scroll-margin-bottom: var(--pl-space-4); } /* revealPaymentsError()'s scrollIntoView({ block: 'nearest' }) then leaves a gap under the message */
body.page-tool .dropzone-lg { min-height: 10rem; gap: var(--pl-space-2); }
body.page-tool .dropzone-lg .dropzone-hint { font-size: var(--pl-type-body); }
body.page-tool .dropzone-hint { overflow-wrap: anywhere; max-width: 100%; }
/* The Payments drop zone title is the ivory "Choose file" button (the label is the click target). It keeps .btn's own type, and follows the zone's hover and busy states. */
body.page-tool .dropzone:hover .dropzone-title.btn-primary { background: var(--pl-action-hover); }
body.page-tool .dropzone[aria-busy="true"] .dropzone-title.btn { cursor: progress; }
/* Touch screens cannot drop a file: hide "or drop it here" (not the busy or refused-file messages). */
@media (hover: none) {
  body.page-tool #payments-drop .dropzone-hint.is-drop-hint, body.page-tool #reports-drop .dropzone-hint { display: none; }
}
body.page-tool .dropzone-lg code { margin-top: var(--pl-space-1); }
body.page-tool .files-sample { width: 100%; border-color: var(--pl-control-border); }
@media (min-width: 37.5rem) {
  body.page-tool .dropzone-lg { min-height: 13rem; }
  body.page-tool .files-sample { width: auto; min-width: 18rem; justify-self: center; }
}
body.page-tool .dropzone.has-error .dropzone-title:not(.btn), body.page-tool #payments-drop.has-error .dropzone-hint { color: var(--pl-danger); } /* a refused Payments file is named in the hint, under the button */
body.page-tool .dropzone[aria-busy="true"] { cursor: progress; }
body.page-tool .file-summary { margin: 0; }
body.page-tool .file-summary-line { display: flex; flex-wrap: wrap; align-items: center; gap: var(--pl-space-1) var(--pl-space-2); margin: 0; overflow-wrap: anywhere; }
body.page-tool .file-summary-line code { font-size: var(--pl-type-body); }
body.page-tool #reports-optional .dropzone { min-height: 6rem; }
body.page-tool #reports-optional .field { margin-top: var(--pl-space-3); }
body.page-tool #reports-optional > #reports-status { margin-top: var(--pl-space-3); }
body.page-tool .file-meta { display: grid; gap: var(--pl-space-1); }
body.page-tool .file-meta code { justify-self: start; }
body.page-tool .nowrap { white-space: nowrap; }
body.page-tool #summary-meta { display: flex; flex-wrap: wrap; gap: var(--pl-space-1) var(--pl-space-2); }

/* ---- Step 2: the result hero ---- */
body.page-tool .check-result { display: grid; gap: var(--pl-space-4); align-content: start; }
body.page-tool .hero {
  display: grid; justify-items: start; gap: var(--pl-space-2);
  padding: var(--pl-space-5);
  border: 1px solid color-mix(in srgb, var(--pl-accent) var(--pl-tint-edge), var(--pl-edge-hover));
  border-radius: var(--pl-radius-surface-lg);
  background: color-mix(in srgb, var(--pl-accent) var(--pl-tint-wash), var(--pl-solid));
  box-shadow: inset 0 2px 0 color-mix(in srgb, var(--pl-accent) var(--pl-tint-bloom), transparent), var(--pl-specular);
}
body.page-tool .hero > * { min-width: 0; margin: 0; max-width: 100%; }
body.page-tool .summary-label { color: var(--pl-text-muted); font-size: var(--pl-type-support); }
body.page-tool .summary-numeral {
  display: flex; flex-wrap: wrap; align-items: baseline; gap: 0 var(--pl-space-2);
  font: var(--pl-weight-semibold) var(--pl-type-headline)/1.1 var(--pl-font-ui);
  letter-spacing: var(--pl-tracking-headline); font-variant-numeric: tabular-nums; overflow-wrap: anywhere;
}
body.page-tool .summary-unit { font-size: var(--pl-type-title); font-weight: var(--pl-weight-medium); letter-spacing: 0; color: var(--pl-text-muted); }
body.page-tool .summary-status { margin-top: var(--pl-space-2); }
body.page-tool .summary-status .pill { min-height: var(--pl-control-min); padding-inline: var(--pl-space-4); font-size: var(--pl-type-body); white-space: normal; }
body.page-tool .summary-carried { color: var(--pl-text-muted); font-size: var(--pl-type-support); }
@media (min-width: 56.25rem) {
  body.page-tool .hero { padding: var(--pl-space-6); }
  body.page-tool .summary-numeral { font-size: var(--pl-type-numeral); letter-spacing: var(--pl-tracking-numeral); }
  /* Wide screens: the hero and the region table sit side by side, so the answer and the next button share one screen. */
  body.page-tool .check-body { grid-template-columns: minmax(0, 5fr) minmax(0, 7fr); align-items: start; }
  body.page-tool .check-body > .disclosure { grid-column: 1 / -1; }
}
body.page-tool .bank-field { max-width: var(--pl-form); }
body.page-tool .field-error:empty { display: none; }
body.page-tool #res-deposit p { margin: 0; }
body.page-tool .callout .field { margin-top: var(--pl-space-3); }

/* ---- Step 2: tables ---- */
body.page-tool .table-compact :is(th, td) { padding-inline: var(--pl-space-2); white-space: normal; }
body.page-tool .table-compact :is(th, td).num { white-space: nowrap; }
body.page-tool .table-compact thead th { vertical-align: bottom; }
body.page-tool .table-regions tbody :is(th, td) { padding-block: var(--pl-space-1); vertical-align: middle; }
body.page-tool .table-compact tr.row-warn > :is(th, td) { background: var(--pl-warning-selected); }
body.page-tool .table-compact tr.row-err > :is(th, td) { background: var(--pl-danger-selected); }
body.page-tool .table-compact tr.row-warn > :first-child { box-shadow: inset 3px 0 0 var(--pl-warning); }
body.page-tool .table-compact tr.row-err > :first-child { box-shadow: inset 3px 0 0 var(--pl-danger); }
body.page-tool .hide-narrow { display: none; }
@media (min-width: 40rem) {
  body.page-tool .table-compact :is(th, td) { padding-inline: var(--pl-space-3); }
  body.page-tool .hide-narrow { display: table-cell; }
}
body.page-tool .table-compact .pill { white-space: normal; line-height: 1.25; padding-block: var(--pl-space-1); height: auto; }
body.page-tool .table-full td.checks { white-space: nowrap; min-width: 0; }
body.page-tool .table-full td.checks .pill-row { flex-wrap: nowrap; }
body.page-tool .disclosure .result-block { margin-top: 0; }
body.page-tool .status-detail { display: block; margin-top: var(--pl-space-1); color: var(--pl-text-muted); font-size: var(--pl-type-metadata); line-height: var(--pl-leading-note); white-space: normal; }
body.page-tool .file-checks { display: grid; gap: var(--pl-space-3); }
body.page-tool .file-checks p { margin: 0; }
body.page-tool .check-line { display: flex; flex-wrap: wrap; align-items: center; gap: var(--pl-space-2) var(--pl-space-3); }
body.page-tool .result-block > p { margin: 0; }
body.page-tool .result-block .table-wrap + p { margin-top: 0; }

/* ---- Step 2: "Show details" ---- */
body.page-tool .detail-sections { display: grid; gap: var(--pl-space-6); }
body.page-tool .detail-section { display: grid; gap: var(--pl-space-3); align-content: start; min-width: 0; }
body.page-tool .detail-section > h3 { margin: 0; font: var(--pl-weight-semibold) var(--pl-type-support)/var(--pl-leading-note) var(--pl-font-ui); }
/* Wide tables: a soft shadow on the side that still has columns to scroll to (overlay scrollbars hide the overflow). */
body.page-tool .detail-section .table-wrap {
  background:
    linear-gradient(to right, var(--pl-solid) 30%, transparent) left / 2rem 100% no-repeat local,
    linear-gradient(to left, var(--pl-solid) 30%, transparent) right / 2rem 100% no-repeat local,
    linear-gradient(to right, var(--pl-divider), transparent) left / 0.75rem 100% no-repeat scroll,
    linear-gradient(to left, var(--pl-divider), transparent) right / 0.75rem 100% no-repeat scroll,
    var(--pl-solid);
}

/* ---- Step 3: ledger switch, date, downloads ---- */
body.page-tool .export-controls { display: grid; gap: var(--pl-space-4); align-items: start; }
@media (min-width: 37.5rem) {
  body.page-tool .export-controls { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--pl-space-5); }
}
body.page-tool .ledger-field { margin: 0; }
body.page-tool .ledger-field > legend { padding: 0; margin-bottom: var(--pl-space-2); font-weight: var(--pl-weight-medium); }
body.page-tool .seg {
  display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 2px; padding: 2px;
  border: 1px solid var(--pl-control-border); border-radius: var(--pl-radius-pill); background: var(--pl-fill);
}
body.page-tool .seg > label {
  display: flex; align-items: center; justify-content: center; min-height: var(--pl-control-min); padding: 0 var(--pl-space-3);
  border-radius: var(--pl-radius-pill); color: var(--pl-text-muted); text-align: center; text-wrap: balance; cursor: pointer;
  font-weight: var(--pl-weight-medium); line-height: 1.25;
  transition: background-color var(--pl-motion-fast) var(--pl-ease), color var(--pl-motion-fast) var(--pl-ease);
}
body.page-tool .seg > input:not(:checked) + label:hover { background: var(--pl-fill-hover); color: var(--pl-text); }
body.page-tool .seg > input:checked + label {
  background: color-mix(in srgb, var(--pl-accent) var(--pl-tint-halo), var(--pl-solid));
  box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--pl-accent) var(--pl-tint-line), transparent);
  color: var(--pl-accent); font-weight: var(--pl-weight-semibold);
}
body.page-tool .seg > input:focus-visible + label { outline: var(--pl-focus-width) solid var(--pl-focus); outline-offset: var(--pl-focus-offset); }
@media (forced-colors: active) {
  body.page-tool .seg > input:checked + label { outline: 2px solid Highlight; outline-offset: -2px; }
}

body.page-tool .download-main { display: grid; gap: var(--pl-space-2); }
body.page-tool .download-main .btn { width: 100%; min-height: 3.5rem; font-size: var(--pl-type-body-large); }
body.page-tool .download-main > p { margin: 0; text-align: center; }
body.page-tool .download-main > #export-reason { text-align: left; }  /* the "why it is off" notice sits right above the button */
@media (min-width: 37.5rem) {
  body.page-tool .download-main { justify-items: start; }
  body.page-tool .download-main .btn { width: auto; min-width: 20rem; }
  body.page-tool .download-main > p { text-align: left; }
}
body.page-tool #export-reason:empty { display: none; }
body.page-tool #export-status p { margin: 0; }

body.page-tool .free-downloads { display: grid; gap: var(--pl-space-2); }
body.page-tool .small-label { margin: 0; color: var(--pl-text-muted); font: var(--pl-weight-medium) var(--pl-type-metadata)/var(--pl-leading-note) var(--pl-font-ui); letter-spacing: var(--pl-tracking-label); }
body.page-tool .free-downloads .btn-row .btn { flex: 1 1 auto; }
@media (min-width: 37.5rem) {
  body.page-tool .free-downloads .btn-row .btn { flex: 0 1 auto; }
}

body.page-tool .demo-next { display: grid; justify-items: start; gap: var(--pl-space-2); }
body.page-tool .demo-next > * { margin: 0; }
body.page-tool .demo-next h3 { font: var(--pl-weight-semibold) var(--pl-type-body-large)/var(--pl-leading-title) var(--pl-font-ui); }
body.page-tool .demo-next .btn { margin-top: var(--pl-space-2); width: 100%; }
@media (min-width: 37.5rem) { body.page-tool .demo-next .btn { width: auto; } }

/* ---- Step 3: license card ---- */
body.page-tool .license-card {
  display: grid; gap: var(--pl-space-3); padding: var(--pl-space-5);
  border: 1px solid var(--pl-edge-hover); border-radius: var(--pl-radius-surface-md); background: var(--pl-fill);
}
body.page-tool .license-card > * { min-width: 0; margin: 0; }
body.page-tool .license-card h3 { font: var(--pl-weight-semibold) var(--pl-type-title)/var(--pl-leading-title) var(--pl-font-ui); }
body.page-tool .license-card .btn-row { margin-top: var(--pl-space-2); }
body.page-tool .license-card .btn-row > .btn { flex: 1 1 100%; }
@media (min-width: 37.5rem) { body.page-tool .license-card .btn-row > .btn { flex: 0 1 auto; } }
body.page-tool .license-form { display: grid; gap: var(--pl-space-3); max-width: var(--pl-form); padding-top: var(--pl-space-2); }
body.page-tool .license-form .btn { justify-self: start; }
body.page-tool .license-active { display: flex; flex-wrap: wrap; align-items: center; gap: 0 var(--pl-space-2); margin: 0; }
body.page-tool .license-active .btn-ghost { margin-inline-start: calc(var(--pl-space-3) * -1); } /* the text, not the padding, lines up with the left edge */

/* ---- Step 3: journal tables and settings ---- */
body.page-tool .table-journal :is(th, td) { padding-inline: var(--pl-space-2); white-space: normal; }
body.page-tool .table-journal :is(th, td).num { white-space: nowrap; }
/* The preview grows with its rows on phones; style.css caps it from 56.25rem, where the Totals row stays pinned. */
body.page-tool .table-journal tfoot :is(th, td) { position: sticky; bottom: 0; z-index: 1; background: var(--pl-solid); }
body.page-tool .table-journal .group-row th {
  padding-block: var(--pl-space-3) var(--pl-space-2); background: var(--pl-fill); color: var(--pl-text);
  font-weight: var(--pl-weight-semibold); text-align: left;
}
@media (min-width: 40rem) {
  body.page-tool .table-journal :is(th, td) { padding-inline: var(--pl-space-3); }
}

body.page-tool .settings-body { display: grid; gap: var(--pl-space-5); padding-top: var(--pl-space-2); }
body.page-tool .settings-body > * { min-width: 0; margin: 0; }
body.page-tool .settings-body legend { padding: 0; margin-bottom: var(--pl-space-3); font-weight: var(--pl-weight-semibold); }
body.page-tool .settings-body fieldset > * + * { margin-top: var(--pl-space-4); }
body.page-tool .settings-body fieldset > legend + * { margin-top: 0; }
body.page-tool .field-check { align-items: flex-start; }
body.page-tool .field-check > div { display: grid; gap: var(--pl-space-1); }
body.page-tool .field-check > input { margin-top: var(--pl-space-3); }
