/* Folio: brand colours (set again by the layout from the site's own choices) */
html {
    --fo-primary: #7c2d12;
    --fo-accent: #a16207;
    --fo-primary-ink: #7c2d12;
    --fo-accent-ink: #a16207;
    --fo-on-primary: #ffffff;
    --fo-on-accent: #ffffff;
    --fo-serif: "EB Garamond", "Iowan Old Style", "Palatino Linotype", Palatino, Georgia, serif;
    --fo-radius: 2px;
    --fo-radius-soft: 10px;
    --fo-quick: 180ms;
    --fo-ease: cubic-bezier(0.2, 0.7, 0.2, 1);
    --fo-gutter: 1.3rem;
    --fo-step-1: clamp(1.1rem, 1.05rem + 0.25vw, 1.2rem);
    --fo-step-2: clamp(1.3rem, 1.18rem + 0.6vw, 1.55rem);
    --fo-step-3: clamp(1.6rem, 1.3rem + 1.5vw, 2.2rem);
    --fo-step-4: clamp(1.95rem, 1.45rem + 2.5vw, 2.9rem);
    --fo-step-5: clamp(2.25rem, 1.4rem + 4.3vw, 4rem);
    font-size: 118.75%;
    -webkit-text-size-adjust: 100%;
    scroll-padding-top: 5rem;
    background: var(--fo-page);
}

/* the light look */
:root, [data-mode="light"] {
    color-scheme: light;
    --fo-page: #fdfcf9;
    --fo-b-ink: #1f1b16;
    --fo-b-faint: #5c5347;
    --fo-b-link: var(--fo-primary-ink);
    --fo-card: #ffffff;
    --fo-gray: #f3f1eb;
    --fo-soft: #f8f2e6;
    --fo-plate: #ffffff;
    --fo-bare-bg: transparent;
    --fo-bare-pad: 0;
    --fo-bare-blend: multiply;
    --fo-field: rgba(31, 27, 22, 0.035);
    --fo-mast-ink: var(--fo-day-mast-ink, var(--fo-b-ink));
    --fo-end-ink: var(--fo-day-end-ink, var(--fo-b-ink));
    --fo-ok-ink: #1d4d2b;
    --fo-ok-bg: #f1f8f2;
    --fo-bad-ink: #8a1c1c;
    --fo-bad-bg: #fdf3f2;
    --fo-shadow-low: 0 1px 2px rgba(31, 27, 22, 0.05), 0 6px 16px -10px rgba(31, 27, 22, 0.22);
    --fo-shadow: 0 1px 2px rgba(31, 27, 22, 0.06), 0 12px 28px -14px rgba(31, 27, 22, 0.28);
    --fo-shadow-high: 0 2px 4px rgba(31, 27, 22, 0.08), 0 22px 40px -18px rgba(31, 27, 22, 0.38);
}

/* the dark look */
[data-mode="dark"] {
    color-scheme: dark;
    --fo-page: #15120e;
    --fo-b-ink: #ece6da;
    --fo-b-faint: #b4aa97;
    --fo-b-link: #ece6da;
    --fo-card: #221d17;
    --fo-gray: #1d1a15;
    --fo-soft: #282117;
    --fo-plate: #efe9dd;
    --fo-bare-bg: #efe9dd;
    --fo-bare-pad: 1rem;
    --fo-bare-blend: normal;
    --fo-field: rgba(236, 230, 218, 0.06);
    --fo-mast-ink: var(--fo-b-ink);
    --fo-end-ink: var(--fo-b-ink);
    --fo-ok-ink: #a5dab3;
    --fo-ok-bg: #18261b;
    --fo-bad-ink: #f3b0a9;
    --fo-bad-bg: #2d1917;
    --fo-shadow-low: 0 1px 2px rgba(0, 0, 0, 0.4), 0 6px 16px -10px rgba(0, 0, 0, 0.7);
    --fo-shadow: 0 1px 2px rgba(0, 0, 0, 0.45), 0 14px 30px -14px rgba(0, 0, 0, 0.8);
    --fo-shadow-high: 0 2px 4px rgba(0, 0, 0, 0.5), 0 24px 44px -18px rgba(0, 0, 0, 0.9);
}
@media (prefers-color-scheme: dark) {
    [data-mode="auto"] {
        color-scheme: dark;
        --fo-page: #15120e;
        --fo-b-ink: #ece6da;
        --fo-b-faint: #b4aa97;
        --fo-b-link: #ece6da;
        --fo-card: #221d17;
        --fo-gray: #1d1a15;
        --fo-soft: #282117;
        --fo-plate: #efe9dd;
        --fo-bare-bg: #efe9dd;
        --fo-bare-pad: 1rem;
        --fo-bare-blend: normal;
        --fo-field: rgba(236, 230, 218, 0.06);
        --fo-mast-ink: var(--fo-b-ink);
        --fo-end-ink: var(--fo-b-ink);
        --fo-ok-ink: #a5dab3;
        --fo-ok-bg: #18261b;
        --fo-bad-ink: #f3b0a9;
        --fo-bad-bg: #2d1917;
        --fo-shadow-low: 0 1px 2px rgba(0, 0, 0, 0.4), 0 6px 16px -10px rgba(0, 0, 0, 0.7);
        --fo-shadow: 0 1px 2px rgba(0, 0, 0, 0.45), 0 14px 30px -14px rgba(0, 0, 0, 0.8);
        --fo-shadow-high: 0 2px 4px rgba(0, 0, 0, 0.5), 0 24px 44px -18px rgba(0, 0, 0, 0.9);
    }
}

/* working colours: every section starts again from the look's own ink, then its tone may change them */
:root, .fo-leaf {
    --fo-ink: var(--fo-b-ink);
    --fo-faint: var(--fo-b-faint);
    --fo-link: var(--fo-b-link);
    --fo-ground: var(--fo-page);
}
:root, .fo-leaf, .fo-mast, .fo-end {
    --fo-line: color-mix(in srgb, var(--fo-ink) 20%, transparent);
    --fo-line-strong: color-mix(in srgb, var(--fo-ink) 46%, transparent);
    --fo-rule: color-mix(in srgb, var(--fo-accent) 68%, var(--fo-ink));
    --fo-edge: color-mix(in srgb, var(--fo-primary) 58%, var(--fo-ink));
    --fo-focus: color-mix(in srgb, var(--fo-primary) 45%, var(--fo-ink));
}
*, ::before, ::after { box-sizing: border-box; }

