drakosfire commited on
Commit
8ac1fbd
1 Parent(s): 836be9a

formatted css, removed iframe print function, replaced with print.window(), add @media css to storeUI.html that print's only brewRenderer

Browse files
app.py CHANGED
@@ -33,11 +33,6 @@ def apply_headers(response):
33
  response.headers["Cross-Origin-Opener-Policy"] = "same-origin-allow-popups"
34
  return response
35
 
36
- # # Default route for index
37
- # @app.route('/')
38
- # def index():
39
- # return send_from_directory('.', 'storeUI.html') # Make sure this points to your main HTML file
40
-
41
  @app.route('/')
42
  def index():
43
  css_files = {
@@ -50,7 +45,6 @@ def index():
50
  }
51
  return render_template('storeUI.html', css_files=css_files)
52
 
53
-
54
  CORS(app)# Route to handle the incoming POST request with user description
55
 
56
  @app.route('/process-description', methods=['POST'])
@@ -84,17 +78,6 @@ def generate_image():
84
  return jsonify({'image_url': image_url})
85
  except Exception as e:
86
  return jsonify({'error': str(e)}), 500
87
-
88
- # New route to convert HTML to PDF
89
- @app.route('/proxy.html', methods=['POST'])
90
- def proxy():
91
- data = request.json
92
- html_content = data.get('htmlContent', '')
93
- print(f"Received HTML content: {html_content}")
94
-
95
- # Render the proxy HTML with the provided content
96
- return render_template('proxy.html', html_content=html_content)
97
-
98
 
99
  if __name__ == "__main__":
100
  app.run(host="0.0.0.0", port=7860, debug=True) # Run the app on localhost, port 7860
 
33
  response.headers["Cross-Origin-Opener-Policy"] = "same-origin-allow-popups"
34
  return response
35
 
 
 
 
 
 
36
  @app.route('/')
37
  def index():
38
  css_files = {
 
45
  }
46
  return render_template('storeUI.html', css_files=css_files)
47
 
 
48
  CORS(app)# Route to handle the incoming POST request with user description
49
 
50
  @app.route('/process-description', methods=['POST'])
 
78
  return jsonify({'image_url': image_url})
79
  except Exception as e:
80
  return jsonify({'error': str(e)}), 500
 
 
 
 
 
 
 
 
 
 
 
81
 
82
  if __name__ == "__main__":
83
  app.run(host="0.0.0.0", port=7860, debug=True) # Run the app on localhost, port 7860
closed-mimic-trashcan.png DELETED

Git LFS Details

  • SHA256: 024c948ed4d4d3ed43af666149e8d1bfe9623dbb9a7950202b21d2e89006d051
  • Pointer size: 131 Bytes
  • Size of remote file: 481 kB
mimic_trashcan.png DELETED

Git LFS Details

  • SHA256: f7335ca7729250517199f465ea29ae6f9c12b460eec5a6fb9595a7c6578242da
  • Pointer size: 131 Bytes
  • Size of remote file: 558 kB
