:root {
  --ivory: #f8f1e3;
  --paper: #fffdf7;
  --teal: #1f5a64;
  --teal-deep: #173f47;
  --olive: #737a4f;
  --rose: #c66b63;
  --rose-soft: #efd4cc;
  --gold: #c99a4b;
  --ink: #243538;
  --muted: #6a675f;
  --line: #d9d1c1;
  --sidebar: 17rem;
  --content: 49rem;
  --serif: Georgia, "Times New Roman", serif;
  --sans: "Avenir Next", Avenir, "Segoe UI", system-ui, sans-serif;
}

* { box-sizing: border-box; }
html { scroll-behavior: smooth; scroll-padding-top: 1rem; }
body { margin: 0; color: var(--ink); background: var(--paper); font: 1rem/1.72 var(--sans); }
a { color: inherit; }
button, a { -webkit-tap-highlight-color: transparent; }
.skip-link { position: fixed; top: .5rem; left: .5rem; z-index: 100; transform: translateY(-150%); background: white; padding: .7rem 1rem; border-radius: .4rem; }
.skip-link:focus { transform: none; }

.side-nav { position: fixed; inset: 0 auto 0 0; width: var(--sidebar); overflow-y: auto; padding: 2.2rem 1.35rem 1.6rem; background: var(--teal-deep); color: #fffaf0; z-index: 20; }
.brand { display: block; font: 700 1.22rem/1.05 var(--serif); text-decoration: none; letter-spacing: .04em; padding: 0 .45rem 1.75rem; border-bottom: 1px solid rgba(255,255,255,.18); }
.brand span { display: block; color: #e8c78d; font: 700 .72rem/1.5 var(--sans); letter-spacing: .2em; }
.nav-primary, .nav-sessions { padding: 1rem 0; border-bottom: 1px solid rgba(255,255,255,.15); }
.side-nav a:not(.brand) { display: flex; align-items: center; gap: .7rem; margin: .12rem 0; padding: .52rem .55rem; border-radius: .45rem; color: rgba(255,255,255,.79); font-size: .84rem; line-height: 1.25; text-decoration: none; transition: background .2s, color .2s; }
.side-nav a:not(.brand):hover, .side-nav a.active { color: white; background: rgba(255,255,255,.1); }
.side-nav a span { color: #e8c78d; font-size: .7rem; letter-spacing: .12em; }
.nav-end { margin-top: 1rem !important; }
.nav-guide { color: #e8c78d !important; }
.nav-resources { display: flex; align-items: center; justify-content: space-between; gap: .7rem; margin: 1rem .55rem 0; padding: .85rem 0 0; border-top: 1px solid rgba(255,255,255,.15); color: #e8c78d; font-size: .84rem; line-height: 1.25; }
.nav-resources small { color: rgba(255,255,255,.5); font-size: .62rem; letter-spacing: .08em; text-transform: uppercase; }
.mobile-bar { display: none; }
main { margin-left: var(--sidebar); }

.cover { min-height: 100vh; display: grid; grid-template-rows: auto 1fr auto auto; justify-items: center; text-align: center; padding: 2.4rem 2rem 1.8rem; position: relative; overflow: hidden; background: radial-gradient(circle at 75% 18%, rgba(198,107,99,.13), transparent 25rem), radial-gradient(circle at 18% 83%, rgba(115,122,79,.13), transparent 24rem), var(--ivory); }
.cover::before, .cover::after { content: ""; position: absolute; width: 12rem; height: 12rem; border: 1px solid rgba(31,90,100,.16); transform: rotate(45deg); }
.cover::before { top: -7rem; right: -5rem; }
.cover::after { bottom: -8rem; left: -4rem; }
.cover-logo-link { position: relative; z-index: 1; display: inline-flex; }
.cover-logo { width: clamp(11rem, 18vw, 15rem); height: auto; margin: 0; object-fit: contain; }
.cover-center { align-self: center; margin-top: 1.4rem; }
.eyebrow, .section-label, .session-kicker { margin: 0 0 1rem; color: var(--olive); text-transform: uppercase; letter-spacing: .18em; font-size: .76rem; font-weight: 700; }
.cover h1 { margin: 0; max-width: 10ch; color: var(--teal); font: 700 clamp(3.2rem, 8vw, 7.6rem)/.82 var(--serif); letter-spacing: -.055em; }
.cover h1 span { display: block; color: var(--rose); font: 700 .24em/1.1 var(--sans); letter-spacing: .24em; margin: 0 0 .5rem .24em; }
.cover-subtitle { display: grid; gap: .28rem; max-width: 39rem; margin: 1.7rem 0 .75rem; color: var(--teal-deep); font: 1.18rem/1.5 var(--serif); }
.cover-subtitle strong { font-size: 1.42rem; }
.cover-subtitle span { font-style: italic; }
.cover-author { margin: 0; color: var(--muted); font-size: .82rem; letter-spacing: .06em; }
.cover-author a { color: var(--teal); text-underline-offset: .2rem; }
.cover-author a:hover { color: var(--teal-deep); }
.cover-actions { display: flex; align-items: center; gap: 1.4rem; flex-wrap: wrap; justify-content: center; margin: 2.8rem 0 2rem; }
.primary-button, .download { display: inline-flex; align-items: center; justify-content: center; gap: .7rem; min-height: 3rem; padding: .7rem 1.1rem; border-radius: .35rem; background: var(--teal); color: white; font-weight: 700; text-decoration: none; }
.primary-button:hover, .download:hover { background: var(--teal-deep); }
.text-link { color: var(--teal); text-underline-offset: .3rem; }
.cover-note { margin: 0; color: var(--muted); text-transform: uppercase; letter-spacing: .14em; font-size: .68rem; }
.cover-note i { display: inline-block; width: .25rem; height: .25rem; margin: 0 .8rem; border-radius: 50%; background: var(--rose); vertical-align: middle; }

.content-section, .session { padding: clamp(4.5rem, 9vw, 8rem) clamp(1.4rem, 7vw, 6.5rem); }
.content-section > *, .session > * { max-width: var(--content); margin-left: auto; margin-right: auto; }
.content-section h2, .session h2 { margin: 0 0 2rem; color: var(--teal); font: 700 clamp(2.35rem, 5vw, 4.5rem)/1.02 var(--serif); letter-spacing: -.03em; }
.prose, .session-body, .closing { font-family: var(--serif); font-size: 1.08rem; }
.prose p:first-child::first-letter { float: left; margin: .06em .1em 0 0; color: var(--rose); font: 700 4.1em/.72 var(--serif); }
.intro { background: var(--paper); }
.intro .prose { columns: 2 19rem; column-gap: 3.5rem; }
.intro .prose p { break-inside: avoid; margin-top: 0; }
.logic { max-width: none; background: var(--teal); color: #f7f1e6; }
.logic > * { max-width: 64rem; }
.logic .section-label { color: #e8c78d; }
.logic h2 { color: white; }
.logic-copy > p:first-child { display: none; }
.logic-copy p, .logic-copy .line-list { max-width: 48rem; }
.logic-copy .line-list { display: none; }
.logic-copy p:last-child { color: rgba(255,255,255,.82); }
.logic-steps { display: grid; grid-template-columns: repeat(3, 1fr); margin-top: 3.5rem; border-block: 1px solid rgba(255,255,255,.23); }
.logic-steps div { padding: 2rem; border-right: 1px solid rgba(255,255,255,.23); }
.logic-steps div:first-child { padding-left: 0; }
.logic-steps div:last-child { border: 0; }
.logic-steps b { color: #e8c78d; font-size: .72rem; letter-spacing: .15em; }
.logic-steps h3 { margin: .4rem 0 .25rem; color: white; font: 700 1.7rem/1.2 var(--serif); }
.logic-steps p { margin: 0; color: rgba(255,255,255,.76); font-size: .92rem; }

.map { background: #f2ecdf; }
.map > * { max-width: 68rem; }
.map-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1px; background: var(--line); border: 1px solid var(--line); }
.map-card { min-height: 12.5rem; display: grid; grid-template-columns: 3rem 1fr; gap: 1rem; padding: 1.7rem; background: var(--paper); text-decoration: none; transition: background .2s, transform .2s; }
.map-card:hover { background: white; transform: translateY(-2px); }
.map-number { color: var(--rose); font-size: .72rem; font-weight: 700; letter-spacing: .12em; }
.map-card h3 { margin: 0 0 .45rem; color: var(--teal); font: 700 1.6rem/1.1 var(--serif); }
.map-card p { margin: 0 0 1.15rem; color: var(--muted); line-height: 1.45; }
.map-card strong { color: var(--olive); font-size: .78rem; line-height: 1.4; text-transform: uppercase; letter-spacing: .07em; }

.session { border-top: 1px solid var(--line); background: var(--paper); scroll-margin-top: 0; }
.session:nth-of-type(even) { background: #fbf7ee; }
.session-hero { position: relative; }
.session-kicker { color: var(--rose); }
.session h2 { margin-bottom: .6rem; }
.session-subtitle { margin: 0 0 1.2rem; color: var(--ink); font: 1.3rem/1.45 var(--serif); }
.movement { display: inline-flex; flex-direction: column; max-width: 34rem; margin: 0 0 2rem; color: var(--olive); font-weight: 700; letter-spacing: .035em; }
.movement span { margin-bottom: .2rem; color: var(--muted); font-size: .68rem; text-transform: uppercase; letter-spacing: .16em; }
.download { display: flex; width: fit-content; margin: .5rem 0 2rem; padding-inline: 1.25rem; }
.principle { position: relative; max-width: calc(var(--content) + 5rem); margin-top: 2.2rem; margin-bottom: 4rem; padding: 2rem 2.4rem 2rem 3rem; border-left: .42rem solid var(--rose); background: var(--teal); color: white; box-shadow: 0 1.2rem 3rem rgba(31,63,71,.12); }
.principle::after { content: "“"; position: absolute; top: .5rem; right: 1.4rem; color: rgba(255,255,255,.09); font: 8rem/1 var(--serif); }
.principle span { color: #e8c78d; text-transform: uppercase; letter-spacing: .16em; font-size: .7rem; font-weight: 700; }
.principle p { position: relative; z-index: 1; margin: .65rem 0 0; max-width: 43rem; font: 700 clamp(1.35rem, 3vw, 2rem)/1.32 var(--serif); }
.session-body h3 { margin: 3.5rem 0 1rem; color: var(--teal); font: 700 1.75rem/1.2 var(--serif); }
.session-body h3 span { color: var(--rose); font: 700 .72rem/1 var(--sans); letter-spacing: .16em; }
.session-body h4 { margin: 2rem 0 .6rem; color: var(--olive); font: 700 1.13rem/1.3 var(--sans); }
.session-body .practice-title { margin-top: 4rem; padding-top: 2.3rem; border-top: 1px solid var(--line); color: var(--rose); text-transform: uppercase; letter-spacing: .14em; font: 700 .8rem/1.2 var(--sans); }
.session-body p { margin: .65rem 0; }
.session-body blockquote { margin: 1rem 0; padding: .9rem 1.2rem; border-left: .2rem solid var(--gold); color: var(--teal); font-style: italic; }
.line-list, .questions { list-style: none; padding: 0; margin: 1rem 0; }
.line-list li { margin: .25rem 0; }
.line-list li::before { content: "—"; color: var(--rose); margin-right: .6rem; }
.questions { display: grid; gap: .65rem; padding: 1.2rem 0; }
.questions li { padding: 1rem 1.1rem; border: 1px solid var(--line); border-radius: .35rem; background: rgba(255,255,255,.55); }
.questions li::before { content: "?"; display: inline-grid; place-items: center; width: 1.5rem; height: 1.5rem; margin-right: .7rem; border-radius: 50%; background: var(--rose-soft); color: #8c3f3a; font: 700 .75rem/1 var(--sans); }
.prompt-label { color: var(--olive); font: 700 .8rem/1.2 var(--sans); text-transform: uppercase; letter-spacing: .12em; }
.session-nav { display: flex; justify-content: space-between; margin-top: 4rem; padding-top: 1.5rem; border-top: 1px solid var(--line); }
.session-nav a, .back-top { color: var(--teal); font-weight: 700; text-underline-offset: .3rem; }

.closing { max-width: none; background: var(--teal-deep); color: #f8f1e3; }
.closing > * { max-width: var(--content); margin-left: auto; margin-right: auto; }
.closing h2 { color: white; margin-top: 3rem; }
.closing h2:first-child { margin-top: 0; }
.closing h3 { margin-top: 3rem; color: #e8c78d; font: 700 1.45rem/1.25 var(--serif); }
.closing .movement-item { margin-top: 1.8rem; margin-bottom: 0; color: white; font: 700 1rem/1.3 var(--sans); letter-spacing: .08em; }
.closing .movement-item + p { margin-top: .2rem; color: rgba(255,255,255,.75); }
.closing p { color: rgba(255,255,255,.85); }
.closing .motto { margin-top: 3rem; }
.closing .motto p { margin-top: .35rem; color: white; font-size: 1.25rem; font-weight: 700; }
.back-top { display: inline-block; margin-top: 3rem; color: #e8c78d; }

.guide { background: var(--ivory); }
.guide > * { max-width: 68rem; }
.guide-steps { display: grid; grid-template-columns: repeat(4, 1fr); gap: 1px; padding: 0; margin: 0 0 4rem; list-style: none; background: var(--line); border: 1px solid var(--line); }
.guide-steps li { min-height: 10.5rem; padding: 1.35rem; background: var(--paper); }
.guide-steps b { display: block; margin-bottom: .65rem; color: var(--teal); font: 700 1.25rem/1.2 var(--serif); }
.guide-steps span { color: var(--muted); font-size: .88rem; line-height: 1.5; }
.guide-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1.1rem; }
.guide-card { padding: 1.45rem; border: 1px solid var(--line); border-radius: .45rem; background: var(--paper); box-shadow: 0 .7rem 2rem rgba(31,63,71,.06); }
.guide-card-heading { display: flex; align-items: baseline; gap: .85rem; margin-bottom: 1rem; }
.guide-card-heading span { color: var(--rose); font-size: .72rem; font-weight: 700; letter-spacing: .12em; }
.guide-card h3 { margin: 0; color: var(--teal); font: 700 1.45rem/1.15 var(--serif); }
.guide-field { margin-top: 1rem; }
.guide-field > span { display: block; margin-bottom: .25rem; color: var(--olive); font-size: .7rem; font-weight: 700; letter-spacing: .12em; text-transform: uppercase; }
.guide-field p { margin: 0; color: var(--muted); font-size: .92rem; line-height: 1.55; }
.guide-field:first-of-type p { color: var(--teal-deep); font: 700 1.05rem/1.4 var(--serif); }
.guide-objective { padding-top: .9rem; border-top: 1px solid var(--line); }
.guide-objective p { color: var(--teal-deep); font-weight: 600; }
.guide .back-top { color: var(--teal); }

:focus-visible { outline: 3px solid var(--gold); outline-offset: 3px; }
@media (max-width: 900px) {
  html { scroll-padding-top: 4.4rem; }
  .mobile-bar { position: sticky; top: 0; z-index: 30; display: flex; justify-content: space-between; align-items: center; min-height: 4rem; padding: .7rem 1rem; background: var(--teal-deep); color: white; box-shadow: 0 .3rem 1rem rgba(23,63,71,.15); }
  .mobile-bar a { text-decoration: none; font: 700 .95rem/1.05 var(--serif); }
  .mobile-bar a span { display: block; color: #e8c78d; font: 700 .54rem/1.2 var(--sans); letter-spacing: .16em; }
  .mobile-bar button { min-height: 2.6rem; padding: .5rem .8rem; border: 1px solid rgba(255,255,255,.35); border-radius: .35rem; background: transparent; color: white; font: 700 .84rem var(--sans); }
  .side-nav { top: 4rem; width: min(86vw, 21rem); transform: translateX(-105%); transition: transform .25s ease; box-shadow: 1rem 0 2rem rgba(0,0,0,.18); }
  .side-nav.open { transform: none; }
  .side-nav .brand { display: none; }
  main { margin-left: 0; }
  .cover { min-height: calc(100vh - 4rem); }
}

@media (max-width: 650px) {
  body { line-height: 1.65; }
  .content-section, .session { padding: 4.4rem 1.2rem; }
  .cover { min-height: auto; align-content: start; padding: 3rem 1.2rem 2.8rem; }
  .cover-logo { width: 11rem; margin-bottom: 3.3rem; }
  .cover-center { margin-top: 0; }
  .cover h1 { font-size: clamp(3.35rem, 18vw, 5.2rem); }
  .cover-subtitle { margin-top: 1.35rem; }
  .cover-author { margin-bottom: 0; }
  .cover-actions { flex-direction: column; gap: 1rem; width: 100%; margin: 3rem 0 2.2rem; }
  .primary-button { width: min(100%, 22rem); }
  .cover-note { font-size: .59rem; }
  .cover-note i { margin-inline: .45rem; }
  .intro .prose { columns: auto; }
  .logic-steps { grid-template-columns: 1fr; }
  .logic-steps div, .logic-steps div:first-child { padding: 1.4rem 0; border-right: 0; border-bottom: 1px solid rgba(255,255,255,.23); }
  .logic-steps div:last-child { border-bottom: 0; }
  .map-grid { grid-template-columns: 1fr; }
  .map-card { min-height: 0; padding: 1.3rem; }
  .guide-steps, .guide-grid { grid-template-columns: 1fr; }
  .guide-steps li { min-height: 0; }
  .principle { margin-bottom: 3rem; padding: 1.5rem 1.35rem 1.5rem 1.6rem; }
  .principle p { font-size: 1.3rem; }
  .session-body { font-size: 1.03rem; }
  .session-nav a { padding: .5rem 0; }
}

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after { transition-duration: .01ms !important; }
}

@media print {
  .side-nav, .mobile-bar, .cover-actions, .download, .session-nav, .back-top { display: none !important; }
  main { margin: 0; }
  .cover { min-height: 0; page-break-after: always; }
  .session, .content-section { padding: 2rem 0; }
  .principle { color: black; background: #eee; box-shadow: none; }
}
