@import"https://fonts.googleapis.com/css2?family=Cormorant+Garamond:wght@400;500;600&family=DM+Sans:wght@400;500;600;700&display=swap";:root{font-family:DM Sans,sans-serif;color:#dedfd6;background:#10191c;font-synthesis:none;--gold: #d9b774;--muted: #93a09c;--border: #35413f}*{box-sizing:border-box}body{margin:0;min-width:320px}button,select{font:inherit}button,select,a{-webkit-tap-highlight-color:transparent}button{cursor:pointer}button:focus-visible,select:focus-visible,a:focus-visible{outline:2px solid var(--gold);outline-offset:5px}button{transition:background .15s,color .15s}button:hover{color:#fff2d4}.masthead{height:88px;padding:0 5%;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--border);gap:24px}.brand{display:flex;align-items:center;gap:14px;color:#ede4ce;text-decoration:none;font-size:16px;letter-spacing:.19em;white-space:nowrap}.brand b{font-weight:400;color:var(--gold)}.brand-mark{font-family:Georgia,serif;font-size:45px;line-height:1;color:var(--gold)}.edition{font-size:12px;letter-spacing:.15em;color:var(--muted)}.edition span{padding-left:26px;color:#b7bfb8}.quiet-button{background:transparent;border:none;color:#c4c9bf;padding:9px 10px;font-size:14px}.quiet-button span{color:var(--gold);margin-left:9px}main{max-width:1660px;padding:0 5%;margin:0 auto}.introduction{display:flex;align-items:center;justify-content:space-between;padding:36px 0 32px}.eyebrow{font-size:12px;letter-spacing:.16em;font-weight:500;color:var(--gold);margin:0 0 12px}h1{font-family:Cormorant Garamond,Georgia,serif;font-size:clamp(36px,3.5vw,54px);letter-spacing:-.025em;font-weight:400;line-height:1.05;margin:0 0 12px;color:#efeadc}.lede{font-size:16px;color:#a8b2ad;margin:0}.chapter-number{display:flex;align-items:center;gap:16px;color:#a88d5c;font-size:45px;padding-right:5px}.chapter-number span{font-size:12px;letter-spacing:.15em;writing-mode:vertical-rl}.workspace{border:1px solid #48504a;border-radius:5px;overflow:hidden;box-shadow:0 18px 65px #0002}.workspace-toolbar{padding:13px 20px;background:#1c2729;min-height:68px;display:flex;align-items:center;justify-content:space-between;gap:20px;border-bottom:1px solid var(--border)}.chapter-select{display:flex;align-items:center;gap:20px;min-width:0}.chapter-select label{font-size:12px;color:#9ca79e;letter-spacing:.12em;white-space:nowrap}select{max-width:100%;min-width:0;background:#1c2729;color:#e5decc;border:0;padding:8px 25px 8px 0;font-size:14px;cursor:pointer}.toolbar-actions{display:flex;gap:10px;flex-shrink:0}.editors{display:grid;grid-template-columns:1fr 1fr}.editor-pane{min-width:0;background:#132025}.spell-pane{border-left:1px solid #48504a;background:#1c2624}.pane-header{padding:18px 23px;border-bottom:1px solid #ffffff09;display:flex;align-items:center;justify-content:space-between;gap:12px}.pane-header>div{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.pane-index{font-size:12px;color:#899690}.pane-header h2{font-size:16px;font-weight:500;margin:0}.spell-pane h2{color:#e0c28b}.language-label{font-size:12px;color:#a8b1a6;border:1px solid #46504a;border-radius:3px;padding:2px 5px}.copy-button{border:0;background:transparent;color:#a4b1aa;font-size:13px;padding:6px 0 6px 10px}.editor-host{height:clamp(340px,42vh,570px)}.pane-footer{display:flex;justify-content:space-between;gap:12px;padding:12px 23px;color:#a2ada4;font-size:12px;border-top:1px solid #ffffff09}.pane-footer>span:last-child{letter-spacing:.12em;color:#9ba596}.validation-bar{display:flex;gap:20px;padding:19px 23px;align-items:center;justify-content:space-between;background:#202b29;border-top:1px solid #48504a}.validation-copy{display:flex;gap:16px;align-items:center}#status-icon{font-size:30px;color:#d9b774;width:28px;text-align:center}.validation-copy strong{display:block;font-size:14px;color:#e0d9c4;font-weight:500;margin-bottom:4px}#status-detail{color:#a6b1a6;font-size:13px}.success #status-icon{color:#b2cba2}.cast-button{flex-shrink:0;background:#dbc08c;color:#202724;border:1px solid #e8d2a7;border-radius:3px;padding:12px 18px;font-size:14px;font-weight:600}.cast-button span{margin-left:18px;font-size:18px}.cast-button:hover{background:#eed3a0;color:#111c17}.below-desk{display:grid;grid-template-columns:1fr 1fr;padding:30px 0 32px;gap:48px}.field-note h2{font-family:Cormorant Garamond,Georgia,serif;font-weight:500;font-size:27px;color:#e9e0cb;margin:0 0 6px}.field-note>p:last-child{margin:0;font-size:14px;color:#acb6ae;line-height:1.7}.lexicon{border-left:1px solid #35413f;padding-left:32px}.word-pairs{display:grid;grid-template-columns:1fr 1fr;gap:13px 30px;margin-top:18px}.word-pairs>div{display:grid;grid-template-columns:1fr 20px 1fr;align-items:center;gap:10px;font-size:14px}.word-pairs code{color:#a7bbc2;font-size:13px}.word-pairs span{color:#7f8d83}.word-pairs strong{color:#dbc08c;font-family:Cormorant Garamond,Georgia,serif;font-weight:500;font-size:19px;white-space:nowrap}.page-footer{margin:0 5%;padding:22px 0;border-top:1px solid #35413f;display:flex;gap:20px;justify-content:space-between;font-size:12px;color:#97a59b}.page-footer>span:first-child{letter-spacing:.13em}.footer-diamond{padding:0 12px;color:var(--gold)}.help-panel{border:1px solid #46524a;background:#1d2a29;padding:24px;margin-bottom:24px;max-width:850px;line-height:1.7}.help-panel h2{margin-top:0;font-family:Georgia,serif;font-weight:400}.help-panel p{font-size:16px;color:#c1c9be}.help-panel p:last-child{margin-bottom:0}.toast{position:fixed;bottom:25px;left:50%;transform:translate(-50%);padding:14px 22px;max-width:calc(100vw - 32px);background:#e6d4ab;color:#18221e;border:1px solid #fff0cb;border-radius:4px;box-shadow:0 4px 30px #0006;font-size:14px;z-index:10}.cast{animation:illuminate 1.2s ease-out}@keyframes illuminate{0%{box-shadow:0 0 #d9b77400}30%{box-shadow:0 0 32px #d9b77455;border-color:#e6c68b}to{box-shadow:0 18px 65px #0002}}@media(min-width:1800px){.masthead,.page-footer{padding-left:max(5%,calc((100vw - 1494px)/2));padding-right:max(5%,calc((100vw - 1494px)/2))}}@media(max-width:1050px){.edition{display:none}.chapter-select{gap:12px}.chapter-select label{display:none}.word-pairs{grid-template-columns:1fr}.below-desk{gap:26px}}@media(max-width:700px){.masthead{height:72px;padding:0 20px}.brand{font-size:14px;gap:9px}.brand-mark{font-size:35px}main{padding:0 16px}.introduction{padding:28px 4px}.chapter-number{display:none}.lede{line-height:1.6;max-width:270px}.workspace-toolbar{padding:12px;align-items:stretch;flex-direction:column;gap:3px}select{width:100%}.toolbar-actions{justify-content:space-between}.quiet-button{padding:8px}.editors{grid-template-columns:1fr}.spell-pane{border-left:0;border-top:1px solid #48504a}.pane-header{padding:13px 16px}.editor-host{height:290px}.pane-footer{padding:10px 16px}.validation-bar{padding:18px 16px;flex-direction:column;align-items:stretch}.validation-copy{gap:12px}#status-detail{line-height:1.5;display:block}.cast-button{width:100%}.below-desk{grid-template-columns:1fr;padding:28px 4px}.lexicon{border-left:0;padding-left:0;border-top:1px solid #35413f;padding-top:22px}.word-pairs{grid-template-columns:1fr 1fr;gap:12px}.word-pairs>div{grid-template-columns:auto 15px auto;gap:5px}.word-pairs code{font-size:12px}.word-pairs strong{font-size:17px}.page-footer{margin:0 20px;flex-direction:column;gap:12px;font-size:12px}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important}}.grimoire-layout{display:grid;grid-template-columns:250px minmax(0,1fr);gap:40px;max-width:1880px;padding:0 3.5%}.brand-title{margin:0;font-size:inherit;line-height:inherit}.contents{border-right:1px solid var(--border);padding:32px 22px 30px 0}.contents nav{display:flex;flex-direction:column;gap:5px}.contents nav button{background:transparent;color:#b4bfb7;border:1px solid transparent;border-radius:3px;padding:11px 10px;display:flex;gap:12px;text-align:left;font-size:14px;line-height:1.4;align-items:baseline}.contents nav button>span:first-child{font-size:12px;color:#88998d;width:18px;flex-shrink:0}.contents nav button:hover{background:#ffffff05;color:#f2e3c6}.contents nav button.active{background:#c5a97412;border-color:#b6975f45;color:#ead2a3}.contents nav button.active>span:first-child{color:#dbc08c}.school-heading{display:flex;align-items:center;gap:12px;margin-top:30px}.school-heading>span{font-size:38px;color:var(--gold)}.school>summary{cursor:pointer;list-style:none}.school>summary::-webkit-details-marker{display:none}.school>summary:after{content:"+";margin-left:auto;color:var(--gold);font-size:20px}.school[open]>summary:after{content:"−"}.school>summary:focus-visible{outline:2px solid var(--gold);outline-offset:5px}.subschool-heading{color:#c8ba9b;font-size:14px;font-weight:500;margin:20px 0 8px}.school-heading .eyebrow{margin-bottom:5px}.school-heading h1,.school-heading h2{font-size:30px;margin:0}.school-heading h2{font-family:Cormorant Garamond,Georgia,serif;font-weight:400;letter-spacing:-.025em;line-height:1.05;color:#efeadc}.school-description{font-size:14px;line-height:1.7;color:#a6b2a8;margin:16px 0 20px}.contents-foot{margin-top:28px;padding-top:22px;border-top:1px solid var(--border);font-size:12px;color:#9eafa2;line-height:1.8}.contents-foot strong{font-weight:500;color:#d2d6c8}.contents-foot a{color:#c1ae89;text-underline-offset:4px}.reading-desk{min-width:0;padding-top:33px}.folio-introduction h2{font-family:Cormorant Garamond,Georgia,serif;font-weight:400;color:#efeadc;font-size:clamp(34px,3.5vw,51px);line-height:1.1;margin:0 0 8px}.folio-subtitle{font-size:18px;color:#d7c69f;margin:0 0 16px}.folio-introduction .lede{max-width:850px;line-height:1.7}.mathematical-reading{border-left:2px solid #9b8259;padding:2px 0 2px 20px;margin:25px 0}.mathematical-reading>p:not(.eyebrow){font-size:16px;color:#d3d8cb;line-height:1.8;margin:8px 0 13px;max-width:1000px}.mathematical-reading summary,.full-glossary summary{cursor:pointer;color:#cdb98f;font-size:14px;padding:7px 0}.mathematical-reading details{max-width:950px}.mathematical-reading details p{font-size:15px;line-height:1.8;color:#bac7ba}.mathematical-reading h3{font-size:14px;color:#dbc8a4;font-weight:500;margin-bottom:0}.prerequisites{display:flex;flex-wrap:wrap;align-items:baseline;gap:7px;font-size:13px;color:#a6b6a6;margin-top:8px}.prerequisites button{border:none;border-bottom:1px solid #768b7055;background:transparent;color:#c4d1be;font-size:13px;padding:2px 0;margin-right:7px}.folio-badge{font-size:12px;color:#bacdb2;padding:5px 8px;border:1px solid #5f775c70;border-radius:3px}.reading-desk .workspace-toolbar{min-height:56px;padding:9px 15px}.reading-desk .toolbar-actions{gap:4px}.reading-desk .quiet-button{font-size:13px}.reading-desk .editors{grid-template-columns:1.08fr 1fr}.reading-desk .spell-pane{border-left:0;border-right:1px solid #48504a}.reading-desk .editor-host{height:490px}.reading-desk .pane-header{padding:14px 18px}.reading-desk .pane-footer{padding:10px 15px}.reading-desk .pane-footer>span:last-child{display:none}.reading-desk .validation-bar{padding:16px}.reading-notes{display:grid;grid-template-columns:1fr 1fr;gap:40px;padding:30px 0 40px}.reading-notes>div{min-width:0}.reading-notes>div+div{border-left:1px solid var(--border);padding-left:25px}.section-hint{color:#a8b8aa;font-size:13px;line-height:1.6;margin:0 0 18px}.concept-pairs>div,#glossary>div{display:flex;justify-content:space-between;gap:20px;padding:9px 0;border-bottom:1px solid #ffffff08;align-items:baseline;overflow-wrap:anywhere}.concept-pairs strong,#glossary strong{font-family:Cormorant Garamond,Georgia,serif;font-size:21px;color:#ddc697;font-weight:500}.concept-pairs code,#glossary code{font-size:13px;color:#abc0c5}.full-glossary{margin-top:17px}#glossary{max-height:300px;overflow:auto;padding-right:12px}#references{margin:0;padding-left:17px}#references li{margin-bottom:12px;color:#687f70}#references a{color:#b7c8bd;font-family:monospace;font-size:13px;line-height:1.7;text-decoration-color:#5c716350;text-underline-offset:4px;overflow-wrap:anywhere}.source-downloads{display:flex;gap:16px;flex-wrap:wrap;border-top:1px solid var(--border);margin-top:25px;padding-top:18px}.source-downloads a{color:#d4bd90;font-size:13px;text-underline-offset:4px}button:disabled{opacity:.45;cursor:default}[hidden]{display:none!important}@media(max-width:1180px){.grimoire-layout{grid-template-columns:210px minmax(0,1fr);gap:24px;padding:0 22px}.contents{padding-right:15px}.contents nav button{padding:9px 6px;gap:7px}.reading-desk .validation-bar{align-items:stretch;flex-direction:column}.reading-desk .cast-button{align-self:flex-start}.reading-desk .workspace-toolbar{align-items:flex-start;flex-direction:column;gap:5px}.reading-desk .toolbar-actions{flex-wrap:wrap}}@media(max-width:900px){.grimoire-layout{grid-template-columns:1fr;gap:0;padding:0 18px}.contents{border:0;padding:23px 0 0}.contents nav{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:2px 8px}#cantrip-nav{grid-template-columns:1fr}.school-heading{margin-top:17px}.school-heading h1,.school-heading h2{font-size:27px}.school-description{margin:8px 0 12px}.contents-foot{display:none}.reading-desk{padding-top:28px}}@media(max-width:650px){.reading-desk .editors{grid-template-columns:1fr}.reading-desk .spell-pane{border-right:0;border-top:0;border-bottom:1px solid #48504a}.reading-desk .editor-host{height:370px}.reading-desk .cast-button{align-self:stretch}.reading-notes{grid-template-columns:1fr;gap:26px}.reading-notes>div+div{border-left:0;padding-left:0;border-top:1px solid var(--border);padding-top:25px}.folio-introduction .lede{max-width:none}.mathematical-reading{padding-left:14px}.contents nav button{font-size:13px}.contents nav button>span:first-child{width:16px}}.spell-actions{display:flex;align-items:center;gap:12px}.spell-actions .copy-button{padding-left:0}.spell-seal,.proof-seal{display:inline-block;font-family:DM Sans,sans-serif;font-size:12px;line-height:1.5;vertical-align:baseline;margin:0 5px;padding:2px 9px;border:1px solid #a68b5155;border-radius:12px;color:#dcc292;background:#cfac5d0e;letter-spacing:.015em;cursor:pointer}.spell-seal:hover{border-color:#e7c47a;color:#fff0b5;background:#b88f3620;box-shadow:0 0 12px #d6ab4030}.proof-seal{color:#adc3c8;border-color:#6d969755;background:#6f93950a}.cm-foldGutter .cm-gutterElement{cursor:pointer;color:#ac966b}.spell-pane{position:relative}.spell-revealing{animation:reveal-glimmer .8s ease-out}.spark-field{pointer-events:none;position:fixed;width:0;height:0;z-index:100}.magic-spark{position:absolute;top:-2px;left:-2px;width:3px;height:3px;border-radius:50%;background:#ffdc89;box-shadow:0 0 6px #ffdf87;animation:spark-flight .8s var(--delay) ease-out both}.star-spark{width:8px;height:8px;left:-4px;top:-4px;border-radius:0;background:#ffe9b7;clip-path:polygon(50% 0,61% 37%,100% 50%,61% 63%,50% 100%,39% 63%,0 50%,39% 37%)}@keyframes spark-flight{0%{opacity:0;transform:translate(0) scale(.3) rotate(0)}15%{opacity:1}to{opacity:0;transform:translate(var(--dx),var(--dy)) scale(.2) rotate(var(--spin))}}@keyframes reveal-glimmer{0%{filter:brightness(1)}25%{filter:brightness(1.35);box-shadow:inset 0 0 25px #d6b46816}to{filter:brightness(1);box-shadow:inset 0 0 0 transparent}}@media(prefers-reduced-motion:reduce){.spark-field{display:none}.spell-revealing{animation:none}}@media(max-width:1180px)and (min-width:901px){.spell-actions{gap:7px}.reading-desk .pane-header{padding:12px;flex-wrap:wrap}}.reading-desk .editors.single-pane{grid-template-columns:minmax(0,1fr)}.reading-desk .editors.single-pane .editor-pane{border:0}.presentation-controls{display:flex;align-items:center;padding:4px;gap:3px;border:1px solid #8b79594d;border-radius:7px;background:#111d20;flex-shrink:0}.presentation-controls button{background:transparent;border:1px solid transparent;border-radius:4px;padding:9px 12px;color:#bcc6b9;font-size:13px;white-space:nowrap}.presentation-controls button:hover{background:#cdb27214;color:#ffedbf}.presentation-controls button[aria-pressed=true]{background:#d1b37920;border-color:#b698615e;color:#f2d8a5;box-shadow:inset 0 0 12px #d7a43c09}.presentation-controls button:focus-visible{outline:2px solid #e8c379;outline-offset:2px}#app[data-presentation=magic] [data-mathematical],#app[data-presentation=math] [data-magical],#app:not([data-presentation=magic]) [data-only=magic],#app:not([data-presentation=math]) [data-only=math],#app:not([data-presentation=parallel]) [data-only=parallel]{display:none!important}#app[data-presentation=magic] .folio-introduction{margin-bottom:28px}#app[data-presentation=math] .folio-subtitle{font:400 clamp(30px,3vw,44px)/1.15 "Cormorant Garamond",Georgia,serif;color:#efeadc}#app[data-presentation=math] .reading-notes{grid-template-columns:1fr}#app[data-presentation=math] .reading-notes>div+div{border-left:0;padding-left:0}.personal-draft{display:block;margin-top:18px;border:1px solid #b6986140;width:100%;text-align:left}.presentation-changing [data-transmute]{opacity:0}.transmutation-field{position:fixed;top:0;right:0;bottom:0;left:0;overflow:hidden;z-index:90;pointer-events:none;contain:strict}.transmutation-glyph{position:absolute;white-space:pre;animation:glyph-transmutation 2.1s both;will-change:transform,opacity}.transmutation-glyph>span{position:absolute;top:0;left:0;white-space:pre}.glyph-before{animation:glyph-departure 2.1s both}.glyph-after{animation:glyph-arrival 2.1s both}@keyframes glyph-transmutation{0%{transform:translate(0) rotate(0);opacity:1;animation-timing-function:cubic-bezier(.5,0,.85,.5)}44%{transform:translate(var(--heap-x),var(--heap-y)) rotate(var(--tumble));opacity:.88;animation-timing-function:cubic-bezier(.2,.6,.2,1)}88%{transform:translate(var(--target-x),var(--target-y)) rotate(0);opacity:1}to{transform:translate(var(--target-x),var(--target-y)) rotate(0);opacity:0}}@keyframes glyph-departure{0%,35%{opacity:1}52%,to{opacity:0}}@keyframes glyph-arrival{0%,35%{opacity:0}52%,to{opacity:1}}@media(min-width:1250px){.masthead .edition{margin-right:auto}}@media(max-width:1249px){.masthead .edition{display:none}}@media(max-width:760px){.masthead{height:auto;min-height:78px;padding-top:14px;padding-bottom:12px;flex-wrap:wrap;gap:13px}.presentation-controls{order:3;flex:1 0 100%;justify-content:center}.presentation-controls button{flex:1}}@media(prefers-reduced-motion:reduce){.transmutation-field{display:none}.presentation-changing [data-transmute]{opacity:1}}.tutorial{border:1px solid #a88b5333;border-radius:5px;padding:20px 24px;margin:24px 0;background:#cdb27205}.tutorial h3{margin:0 0 10px;font:500 26px/1.2 Cormorant Garamond,Georgia,serif;color:#ead9b5}.tutorial h4{color:#decda8;font-size:15px;margin:0 0 7px;font-weight:500}.tutorial p{line-height:1.8;color:#bac7ba;font-size:15px;max-width:95ch}.tutorial .eyebrow{font-size:11px;color:var(--gold)}.tutorial summary{cursor:pointer;color:#dbc393;font-size:14px;padding:8px 0}.tutorial summary:focus-visible{outline:2px solid #d5b375;outline-offset:4px}.tutorial-steps{padding-left:25px;margin:20px 0}.tutorial-steps li{padding:0 0 14px 8px}.tutorial-steps li::marker{color:#bc9f6d}.tutorial-steps p{margin:0}.tutorial-experiment{border-top:1px solid var(--border);padding-top:20px}.tutorial-experiment .section-hint{font-size:12px;margin-top:16px}.comment-toolbar{display:flex;align-items:center;flex-wrap:wrap;gap:12px;border-bottom:1px solid var(--border);padding:4px 14px}.comment-toolbar span{color:#97aa9b;font-size:12px}.comment-toolbar button{color:#d5c49e}@media(max-width:650px){.tutorial{padding:17px}.comment-toolbar{gap:4px}}