scripts.js CHANGED
@@ -98,7 +98,7 @@ document.addEventListener("DOMContentLoaded", function() {
98
  // Handle print button click
99
  if (event.target.id === 'printButton') {
100
  console.log('Print button clicked. Element ID:', event.target.id);
101
- openPrintModal();
102
  }
103
 
104
  // Handle generate image button click
@@ -190,65 +190,12 @@ document.addEventListener("DOMContentLoaded", function() {
190
  console.log('Autofill complete, all blocks moved to page-container');
191
  }
192
 
193
- // This works in principal when deployed. It looks like shit but it does function.
194
- function openPrintModal() {
195
- // Clone the original content before modifying
196
- originalContent = document.body.cloneNode(true);
197
- var brewRendererContent = document.getElementById('brewRenderer').innerHTML;
198
-
199
- // Create a hidden iframe or select an existing one
200
- var printIframe = document.createElement('iframe');
201
- printIframe.style.position = 'fixed';
202
- printIframe.style.width = '0px';
203
- printIframe.style.height = '0px';
204
- printIframe.style.border = 'none'; // Make the iframe invisible
205
- document.body.appendChild(printIframe);
206
- // Write the modal content to the iframe
207
- var iframeDoc = printIframe.contentWindow.document;
208
- iframeDoc.open();
209
-
210
- fetch('/proxy.html', {
211
- method: 'POST',
212
- headers: {
213
- 'Content-Type': 'application/json',
214
- },
215
- body: JSON.stringify({ htmlContent: brewRendererContent }),
216
- })
217
- .then(response => response.text())
218
- .then(html => {
219
- document.getElementById('modalPreviewContent').innerHTML = html;
220
-
221
- var modal = document.getElementById('printModal');
222
- modal.style.display = "block";
223
-
224
- document.getElementById('print-button').onclick = function() {
225
- printIframe.contentWindow.print();
226
- };
227
-
228
- document.getElementById('cancel-button').onclick = function() {
229
- closePrintModal();
230
- };
231
-
232
- document.getElementsByClassName('close')[0].onclick = function() {
233
- closePrintModal();
234
- };
235
- iframeDoc.write(document.getElementById('modalPreviewContent').innerHTML);
236
- iframeDoc.close();
237
- // Wait for the content to load, then trigger the print dialog
238
- printIframe.contentWindow.focus();
239
- printIframe.contentWindow.print();
240
- })
241
-
242
- .catch(error => {
243
- console.error('Error loading the print preview:', error);
244
- });
245
  }
246
 
247
- function closePrintModal() {
248
- var modal = document.getElementById('printModal');
249
- modal.style.display = "none";
250
- document.getElementById('modalPreviewContent').innerHTML = '';
251
- }
252
 
253
  // Store initial positions of the blocks
254
  function storeInitialPositions() {
 
98
  // Handle print button click
99
  if (event.target.id === 'printButton') {
100
  console.log('Print button clicked. Element ID:', event.target.id);
101
+ printScreen();
102
  }
103
 
104
  // Handle generate image button click
 
190
  console.log('Autofill complete, all blocks moved to page-container');
191
  }
192
 
193
+ // This works in principal when deployed. It looks like shit but it does function. Still can't print but it is in an iframe.
194
+ function printScreen() {
195
+ window.print()
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
196
  }
197
 
198
+
 
 
 
 
199
 
200
  // Store initial positions of the blocks
201
  function storeInitialPositions() {
static/5ePHBstyle.css CHANGED
@@ -1,20 +1,1505 @@
1
- @font-face{font-family:BookInsanityRemake;src:url('./themes/fonts/5e/Bookinsanity.woff2');font-weight:normal;font-style:normal}@font-face{font-family:BookInsanityRemake;src:url('./themes/fonts/5e/Bookinsanity Bold.woff2');font-weight:bold;font-style:normal}@font-face{font-family:BookInsanityRemake;src:url('./themes/fonts/5e/Bookinsanity Italic.woff2');font-weight:normal;font-style:italic}@font-face{font-family:BookInsanityRemake;src:url('./themes/fonts/5e/Bookinsanity Bold Italic.woff2');font-weight:bold;font-style:italic}@font-face{font-family:ScalySansRemake;src:url('./themes/fonts/5e/Scaly Sans.woff2');font-weight:normal;font-style:normal}@font-face{font-family:ScalySansRemake;src:url('./themes/fonts/5e/Scaly Sans Bold.woff2');font-weight:bold;font-style:normal}@font-face{font-family:ScalySansRemake;src:url('./themes/fonts/5e/Scaly Sans Italic.woff2');font-weight:normal;font-style:italic}@font-face{font-family:ScalySansRemake;src:url('./themes/fonts/5e/Scaly Sans Bold Italic.woff2');font-weight:bold;font-style:italic}@font-face{font-family:ScalySansSmallCapsRemake;src:url('./themes/fonts/5e/Scaly Sans Caps.woff2');font-weight:normal;font-style:normal}@font-face{font-family:WalterTurncoat;src:url('./themes/fonts/5e/WalterTurncoat-Regular.woff2');font-weight:normal;font-style:normal}@font-face{font-family:MrEavesRemake;src:url('./themes/fonts/5e/Mr Eaves Small Caps.woff2');font-weight:normal;font-style:normal}@font-face{font-family:SolberaImitationRemake;src:url('./themes/fonts/5e/Solbera Imitation Tweak.woff2');font-weight:normal;font-style:normal}@font-face{font-family:NodestoCapsCondensed;src:url('./themes/fonts/5e/Nodesto Caps Condensed.woff2');font-weight:normal;font-style:normal}@font-face{font-family:NodestoCapsCondensed;src:url('./themes/fonts/5e/Nodesto Caps Condensed Bold.woff2');font-weight:bold;font-style:normal}@font-face{font-family:NodestoCapsCondensed;src:url('./themes/fonts/5e/Nodesto Caps Condensed Italic.woff2');font-weight:normal;font-style:italic}@font-face{font-family:NodestoCapsCondensed;src:url('./themes/fonts/5e/Nodesto Caps Condensed Bold Italic.woff2');font-weight:bold;font-style:italic}@font-face{font-family:NodestoCapsWide;src:url('./themes/fonts/5e/Nodesto Caps Wide.woff2');font-weight:normal;font-style:normal}@font-face{font-family:Overpass;src:url('./themes/fonts/5e/Overpass Medium.woff2');font-weight:500;font-style:normal}@font-face{font-family:Davek;src:url('./themes/fonts/5e/Davek.woff2');font-weight:500;font-style:normal}@font-face{font-family:Iokharic;src:url('./themes/fonts/5e/Iokharic.woff2');font-weight:500;font-style:normal}@font-face{font-family:Rellanic;src:url('./themes/fonts/5e/Rellanic.woff2');font-weight:500;font-style:normal}:root{--HB_Color_Background:#EEE5CE;--HB_Color_Accent:#E0E5C1;--HB_Color_HeaderUnderline:#C0AD6A;--HB_Color_HorizontalRule:#9C2B1B;--HB_Color_HeaderText:#58180D;--HB_Color_MonsterStatBackground:#F2E5B5;--HB_Color_CaptionText:#766649;--HB_Color_WatercolorStain:#BBAD82;--HB_Color_Footnotes:#C9AD6A}@page{margin:0}body{counter-reset:phb-page-numbers}*{-webkit-print-color-adjust:exact}.columnWrapper{column-gap:inherit;max-height:100%;column-span:all;columns:inherit}.page{column-count:2;column-fill:auto;column-gap:.9cm;column-width:8cm;-webkit-column-count:2;-moz-column-count:2;-webkit-column-width:8cm;-moz-column-width:8cm;-webkit-column-gap:.9cm;-moz-column-gap:.9cm;position:relative;z-index:15;box-sizing:border-box;width:215.9mm;height:279.4mm;padding:1.4cm 1.9cm 1.7cm;overflow:hidden;font-family:"BookInsanityRemake";font-size:.34cm;counter-increment:phb-page-numbers;background-color:var(--HB_Color_Background);background-image:url('./themes/assets/parchmentBackground.jpg');text-rendering:optimizeLegibility;page-break-before:always;page-break-after:always}.page p{display:block;line-height:1.25em;overflow-wrap:break-word}.page p+*{margin-top:.325cm}.page p+p{margin-top:0}.page ul{padding-left:1.4em;margin-bottom:.8em;line-height:1.25em;list-style-position:outside;list-style-type:disc}.page ol{padding-left:1.4em;margin-bottom:.8em;line-height:1.25em;list-style-position:outside;list-style-type:decimal}.page p+p,.page ul+p,.page ol+p{text-indent:1em}.page img{z-index:-1}.page strong{font-weight:bold;letter-spacing:-0.02em}.page em{font-style:italic}.page sup{font-size:smaller;line-height:0;vertical-align:super}.page sub{font-size:smaller;line-height:0;vertical-align:sub}.page h1,.page h2,.page h3,.page h4{font-family:"MrEavesRemake";font-weight:800;color:var(--HB_Color_HeaderText)}.page h1{margin-bottom:.18cm;column-span:all;font-size:.89cm;line-height:1em;-webkit-column-span:all;-moz-column-span:all}.page h1+p::first-letter{float:left;padding-bottom:2px;padding-left:40px;margin-top:-0.3cm;margin-bottom:-20px;margin-left:-40px;font-family:"SolberaImitationRemake";font-size:3.5cm;line-height:1em;color:rgba(0,0,0,0);background-image:linear-gradient(-45deg, #322814, #998250, #322814);-webkit-background-clip:text;background-clip:text}.page h1+p::first-line{font-variant:small-caps}.page h2{font-size:.75cm;line-height:.988em}.page h3{font-size:.575cm;line-height:.995em;border-bottom:2px solid var(--HB_Color_HeaderUnderline)}.page h3+*{margin-top:.17cm}.page *+h3{margin-top:.155cm}.page h4{font-size:.458cm;line-height:.971em}.page h4+*{margin-top:.09cm}.page *+h4{margin-top:.235cm}.page h5{font-family:"ScalySansSmallCapsRemake";font-size:.423cm;font-weight:900;line-height:.951em}.page h5+*{margin-top:.2cm}.page table{font-family:"ScalySansRemake";font-size:.318cm;line-height:1.2em;width:100%;line-height:16px}.page table p,.page table dl,.page table ul,.page table ol{line-height:1.2em}.page table ul,.page table ol{padding-left:1em}.page table em{font-style:italic}.page table strong{font-weight:800;letter-spacing:-0.02em}.page table h5+*{margin-top:.1cm}.page table+*{margin-top:.325cm}.page table thead{display:table-row-group;font-weight:800}.page table thead th{padding:0 1.5px;vertical-align:bottom}.page table tbody tr td{padding:0 1.5px}.page table tbody tr:nth-child(odd){background-color:var(--HB_Color_Accent)}.page .quote>p{font-style:italic;line-height:.54cm}.page .quote>p:first-child::first-line{font-size:.38cm;font-style:normal;font-variant:small-caps}.page .quote p+.attribution{margin-top:0}.page .quote .attribution{display:block;font-style:normal;line-height:.54cm;text-align:right}.page .quote .attribution::before{margin-right:.2em;content:'---'}.page .quote+*{margin-top:.54cm}.page .note{font-family:"ScalySansRemake";font-size:.318cm;line-height:1.2em;padding:.13cm .16cm;background-color:var(--HB_Color_Accent);border-style:solid;border-width:1px;border-image:url('../dependencies/themes/assets/noteBorder.png') 12 stretch;border-image-width:11px;border-image-outset:9px 0px;box-shadow:1px 4px 14px #888888}.page .note p,.page .note dl,.page .note ul,.page .note ol{line-height:1.2em}.page .note ul,.page .note ol{padding-left:1em}.page .note em{font-style:italic}.page .note strong{font-weight:800;letter-spacing:-0.02em}.page .note h5+*{margin-top:.1cm}.page :where(.page .note){margin-top:9px}.page .note+*{margin-top:.45cm}.page .note h5{font-size:.375cm}.page .note p{display:block;padding-bottom:0px}.page .note :last-child{margin-bottom:0}.page .descriptive{font-family:"ScalySansRemake";font-size:.318cm;line-height:1.2em;padding:.1em;background-color:#FAF7EA;border-style:solid;border-width:7px;border-image:url('themes/assets/descriptiveBorder.png') 12 stretch;border-image-outset:4px;box-shadow:0 0 6px #FAF7EA}.page .descriptive p,.page .descriptive dl,.page .descriptive ul,.page .descriptive ol{line-height:1.2em}.page .descriptive ul,.page .descriptive ol{padding-left:1em}.page .descriptive em{font-style:italic}.page .descriptive strong{font-weight:800;letter-spacing:-0.02em}.page .descriptive h5+*{margin-top:.1cm}.page :where(.page .descriptive){margin-top:4px}.page .descriptive+*{margin-top:.45cm}.page .descriptive h5{font-size:.375cm}.page .descriptive p{display:block;padding-bottom:0px;line-height:1.5em}.page .descriptive :last-child{margin-bottom:0}.page .artist{position:absolute;width:auto;font-family:"WalterTurncoat";font-size:.27cm;color:var(--HB_Color_CaptionText);text-align:center}.page .artist p,.page .artist p+p{margin:unset;line-height:1em;text-indent:unset}.page .artist h5{font-family:"WalterTurncoat";font-size:1.3em}.page .artist a{color:inherit;text-decoration:unset}.page .artist a:hover{text-decoration:underline}.page .watermark{position:absolute;top:0;left:0;z-index:500;display:grid !important;place-items:center;justify-content:center;width:100%;height:100%;font-size:120px;color:black;text-transform:uppercase;mix-blend-mode:overlay;opacity:30%;transform:rotate(-45deg)}.page .watermark p{margin-bottom:none}.page [class*='watercolor']{position:absolute;z-index:-2;width:2000px;height:2000px;background-color:var(--HB_Color_WatercolorStain);background-size:cover;-webkit-mask-image:var(--wc);-webkit-mask-size:contain;-webkit-mask-repeat:no-repeat;mask-image:var(--wc);mask-size:contain;mask-repeat:no-repeat;--wc:url('/assets/watercolor/watercolor1.png')}.page .watercolor1{--wc:url('/assets/watercolor/watercolor1.png')}.page .watercolor2{--wc:url('/assets/watercolor/watercolor2.png')}.page .watercolor3{--wc:url('/assets/watercolor/watercolor3.png')}.page .watercolor4{--wc:url('/assets/watercolor/watercolor4.png')}.page .watercolor5{--wc:url('/assets/watercolor/watercolor5.png')}.page .watercolor6{--wc:url('/assets/watercolor/watercolor6.png')}.page .watercolor7{--wc:url('/assets/watercolor/watercolor7.png')}.page .watercolor8{--wc:url('/assets/watercolor/watercolor8.png')}.page .watercolor9{--wc:url('/assets/watercolor/watercolor9.png')}.page .watercolor10{--wc:url('/assets/watercolor/watercolor10.png')}.page .watercolor11{--wc:url('/assets/watercolor/watercolor11.png')}.page .watercolor12{--wc:url('/assets/watercolor/watercolor12.png')}.page .monster{font-family:"ScalySansRemake";font-size:.318cm;line-height:1.2em;position:relative;padding:0px;margin-bottom:.325cm}.page .monster p,.page .monster dl,.page .monster ul,.page .monster ol{line-height:1.2em}.page .monster ul,.page .monster ol{padding-left:1em}.page .monster em{font-style:italic}.page .monster strong{font-weight:800;letter-spacing:-0.02em}.page .monster h5+*{margin-top:.1cm}.page .monster.frame{width:calc(100% + .32cm);padding:4px 2px;margin-right:-0.16cm;margin-left:-0.16cm;background-color:var(--HB_Color_MonsterStatBackground);background-image:url('./themes/assets/parchmentBackgroundGrayscale.jpg');background-attachment:fixed;background-blend-mode:overlay;border-style:solid;border-width:7px 6px;border-image:url('./themes/assets/monsterBorderFancy.png') 14 round;border-image-outset:0px 2px;box-shadow:1px 4px 14px #888888}.page .monster h2{margin:0;font-size:.62cm;line-height:1em}.page .monster h2+p{margin-bottom:0;font-size:.304cm}.page .monster h3{padding-bottom:.05cm;font-family:"ScalySansRemake";font-weight:800;font-variant:small-caps;border-bottom:2px solid var(--HB_Color_HeaderText)}.page .monster hr{height:6px;margin:.12cm 0;visibility:visible;background-image:url('./themes/assets/redTriangle.png');background-size:100% 100%;border:none}.page .monster hr~:is(dl,p){color:var(--HB_Color_HeaderText)}.page .monster hr:last-of-type~:is(dl,p){color:inherit}.page .monster hr:last-of-type+*{margin-top:.325cm}.page .monster hr+table:first-of-type{margin:0;column-span:none;color:var(--HB_Color_HeaderText);background-color:transparent;border-style:none;border-image:none;-webkit-column-span:none}.page .monster hr+table:first-of-type tr{background-color:transparent}.page .monster hr+table:first-of-type td,.page .monster hr+table:first-of-type th{padding:0px}.page .monster :last-child{margin-bottom:0}.page .monster.wide{column-count:2;column-fill:balance;column-gap:.9cm;column-width:7.68cm;-webkit-column-count:2;-moz-column-count:2;-webkit-column-width:7.68cm;-moz-column-width:7.68cm;-webkit-column-gap:.9cm;-moz-column-gap:.9cm}.page:after{position:absolute;bottom:0px;left:0px;z-index:100;width:100%;height:50px;content:'';background-image:url('./themes/assets/PHB_footerAccent.png');background-size:cover}.page:nth-child(even)::after{transform:scaleX(-1)}.page:nth-child(even) .pageNumber{left:2px}.page:nth-child(even) .footnote{left:80px;text-align:left}.page .pageNumber{position:absolute;right:2px;bottom:22px;width:50px;font-size:.9em;color:var(--HB_Color_Footnotes);text-align:center;text-indent:0}.page .pageNumber.auto::after{content:counter(phb-page-numbers)}.page .footnote{position:absolute;right:80px;bottom:32px;z-index:150;width:200px;font-size:.8em;color:var(--HB_Color_Footnotes);text-align:right}.page code{padding:0px 4px;font-family:'Courier New',"Courier",monospace;font-size:.325;color:#58180D;overflow-wrap:break-word;white-space:pre-wrap;background-color:#FAF7EA;border-radius:4px}.page pre code{display:inline-block;width:100%;padding:.15cm;margin-bottom:2px;border-style:solid;border-width:1px;border-radius:12px;border-image:url('/assets/codeBorder.png') 26 stretch;border-image-width:10px;border-image-outset:2px}.page :where(.page pre code){margin-top:2px}.page pre code+*{margin-top:.325cm}.page hr{margin:0px;visibility:hidden}.page .columnSplit{visibility:hidden;-webkit-column-break-after:always;break-after:always;-moz-column-break-after:always}.page blockquote,.page table{z-index:15;-webkit-column-break-inside:avoid;page-break-inside:avoid;break-inside:avoid}.page table+p{text-indent:1em}.page ul ul,.page ol ol,.page ul ol,.page ol ul{margin-bottom:0px;margin-left:1.5em}.page li{-webkit-column-break-inside:avoid;page-break-inside:avoid;break-inside:avoid}.page .spellList{font-family:"ScalySansRemake";font-size:.318cm;line-height:1.2em;column-count:2}.page .spellList p,.page .spellList dl,.page .spellList ul,.page .spellList ol{line-height:1.2em}.page .spellList ul,.page .spellList ol{padding-left:1em}.page .spellList em{font-style:italic}.page .spellList strong{font-weight:800;letter-spacing:-0.02em}.page .spellList h5+*{margin-top:.1cm}.page .spellList ul+h5{margin-top:15px}.page .spellList p,.page .spellList ul{font-size:.352cm;line-height:1.265em}.page .spellList ul{padding-left:1em;margin-bottom:.5em;text-indent:-1em;list-style-type:none;-webkit-column-break-inside:auto;page-break-inside:auto;break-inside:auto}.page .spellList.wide{column-count:4}
2
- .page .classTable th[colspan]:not([rowspan]){white-space:nowrap}
3
- .page .classTable.frame{width:calc(100% + .2cm);
4
- margin-top:.7cm;
5
- margin-right:-0.1cm;
6
- margin-bottom:.9cm;
7
- margin-left:-0.1cm;
8
- border-collapse:separate;
9
- background-color:white;
10
- border:initial;
11
- border-style:solid;
12
- border-image-source:url('../dependencies/themes/assets/frameBorder.png');
13
- border-image-slice:200;
14
- border-image-width:47px;
15
- border-image-outset:.4cm .3cm;
16
- border-image-repeat:stretch}
17
- .page.classTable.frame.wide:first-child{margin-top:.12cm}
18
- .page .classTable.frame+*{margin-top:0}
19
- .page .classTable.decoration{position:relative}
20
- .page .classTable.decoration::before{position:absolute;top:50%;left:50%;z-index:-1;width:7.75cm;height:calc(100% + 3.3cm);content:'';background-image:url('../../dependencies/assets/classTableDecoration.png'),url('/assets/classTableDecoration.png');filter:drop-shadow(0 0 1px #C8C5C080);background-repeat:no-repeat,no-repeat;background-position:top, bottom;background-size:contain, contain;transform:translateY(-50%) translateX(-50%)}.page .classTable.decoration.wide::before{width:calc(100% + 3.3cm);height:7.75cm;background-position:left, right}.page .classTable h5+table{margin-top:.2cm}.page:has(.frontCover){columns:1;text-align:center}.page:has(.frontCover)::after{all:unset}.page:has(.frontCover) h1{margin-top:1.2cm;margin-bottom:0;font-family:"NodestoCapsCondensed";font-size:2.245cm;font-weight:normal;line-height:.85em;color:white;text-shadow:unset;text-transform:uppercase;filter:drop-shadow(0 0 1.5px black) drop-shadow(0 0 0 black) drop-shadow(0 0 0 black) drop-shadow(0 0 0 black) drop-shadow(0 0 0 black) drop-shadow(0 0 0 black) drop-shadow(0 0 0 black) drop-shadow(0 0 0 black)}.page:has(.frontCover) h2{font-family:"NodestoCapsCondensed";font-size:.85cm;font-weight:normal;color:white;letter-spacing:.1cm;filter:drop-shadow(0 0 1px black) drop-shadow(0 0 0 black) drop-shadow(0 0 0 black) drop-shadow(0 0 0 black) drop-shadow(0 0 0 black) drop-shadow(0 0 0 black) drop-shadow(0 0 0 black) drop-shadow(0 0 0 black)}.page:has(.frontCover) hr{position:relative;display:block;width:12cm;height:.5cm;margin:auto;visibility:visible;background-image:url('/assets/horizontalRule.svg');filter:drop-shadow(0 0 3px black);background-size:100% 100%;border:none}.page:has(.frontCover) .banner{position:absolute;bottom:4.2cm;left:0;display:flex;flex-direction:column;justify-content:center;width:10.5cm;height:1.7cm;padding-top:.1cm;padding-left:1cm;font-family:"NodestoCapsCondensed";font-size:1cm;font-weight:normal;color:white;text-align:left;letter-spacing:.014cm;background-image:url('/assets/coverPageBanner.svg');filter:drop-shadow(2px 2px 2px black)}.page:has(.frontCover) .footnote{position:absolute;right:0;bottom:1.3cm;left:0;width:70%;margin-right:auto;margin-left:auto;font-family:"Overpass";font-size:.496cm;color:white;text-align:center;filter:drop-shadow(0 0 .7px black) drop-shadow(0 0 0 black) drop-shadow(0 0 0 black) drop-shadow(0 0 0 black) drop-shadow(0 0 0 black) drop-shadow(0 0 0 black) drop-shadow(0 0 0 black) drop-shadow(0 0 0 black)}.page:has(.frontCover) .logo{position:absolute;top:.5cm;right:0;left:0;filter:drop-shadow(0 0 .075cm black)}.page:has(.frontCover) .logo img{width:100%;height:2cm}.page:has(.insideCover){columns:1;text-align:center}.page:has(.insideCover)::after{all:unset}.page:has(.insideCover) h1{margin-top:1.2cm;margin-bottom:0;font-family:"NodestoCapsCondensed";font-size:2.1cm;font-weight:normal;line-height:.85em;text-transform:uppercase}.page:has(.insideCover) h2{font-family:"NodestoCapsCondensed";font-size:.85cm;font-weight:normal;letter-spacing:.5cm}.page:has(.insideCover) hr{position:relative;display:block;width:12cm;height:.5cm;margin:auto;visibility:visible;background-image:url('/assets/horizontalRule.svg');background-size:100% 100%;border:none}.page:has(.insideCover) .logo{position:absolute;right:0;bottom:1cm;left:0;height:2cm}.page:has(.insideCover) .logo img{width:100%;height:2cm}.page:has(.backCover){padding:2.25cm 1.3cm 2cm 1.3cm;color:#FFFFFF;columns:1}.page:has(.backCover)::after{all:unset}.page:has(.backCover) .columnWrapper{width:7.6cm}.page:has(.backCover) .backCover{position:absolute;inset:0;z-index:-1;width:11cm;background-image:url('/assets/backCover.png');background-repeat:no-repeat;background-size:contain}.page:has(.backCover) .blank{height:1.4em}.page:has(.backCover) h1{margin-bottom:.3cm;font-family:"NodestoCapsCondensed";font-size:1.35cm;line-height:.95em;color:#ED1C24;text-align:center}.page:has(.backCover) h1+p::first-line,.page:has(.backCover) h1+p::first-letter{all:unset}.page:has(.backCover) img{position:absolute;top:0px;z-index:-2;height:100%}.page:has(.backCover) hr{width:4.5cm;height:.53cm;margin-top:1.1cm;margin-right:auto;margin-left:auto;visibility:visible;background-image:url('/assets/horizontalRule.svg');background-size:100% 100%;border:none}.page:has(.backCover) p{font-family:"Overpass";font-size:.332cm;line-height:1.5em}.page:has(.backCover) hr+p{margin-top:.6cm;text-align:center}.page:has(.backCover) .logo{position:absolute;bottom:2cm;left:1.2cm;z-index:0;width:7.6cm;height:1.5cm}.page:has(.backCover) .logo img{position:relative;z-index:0;width:100%;height:1.5cm}.page:has(.backCover) .logo p{position:relative;width:100%;font-family:"NodestoCapsWide";font-size:.4cm;line-height:1em;color:#FFFFFF;text-align:center;text-indent:0;letter-spacing:.08em}.page:has(.partCover){padding-top:0;text-align:center;columns:1}.page:has(.partCover) .partCover{position:absolute;top:0;left:0;width:100%;height:6cm;background-image:url('/assets/partCoverHeaderPHB.png');background-repeat:no-repeat;background-size:100%}.page:has(.partCover) h1{position:relative;margin-top:.4cm;font-family:"NodestoCapsCondensed";font-size:2.3cm;text-align:center;text-transform:uppercase}.page:has(.partCover) h2{position:relative;margin-top:-0.7em;margin-right:auto;margin-left:auto;font-family:"Overpass";font-size:.45cm;line-height:1.1em}.page:has(.toc)::after{display:none}.page .toc{-webkit-column-break-inside:avoid;page-break-inside:avoid;break-inside:avoid}.page .toc h1{margin-bottom:.3cm;text-align:center}.page .toc a{display:inline;color:inherit;text-decoration:none}.page .toc a:hover{text-decoration:underline}.page .toc h4{margin-top:.2cm;line-height:.4cm}.page .toc h4+ul li{line-height:1.2em}.page .toc ul{padding-left:0;margin-top:0;list-style-type:none}.page .toc ul a{display:flex;flex-flow:row nowrap;justify-content:space-between;width:100%}.page .toc ul li+li h3{margin-top:.26cm;line-height:1em}.page .toc ul h3 span:first-child::after{border:none}.page .toc ul span{display:contents}.page .toc ul span:first-child::after{bottom:.08cm;flex:1;margin-right:.16cm;margin-bottom:.08cm;margin-left:.08cm;content:'';border-bottom:.05cm dotted #000000}.page .toc ul span:last-child{display:inline-block;align-self:flex-end;font-family:'BookInsanityRemake';font-size:.34cm;font-weight:normal;color:#000000}.page .toc ul ul{margin-left:1em}.page .toc.wide{column-count:2;column-fill:balance;column-gap:.9cm;column-width:7.68cm;-webkit-column-count:2;-moz-column-count:2;-webkit-column-width:7.68cm;-moz-column-width:7.68cm;-webkit-column-gap:.9cm;-moz-column-gap:.9cm}.page dl{padding-left:1em;line-height:1.25em;white-space:pre-line}.page dl+*{margin-top:.28cm}.page dl+*{margin-top:.17cm}.page p+dl{margin-top:.17cm}.page dt{display:inline;margin-right:5px;margin-left:-1em}.page dd{display:inline;margin-left:0px;text-indent:0px}.page .wide{margin-bottom:.325cm}.page h1+*{margin-top:0}.page .runeTable{margin-block:.7cm}.page .runeTable table{font-family:inherit}.page .runeTable table tbody tr{background:unset}.page .runeTable table th,.page .runeTable table td{width:1.3cm;height:1.3cm;font-weight:normal;text-transform:uppercase;vertical-align:middle;outline:1px solid #000000}.page .runeTable table th{font-family:"BookInsanityRemake";font-size:.45cm}.page .runeTable table td{font-size:.7cm}.page .runeTable.frame{border:initial;border-style:solid;border-image-source:url('/assets/scriptBorder.png');border-image-slice:170;border-image-width:1.4cm;border-image-outset:.45cm .35cm .4cm .4cm;border-image-repeat:stretch}.page .index{font-size:.218cm}.page .index ul ul{margin:0}.page .index ul{padding-left:0;text-indent:0;list-style-type:none}.page .index>ul>li{padding-left:1.5em;text-indent:-1.5em}
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ @font-face {
2
+ font-family: BookInsanityRemake;
3
+ src: url('./themes/fonts/5e/Bookinsanity.woff2');
4
+ font-weight: normal;
5
+ font-style: normal
6
+ }
7
+
8
+ @font-face {
9
+ font-family: BookInsanityRemake;
10
+ src: url('./themes/fonts/5e/Bookinsanity Bold.woff2');
11
+ font-weight: bold;
12
+ font-style: normal
13
+ }
14
+
15
+ @font-face {
16
+ font-family: BookInsanityRemake;
17
+ src: url('./themes/fonts/5e/Bookinsanity Italic.woff2');
18
+ font-weight: normal;
19
+ font-style: italic
20
+ }
21
+
22
+ @font-face {
23
+ font-family: BookInsanityRemake;
24
+ src: url('./themes/fonts/5e/Bookinsanity Bold Italic.woff2');
25
+ font-weight: bold;
26
+ font-style: italic
27
+ }
28
+
29
+ @font-face {
30
+ font-family: ScalySansRemake;
31
+ src: url('./themes/fonts/5e/Scaly Sans.woff2');
32
+ font-weight: normal;
33
+ font-style: normal
34
+ }
35
+
36
+ @font-face {
37
+ font-family: ScalySansRemake;
38
+ src: url('./themes/fonts/5e/Scaly Sans Bold.woff2');
39
+ font-weight: bold;
40
+ font-style: normal
41
+ }
42
+
43
+ @font-face {
44
+ font-family: ScalySansRemake;
45
+ src: url('./themes/fonts/5e/Scaly Sans Italic.woff2');
46
+ font-weight: normal;
47
+ font-style: italic
48
+ }
49
+
50
+ @font-face {
51
+ font-family: ScalySansRemake;
52
+ src: url('./themes/fonts/5e/Scaly Sans Bold Italic.woff2');
53
+ font-weight: bold;
54
+ font-style: italic
55
+ }
56
+
57
+ @font-face {
58
+ font-family: ScalySansSmallCapsRemake;
59
+ src: url('./themes/fonts/5e/Scaly Sans Caps.woff2');
60
+ font-weight: normal;
61
+ font-style: normal
62
+ }
63
+
64
+ @font-face {
65
+ font-family: WalterTurncoat;
66
+ src: url('./themes/fonts/5e/WalterTurncoat-Regular.woff2');
67
+ font-weight: normal;
68
+ font-style: normal
69
+ }
70
+
71
+ @font-face {
72
+ font-family: MrEavesRemake;
73
+ src: url('./themes/fonts/5e/Mr Eaves Small Caps.woff2');
74
+ font-weight: normal;
75
+ font-style: normal
76
+ }
77
+
78
+ @font-face {
79
+ font-family: SolberaImitationRemake;
80
+ src: url('./themes/fonts/5e/Solbera Imitation Tweak.woff2');
81
+ font-weight: normal;
82
+ font-style: normal
83
+ }
84
+
85
+ @font-face {
86
+ font-family: NodestoCapsCondensed;
87
+ src: url('./themes/fonts/5e/Nodesto Caps Condensed.woff2');
88
+ font-weight: normal;
89
+ font-style: normal
90
+ }
91
+
92
+ @font-face {
93
+ font-family: NodestoCapsCondensed;
94
+ src: url('./themes/fonts/5e/Nodesto Caps Condensed Bold.woff2');
95
+ font-weight: bold;
96
+ font-style: normal
97
+ }
98
+
99
+ @font-face {
100
+ font-family: NodestoCapsCondensed;
101
+ src: url('./themes/fonts/5e/Nodesto Caps Condensed Italic.woff2');
102
+ font-weight: normal;
103
+ font-style: italic
104
+ }
105
+
106
+ @font-face {
107
+ font-family: NodestoCapsCondensed;
108
+ src: url('./themes/fonts/5e/Nodesto Caps Condensed Bold Italic.woff2');
109
+ font-weight: bold;
110
+ font-style: italic
111
+ }
112
+
113
+ @font-face {
114
+ font-family: NodestoCapsWide;
115
+ src: url('./themes/fonts/5e/Nodesto Caps Wide.woff2');
116
+ font-weight: normal;
117
+ font-style: normal
118
+ }
119
+
120
+ @font-face {
121
+ font-family: Overpass;
122
+ src: url('./themes/fonts/5e/Overpass Medium.woff2');
123
+ font-weight: 500;
124
+ font-style: normal
125
+ }
126
+
127
+ @font-face {
128
+ font-family: Davek;
129
+ src: url('./themes/fonts/5e/Davek.woff2');
130
+ font-weight: 500;
131
+ font-style: normal
132
+ }
133
+
134
+ @font-face {
135
+ font-family: Iokharic;
136
+ src: url('./themes/fonts/5e/Iokharic.woff2');
137
+ font-weight: 500;
138
+ font-style: normal
139
+ }
140
+
141
+ @font-face {
142
+ font-family: Rellanic;
143
+ src: url('./themes/fonts/5e/Rellanic.woff2');
144
+ font-weight: 500;
145
+ font-style: normal
146
+ }
147
+
148
+ :root {
149
+ --HB_Color_Background: #EEE5CE;
150
+ --HB_Color_Accent: #E0E5C1;
151
+ --HB_Color_HeaderUnderline: #C0AD6A;
152
+ --HB_Color_HorizontalRule: #9C2B1B;
153
+ --HB_Color_HeaderText: #58180D;
154
+ --HB_Color_MonsterStatBackground: #F2E5B5;
155
+ --HB_Color_CaptionText: #766649;
156
+ --HB_Color_WatercolorStain: #BBAD82;
157
+ --HB_Color_Footnotes: #C9AD6A
158
+ }
159
+
160
+ @page {
161
+ margin: 0
162
+ }
163
+
164
+ body {
165
+ counter-reset: phb-page-numbers
166
+ }
167
+
168
+ * {
169
+ -webkit-print-color-adjust: exact
170
+ }
171
+
172
+ .columnWrapper {
173
+ column-gap: inherit;
174
+ max-height: 100%;
175
+ column-span: all;
176
+ columns: inherit
177
+ }
178
+
179
+ .page {
180
+ column-count: 2;
181
+ column-fill: auto;
182
+ column-gap: .9cm;
183
+ column-width: 8cm;
184
+ -webkit-column-count: 2;
185
+ -moz-column-count: 2;
186
+ -webkit-column-width: 8cm;
187
+ -moz-column-width: 8cm;
188
+ -webkit-column-gap: .9cm;
189
+ -moz-column-gap: .9cm;
190
+ position: relative;
191
+ z-index: 15;
192
+ box-sizing: border-box;
193
+ width: 215.9mm;
194
+ height: 279.4mm;
195
+ padding: 1.4cm 1.9cm 1.7cm;
196
+ overflow: hidden;
197
+ font-family: "BookInsanityRemake";
198
+ font-size: .34cm;
199
+ counter-increment: phb-page-numbers;
200
+ background-color: var(--HB_Color_Background);
201
+ background-image: url('./themes/assets/parchmentBackground.jpg');
202
+ text-rendering: optimizeLegibility;
203
+ page-break-before: always;
204
+ page-break-after: always
205
+ }
206
+
207
+ .page p {
208
+ display: block;
209
+ line-height: 1.25em;
210
+ overflow-wrap: break-word
211
+ }
212
+
213
+ .page p+* {
214
+ margin-top: .325cm
215
+ }
216
+
217
+ .page p+p {
218
+ margin-top: 0
219
+ }
220
+
221
+ .page ul {
222
+ padding-left: 1.4em;
223
+ margin-bottom: .8em;
224
+ line-height: 1.25em;
225
+ list-style-position: outside;
226
+ list-style-type: disc
227
+ }
228
+
229
+ .page ol {
230
+ padding-left: 1.4em;
231
+ margin-bottom: .8em;
232
+ line-height: 1.25em;
233
+ list-style-position: outside;
234
+ list-style-type: decimal
235
+ }
236
+
237
+ .page p+p,
238
+ .page ul+p,
239
+ .page ol+p {
240
+ text-indent: 1em
241
+ }
242
+
243
+ .page img {
244
+ z-index: -1
245
+ }
246
+
247
+ .page strong {
248
+ font-weight: bold;
249
+ letter-spacing: -0.02em
250
+ }
251
+
252
+ .page em {
253
+ font-style: italic
254
+ }
255
+
256
+ .page sup {
257
+ font-size: smaller;
258
+ line-height: 0;
259
+ vertical-align: super
260
+ }
261
+
262
+ .page sub {
263
+ font-size: smaller;
264
+ line-height: 0;
265
+ vertical-align: sub
266
+ }
267
+
268
+ .page h1,
269
+ .page h2,
270
+ .page h3,
271
+ .page h4 {
272
+ font-family: "MrEavesRemake";
273
+ font-weight: 800;
274
+ color: var(--HB_Color_HeaderText)
275
+ }
276
+
277
+ .page h1 {
278
+ margin-bottom: .18cm;
279
+ column-span: all;
280
+ font-size: .89cm;
281
+ line-height: 1em;
282
+ -webkit-column-span: all;
283
+ -moz-column-span: all
284
+ }
285
+
286
+ .page h1+p::first-letter {
287
+ float: left;
288
+ padding-bottom: 2px;
289
+ padding-left: 40px;
290
+ margin-top: -0.3cm;
291
+ margin-bottom: -20px;
292
+ margin-left: -40px;
293
+ font-family: "SolberaImitationRemake";
294
+ font-size: 3.5cm;
295
+ line-height: 1em;
296
+ color: rgba(0, 0, 0, 0);
297
+ background-image: linear-gradient(-45deg, #322814, #998250, #322814);
298
+ -webkit-background-clip: text;
299
+ background-clip: text
300
+ }
301
+
302
+ .page h1+p::first-line {
303
+ font-variant: small-caps
304
+ }
305
+
306
+ .page h2 {
307
+ font-size: .75cm;
308
+ line-height: .988em
309
+ }
310
+
311
+ .page h3 {
312
+ font-size: .575cm;
313
+ line-height: .995em;
314
+ border-bottom: 2px solid var(--HB_Color_HeaderUnderline)
315
+ }
316
+
317
+ .page h3+* {
318
+ margin-top: .17cm
319
+ }
320
+
321
+ .page *+h3 {
322
+ margin-top: .155cm
323
+ }
324
+
325
+ .page h4 {
326
+ font-size: .458cm;
327
+ line-height: .971em
328
+ }
329
+
330
+ .page h4+* {
331
+ margin-top: .09cm
332
+ }
333
+
334
+ .page *+h4 {
335
+ margin-top: .235cm
336
+ }
337
+
338
+ .page h5 {
339
+ font-family: "ScalySansSmallCapsRemake";
340
+ font-size: .423cm;
341
+ font-weight: 900;
342
+ line-height: .951em
343
+ }
344
+
345
+ .page h5+* {
346
+ margin-top: .2cm
347
+ }
348
+
349
+ .page table {
350
+ font-family: "ScalySansRemake";
351
+ font-size: .318cm;
352
+ line-height: 1.2em;
353
+ width: 100%;
354
+ line-height: 16px
355
+ }
356
+
357
+ .page table p,
358
+ .page table dl,
359
+ .page table ul,
360
+ .page table ol {
361
+ line-height: 1.2em
362
+ }
363
+
364
+ .page table ul,
365
+ .page table ol {
366
+ padding-left: 1em
367
+ }
368
+
369
+ .page table em {
370
+ font-style: italic
371
+ }
372
+
373
+ .page table strong {
374
+ font-weight: 800;
375
+ letter-spacing: -0.02em
376
+ }
377
+
378
+ .page table h5+* {
379
+ margin-top: .1cm
380
+ }
381
+
382
+ .page table+* {
383
+ margin-top: .325cm
384
+ }
385
+
386
+ .page table thead {
387
+ display: table-row-group;
388
+ font-weight: 800
389
+ }
390
+
391
+ .page table thead th {
392
+ padding: 0 1.5px;
393
+ vertical-align: bottom
394
+ }
395
+
396
+ .page table tbody tr td {
397
+ padding: 0 1.5px
398
+ }
399
+
400
+ .page table tbody tr:nth-child(odd) {
401
+ background-color: var(--HB_Color_Accent)
402
+ }
403
+
404
+ .page .quote>p {
405
+ font-style: italic;
406
+ line-height: .54cm
407
+ }
408
+
409
+ .page .quote>p:first-child::first-line {
410
+ font-size: .38cm;
411
+ font-style: normal;
412
+ font-variant: small-caps
413
+ }
414
+
415
+ .page .quote p+.attribution {
416
+ margin-top: 0
417
+ }
418
+
419
+ .page .quote .attribution {
420
+ display: block;
421
+ font-style: normal;
422
+ line-height: .54cm;
423
+ text-align: right
424
+ }
425
+
426
+ .page .quote .attribution::before {
427
+ margin-right: .2em;
428
+ content: '---'
429
+ }
430
+
431
+ .page .quote+* {
432
+ margin-top: .54cm
433
+ }
434
+
435
+ .page .note {
436
+ font-family: "ScalySansRemake";
437
+ font-size: .318cm;
438
+ line-height: 1.2em;
439
+ padding: .13cm .16cm;
440
+ background-color: var(--HB_Color_Accent);
441
+ border-style: solid;
442
+ border-width: 1px;
443
+ border-image: url('../dependencies/themes/assets/noteBorder.png') 12 stretch;
444
+ border-image-width: 11px;
445
+ border-image-outset: 9px 0px;
446
+ box-shadow: 1px 4px 14px #888888
447
+ }
448
+
449
+ .page .note p,
450
+ .page .note dl,
451
+ .page .note ul,
452
+ .page .note ol {
453
+ line-height: 1.2em
454
+ }
455
+
456
+ .page .note ul,
457
+ .page .note ol {
458
+ padding-left: 1em
459
+ }
460
+
461
+ .page .note em {
462
+ font-style: italic
463
+ }
464
+
465
+ .page .note strong {
466
+ font-weight: 800;
467
+ letter-spacing: -0.02em
468
+ }
469
+
470
+ .page .note h5+* {
471
+ margin-top: .1cm
472
+ }
473
+
474
+ .page :where(.page .note) {
475
+ margin-top: 9px
476
+ }
477
+
478
+ .page .note+* {
479
+ margin-top: .45cm
480
+ }
481
+
482
+ .page .note h5 {
483
+ font-size: .375cm
484
+ }
485
+
486
+ .page .note p {
487
+ display: block;
488
+ padding-bottom: 0px
489
+ }
490
+
491
+ .page .note :last-child {
492
+ margin-bottom: 0
493
+ }
494
+
495
+ .page .descriptive {
496
+ font-family: "ScalySansRemake";
497
+ font-size: .318cm;
498
+ line-height: 1.2em;
499
+ padding: .1em;
500
+ background-color: #FAF7EA;
501
+ border-style: solid;
502
+ border-width: 7px;
503
+ border-image: url('themes/assets/descriptiveBorder.png') 12 stretch;
504
+ border-image-outset: 4px;
505
+ box-shadow: 0 0 6px #FAF7EA
506
+ }
507
+
508
+ .page .descriptive p,
509
+ .page .descriptive dl,
510
+ .page .descriptive ul,
511
+ .page .descriptive ol {
512
+ line-height: 1.2em
513
+ }
514
+
515
+ .page .descriptive ul,
516
+ .page .descriptive ol {
517
+ padding-left: 1em
518
+ }
519
+
520
+ .page .descriptive em {
521
+ font-style: italic
522
+ }
523
+
524
+ .page .descriptive strong {
525
+ font-weight: 800;
526
+ letter-spacing: -0.02em
527
+ }
528
+
529
+ .page .descriptive h5+* {
530
+ margin-top: .1cm
531
+ }
532
+
533
+ .page :where(.page .descriptive) {
534
+ margin-top: 4px
535
+ }
536
+
537
+ .page .descriptive+* {
538
+ margin-top: .45cm
539
+ }
540
+
541
+ .page .descriptive h5 {
542
+ font-size: .375cm
543
+ }
544
+
545
+ .page .descriptive p {
546
+ display: block;
547
+ padding-bottom: 0px;
548
+ line-height: 1.5em
549
+ }
550
+
551
+ .page .descriptive :last-child {
552
+ margin-bottom: 0
553
+ }
554
+
555
+ .page .artist {
556
+ position: absolute;
557
+ width: auto;
558
+ font-family: "WalterTurncoat";
559
+ font-size: .27cm;
560
+ color: var(--HB_Color_CaptionText);
561
+ text-align: center
562
+ }
563
+
564
+ .page .artist p,
565
+ .page .artist p+p {
566
+ margin: unset;
567
+ line-height: 1em;
568
+ text-indent: unset
569
+ }
570
+
571
+ .page .artist h5 {
572
+ font-family: "WalterTurncoat";
573
+ font-size: 1.3em
574
+ }
575
+
576
+ .page .artist a {
577
+ color: inherit;
578
+ text-decoration: unset
579
+ }
580
+
581
+ .page .artist a:hover {
582
+ text-decoration: underline
583
+ }
584
+
585
+ .page .watermark {
586
+ position: absolute;
587
+ top: 0;
588
+ left: 0;
589
+ z-index: 500;
590
+ display: grid !important;
591
+ place-items: center;
592
+ justify-content: center;
593
+ width: 100%;
594
+ height: 100%;
595
+ font-size: 120px;
596
+ color: black;
597
+ text-transform: uppercase;
598
+ mix-blend-mode: overlay;
599
+ opacity: 30%;
600
+ transform: rotate(-45deg)
601
+ }
602
+
603
+ .page .watermark p {
604
+ margin-bottom: none
605
+ }
606
+
607
+ .page [class*='watercolor'] {
608
+ position: absolute;
609
+ z-index: -2;
610
+ width: 2000px;
611
+ height: 2000px;
612
+ background-color: var(--HB_Color_WatercolorStain);
613
+ background-size: cover;
614
+ -webkit-mask-image: var(--wc);
615
+ -webkit-mask-size: contain;
616
+ -webkit-mask-repeat: no-repeat;
617
+ mask-image: var(--wc);
618
+ mask-size: contain;
619
+ mask-repeat: no-repeat;
620
+ --wc: url('/assets/watercolor/watercolor1.png')
621
+ }
622
+
623
+ .page .watercolor1 {
624
+ --wc: url('/assets/watercolor/watercolor1.png')
625
+ }
626
+
627
+ .page .watercolor2 {
628
+ --wc: url('/assets/watercolor/watercolor2.png')
629
+ }
630
+
631
+ .page .watercolor3 {
632
+ --wc: url('/assets/watercolor/watercolor3.png')
633
+ }
634
+
635
+ .page .watercolor4 {
636
+ --wc: url('/assets/watercolor/watercolor4.png')
637
+ }
638
+
639
+ .page .watercolor5 {
640
+ --wc: url('/assets/watercolor/watercolor5.png')
641
+ }
642
+
643
+ .page .watercolor6 {
644
+ --wc: url('/assets/watercolor/watercolor6.png')
645
+ }
646
+
647
+ .page .watercolor7 {
648
+ --wc: url('/assets/watercolor/watercolor7.png')
649
+ }
650
+
651
+ .page .watercolor8 {
652
+ --wc: url('/assets/watercolor/watercolor8.png')
653
+ }
654
+
655
+ .page .watercolor9 {
656
+ --wc: url('/assets/watercolor/watercolor9.png')
657
+ }
658
+
659
+ .page .watercolor10 {
660
+ --wc: url('/assets/watercolor/watercolor10.png')
661
+ }
662
+
663
+ .page .watercolor11 {
664
+ --wc: url('/assets/watercolor/watercolor11.png')
665
+ }
666
+
667
+ .page .watercolor12 {
668
+ --wc: url('/assets/watercolor/watercolor12.png')
669
+ }
670
+
671
+ .page .monster {
672
+ font-family: "ScalySansRemake";
673
+ font-size: .318cm;
674
+ line-height: 1.2em;
675
+ position: relative;
676
+ padding: 0px;
677
+ margin-bottom: .325cm
678
+ }
679
+
680
+ .page .monster p,
681
+ .page .monster dl,
682
+ .page .monster ul,
683
+ .page .monster ol {
684
+ line-height: 1.2em
685
+ }
686
+
687
+ .page .monster ul,
688
+ .page .monster ol {
689
+ padding-left: 1em
690
+ }
691
+
692
+ .page .monster em {
693
+ font-style: italic
694
+ }
695
+
696
+ .page .monster strong {
697
+ font-weight: 800;
698
+ letter-spacing: -0.02em
699
+ }
700
+
701
+ .page .monster h5+* {
702
+ margin-top: .1cm
703
+ }
704
+
705
+ .page .monster.frame {
706
+ width: calc(100% + .32cm);
707
+ padding: 4px 2px;
708
+ margin-right: -0.16cm;
709
+ margin-left: -0.16cm;
710
+ background-color: var(--HB_Color_MonsterStatBackground);
711
+ background-image: url('./themes/assets/parchmentBackgroundGrayscale.jpg');
712
+ background-attachment: fixed;
713
+ background-blend-mode: overlay;
714
+ border-style: solid;
715
+ border-width: 7px 6px;
716
+ border-image: url('./themes/assets/monsterBorderFancy.png') 14 round;
717
+ border-image-outset: 0px 2px;
718
+ box-shadow: 1px 4px 14px #888888
719
+ }
720
+
721
+ .page .monster h2 {
722
+ margin: 0;
723
+ font-size: .62cm;
724
+ line-height: 1em
725
+ }
726
+
727
+ .page .monster h2+p {
728
+ margin-bottom: 0;
729
+ font-size: .304cm
730
+ }
731
+
732
+ .page .monster h3 {
733
+ padding-bottom: .05cm;
734
+ font-family: "ScalySansRemake";
735
+ font-weight: 800;
736
+ font-variant: small-caps;
737
+ border-bottom: 2px solid var(--HB_Color_HeaderText)
738
+ }
739
+
740
+ .page .monster hr {
741
+ height: 6px;
742
+ margin: .12cm 0;
743
+ visibility: visible;
744
+ background-image: url('./themes/assets/redTriangle.png');
745
+ background-size: 100% 100%;
746
+ border: none
747
+ }
748
+
749
+ .page .monster hr~:is(dl, p) {
750
+ color: var(--HB_Color_HeaderText)
751
+ }
752
+
753
+ .page .monster hr:last-of-type~:is(dl, p) {
754
+ color: inherit
755
+ }
756
+
757
+ .page .monster hr:last-of-type+* {
758
+ margin-top: .325cm
759
+ }
760
+
761
+ .page .monster hr+table:first-of-type {
762
+ margin: 0;
763
+ column-span: none;
764
+ color: var(--HB_Color_HeaderText);
765
+ background-color: transparent;
766
+ border-style: none;
767
+ border-image: none;
768
+ -webkit-column-span: none
769
+ }
770
+
771
+ .page .monster hr+table:first-of-type tr {
772
+ background-color: transparent
773
+ }
774
+
775
+ .page .monster hr+table:first-of-type td,
776
+ .page .monster hr+table:first-of-type th {
777
+ padding: 0px
778
+ }
779
+
780
+ .page .monster :last-child {
781
+ margin-bottom: 0
782
+ }
783
+
784
+ .page .monster.wide {
785
+ column-count: 2;
786
+ column-fill: balance;
787
+ column-gap: .9cm;
788
+ column-width: 7.68cm;
789
+ -webkit-column-count: 2;
790
+ -moz-column-count: 2;
791
+ -webkit-column-width: 7.68cm;
792
+ -moz-column-width: 7.68cm;
793
+ -webkit-column-gap: .9cm;
794
+ -moz-column-gap: .9cm
795
+ }
796
+
797
+ .page:after {
798
+ position: absolute;
799
+ bottom: 0px;
800
+ left: 0px;
801
+ z-index: 100;
802
+ width: 100%;
803
+ height: 50px;
804
+ content: '';
805
+ background-image: url('./themes/assets/PHB_footerAccent.png');
806
+ background-size: cover
807
+ }
808
+
809
+ .page:nth-child(even)::after {
810
+ transform: scaleX(-1)
811
+ }
812
+
813
+ .page:nth-child(even) .pageNumber {
814
+ left: 2px
815
+ }
816
+
817
+ .page:nth-child(even) .footnote {
818
+ left: 80px;
819
+ text-align: left
820
+ }
821
+
822
+ .page .pageNumber {
823
+ position: absolute;
824
+ right: 2px;
825
+ bottom: 22px;
826
+ width: 50px;
827
+ font-size: .9em;
828
+ color: var(--HB_Color_Footnotes);
829
+ text-align: center;
830
+ text-indent: 0
831
+ }
832
+
833
+ .page .pageNumber.auto::after {
834
+ content: counter(phb-page-numbers)
835
+ }
836
+
837
+ .page .footnote {
838
+ position: absolute;
839
+ right: 80px;
840
+ bottom: 32px;
841
+ z-index: 150;
842
+ width: 200px;
843
+ font-size: .8em;
844
+ color: var(--HB_Color_Footnotes);
845
+ text-align: right
846
+ }
847
+
848
+ .page code {
849
+ padding: 0px 4px;
850
+ font-family: 'Courier New', "Courier", monospace;
851
+ font-size: .325;
852
+ color: #58180D;
853
+ overflow-wrap: break-word;
854
+ white-space: pre-wrap;
855
+ background-color: #FAF7EA;
856
+ border-radius: 4px
857
+ }
858
+
859
+ .page pre code {
860
+ display: inline-block;
861
+ width: 100%;
862
+ padding: .15cm;
863
+ margin-bottom: 2px;
864
+ border-style: solid;
865
+ border-width: 1px;
866
+ border-radius: 12px;
867
+ border-image: url('/assets/codeBorder.png') 26 stretch;
868
+ border-image-width: 10px;
869
+ border-image-outset: 2px
870
+ }
871
+
872
+ .page :where(.page pre code) {
873
+ margin-top: 2px
874
+ }
875
+
876
+ .page pre code+* {
877
+ margin-top: .325cm
878
+ }
879
+
880
+ .page hr {
881
+ margin: 0px;
882
+ visibility: hidden
883
+ }
884
+
885
+ .page .columnSplit {
886
+ visibility: hidden;
887
+ -webkit-column-break-after: always;
888
+ break-after: always;
889
+ -moz-column-break-after: always
890
+ }
891
+
892
+ .page blockquote,
893
+ .page table {
894
+ z-index: 15;
895
+ -webkit-column-break-inside: avoid;
896
+ page-break-inside: avoid;
897
+ break-inside: avoid
898
+ }
899
+
900
+ .page table+p {
901
+ text-indent: 1em
902
+ }
903
+
904
+ .page ul ul,
905
+ .page ol ol,
906
+ .page ul ol,
907
+ .page ol ul {
908
+ margin-bottom: 0px;
909
+ margin-left: 1.5em
910
+ }
911
+
912
+ .page li {
913
+ -webkit-column-break-inside: avoid;
914
+ page-break-inside: avoid;
915
+ break-inside: avoid
916
+ }
917
+
918
+ .page .spellList {
919
+ font-family: "ScalySansRemake";
920
+ font-size: .318cm;
921
+ line-height: 1.2em;
922
+ column-count: 2
923
+ }
924
+
925
+ .page .spellList p,
926
+ .page .spellList dl,
927
+ .page .spellList ul,
928
+ .page .spellList ol {
929
+ line-height: 1.2em
930
+ }
931
+
932
+ .page .spellList ul,
933
+ .page .spellList ol {
934
+ padding-left: 1em
935
+ }
936
+
937
+ .page .spellList em {
938
+ font-style: italic
939
+ }
940
+
941
+ .page .spellList strong {
942
+ font-weight: 800;
943
+ letter-spacing: -0.02em
944
+ }
945
+
946
+ .page .spellList h5+* {
947
+ margin-top: .1cm
948
+ }
949
+
950
+ .page .spellList ul+h5 {
951
+ margin-top: 15px
952
+ }
953
+
954
+ .page .spellList p,
955
+ .page .spellList ul {
956
+ font-size: .352cm;
957
+ line-height: 1.265em
958
+ }
959
+
960
+ .page .spellList ul {
961
+ padding-left: 1em;
962
+ margin-bottom: .5em;
963
+ text-indent: -1em;
964
+ list-style-type: none;
965
+ -webkit-column-break-inside: auto;
966
+ page-break-inside: auto;
967
+ break-inside: auto
968
+ }
969
+
970
+ .page .spellList.wide {
971
+ column-count: 4
972
+ }
973
+
974
+ .page .classTable th[colspan]:not([rowspan]) {
975
+ white-space: nowrap
976
+ }
977
+
978
+ .page .classTable.frame {
979
+ width: calc(100% + .2cm);
980
+ margin-top: .7cm;
981
+ margin-right: -0.1cm;
982
+ margin-bottom: .9cm;
983
+ margin-left: -0.1cm;
984
+ border-collapse: separate;
985
+ background-color: white;
986
+ border: initial;
987
+ border-style: solid;
988
+ border-image-source: url('../dependencies/themes/assets/frameBorder.png');
989
+ border-image-slice: 200;
990
+ border-image-width: 47px;
991
+ border-image-outset: .4cm .3cm;
992
+ border-image-repeat: stretch
993
+ }
994
+
995
+ .page.classTable.frame.wide:first-child {
996
+ margin-top: .12cm
997
+ }
998
+
999
+ .page .classTable.frame+* {
1000
+ margin-top: 0
1001
+ }
1002
+
1003
+ .page .classTable.decoration {
1004
+ position: relative
1005
+ }
1006
+
1007
+ .page .classTable.decoration::before {
1008
+ position: absolute;
1009
+ top: 50%;
1010
+ left: 50%;
1011
+ z-index: -1;
1012
+ width: 7.75cm;
1013
+ height: calc(100% + 3.3cm);
1014
+ content: '';
1015
+ background-image: url('../../dependencies/assets/classTableDecoration.png'), url('/assets/classTableDecoration.png');
1016
+ filter: drop-shadow(0 0 1px #C8C5C080);
1017
+ background-repeat: no-repeat, no-repeat;
1018
+ background-position: top, bottom;
1019
+ background-size: contain, contain;
1020
+ transform: translateY(-50%) translateX(-50%)
1021
+ }
1022
+
1023
+ .page .classTable.decoration.wide::before {
1024
+ width: calc(100% + 3.3cm);
1025
+ height: 7.75cm;
1026
+ background-position: left, right
1027
+ }
1028
+
1029
+ .page .classTable h5+table {
1030
+ margin-top: .2cm
1031
+ }
1032
+
1033
+ .page:has(.frontCover) {
1034
+ columns: 1;
1035
+ text-align: center
1036
+ }
1037
+
1038
+ .page:has(.frontCover)::after {
1039
+ all: unset
1040
+ }
1041
+
1042
+ .page:has(.frontCover) h1 {
1043
+ margin-top: 1.2cm;
1044
+ margin-bottom: 0;
1045
+ font-family: "NodestoCapsCondensed";
1046
+ font-size: 2.245cm;
1047
+ font-weight: normal;
1048
+ line-height: .85em;
1049
+ color: white;
1050
+ text-shadow: unset;
1051
+ text-transform: uppercase;
1052
+ filter: drop-shadow(0 0 1.5px black) drop-shadow(0 0 0 black) drop-shadow(0 0 0 black) drop-shadow(0 0 0 black) drop-shadow(0 0 0 black) drop-shadow(0 0 0 black) drop-shadow(0 0 0 black) drop-shadow(0 0 0 black)
1053
+ }
1054
+
1055
+ .page:has(.frontCover) h2 {
1056
+ font-family: "NodestoCapsCondensed";
1057
+ font-size: .85cm;
1058
+ font-weight: normal;
1059
+ color: white;
1060
+ letter-spacing: .1cm;
1061
+ filter: drop-shadow(0 0 1px black) drop-shadow(0 0 0 black) drop-shadow(0 0 0 black) drop-shadow(0 0 0 black) drop-shadow(0 0 0 black) drop-shadow(0 0 0 black) drop-shadow(0 0 0 black) drop-shadow(0 0 0 black)
1062
+ }
1063
+
1064
+ .page:has(.frontCover) hr {
1065
+ position: relative;
1066
+ display: block;
1067
+ width: 12cm;
1068
+ height: .5cm;
1069
+ margin: auto;
1070
+ visibility: visible;
1071
+ background-image: url('/assets/horizontalRule.svg');
1072
+ filter: drop-shadow(0 0 3px black);
1073
+ background-size: 100% 100%;
1074
+ border: none
1075
+ }
1076
+
1077
+ .page:has(.frontCover) .banner {
1078
+ position: absolute;
1079
+ bottom: 4.2cm;
1080
+ left: 0;
1081
+ display: flex;
1082
+ flex-direction: column;
1083
+ justify-content: center;
1084
+ width: 10.5cm;
1085
+ height: 1.7cm;
1086
+ padding-top: .1cm;
1087
+ padding-left: 1cm;
1088
+ font-family: "NodestoCapsCondensed";
1089
+ font-size: 1cm;
1090
+ font-weight: normal;
1091
+ color: white;
1092
+ text-align: left;
1093
+ letter-spacing: .014cm;
1094
+ background-image: url('/assets/coverPageBanner.svg');
1095
+ filter: drop-shadow(2px 2px 2px black)
1096
+ }
1097
+
1098
+ .page:has(.frontCover) .footnote {
1099
+ position: absolute;
1100
+ right: 0;
1101
+ bottom: 1.3cm;
1102
+ left: 0;
1103
+ width: 70%;
1104
+ margin-right: auto;
1105
+ margin-left: auto;
1106
+ font-family: "Overpass";
1107
+ font-size: .496cm;
1108
+ color: white;
1109
+ text-align: center;
1110
+ filter: drop-shadow(0 0 .7px black) drop-shadow(0 0 0 black) drop-shadow(0 0 0 black) drop-shadow(0 0 0 black) drop-shadow(0 0 0 black) drop-shadow(0 0 0 black) drop-shadow(0 0 0 black) drop-shadow(0 0 0 black)
1111
+ }
1112
+
1113
+ .page:has(.frontCover) .logo {
1114
+ position: absolute;
1115
+ top: .5cm;
1116
+ right: 0;
1117
+ left: 0;
1118
+ filter: drop-shadow(0 0 .075cm black)
1119
+ }
1120
+
1121
+ .page:has(.frontCover) .logo img {
1122
+ width: 100%;
1123
+ height: 2cm
1124
+ }
1125
+
1126
+ .page:has(.insideCover) {
1127
+ columns: 1;
1128
+ text-align: center
1129
+ }
1130
+
1131
+ .page:has(.insideCover)::after {
1132
+ all: unset
1133
+ }
1134
+
1135
+ .page:has(.insideCover) h1 {
1136
+ margin-top: 1.2cm;
1137
+ margin-bottom: 0;
1138
+ font-family: "NodestoCapsCondensed";
1139
+ font-size: 2.1cm;
1140
+ font-weight: normal;
1141
+ line-height: .85em;
1142
+ text-transform: uppercase
1143
+ }
1144
+
1145
+ .page:has(.insideCover) h2 {
1146
+ font-family: "NodestoCapsCondensed";
1147
+ font-size: .85cm;
1148
+ font-weight: normal;
1149
+ letter-spacing: .5cm
1150
+ }
1151
+
1152
+ .page:has(.insideCover) hr {
1153
+ position: relative;
1154
+ display: block;
1155
+ width: 12cm;
1156
+ height: .5cm;
1157
+ margin: auto;
1158
+ visibility: visible;
1159
+ background-image: url('/assets/horizontalRule.svg');
1160
+ background-size: 100% 100%;
1161
+ border: none
1162
+ }
1163
+
1164
+ .page:has(.insideCover) .logo {
1165
+ position: absolute;
1166
+ right: 0;
1167
+ bottom: 1cm;
1168
+ left: 0;
1169
+ height: 2cm
1170
+ }
1171
+
1172
+ .page:has(.insideCover) .logo img {
1173
+ width: 100%;
1174
+ height: 2cm
1175
+ }
1176
+
1177
+ .page:has(.backCover) {
1178
+ padding: 2.25cm 1.3cm 2cm 1.3cm;
1179
+ color: #FFFFFF;
1180
+ columns: 1
1181
+ }
1182
+
1183
+ .page:has(.backCover)::after {
1184
+ all: unset
1185
+ }
1186
+
1187
+ .page:has(.backCover) .columnWrapper {
1188
+ width: 7.6cm
1189
+ }
1190
+
1191
+ .page:has(.backCover) .backCover {
1192
+ position: absolute;
1193
+ inset: 0;
1194
+ z-index: -1;
1195
+ width: 11cm;
1196
+ background-image: url('/assets/backCover.png');
1197
+ background-repeat: no-repeat;
1198
+ background-size: contain
1199
+ }
1200
+
1201
+ .page:has(.backCover) .blank {
1202
+ height: 1.4em
1203
+ }
1204
+
1205
+ .page:has(.backCover) h1 {
1206
+ margin-bottom: .3cm;
1207
+ font-family: "NodestoCapsCondensed";
1208
+ font-size: 1.35cm;
1209
+ line-height: .95em;
1210
+ color: #ED1C24;
1211
+ text-align: center
1212
+ }
1213
+
1214
+ .page:has(.backCover) h1+p::first-line,
1215
+ .page:has(.backCover) h1+p::first-letter {
1216
+ all: unset
1217
+ }
1218
+
1219
+ .page:has(.backCover) img {
1220
+ position: absolute;
1221
+ top: 0px;
1222
+ z-index: -2;
1223
+ height: 100%
1224
+ }
1225
+
1226
+ .page:has(.backCover) hr {
1227
+ width: 4.5cm;
1228
+ height: .53cm;
1229
+ margin-top: 1.1cm;
1230
+ margin-right: auto;
1231
+ margin-left: auto;
1232
+ visibility: visible;
1233
+ background-image: url('/assets/horizontalRule.svg');
1234
+ background-size: 100% 100%;
1235
+ border: none
1236
+ }
1237
+
1238
+ .page:has(.backCover) p {
1239
+ font-family: "Overpass";
1240
+ font-size: .332cm;
1241
+ line-height: 1.5em
1242
+ }
1243
+
1244
+ .page:has(.backCover) hr+p {
1245
+ margin-top: .6cm;
1246
+ text-align: center
1247
+ }
1248
+
1249
+ .page:has(.backCover) .logo {
1250
+ position: absolute;
1251
+ bottom: 2cm;
1252
+ left: 1.2cm;
1253
+ z-index: 0;
1254
+ width: 7.6cm;
1255
+ height: 1.5cm
1256
+ }
1257
+
1258
+ .page:has(.backCover) .logo img {
1259
+ position: relative;
1260
+ z-index: 0;
1261
+ width: 100%;
1262
+ height: 1.5cm
1263
+ }
1264
+
1265
+ .page:has(.backCover) .logo p {
1266
+ position: relative;
1267
+ width: 100%;
1268
+ font-family: "NodestoCapsWide";
1269
+ font-size: .4cm;
1270
+ line-height: 1em;
1271
+ color: #FFFFFF;
1272
+ text-align: center;
1273
+ text-indent: 0;
1274
+ letter-spacing: .08em
1275
+ }
1276
+
1277
+ .page:has(.partCover) {
1278
+ padding-top: 0;
1279
+ text-align: center;
1280
+ columns: 1
1281
+ }
1282
+
1283
+ .page:has(.partCover) .partCover {
1284
+ position: absolute;
1285
+ top: 0;
1286
+ left: 0;
1287
+ width: 100%;
1288
+ height: 6cm;
1289
+ background-image: url('/assets/partCoverHeaderPHB.png');
1290
+ background-repeat: no-repeat;
1291
+ background-size: 100%
1292
+ }
1293
+
1294
+ .page:has(.partCover) h1 {
1295
+ position: relative;
1296
+ margin-top: .4cm;
1297
+ font-family: "NodestoCapsCondensed";
1298
+ font-size: 2.3cm;
1299
+ text-align: center;
1300
+ text-transform: uppercase
1301
+ }
1302
+
1303
+ .page:has(.partCover) h2 {
1304
+ position: relative;
1305
+ margin-top: -0.7em;
1306
+ margin-right: auto;
1307
+ margin-left: auto;
1308
+ font-family: "Overpass";
1309
+ font-size: .45cm;
1310
+ line-height: 1.1em
1311
+ }
1312
+
1313
+ .page:has(.toc)::after {
1314
+ display: none
1315
+ }
1316
+
1317
+ .page .toc {
1318
+ -webkit-column-break-inside: avoid;
1319
+ page-break-inside: avoid;
1320
+ break-inside: avoid
1321
+ }
1322
+
1323
+ .page .toc h1 {
1324
+ margin-bottom: .3cm;
1325
+ text-align: center
1326
+ }
1327
+
1328
+ .page .toc a {
1329
+ display: inline;
1330
+ color: inherit;
1331
+ text-decoration: none
1332
+ }
1333
+
1334
+ .page .toc a:hover {
1335
+ text-decoration: underline
1336
+ }
1337
+
1338
+ .page .toc h4 {
1339
+ margin-top: .2cm;
1340
+ line-height: .4cm
1341
+ }
1342
+
1343
+ .page .toc h4+ul li {
1344
+ line-height: 1.2em
1345
+ }
1346
+
1347
+ .page .toc ul {
1348
+ padding-left: 0;
1349
+ margin-top: 0;
1350
+ list-style-type: none
1351
+ }
1352
+
1353
+ .page .toc ul a {
1354
+ display: flex;
1355
+ flex-flow: row nowrap;
1356
+ justify-content: space-between;
1357
+ width: 100%
1358
+ }
1359
+
1360
+ .page .toc ul li+li h3 {
1361
+ margin-top: .26cm;
1362
+ line-height: 1em
1363
+ }
1364
+
1365
+ .page .toc ul h3 span:first-child::after {
1366
+ border: none
1367
+ }
1368
+
1369
+ .page .toc ul span {
1370
+ display: contents
1371
+ }
1372
+
1373
+ .page .toc ul span:first-child::after {
1374
+ bottom: .08cm;
1375
+ flex: 1;
1376
+ margin-right: .16cm;
1377
+ margin-bottom: .08cm;
1378
+ margin-left: .08cm;
1379
+ content: '';
1380
+ border-bottom: .05cm dotted #000000
1381
+ }
1382
+
1383
+ .page .toc ul span:last-child {
1384
+ display: inline-block;
1385
+ align-self: flex-end;
1386
+ font-family: 'BookInsanityRemake';
1387
+ font-size: .34cm;
1388
+ font-weight: normal;
1389
+ color: #000000
1390
+ }
1391
+
1392
+ .page .toc ul ul {
1393
+ margin-left: 1em
1394
+ }
1395
+
1396
+ .page .toc.wide {
1397
+ column-count: 2;
1398
+ column-fill: balance;
1399
+ column-gap: .9cm;
1400
+ column-width: 7.68cm;
1401
+ -webkit-column-count: 2;
1402
+ -moz-column-count: 2;
1403
+ -webkit-column-width: 7.68cm;
1404
+ -moz-column-width: 7.68cm;
1405
+ -webkit-column-gap: .9cm;
1406
+ -moz-column-gap: .9cm
1407
+ }
1408
+
1409
+ .page dl {
1410
+ padding-left: 1em;
1411
+ line-height: 1.25em;
1412
+ white-space: pre-line
1413
+ }
1414
+
1415
+ .page dl+* {
1416
+ margin-top: .28cm
1417
+ }
1418
+
1419
+ .page dl+* {
1420
+ margin-top: .17cm
1421
+ }
1422
+
1423
+ .page p+dl {
1424
+ margin-top: .17cm
1425
+ }
1426
+
1427
+ .page dt {
1428
+ display: inline;
1429
+ margin-right: 5px;
1430
+ margin-left: -1em
1431
+ }
1432
+
1433
+ .page dd {
1434
+ display: inline;
1435
+ margin-left: 0px;
1436
+ text-indent: 0px
1437
+ }
1438
+
1439
+ .page .wide {
1440
+ margin-bottom: .325cm
1441
+ }
1442
+
1443
+ .page h1+* {
1444
+ margin-top: 0
1445
+ }
1446
+
1447
+ .page .runeTable {
1448
+ margin-block: .7cm
1449
+ }
1450
+
1451
+ .page .runeTable table {
1452
+ font-family: inherit
1453
+ }
1454
+
1455
+ .page .runeTable table tbody tr {
1456
+ background: unset
1457
+ }
1458
+
1459
+ .page .runeTable table th,
1460
+ .page .runeTable table td {
1461
+ width: 1.3cm;
1462
+ height: 1.3cm;
1463
+ font-weight: normal;
1464
+ text-transform: uppercase;
1465
+ vertical-align: middle;
1466
+ outline: 1px solid #000000
1467
+ }
1468
+
1469
+ .page .runeTable table th {
1470
+ font-family: "BookInsanityRemake";
1471
+ font-size: .45cm
1472
+ }
1473
+
1474
+ .page .runeTable table td {
1475
+ font-size: .7cm
1476
+ }
1477
+
1478
+ .page .runeTable.frame {
1479
+ border: initial;
1480
+ border-style: solid;
1481
+ border-image-source: url('/assets/scriptBorder.png');
1482
+ border-image-slice: 170;
1483
+ border-image-width: 1.4cm;
1484
+ border-image-outset: .45cm .35cm .4cm .4cm;
1485
+ border-image-repeat: stretch
1486
+ }
1487
+
1488
+ .page .index {
1489
+ font-size: .218cm
1490
+ }
1491
+
1492
+ .page .index ul ul {
1493
+ margin: 0
1494
+ }
1495
+
1496
+ .page .index ul {
1497
+ padding-left: 0;
1498
+ text-indent: 0;
1499
+ list-style-type: none
1500
+ }
1501
+
1502
+ .page .index>ul>li {
1503
+ padding-left: 1.5em;
1504
+ text-indent: -1.5em
1505
+ }
static/all.css CHANGED
The diff for this file is too large to render. See raw diff
 
static/bundle.css CHANGED
The diff for this file is too large to render. See raw diff
 
static/phb.standalone.css CHANGED
The diff for this file is too large to render. See raw diff
 
templates/proxy.html DELETED
@@ -1,58 +0,0 @@
1
- <!DOCTYPE html>
2
- <html lang="en">
3
- <head>
4
- <meta charset="UTF-8">
5
- <title>Print Preview</title>
6
- <link href="/static/all.css" rel="stylesheet" />
7
- <link href="/static/css.css?family=Open+Sans:400,300,600,700" rel="stylesheet" type="text/css" />
8
- <link href='/static/bundle.css' rel='stylesheet' />
9
- <link href="/static/style.css" rel='stylesheet' />
10
- <link href="/static/5ePHBstyle.css" rel='stylesheet' />
11
- <link href="/static/storeUI.css" rel='stylesheet' />
12
- <title>Print Preview - DnD Stat Block</title>
13
- <style>
14
- @media print {
15
-
16
- .page {
17
- page-break-before: auto;
18
- }
19
- .columnWrapper {
20
- overflow: visible;
21
- }
22
-
23
- }
24
- .page-container {
25
- display: flex;
26
- flex-direction: column;
27
- align-items: center;
28
- justify-content: center;
29
- margin: 0;
30
- padding: 0;
31
- width: 100%;
32
- height: 100%;
33
- }
34
- </style>
35
- </head>
36
- <body>
37
- <div id= "brewRenderer" class="brewRenderer">
38
- <!-- This div will display the content passed from the main app -->
39
- <div id="printContent">{{ html_content|safe }}
40
- </div>
41
- </div>
42
- <div id="preview-actions">
43
- <button id="print-button">Print</button>
44
- <button id="cancel-button">Cancel</button>
45
- </div>
46
-
47
- <script>
48
- // Function to trigger print
49
- document.getElementById('print-button').addEventListener('click', function() {
50
- window.print();
51
- });
52
-
53
- // Function to close the preview without printing
54
- document.getElementById('cancel-button').addEventListener('click', function() {
55
- window.close(); // Close the preview window
56
- });
57
- </script>
58
- </html>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
templates/storeUI.html CHANGED
@@ -14,6 +14,29 @@
14
  <script src="https://unpkg.com/[email protected]/dist/htmx.min.js"></script>
15
 
16
  <style>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
17
  /* Modal styles */
18
  .modal {
19
  display: none; /* Hidden by default */
@@ -69,7 +92,7 @@
69
  <button id="addPageButton">Add New Page</button>
70
  <button id="removePageButton">Remove Last Page</button>
71
  <button id="resetButton">Reset</button>
72
- <button id="printButton">Open Tab to print</button>
73
  </div>
74
  <div class="page-container" id="pageContainer">
75
 
@@ -101,7 +124,7 @@
101
  <div id="modalPreviewContent"></div>
102
  </div>
103
  </div>
104
-
105
  <script src="scripts.js"></script>
106
 
107
  </script>
 
14
  <script src="https://unpkg.com/[email protected]/dist/htmx.min.js"></script>
15
 
16
  <style>
17
+ @media print {
18
+ /* Hide everything by default */
19
+ body * {
20
+ visibility: hidden;
21
+ }
22
+
23
+ /* Specifically show the section you want to print */
24
+ #brewRenderer, #brewRenderer * {
25
+ visibility: visible;
26
+ page-break-before: auto;
27
+ page-break-after: avoid;
28
+ page-break-inside: avoid;
29
+ }
30
+
31
+ /* Ensure the printable section takes up the full page */
32
+ #brewRenderer {
33
+ position: absolute;
34
+ top: 0;
35
+ left: 0;
36
+ width: 100%;
37
+ height: auto;
38
+ }
39
+ }
40
  /* Modal styles */
41
  .modal {
42
  display: none; /* Hidden by default */
 
92
  <button id="addPageButton">Add New Page</button>
93
  <button id="removePageButton">Remove Last Page</button>
94
  <button id="resetButton">Reset</button>
95
+ <button id="printButton">Print</button>
96
  </div>
97
  <div class="page-container" id="pageContainer">
98
 
 
124
  <div id="modalPreviewContent"></div>
125
  </div>
126
  </div>
127
+ <div id="iFrameContainer" style="display:none;"></div>
128
  <script src="scripts.js"></script>
129
 
130
  </script>