.fo-book {
    margin: 0;
    background: var(--fo-page);
    color: var(--fo-b-ink);
    font-family: var(--fo-serif);
    font-size: 1rem;
    line-height: 1.6;
    font-variant-numeric: oldstyle-nums;
    font-kerning: normal;
    text-rendering: optimizeLegibility;
    overflow-wrap: break-word;
    -webkit-font-smoothing: antialiased;
}
.fo-book img { max-width: 100%; height: auto; }
.fo-book a { color: var(--fo-link); text-decoration-color: var(--fo-rule); text-decoration-thickness: 0.05em; text-underline-offset: 0.2em; transition: color var(--fo-quick) var(--fo-ease), text-decoration-color var(--fo-quick) var(--fo-ease), background-color var(--fo-quick) var(--fo-ease), border-color var(--fo-quick) var(--fo-ease); }
.fo-book a:hover { text-decoration-color: currentColor; text-decoration-thickness: 0.09em; }
.fo-book :focus-visible { outline: 2px solid var(--fo-focus); outline-offset: 3px; border-radius: var(--fo-radius); }
.fo-book ::selection { background: color-mix(in srgb, var(--fo-accent) 40%, transparent); }
.fo-book h1, .fo-book h2, .fo-book h3 { text-wrap: balance; }

.fo-aside_only { position: absolute; left: -200vw; width: 1px; height: 1px; overflow: hidden; }
.fo-skiplink { position: absolute; left: 50%; transform: translate(-50%, -300%); background: var(--fo-card); color: var(--fo-b-ink) !important; padding: 0.4rem 1rem; border: 1px solid var(--fo-b-ink); border-radius: var(--fo-radius); z-index: 60; }
.fo-skiplink:focus { transform: translate(-50%, 0.5rem); }
.fo-smallcaps { font-variant-caps: all-small-caps; letter-spacing: 0.1em; font-weight: 500; font-size: 1rem; }

/* notice */
.fo-notice { margin: 0; padding: 0.4rem var(--fo-gutter); text-align: center; font-style: italic; font-size: 0.9rem; line-height: 1.4; background: var(--fo-primary); color: var(--fo-on-primary); border-bottom: 1px solid var(--fo-edge); }
.fo-notice a { color: inherit; text-decoration-color: currentColor; }

/* masthead */
.fo-mast { --fo-ink: var(--fo-site-mast-ink, var(--fo-mast-ink)); --fo-focus: currentColor; background: var(--fo-site-mast-bg, var(--fo-page)); color: var(--fo-ink); text-align: center; padding: 1.5rem var(--fo-gutter) 0; position: relative; z-index: 30; transition: box-shadow var(--fo-quick) var(--fo-ease); }
.fo-scripted .fo-mast { position: sticky; top: calc(-1 * var(--fo-tuck, 0px)); }
@supports ((backdrop-filter: blur(1px)) or (-webkit-backdrop-filter: blur(1px))) {
    .fo-mast { background: var(--fo-site-mast-bg, color-mix(in srgb, var(--fo-page) 86%, transparent)); -webkit-backdrop-filter: blur(14px) saturate(1.3); backdrop-filter: blur(14px) saturate(1.3); }
}
.fo-mast.is-stuck { box-shadow: var(--fo-shadow-low); }
.fo-mast::after { content: ""; display: block; max-width: 62rem; height: 4px; margin: 0.85rem auto 0; border-top: 1px solid currentColor; border-bottom: 1px solid currentColor; opacity: 0.5; }
.fo-mast a, .fo-mast summary, .fo-mast button { color: inherit; }
.fo-mast_reach { margin: 0 0 1rem; font-variant-caps: all-small-caps; letter-spacing: 0.12em; font-size: 0.84rem; line-height: 1.4; display: flex; flex-wrap: wrap; justify-content: center; gap: 0.2rem 1.6rem; opacity: 0.82; }
.fo-mast_reach a { text-decoration: none; }
.fo-mast_reach a:hover { text-decoration: underline; }
.fo-mast_name { display: inline-block; font-size: clamp(1.75rem, 1.3rem + 2.2vw, 2.6rem); font-weight: 500; line-height: 1.08; letter-spacing: -0.012em; text-decoration: none; }
.fo-mast_name img { display: block; max-height: 62px; width: auto; }
.fo-mast_toggle { display: none; align-items: center; margin: 0.8rem auto 0; background: none; border: 1px solid color-mix(in srgb, currentColor 34%, transparent); border-radius: var(--fo-radius); padding: 0.28rem 0.8rem 0.36rem; font: inherit; font-variant-caps: all-small-caps; letter-spacing: 0.14em; line-height: 1.3; cursor: pointer; transition: background-color var(--fo-quick) var(--fo-ease), border-color var(--fo-quick) var(--fo-ease); }
.fo-mast_toggle:hover, .fo-mast_toggle[aria-expanded="true"] { background: color-mix(in srgb, currentColor 10%, transparent); border-color: currentColor; }
.fo-mast_toggle::after { content: ""; width: 0.42em; height: 0.42em; margin: -0.2em 0 0 0.7em; border-right: 1px solid currentColor; border-bottom: 1px solid currentColor; transform: rotate(45deg); transition: transform var(--fo-quick) var(--fo-ease); }
.fo-mast_toggle[aria-expanded="true"]::after { transform: translateY(0.22em) rotate(225deg); }
.fo-contents { margin-top: 0.75rem; position: relative; z-index: 2; }
.fo-contents_list { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; justify-content: center; gap: 0.1rem 2rem; font-variant-caps: all-small-caps; letter-spacing: 0.11em; }
.fo-contents_entry { position: relative; }
.fo-contents_entry > a, .fo-contents_more > summary { display: block; padding: 0.25rem 0; text-decoration: none; cursor: pointer; background: linear-gradient(currentColor, currentColor) 50% calc(100% - 0.2rem) / 0 1px no-repeat; transition: background-size var(--fo-quick) var(--fo-ease), opacity var(--fo-quick) var(--fo-ease); }
.fo-contents_entry > a:hover, .fo-contents_more > summary:hover, .fo-contents_more[open] > summary { background-size: 100% 1px; }
.fo-contents_entry > a:active, .fo-contents_more > summary:active { opacity: 0.7; }
.fo-contents_more > summary { list-style: none; }
.fo-contents_more > summary::-webkit-details-marker { display: none; }
.fo-contents_more > summary::after { content: ""; display: inline-block; width: 0.36em; height: 0.36em; margin: 0 0 0.22em 0.6em; border-right: 1px solid currentColor; border-bottom: 1px solid currentColor; transform: rotate(45deg); transition: transform var(--fo-quick) var(--fo-ease); }
.fo-contents_more[open] > summary::after { transform: translateY(0.2em) rotate(225deg); }
.fo-contents_sub { list-style: none; margin: 0; padding: 0.45rem; position: absolute; left: 50%; top: calc(100% + 0.35rem); transform: translateX(-50%); min-width: 13.5rem; background: var(--fo-card); color: var(--fo-b-ink); border: 1px solid color-mix(in srgb, var(--fo-b-ink) 16%, transparent); border-radius: calc(var(--fo-radius) * 2); box-shadow: var(--fo-shadow); font-variant-caps: normal; letter-spacing: 0; text-align: center; }
.fo-contents_sub a { display: block; padding: 0.32rem 1rem; color: var(--fo-b-ink); text-decoration: none; font-style: italic; border-radius: var(--fo-radius); }
.fo-contents_sub a:hover { background: color-mix(in srgb, var(--fo-b-ink) 8%, transparent); }

