/* The printed plan. Used identically by the live preview and by print/PDF.
 * Colors and fonts come from CSS variables set by the template engine. */

.doc { color: var(--ink); font-family: var(--body-font); font-size: calc(11.5pt * var(--scale)); line-height: var(--lh); }
.doc *, .doc *::before, .doc *::after { box-sizing: border-box; }
.doc .flow-item { display: flow-root; }
.doc p { margin: 0 0 .55em; }
.doc h2, .doc h3 { font-family: var(--head-font); font-weight: var(--head-weight); color: var(--primary); margin: 0; line-height: 1.2; }
.doc .muted { color: #777; font-style: italic; }

/* Page */
.page { position: relative; background: var(--paper); overflow: hidden; color: var(--ink); }
.page .pg-body { position: absolute; overflow: hidden; }
.page .pg-header, .page .pg-footer { position: absolute; font-size: 8.5pt; color: #8a8f93; display: flex; justify-content: space-between; letter-spacing: .02em; font-family: var(--body-font); }
.page .pg-footer { display: grid; grid-template-columns: 1fr auto 1fr; gap: 12px; align-items: baseline; }
.pg-footer span { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.pg-footer .pf-mid { text-align: center; }
.pg-footer .pf-right { text-align: right; }
.page .pg-header { justify-content: flex-start; border-bottom: 1px solid var(--accent); padding-bottom: 3px; }

/* Section heading */
.sec-head { display: flex; align-items: center; gap: 12px; margin: 0 0 16px; padding-bottom: 10px; border-bottom: 3px solid var(--accent); position: relative; }
.sec-head h2 { font-size: calc(24pt * var(--scale)); }
.sec-head .sec-ico { color: var(--accent); display: inline-flex; }
.sec-head.decor-blob::before { content: ''; position: absolute; left: -14px; top: -14px; width: 58px; height: 58px; border-radius: 46% 54% 60% 40%; background: var(--soft); z-index: -1; }
.sec-head.decor-blob { z-index: 0; }
.sec-head.decor-bar { border-bottom: 0; padding: 12px 16px; background: var(--primary); }
.sec-head.decor-bar h2, .sec-head.decor-bar .sec-ico { color: #fff; }
.sec-head.decor-dots { border-bottom: 3px dotted var(--accent); }

/* Text blocks */
.blk-h { font-size: calc(13.5pt * var(--scale)); margin: 14px 0 6px !important; display: flex; align-items: center; gap: 10px; }
.doc ul.bullets { margin: 0 0 .4em; padding-left: 1.25em; }
.doc ul.bullets li { margin: 0 0 .2em; }
.doc ul.bullets li::marker { color: var(--accent); }
.doc ul.cont { margin-top: -.2em; }
.doc ul.checks { list-style: none; padding: 0; margin: 0 0 .4em; }
.doc ul.checks li { display: flex; gap: 8px; align-items: baseline; margin-bottom: .25em; }
.doc ul.checks .box { width: 1em; height: 1em; border: 1.5px solid var(--primary); border-radius: 3px; display: inline-grid; place-items: center; font-size: .8em; flex: none; color: var(--primary); }
.quote { margin: 14px 0; padding: 12px 18px; border-left: 5px solid var(--accent); background: var(--soft); font-family: var(--head-font); font-size: calc(14pt * var(--scale)); color: var(--primary); border-radius: 0 10px 10px 0; }
.quote p { margin: 0; }
.quote cite { display: block; font-family: var(--body-font); font-size: .7em; font-style: normal; margin-top: 6px; color: var(--ink); }
.tbl { width: 100%; border-collapse: collapse; margin: 6px 0 12px; font-size: .92em; }
.tbl th { background: var(--primary); color: #fff; text-align: left; padding: 6px 8px; font-weight: 600; }
.tbl td { border-bottom: 1px solid #dde3e0; padding: 6px 8px; vertical-align: top; }
.tbl tfoot td { font-weight: 700; border-top: 2px solid var(--primary); border-bottom: 0; }
.tbl .num { text-align: right; white-space: nowrap; }
.dot { display: inline-block; width: 10px; height: 10px; border-radius: 50%; margin-right: 7px; vertical-align: middle; }

/* Pairs (cards and two-column layouts) */
.pair { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; margin-bottom: 14px; align-items: start; }
.pair.cards .cell { background: var(--soft); border-radius: 14px; padding: 4px 14px 10px; border-top: 4px solid var(--accent); }
.pair.cards .cell:nth-child(2) { border-top-color: var(--primary); }
.pair .blk-h { margin-top: 8px !important; }

/* Photos */
.ph { margin: 0 0 12px; }
.ph-frame { width: 100%; overflow: hidden; border-radius: 10px; background: var(--soft); }
.ph-frame img { width: 100%; height: 100%; object-fit: cover; display: block; transform-origin: center; }
.ph-frame.round { border-radius: 50% !important; } /* a round portrait stays round in every template */
.ph figcaption { font-size: .82em; color: #5d6a70; margin-top: 4px; text-align: center; font-style: italic; }
.ph-single { margin: 4px auto 12px; }
.ph-single.size-small { width: 42%; }
.ph-single.size-medium { width: 66%; }
.ph-single.size-large { width: 86%; }
.ph-single.size-full { width: 100%; }
.ph-single .ph-frame { max-height: 6.2in; }
.ph-row { display: grid; gap: 12px; margin-bottom: 4px; }
.ph-row.cols-2 { grid-template-columns: 1fr 1fr; }
.ph-row.cols-3 { grid-template-columns: 1fr 1fr 1fr; }
.ph-row.cols-1 { grid-template-columns: 1fr 1fr; }
.ph-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; margin-bottom: 8px; }
.ph-grid .ph { margin: 0; }
.ph-collage { display: grid; grid-template-columns: 1.4fr 1fr; gap: 10px; margin-bottom: 12px; }
.ph-collage.n0 { grid-template-columns: 1fr; }
.ph-collage .small { display: grid; gap: 10px; grid-template-columns: 1fr 1fr; align-content: start; }
.ph-collage.n1 .small, .ph-collage.n2 .small { grid-template-columns: 1fr; }
.ph-collage .ph { margin: 0; }
.ph-side { display: grid; grid-template-columns: 38% 1fr; gap: 18px; align-items: center; margin-bottom: 12px; }
.ph-bg { position: relative; margin-bottom: 12px; border-radius: 12px; overflow: hidden; }
.ph-bg .ph-frame { border-radius: 0; }
.ph-bg-text { position: absolute; left: 0; right: 0; bottom: 0; padding: 18px 22px; background: linear-gradient(transparent, rgba(0,0,0,.72)); color: #fff; font-size: 1.15em; font-family: var(--head-font); }
.ph-bg-text p { margin: 0; }
.ph-fullpage { position: absolute; inset: 0; }
.ph-fullpage .ph-frame { height: 100%; aspect-ratio: auto !important; border-radius: 0; }
.ph-full-cap { position: absolute; left: 0; right: 0; bottom: 0; padding: 28px 48px; color: #fff; background: linear-gradient(transparent, rgba(0,0,0,.7)); font-family: var(--head-font); font-size: 18pt; }
.ph-text { font-size: .95em; }
.hero { margin-bottom: 14px; }
.hero .ph-frame { border-radius: 16px; }
.side-layout { display: grid; grid-template-columns: 36% 1fr; gap: 20px; margin-bottom: 10px; align-items: start; }
.side-layout .blk-h:first-child { margin-top: 0 !important; }

/* Goals */
.goal-card { border-left: 5px solid var(--accent); background: var(--soft); padding: 10px 16px 4px 18px; position: relative; }
.goal-card.g-top { border-radius: 0 14px 0 0; padding-top: 14px; margin-top: 10px; }
.goal-card.g-end { border-radius: 0 0 14px 0; margin-bottom: 14px; padding-bottom: 10px; }
.goal-card.g-top.g-end { border-radius: 0 14px 14px 0; }
.goal-card.plain { background: transparent; }
.g-num { position: absolute; left: -17px; top: 12px; width: 30px; height: 30px; border-radius: 50%; background: var(--primary); color: #fff; display: grid; place-items: center; font-weight: 700; font-size: 10.5pt; }
.g-head { display: flex; align-items: baseline; justify-content: space-between; gap: 10px; margin: 0 0 6px 6px; }
.g-head h3 { font-size: calc(15pt * var(--scale)); }
.g-date { font-size: .8em; background: #fff; border-radius: 20px; padding: 2px 10px; color: var(--primary); white-space: nowrap; }
.g-photo { float: right; width: 120px; margin: 0 0 8px 12px; }
.g-field { margin: 0 0 8px 6px; }
.g-label { font-size: .78em; text-transform: uppercase; letter-spacing: .06em; color: var(--primary); font-weight: 700; margin-bottom: 1px; }
.g-val p { margin: 0 0 .3em; }
.g-steps { margin: 2px 0 4px; padding-left: 1.3em; }
.chips { display: inline-flex; flex-wrap: wrap; gap: 6px; }
.chip { background: #fff; border: 1.5px solid var(--accent); color: var(--ink); border-radius: 20px; padding: 1px 10px; font-size: .85em; }

/* Life-area goals (SDP plan layout) */
.goal-list { margin: 0 0 6px; padding-left: 1.6em; }
.goal-list li { margin: 0 0 .35em; padding-left: .2em; }
.goal-list li::marker { color: var(--primary); font-weight: 700; }
.goal-list strong { color: var(--primary); }
.la-goal { margin-top: 16px; }
.la-head { display: flex; align-items: baseline; gap: 10px; flex-wrap: wrap; background: var(--primary); color: #fff; padding: 8px 14px; border-radius: 8px 8px 0 0; }
.la-head h3 { color: #fff; font-size: calc(14.5pt * var(--scale)); }
.la-kicker { font-size: .72em; text-transform: uppercase; letter-spacing: .1em; opacity: .85; }
.la-title { font-size: .9em; opacity: .9; }
.la-head .g-date { margin-left: auto; }
.la-goal .g-photo { margin-top: 10px; }
.la-goal.has-photo { display: flow-root; }
.la-goal.has-photo .g-photo { float: right; width: 112px; margin: 8px 0 8px 10px; }
.la-goal.has-photo .la-tbl { width: calc(100% - 122px); border-top: 1px solid #d9dfdb; margin-top: 8px; }
.la-tbl { width: 100%; border-collapse: collapse; margin: 0 0 10px; border: 1px solid #d9dfdb; border-top: 0; }
.la-tbl th { width: 31%; text-align: left; vertical-align: top; background: var(--soft); color: var(--primary); padding: 7px 10px; font-weight: 600; font-size: .92em; }
.la-tbl td { padding: 7px 10px; vertical-align: top; border-left: 1px solid #d9dfdb; }
.la-tbl tr + tr th, .la-tbl tr + tr td { border-top: 1px solid #d9dfdb; }
.la-tbl td p { margin: 0 0 .35em; }
.la-actions th:nth-child(2), .la-actions td:nth-child(2) { width: 30%; }
.la-actions th:nth-child(3), .la-actions td:nth-child(3) { width: 18%; }
.la-needs th:nth-child(2), .la-needs td:nth-child(2) { width: 30%; }
.th-sub { display: block; font-weight: 400; font-size: .78em; opacity: .85; }
.la-extra { margin: -2px 0 6px; }
.blk-note { font-style: italic; color: #5d6a70; font-size: .9em; margin-top: -2px !important; }
.kv { margin: 0 0 .35em !important; }
.kv strong { color: var(--primary); }
.pr-goal { display: block !important; line-height: 1.35; }
.pr-goal span { font-family: var(--body-font); font-weight: 500; color: var(--ink); font-size: .9em; }
/* Sections follow one another on the page; space above a title, except at the top of a page. */
.sec-head { margin-top: 22px; }
.pg-body > .flow-item:first-child .sec-head { margin-top: 0; }
.cover .cv-year { font-size: 14pt; margin-top: 6px; font-weight: 600; letter-spacing: .02em; }

/* Supports */
.support-card { border: 1.5px solid var(--accent); border-radius: 12px; padding: 10px 16px; margin-bottom: 12px; background: #fff; }
.support-card.plain { border: 0; border-bottom: 1px solid #dde3e0; border-radius: 0; padding: 6px 0 10px; }
.support-card h3 { font-size: calc(13.5pt * var(--scale)); margin-bottom: 4px; }
.s-row { display: grid; grid-template-columns: 9.5em 1fr; gap: 10px; font-size: .93em; margin-top: 3px; }
.s-label { color: var(--primary); font-weight: 600; }

/* Circle of support */
.circle-wrap { width: 76%; margin: 0 auto 10px; }
.circle-svg { width: 100%; height: auto; display: block; font-family: var(--body-font); }
.circle-svg .ring-label { font-size: 12px; font-weight: 600; }
.circle-svg .p-name { font-size: 12.5px; font-weight: 600; fill: #1d2a24; }
.circle-svg .p-rel { font-size: 10px; fill: #5d6a70; }
.circle-svg .center-name { font-size: 15px; font-weight: 700; fill: var(--primary); font-family: var(--head-font); }
.circle-svg .center-name.light { fill: #fff; }
.c-list { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; margin-bottom: 10px; }
.c-title { font-weight: 700; color: var(--primary); margin-bottom: 4px; }
.c-people { margin: 0; padding-left: 1.1em; font-size: .93em; }
.c-role { font-size: .9em; color: #5d6a70; }

/* Schedule */
.cal { font-size: 8pt; }
.cal-head { display: grid; grid-template-columns: 44px repeat(7, 1fr); text-align: center; font-weight: 700; color: #fff; }
.cal-head div { background: var(--primary); padding: 4px 0; }
.cal-head div:first-child { background: transparent; }
.cal-body { display: grid; grid-template-columns: 44px repeat(7, 1fr); }
.cal-times div { font-size: 7.5pt; color: #6b7377; text-align: right; padding-right: 5px; border-top: 1px solid #e3e7e4; box-sizing: border-box; }
.cal-day { position: relative; border-left: 1px solid #e3e7e4; background-image: repeating-linear-gradient(to bottom, #e3e7e4 0 1px, transparent 1px calc(var(--rowh) * 2)); }
.cal-act { position: absolute; left: 2px; right: 2px; border-radius: 4px; color: #fff; padding: 2px 4px; overflow: hidden; line-height: 1.15; text-shadow: 0 1px 1px rgba(0,0,0,.25); }
.cal-act strong { display: block; font-size: 7.8pt; }
.cal-act span { display: block; font-size: 7pt; opacity: .95; }
.sched-simple { display: grid; grid-template-columns: repeat(7, 1fr); gap: 8px; margin-bottom: 12px; }
.ss-name { background: var(--primary); color: #fff; text-align: center; font-weight: 700; border-radius: 8px 8px 0 0; padding: 4px; }
.ss-act { border-left: 4px solid; border-radius: 4px; padding: 4px 6px; margin-top: 6px; font-size: 8.5pt; line-height: 1.25; }
.ss-act strong, .ss-act span { display: block; }
.ss-free { text-align: center; color: #999; padding: 8px; }
.cat-totals { display: flex; flex-wrap: wrap; gap: 6px; font-size: .82em; margin-bottom: 10px; }
.cat-pill { background: var(--soft); border-radius: 20px; padding: 2px 10px; }
.cat-pill.cat-unmet { background: #fde2e1; }
.cat-pill.cat-two { background: #e8e4ff; }
.cal-act.two { box-shadow: inset 0 0 0 1.5px rgba(255,255,255,.85); }
.cal-act.two strong { font-size: 7pt; }
.sched-note { font-size: .88em; background: var(--soft); border-left: 4px solid var(--accent); padding: 6px 10px; border-radius: 0 6px 6px 0; margin: 0 0 8px !important; }
.sched-period { margin-top: 4px !important; }

/* Table of contents */
.toc { padding-top: 6px; }
.toc-title { font-size: calc(30pt * var(--scale)); margin-bottom: 22px !important; padding-bottom: 10px; border-bottom: 3px solid var(--accent); }
.toc-list { list-style: none; margin: 0; padding: 0; }
.toc-list li { display: flex; align-items: center; gap: 12px; padding: 9px 0; font-size: calc(13.5pt * var(--scale)); }
.toc-ico { color: var(--accent); display: inline-flex; flex: none; }
.toc-name { font-family: var(--head-font); font-weight: var(--head-weight); color: var(--primary); }
.toc-dots { flex: 1; border-bottom: 2px dotted var(--accent); opacity: .55; transform: translateY(4px); min-width: 20px; }
.toc-pg { font-variant-numeric: tabular-nums; min-width: 2ch; text-align: right; font-weight: 600; }
.tpl-colorful .toc-list li { background: var(--soft); border-radius: 30px; padding: 9px 18px; margin-bottom: 8px; }
.tpl-portfolio .toc-title { border-bottom: 0; background: var(--primary); color: #fff; padding: 12px 16px; }
.tpl-easyread .toc-list li { padding: 12px 0; }
.tpl-easyread .toc-ico { width: 40px; height: 40px; border-radius: 10px; background: var(--soft); display: grid; place-items: center; }

/* Divider pages */
.divider-page { position: absolute; inset: 0; background: var(--primary); color: #fff; display: flex; flex-direction: column; justify-content: flex-end; padding: 1.1in 0.9in; }
.dv-num { font-family: var(--head-font); font-size: 110pt; line-height: 1; opacity: .25; }
.dv-ico { color: var(--accent); margin: 10px 0; }
.divider-page .dv-title { color: #fff; font-size: 40pt; }

/* Cover */
.cover { position: absolute; inset: 0; display: flex; flex-direction: column; background: var(--paper); }
.cover .cv-name { font-family: var(--head-font); font-weight: var(--head-weight); color: var(--primary); font-size: calc(40pt * var(--scale)); line-height: 1.05; }
.cover .cv-title { font-size: calc(16pt * var(--scale)); letter-spacing: .04em; color: var(--ink); margin-top: 8px; }
.cover .cv-sub { font-size: 13pt; color: #5d6a70; margin-top: 6px; font-style: italic; }
.cover .cv-date { font-size: 11pt; color: #5d6a70; margin-top: 18px; }
.cover .cv-logo { position: absolute; right: .6in; bottom: .5in; max-width: 1.4in; max-height: .8in; }
.cv-photo-top .cv-top { padding: .6in .6in 0; }
.cv-photo-top .cv-top .ph-frame { border-radius: 18px; }
.cv-photo-top .cv-text { padding: .45in .8in; }
.cv-photo-top .cv-deco { height: 10px; margin: .4in .8in 0; width: 2.2in; background: var(--accent); border-radius: 6px; }
.cv-circle { align-items: center; justify-content: center; text-align: center; padding: 0 .8in; }
.cv-circle .cv-portrait { width: 4.4in; padding: 0; margin-bottom: .45in; }
.cv-circle .cv-portrait .ph-frame { border: 10px solid var(--soft); box-shadow: 0 0 0 4px var(--accent); }
.cv-circle .cv-deco { position: absolute; top: 0; left: 0; right: 0; height: 1.1in; background: var(--soft); border-bottom: 6px solid var(--accent); }
.cv-split { flex-direction: row; }
.cv-split .cv-panel { width: 48%; background: var(--primary); color: #fff; padding: 1.1in .6in; display: flex; flex-direction: column; justify-content: center; position: relative; overflow: hidden; }
.cv-split .cv-panel .cv-name, .cv-split .cv-panel .cv-title, .cv-split .cv-panel .cv-date, .cv-split .cv-panel .cv-sub { color: #fff; }
.cv-split .cv-title { text-transform: uppercase; font-size: 12pt; margin: 0 0 14px; opacity: .9; }
.cv-split .cv-deco { position: absolute; width: 3.2in; height: 3.2in; border-radius: 50%; background: var(--accent); opacity: .35; right: -1.3in; top: -1.1in; }
.cv-split .cv-photo { flex: 1; }
.cv-split .cv-photo .ph-frame { height: 100%; aspect-ratio: auto !important; border-radius: 0; }
.cv-full .cv-bgimg { position: absolute; inset: 0; height: 100%; aspect-ratio: auto !important; border-radius: 0; }
.cv-full .cv-band { position: absolute; left: 0; right: 0; bottom: 0; padding: .6in .7in .7in; background: linear-gradient(transparent, rgba(0,0,0,.78) 30%); }
.cv-full .cv-band .cv-name, .cv-full .cv-band .cv-title, .cv-full .cv-band .cv-date, .cv-full .cv-band .cv-sub, .cv-full .cv-band .cv-year { color: #fff; }
.cv-minimal { justify-content: center; }
.cv-minimal .cv-min { padding: 0 1in; }
.cv-minimal .cv-title { text-transform: uppercase; letter-spacing: .2em; font-size: 12pt; margin: 0 0 18px; color: var(--accent); }
.cv-minimal .cv-name { font-size: calc(54pt * var(--scale)); }
.cv-minimal .cv-deco { position: absolute; left: 0; top: 0; bottom: 0; width: .45in; background: var(--accent); }

/* Sideways (landscape) pages are wider but shorter: keep tall pieces within the page. */
.landscape .toc-list { columns: 2; column-gap: 40px; }
.landscape .toc-list li { break-inside: avoid; }
.landscape .circle-wrap { width: 54%; }
.landscape .ph-collage, .landscape .ph-grid { width: 74%; margin-left: auto; margin-right: auto; }
.landscape .ph-single.size-medium { width: 46%; }
.landscape .ph-single.size-large { width: 60%; }
.landscape .ph-single.size-full { width: 78%; }
.landscape .ph-row.cols-2 { width: 80%; margin-left: auto; margin-right: auto; }

/* Covers on sideways (landscape) pages */
.page.landscape .cv-photo-top { flex-direction: row; align-items: center; }
.page.landscape .cv-photo-top .cv-top { width: 52%; padding: .6in 0 .6in .6in; }
.page.landscape .cv-photo-top .cv-deco { position: absolute; left: calc(52% + .6in); top: 2.2in; margin: 0; }
.page.landscape .cv-photo-top .cv-text { flex: 1; padding: .6in; }
.page.landscape .cv-circle .cv-portrait { width: 3.3in; margin-bottom: .3in; }
.page.landscape .cv-circle .cv-deco { height: .8in; }

/* ---------- template personalities ---------- */
/* Clean and Simple: quiet headings with a thin rule. */
.tpl-clean .sec-head { border-bottom-width: 1.5px; }
.tpl-clean .sec-head h2 { font-size: calc(22pt * var(--scale)); }

/* Colorful and Creative: rounded shapes and tinted pages. */
.tpl-colorful .sec-head { border-bottom: 0; background: var(--soft); border-radius: 40px; padding: 10px 18px; }
.tpl-colorful .sec-head .sec-ico { background: var(--accent); color: #fff; border-radius: 50%; padding: 7px; }
.tpl-colorful .blk-h { color: var(--primary); }
.tpl-colorful .blk-h::before { content: ''; width: 12px; height: 12px; border-radius: 50%; background: var(--accent); flex: none; }
.tpl-colorful .ph-frame { border-radius: 22px; }
.tpl-colorful .pair.cards .cell { border-top: 0; border-radius: 22px; }
.tpl-colorful .pair.cards .cell:nth-child(2) { background: var(--soft); border: 2px solid var(--accent); }

/* Photo Story: photos lead; text is short and airy. */
.tpl-story .sec-head { border-bottom: 0; flex-direction: column; align-items: flex-start; gap: 2px; }
.tpl-story .sec-head .sec-ico { display: none; }
.tpl-story .sec-head h2 { font-size: calc(30pt * var(--scale)); }
.tpl-story .sec-head::after { content: ''; width: 70px; height: 4px; background: var(--accent); margin-top: 8px; }
.tpl-story .ph-frame { border-radius: 4px; }
.tpl-story .ph figcaption { text-align: left; border-left: 3px solid var(--accent); padding-left: 8px; }

/* Modern Portfolio: magazine headings. */
.tpl-portfolio .blk-h { text-transform: uppercase; letter-spacing: .08em; font-size: calc(11pt * var(--scale)); color: var(--primary); border-bottom: 1px solid #d9d4c9; padding-bottom: 4px; }
.tpl-portfolio .ph-frame { border-radius: 0; }
.tpl-portfolio .pair.cards .cell { border-radius: 0; border-top-width: 6px; background: transparent; padding-left: 0; }

/* Easy Read: big text, an icon beside each heading, generous spacing, strong contrast. */
.tpl-easyread { --lh: 1.6; }
.tpl-easyread .sec-head { border-bottom-width: 5px; }
.tpl-easyread .blk-h { font-size: calc(15pt * var(--scale)); margin-top: 18px !important; }
.tpl-easyread .er-ico { display: inline-grid; place-items: center; width: 46px; height: 46px; border-radius: 12px; background: var(--soft); color: var(--accent); flex: none; }
.tpl-easyread p, .tpl-easyread li { max-width: 34em; }
.tpl-easyread ul.bullets li { margin-bottom: .45em; }
.hc .tbl td { border-bottom-color: #555; }
.hc .ph figcaption, .hc .c-role, .hc .muted { color: #222; }

/* Business: a formal report. Accent bar, small-caps labels, crisp rules, square photos. */
.tpl-business .sec-head { border-bottom: 1px solid #c9ced8; border-left: 6px solid var(--accent); padding: 6px 0 8px 14px; }
.tpl-business .sec-head .sec-ico { display: none; }
.tpl-business .sec-head h2 { font-size: calc(21pt * var(--scale)); letter-spacing: -.01em; }
.tpl-business .blk-h { text-transform: uppercase; letter-spacing: .08em; font-size: calc(10.5pt * var(--scale)); color: var(--primary); border-bottom: 1px solid #dfe3ea; padding-bottom: 3px; }
.tpl-business .pr-goal span { text-transform: none; letter-spacing: 0; font-size: 1.2em; }
.tpl-business .ph-frame, .tpl-business .hero .ph-frame { border-radius: 2px; }
.tpl-business ul.bullets li::marker { content: '■  '; font-size: .7em; }
.tpl-business .la-head { border-radius: 0; }
.tpl-business .quote { border-radius: 0; background: transparent; border-left-width: 3px; font-style: italic; }
.tpl-business .toc-title { border-bottom: 1px solid #c9ced8; }
.tpl-business .cv-minimal .cv-deco { width: .25in; background: var(--primary); }
.tpl-business .cv-minimal .cv-min::after { content: ''; display: block; width: 1.6in; height: 4px; background: var(--accent); margin-top: 24px; }

/* Comic Book: black outlines, halftone dots, caption boxes, speech-bubble quotes. */
.tpl-comic { --line: #111; }
.tpl-comic .sec-head { border: 3px solid var(--line); border-radius: 0; padding: 8px 14px; box-shadow: 5px 5px 0 var(--line); margin-right: 6px;
  background-color: var(--accent); background-image: radial-gradient(rgba(0,0,0,.18) 1.3px, transparent 1.6px); background-size: 9px 9px; }
.tpl-comic .sec-head h2 { color: var(--line); font-size: calc(30pt * var(--scale)); letter-spacing: .03em; text-shadow: 2px 2px 0 #fff; }
.tpl-comic .sec-head .sec-ico { color: var(--primary); background: #fff; border: 2px solid var(--line); border-radius: 50%; padding: 5px; }
.tpl-comic .blk-h { display: inline-flex !important; background: var(--primary); color: #fff; border: 2px solid var(--line); padding: 3px 10px; font-family: var(--head-font); letter-spacing: .05em; font-size: calc(15pt * var(--scale)); box-shadow: 3px 3px 0 var(--line); }
.tpl-comic .ph-frame { border: 3px solid var(--line); border-radius: 0; box-shadow: 4px 4px 0 var(--line); }
.tpl-comic .ph figcaption { font-family: var(--head-font); font-style: normal; letter-spacing: .05em; color: var(--line); }
.tpl-comic .pair.cards .cell { background: #fff; border: 3px solid var(--line); border-radius: 0; box-shadow: 4px 4px 0 var(--line); }
.tpl-comic .quote { position: relative; background: #fff; border: 3px solid var(--line); border-radius: 26px; color: var(--line); font-family: var(--head-font); letter-spacing: .03em; margin-bottom: 26px; }
.tpl-comic .quote::after { content: ''; position: absolute; left: 40px; bottom: -18px; border: 9px solid transparent; border-top: 14px solid var(--line); }
.tpl-comic .tbl th, .tpl-comic .la-head { background: var(--line); }
.tpl-comic .la-head { border-radius: 0; }
.tpl-comic .la-tbl, .tpl-comic .tbl { border: 2px solid var(--line); }
.tpl-comic .toc-list li { border-bottom: 2px dashed var(--line); }
.tpl-comic .cover { background-color: var(--accent); background-image: radial-gradient(rgba(215,38,61,.22) 2px, transparent 2.4px); background-size: 14px 14px; }
.tpl-comic .cover .cv-name { font-size: calc(58pt * var(--scale)); color: var(--primary); text-shadow: 4px 4px 0 var(--line); -webkit-text-stroke: 1px var(--line); letter-spacing: .03em; }
.tpl-comic .cover .cv-top .ph-frame { border-width: 5px; box-shadow: 8px 8px 0 var(--line); }

/* Flowers: blossoms in the page corners, centered elegant headings, vine divider. */
.tpl-flowers .page:not(.full) {
  background-image:
    url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='170' height='170' viewBox='0 0 170 170'%3E%3Cg opacity='.55'%3E%3Cpath d='M0 120 C40 110 70 80 90 30' stroke='%2393a97a' stroke-width='3' fill='none'/%3E%3Cg transform='translate(36 36)'%3E%3Ccircle cx='0' cy='-14' r='11' fill='%23f2b8c6'/%3E%3Ccircle cx='13' cy='-4' r='11' fill='%23f2b8c6'/%3E%3Ccircle cx='8' cy='12' r='11' fill='%23f2b8c6'/%3E%3Ccircle cx='-8' cy='12' r='11' fill='%23f2b8c6'/%3E%3Ccircle cx='-13' cy='-4' r='11' fill='%23f2b8c6'/%3E%3Ccircle r='7' fill='%23f6d36b'/%3E%3C/g%3E%3Cg transform='translate(86 22) scale(.65)'%3E%3Ccircle cx='0' cy='-14' r='11' fill='%23e89cae'/%3E%3Ccircle cx='13' cy='-4' r='11' fill='%23e89cae'/%3E%3Ccircle cx='8' cy='12' r='11' fill='%23e89cae'/%3E%3Ccircle cx='-8' cy='12' r='11' fill='%23e89cae'/%3E%3Ccircle cx='-13' cy='-4' r='11' fill='%23e89cae'/%3E%3Ccircle r='7' fill='%23f6d36b'/%3E%3C/g%3E%3Cellipse cx='62' cy='78' rx='14' ry='6' transform='rotate(-40 62 78)' fill='%23a3c48a'/%3E%3Cellipse cx='20' cy='100' rx='13' ry='5' transform='rotate(-15 20 100)' fill='%23a3c48a'/%3E%3C/g%3E%3C/svg%3E"),
    url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='170' height='170' viewBox='0 0 170 170'%3E%3Cg opacity='.55' transform='rotate(180 85 85)'%3E%3Cpath d='M0 120 C40 110 70 80 90 30' stroke='%2393a97a' stroke-width='3' fill='none'/%3E%3Cg transform='translate(36 36)'%3E%3Ccircle cx='0' cy='-14' r='11' fill='%23f2b8c6'/%3E%3Ccircle cx='13' cy='-4' r='11' fill='%23f2b8c6'/%3E%3Ccircle cx='8' cy='12' r='11' fill='%23f2b8c6'/%3E%3Ccircle cx='-8' cy='12' r='11' fill='%23f2b8c6'/%3E%3Ccircle cx='-13' cy='-4' r='11' fill='%23f2b8c6'/%3E%3Ccircle r='7' fill='%23f6d36b'/%3E%3C/g%3E%3Cellipse cx='62' cy='78' rx='14' ry='6' transform='rotate(-40 62 78)' fill='%23a3c48a'/%3E%3C/g%3E%3C/svg%3E");
  background-repeat: no-repeat; background-position: left top, right bottom; background-size: 1.6in 1.6in, 1.6in 1.6in;
}
.tpl-flowers .sec-head { flex-direction: column; gap: 4px; border-bottom: 0; text-align: center; }
.tpl-flowers .sec-head .sec-ico { display: none; }
.tpl-flowers .sec-head h2 { font-size: calc(28pt * var(--scale)); font-style: italic; }
.tpl-flowers .sec-head::after { content: '❀  ✿  ❀'; color: var(--accent); letter-spacing: .3em; font-size: 12pt; }
.tpl-flowers .blk-h { font-style: italic; font-size: calc(16pt * var(--scale)); }
.tpl-flowers .blk-h::before { content: '✿'; color: var(--accent); font-style: normal; font-size: .8em; }
.tpl-flowers ul.bullets li::marker { content: '❀  '; color: var(--accent); }
.tpl-flowers .ph-frame { border-radius: 50% 50% 18px 18px / 30% 30% 18px 18px; border: 4px solid var(--soft); }
.tpl-flowers .hero .ph-frame { border-radius: 24px; }
.tpl-flowers .quote { text-align: center; border-left: 0; border-top: 2px solid var(--accent); border-bottom: 2px solid var(--accent); border-radius: 0; background: transparent; font-style: italic; }
.tpl-flowers .la-head { border-radius: 18px 18px 0 0; }
.tpl-flowers .cover { background-color: var(--soft); }
.tpl-flowers .cv-circle .cv-deco { background: transparent; border: 0; height: 2in;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='120' height='60' viewBox='0 0 120 60'%3E%3Cg opacity='.7'%3E%3Cg transform='translate(30 30)'%3E%3Ccircle cx='0' cy='-11' r='9' fill='%23f2b8c6'/%3E%3Ccircle cx='10' cy='-3' r='9' fill='%23f2b8c6'/%3E%3Ccircle cx='6' cy='9' r='9' fill='%23f2b8c6'/%3E%3Ccircle cx='-6' cy='9' r='9' fill='%23f2b8c6'/%3E%3Ccircle cx='-10' cy='-3' r='9' fill='%23f2b8c6'/%3E%3Ccircle r='5' fill='%23f6d36b'/%3E%3C/g%3E%3Cellipse cx='75' cy='38' rx='12' ry='5' transform='rotate(-25 75 38)' fill='%23a3c48a'/%3E%3C/g%3E%3C/svg%3E");
  background-size: 1.2in .6in; background-repeat: repeat-x; }
.tpl-flowers .cover .cv-name { font-style: italic; }

/* Anime: gradient banners, sparkles, rounded shapes and bright pastel accents. */
.tpl-anime .sec-head { border-bottom: 0; border-radius: 18px; padding: 10px 18px; background: linear-gradient(100deg, var(--primary), var(--accent)); }
.tpl-anime .sec-head h2, .tpl-anime .sec-head .sec-ico { color: #fff; }
.tpl-anime .sec-head::after { content: '✦ ✧ ✦'; margin-left: auto; color: #fff; letter-spacing: .2em; font-size: 12pt; opacity: .9; }
.tpl-anime .blk-h::before { content: '✦'; color: var(--accent); font-size: .9em; }
.tpl-anime ul.bullets li::marker { content: '★ '; color: var(--accent); font-size: .85em; }
.tpl-anime .ph-frame { border-radius: 20px; border: 3px solid #fff; box-shadow: 0 0 0 3px var(--accent); }
.tpl-anime .pair.cards .cell { border-radius: 20px; border-top: 0; background: linear-gradient(180deg, var(--soft), #fff); box-shadow: inset 0 0 0 2px var(--soft); }
.tpl-anime .quote { border-left: 0; border-radius: 24px; background: linear-gradient(100deg, var(--soft), #ffe9f4); position: relative; }
.tpl-anime .quote::before { content: '✧'; position: absolute; right: 14px; top: 6px; color: var(--accent); }
.tpl-anime .la-head { background: linear-gradient(100deg, var(--primary), var(--accent)); border-radius: 16px 16px 0 0; }
.tpl-anime .tbl th { background: var(--primary); }
.tpl-anime .toc-list li { background: var(--soft); border-radius: 30px; padding: 8px 16px; margin-bottom: 8px; }
.tpl-anime .cv-split .cv-panel { background: linear-gradient(160deg, var(--primary), var(--accent)); }
.tpl-anime .cv-split .cv-deco { background: #fff; opacity: .25; }
.tpl-anime .cv-split .cv-panel::after { content: '✦  ✧  ✦'; position: absolute; left: .6in; bottom: .7in; color: #fff; font-size: 20pt; letter-spacing: .3em; opacity: .85; }

/* Sports: slanted team banners, athletic headings, stripes. */
.tpl-sports .sec-head { border-bottom: 0; background: var(--primary); padding: 8px 22px; transform: skewX(-10deg); margin-left: 8px; margin-right: 8px; box-shadow: 6px 0 0 var(--accent); }
.tpl-sports .sec-head > * { transform: skewX(10deg); }
.tpl-sports .sec-head h2, .tpl-sports .sec-head .sec-ico { color: #fff; }
.tpl-sports .sec-head h2 { text-transform: uppercase; letter-spacing: .04em; font-size: calc(24pt * var(--scale)); }
.tpl-sports .blk-h { text-transform: uppercase; letter-spacing: .05em; border-left: 6px solid var(--accent); padding-left: 8px; }
.tpl-sports ul.bullets li::marker { content: '▶ '; color: var(--accent); font-size: .7em; }
.tpl-sports .ph-frame { border-radius: 4px; border-bottom: 5px solid var(--accent); }
.tpl-sports .la-head { border-radius: 0; background: var(--primary); border-bottom: 4px solid var(--accent); }
.tpl-sports .tbl th { background: var(--primary); text-transform: uppercase; letter-spacing: .04em; font-size: .85em; }
.tpl-sports .toc-list li { border-bottom: 2px solid var(--soft); }
.tpl-sports .toc-name { text-transform: uppercase; letter-spacing: .03em; }
.tpl-sports .cv-split .cv-panel { background: repeating-linear-gradient(-55deg, var(--primary) 0 40px, #123f8c 40px 52px); }
.tpl-sports .cv-split .cv-deco { border-radius: 0; background: var(--accent); opacity: 1; width: 100%; height: .35in; top: auto; bottom: 1.2in; right: 0; }
.tpl-sports .cover .cv-name { text-transform: uppercase; letter-spacing: .03em; font-size: calc(46pt * var(--scale)); }

/* Outdoors: mountain ridges at the foot of each page and under section titles. */
.tpl-outdoors .page:not(.full) {
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='816' height='120' viewBox='0 0 816 120' preserveAspectRatio='none'%3E%3Cpath d='M0 120 L0 70 L90 30 L160 75 L250 15 L340 80 L430 40 L520 85 L610 25 L700 70 L816 45 L816 120Z' fill='%23dfe8d6'/%3E%3Cpath d='M0 120 L0 95 L120 60 L210 100 L330 65 L450 105 L560 70 L690 100 L816 80 L816 120Z' fill='%23c7d6b9'/%3E%3C/svg%3E");
  background-repeat: no-repeat; background-position: bottom center; background-size: 100% .9in;
}
.tpl-outdoors .sec-head { border-bottom: 0; padding-bottom: 18px;
  background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='400' height='14' viewBox='0 0 400 14' preserveAspectRatio='none'%3E%3Cpath d='M0 14 L40 4 L70 11 L110 1 L150 12 L200 3 L240 11 L290 2 L330 12 L370 5 L400 10 L400 14Z' fill='%232f5d3a'/%3E%3C/svg%3E") left bottom / 100% 12px no-repeat; }
.tpl-outdoors .blk-h::before { content: '▲'; color: var(--accent); font-size: .6em; }
.tpl-outdoors ul.bullets li::marker { content: '◆ '; color: var(--accent); font-size: .7em; }
.tpl-outdoors .ph-frame { border-radius: 6px; border: 5px solid #fff; box-shadow: 0 1px 4px rgba(0,0,0,.25); }
.tpl-outdoors .la-head { background: var(--primary); border-radius: 6px 6px 0 0; }
.tpl-outdoors .cv-photo-top .cv-deco { width: auto; height: .5in; margin: .3in .8in 0; border-radius: 0; background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='400' height='40' viewBox='0 0 400 40' preserveAspectRatio='none'%3E%3Cpath d='M0 40 L50 12 L90 30 L150 4 L210 32 L260 10 L320 30 L370 14 L400 26 L400 40Z' fill='%232f5d3a'/%3E%3C/svg%3E") center / 100% 100% no-repeat; }

/* Space: starry navy banners and cover, planets, futuristic headings. Pages stay white for printing. */
.tpl-space { --stars: radial-gradient(1.2px 1.2px at 12% 30%, #fff 50%, transparent 51%), radial-gradient(1px 1px at 28% 70%, #fff 50%, transparent 51%), radial-gradient(1.6px 1.6px at 45% 22%, #fff 50%, transparent 51%), radial-gradient(1px 1px at 63% 58%, #fff 50%, transparent 51%), radial-gradient(1.4px 1.4px at 81% 35%, #fff 50%, transparent 51%), radial-gradient(1px 1px at 92% 75%, #fff 50%, transparent 51%); }
.tpl-space .sec-head { border-bottom: 0; border-radius: 12px; padding: 10px 18px; background: var(--stars), linear-gradient(100deg, #0d1033, var(--primary) 60%, #3b2f8f); }
.tpl-space .sec-head h2, .tpl-space .sec-head .sec-ico { color: #fff; }
.tpl-space .sec-head h2 { letter-spacing: .06em; font-size: calc(19pt * var(--scale)); }
.tpl-space .sec-head::after { content: ''; margin-left: auto; width: 26px; height: 26px; border-radius: 50%; background: radial-gradient(circle at 35% 35%, #ffd27a, #e08a2e); box-shadow: 0 0 0 3px rgba(255,255,255,.25); }
.tpl-space .blk-h { letter-spacing: .04em; font-size: calc(11.5pt * var(--scale)); }
.tpl-space .blk-h::before { content: '★'; color: var(--accent); font-size: .85em; }
.tpl-space ul.bullets li::marker { content: '✦ '; color: var(--accent); font-size: .8em; }
.tpl-space .ph-frame { border-radius: 14px; box-shadow: 0 0 0 3px var(--primary), 0 0 0 6px var(--accent); }
.tpl-space .la-head { background: var(--stars), linear-gradient(100deg, #0d1033, var(--primary)); border-radius: 12px 12px 0 0; }
.tpl-space .tbl th { background: var(--primary); }
.tpl-space .cover { background: radial-gradient(circle at 80% 18%, #3b2f8f 0, transparent 40%), linear-gradient(170deg, #0d1033, var(--primary)); }
.tpl-space .cover::before { content: ''; position: absolute; inset: 0; background: var(--stars); background-size: 170px 170px; }
.tpl-space .cover > *:not(.cv-deco) { position: relative; z-index: 1; }
.tpl-space .cover .cv-name, .tpl-space .cover .cv-title, .tpl-space .cover .cv-date, .tpl-space .cover .cv-sub, .tpl-space .cover .cv-year { color: #fff; }
.tpl-space .cover .cv-name { letter-spacing: .05em; }
.tpl-space .cv-circle .cv-deco { background: radial-gradient(circle at 35% 35%, #ffd27a, #e08a2e); border: 0; width: 1.3in; height: 1.3in; border-radius: 50%; left: auto; right: .7in; top: .7in; box-shadow: 0 0 0 10px rgba(255,255,255,.08); }
.tpl-space .cv-circle .cv-portrait .ph-frame { border-color: #2a2f6b; box-shadow: 0 0 0 4px var(--accent); }

/* Music: staff lines behind section titles, notes, record-style portrait. */
.tpl-music .sec-head { border-bottom: 0; padding: 10px 0 12px;
  background: repeating-linear-gradient(to bottom, transparent 0 9px, #c9c3bd 9px 10px) left center / 100% 50px no-repeat; }
.tpl-music .sec-head h2 { background: var(--paper); padding: 0 12px 0 4px; font-size: calc(25pt * var(--scale)); }
.tpl-music .sec-head .sec-ico { background: var(--primary); color: #fff; border-radius: 50%; padding: 8px; box-shadow: 0 0 0 4px var(--paper), 0 0 0 6px var(--accent); }
.tpl-music .blk-h::before { content: '♪'; color: var(--accent); font-size: 1.1em; }
.tpl-music ul.bullets li::marker { content: '♫ '; color: var(--accent); }
.tpl-music .ph-frame { border-radius: 8px; }
.tpl-music .quote { border-left: 0; border-radius: 40px; background: var(--primary); color: #fff; padding-left: 70px; position: relative; }
.tpl-music .quote::before { content: ''; position: absolute; left: 16px; top: 50%; width: 38px; height: 38px; margin-top: -19px; border-radius: 50%; background: radial-gradient(circle, var(--accent) 0 5px, #111 6px 9px, #333 10px 11px, #111 12px 14px, #333 15px 16px, #111 17px); }
.tpl-music .quote cite { color: #ddd; }
.tpl-music .la-head { background: var(--primary); border-left: 8px solid var(--accent); border-radius: 0; }
.tpl-music .cover { background: var(--soft); }
.tpl-music .cv-circle .cv-portrait .ph-frame { border: 26px solid #151515; box-shadow: 0 0 0 2px #333, inset 0 0 0 2px #333, 0 0 0 8px var(--accent); }
.tpl-music .cv-circle .cv-deco { background: repeating-linear-gradient(to bottom, transparent 0 13px, #c9c3bd 13px 15px); border: 0; height: 1in; top: .6in; }

/* Retro (1970s): sunset stripes and big rounded script headings. */
.tpl-retro { --stripes: linear-gradient(to bottom, #f2a541 0 25%, #e9762b 25% 50%, #c4471a 50% 75%, #8a3b12 75% 100%); }
.tpl-retro .sec-head { border-bottom: 0; padding-bottom: 20px; background: var(--stripes) left bottom / 100% 14px no-repeat; }
.tpl-retro .sec-head h2 { font-size: calc(28pt * var(--scale)); color: var(--primary); }
.tpl-retro .sec-head .sec-ico { background: var(--accent); color: var(--primary); border-radius: 50%; padding: 7px; }
.tpl-retro .blk-h { color: #c4471a; }
.tpl-retro ul.bullets li::marker { content: '● '; color: #e9762b; font-size: .8em; }
.tpl-retro .ph-frame { border-radius: 26px; border: 4px solid var(--accent); }
.tpl-retro .pair.cards .cell { border-top: 0; border-radius: 22px; background: var(--soft); box-shadow: inset 0 6px 0 var(--accent); }
.tpl-retro .la-head { background: var(--primary); border-radius: 18px 18px 0 0; box-shadow: inset 0 -5px 0 var(--accent); }
.tpl-retro .tbl th { background: #c4471a; }
.tpl-retro .cv-minimal { background: var(--paper); }
.tpl-retro .cv-minimal .cv-deco { left: auto; right: 0; top: auto; bottom: 0; width: 100%; height: 1.6in; background: var(--stripes); }
.tpl-retro .cv-minimal .cv-title { color: #c4471a; }
.tpl-retro .cover .cv-name { font-size: calc(60pt * var(--scale)); color: var(--primary); }

/* Ocean: waves along titles and page bottoms, airy rounded headings. */
.tpl-ocean .page:not(.full) {
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='816' height='90' viewBox='0 0 816 90' preserveAspectRatio='none'%3E%3Cpath d='M0 40 C100 10 200 70 300 40 S500 10 600 40 S760 70 816 45 L816 90 L0 90Z' fill='%23d4eff1'/%3E%3Cpath d='M0 62 C120 40 220 85 340 62 S560 40 680 62 S790 80 816 70 L816 90 L0 90Z' fill='%23b3e2e6'/%3E%3C/svg%3E");
  background-repeat: no-repeat; background-position: bottom center; background-size: 100% .75in;
}
.tpl-ocean .sec-head { border-bottom: 0; padding-bottom: 16px;
  background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='120' height='12' viewBox='0 0 120 12'%3E%3Cpath d='M0 6 C15 0 30 12 45 6 S75 0 90 6 S110 12 120 6' stroke='%232ec4b6' stroke-width='3' fill='none'/%3E%3C/svg%3E") left bottom / 120px 12px repeat-x; }
.tpl-ocean .sec-head .sec-ico { background: var(--soft); border-radius: 50%; padding: 7px; }
.tpl-ocean .sec-head h2 { font-size: calc(25pt * var(--scale)); }
.tpl-ocean .blk-h::before { content: ''; width: 10px; height: 10px; border-radius: 50%; border: 2px solid var(--accent); flex: none; }
.tpl-ocean ul.bullets li::marker { content: '○ '; color: var(--accent); }
.tpl-ocean .ph-frame { border-radius: 22px; }
.tpl-ocean .quote { border-left: 0; border-radius: 22px; background: linear-gradient(100deg, var(--soft), #fff); }
.tpl-ocean .la-head { background: linear-gradient(100deg, var(--primary), #1a8fa8); border-radius: 16px 16px 0 0; }
.tpl-ocean .cv-full .cv-band { background: linear-gradient(transparent, rgba(11,93,122,.85) 35%); }
.tpl-ocean .cv-full .cv-band::before { content: ''; position: absolute; left: 0; right: 0; top: -40px; height: 60px; background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='816' height='60' viewBox='0 0 816 60' preserveAspectRatio='none'%3E%3Cpath d='M0 30 C100 0 200 60 300 30 S500 0 600 30 S760 60 816 35 L816 60 L0 60Z' fill='%23ffffff' fill-opacity='.35'/%3E%3C/svg%3E") center / 100% 100% no-repeat; }

/* Animals and Pets: paw prints, soft rounded shapes. */
.tpl-animals {
  --paw: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 60 60'%3E%3Cg fill='%23e0a458' fill-opacity='.3'%3E%3Cellipse cx='30' cy='39' rx='12' ry='10'/%3E%3Ccircle cx='15' cy='25' r='5.5'/%3E%3Ccircle cx='24' cy='15' r='5.5'/%3E%3Ccircle cx='36' cy='15' r='5.5'/%3E%3Ccircle cx='45' cy='25' r='5.5'/%3E%3C/g%3E%3C/svg%3E");
  --paw-solid: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 60 60'%3E%3Cg fill='%23e0a458'%3E%3Cellipse cx='30' cy='39' rx='12' ry='10'/%3E%3Ccircle cx='15' cy='25' r='5.5'/%3E%3Ccircle cx='24' cy='15' r='5.5'/%3E%3Ccircle cx='36' cy='15' r='5.5'/%3E%3Ccircle cx='45' cy='25' r='5.5'/%3E%3C/g%3E%3C/svg%3E");
}
.tpl-animals .page:not(.full) { background-image: var(--paw), var(--paw); background-repeat: no-repeat; background-position: right .35in bottom .3in, right .95in bottom .55in; background-size: .55in .55in, .42in .42in; }
.tpl-animals .sec-head { border-bottom: 0; background: var(--soft); border-radius: 30px; padding: 8px 18px; }
.tpl-animals .sec-head .sec-ico { background: var(--primary); color: #fff; border-radius: 50%; padding: 7px; }
.tpl-animals .blk-h::before { content: ''; width: 18px; height: 18px; flex: none; background: var(--paw-solid) center / contain no-repeat; }
.tpl-animals ul.bullets li::marker { content: '● '; color: var(--accent); font-size: .8em; }
.tpl-animals .ph-frame { border-radius: 24px; border: 4px solid var(--soft); }
.tpl-animals .pair.cards .cell { border: 2px dashed var(--accent); border-radius: 22px; background: #fff; }
.tpl-animals .quote { border-left: 0; border-radius: 24px; }
.tpl-animals .la-head { border-radius: 20px 20px 0 0; }
.tpl-animals .cover { background: var(--soft); }
.tpl-animals .cv-circle .cv-deco { border: 0; height: 1.1in; background: var(--paw) center .2in / .75in .75in repeat-x; }
.tpl-animals .cv-circle .cv-portrait .ph-frame { border-color: #fff; box-shadow: 0 0 0 5px var(--accent); }

/* Arcade: pixel headings, neon pink and cyan on deep purple, chunky square frames. */
.tpl-arcade { --cyan: #00d1ff; }
.tpl-arcade .sec-head { border-bottom: 0; background: var(--primary); padding: 12px 16px; margin-bottom: 24px; box-shadow: 0 4px 0 var(--accent), 0 8px 0 var(--cyan); }
.tpl-arcade .sec-head h2 { color: #fff; font-size: calc(15pt * var(--scale)); line-height: 1.5; text-shadow: 2px 2px 0 var(--accent); }
.tpl-arcade .sec-head .sec-ico { color: var(--cyan); }
.tpl-arcade .blk-h { font-size: calc(10pt * var(--scale)); line-height: 1.6; }
.tpl-arcade .blk-h::before { content: ''; width: 10px; height: 10px; flex: none; background: var(--accent); box-shadow: 10px 0 0 var(--cyan); margin-right: 10px; }
.tpl-arcade .g-head h3, .tpl-arcade .la-head h3, .tpl-arcade .support-card h3 { font-size: calc(10.5pt * var(--scale)); line-height: 1.6; }
.tpl-arcade ul.bullets li::marker { content: '▶ '; color: var(--accent); font-size: .75em; }
.tpl-arcade .ph-frame { border-radius: 0; border: 4px solid var(--primary); box-shadow: 4px 4px 0 var(--accent); }
.tpl-arcade .pair.cards .cell { border: 3px solid var(--primary); border-radius: 0; background: #fff; box-shadow: 4px 4px 0 var(--cyan); }
.tpl-arcade .quote { border: 3px dashed var(--accent); border-radius: 0; font-size: calc(10.5pt * var(--scale)); line-height: 1.7; }
.tpl-arcade .la-head { border-radius: 0; box-shadow: inset 0 -4px 0 var(--accent); }
.tpl-arcade .toc-title { font-size: calc(20pt * var(--scale)); line-height: 1.4; }
.tpl-arcade .toc-name { font-size: .7em; line-height: 1.6; }
.tpl-arcade .cover { background-color: var(--primary); background-image: linear-gradient(rgba(255,255,255,.07) 1px, transparent 1px), linear-gradient(90deg, rgba(255,255,255,.07) 1px, transparent 1px); background-size: 24px 24px; }
.tpl-arcade .cover .cv-name { color: #fff; font-size: calc(28pt * var(--scale)); line-height: 1.45; text-shadow: 4px 4px 0 var(--accent); }
.tpl-arcade .cover .cv-title { color: var(--cyan); }
.tpl-arcade .cover .cv-date, .tpl-arcade .cover .cv-sub, .tpl-arcade .cover .cv-year { color: #e6e0ff; }
.tpl-arcade .cv-minimal .cv-deco { background: repeating-linear-gradient(to bottom, var(--accent) 0 24px, var(--cyan) 24px 48px, #ffe14d 48px 72px); }
.tpl-arcade .cv-minimal .cv-min::after { content: '♥ ♥ ♥'; display: block; margin-top: 28px; color: var(--accent); font-size: 22pt; letter-spacing: .3em; }

/* Art Studio: watercolor washes, brush headings, gallery-matted photos. */
.tpl-artstudio .sec-head { border-bottom: 0; padding: 10px 18px 12px; background: radial-gradient(ellipse 60% 90% at 20% 50%, rgba(238,108,77,.28), transparent 70%), radial-gradient(ellipse 50% 80% at 55% 60%, rgba(61,90,128,.18), transparent 70%), radial-gradient(ellipse 40% 70% at 85% 40%, rgba(242,201,76,.28), transparent 70%); }
.tpl-artstudio .sec-head h2 { font-size: calc(30pt * var(--scale)); }
.tpl-artstudio .blk-h { font-family: var(--head-font); font-size: calc(18pt * var(--scale)); }
.tpl-artstudio .blk-h::after { content: ''; flex: 1; height: 6px; border-radius: 6px; background: linear-gradient(90deg, rgba(238,108,77,.6), rgba(242,201,76,.5), transparent); }
.tpl-artstudio ul.bullets li::marker { content: '● '; color: var(--accent); font-size: .8em; }
.tpl-artstudio .ph-frame { border-radius: 2px; border: 10px solid #fff; box-shadow: 0 0 0 1px #d8d2c8, 0 3px 8px rgba(0,0,0,.15); }
.tpl-artstudio .ph figcaption { font-style: normal; text-transform: uppercase; letter-spacing: .05em; font-size: .74em; }
.tpl-artstudio .pair.cards .cell { border-top: 0; border-radius: 18px 4px 18px 4px; background: radial-gradient(ellipse at 20% 0%, rgba(238,108,77,.16), transparent 60%), var(--soft); }
.tpl-artstudio .quote { border-left: 0; border-radius: 20px; font-size: calc(17pt * var(--scale)); background: radial-gradient(ellipse at 10% 50%, rgba(61,90,128,.15), transparent 70%), var(--soft); }
.tpl-artstudio .la-head { background: linear-gradient(100deg, var(--primary), #5b7fa8); border-radius: 14px 14px 0 0; }
.tpl-artstudio .cv-split .cv-panel { background: radial-gradient(circle at 25% 20%, rgba(238,108,77,.55), transparent 45%), radial-gradient(circle at 80% 78%, rgba(242,201,76,.45), transparent 40%), var(--primary); }
.tpl-artstudio .cv-split .cv-deco { background: #fff; opacity: .14; }
.tpl-artstudio .cv-split .cv-photo { padding: .5in; background: var(--soft); }
.tpl-artstudio .cv-split .cv-photo .ph-frame { border: 14px solid #fff; box-shadow: 0 4px 14px rgba(0,0,0,.2); }
.tpl-artstudio .cover .cv-name { font-size: calc(50pt * var(--scale)); }

/* Cars and Trucks: road bands with a dashed center line, checkered flags. */
.tpl-cars {
  --dash: linear-gradient(90deg, #ffd23f 0 50%, transparent 50%);
  --checker: linear-gradient(45deg, #111 25%, transparent 25%, transparent 75%, #111 75%), linear-gradient(45deg, #111 25%, #fff 25%, #fff 75%, #111 75%);
}
.tpl-cars .sec-head { border-bottom: 0; padding: 10px 16px 18px; background: var(--dash) left 0 bottom 6px / 36px 4px repeat-x, var(--primary); }
.tpl-cars .sec-head h2 { color: #fff; text-transform: uppercase; letter-spacing: .03em; font-size: calc(22pt * var(--scale)); }
.tpl-cars .sec-head .sec-ico { color: var(--accent); background: #fff; border-radius: 50%; padding: 6px; }
.tpl-cars .sec-head::after { content: ''; margin-left: auto; width: 33px; height: 22px; flex: none; background: var(--checker); background-size: 11px 11px; background-position: 0 0, 5.5px 5.5px; border: 1px solid #fff; }
.tpl-cars .blk-h { text-transform: uppercase; letter-spacing: .04em; border-left: 6px solid var(--accent); padding-left: 8px; }
.tpl-cars ul.bullets li::marker { content: '▸ '; color: var(--accent); }
.tpl-cars .pr-goal span, .tpl-travel .pr-goal span { text-transform: none; letter-spacing: 0; font-size: 1.1em; }
.tpl-cars .ph-frame { border-radius: 6px; border: 3px solid var(--primary); }
.tpl-cars .pair.cards .cell { border-top: 0; border-radius: 6px; background: var(--soft); box-shadow: inset 6px 0 0 var(--accent); }
.tpl-cars .la-head { border-radius: 0; padding-bottom: 14px; background: var(--dash) left 0 bottom 4px / 30px 3px repeat-x, var(--primary); }
.tpl-cars .tbl th { text-transform: uppercase; letter-spacing: .04em; font-size: .85em; }
.tpl-cars .cv-split .cv-panel { background: var(--dash) left 0 bottom 1.3in / 60px 8px repeat-x, var(--primary); }
.tpl-cars .cv-split .cv-deco { border-radius: 0; opacity: 1; width: 1.32in; height: .88in; right: .5in; top: .6in; background: var(--checker); background-size: 22px 22px; background-position: 0 0, 11px 11px; }
.tpl-cars .cover .cv-name { text-transform: uppercase; font-size: calc(44pt * var(--scale)); }

/* Movies and Theater: marquee lights, curtain-red cover, film-strip photos. */
.tpl-movies { --bulbs: radial-gradient(circle, #ffe9a8 0 2px, transparent 2.6px); }
.tpl-movies .sec-head { border-bottom: 0; justify-content: center; text-align: center; padding: 14px 18px; border-radius: 8px; background: var(--bulbs) left top / 14px 10px repeat-x, var(--bulbs) left bottom / 14px 10px repeat-x, var(--primary); box-shadow: 0 0 0 3px var(--accent); }
.tpl-movies .sec-head h2 { color: var(--accent); font-size: calc(24pt * var(--scale)); letter-spacing: .03em; }
.tpl-movies .sec-head .sec-ico { color: #ffe9a8; }
.tpl-movies .blk-h::before { content: '★'; color: var(--accent); }
.tpl-movies ul.bullets li::marker { content: '★ '; color: var(--accent); font-size: .8em; }
.tpl-movies .ph-frame { border-radius: 0; border: 12px solid #1a1a1a; border-left-width: 4px; border-right-width: 4px; outline: 2px dotted #fff; outline-offset: -8px; }
.tpl-movies .ph figcaption { font-style: normal; text-transform: uppercase; letter-spacing: .06em; font-size: .75em; }
.tpl-movies .pair.cards .cell { border-top: 0; border-radius: 6px; background: #fff; box-shadow: 0 0 0 2px var(--accent); }
.tpl-movies .quote { border-left: 0; border-radius: 6px; text-align: center; background: var(--primary); color: #fff; box-shadow: 0 0 0 3px var(--accent); }
.tpl-movies .quote cite { color: #f3dca0; }
.tpl-movies .la-head { border-radius: 6px 6px 0 0; box-shadow: inset 0 -4px 0 var(--accent); }
.tpl-movies .cv-minimal { background: repeating-linear-gradient(90deg, #5e0b15 0 18px, #8c1424 18px 32px, #6a0d18 32px 46px); }
.tpl-movies .cv-minimal .cv-deco { display: none; }
.tpl-movies .cv-minimal .cv-min { margin: 0 .7in; padding: .6in .5in; text-align: center; border-radius: 12px; border: 4px solid var(--accent); background: var(--bulbs) left top / 18px 14px repeat-x, var(--bulbs) left bottom / 18px 14px repeat-x, #1a1a1a; }
.tpl-movies .cover .cv-name { color: var(--accent); }
.tpl-movies .cv-minimal .cv-title { color: #ffe9a8; }
.tpl-movies .cover .cv-date, .tpl-movies .cover .cv-sub, .tpl-movies .cover .cv-year { color: #eadfc4; }

/* Travel: map-grid paper, passport stamps, tilted postcard photos. */
.tpl-travel { --grid: linear-gradient(rgba(15,82,87,.06) 1px, transparent 1px), linear-gradient(90deg, rgba(15,82,87,.06) 1px, transparent 1px); }
.tpl-travel .page:not(.full) { background-image: var(--grid); background-size: .5in .5in; }
.tpl-travel .sec-head { border-bottom: 2px dashed var(--accent); }
.tpl-travel .sec-head h2 { text-transform: uppercase; letter-spacing: .06em; font-size: calc(22pt * var(--scale)); }
.tpl-travel .sec-head .sec-ico { color: var(--accent); border: 2px solid var(--accent); border-radius: 50%; padding: 6px; transform: rotate(-12deg); }
.tpl-travel .sec-head::after { content: '✈'; margin-left: auto; color: var(--accent); font-size: 18pt; line-height: 1; }
.tpl-travel .blk-h { text-transform: uppercase; letter-spacing: .05em; font-size: calc(12pt * var(--scale)); }
.tpl-travel .blk-h::before { content: ''; width: 18px; border-top: 2px dashed var(--accent); flex: none; }
.tpl-travel ul.bullets li::marker { content: '➤ '; color: var(--accent); font-size: .8em; }
.tpl-travel .ph-frame { border-radius: 2px; border: 8px solid #fff; box-shadow: 0 2px 6px rgba(0,0,0,.2); }
.tpl-travel .ph:nth-child(odd) .ph-frame:not(.round) { transform: rotate(-1.4deg); }
.tpl-travel .ph:nth-child(even) .ph-frame:not(.round) { transform: rotate(1.4deg); }
.tpl-travel .pair.cards .cell { border: 2px dashed var(--primary); border-radius: 10px; background: #fff; }
.tpl-travel .quote { border: 3px double var(--accent); border-radius: 18px; background: rgba(255,255,255,.7); text-align: center; }
.tpl-travel .la-head { border-radius: 0; box-shadow: inset 0 -4px 0 var(--accent); }
.tpl-travel .cover { background-color: var(--soft); background-image: var(--grid); background-size: .5in .5in; }
.tpl-travel .cv-photo-top .cv-top .ph-frame { border: 12px solid #fff; border-radius: 2px; box-shadow: 0 4px 14px rgba(0,0,0,.2); transform: rotate(-1.5deg); }
.tpl-travel .cv-photo-top .cv-deco { position: absolute; right: .8in; bottom: 1in; margin: 0; width: 1.3in; height: 1.3in; border-radius: 50%; border: 4px double var(--accent); background: transparent; transform: rotate(-15deg); }
.tpl-travel .cv-photo-top .cv-deco::after { content: '✈'; display: grid; place-items: center; height: 100%; font-size: 34pt; color: var(--accent); }

/* Dinosaurs: friendly dinosaur silhouettes, spiky banners, big playful type. */
.tpl-dinosaurs {
  --dino: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 80 60'%3E%3Cpath d='M2 44 Q20 30 38 30 Q52 30 58 22 L64 8 Q68 2 74 6 Q78 10 72 12 L68 14 L66 30 Q66 42 58 44 L58 56 L52 56 L52 46 L36 46 L36 56 L30 56 L30 46 Q18 46 2 44Z' fill='%233a6b35' fill-opacity='.16'/%3E%3C/svg%3E");
  --dino-solid: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 80 60'%3E%3Cpath d='M2 44 Q20 30 38 30 Q52 30 58 22 L64 8 Q68 2 74 6 Q78 10 72 12 L68 14 L66 30 Q66 42 58 44 L58 56 L52 56 L52 46 L36 46 L36 56 L30 56 L30 46 Q18 46 2 44Z' fill='%23f2a900'/%3E%3C/svg%3E");
  --spikes: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='20' height='10' viewBox='0 0 20 10'%3E%3Cpath d='M0 10 L10 0 L20 10Z' fill='%23f2a900'/%3E%3C/svg%3E");
}
.tpl-dinosaurs .page:not(.full) { background-image: var(--dino); background-repeat: no-repeat; background-position: right .45in bottom .4in; background-size: 1.4in 1.05in; }
.tpl-dinosaurs .sec-head { border-bottom: 0; background: var(--primary); border-radius: 22px; padding: 8px 18px; margin-top: 30px; }
.tpl-dinosaurs .pg-body > .flow-item:first-child .sec-head { margin-top: 12px; }
.tpl-dinosaurs .sec-head::before { content: ''; position: absolute; left: 30px; right: 30px; top: -10px; height: 10px; background: var(--spikes) left bottom / 20px 10px repeat-x; }
.tpl-dinosaurs .sec-head h2 { color: #fff; font-size: calc(24pt * var(--scale)); letter-spacing: .03em; }
.tpl-dinosaurs .sec-head .sec-ico { color: var(--accent); }
.tpl-dinosaurs .blk-h::before { content: ''; width: 24px; height: 18px; flex: none; background: var(--dino-solid) center / contain no-repeat; }
.tpl-dinosaurs ul.bullets li::marker { content: '● '; color: var(--accent); font-size: .8em; }
.tpl-dinosaurs .ph-frame { border-radius: 20px; border: 4px solid var(--accent); }
.tpl-dinosaurs .pair.cards .cell { border-top: 0; border-radius: 20px; background: var(--soft); box-shadow: inset 0 0 0 2px #cfe3bf; }
.tpl-dinosaurs .la-head { border-radius: 18px 18px 0 0; }
.tpl-dinosaurs .cover { background: var(--soft); }
.tpl-dinosaurs .cv-circle .cv-deco { border: 0; height: 1.3in; background: var(--dino) center .15in / 1.5in 1.1in repeat-x; }
.tpl-dinosaurs .cover .cv-name { font-size: calc(48pt * var(--scale)); letter-spacing: .02em; }

/* Fantasy: castle crests, starry storybook cover, arched windows. */
.tpl-fantasy {
  --castle: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 64 34'%3E%3Cpath d='M4 34 V14 H8 V10 H12 V14 H16 V6 H20 V2 H24 V6 H28 V14 H36 V6 H40 V2 H44 V6 H48 V14 H52 V10 H56 V14 H60 V34 H38 V25 Q32 18 26 25 V34Z' fill='%23c9a227'/%3E%3C/svg%3E");
  --castle-light: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 64 34'%3E%3Cpath d='M4 34 V14 H8 V10 H12 V14 H16 V6 H20 V2 H24 V6 H28 V14 H36 V6 H40 V2 H44 V6 H48 V14 H52 V10 H56 V14 H60 V34 H38 V25 Q32 18 26 25 V34Z' fill='%23ffffff' fill-opacity='.16'/%3E%3C/svg%3E");
  --stars: radial-gradient(1.2px 1.2px at 12% 30%, #fff 50%, transparent 51%), radial-gradient(1px 1px at 28% 70%, #fff 50%, transparent 51%), radial-gradient(1.6px 1.6px at 45% 22%, #fff 50%, transparent 51%), radial-gradient(1px 1px at 63% 58%, #fff 50%, transparent 51%), radial-gradient(1.4px 1.4px at 81% 35%, #fff 50%, transparent 51%), radial-gradient(1px 1px at 92% 75%, #fff 50%, transparent 51%);
}
.tpl-fantasy .sec-head { border-bottom: 0; flex-direction: column; text-align: center; gap: 4px; padding-bottom: 6px; }
.tpl-fantasy .sec-head .sec-ico { display: none; }
.tpl-fantasy .sec-head::before { content: ''; width: 64px; height: 34px; background: var(--castle) center / contain no-repeat; }
.tpl-fantasy .sec-head::after { content: '— ✦ —'; color: var(--accent); letter-spacing: .3em; font-size: 11pt; }
.tpl-fantasy .sec-head h2 { font-size: calc(24pt * var(--scale)); letter-spacing: .04em; }
.tpl-fantasy .blk-h::before { content: '✦'; color: var(--accent); }
.tpl-fantasy ul.bullets li::marker { content: '✧ '; color: var(--accent); }
.tpl-fantasy .ph-frame { border-radius: 50% 50% 8px 8px / 22% 22% 8px 8px; border: 4px solid var(--accent); }
.tpl-fantasy .hero .ph-frame { border-radius: 30% 30% 12px 12px / 18% 18% 12px 12px; }
.tpl-fantasy .pair.cards .cell { border: 2px solid var(--accent); border-radius: 40px 40px 10px 10px; background: var(--soft); }
.tpl-fantasy .quote { border: 2px solid var(--accent); border-radius: 12px; text-align: center; font-style: italic; }
.tpl-fantasy .la-head { border-radius: 30px 30px 0 0; box-shadow: inset 0 -3px 0 var(--accent); }
.tpl-fantasy .toc-title { text-align: center; }
.tpl-fantasy .cover { background: radial-gradient(circle at 50% 30%, #6a46a0, var(--primary) 70%); }
.tpl-fantasy .cover::before { content: ''; position: absolute; inset: 0; background: var(--stars); background-size: 170px 170px; }
.tpl-fantasy .cover > *:not(.cv-deco) { position: relative; z-index: 1; }
.tpl-fantasy .cover .cv-name { color: #f3d77a; }
.tpl-fantasy .cover .cv-title, .tpl-fantasy .cover .cv-date, .tpl-fantasy .cover .cv-sub, .tpl-fantasy .cover .cv-year { color: #fff; }
.tpl-fantasy .cv-circle .cv-deco { top: auto; bottom: 0; height: 1.5in; border: 0; background: var(--castle-light) center bottom / 2.85in 1.5in no-repeat; }
.tpl-fantasy .cv-circle .cv-portrait .ph-frame { border-color: rgba(255,255,255,.2); box-shadow: 0 0 0 4px var(--accent); }

/* Scrapbook: notebook lines, highlighter headings, taped polaroids, sticky notes. */
.tpl-scrapbook .page:not(.full) { background-image: linear-gradient(90deg, transparent .45in, rgba(232,160,160,.6) .45in, rgba(232,160,160,.6) calc(.45in + 2px), transparent calc(.45in + 2px)), repeating-linear-gradient(to bottom, transparent 0 27px, rgba(91,108,143,.13) 27px 28px); }
.tpl-scrapbook .sec-head { border-bottom: 0; padding-bottom: 6px; }
.tpl-scrapbook .sec-head h2 { font-size: calc(30pt * var(--scale)); padding: 0 6px; transform: rotate(-1.2deg); background: linear-gradient(transparent 55%, rgba(232,160,160,.55) 55% 90%, transparent 90%); }
.tpl-scrapbook .blk-h { font-family: var(--head-font); font-size: calc(16pt * var(--scale)); }
.tpl-scrapbook ul.bullets li::marker { content: '☆ '; color: var(--primary); }
.tpl-scrapbook .ph { position: relative; }
.tpl-scrapbook .ph::before { content: ''; position: absolute; z-index: 2; top: -8px; left: 50%; width: 70px; height: 20px; margin-left: -35px; background: rgba(240,220,160,.8); transform: rotate(-3deg); }
.tpl-scrapbook .ph-frame:not(.round) { border-radius: 0; border: 8px solid #fff; border-bottom-width: 26px; box-shadow: 0 2px 6px rgba(0,0,0,.25); }
.tpl-scrapbook .ph:nth-child(odd) .ph-frame:not(.round) { transform: rotate(-1.5deg); }
.tpl-scrapbook .ph:nth-child(even) .ph-frame:not(.round) { transform: rotate(1.5deg); }
.tpl-scrapbook .pair.cards .cell { border-top: 0; border-radius: 2px; background: #fff8d6; box-shadow: 0 2px 5px rgba(0,0,0,.15); }
.tpl-scrapbook .pair.cards .cell:nth-child(2) { background: #e6f0ff; }
.tpl-scrapbook .quote { border-left: 0; border-radius: 2px; background: #fff8d6; box-shadow: 0 2px 5px rgba(0,0,0,.15); transform: rotate(-.6deg); font-size: calc(16pt * var(--scale)); }
.tpl-scrapbook .la-head { border-radius: 4px 4px 0 0; }
.tpl-scrapbook .cover { background-color: var(--soft); }
.tpl-scrapbook .cv-photo-top .cv-top { position: relative; }
.tpl-scrapbook .cv-photo-top .cv-top::before { content: ''; position: absolute; z-index: 2; top: .45in; left: 50%; width: 1.4in; height: .35in; margin-left: -.7in; background: rgba(240,220,160,.85); transform: rotate(-3deg); }
.tpl-scrapbook .cv-photo-top .cv-top .ph-frame { border-radius: 0; border: 14px solid #fff; border-bottom-width: 50px; box-shadow: 0 4px 12px rgba(0,0,0,.25); transform: rotate(-2deg); }
.tpl-scrapbook .cv-photo-top .cv-deco { height: 8px; border-radius: 0; background: repeating-linear-gradient(90deg, var(--accent) 0 14px, transparent 14px 22px); }
.tpl-scrapbook .cover .cv-name { transform: rotate(-1.5deg); }

/* Rainbow: rainbow stripes on every page and under each title. */
.tpl-rainbow { --rainbow: linear-gradient(90deg, #e53935, #fb8c00, #fdd835, #43a047, #1e88e5, #8e24aa); --rainbow-v: linear-gradient(180deg, #e53935, #fb8c00, #fdd835, #43a047, #1e88e5, #8e24aa); }
.tpl-rainbow .page:not(.full) { background-image: var(--rainbow); background-size: 100% 8px; background-repeat: no-repeat; background-position: top; }
.tpl-rainbow .sec-head { border-bottom: 0; padding-bottom: 14px; background: var(--rainbow) left bottom / 100% 6px no-repeat; }
.tpl-rainbow .sec-head h2 { font-size: calc(26pt * var(--scale)); }
.tpl-rainbow .sec-head .sec-ico { background: var(--primary); color: #fff; border-radius: 50%; padding: 7px; }
.tpl-rainbow .blk-h::before { content: ''; width: 12px; height: 12px; border-radius: 50%; background: var(--rainbow); flex: none; }
.tpl-rainbow ul.bullets li::marker { content: '● '; font-size: .85em; }
.tpl-rainbow ul.bullets li:nth-child(6n+1)::marker { color: #e53935; }
.tpl-rainbow ul.bullets li:nth-child(6n+2)::marker { color: #fb8c00; }
.tpl-rainbow ul.bullets li:nth-child(6n+3)::marker { color: #f2c200; }
.tpl-rainbow ul.bullets li:nth-child(6n+4)::marker { color: #43a047; }
.tpl-rainbow ul.bullets li:nth-child(6n+5)::marker { color: #1e88e5; }
.tpl-rainbow ul.bullets li:nth-child(6n)::marker { color: #8e24aa; }
.tpl-rainbow .ph-frame { border-radius: 18px; border: 4px solid transparent; background: var(--rainbow) border-box; }
.tpl-rainbow .pair.cards .cell { border-top: 0; border-radius: 18px; background: var(--soft); box-shadow: inset 0 6px 0 #fdd835; }
.tpl-rainbow .pair.cards .cell:nth-child(2) { box-shadow: inset 0 6px 0 #1e88e5; }
.tpl-rainbow .quote { border-left: 0; border-radius: 18px; padding-left: 26px; background: var(--rainbow-v) left top / 8px 100% no-repeat, var(--soft); }
.tpl-rainbow .la-head { border-radius: 14px 14px 0 0; padding-bottom: 13px; background: var(--rainbow) left bottom / 100% 5px no-repeat, var(--primary); }
.tpl-rainbow .cv-minimal .cv-deco { top: auto; bottom: 0; width: 100%; height: 1.5in; background: linear-gradient(180deg, #e53935 0 16.6%, #fb8c00 16.6% 33.3%, #fdd835 33.3% 50%, #43a047 50% 66.6%, #1e88e5 66.6% 83.3%, #8e24aa 83.3%); }
.tpl-rainbow .cover .cv-name { font-size: calc(56pt * var(--scale)); }
.tpl-rainbow .cv-minimal::before { content: ""; position: absolute; right: -1.6in; top: -1.6in; width: 4.4in; height: 4.4in; border-radius: 50%; background: radial-gradient(circle, transparent 0 40%, #8e24aa 40% 45%, #1e88e5 45% 50%, #43a047 50% 55%, #fdd835 55% 60%, #fb8c00 60% 65%, #e53935 65% 70%, transparent 70%); }

/* Seasons */
.tpl-autumn {
  --leaves: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 120 120'%3E%3Cg fill-opacity='.4'%3E%3Cpath transform='translate(40 40) rotate(-30)' d='M0 -24 C12 -14 14 2 0 22 C-14 2 -12 -14 0 -24Z' fill='%23c4471a'/%3E%3Cpath transform='translate(82 52) rotate(25)' d='M0 -24 C12 -14 14 2 0 22 C-14 2 -12 -14 0 -24Z' fill='%23e09f3e'/%3E%3Cpath transform='translate(58 90) rotate(-70)' d='M0 -24 C12 -14 14 2 0 22 C-14 2 -12 -14 0 -24Z' fill='%238c3b1e'/%3E%3C/g%3E%3C/svg%3E");
  --leaf: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='-16 -26 32 52'%3E%3Cg transform='rotate(25)'%3E%3Cpath d='M0 -24 C12 -14 14 2 0 22 C-14 2 -12 -14 0 -24Z' fill='%23e09f3e'/%3E%3Cpath d='M0 -20 V24' stroke='%238c3b1e' stroke-width='2'/%3E%3C/g%3E%3C/svg%3E");
}
.tpl-autumn .page:not(.full) { background-image: var(--leaves); background-repeat: no-repeat; background-position: right .25in top .25in; background-size: 1.2in 1.2in; }
.tpl-autumn .sec-head::after { content: ''; margin-left: auto; width: 20px; height: 30px; flex: none; background: var(--leaf) center / contain no-repeat; }
.tpl-autumn .blk-h::before { content: ''; width: 12px; height: 18px; flex: none; background: var(--leaf) center / contain no-repeat; }
.tpl-autumn ul.bullets li::marker { content: '◆ '; color: var(--accent); font-size: .7em; }
.tpl-autumn .ph-frame { border-radius: 8px; border: 4px solid var(--soft); }
.tpl-autumn .la-head { background: linear-gradient(100deg, var(--primary), #b5651d); }
.tpl-autumn .cover { background: var(--soft); }
.tpl-autumn .cv-photo-top .cv-deco { width: auto; height: .6in; border-radius: 0; background: var(--leaves) left center / .6in .6in repeat-x; }

.tpl-winter {
  --flake: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 40 40'%3E%3Cg stroke='%238fb8de' stroke-width='2.5' stroke-linecap='round' fill='none'%3E%3Cpath d='M20 3V37M5.3 11.5L34.7 28.5M5.3 28.5L34.7 11.5'/%3E%3Cpath d='M15 6l5 4 5-4M15 34l5-4 5 4'/%3E%3C/g%3E%3C/svg%3E");
  --flake-faint: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 40 40'%3E%3Cg stroke='%238fb8de' stroke-opacity='.45' stroke-width='2.5' stroke-linecap='round' fill='none'%3E%3Cpath d='M20 3V37M5.3 11.5L34.7 28.5M5.3 28.5L34.7 11.5'/%3E%3Cpath d='M15 6l5 4 5-4M15 34l5-4 5 4'/%3E%3C/g%3E%3C/svg%3E");
}
.tpl-winter .page:not(.full) { background-image: var(--flake-faint), var(--flake-faint), var(--flake-faint); background-repeat: no-repeat; background-position: right .35in top .3in, right 1.05in top .55in, right .55in top 1.05in; background-size: .55in .55in, .35in .35in, .28in .28in; }
.tpl-winter .sec-head { border-bottom: 0; border-left: 6px solid var(--accent); border-radius: 12px; padding: 8px 16px; background: linear-gradient(100deg, var(--soft), #fff); }
.tpl-winter .sec-head::after { content: ''; margin-left: auto; width: 24px; height: 24px; flex: none; background: var(--flake) center / contain no-repeat; }
.tpl-winter .blk-h::before { content: ''; width: 15px; height: 15px; flex: none; background: var(--flake) center / contain no-repeat; }
.tpl-winter ul.bullets li::marker { content: '✻ '; color: var(--accent); }
.tpl-winter .ph-frame { border-radius: 14px; border: 4px solid #fff; box-shadow: 0 0 0 2px var(--accent); }
.tpl-winter .la-head { background: linear-gradient(100deg, var(--primary), #4a6f99); border-radius: 12px 12px 0 0; }
.tpl-winter .cover { background: linear-gradient(180deg, var(--soft), #fff); }
.tpl-winter .cv-circle .cv-deco { border: 0; height: 1.2in; background: var(--flake-faint) center .2in / .6in .6in repeat-x; }

.tpl-spring {
  --sprout: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 40 40'%3E%3Cpath d='M20 38V18' stroke='%234f7942' stroke-width='3'/%3E%3Cpath d='M20 24C10 24 6 16 6 10C14 10 20 16 20 24Z' fill='%2389b36b'/%3E%3Cpath d='M20 18C30 18 34 10 34 4C26 4 20 10 20 18Z' fill='%23a6cf86'/%3E%3C/svg%3E");
  --blossoms: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 80 50'%3E%3Cg transform='translate(25 25)' fill='%23f5a3c7' fill-opacity='.8'%3E%3Ccircle cy='-9' r='7'/%3E%3Ccircle cx='8.5' cy='-3' r='7'/%3E%3Ccircle cx='5.3' cy='7.3' r='7'/%3E%3Ccircle cx='-5.3' cy='7.3' r='7'/%3E%3Ccircle cx='-8.5' cy='-3' r='7'/%3E%3Ccircle r='4' fill='%23f6d36b' fill-opacity='1'/%3E%3C/g%3E%3Cellipse cx='58' cy='30' rx='11' ry='5' transform='rotate(-25 58 30)' fill='%2389b36b' fill-opacity='.8'/%3E%3C/svg%3E");
  --grass: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='816' height='40' viewBox='0 0 816 40' preserveAspectRatio='none'%3E%3Cpath d='M0 40 L0 22 Q40 4 80 20 Q130 2 180 18 Q240 6 300 20 Q360 0 420 18 Q480 6 540 20 Q600 2 660 18 Q720 6 780 20 L816 16 L816 40Z' fill='%23dcebd0'/%3E%3C/svg%3E");
}
.tpl-spring .page:not(.full) { background-image: var(--blossoms), var(--grass); background-repeat: no-repeat; background-position: right .4in bottom .25in, bottom center; background-size: 1in .62in, 100% .45in; }
.tpl-spring .sec-head { border-bottom: 0; padding-bottom: 14px; background: linear-gradient(90deg, var(--accent), #a6cf86) left bottom / 100% 4px no-repeat; }
.tpl-spring .sec-head .sec-ico { background: var(--soft); border-radius: 50%; padding: 7px; color: var(--primary); }
.tpl-spring .blk-h::before { content: ''; width: 18px; height: 18px; flex: none; background: var(--sprout) center / contain no-repeat; }
.tpl-spring ul.bullets li::marker { content: '✿ '; color: var(--accent); }
.tpl-spring .ph-frame:not(.round) { border-radius: 22px 4px 22px 4px; }
.tpl-spring .pair.cards .cell { border-top: 0; border-radius: 22px 4px 22px 4px; background: var(--soft); }
.tpl-spring .la-head { border-radius: 18px 18px 0 0; box-shadow: inset 0 -4px 0 var(--accent); }
.tpl-spring .cover { background: linear-gradient(180deg, #fff, var(--soft)); }
.tpl-spring .cv-circle .cv-deco { border: 0; height: 1in; background: var(--blossoms) center .2in / .9in .56in repeat-x; }

.tpl-summer {
  --waves: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='816' height='70' viewBox='0 0 816 70' preserveAspectRatio='none'%3E%3Cpath d='M0 30 C80 10 160 50 240 30 S400 10 480 30 S640 50 816 28 L816 70 L0 70Z' fill='%23d6f0f7'/%3E%3Cpath d='M0 50 C100 34 200 64 300 48 S520 34 620 50 S760 62 816 52 L816 70 L0 70Z' fill='%23fde3b0'/%3E%3C/svg%3E");
}
.tpl-summer .page:not(.full) { background-image: radial-gradient(circle at calc(100% - .7in) .7in, rgba(249,168,38,.22) 0 .32in, transparent .33in), var(--waves); background-repeat: no-repeat; background-position: 0 0, bottom center; background-size: 100% 100%, 100% .7in; }
.tpl-summer .sec-head { border-bottom: 0; border-radius: 30px; padding: 8px 18px; background: linear-gradient(100deg, var(--accent), #ffd166); }
.tpl-summer .sec-head h2 { color: #08415c; }
.tpl-summer .sec-head .sec-ico { background: #fff; color: var(--primary); border-radius: 50%; padding: 7px; }
.tpl-summer .sec-head::after { content: ''; margin-left: auto; width: 24px; height: 24px; flex: none; border-radius: 50%; background: #fff; box-shadow: 0 0 0 4px rgba(255,255,255,.5); }
.tpl-summer .blk-h::before { content: ''; width: 13px; height: 13px; flex: none; border-radius: 50%; background: var(--accent); box-shadow: 0 0 0 3px #ffe7a8; }
.tpl-summer ul.bullets li::marker { content: '● '; color: var(--accent); font-size: .8em; }
.tpl-summer .ph-frame { border-radius: 18px; }
.tpl-summer .pair.cards .cell { border-top: 0; border-radius: 18px; background: var(--soft); box-shadow: inset 0 -5px 0 var(--primary); }
.tpl-summer .quote { border-left: 0; border-radius: 18px; }
.tpl-summer .la-head { background: linear-gradient(100deg, var(--primary), #00a6c7); border-radius: 16px 16px 0 0; }
.tpl-summer .cv-full .cv-band { background: linear-gradient(transparent, rgba(0,129,167,.85) 35%); }
.tpl-summer .cv-full::after { content: ''; position: absolute; right: .7in; top: .7in; width: 1.2in; height: 1.2in; border-radius: 50%; background: radial-gradient(circle, #ffd166 0 55%, rgba(255,209,102,.35) 56%); }

/* Fiesta: papel picado banners and festive color bars. */
.tpl-fiesta {
  --picado: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 120 50'%3E%3Cpath d='M0 3 Q60 7 120 3' stroke='%23666' stroke-width='1.5' fill='none'/%3E%3Cg id='f'%3E%3Cpath d='M4 4 H36 V38 L32 44 L28 38 L24 44 L20 38 L16 44 L12 38 L8 44 L4 38Z' fill='%23c2185b'/%3E%3Cg fill='%23fff'%3E%3Ccircle cx='12' cy='14' r='2.5'/%3E%3Ccircle cx='28' cy='14' r='2.5'/%3E%3Cpath d='M20 18 L25 25 L20 32 L15 25Z'/%3E%3Ccircle cx='12' cy='32' r='2'/%3E%3Ccircle cx='28' cy='32' r='2'/%3E%3C/g%3E%3C/g%3E%3Cg transform='translate(40 0)'%3E%3Cpath d='M4 4 H36 V38 L32 44 L28 38 L24 44 L20 38 L16 44 L12 38 L8 44 L4 38Z' fill='%23ffb300'/%3E%3Cg fill='%23fff'%3E%3Ccircle cx='12' cy='14' r='2.5'/%3E%3Ccircle cx='28' cy='14' r='2.5'/%3E%3Cpath d='M20 18 L25 25 L20 32 L15 25Z'/%3E%3Ccircle cx='12' cy='32' r='2'/%3E%3Ccircle cx='28' cy='32' r='2'/%3E%3C/g%3E%3C/g%3E%3Cg transform='translate(80 0)'%3E%3Cpath d='M4 4 H36 V38 L32 44 L28 38 L24 44 L20 38 L16 44 L12 38 L8 44 L4 38Z' fill='%2300a6a6'/%3E%3Cg fill='%23fff'%3E%3Ccircle cx='12' cy='14' r='2.5'/%3E%3Ccircle cx='28' cy='14' r='2.5'/%3E%3Cpath d='M20 18 L25 25 L20 32 L15 25Z'/%3E%3Ccircle cx='12' cy='32' r='2'/%3E%3Ccircle cx='28' cy='32' r='2'/%3E%3C/g%3E%3C/g%3E%3C/svg%3E");
  --bars: linear-gradient(90deg, #c2185b 0 25%, #ffb300 25% 50%, #00a6a6 50% 75%, #7cb342 75%);
}
.tpl-fiesta .page:not(.full) { background-image: var(--picado); background-repeat: repeat-x; background-position: left top .04in; background-size: 1.2in .5in; }
.tpl-fiesta .sec-head { border-bottom: 0; padding-bottom: 14px; background: var(--bars) left bottom / 100% 6px no-repeat; }
.tpl-fiesta .sec-head h2 { font-size: calc(28pt * var(--scale)); }
.tpl-fiesta .sec-head .sec-ico { background: var(--accent); color: #fff; border-radius: 50%; padding: 7px; }
.tpl-fiesta .blk-h { color: #00838f; }
.tpl-fiesta .blk-h::before { content: ''; width: 12px; height: 12px; flex: none; background: var(--accent); transform: rotate(45deg); }
.tpl-fiesta ul.bullets li::marker { content: '◆ '; color: var(--primary); font-size: .75em; }
.tpl-fiesta .ph-frame { border-radius: 12px; border: 4px solid var(--accent); }
.tpl-fiesta .pair.cards .cell { border-top: 0; border-radius: 14px; background: var(--soft); box-shadow: inset 0 6px 0 var(--primary); }
.tpl-fiesta .pair.cards .cell:nth-child(2) { box-shadow: inset 0 6px 0 #00a6a6; }
.tpl-fiesta .quote { border: 2px dashed var(--primary); border-radius: 14px; }
.tpl-fiesta .la-head { border-radius: 14px 14px 0 0; box-shadow: inset 0 -5px 0 var(--accent); }
.tpl-fiesta .cv-split .cv-panel { background: var(--picado) left top .3in / 1.6in .67in repeat-x, var(--primary); }
.tpl-fiesta .cv-split .cv-deco { background: var(--accent); opacity: .35; top: auto; bottom: -1.2in; }
.tpl-fiesta .cover .cv-name { font-size: calc(50pt * var(--scale)); }

/* Ink Saver: white pages, thin gray lines, no filled color blocks. */
.tpl-inksaver .sec-head { border-bottom: 1px solid #999; }
.tpl-inksaver .sec-head h2 { color: #222; font-size: calc(21pt * var(--scale)); }
.tpl-inksaver .sec-head .sec-ico { color: #777; }
.tpl-inksaver .blk-h, .tpl-inksaver h3 { color: #222; }
.tpl-inksaver .tbl th, .tpl-inksaver .la-tbl th { background: #fff; color: #222; border-bottom: 1.5px solid #555; }
.tpl-inksaver .tbl td { border-bottom-color: #ccc; }
.tpl-inksaver .la-head { background: #fff; color: #222; border: 1px solid #999; border-bottom: 0; border-radius: 0; }
.tpl-inksaver .la-head h3 { color: #222; }
.tpl-inksaver .quote { background: transparent; border-left: 2px solid #999; border-radius: 0; color: #333; }
.tpl-inksaver .pair.cards .cell { background: transparent; border: 1px solid #bbb; border-radius: 4px; }
.tpl-inksaver .goal-card { background: transparent; border-left: 2px solid #999; }
.tpl-inksaver .g-num { background: #fff; color: #222; border: 1.5px solid #555; }
.tpl-inksaver .ph-frame { border-radius: 0; background: #fff; }
.tpl-inksaver .cal-head div:not(:first-child), .tpl-inksaver .ss-name { background: #fff; color: #222; border-bottom: 1.5px solid #555; }
.tpl-inksaver .sched-note, .tpl-inksaver .cat-pill { background: transparent; border: 1px solid #bbb; }
.tpl-inksaver .toc-title { border-bottom: 1px solid #999; }
.tpl-inksaver .cv-minimal .cv-deco { left: .6in; width: 2px; background: #999; }
.tpl-inksaver .cover .cv-name { color: #222; }

/* Large Print: big text (set by the template), one column, fewer things side by side. */
.tpl-largeprint .sec-head { border-bottom-width: 5px; }
.tpl-largeprint .blk-h { margin-top: 20px !important; }
.tpl-largeprint ul.bullets li { margin-bottom: .5em; }
.tpl-largeprint .pair, .tpl-largeprint .c-list { grid-template-columns: 1fr; }
.tpl-largeprint .ph-row.cols-3 { grid-template-columns: 1fr 1fr; }
.tpl-largeprint .muted, .tpl-largeprint .ph figcaption, .tpl-largeprint .c-role, .tpl-largeprint .blk-note { color: #222; font-style: normal; }
.tpl-largeprint .tbl td, .tpl-largeprint .la-tbl td { border-color: #666; }
.tpl-largeprint .la-tbl th { width: 36%; }
.tpl-largeprint .cover .cv-year, .tpl-largeprint .cover .cv-date, .tpl-largeprint .cover .cv-sub { font-size: 16pt; }

/* Reading-Friendly: cream paper, no italics, extra letter and word spacing, short lines. */
.tpl-reading { letter-spacing: .02em; word-spacing: .08em; }
.tpl-reading, .tpl-reading * { font-style: normal !important; }
.tpl-reading p, .tpl-reading li { max-width: 36em; }
.tpl-reading .sec-head { border-bottom: 0; background: var(--soft); border-radius: 10px; padding: 8px 14px; }
.tpl-reading .sec-head h2 { font-size: calc(22pt * var(--scale)); letter-spacing: 0; }
.tpl-reading .blk-h { font-size: calc(14pt * var(--scale)); }
.tpl-reading ul.bullets li { margin-bottom: .4em; }
.tpl-reading .quote { font-family: var(--body-font); font-size: calc(13pt * var(--scale)); }
.tpl-reading .muted, .tpl-reading .ph figcaption, .tpl-reading .blk-note { color: #3a4650; }

/* Formal: an official report. Rules, small caps headings, no decoration. */
.tpl-formal .sec-head { border-bottom: 2px solid var(--primary); padding-bottom: 6px; }
.tpl-formal .sec-head .sec-ico { display: none; }
.tpl-formal .sec-head h2 { font-size: calc(18pt * var(--scale)); text-transform: uppercase; letter-spacing: .06em; }
.tpl-formal .blk-h { font-size: calc(12pt * var(--scale)); color: var(--ink); }
.tpl-formal ul.bullets li::marker { color: var(--ink); }
.tpl-formal .ph-frame, .tpl-formal .hero .ph-frame { border-radius: 0; }
.tpl-formal .quote { background: transparent; border-left: 2px solid var(--accent); border-radius: 0; font-family: var(--body-font); font-size: calc(12pt * var(--scale)); color: var(--ink); }
.tpl-formal .pair.cards .cell, .tpl-formal .pair.cards .cell:nth-child(2) { background: transparent; border: 1px solid #d1d5db; border-top: 3px solid var(--primary); border-radius: 0; }
.tpl-formal .la-head { border-radius: 0; }
.tpl-formal .goal-card { border-radius: 0 !important; }
.tpl-formal .toc-title { font-size: calc(22pt * var(--scale)); text-transform: uppercase; letter-spacing: .06em; border-bottom: 2px solid var(--primary); }
.tpl-formal .cv-minimal .cv-deco { top: 1in; bottom: auto; width: 100%; height: 6px; background: var(--primary); }
.tpl-formal .cv-minimal .cv-title { color: var(--ink); letter-spacing: .25em; }
.tpl-formal .cv-minimal .cv-min::after { content: ''; display: block; height: 1px; background: #9ca3af; margin-top: 28px; }

/* ---------- print ---------- */
@page { size: letter portrait; margin: 0; }
@page landscape-page { size: letter landscape; margin: 0; }
@media print {
  html, body { margin: 0 !important; padding: 0 !important; background: #fff !important; }
  body > *:not(#print-root) { display: none !important; }
  #print-root { display: block !important; }
  #print-root .page { break-after: page; page-break-after: always; box-shadow: none !important; margin: 0 !important; transform: none !important; }
  #print-root .page:last-child { break-after: auto; page-break-after: auto; }
  #print-root .page.landscape { page: landscape-page; }
  #print-root.bw .page, #print-root.bw .page * { -webkit-print-color-adjust: economy; print-color-adjust: economy; filter: grayscale(1); }
  #print-root:not(.bw) * { -webkit-print-color-adjust: exact; print-color-adjust: exact; }
}
#print-root { display: none; }
