/* ==========================================================================
   Kaitu 開途 — Documents: the shared print & letterhead stylesheet.
   Every Kaitu document (library materials, issued forms, client plans, guidebooks) uses it — as a full
   printable page (body.kdoc-page, via /print/… and /resources/…/book) or as an inline fragment inside
   the portal and staff panel (.kdoc). Everything is scoped under .kdoc / .kdoc-page, so any page may link it.
   Print: A4 or Letter via @page; running header, footer and page numbers are CSS margin boxes (the
   per-document strings are set inline by the server).
   ========================================================================== */

.kdoc, .kdoc-page {
  --k-paper: #F4EEE3; --k-card: #FBF8F2; --k-sheet: #FFFDF9; --k-ink: #1A1712; --k-ink-2: #3A342A; --k-muted: #7A7162;
  --k-line: rgba(26, 23, 18, .16); --k-line-2: rgba(26, 23, 18, .32); --k-seal: #C8372D; --k-seal-tint: #F4D9D2;
  --k-jade: #2E5E4E; --k-jade-tint: #D5E3DB; --k-indigo: #1F3552; --k-indigo-tint: #D6DEE8; --k-ochre: #D8A24A; --k-ochre-tint: #F4E4C4;
  --k-serif: 'Fraunces', 'Iowan Old Style', Georgia, serif; --k-sans: 'Geist', ui-sans-serif, system-ui, -apple-system, 'Segoe UI', sans-serif;
  --k-mono: 'Geist Mono', ui-monospace, 'SF Mono', Menlo, monospace; --k-cjk: 'Noto Serif TC', 'Songti TC', serif; --k-hand: 'Caveat', 'Bradley Hand', cursive;
}