@media (max-width: 719px) {
    .fo-scripted .fo-mast { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; column-gap: 1rem; padding-top: 0.75rem; text-align: left; }
    .fo-scripted .fo-mast::after { flex: 1 0 100%; margin-top: 0.75rem; }
    .fo-scripted .fo-mast_reach { flex: 1 0 100%; justify-content: flex-start; margin-bottom: 0.55rem; }
    .fo-scripted .fo-mast_name { flex: 1 1 0; min-width: 0; font-size: 1.5rem; }
    .fo-scripted .fo-mast_name img { max-height: 46px; }
    .fo-scripted .fo-mast_toggle { display: inline-flex; flex: none; margin: 0; }
    .fo-scripted .fo-contents { display: none; flex: 1 0 100%; margin-top: 0.75rem; max-height: calc(100vh - 7rem); overflow-y: auto; overscroll-behavior: contain; }
    .fo-scripted .fo-mast_toggle[aria-expanded="true"] + .fo-contents { display: block; }
    .fo-contents_list { flex-direction: column; gap: 0; }
    .fo-contents_entry { border-top: 1px solid color-mix(in srgb, currentColor 20%, transparent); }
    .fo-contents_entry > a, .fo-contents_more > summary { padding: 0.6rem 0; background: none; }
    .fo-contents_sub { position: static; transform: none; border: 0; border-radius: 0; box-shadow: none; background: none; color: inherit; padding: 0 0 0.6rem; text-align: inherit; }
    .fo-contents_sub a { color: inherit; padding: 0.3rem 0 0.3rem 1rem; }
    .fo-contents_sub a:hover { background: none; text-decoration: underline; }
}

