/* Financial statement analyzer (includes/Analyzer.php, assets/js/analyzer.js).
   Ledger tokens; 1rem = 10px on this site. */

.frg-an { display: grid; gap: 3.2rem; margin: 2.4rem 0; }
.frg-an p { margin: 0; }

/* The form. */
.frg-an__form { display: grid; gap: 2.4rem; padding: 2.4rem; border: 1px solid var(--line); border-radius: var(--radius-m); background: var(--paper); }
.frg-an__top { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: center; gap: 1.2rem 2.4rem; }
.frg-an__privacy { color: var(--ink-muted); font-size: 1.45rem; }
.frg-an__actions { display: flex; flex-wrap: wrap; align-items: center; gap: 1rem; }
.frg-an__actions [hidden] { display: none; }
.frg-an__meta { display: grid; grid-template-columns: repeat(auto-fit, minmax(20rem, 1fr)); gap: 1.6rem 2.4rem; }
.frg-an__group { display: grid; gap: 2rem; margin: 0; padding: 0; border: 0; }
html body .frg-an__group legend, .frg-an__group > summary { margin-bottom: 0.4rem; padding: 0; color: var(--ink); font-family: var(--font-display); font-size: 2.2rem; line-height: 1.3; font-weight: 600; }
.frg-an__group > summary { cursor: pointer; }
.frg-an__group--opening[open] > summary { margin-bottom: 1.6rem; }
.frg-an__block { display: grid; grid-template-columns: repeat(auto-fill, minmax(26rem, 1fr)); gap: 1.4rem 2.4rem; }
.frg-an__block-title { grid-column: 1 / -1; color: var(--ink-muted); font-family: var(--font-sans); font-size: 1.2rem; line-height: 1.6rem; font-weight: 600; letter-spacing: 0.08em; text-transform: uppercase; }
.frg-an__field { display: grid; gap: 0.6rem; align-content: start; }
html body .frg-an__field label { color: var(--ink); font-size: 1.45rem; line-height: 1.4; font-weight: 500; }
.frg-an__field .frg-field__control { order: 0; min-height: 4.4rem; }
.frg-an__field .frg-field__input[aria-invalid="true"] { color: var(--danger); }
.frg-an__text, .frg-an__field select { min-height: 4.4rem; padding: 0.4rem 1rem; border: 1px solid var(--line-strong); border-radius: var(--radius-s); background: var(--paper); color: var(--ink); font: inherit; font-size: 1.6rem; }
.frg-an__hint { color: var(--ink-muted); font-size: 1.45rem; line-height: 1.6; }
.frg-an__totals { padding: 1.6rem 2rem; border-radius: var(--radius-s); background: var(--ledger, var(--surface-muted)); }
.frg-an__totals dl { display: grid; grid-template-columns: repeat(auto-fill, minmax(26rem, 1fr)); gap: 0.4rem 2.4rem; margin: 0.8rem 0 0; }
.frg-an__totals dl > div { display: flex; justify-content: space-between; gap: 1.2rem; padding: 0.4rem 0; border-bottom: 1px solid var(--ledger-rule, var(--line)); }
.frg-an__totals dt { font-size: 1.45rem; }
.frg-an__totals dd { margin: 0; font-weight: 600; font-variant-numeric: lining-nums tabular-nums; white-space: nowrap; }

/* The report. */
.frg-an__report { display: grid; gap: 2.4rem; }
.frg-an__report-head { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: end; gap: 1.2rem 2.4rem; }
html body .frg-an__report-head h2 { margin: 0; }
.frg-an__report-tools { display: flex; flex-wrap: wrap; align-items: center; gap: 0.8rem 1.2rem; }
html body .frg-an__report-tools label { color: var(--ink); font-size: 1.45rem; }
.frg-an__report-tools select { max-width: 100%; min-height: 4.4rem; padding: 0.4rem 1rem; border: 1px solid var(--line-strong); border-radius: var(--radius-s); background: var(--paper); color: var(--ink); font: inherit; font-size: 1.5rem; }
[data-role="output"] { display: grid; gap: 2.8rem; }
.frg-an__wait, .frg-an__muted { color: var(--ink-muted); font-size: 1.45rem; }
.frg-an__invalid { color: var(--danger); font-weight: 600; }
html body .frg-an h3 { margin: 0 0 1rem; font-size: 2rem; line-height: 1.3; }
.frg-an__note { color: var(--ink-muted); font-size: 1.45rem; line-height: 1.6; }

