.astro-route-announcer{clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;top:0;left:0;overflow:hidden}@font-face{font-family:General Sans;src:url(/fonts/GeneralSans-Regular.woff2)format("woff2");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:General Sans;src:url(/fonts/GeneralSans-Medium.woff2)format("woff2");font-weight:500;font-style:normal;font-display:swap}@font-face{font-family:General Sans;src:url(/fonts/GeneralSans-Semibold.woff2)format("woff2");font-weight:600;font-style:normal;font-display:swap}@font-face{font-family:General Sans;src:url(/fonts/GeneralSans-Bold.woff2)format("woff2");font-weight:700;font-style:normal;font-display:swap}@font-face{font-family:Zodiak;src:url(/fonts/Zodiak-Regular.woff2)format("woff2");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:Zodiak;src:url(/fonts/Zodiak-Bold.woff2)format("woff2");font-weight:700;font-style:normal;font-display:swap}@font-face{font-family:Zodiak;src:url(/fonts/Zodiak-Extrabold.woff2)format("woff2");font-weight:800;font-style:normal;font-display:swap}:root{color-scheme:dark;--paper:#0e0f13;--paper-raised:#181a20;--paper-inset:#101116;--ink:#ece9e1;--muted:#8b8a94;--line:#272932;--accent:#e2b558;--accent-strong:#f2c976;--accent-ink:#1a1610;--accent-soft:#2a2417;--shadow:240 40% 2%;--font-sans:"General Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", system-ui, sans-serif;--font-display:"Zodiak", "Iowan Old Style", "Palatino Linotype", Palatino, Georgia, serif;--font-mono:ui-monospace, "SF Mono", "Cascadia Code", Menlo, Consolas, monospace;--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:24px;--space-6:32px;--space-7:48px;--space-8:72px;--space-9:104px;--radius-sm:6px;--radius:12px;--radius-lg:20px;--content-width:720px}*,:before,:after{box-sizing:border-box}html{color-scheme:dark;scrollbar-gutter:stable}body{background:var(--paper);color:var(--ink);font-family:var(--font-sans);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;margin:0;font-size:16px;line-height:1.55}img,svg{max-width:100%;display:block}a{color:inherit}h1,h2,h3,p,figure{margin:0}h1,h2,h3{font-family:var(--font-display);letter-spacing:-.005em;font-weight:700;line-height:1.14}code,kbd{font-family:var(--font-mono)}::selection{background:var(--accent);color:var(--accent-ink)}:root{--page-bg-image:radial-gradient(120% 80% at 50% -10%, color-mix(in oklab, var(--accent) 8%, transparent), transparent 60%), var(--stars,none);--page-bg-position:center top, center center;--page-bg-size:auto, cover}body{background-image:var(--page-bg-image);background-position:var(--page-bg-position);background-repeat:no-repeat,no-repeat;background-size:var(--page-bg-size);background-attachment:fixed,fixed}.skip-link{background:var(--ink);color:var(--paper);padding:var(--space-2) var(--space-4);border-radius:var(--radius-sm);z-index:100;position:absolute;top:0;left:-9999px}.skip-link:focus{left:var(--space-3);top:var(--space-3)}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.container{max-width:var(--content-width);padding:0 var(--space-5);margin:0 auto}.site-header{z-index:20;padding:var(--space-6) 0 var(--space-5);background-color:var(--paper);background-image:var(--page-bg-image);background-position:var(--page-bg-position);background-repeat:no-repeat,no-repeat;background-size:var(--page-bg-size);background-attachment:fixed,fixed;position:sticky;top:0}.site-header .container{justify-content:space-between;align-items:center;gap:var(--space-4);display:flex}.logo{align-items:center;gap:var(--space-2);font-family:var(--font-display);color:var(--ink);font-size:23px;font-weight:800;text-decoration:none;display:inline-flex}.logo .logomark{filter:drop-shadow(0 2px 6px color-mix(in oklab, var(--accent) 40%, transparent));flex:none}.tagline{color:var(--muted);font-size:14px}.site-footer{margin-top:var(--space-9);padding:var(--space-6) 0 var(--space-8);border-top:1px solid var(--line);color:var(--muted);font-size:13px}.site-footer .container{justify-content:space-between;align-items:center;gap:var(--space-4);flex-wrap:wrap;display:flex}.site-footer a{color:var(--muted);text-decoration:underline;text-decoration-color:var(--line);text-underline-offset:3px}.site-footer a:hover{color:var(--ink);text-decoration-color:var(--accent)}main{display:block}.hero{padding:var(--space-6) 0 var(--space-4)}.hero h1{max-width:16ch;font-size:clamp(26px,3.4vw,33px)}.hero p{margin-top:var(--space-3);color:var(--muted);max-width:52ch;font-size:17px}.flourish{align-items:center;gap:var(--space-4);margin:var(--space-6) 0;display:flex}.flourish-line{flex:1;height:1px}.flourish-line:first-child{background:linear-gradient(to right, transparent, color-mix(in oklab, var(--accent) 45%, transparent))}.flourish-line:last-child{background:linear-gradient(to left, transparent, color-mix(in oklab, var(--accent) 45%, transparent))}.flourish-star{filter:drop-shadow(0 0 6px color-mix(in oklab, var(--accent) 45%, transparent));flex:none}.flourish-star path{fill:var(--accent)}.eyebrow{text-transform:uppercase;letter-spacing:.08em;color:var(--accent);margin-bottom:var(--space-3);font-size:12px;font-weight:600;display:inline-block}.back-link{align-items:center;gap:var(--space-1);color:var(--muted);font-size:14px;text-decoration:none;display:inline-flex}.back-link:hover{color:var(--ink)}.spell-list{margin:0;padding:0;list-style:none}.spell-list li+li{border-top:1px solid color-mix(in oklab, var(--accent) 10%, var(--line))}.spell-entry{--card-color:var(--accent);align-items:center;gap:var(--space-5);padding:var(--space-5) var(--space-3);border-radius:var(--radius);transition:background .16s;display:flex}.spell-entry:hover{background:color-mix(in oklab, var(--card-color) 8%, transparent)}.entry-book{filter:drop-shadow(0 3px 12px color-mix(in oklab, var(--card-color) 42%, transparent));cursor:grab;border-radius:var(--radius-sm);flex:none;transition:transform .14s}.entry-book:hover{transform:translateY(-3px)rotate(-2deg)}.entry-book:active{cursor:grabbing;transform:scale(.96)}.entry-book:focus-visible{outline:2px solid var(--accent);outline-offset:3px}.entry-main{align-items:center;gap:var(--space-4);min-width:0;color:inherit;flex:1;text-decoration:none;display:flex}.entry-text{flex-direction:column;flex:1;gap:5px;min-width:0;display:flex}.entry-title{font-family:var(--font-display);color:var(--ink);font-size:23px;font-weight:700;transition:color .15s}.spell-entry:hover .entry-title{color:color-mix(in oklab, var(--card-color) 62%, #fff)}.entry-desc{color:var(--muted);font-size:15.5px;line-height:1.45}.entry-arrow{color:color-mix(in oklab, var(--card-color) 55%, #fff);opacity:0;flex:none;align-self:center;font-size:22px;line-height:1;transition:opacity .16s,transform .16s;transform:translate(-6px)}.spell-entry:hover .entry-arrow,.entry-main:focus-visible .entry-arrow{opacity:1;transform:none}.entry-main:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.empty-note{padding:var(--space-5);border:1px dashed var(--line);border-radius:var(--radius);color:var(--muted);font-size:14px}.spell{overflow:visible}.book-cover{stop-color:var(--book-color)}.book-cover-shade{stop-color:hsl(from var(--book-color) calc(h + 14) s l)}.book-spine{stop-color:hsl(from var(--book-color) calc(h + 12) calc(s * .57) calc(l * .79))}.book-spine-edge{stop-color:hsl(from var(--book-color) calc(h + 7) calc(s * .78) calc(l * .78))}.book-binding{fill:hsl(from var(--book-color) calc(h - 4) calc(s * .93) calc(l * .73))}.book-pages{stop-color:hsl(from var(--book-color) calc(h - 68) 48% 87%)}.book-pages-shade{stop-color:hsl(from var(--book-color) calc(h - 63) 31% 74%)}.book-emblem{color:hsl(from var(--book-color) h calc(s * .85) calc(l * .58))}.spell.glow{filter:drop-shadow(0 4px 22px color-mix(in oklab, var(--book-color) 55%, transparent))}.chip-group{gap:var(--space-2);flex-wrap:wrap;display:flex}.chip{appearance:none;border:1px solid var(--line);background:var(--paper-inset);color:var(--ink);padding:var(--space-2) var(--space-4);cursor:pointer;border-radius:999px;font-family:inherit;font-size:14px;font-weight:500;transition:border-color .15s,background .15s}.chip:hover{border-color:var(--accent)}.chip[aria-pressed=true]{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}.dims-row{align-items:center;gap:var(--space-3);margin-top:var(--space-4);display:flex}.field{gap:var(--space-1);flex-direction:column;display:flex}.field label{color:var(--muted);font-size:12px}.field input{width:92px;font-family:var(--font-mono);color:var(--ink);background:var(--paper-inset);border:1px solid var(--line);border-radius:var(--radius-sm);padding:var(--space-2) var(--space-3);font-size:15px}.field input:focus{outline:2px solid var(--accent);outline-offset:1px}.dims-x{color:var(--muted);margin-top:var(--space-4);font-family:var(--font-mono)}.preview-wrap{padding:var(--space-6) 0 var(--space-2);justify-content:center;display:flex}.preview-frame{border:2px solid var(--accent);border-radius:var(--radius-sm);background:var(--paper-inset);box-shadow:0 0 24px -6px color-mix(in oklab, var(--accent) 40%, transparent);transition:width .15s,height .15s;position:relative}.preview-frame:after{content:attr(data-dims);bottom:var(--space-2);font-family:var(--font-mono);color:var(--muted);white-space:nowrap;font-size:12px;position:absolute;left:50%;transform:translate(-50%)}.spell-layout{--card-color:var(--accent);gap:var(--space-7);margin-top:var(--space-5);grid-template-columns:minmax(220px,264px) 1fr;align-items:start;display:grid}.spell-cast{top:var(--space-6);text-align:center;align-items:center;gap:var(--space-5);flex-direction:column;display:flex;position:sticky}.spell-drag{padding:var(--space-3);border-radius:var(--radius-lg);color:var(--ink);cursor:grab;user-select:none;justify-content:center;align-items:center;text-decoration:none;display:inline-flex}.spell-float{animation:4.2s ease-in-out infinite spell-bob;display:inline-flex}@keyframes spell-bob{50%{transform:translateY(-6px)}}.spell-drag .spell{transition:filter .15s,transform .14s}.spell-drag:hover .spell{filter:drop-shadow(0 8px 30px color-mix(in oklab, var(--book-color) 70%, transparent));transform:translateY(-3px)rotate(-2deg)}.spell-drag:active .spell{transform:scale(.97)}.spell-drag:active{cursor:grabbing}.spell-drag:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.cast-head{align-items:center;gap:var(--space-2);flex-direction:column;display:flex}.cast-head h1{font-size:clamp(24px,3.5vw,30px)}.cast-hint{color:var(--muted);max-width:26ch;font-size:13px;line-height:1.5}.info-req{margin-top:var(--space-4);color:var(--muted);font-size:13px}.spell-info{min-width:0}.spell-lead{color:var(--muted);font-size:15px;line-height:1.5}.field-label{text-transform:uppercase;letter-spacing:.06em;color:var(--muted);margin:var(--space-6) 0 var(--space-2);font-size:12px}.field-label:first-child{margin-top:0}.settings-help{color:var(--muted);margin:0 0 var(--space-3);font-size:13.5px;line-height:1.5}.tablist{gap:var(--space-5);border-bottom:1px solid var(--line);margin-bottom:var(--space-5);display:flex}.tab{appearance:none;padding:var(--space-2) 0;color:var(--muted);cursor:pointer;background:0 0;border:none;border-bottom:2px solid #0000;margin-bottom:-1px;font-family:inherit;font-size:15px;font-weight:500;transition:color .12s}.tab:hover{color:var(--ink)}.tab[aria-selected=true]{color:var(--ink);border-bottom-color:var(--accent)}.tab:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:2px}.tabpanel[hidden]{display:none}.panel-subsection{margin-top:var(--space-6);padding-top:var(--space-5);border-top:1px solid var(--line)}.panel-empty{color:var(--muted);font-size:14px}.binding-list{gap:var(--space-3);margin-bottom:var(--space-3);flex-direction:column;display:flex}.binding-row{align-items:center;gap:var(--space-3);display:flex}.hotkey-btn{appearance:none;border:1px solid var(--line);background:var(--paper-inset);min-width:120px;color:var(--ink);border-radius:var(--radius-sm);padding:var(--space-2) var(--space-3);font-family:var(--font-mono);text-align:center;cursor:pointer;font-size:14px;transition:border-color .15s,background .15s}.hotkey-btn:hover{border-color:var(--card-color,var(--accent))}.hotkey-btn.listening{border-style:dashed;border-color:var(--card-color,var(--accent));color:var(--muted)}.binding-amt{align-items:center;gap:var(--space-2);margin-left:auto;display:flex}.dir-select{appearance:none;border:1px solid var(--line);background:var(--paper-inset);color:var(--ink);border-radius:var(--radius-sm);padding:var(--space-2) var(--space-3);cursor:pointer;font-family:inherit;font-size:14px}.secs-input{width:84px;font-family:var(--font-mono);color:var(--ink);background:var(--paper-inset);border:1px solid var(--line);border-radius:var(--radius-sm);padding:var(--space-2) var(--space-3);font-size:15px}.dir-select:focus,.secs-input:focus{outline:2px solid var(--accent);outline-offset:1px}.secs-unit{color:var(--muted);font-family:var(--font-mono);font-size:14px}.binding-remove{appearance:none;color:var(--muted);padding:0 var(--space-1);cursor:pointer;background:0 0;border:none;font-size:20px;line-height:1;transition:color .15s}.binding-remove:hover{color:var(--ink)}.add-binding{appearance:none;font:inherit;color:color-mix(in oklab, var(--card-color,var(--accent)) 62%, #fff);cursor:pointer;background:0 0;border:none;padding:0;font-size:14px}.add-binding:hover{text-decoration:underline}.app-shell,.app-shell body{height:100%}.app-shell body{flex-direction:column;display:flex;overflow:hidden}.app-shell main,.app-shell main>.container{flex-direction:column;flex:1;min-height:0;display:flex}.app-shell .spell-layout{flex:1;align-items:stretch;min-height:0}.app-shell .spell-cast{align-self:start;position:static}.app-shell .spell-info{flex-direction:column;min-height:0;display:flex}.app-shell .tablist{flex:none}.tab-scroll{scrollbar-gutter:stable;min-height:0;padding-right:var(--space-3);padding-bottom:var(--space-6);flex:1;overflow-y:auto}.code-head{justify-content:space-between;align-items:baseline;gap:var(--space-3);margin-bottom:var(--space-3);display:flex}.code-note{color:var(--muted);font-size:13px}.code-block{padding:var(--space-4);background:var(--paper-inset);border:1px solid var(--line);border-radius:var(--radius);margin:0}.code-block code{font-family:var(--font-mono);color:color-mix(in oklab, var(--ink) 80%, var(--accent));white-space:pre-wrap;word-break:break-all;font-size:12px;line-height:1.55}@media (width<=640px){.spell-layout{gap:var(--space-5);grid-template-columns:1fr}.spell-cast{position:static}.app-shell,.app-shell body{height:auto}.app-shell body{display:block;overflow:visible}.app-shell main,.app-shell main>.container,.app-shell .spell-layout,.app-shell .spell-info{display:revert;flex:none;min-height:0}.app-shell .spell-layout{display:grid}.app-shell .spell-info{display:block}.tab-scroll{flex:none;padding-bottom:0;padding-right:0;overflow:visible}}.link-btn{appearance:none;font:inherit;font-size:inherit;color:var(--muted);text-decoration:underline;text-decoration-color:var(--line);text-underline-offset:2px;cursor:pointer;background:0 0;border:none;padding:0}.link-btn:hover{color:var(--ink);text-decoration-color:var(--accent)}.prose{color:var(--ink);font-size:15px}.prose h3{margin-top:var(--space-6);margin-bottom:var(--space-2);font-size:16px}.prose p+p{margin-top:var(--space-3)}.prose ol,.prose ul{margin:var(--space-3) 0 0;color:var(--ink);padding-left:1.3em}.prose li+li{margin-top:var(--space-2)}@media (width<=560px){.dims-row{flex-wrap:wrap}}