/* leaves (sections) */
.fo-leaf { position: relative; color: var(--fo-ink); background-size: cover; background-position: center; }
.fo-paper_gray { background-color: var(--fo-gray); --fo-ground: var(--fo-gray); }
.fo-paper_soft { background-color: var(--fo-soft); --fo-ground: var(--fo-soft); }
.fo-paper_primary { background-color: var(--fo-primary); --fo-ground: var(--fo-primary); --fo-ink: var(--fo-on-primary); --fo-faint: color-mix(in srgb, var(--fo-on-primary) 84%, var(--fo-primary)); --fo-link: var(--fo-on-primary); --fo-rule: var(--fo-on-primary); --fo-focus: var(--fo-on-primary); box-shadow: inset 0 1px 0 var(--fo-edge-out), inset 0 -1px 0 var(--fo-edge-out); --fo-edge-out: color-mix(in srgb, var(--fo-primary) 80%, var(--fo-b-ink)); }
.fo-paper_accent { background-color: var(--fo-accent); --fo-ground: var(--fo-accent); --fo-ink: var(--fo-on-accent); --fo-faint: color-mix(in srgb, var(--fo-on-accent) 84%, var(--fo-accent)); --fo-link: var(--fo-on-accent); --fo-rule: var(--fo-on-accent); --fo-focus: var(--fo-on-accent); box-shadow: inset 0 1px 0 var(--fo-edge-out), inset 0 -1px 0 var(--fo-edge-out); --fo-edge-out: color-mix(in srgb, var(--fo-accent) 80%, var(--fo-b-ink)); }
.fo-leaf_day { --fo-ink: #1f1b16; --fo-faint: #5c5347; --fo-link: var(--fo-primary-ink); --fo-rule: color-mix(in srgb, var(--fo-accent) 68%, #1f1b16); --fo-bare-bg: transparent; --fo-bare-pad: 0; --fo-bare-blend: multiply; --fo-focus: #1f1b16; --fo-field: rgba(31, 27, 22, 0.05); box-shadow: none; }
.fo-leaf_night, .fo-leaf_backed { --fo-ink: #fbf9f4; --fo-faint: #ebe6db; --fo-link: #fbf9f4; --fo-rule: #fbf9f4; --fo-focus: #fbf9f4; --fo-field: rgba(251, 249, 244, 0.1); --fo-bare-bg: #efe9dd; --fo-bare-pad: 1rem; --fo-bare-blend: normal; box-shadow: none; }
.fo-leaf_backed { background-color: #2a251f; --fo-ground: #2a251f; }
.fo-leaf_veil { position: absolute; inset: 0; background: #000000; pointer-events: none; }
.fo-air_small { padding: clamp(2rem, 4.5vw, 3.2rem) 0; }
.fo-air_medium { padding: clamp(3.2rem, 7.5vw, 5.6rem) 0; }
.fo-air_large { padding: clamp(4.2rem, 10vw, 8rem) 0; }
.fo-measure { position: relative; width: min(100% - 2 * var(--fo-gutter), 35rem); margin: 0 auto; }
.fo-measure_wide, .fo-of_hero > .fo-measure { width: min(100% - 2 * var(--fo-gutter), 56rem); }

/* link buttons */
.fo-go {
    display: inline-block; padding: 0.52rem 1.5rem 0.62rem; border: 1px solid var(--fo-line-strong); background: transparent;
    color: var(--fo-ink) !important; font: inherit; font-variant-caps: all-small-caps; letter-spacing: 0.13em; line-height: 1.3;
    text-decoration: none; cursor: pointer; border-radius: var(--fo-radius);
    transition: background-color var(--fo-quick) var(--fo-ease), color var(--fo-quick) var(--fo-ease), border-color var(--fo-quick) var(--fo-ease), box-shadow var(--fo-quick) var(--fo-ease), transform var(--fo-quick) var(--fo-ease);
}
.fo-go:hover { background: var(--fo-ink); border-color: var(--fo-ink); color: var(--fo-ground) !important; }
.fo-go:active { transform: translateY(1px); }
.fo-go_full { background: var(--fo-primary); color: var(--fo-on-primary) !important; border-color: var(--fo-edge); box-shadow: var(--fo-shadow-low); }
.fo-go_full:hover { background: var(--fo-ink); border-color: var(--fo-ink); color: var(--fo-ground) !important; box-shadow: var(--fo-shadow); }
.fo-paper_primary:not(.fo-leaf_day):not(.fo-leaf_night):not(.fo-leaf_backed) .fo-go_full { background: var(--fo-on-primary); color: var(--fo-primary) !important; border-color: var(--fo-on-primary); }
.fo-paper_accent:not(.fo-leaf_day):not(.fo-leaf_night):not(.fo-leaf_backed) .fo-go_full { background: var(--fo-on-accent); color: var(--fo-accent) !important; border-color: var(--fo-on-accent); }
.fo-paper_primary:not(.fo-leaf_day):not(.fo-leaf_night):not(.fo-leaf_backed) .fo-go_full:hover, .fo-paper_accent:not(.fo-leaf_day):not(.fo-leaf_night):not(.fo-leaf_backed) .fo-go_full:hover { background: transparent; color: var(--fo-ink) !important; }

/* headings */
.fo-head { text-align: center; margin: 0 auto clamp(2rem, 4.5vw, 3rem); max-width: 35rem; }
.fo-head::after { content: ""; display: block; width: 2.8rem; height: 1px; margin: 1.15rem auto 0; background: var(--fo-rule); }
.fo-head_title { margin: 0; font-size: var(--fo-step-3); font-weight: 500; line-height: 1.14; letter-spacing: -0.012em; }
.fo-head_sub { margin: 0.6rem 0 0; font-size: var(--fo-step-1); font-style: italic; line-height: 1.45; color: var(--fo-faint); text-wrap: balance; }
.fo-chapter { margin: 0 0 1.6rem; text-align: center; font-size: var(--fo-step-4); font-weight: 500; line-height: 1.08; letter-spacing: -0.016em; }

/* frontispiece (hero) */
.fo-frontis { text-align: center; }
.fo-frontis::before { content: ""; display: block; width: 3.4rem; height: 5px; margin: 0 auto clamp(1.4rem, 3vw, 2rem); border-top: 1px solid var(--fo-rule); border-bottom: 1px solid var(--fo-rule); }
.fo-frontis_page { display: none; }
.fo-frontis_page.fo-shown { display: block; }
.fo-frontis_title { margin: 0 auto; max-width: 20ch; font-size: var(--fo-step-5); font-weight: 500; line-height: 1.04; letter-spacing: -0.02em; text-wrap: balance; }
.fo-frontis_sub { margin: 1.3rem auto 0; max-width: 31rem; font-size: var(--fo-step-1); font-style: italic; line-height: 1.5; color: var(--fo-faint); text-wrap: balance; }
.fo-frontis_way { margin: 1.9rem 0 0; }
.fo-frontis_plate { margin: clamp(2.2rem, 5vw, 3.4rem) auto 0; width: fit-content; max-width: min(100%, 44rem); padding: 0.55rem; border: 1px solid var(--fo-line); border-radius: var(--fo-radius); background: var(--fo-plate); box-shadow: var(--fo-shadow); line-height: 0; }
.fo-frontis_plate img { display: block; width: auto; max-width: 100%; height: auto; max-height: min(26rem, 62vh); }
.fo-frontis_plate_bare { padding: var(--fo-bare-pad); border: 0; border-radius: var(--fo-radius-soft); background: var(--fo-bare-bg); box-shadow: none; }
.fo-frontis_plate_bare img { max-height: 20rem; mix-blend-mode: var(--fo-bare-blend); }
.fo-frontis_turn { margin: 1.6rem 0 0; display: flex; justify-content: center; gap: 0.3rem; }
.fo-frontis_turn button { min-width: 2.4rem; min-height: 2.4rem; padding: 0 0.4rem; background: none; border: 0; border-bottom: 1px solid transparent; border-radius: 0; color: var(--fo-faint); font: inherit; font-style: italic; cursor: pointer; transition: color var(--fo-quick) var(--fo-ease), border-color var(--fo-quick) var(--fo-ease); }
.fo-frontis_turn button:hover { color: var(--fo-ink); border-bottom-color: var(--fo-line-strong); }
.fo-frontis_turn button[aria-pressed="true"] { color: var(--fo-ink); border-bottom-color: var(--fo-rule); }

/* tally (stats) */
.fo-tally { display: flex; flex-wrap: wrap; justify-content: center; border-top: 1px solid var(--fo-line); border-bottom: 1px solid var(--fo-line); overflow: hidden; }
.fo-tally_item { flex: 1 1 9.5rem; margin: 0 0 0 -1px; padding: 1.5rem 0.8rem 1.6rem; text-align: center; border-left: 1px solid var(--fo-line); }
.fo-tally_sum { display: block; font-size: var(--fo-step-3); line-height: 1.1; text-wrap: balance; letter-spacing: -0.015em; font-variant-numeric: lining-nums; }
.fo-tally_of { display: block; margin-top: 0.45rem; font-variant-caps: all-small-caps; letter-spacing: 0.12em; line-height: 1.3; color: var(--fo-faint); }

/* notes (features) */
.fo-notes { margin: 0; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); column-gap: clamp(1.8rem, 5vw, 3.6rem); }
.fo-notes_entry { padding: 1.25rem 0 1.5rem; border-top: 1px solid var(--fo-line); }
.fo-notes_entry:last-child:nth-child(odd) { grid-column: 1 / -1; }
.fo-notes dt { font-size: var(--fo-step-1); font-weight: 600; line-height: 1.25; }
.fo-notes_sign { display: block; margin: 0 0 0.45rem; font-size: 1.25rem; line-height: 1; }
.fo-notes dd { margin: 0.35rem 0 0; max-width: 34rem; color: var(--fo-faint); }
@media (min-width: 761px) {
    .fo-notes:has(> :last-child:nth-child(3n)) { grid-template-columns: repeat(3, minmax(0, 1fr)); }
    .fo-notes:has(> :last-child:nth-child(3n)) > .fo-notes_entry { grid-column: auto; }
}

/* plate (split content) */
.fo-plate { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 0.8fr); gap: clamp(1.8rem, 6vw, 4.4rem); align-items: center; }
.fo-plate_verso { grid-template-columns: minmax(0, 0.8fr) minmax(0, 1fr); }
.fo-plate_verso .fo-plate_picture { order: -1; }
.fo-plate_alone { grid-template-columns: minmax(0, 35rem); justify-content: center; }
.fo-plate_title { margin: 0 0 1rem; font-size: var(--fo-step-3); font-weight: 500; line-height: 1.14; letter-spacing: -0.012em; }
.fo-plate_way { margin: 1.7rem 0 0; }
.fo-plate_picture { margin: 0; padding: 0.55rem; border: 1px solid var(--fo-line); border-radius: var(--fo-radius); background: var(--fo-plate); box-shadow: var(--fo-shadow); line-height: 0; }
.fo-plate_picture img { display: block; width: 100%; }
.fo-plate_picture_bare { padding: var(--fo-bare-pad); border: 0; border-radius: var(--fo-radius-soft); background: var(--fo-bare-bg); box-shadow: none; }
.fo-plate_picture_bare img { mix-blend-mode: var(--fo-bare-blend); }

/* order (how it works) */
.fo-order { list-style: none; margin: 0 auto; padding: 0; max-width: 35rem; counter-reset: fo-stage; }
.fo-order_stage { counter-increment: fo-stage; position: relative; padding: 1.15rem 0 1.25rem 3.6rem; border-top: 1px solid var(--fo-line); }
.fo-order_stage:last-child { border-bottom: 1px solid var(--fo-line); }
.fo-order_stage::before { content: counter(fo-stage, lower-roman) "."; position: absolute; left: 0; top: 1rem; width: 2.6rem; text-align: right; font-style: italic; font-size: var(--fo-step-2); line-height: 1.2; color: var(--fo-rule); }
.fo-order_name { display: block; font-weight: 600; font-size: var(--fo-step-1); line-height: 1.3; }
.fo-order_text { display: block; margin-top: 0.15rem; color: var(--fo-faint); }

/* readers (audience) */
.fo-readers { --fo-cols: 3; --fo-gap: clamp(1.4rem, 4vw, 3rem); list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; justify-content: center; gap: 2.4rem var(--fo-gap); text-align: center; }
.fo-readers_2 { --fo-cols: 2; }
.fo-readers_4 { --fo-cols: 4; }
.fo-readers_one { flex: 0 0 calc((100% - (var(--fo-cols) - 1) * var(--fo-gap)) / var(--fo-cols)); min-width: 0; }
.fo-readers_sign { width: 2.9rem; height: 2.9rem; padding: 0.78rem; border: 1px solid var(--fo-line); border-radius: 50%; stroke-width: 1.3; color: var(--fo-ink); }
.fo-readers_name { margin: 0.75rem 0 0.3rem; font-size: var(--fo-step-1); font-weight: 400; font-style: italic; line-height: 1.25; }
.fo-readers_text { margin: 0; color: var(--fo-faint); font-size: 0.95rem; line-height: 1.5; }
.fo-readers_way { margin: 0.6rem 0 0; font-variant-caps: all-small-caps; letter-spacing: 0.1em; }

/* answers (faq) */
.fo-answers { margin: 0; border-bottom: 1px solid var(--fo-line); }
.fo-answers_q { padding-top: 1.25rem; border-top: 1px solid var(--fo-line); font-size: var(--fo-step-1); font-style: italic; line-height: 1.35; }
.fo-answers_a { margin: 0.4rem 0 1.35rem; color: var(--fo-faint); }

/* invitation (cta) */
.fo-invite { text-align: center; padding: clamp(2rem, 5vw, 3rem) 0; border-top: 1px solid var(--fo-line); border-bottom: 1px solid var(--fo-line); }
.fo-invite::before { content: "\2766"; display: block; margin-bottom: 0.7rem; font-size: 1.3rem; line-height: 1; color: var(--fo-rule); }
.fo-invite_title { margin: 0; font-size: var(--fo-step-4); font-weight: 500; line-height: 1.08; letter-spacing: -0.016em; text-wrap: balance; }
.fo-invite_text { margin: 0.8rem auto 0; font-size: var(--fo-step-1); font-style: italic; line-height: 1.5; color: var(--fo-faint); text-wrap: balance; }
.fo-invite_way { margin: 1.7rem 0 0; }

/* praise (testimonials) */
.fo-praise { --fo-cols: 3; --fo-gap: clamp(1.8rem, 5vw, 3.6rem); display: flex; flex-wrap: wrap; justify-content: center; gap: 2.6rem var(--fo-gap); }
.fo-praise:has(> :last-child:nth-child(2)), .fo-praise:has(> :last-child:nth-child(4)) { --fo-cols: 2; }
.fo-praise:has(> :only-child) { --fo-cols: 1; }
.fo-praise_item { flex: 0 0 calc((100% - (var(--fo-cols) - 1) * var(--fo-gap)) / var(--fo-cols)); min-width: 0; max-width: 35rem; text-align: center; }
.fo-praise_item::before { content: "\201C"; display: block; height: 1.9rem; font-size: 3.2rem; line-height: 1; color: var(--fo-rule); }
.fo-praise_words { margin: 0; font-size: var(--fo-step-1); font-style: italic; line-height: 1.5; text-wrap: pretty; }
.fo-praise_by { margin: 1rem 0 0; font-variant-caps: all-small-caps; letter-spacing: 0.1em; line-height: 1.35; }
.fo-praise_by::before { content: "\2014\00a0"; }
.fo-praise_by span { display: block; margin-top: 0.1rem; font-variant-caps: normal; letter-spacing: 0; font-size: 0.9rem; color: var(--fo-faint); }

/* friends (partners) */
.fo-friends_label { margin: 0 0 0.9rem; text-align: center; color: var(--fo-faint); }
.fo-friends { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; justify-content: center; gap: 0.3rem 0; font-size: var(--fo-step-1); text-align: center; }
.fo-friends li:not(:last-child)::after { content: "\00b7"; margin: 0 0.8em; color: var(--fo-rule); }

/* shelf */
.fo-shelf { --fo-cols: 4; --fo-gap: clamp(1.2rem, 4vw, 2.8rem); list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; justify-content: center; gap: 2.8rem var(--fo-gap); text-align: center; }
.fo-shelf:has(> :last-child:nth-child(3)), .fo-shelf:has(> :last-child:nth-child(5)), .fo-shelf:has(> :last-child:nth-child(6)), .fo-shelf:has(> :last-child:nth-child(9)) { --fo-cols: 3; }
.fo-volume { flex: 0 0 calc((100% - (var(--fo-cols) - 1) * var(--fo-gap)) / var(--fo-cols)); display: flex; flex-direction: column; align-items: center; min-width: 0; }
.fo-volume_link { display: block; width: 100%; color: var(--fo-ink) !important; text-decoration: none; }
.fo-volume_cover { display: block; width: 100%; max-width: 10.5rem; margin: 0 auto 1.05rem; aspect-ratio: 2 / 3; object-fit: cover; border-radius: var(--fo-radius); outline: 1px solid color-mix(in srgb, var(--fo-ink) 14%, transparent); outline-offset: -1px; box-shadow: var(--fo-shadow); transition: transform 220ms var(--fo-ease), box-shadow 220ms var(--fo-ease); }
.fo-volume_link:hover .fo-volume_cover { transform: translateY(-4px); box-shadow: var(--fo-shadow-high); }
.fo-volume_link:active .fo-volume_cover { transform: translateY(-1px); }
.fo-volume_title { display: block; font-size: var(--fo-step-1); line-height: 1.22; text-wrap: balance; }
.fo-volume_link:hover .fo-volume_title { text-decoration: underline; text-decoration-color: var(--fo-rule); text-decoration-thickness: 1px; text-underline-offset: 0.2em; }
.fo-volume_author { margin-top: 0.25rem; font-style: italic; font-size: 0.94rem; line-height: 1.35; color: var(--fo-faint); }
.fo-volume_price { margin-top: 0.25rem; font-variant-caps: all-small-caps; letter-spacing: 0.1em; font-size: 0.94rem; line-height: 1.35; color: var(--fo-faint); font-variant-numeric: lining-nums; }
.fo-shelf_onward { margin: clamp(2.4rem, 5vw, 3.2rem) 0 0; text-align: center; }

/* prose */
.fo-prose { hyphens: auto; text-wrap: pretty; }
.fo-prose > :first-child { margin-top: 0; }
.fo-prose > :last-child { margin-bottom: 0; }
.fo-prose p { margin: 0 0 1.05rem; }
.fo-prose h1 { margin: 0 0 1.6rem; text-align: center; font-size: var(--fo-step-4); font-weight: 500; line-height: 1.08; letter-spacing: -0.016em; hyphens: manual; }
.fo-prose h2 { margin: 2.4rem 0 0.7rem; font-size: var(--fo-step-2); font-weight: 500; line-height: 1.2; letter-spacing: -0.008em; hyphens: manual; }
.fo-prose h3 { margin: 1.9rem 0 0.45rem; font-size: var(--fo-step-1); font-weight: 400; font-style: italic; line-height: 1.3; hyphens: manual; }
.fo-prose h4 { margin: 1.6rem 0 0.3rem; font-size: 1rem; font-weight: 500; font-variant-caps: all-small-caps; letter-spacing: 0.1em; }
.fo-prose ul, .fo-prose ol { margin: 0 0 1.05rem; padding-left: 1.4rem; }
.fo-prose li { margin-bottom: 0.35rem; }
.fo-prose li::marker { color: var(--fo-rule); }
.fo-prose blockquote { margin: 1.6rem 0; padding: 0.1rem 0 0.1rem 1.3rem; border-left: 2px solid var(--fo-rule); font-size: var(--fo-step-1); font-style: italic; line-height: 1.5; }
.fo-prose hr { border: 0; margin: 2.2rem auto; width: 2.8rem; border-top: 1px solid var(--fo-rule); }
.fo-prose img { display: block; margin: 1.8rem auto; padding: 0.5rem; border: 1px solid var(--fo-line); border-radius: var(--fo-radius); background: var(--fo-plate); box-shadow: var(--fo-shadow-low); }
.fo-prose table { display: block; overflow-x: auto; width: 100%; border-collapse: collapse; margin: 1.5rem 0; font-size: 0.95rem; }
.fo-prose th, .fo-prose td { padding: 0.45rem 0.9rem 0.45rem 0; text-align: left; vertical-align: top; border-bottom: 1px solid var(--fo-line); }
.fo-prose th { font-weight: 500; font-variant-caps: all-small-caps; letter-spacing: 0.08em; }

/* form fields */
.fo-letter input, .fo-letter textarea, .fo-lookup input, .fo-lookup select {
    display: block; width: 100%; margin-top: 0.3rem; padding: 0.5rem 0.7rem 0.55rem; border: 0; border-bottom: 1px solid var(--fo-line-strong); border-radius: var(--fo-radius) var(--fo-radius) 0 0;
    background-color: var(--fo-field); color: var(--fo-ink); font: inherit; line-height: 1.4;
    transition: background-color var(--fo-quick) var(--fo-ease), border-color var(--fo-quick) var(--fo-ease), box-shadow var(--fo-quick) var(--fo-ease);
}
.fo-letter input:hover, .fo-letter textarea:hover, .fo-lookup input:hover, .fo-lookup select:hover { border-bottom-color: var(--fo-ink); }
.fo-letter input:focus, .fo-letter textarea:focus, .fo-lookup input:focus, .fo-lookup select:focus { outline: 0; border-bottom-color: var(--fo-focus); box-shadow: 0 1px 0 0 var(--fo-focus), 0 0 0 3px color-mix(in srgb, var(--fo-focus) 22%, transparent); }
.fo-letter input:-webkit-autofill, .fo-lookup input:-webkit-autofill, .fo-list_row input:-webkit-autofill { -webkit-text-fill-color: var(--fo-ink); transition: background-color 9999s; }

/* letter (contact form) */
.fo-letter { display: grid; gap: 1.4rem; }
.fo-letter_line { display: block; }
.fo-letter_cap { display: block; font-variant-caps: all-small-caps; letter-spacing: 0.11em; line-height: 1.3; color: var(--fo-faint); }
.fo-letter_cap i { font-variant-caps: normal; letter-spacing: 0; font-size: 0.86rem; }
.fo-letter textarea { resize: vertical; min-height: 9rem; }
.fo-letter .fo-go { justify-self: center; margin-top: 0.3rem; }
.fo-letter_reply { margin: 0; padding: 0.8rem 1.1rem; text-align: center; font-style: italic; border: 1px solid currentColor; border-radius: var(--fo-radius); background: var(--fo-ok-bg); color: var(--fo-ok-ink); }
.fo-letter_reply_error { background: var(--fo-bad-bg); color: var(--fo-bad-ink); }

/* catalogue */
.fo-lookup { display: grid; grid-template-columns: minmax(0, 2.2fr) minmax(0, 1fr) minmax(0, 1fr) auto; gap: 1rem 1.3rem; align-items: end; padding-bottom: 1.9rem; border-bottom: 1px solid var(--fo-line); }
.fo-lookup_field { display: block; min-width: 0; }
.fo-lookup_field .fo-smallcaps { display: block; line-height: 1.3; color: var(--fo-faint); }
.fo-lookup input::placeholder { color: var(--fo-faint); font-style: italic; opacity: 0.85; }
.fo-lookup input[type="search"]::-webkit-search-cancel-button { -webkit-appearance: none; }
.fo-lookup select { cursor: pointer; -webkit-appearance: none; appearance: none; padding-right: 2rem; text-overflow: ellipsis; background-image: linear-gradient(45deg, transparent 50%, currentColor 50%), linear-gradient(135deg, currentColor 50%, transparent 50%); background-position: calc(100% - 1.05rem) 55%, calc(100% - 0.75rem) 55%; background-size: 0.3rem 0.3rem; background-repeat: no-repeat; }
.fo-lookup select option { background: var(--fo-card); color: var(--fo-b-ink); }
.fo-count { margin: 1.5rem 0 2.6rem; text-align: center; font-style: italic; color: var(--fo-faint); font-variant-numeric: lining-nums; }
.fo-leaves { margin: 3.4rem 0 0; padding-top: 1.4rem; border-top: 1px solid var(--fo-line); display: flex; flex-wrap: wrap; justify-content: center; align-items: center; gap: 0.6rem 1.6rem; font-variant-numeric: lining-nums; }
.fo-leaves_step { font-variant-caps: all-small-caps; letter-spacing: 0.1em; text-decoration: none; padding: 0.4rem 0.2rem; }
.fo-leaves_step:hover { text-decoration: underline; }
.fo-leaves_numbers { display: inline-flex; gap: 0.25rem; }
.fo-leaves_numbers a, .fo-leaves_numbers em { display: inline-block; min-width: 2.3rem; padding: 0.35rem 0.3rem 0.4rem; text-align: center; text-decoration: none; border: 1px solid transparent; border-radius: var(--fo-radius); }
.fo-leaves_numbers a:hover { border-color: var(--fo-line-strong); background: var(--fo-field); }
.fo-leaves_numbers em { font-style: italic; border-color: var(--fo-line); border-bottom-color: var(--fo-rule); }
.fo-none { text-align: center; padding: 3rem 0 1rem; }
.fo-none_title { margin: 0 0 0.5rem; font-size: var(--fo-step-2); font-weight: 400; font-style: italic; line-height: 1.2; }
.fo-none p { margin: 0 0 1.4rem; color: var(--fo-faint); }

/* one book */
.fo-tome_back { margin: 0 0 2rem; font-variant-caps: all-small-caps; letter-spacing: 0.1em; }
.fo-tome_back a { text-decoration: none; }
.fo-tome_back a:hover { text-decoration: underline; }
.fo-tome_cover { margin: 0 auto 2rem; max-width: 14rem; line-height: 0; }
.fo-tome_cover img { display: block; width: 100%; border-radius: var(--fo-radius); outline: 1px solid color-mix(in srgb, var(--fo-ink) 14%, transparent); outline-offset: -1px; box-shadow: var(--fo-shadow-high); }
.fo-tome_title { margin-bottom: 0.4rem; }
.fo-tome_author { margin: 0; text-align: center; font-size: var(--fo-step-2); font-style: italic; line-height: 1.3; color: var(--fo-faint); }
.fo-tome_facts { list-style: none; margin: 1.3rem 0 0; padding: 0.75rem 0; display: flex; flex-wrap: wrap; justify-content: center; border-top: 1px solid var(--fo-line); border-bottom: 1px solid var(--fo-line); font-variant-caps: all-small-caps; letter-spacing: 0.09em; color: var(--fo-faint); text-align: center; }
.fo-tome_facts li:not(:last-child)::after { content: "\00b7"; margin: 0 0.7em; color: var(--fo-rule); }
.fo-tome_label { margin: 2.4rem 0 0.7rem; text-align: center; color: var(--fo-faint); }
.fo-bindings { width: 100%; border-collapse: collapse; font-variant-numeric: lining-nums; }
.fo-bindings th, .fo-bindings td { padding: 0.8rem 0; border-top: 1px solid var(--fo-line); vertical-align: middle; text-align: left; font-weight: 400; }
.fo-bindings tr:last-child th, .fo-bindings tr:last-child td { border-bottom: 1px solid var(--fo-line); }
.fo-bindings th span { display: block; font-size: 0.86rem; line-height: 1.3; color: var(--fo-faint); }
.fo-bindings td { padding-left: 1rem; text-align: right; white-space: nowrap; }
.fo-bindings_way a { display: inline-block; padding: 0.3rem 0.9rem 0.38rem; border: 1px solid var(--fo-edge); border-radius: var(--fo-radius); background: var(--fo-primary); color: var(--fo-on-primary) !important; font-variant-caps: all-small-caps; letter-spacing: 0.1em; line-height: 1.3; text-decoration: none; transition: background-color var(--fo-quick) var(--fo-ease), color var(--fo-quick) var(--fo-ease), border-color var(--fo-quick) var(--fo-ease); }
.fo-bindings_way a:hover { background: var(--fo-ink); border-color: var(--fo-ink); color: var(--fo-ground) !important; }
@media (min-width: 861px) {
    .fo-measure.fo-tome { width: min(100% - 2 * var(--fo-gutter), 52rem); display: grid; grid-template-columns: 15rem minmax(0, 1fr); column-gap: clamp(2.4rem, 5vw, 4rem); align-content: start; }
    .fo-tome > * { grid-column: 2; }
    .fo-tome > .fo-tome_back { grid-column: 1 / -1; }
    .fo-tome > .fo-tome_cover { grid-column: 1; grid-row: 2 / span 12; align-self: start; position: sticky; top: 5rem; max-width: none; margin: 0.4rem 0 0; }
    .fo-tome .fo-tome_title, .fo-tome .fo-tome_author, .fo-tome .fo-tome_label { text-align: left; }
    .fo-tome .fo-tome_facts { justify-content: flex-start; text-align: left; }
}

/* errata (404) */
.fo-errata { text-align: center; }
.fo-errata::before { content: ""; display: block; width: 3.4rem; height: 5px; margin: 0 auto 1.6rem; border-top: 1px solid var(--fo-rule); border-bottom: 1px solid var(--fo-rule); }
.fo-errata .fo-smallcaps { margin: 0 0 0.8rem; color: var(--fo-faint); }
.fo-errata_note { margin: 0 auto 2rem; max-width: 28rem; font-size: var(--fo-step-1); font-style: italic; line-height: 1.5; color: var(--fo-faint); text-wrap: balance; }

/* end matter (footer) */
.fo-end { --fo-ink: var(--fo-site-end-ink, var(--fo-end-ink)); --fo-focus: currentColor; background: var(--fo-site-end-bg, var(--fo-gray)); color: var(--fo-ink); padding: 0 var(--fo-gutter) 2.4rem; text-align: center; font-size: 0.94rem; }
.fo-end::before { content: ""; display: block; max-width: 62rem; height: 4px; margin: 0 auto clamp(2.4rem, 5vw, 3.6rem); border-top: 1px solid currentColor; border-bottom: 1px solid currentColor; opacity: 0.5; }
.fo-end a { color: inherit; text-decoration-color: color-mix(in srgb, currentColor 45%, transparent); }
.fo-end_inner { max-width: 56rem; margin: 0 auto; }
.fo-end_name { margin: 0; font-size: var(--fo-step-2); font-weight: 500; line-height: 1.15; letter-spacing: -0.01em; }
.fo-end_name a { text-decoration: none; }
.fo-end_name img { display: block; margin: 0 auto; max-height: 56px; width: auto; }
.fo-end_about { margin: 0.8rem auto 0; max-width: 30rem; font-style: italic; line-height: 1.55; opacity: 0.86; }
.fo-end_inline { margin: 1.3rem 0 0; display: flex; flex-wrap: wrap; justify-content: center; gap: 0.2rem 1.6rem; font-variant-caps: all-small-caps; letter-spacing: 0.1em; }
.fo-end_inline a { text-decoration: none; padding: 0.2rem 0; }
.fo-end_inline a:hover, .fo-end_part a:hover { text-decoration: underline; }
.fo-end_index { margin: 2.4rem 0 0; display: grid; grid-template-columns: repeat(auto-fit, minmax(8rem, 1fr)); gap: 1.8rem 1.8rem; }
.fo-end_part { margin: 0; }
.fo-end_part dt { margin-bottom: 0.5rem; font-variant-caps: all-small-caps; letter-spacing: 0.14em; opacity: 0.7; }
.fo-end_part dd { margin: 0; }
.fo-end_part a { display: inline-block; padding: 0.16rem 0; text-decoration: none; }
.fo-list { margin: 2.4rem auto 0; max-width: 24rem; scroll-margin-top: 6rem; }
.fo-list_ask { display: block; font-style: italic; }
.fo-list_row { display: flex; align-items: stretch; gap: 0.6rem; margin-top: 0.55rem; }
.fo-list_row input { flex: 1 1 auto; min-width: 0; padding: 0.42rem 0.7rem 0.48rem; border: 0; border-bottom: 1px solid color-mix(in srgb, currentColor 55%, transparent); border-radius: var(--fo-radius) var(--fo-radius) 0 0; background: color-mix(in srgb, currentColor 7%, transparent); color: inherit; font: inherit; line-height: 1.4; transition: border-color var(--fo-quick) var(--fo-ease), box-shadow var(--fo-quick) var(--fo-ease); }
.fo-list_row input::placeholder { color: inherit; opacity: 0.6; font-style: italic; }
.fo-list_row input:focus { outline: 0; border-bottom-color: currentColor; box-shadow: 0 1px 0 0 currentColor; }
.fo-list_row button { flex: none; padding: 0.42rem 1rem 0.48rem; border: 1px solid color-mix(in srgb, currentColor 55%, transparent); border-radius: var(--fo-radius); background: none; color: inherit; font: inherit; font-variant-caps: all-small-caps; letter-spacing: 0.12em; line-height: 1.4; cursor: pointer; transition: background-color var(--fo-quick) var(--fo-ease), border-color var(--fo-quick) var(--fo-ease), transform var(--fo-quick) var(--fo-ease); }
.fo-list_row button:hover { background: color-mix(in srgb, currentColor 14%, transparent); border-color: currentColor; }
.fo-list_row button:active { transform: translateY(1px); }
.fo-list_reply { margin: 0.7rem 0 0; font-style: italic; }
.fo-end_elsewhere { margin-top: 2.2rem; }
.fo-end_imprint { margin: 2.2rem 0 0; padding-top: 1.3rem; border-top: 1px solid color-mix(in srgb, currentColor 18%, transparent); display: flex; flex-direction: column; gap: 0.2rem; font-size: 0.86rem; opacity: 0.8; font-variant-numeric: lining-nums; }
@media (min-width: 861px) {
    .fo-end_inner:has(> .fo-end_index) { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.9fr); column-gap: clamp(2.5rem, 5vw, 4rem); align-items: start; text-align: left; }
    .fo-end_inner:has(> .fo-end_index) > * { grid-column: 1; }
    .fo-end_inner:has(> .fo-end_index) > .fo-end_index { grid-column: 2; grid-row: 1 / span 5; margin-top: 0.35rem; align-content: start; }
    .fo-end_inner:has(> .fo-end_index) > .fo-end_elsewhere, .fo-end_inner:has(> .fo-end_index) > .fo-end_imprint { grid-column: 1 / -1; }
    .fo-end_inner:has(> .fo-end_index) > .fo-end_elsewhere { grid-row: 6; }
    .fo-end_inner:has(> .fo-end_index) > .fo-end_imprint { grid-row: 7; flex-direction: row; justify-content: space-between; gap: 1rem 2rem; }
    .fo-end_inner:has(> .fo-end_index) .fo-end_name img { margin: 0; }
    .fo-end_inner:has(> .fo-end_index) .fo-end_about, .fo-end_inner:has(> .fo-end_index) .fo-list { margin-left: 0; margin-right: 0; }
    .fo-end_inner:has(> .fo-end_index) .fo-end_inline { justify-content: flex-start; }
}

/* cookie slip */
.fo-slip { position: fixed; right: 1rem; bottom: 1rem; left: 1rem; z-index: 40; max-width: 23rem; margin-left: auto; padding: 1.1rem 1.3rem 1.2rem; background: var(--fo-card); color: var(--fo-b-ink); border: 1px solid color-mix(in srgb, var(--fo-b-ink) 22%, transparent); border-radius: calc(var(--fo-radius) * 2); box-shadow: var(--fo-shadow-high); font-size: 0.94rem; line-height: 1.45; }
.fo-slip p { margin: 0; }
.fo-slip_choice { margin-top: 0.85rem !important; display: flex; flex-wrap: wrap; gap: 0.6rem; font-variant-caps: all-small-caps; letter-spacing: 0.1em; }
.fo-slip_choice a { padding: 0.28rem 0.95rem 0.36rem; border: 1px solid color-mix(in srgb, var(--fo-b-ink) 46%, transparent); border-radius: var(--fo-radius); color: var(--fo-b-ink) !important; line-height: 1.3; text-decoration: none; }
.fo-slip_choice a:first-child { background: var(--fo-primary); border-color: var(--fo-edge); color: var(--fo-on-primary) !important; }
.fo-slip_choice a:hover, .fo-slip_choice a:first-child:hover { background: var(--fo-b-ink); border-color: var(--fo-b-ink); color: var(--fo-card) !important; }

@media (max-width: 860px) {
    .fo-readers_4 { --fo-cols: 2; }
    .fo-praise, .fo-praise:has(> :last-child:nth-child(2)), .fo-praise:has(> :last-child:nth-child(4)) { --fo-cols: 1; }
}
@media (max-width: 760px) {
    .fo-shelf, .fo-shelf:has(> :last-child:nth-child(3)), .fo-shelf:has(> :last-child:nth-child(5)), .fo-shelf:has(> :last-child:nth-child(6)), .fo-shelf:has(> :last-child:nth-child(9)) { --fo-cols: 2; }
    .fo-lookup { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .fo-lookup_field_main { grid-column: 1 / -1; }
    .fo-lookup .fo-go { grid-column: 1 / -1; justify-self: center; }
    .fo-plate, .fo-plate_verso { grid-template-columns: minmax(0, 1fr); }
    .fo-plate_picture { width: 100%; max-width: 24rem; margin: 0 auto; order: -1; }
}
@media (max-width: 640px) {
    .fo-readers { --fo-cols: 1; }
    .fo-readers_one { max-width: 22rem; }
    .fo-readers_2, .fo-readers_4 { --fo-cols: 2; }
    .fo-readers_2 .fo-readers_one, .fo-readers_4 .fo-readers_one { max-width: none; }
}
@media (max-width: 520px) {
    html { font-size: 112.5%; --fo-gutter: 1.15rem; }
    .fo-notes { grid-template-columns: minmax(0, 1fr); }
    .fo-tally_item { flex-basis: 50%; }
    .fo-bindings td { padding-left: 0.6rem; }
    .fo-bindings_way a { padding-left: 0.6rem; padding-right: 0.6rem; }
    .fo-shelf { --fo-gap: 1.1rem; row-gap: 2.2rem; }
    .fo-list_row { flex-wrap: wrap; }
    .fo-end_index { grid-template-columns: minmax(0, 1fr); gap: 1.6rem; }
}
@media (max-width: 400px) {
    .fo-readers_2, .fo-readers_4 { --fo-cols: 1; }
    .fo-readers_2 .fo-readers_one, .fo-readers_4 .fo-readers_one { max-width: 22rem; }
}

/* motion: only an arrival, never a hidden state */
@media (prefers-reduced-motion: no-preference) {
    .fo-frontis_page.fo-shown { animation: fo-arrive 420ms var(--fo-ease) both; }
    .fo-leaf.is-arriving > .fo-measure { animation: fo-arrive 420ms var(--fo-ease) both; }
}
@media (prefers-reduced-motion: reduce) {
    .fo-book *, .fo-book ::before, .fo-book ::after { transition-duration: 0.01ms !important; animation-duration: 0.01ms !important; }
}
@keyframes fo-arrive {
    from { opacity: 0; transform: translateY(10px); }
    to { opacity: 1; transform: none; }
}