.frg-an__flags { padding: 2rem 2.4rem; border: 1px solid var(--line); border-left: 4px solid var(--accent); border-radius: var(--radius-s); background: var(--paper); }
html body .frg-an__flags ul { display: grid; gap: 0.8rem; margin: 0 0 1.2rem; padding-left: 2rem; }
html body .frg-an__flags li { margin: 0; padding: 0; border: 0; background: none; line-height: 1.55; }
.frg-an__flags a { white-space: nowrap; }

.frg-an__scroll { max-width: 100%; overflow-x: auto; }
.frg-an__scroll:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }
html body .frg-an .frg-an__table { display: table; width: 100%; margin: 0; }
.frg-an .frg-an__table thead th { padding-top: 0.6rem; padding-bottom: 0.6rem; border-bottom: 1px solid var(--ink); color: var(--ink-muted); font-size: 1.3rem; font-weight: 600; vertical-align: bottom; }
.frg-an .frg-an__table th[scope="row"] { font-weight: 400; }
.frg-an .frg-an__table td { width: auto; text-align: left; white-space: normal; vertical-align: middle; }
.frg-an .frg-an__table td.frg-an__value, .frg-an .frg-an__table thead th:nth-child(2), .frg-an .frg-an__table thead th:nth-child(3) { text-align: right; white-space: nowrap; }
.frg-an__pos { display: flex; align-items: center; gap: 1.2rem; font-size: 1.4rem; white-space: nowrap; }
.frg-an__bar { position: relative; flex: none; width: 10rem; height: 1rem; border-radius: 3px; background: var(--surface-muted, #eef5f0); }
.frg-an__band { position: absolute; top: 0; bottom: 0; border-radius: 3px; background: color-mix(in srgb, var(--accent) 40%, transparent); }
.frg-an__median { position: absolute; top: -0.3rem; bottom: -0.3rem; width: 2px; margin-left: -1px; background: var(--ink); }
.frg-an__you { position: absolute; top: 50%; width: 1.2rem; height: 1.2rem; margin: -0.6rem 0 0 -0.6rem; border: 2px solid var(--paper); border-radius: 50%; background: var(--ink); box-shadow: 0 0 0 1px var(--ink); }
.frg-an__median { opacity: 0.55; }
.frg-an__legend { display: flex; flex-wrap: wrap; gap: 0.6rem 1.6rem; color: var(--ink-muted); font-size: 1.35rem; }
.frg-an__legend span { display: inline-flex; align-items: center; gap: 0.6rem; }
.frg-an__legend i { display: inline-block; width: 1.6rem; height: 1rem; border-radius: 3px; background: color-mix(in srgb, var(--accent) 40%, transparent); }
.frg-an__legend i.is-median { width: 2px; height: 1.4rem; background: var(--ink); opacity: 0.55; }
.frg-an__legend i.is-you { width: 1.2rem; height: 1.2rem; border-radius: 50%; background: var(--ink); }

.frg-an__dupont { padding: 2rem 2.4rem; border: 1px solid var(--line); border-radius: var(--radius-s); background: var(--paper); }
.frg-an__dupont > p { margin-bottom: 1.6rem; }
.frg-an__dp-row { display: flex; flex-wrap: wrap; align-items: center; gap: 1.2rem 1.6rem; }
.frg-an__dp-part { display: grid; gap: 0.2rem; padding: 1.2rem 1.6rem; border-radius: var(--radius-s); background: var(--surface-muted, #eef5f0); }
.frg-an__dp-label { color: var(--ink-muted); font-size: 1.3rem; }
.frg-an__dp-part strong { font-size: 2.2rem; font-variant-numeric: lining-nums tabular-nums; }
.frg-an__dp-median { color: var(--ink-muted); font-size: 1.3rem; }
.frg-an__dp-op { color: var(--ink-muted); font-size: 2.2rem; }
.frg-an__source { max-width: 72ch; }

@media (max-width: 640px) {
	.frg-an__form { padding: 1.6rem; }
	.frg-an__flags, .frg-an__dupont { padding: 1.6rem; }
	.frg-an__block, .frg-an__totals dl { grid-template-columns: minmax(0, 1fr); }
	.frg-an__bar { width: 6rem; }
	.frg-an__flags a { white-space: normal; }
}

/* The printed report: built into body > .frg-an-print, shown only while printing. */
.frg-an-print { display: none; }
@media print {
	body.frg-printing > *:not(.frg-print-root) { display: none !important; }
	body.frg-printing .frg-an-print { display: block; color: #000; background: #fff; font: 10pt/1.4 Arial, Helvetica, sans-serif; }
	.frg-an-print h1 { margin: 0 0 4pt; font-size: 18pt; }
	.frg-an-print h2 { margin: 0 0 4pt; font-size: 12pt; }
	.frg-an-print h3 { margin: 12pt 0 4pt; font-size: 11pt; }
	.frg-an-print header { margin-bottom: 12pt; padding-bottom: 6pt; border-bottom: 1.5pt solid #000; }
	.frg-an-print__brand { font-size: 8pt; font-weight: 700; letter-spacing: 0.06em; text-transform: uppercase; }
	.frg-an-print__statements { display: grid; grid-template-columns: 1fr 1fr; gap: 18pt; margin-bottom: 12pt; break-inside: avoid; }
	.frg-an-print table { width: 100%; border-collapse: collapse; font-size: 9pt; }
	.frg-an-print th, .frg-an-print td { padding: 2pt 4pt; border-bottom: 0.5pt solid #bbb; text-align: left; font-weight: 400; }
	.frg-an-print td { text-align: right; }
	.frg-an-print tr.is-total th, .frg-an-print tr.is-total td { font-weight: 700; }
	.frg-an-print a { color: #000; text-decoration: none; }
	.frg-an-print .frg-an__section, .frg-an-print .frg-an__flags, .frg-an-print .frg-an__dupont { break-inside: avoid; }
	.frg-an-print .frg-an__scroll { overflow: visible; }
	.frg-an-print .frg-an__flags, .frg-an-print .frg-an__dupont { padding: 6pt 0; border: 0; }
	.frg-an-print .frg-an__dp-row { display: flex; gap: 8pt; }
	.frg-an-print .frg-an__dp-part { padding: 4pt 6pt; }
	.frg-an-print .frg-an__dp-part strong { font-size: 12pt; }
	.frg-an-print .frg-an__bar { width: 60pt; print-color-adjust: exact; -webkit-print-color-adjust: exact; }
}

/* Grids and fieldsets keep to the column on phones (a fieldset is otherwise as wide as its widest content). */
.frg-an { grid-template-columns: minmax(0, 1fr); }
.frg-an__form, .frg-an__group, .frg-an__block, .frg-an__meta, .frg-an__field { min-width: 0; }
.frg-an__text, .frg-an__field select { width: 100%; box-sizing: border-box; }
.frg-an__report, [data-role="output"] { grid-template-columns: minmax(0, 1fr); min-width: 0; }
.frg-an__report-tools { min-width: 0; }
.frg-an__report-tools select { flex: 1 1 18rem; width: auto; min-width: 0; }
.frg-an__flags, .frg-an__dupont, .frg-an__section { min-width: 0; }