/* ---------------------------------------------------------------- page chrome (screen) */
.kdoc-page { margin: 0; background: var(--k-paper); color: var(--k-ink); font-family: var(--k-sans); -webkit-font-smoothing: antialiased; }
.kdoc-page *, .kdoc-page *::before, .kdoc-page *::after, .kdoc *, .kdoc *::before, .kdoc *::after { box-sizing: border-box; }
.kdoc-bar { position: sticky; top: 0; z-index: 10; display: flex; align-items: center; gap: 12px; padding: 10px clamp(12px, 3vw, 28px); background: rgba(244, 238, 227, .88); backdrop-filter: blur(10px); -webkit-backdrop-filter: blur(10px); border-bottom: 1px solid var(--k-line); font-size: 14px; }
.kdoc-bar a, .kdoc-bar button { font: 500 13.5px/1 var(--k-sans); color: var(--k-ink); text-decoration: none; }
.kdoc-bar__back { padding: 10px 12px; border-radius: 999px; }
.kdoc-bar__back:hover { background: rgba(26, 23, 18, .06); }
.kdoc-bar__title { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; color: var(--k-muted); font: 500 11px/1.2 var(--k-mono); letter-spacing: .12em; text-transform: uppercase; }
.kdoc-bar__seg { display: inline-flex; padding: 3px; border-radius: 999px; background: rgba(26, 23, 18, .06); }
.kdoc-bar__seg a { padding: 8px 12px; border-radius: 999px; color: var(--k-muted); }
.kdoc-bar__seg a[aria-current] { background: var(--k-card); color: var(--k-ink); box-shadow: 0 1px 2px rgba(26, 23, 18, .12); }
.kdoc-bar__print { display: inline-flex; align-items: center; gap: 8px; padding: 11px 20px !important; border: 0; border-radius: 999px; background: var(--k-seal) !important; color: #fff !important; cursor: pointer; transition: transform .2s cubic-bezier(.16, 1, .3, 1), background .2s; }
.kdoc-bar__print:hover { background: #9E2A22 !important; transform: translateY(-1px); }
.kdoc-bar a:focus-visible, .kdoc-bar button:focus-visible { outline: 2px solid var(--k-seal); outline-offset: 2px; }
.kdoc-sheetwrap { padding: clamp(16px, 4vw, 48px) clamp(0px, 3vw, 32px) 80px; }
.kdoc--sheet {
  position: relative; width: 210mm; max-width: 100%; margin: 0 auto; padding: 20mm 18mm 18mm; background: var(--k-sheet);
  box-shadow: 0 1px 0 rgba(255, 255, 255, .7) inset, 0 1px 1px rgba(26, 23, 18, .08), 0 24px 60px -24px rgba(26, 23, 18, .35);
  border-radius: 2px; animation: kdocIn .8s cubic-bezier(.16, 1, .3, 1) both;
}
.kdoc-page[data-size='letter'] .kdoc--sheet { width: 8.5in; }
/* a faint paper fibre on screen */
.kdoc--sheet::before { content: ''; position: absolute; inset: 0; pointer-events: none; opacity: .5; border-radius: inherit;
  background-image: radial-gradient(rgba(26, 23, 18, .025) 1px, transparent 1px); background-size: 3px 3px; }
@keyframes kdocIn { from { opacity: 0; transform: translateY(18px) rotate(-.25deg); } }
@media (prefers-reduced-motion: reduce) { .kdoc--sheet { animation: none; } .kdoc-bar__print { transition: none; } }
@media (max-width: 640px) {
  .kdoc--sheet { padding: 26px 18px 22px; border-radius: 0; }
  .kdoc-bar__title { display: none; }
  .kdoc-bar { justify-content: space-between; }
}

/* ---------------------------------------------------------------- letterhead */
.kdoc { color: var(--k-ink); font: 400 10.5pt/1.6 var(--k-sans); font-feature-settings: 'ss01'; }
.kdoc-head { display: flex; justify-content: space-between; align-items: flex-start; gap: 20px; padding-bottom: 14pt; border-bottom: 1px solid var(--k-ink); position: relative; }
.kdoc-head::after { content: ''; position: absolute; left: 0; bottom: -3px; width: 42px; height: 2px; background: var(--k-seal); }
.kdoc-head__brand { display: flex; align-items: center; gap: 12px; }
.kdoc-head__brand img { width: 52px; height: 52px; flex: none; }
.kdoc-head__brand b { display: block; font: 400 21pt/1 var(--k-serif); letter-spacing: -.02em; font-variation-settings: 'opsz' 144, 'SOFT' 30; }
.kdoc-head__brand span { display: block; margin-top: 3px; font: 500 9pt/1 var(--k-cjk); letter-spacing: .3em; color: var(--k-seal); }
.kdoc-head__meta { margin: 0; display: grid; gap: 3pt; text-align: right; }
.kdoc-head__meta div { display: flex; gap: 8px; justify-content: flex-end; align-items: baseline; }
.kdoc-head__meta dt { font: 500 6.8pt/1.3 var(--k-mono); letter-spacing: .14em; text-transform: uppercase; color: var(--k-muted); }
.kdoc-head__meta dd { margin: 0; font: 500 8.6pt/1.3 var(--k-sans); }
.kdoc-titleblock { padding: 22pt 0 14pt; }
.kdoc-eyebrow { display: block; font: 500 7.4pt/1.3 var(--k-mono); letter-spacing: .16em; text-transform: uppercase; color: var(--k-seal); }
.kdoc-title { margin: 8pt 0 0; font: 400 25pt/1.06 var(--k-serif); letter-spacing: -.025em; font-variation-settings: 'opsz' 144, 'SOFT' 30; text-wrap: balance; }
.kdoc-sub { margin: 8pt 0 0; font-size: 11.5pt; line-height: 1.5; color: var(--k-ink-2); max-width: 58ch; text-wrap: pretty; }
@media (max-width: 640px) {
  .kdoc-head { flex-direction: column; }
  .kdoc-head__meta { text-align: left; }
  .kdoc-head__meta div { justify-content: flex-start; }
  .kdoc-title { font-size: 21pt; }
}

/* ---------------------------------------------------------------- body typography */
.kdoc-body > :first-child { margin-top: 0; }
.kdoc h1, .kdoc h2, .kdoc h3, .kdoc h4 { font-family: var(--k-serif); font-weight: 400; letter-spacing: -.015em; color: var(--k-ink); break-after: avoid; page-break-after: avoid; text-wrap: balance; }
.kdoc-body h1 { font-size: 18pt; line-height: 1.15; margin: 22pt 0 8pt; }
.kdoc-body h2 { font-size: 14.5pt; line-height: 1.2; margin: 20pt 0 6pt; padding-top: 10pt; border-top: 1px solid var(--k-line); }
.kdoc-body h3 { font-size: 11.8pt; line-height: 1.3; margin: 14pt 0 4pt; }
.kdoc-body h4 { font: 600 8pt/1.4 var(--k-mono); letter-spacing: .12em; text-transform: uppercase; margin: 12pt 0 4pt; color: var(--k-ink-2); }
.kdoc-body p { margin: 0 0 8pt; orphans: 3; widows: 3; text-wrap: pretty; }
.kdoc-body a { color: var(--k-seal); text-decoration: underline; text-underline-offset: 2px; text-decoration-thickness: 1px; }
.kdoc-body strong { font-weight: 600; }
.kdoc-body em { font-family: var(--k-serif); font-style: italic; }
.kdoc-body ul, .kdoc-body ol { margin: 0 0 10pt; padding-left: 16pt; }
.kdoc-body li { margin: 0 0 4pt; padding-left: 2pt; break-inside: avoid; }
.kdoc-body ul li::marker { color: var(--k-seal); }
.kdoc-body ol li::marker { font: 500 8.5pt var(--k-mono); color: var(--k-seal); }
.kdoc-body :is(ul, ol):not(.kdoc-opts) > li:has(> .kdoc-box) { list-style: none; margin-left: -16pt; padding-left: 22pt; position: relative; }
.kdoc-body :is(ul, ol):not(.kdoc-opts) > li > .kdoc-box { position: absolute; left: 0; top: .28em; }
.kdoc-body blockquote { margin: 12pt 0; padding: 10pt 14pt; background: var(--k-card); border-left: 2px solid var(--k-seal); border-radius: 0 6px 6px 0; color: var(--k-ink-2); break-inside: avoid; }
.kdoc-body blockquote p:last-child { margin-bottom: 0; }
.kdoc-body hr { border: 0; border-top: 1px solid var(--k-line); margin: 16pt 0; }
.kdoc-body img { max-width: 100%; height: auto; border-radius: 4px; }
.kdoc-body code { font: 9pt var(--k-mono); background: var(--k-card); padding: 1px 4px; border-radius: 3px; }
.kdoc-body table { width: 100%; border-collapse: collapse; margin: 8pt 0 14pt; font-size: 9.2pt; break-inside: auto; }
.kdoc-body thead { display: table-header-group; }
.kdoc-body tr { break-inside: avoid; }
.kdoc-body th { text-align: left; font: 500 6.9pt/1.3 var(--k-mono); letter-spacing: .12em; text-transform: uppercase; color: var(--k-muted); padding: 6pt 6pt 5pt; border-bottom: 1px solid var(--k-ink); }
.kdoc-body td { padding: 6pt; border-bottom: 1px solid var(--k-line); vertical-align: top; height: 20pt; }
.kdoc-mf { font-weight: 500; }
.kdoc-blank { display: inline-block; min-width: 46mm; height: 1.05em; border-bottom: 1px solid var(--k-line-2); vertical-align: baseline; margin: 0 2px; }
.kdoc-muted { color: var(--k-muted); }
.kdoc-break { break-after: page; page-break-after: always; height: 0; }
@media screen and (max-width: 640px) { .kdoc-body table { display: block; overflow-x: auto; } }

/* ---------------------------------------------------------------- tick boxes */
.kdoc-box { display: inline-block; width: 3.4mm; height: 3.4mm; min-width: 12px; min-height: 12px; border: 1.2px solid var(--k-ink); border-radius: 2px; position: relative; vertical-align: -1px; background: #fff; flex: none; }
.kdoc-box.is-on::after { content: ''; position: absolute; left: 30%; top: 6%; width: 30%; height: 62%; border: solid var(--k-seal); border-width: 0 2px 2px 0; transform: rotate(40deg); }
.kdoc-box--round { border-radius: 50%; }
.kdoc-box--round.is-on::after { left: 22%; top: 22%; width: 56%; height: 56%; border: 0; border-radius: 50%; background: var(--k-seal); transform: none; }

/* ---------------------------------------------------------------- fillable form (blank or answered) */
/* flex (not grid) so long forms fragment cleanly across printed pages */
.kdoc-form { display: flex; flex-wrap: wrap; gap: 12pt 18pt; margin-top: 16pt; }
.kdoc-field { min-width: 0; flex: 0 0 calc(50% - 9pt); break-inside: avoid; }
.kdoc-field--wide { flex-basis: 100%; }
.kdoc-fsec { break-after: avoid; page-break-after: avoid; margin-top: 8pt; padding-top: 12pt; border-top: 1px solid var(--k-ink); }
.kdoc-fsec h3 { margin: 0; font-size: 13pt; }
.kdoc-flabel { font: 500 8.6pt/1.35 var(--k-sans); color: var(--k-ink-2); }
.kdoc-req { color: var(--k-seal); margin-left: 3px; }
.kdoc-fhelp { font-size: 8.2pt; line-height: 1.45; color: var(--k-muted); margin-top: 2pt; }
.kdoc-line { min-height: 9mm; border-bottom: 1px solid var(--k-line-2); display: flex; align-items: flex-end; padding-bottom: 3pt; }
.kdoc-ans { font: 400 11pt/1.3 var(--k-sans); color: var(--k-indigo); }
.kdoc-ansbox { margin-top: 5pt; padding: 8pt 10pt; border: 1px solid var(--k-line); border-radius: 4px; color: var(--k-indigo); font-size: 10.5pt; line-height: 1.55; background: #fff; }
.kdoc-lines { margin-top: 4pt; }
.kdoc-lines i { display: block; height: 9mm; border-bottom: 1px solid var(--k-line-2); }
.kdoc-datebox { display: flex; align-items: flex-end; gap: 4px; margin-top: 5pt; }
.kdoc-datebox span { width: 11mm; height: 9mm; border: 1px solid var(--k-line-2); border-radius: 3px; display: flex; align-items: flex-end; justify-content: center; font: 500 6pt/1.9 var(--k-mono); color: rgba(122, 113, 98, .7); letter-spacing: .1em; }
.kdoc-datebox span.w { width: 18mm; }
.kdoc-datebox i { font-style: normal; color: var(--k-muted); padding-bottom: 6px; }
.kdoc .kdoc-opts { list-style: none; margin: 6pt 0 0; padding: 0; display: grid; grid-template-columns: repeat(auto-fill, minmax(62mm, 1fr)); gap: 5pt 14pt; }
.kdoc .kdoc-opts li { margin: 0; padding: 0; display: flex; gap: 8px; align-items: flex-start; font-size: 9.8pt; line-height: 1.35; }
.kdoc-opts .kdoc-box { margin-top: 2px; }
.kdoc-check { display: flex; gap: 10px; align-items: flex-start; }
.kdoc-check .kdoc-box { margin-top: 3px; }
.kdoc-check .kdoc-flabel { font-size: 9.8pt; color: var(--k-ink); }
@media (max-width: 640px) { .kdoc-field { flex-basis: 100%; } .kdoc .kdoc-opts { grid-template-columns: 1fr; } }

/* ---------------------------------------------------------------- signature block */
.kdoc-sign { display: grid; grid-template-columns: 1.6fr 1fr .8fr; gap: 14pt; margin: 16pt 0 6pt; break-inside: avoid; }
.kdoc-sign__cell > span { display: block; margin-top: 4pt; font: 500 6.9pt/1.3 var(--k-mono); letter-spacing: .12em; text-transform: uppercase; color: var(--k-muted); }
.kdoc-sign__line { height: 14mm; border-bottom: 1px solid var(--k-ink); display: flex; align-items: flex-end; padding-bottom: 2pt; font-size: 10.5pt; color: var(--k-indigo); }
.kdoc-sign__script { font: 500 22pt/1 var(--k-hand); color: var(--k-indigo); transform: rotate(-2deg); transform-origin: left bottom; }
@media (max-width: 640px) { .kdoc-sign { grid-template-columns: 1fr 1fr; } .kdoc-sign__cell--wide { grid-column: 1 / -1; } }

/* ---------------------------------------------------------------- closing block (QR + address) */
.kdoc-close { display: flex; justify-content: space-between; align-items: flex-end; gap: 20px; margin-top: 26pt; padding-top: 14pt; border-top: 1px solid var(--k-line); break-inside: avoid; }
.kdoc-close__qr { display: flex; align-items: center; gap: 12px; }
.kdoc-qr { width: 23mm; height: 23mm; flex: none; }
.kdoc-close__qr b { display: block; font: 500 8.6pt/1.3 var(--k-sans); }
.kdoc-close__qr span { display: block; margin-top: 3px; font: 400 7.2pt/1.35 var(--k-mono); color: var(--k-muted); word-break: break-all; max-width: 62mm; }
.kdoc-close__sign { display: flex; gap: 10px; align-items: flex-end; text-align: right; }
.kdoc-close__sign img { order: 2; width: 30px; height: 30px; opacity: .9; }
.kdoc-close__sign p { margin: 0; font-size: 7.6pt; line-height: 1.5; color: var(--k-muted); }
.kdoc-close__sign b { color: var(--k-ink); font-weight: 500; }
@media (max-width: 640px) { .kdoc-close { flex-direction: column; align-items: flex-start; } .kdoc-close__sign { text-align: left; } .kdoc-close__sign img { order: 0; } }

/* ---------------------------------------------------------------- "Your Kaitu Plan" */
.kplan-facts dl { margin: 0; display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 0; border: 1px solid var(--k-line); border-radius: 6px; overflow: hidden; background: var(--k-card); }
.kplan-facts dl div { padding: 9pt 11pt; border-right: 1px solid var(--k-line); border-bottom: 1px solid var(--k-line); }
.kplan-facts dt { font: 500 6.8pt/1.3 var(--k-mono); letter-spacing: .13em; text-transform: uppercase; color: var(--k-muted); }
.kplan-facts dd { margin: 3pt 0 0; font: 400 11pt/1.25 var(--k-serif); }
.kplan-summary { margin: 12pt 0 0; font-size: 10.5pt; color: var(--k-ink-2); }
.kplan-progress { display: grid; grid-template-columns: auto 1fr; gap: 6pt 16pt; align-items: center; margin: 16pt 0 4pt; }
.kplan-progress__num { grid-row: span 2; display: flex; align-items: baseline; gap: 6px; }
.kplan-progress__num b { font: 400 30pt/1 var(--k-serif); letter-spacing: -.03em; color: var(--k-seal); }
.kplan-progress__num span { font: 500 7pt var(--k-mono); letter-spacing: .14em; text-transform: uppercase; color: var(--k-muted); }
.kplan-progress__bar { height: 5px; border-radius: 99px; background: var(--k-line); overflow: hidden; }
.kplan-progress__bar i { display: block; height: 100%; background: var(--k-jade); border-radius: inherit; }
.kplan-progress p { margin: 0; font-size: 9.2pt; color: var(--k-ink-2); }
.kplan-next { margin-top: 16pt; padding: 12pt 14pt; border-radius: 6px; background: var(--k-card); border: 1px solid var(--k-line); break-inside: avoid; }
.kplan-next h2, .kplan-meet h2 { margin: 0 0 6pt !important; padding: 0 !important; border: 0 !important; font-size: 13pt !important; }
.kplan-next ol { list-style: none; margin: 0; padding: 0; display: grid; gap: 6pt; }
.kplan-next li { display: flex; gap: 10px; align-items: flex-start; margin: 0; padding: 0; }
.kplan-next li .kdoc-box { margin-top: 3px; position: static; }
.kplan-next b { display: block; font-weight: 500; }
.kplan-next span:not(.kdoc-box) { display: block; font-size: 8.4pt; color: var(--k-muted); }
.kplan-h { margin-top: 22pt !important; }
.kplan-phase { margin: 12pt 0 0; padding-top: 10pt; border-top: 1px solid var(--k-line); break-inside: auto; }
.kplan-phase > header { display: grid; grid-template-columns: auto 1fr auto; gap: 12px; align-items: start; break-after: avoid; }
.kplan-phase__n { font: 400 19pt/1 var(--k-serif); color: var(--k-muted); letter-spacing: -.02em; min-width: 26pt; }
.kplan-phase.is-active .kplan-phase__n { color: var(--k-seal); }
.kplan-phase.is-done .kplan-phase__n { color: var(--k-jade); }
.kplan-phase h3 { margin: 0 !important; font-size: 12.5pt !important; }
.kplan-phase header p { margin: 2pt 0 0; font-size: 9pt; color: var(--k-muted); }
.kplan-chip { font: 500 6.8pt/1 var(--k-mono); letter-spacing: .12em; text-transform: uppercase; padding: 5px 8px; border-radius: 99px; background: var(--k-line); color: var(--k-ink-2); white-space: nowrap; }
.kplan-chip--active { background: var(--k-seal-tint); color: #9E2A22; }
.kplan-chip--done { background: var(--k-jade-tint); color: var(--k-jade); }
.kplan-tasks { width: 100%; table-layout: fixed; border-collapse: collapse; margin: 8pt 0 0 !important; font-size: 9.2pt; }
.kplan-tasks th { font: 500 6.6pt/1.3 var(--k-mono) !important; letter-spacing: .12em; text-transform: uppercase; color: var(--k-muted); text-align: left; padding: 4pt 6pt !important; border-bottom: 1px solid var(--k-line-2) !important; }
.kplan-tasks th:first-child, .kplan-tasks td:first-child { padding-left: 0 !important; }
.kplan-tasks td { padding: 6pt !important; border-bottom: 1px solid var(--k-line) !important; vertical-align: top; height: auto !important; }
.kplan-step { display: flex; gap: 8px; align-items: flex-start; }
.kplan-step .kdoc-box { margin-top: 2px; }
.kplan-tasks td b { font-weight: 500; }
.kplan-tasks td small { display: block; color: var(--k-muted); font-size: 8.2pt; line-height: 1.4; margin-top: 1pt; }
.kplan-tasks tr.is-done b { color: var(--k-muted); text-decoration: line-through; text-decoration-color: rgba(122, 113, 98, .5); }
.kplan-tasks .nowrap { white-space: nowrap; }
.kplan-meet { margin-top: 18pt; break-inside: avoid; }
.kplan-meet ul { list-style: none; margin: 0; padding: 0; }
.kplan-meet li { display: flex; justify-content: space-between; gap: 10px; padding: 5pt 0; border-bottom: 1px solid var(--k-line); margin: 0; }
.kplan-meet li span { color: var(--k-muted); font-size: 9pt; text-align: right; }
.kplan-contact { display: grid; grid-template-columns: 1fr 1.2fr; gap: 20pt; margin-top: 20pt; padding: 14pt; background: var(--k-card); border-radius: 6px; border: 1px solid var(--k-line); break-inside: avoid; }
.kplan-contact h3 { margin: 4pt 0 2pt !important; font-size: 14pt !important; }
.kplan-contact p { margin: 0; font-size: 9pt; color: var(--k-ink-2); }
.kplan-note { font-size: 8.8pt !important; line-height: 1.55; color: var(--k-muted) !important; align-self: center; }
@media (max-width: 640px) {
  .kplan-facts dl { grid-template-columns: 1fr 1fr; }
  .kplan-contact { grid-template-columns: 1fr; }
  .kplan-tasks thead { display: none; }
  .kplan-tasks colgroup { display: none; }
  .kplan-tasks, .kplan-tasks tbody, .kplan-tasks tr { display: block; width: 100%; }
  .kplan-tasks tr { padding: 6pt 0; border-bottom: 1px solid var(--k-line); display: grid; grid-template-columns: 1fr auto; gap: 2pt 8pt; }
  .kplan-tasks td { border: 0 !important; padding: 0 !important; font-size: 8.6pt; }
  .kplan-tasks td:first-child { grid-column: 1 / -1; font-size: 9.4pt; }
  .kplan-tasks td:nth-child(2)::before { content: 'Who: '; color: var(--k-muted); }
  .kplan-tasks td:nth-child(3) { text-align: right; }
  .kplan-tasks td:nth-child(4) { color: var(--k-muted); }
}

/* ---------------------------------------------------------------- guidebook (book view) */
.kbook .kdoc-head, .kbook .kdoc-titleblock, .kbook .kdoc-close { display: none; }
.kbook-cover { position: relative; display: flex; flex-direction: column; justify-content: space-between; min-height: 240mm; padding: 14mm 12mm; margin: -20mm -18mm 0; color: var(--k-ink); overflow: hidden; background: var(--k-paper); break-after: page; page-break-after: always; }
.kbook-cover__img { position: absolute; inset: auto 0 0 0; height: 46%; overflow: hidden; }
.kbook-cover__img::before { content: ''; position: absolute; inset: 0; z-index: 1; background: linear-gradient(var(--k-paper), rgba(244, 238, 227, 0) 38%); }
.kbook-cover__img img { width: 100%; height: 100%; object-fit: cover; filter: saturate(.92); }
.kbook-cover__top, .kbook-cover__mid, .kbook-cover__foot { position: relative; z-index: 2; }
.kbook-cover__top { display: flex; align-items: center; gap: 12px; font: 500 7.6pt/1.3 var(--k-mono); letter-spacing: .16em; text-transform: uppercase; color: var(--k-ink-2); }
.kbook-cover__top img { width: 58px; height: 58px; }
.kbook-cover__mid { margin-bottom: auto; margin-top: 26mm; max-width: 150mm; }
.kbook-cover__mid h1 { margin: 10pt 0 0; font: 400 38pt/.98 var(--k-serif); letter-spacing: -.035em; font-variation-settings: 'opsz' 144, 'SOFT' 30; text-wrap: balance; }
.kbook-cover__mid p { margin: 14pt 0 0; font: italic 400 13pt/1.4 var(--k-serif); color: var(--k-ink-2); max-width: 44ch; }
.kbook-cover__foot { display: flex; justify-content: space-between; font: 500 7.6pt/1 var(--k-mono); letter-spacing: .16em; text-transform: uppercase; color: #fff; text-shadow: 0 1px 6px rgba(0, 0, 0, .35); }
.kbook-cover__foot span[lang] { font-family: var(--k-cjk); letter-spacing: .2em; }
.kbook-toc { padding-top: 8pt; break-after: page; page-break-after: always; }
.kbook-toc h2 { font-size: 24pt !important; margin: 6pt 0 16pt !important; border: 0 !important; padding: 0 !important; }
.kbook-toc ol { list-style: none; margin: 0; padding: 0; border-top: 1px solid var(--k-ink); }
.kbook-toc li { margin: 0; padding: 0; border-bottom: 1px solid var(--k-line); }
.kbook-toc a { display: flex; gap: 14pt; align-items: baseline; padding: 8pt 0; color: var(--k-ink); text-decoration: none; }
.kbook-toc a:hover .kbook-toc__t { color: var(--k-seal); }
.kbook-toc__n { font: 500 8pt var(--k-mono); color: var(--k-seal); min-width: 18pt; }
.kbook-toc__t { font: 400 12.5pt/1.3 var(--k-serif); }
.kbook-fore { margin-top: 20pt; font-size: 10pt; color: var(--k-ink-2); }
.kbook-ch { break-before: page; page-break-before: always; padding-top: 4pt; }
.kbook-ch__head { padding: 10mm 0 8mm; margin-bottom: 8mm; border-bottom: 1px solid var(--k-ink); position: relative; }
.kbook-ch__head::after { content: ''; position: absolute; left: 0; bottom: -3px; width: 42px; height: 2px; background: var(--k-seal); }
.kbook-ch__head h2 { margin: 8pt 0 0 !important; padding: 0 !important; border: 0 !important; font-size: 26pt !important; line-height: 1.02 !important; letter-spacing: -.03em !important; font-variation-settings: 'opsz' 144, 'SOFT' 30; }
.kbook-ch__body h3 { font-size: 13.5pt; margin-top: 18pt; }
.kbook-ch__body h4 { font: 400 11.5pt/1.3 var(--k-serif); letter-spacing: -.01em; text-transform: none; color: var(--k-ink); }
.kbook-ch__body > p:first-child::first-letter { float: left; font: 400 38pt/.82 var(--k-serif); color: var(--k-seal); margin: 4pt 6pt 0 0; }
.kbook-colophon { break-before: page; page-break-before: always; padding-top: 30mm; max-width: 120mm; }
.kbook-colophon h2 { font-size: 18pt !important; border: 0 !important; margin: 12pt 0 8pt !important; padding: 0 !important; }
.kbook-colophon p { font-size: 9.5pt; color: var(--k-ink-2); }
.kdoc-page[data-size='letter'] .kbook-cover { min-height: 225mm; }
@media screen {
  .kbook .kdoc--sheet { padding-top: 20mm; }
  .kbook-ch, .kbook-toc, .kbook-colophon { margin-top: 20mm; padding-top: 16mm; border-top: 1px dashed var(--k-line-2); }
}
@media screen and (max-width: 640px) {
  .kbook-cover { margin: -26px -18px 0; min-height: 150vw; padding: 26px 20px; }
  .kbook-cover__mid h1 { font-size: 28pt; }
  .kbook-ch__head h2 { font-size: 20pt !important; }
}

/* ---------------------------------------------------------------- inline fragments (portal + staff) */
.kdoc--inline { font-size: 15px; line-height: 1.6; }
.kdoc--inline .kdoc-body h2 { font-size: 1.35rem; }
.kdoc--inline .kdoc-body h3 { font-size: 1.1rem; }

/* ---------------------------------------------------------------- print */
@page { margin: 20mm 18mm 22mm;
  @top-right { font: 400 7pt 'Geist Mono', ui-monospace, monospace; letter-spacing: .1em; text-transform: uppercase; color: #7A7162; vertical-align: bottom; padding-bottom: 5mm; }
  @bottom-left { font: 400 7pt 'Geist Mono', ui-monospace, monospace; letter-spacing: .1em; text-transform: uppercase; color: #7A7162; vertical-align: top; padding-top: 5mm; }
  @bottom-right { font: 400 7pt 'Geist Mono', ui-monospace, monospace; letter-spacing: .1em; color: #7A7162; vertical-align: top; padding-top: 5mm; }
}
@media print {
  html, body.kdoc-page { background: #fff; }
  .kdoc-page, .kdoc { -webkit-print-color-adjust: exact; print-color-adjust: exact; }
  .kdoc-bar { display: none !important; }
  .kdoc-sheetwrap { padding: 0; }
  .kdoc--sheet { width: auto !important; max-width: none; margin: 0; padding: 0; box-shadow: none; background: #fff; animation: none; }
  .kdoc--sheet::before { display: none; }
  .kdoc-body a { color: var(--k-ink); text-decoration: none; }
  .kdoc-body a[href^='http']::after { content: ' (' attr(href) ')'; font-size: 7.5pt; color: var(--k-muted); word-break: break-all; }
  .kbook-cover { margin: 0; min-height: 250mm; }
  .kdoc-page[data-size='letter'] .kbook-cover { min-height: 232mm; }
  .kbook-cover__img { height: 48%; }
}
