:root{color-scheme:light;--ink:#332f26;--muted:#68604e;--accent:#294b3b;--gold:#c9ae76;--paper:#f2e7ce;font-family:Georgia,'Times New Roman',serif;color:var(--ink);background:#18221e;font-synthesis:none;-webkit-text-size-adjust:100%}
*{box-sizing:border-box}body{margin:0}.master{--accent:#6a3540;background:#251e21}a{color:var(--accent);text-underline-offset:.22em}a:hover{text-decoration-thickness:2px}a:focus-visible,summary:focus-visible,[tabindex]:focus-visible{outline:3px solid #99671c;outline-offset:4px}img{max-width:100%;height:auto}main{max-width:1500px;margin:auto}.site-header{max-width:1500px;margin:auto;min-height:88px;padding:22px 4%;display:flex;align-items:center;justify-content:space-between;gap:24px;color:#ecdfc2}.site-header a{color:inherit;text-decoration:none}.wordmark{font-size:25px;letter-spacing:.04em}.wordmark span{font-style:italic;font-size:17px}.site-header nav{display:flex;gap:28px;font:12px/1.6 system-ui,sans-serif}.site-header nav a:hover{color:#e7bc6e}.book-cover{display:grid;grid-template-columns:1.05fr 1fr;background:#243c32;color:#f4e7c7;margin:0 3%;border:1px solid #978459;box-shadow:0 18px 50px #0004;position:relative}.master .book-cover{background:#482c32}.cover-copy{padding:35px 9% 30px;display:flex;flex-direction:column;justify-content:center;min-height:480px;position:relative}.cover-copy:before{content:'';position:absolute;inset:12px;border:1px solid #c9ae7645;pointer-events:none}.kicker{font:10px/1.6 system-ui,sans-serif;letter-spacing:.22em;text-transform:uppercase;display:flex;justify-content:space-between;gap:12px;color:#d4bd8d;margin:0}.cover-ornament{font-size:24px;color:#d0b677;margin:34px 0 20px}.cover-title{font-size:clamp(42px,5.4vw,79px);font-weight:400;line-height:1.02;letter-spacing:-.035em;margin:0;max-width:590px}.cover-subtitle{font-size:20px;font-style:italic;color:#d2c9ad;margin:22px 0 38px}.cover-bottom{border-top:1px solid #cab17c55;padding-top:22px;display:flex;justify-content:space-between;gap:16px;font:11px/1.6 system-ui,sans-serif}.cover-bottom span{color:#d2c9ad}.cover-bottom a{color:#f5e2b8}.cover-art{position:relative;min-width:0;overflow:hidden}.cover-art>img{height:100%;width:100%;object-fit:cover;display:block;position:absolute}.cover-art:after{content:'';position:absolute;inset:12px;border:1px solid #e7d3a666;pointer-events:none}.art-label{position:absolute;bottom:25px;right:25px;background:#1c211cd9;padding:8px 13px;font:10px/1.5 system-ui,sans-serif;text-transform:uppercase;letter-spacing:.15em;color:#f4e7c7}.edition-bar{margin:0 3%;padding:19px 25px;display:flex;justify-content:space-between;gap:15px;font:10px/1.6 system-ui,sans-serif;letter-spacing:.12em;text-transform:uppercase;color:#d4c6a8}.book-layout{display:grid;grid-template-columns:255px minmax(0,1fr);margin:0 3% 35px;background:var(--paper);box-shadow:0 12px 36px #0003}.contents{padding:34px 22px;background:#e6d9bb;border-right:1px solid #bcac8966;position:sticky;top:0;align-self:start;max-height:100dvh;overflow:auto;scrollbar-width:thin}.contents summary{color:var(--accent);font-size:18px;font-variant:small-caps;cursor:pointer;letter-spacing:.05em;margin-bottom:22px}.contents ol{list-style:none;padding:0;margin:0;counter-reset:chapter}.contents li{line-height:1.4;margin:0 0 15px}.contents a{text-decoration:none;font-size:13px;color:#554f40;display:block}.contents a:hover{color:var(--accent);text-decoration:underline}.contents .depth-2{counter-increment:chapter}.depth-2>a{display:grid;grid-template-columns:23px 1fr}.depth-2>a:before{content:counter(chapter,decimal-leading-zero);font-size:10px;color:#817150;padding-top:2px}.contents .depth-3{margin:0 0 12px 23px}.contents .depth-3 a{font-size:12px;color:#635d4c}.companion{border-top:1px solid #b9a780;margin-top:28px;padding-top:20px;line-height:1.7}.companion span{display:block;font:9px/2 system-ui,sans-serif;text-transform:uppercase;letter-spacing:.15em;color:#756348}.book-pages{min-width:0;padding:48px clamp(24px,4.6vw,72px) 55px;background:linear-gradient(#f7eedcdf,#f7eedcdf),url('/assets/handbooks/paper.webp') center top/900px auto;counter-reset:section}.source-title{font-size:36px;line-height:1.2;color:var(--accent);font-weight:400;margin:0 0 22px}.preface{font-style:italic;color:var(--muted);border-bottom:1px solid #bbae9077;padding-bottom:25px;margin-bottom:36px}.source-content{font-size:16px;line-height:1.82;overflow-wrap:anywhere}.source-content p{margin:0 0 20px}.source-content li{padding-left:5px;margin-bottom:7px}.source-content ul{padding-left:23px}.rule-section{display:flow-root;margin-bottom:40px}h2,h3{scroll-margin-top:25px;line-height:1.25;font-weight:400;color:var(--accent);text-wrap:balance}h2{counter-increment:section;font-size:31px;border-top:1px solid #ab9774;padding-top:26px;margin:12px 0 25px}h2:before{content:counter(section,decimal-leading-zero);font:12px/1 system-ui,sans-serif;display:block;letter-spacing:.15em;color:#877146;margin-bottom:12px}h3{font-size:24px;margin:8px 0 22px;border-bottom:1px solid #c8b99388;padding-bottom:12px}.heading-anchor{color:inherit;text-decoration:none}.heading-anchor:hover{text-decoration:underline}.town-plate{float:right;width:48%;margin:0 0 12px 24px}.town-plate img{display:block}.town-plate figcaption,.map-plate figcaption{text-align:center;font-size:11px;font-style:italic;color:#796747;margin-top:8px}.art-gallery{display:flex;justify-content:center;align-items:flex-end;gap:10px;margin:15px 0 28px}.heroes img{width:calc((100% - 50px)/6);height:180px;object-fit:contain}.spell-plate{align-items:center;gap:25px;padding:12px;border-top:1px solid #c8b99377;border-bottom:1px solid #c8b99377}.spell-plate img{width:68px;height:68px;object-fit:contain}.guardians{float:right;width:36%;margin:0 0 15px 25px}.guardians img{width:48%;height:190px;object-fit:contain}.bestiary img{width:23%;height:195px;object-fit:contain}.map-plate{max-width:540px;margin:0 auto 30px}.map-plate img{display:block;width:100%}.table-frame{overflow-x:auto;margin:25px 0 28px;border:1px solid #baa985;box-shadow:0 4px 0 #bfad871f;scrollbar-color:#a38e66 #eadcc0;scrollbar-width:thin}table{border-collapse:collapse;width:100%;font-size:13px;line-height:1.6;text-align:left}th{background:var(--accent);color:#f5ebd5;font-weight:400;font-variant:small-caps;letter-spacing:.025em;padding:12px 14px;white-space:nowrap}td{padding:11px 14px;border-bottom:1px solid #c6b89680;vertical-align:top;min-width:56px}tbody tr:nth-child(even){background:#c3ad7720}tbody tr:hover{background:#c3ad7735}td:first-child{font-weight:bold;color:var(--accent);min-width:120px}td:last-child{min-width:180px}td{overflow-wrap:normal}table:has(th:nth-child(7)){min-width:780px}table:has(th:nth-child(9)){min-width:900px}.spell-icon{width:32px;height:32px;object-fit:contain;float:left;margin:0 10px 2px 0}.spoiler-note{border-left:3px solid var(--accent);background:#7a3c4110;padding:18px 22px;font:13px/1.8 system-ui,sans-serif;margin-bottom:30px}.spoiler-note strong{display:block;color:var(--accent)}.endmark{text-align:center;color:#96794c;font-size:20px;margin:45px}.back-top{display:block;text-align:center;font-size:13px}.book-footer{text-align:center;padding:20px 20px 45px;color:#bfb49d;font:11px/1.9 system-ui,sans-serif}.book-footer>a{font:20px Georgia,serif;color:#e4d3b0}.book-footer a{color:inherit}.skip-link{position:fixed;top:-100px;left:15px;background:#fff4d8;padding:14px;z-index:10}.skip-link:focus{top:15px}
@media(min-width:1500px){.cover-copy{min-height:540px}}
@media(max-width:1050px){.book-layout{grid-template-columns:210px minmax(0,1fr)}.contents{padding:25px 16px}.book-pages{padding:35px 26px}.cover-copy{min-height:420px}.heroes img{height:140px}.site-header nav{gap:15px}}
@media(max-width:760px){.site-header{align-items:flex-start;padding:20px 5%;flex-direction:column;gap:14px}.site-header nav{font-size:11px;flex-wrap:wrap}.book-cover{grid-template-columns:1fr;margin:0 4%}.cover-copy{padding:30px 8%;min-height:390px}.cover-title{font-size:54px}.cover-art{height:240px}.cover-art>img{object-position:center 48%}.cover-ornament{margin:24px 0 16px}.cover-subtitle{margin:20px 0 28px}.edition-bar{margin:0 4%;padding:18px 5px;flex-wrap:wrap;gap:5px;font-size:9px}.book-layout{display:block;margin:0 4% 24px}.contents{position:relative;max-height:none;border-right:0;border-bottom:1px solid #bcac89;padding:20px 24px}.contents summary{margin-bottom:0}.contents details[open] summary{margin-bottom:20px}.contents nav{max-height:230px;overflow:auto;padding-right:8px}.companion{margin-top:18px;padding-top:14px}.book-pages{padding:30px 22px}.source-title{font-size:31px}.source-content{font-size:16px;line-height:1.8}h2{font-size:27px}h3{font-size:23px}.town-plate{float:none;width:100%;max-width:400px;margin:0 auto 20px}.heroes{flex-wrap:wrap;gap:12px}.heroes img{width:calc((100% - 24px)/3);height:160px}.spell-plate{gap:12px}.spell-plate img{width:calc((100% - 48px)/5);height:auto}.guardians{float:none;width:75%;margin:0 auto 25px}.bestiary{flex-wrap:wrap}.bestiary img{width:45%;height:180px}td,th{padding:10px 12px}.table-frame{margin-inline:-5px}.cover-bottom{font-size:10px}.kicker{font-size:9px}}
@media print{body,.master{background:white;color:black}.site-header,.book-cover,.edition-bar,.contents,.book-footer,.back-top,.skip-link{display:none}.book-layout{display:block;margin:0;box-shadow:none}.book-pages{padding:0;background:white}.rule-section{margin-bottom:20px}.source-content{font-size:10pt;line-height:1.5}h2,h3{break-after:avoid}.table-frame{overflow:visible;border:0}table,table:has(th:nth-child(7)),table:has(th:nth-child(9)){min-width:0;font-size:7pt}th,td{min-width:0!important;white-space:normal;padding:4px;overflow-wrap:anywhere}tr,img{break-inside:avoid}th{background:#e4e0d5;color:black}.table-frame{box-shadow:none}a{color:inherit}h2{font-size:21pt}h3{font-size:16pt}.source-title{font-size:28pt}.art-gallery img{max-height:110px}.source-content a{overflow-wrap:anywhere}}

/* Long authored JSON catalog values wrap within their table cells. */
.table-frame td { overflow-wrap: anywhere; }

/* Long challenge outcomes read as individual reference cards, with table semantics retained. */
.challenge-frame { border: 0; box-shadow: none; overflow: visible; }
.challenge-table { display: block; min-width: 0 !important; }
.challenge-table thead { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); }
.challenge-table tbody { display: block; }
.challenge-table tr { display: grid; grid-template-columns: repeat(6, minmax(0, 1fr)); border: 1px solid #b7a17c; margin-bottom: 28px; background: #fcf4e366; }
.challenge-table tbody tr:nth-child(even), .challenge-table tbody tr:hover { background: #fcf4e366; }
.challenge-table td { display: block; min-width: 0; padding: 16px 18px; font-size: 14px; line-height: 1.8; }
.challenge-table td:first-child { grid-column: span 6; background: var(--accent); color: #f5ebd5; font-size: 23px; font-weight: 400; }
.challenge-table td:nth-child(2) { grid-column: span 1; }
.challenge-table td:nth-child(3) { grid-column: span 2; }
.challenge-table td:nth-child(4) { grid-column: span 3; }
.challenge-table td:nth-child(5), .challenge-table td:nth-child(6) { grid-column: span 3; border-bottom: 0; }
.cell-label { display: block; color: #725b3d; font: 10px/1.6 system-ui, sans-serif; text-transform: uppercase; letter-spacing: .1em; margin-bottom: 8px; }
.challenge-table td:first-child .cell-label { color: #e1cda5; }
.book-pages code { font-size: .85em; background: #a68c5820; padding: .1em .25em; border-radius: 2px; }
@media(max-width:1050px) {
  .challenge-table td:nth-child(2), .challenge-table td:nth-child(3) { grid-column: span 3; }
  .challenge-table td:nth-child(4) { grid-column: span 6; }
}
@media(max-width:600px) {
  .challenge-table tr { display: block; }
  .challenge-table td { padding: 14px; }
  .challenge-table td:nth-child(5) { border-bottom: 1px solid #c6b89680; }
}
@media print {
  .challenge-table tr { display: block; break-inside: avoid; }
  .challenge-table td { padding: 5px; font-size: 9pt; }
  .challenge-table td:first-child { background: #e4e0d5; color: black; font-size: 14pt; }
  .challenge-table td:first-child .cell-label { color: #725b3d; }
}
.compact-table td { min-width: 0; white-space: nowrap; }
.challenge-table td:first-child { text-transform: capitalize; }
