:root{--bg: #0e1220;--bg-2: #151a2e;--panel: #1a2038;--line: #2a3252;--ink: #e8ebf5;--ink-dim: #a3abc4;--accent: #5a7bdc;--accent-2: #7fa0ff;--gold: #e5c76e;--radius: 12px;--font: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;color-scheme:dark}*,*:before,*:after{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--bg);color:var(--ink);font-family:var(--font);line-height:1.6;-webkit-font-smoothing:antialiased}a{color:var(--accent-2);text-decoration-thickness:1px;text-underline-offset:2px}a:hover{color:#a8bfff}h1,h2,h3{line-height:1.2;margin:0 0 .5em;letter-spacing:-.01em}h1{font-size:clamp(1.6rem,1.1rem + 2.2vw,2.4rem)}h2{font-size:clamp(1.2rem,1rem + 1vw,1.5rem)}img,svg{max-width:100%}.wrap{width:min(1120px,100% - 2.5rem);margin-inline:auto}.skip{position:absolute;left:-9999px;top:0;background:var(--accent);color:#fff;padding:.6rem 1rem;z-index:100}.skip:focus{left:.5rem;top:.5rem}:where(a,button,input,select,summary):focus-visible{outline:2px solid var(--accent-2);outline-offset:2px}.site-header{border-bottom:1px solid var(--line);background:linear-gradient(180deg,#131828,var(--bg));position:sticky;top:0;z-index:20;backdrop-filter:blur(8px)}.site-header>.wrap{display:flex;align-items:center;gap:1.25rem;min-height:60px;flex-wrap:wrap}.brand{display:inline-flex;align-items:center;gap:.55rem;font-weight:800;letter-spacing:-.02em;color:var(--ink);text-decoration:none;font-size:1.02rem}.brand-mark{width:26px;height:26px;flex:none}.brand em{font-style:normal;color:var(--accent-2)}.site-nav{display:flex;align-items:center;gap:1rem;margin-left:auto;font-size:.92rem}.site-nav a{color:var(--ink-dim);text-decoration:none}.site-nav a:hover,.site-nav a[aria-current=page]{color:var(--ink)}.lang-switch{border:1px solid var(--line);border-radius:999px;padding:.2rem .7rem;color:var(--ink-dim);text-decoration:none}.site-footer{margin-top:4rem;border-top:1px solid var(--line);background:#0b0f1b;color:var(--ink-dim);font-size:.85rem;padding:2rem 0 3rem}.site-footer p{margin:0 0 .6rem;max-width:78ch}.site-footer a{color:var(--ink-dim)}main{padding:2rem 0 1rem}.breadcrumb{font-size:.82rem;color:var(--ink-dim);margin-bottom:1rem}.breadcrumb ol{list-style:none;display:flex;flex-wrap:wrap;gap:.4rem;margin:0;padding:0}.breadcrumb li+li:before{content:"›";margin-right:.4rem;opacity:.6}.breadcrumb a{color:var(--ink-dim)}.panel{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:1.25rem 1.4rem}.btn{display:inline-flex;align-items:center;gap:.5rem;border:1px solid var(--line);background:var(--bg-2);color:var(--ink);border-radius:9px;padding:.6rem 1rem;font:inherit;font-weight:600;font-size:.92rem;cursor:pointer;text-decoration:none}.btn:hover{border-color:#3d4874;color:var(--ink)}.btn-primary{background:linear-gradient(165deg,#5a4aa0,#2947ae);border-color:transparent;color:#fff}.btn-primary:hover{filter:brightness(1.12);color:#fff}.btn[disabled],.btn[aria-disabled=true]{opacity:.5;cursor:not-allowed}.tag{display:inline-block;border:1px solid var(--line);border-radius:999px;padding:.1rem .6rem;font-size:.76rem;color:var(--ink-dim)}.spell-layout{display:grid;gap:2rem;grid-template-columns:minmax(0,1fr);align-items:start}@media(min-width:900px){.spell-layout{grid-template-columns:auto minmax(0,1fr)}}.card-column{display:flex;flex-direction:column;gap:1rem;align-items:flex-start}.card-stack{display:flex;flex-wrap:wrap;gap:1rem}.card-actions{display:flex;flex-wrap:wrap;gap:.6rem}.card-note{font-size:.82rem;color:var(--ink-dim);max-width:42ch;margin:0}.spell-meta{display:flex;flex-wrap:wrap;gap:.45rem;padding:0;margin:0 0 1.2rem;list-style:none}.spell-body p{max-width:72ch}.spell-body h2{margin-top:2rem}.dl-grid{display:grid;grid-template-columns:max-content minmax(0,1fr);gap:.35rem 1rem;margin:0 0 1.5rem;font-size:.94rem}.dl-grid dt{color:var(--ink-dim)}.dl-grid dd{margin:0}.link-list{list-style:none;padding:0;margin:0;display:flex;flex-wrap:wrap;gap:.5rem 1.1rem}.app-note{margin-top:2.5rem;border:1px solid var(--line);border-left:3px solid var(--accent);border-radius:8px;background:#141a2c;padding:1rem 1.2rem;font-size:.9rem;color:var(--ink-dim);max-width:78ch}.app-note strong{color:var(--ink)}.spell-list{list-style:none;padding:0;margin:0;display:grid;gap:.4rem;grid-template-columns:repeat(auto-fill,minmax(260px,1fr))}.spell-row{display:flex;align-items:center;gap:.6rem;border:1px solid var(--line);border-radius:9px;background:var(--bg-2);padding:.45rem .7rem}.spell-row[hidden]{display:none}.spell-row a{color:var(--ink);text-decoration:none;font-weight:600;font-size:.94rem;flex:1;min-width:0}.spell-row a:hover{color:var(--accent-2)}.spell-row .lvl{flex:none;width:1.6rem;height:1.6rem;display:grid;place-items:center;border-radius:5px;background:#372a55;color:#fff;font-size:.76rem;font-weight:800}.spell-row .sch{font-size:.74rem;color:var(--ink-dim);flex:none}.group-links{display:flex;flex-wrap:wrap;gap:.4rem;margin:0 0 1.6rem;padding:0;list-style:none}.group-links a{display:inline-block;border:1px solid var(--line);border-radius:999px;padding:.25rem .8rem;font-size:.84rem;color:var(--ink-dim);text-decoration:none}.group-links a:hover{color:var(--ink);border-color:#3d4874}.group-links a[aria-current=page]{color:#fff;border-color:var(--accent);background:#5a7bdc38}.group-title{font-size:.82rem;text-transform:uppercase;letter-spacing:.12em;color:var(--ink-dim);margin:1.4rem 0 .5rem}.lead-intro{max-width:72ch;color:var(--ink-dim)}.browser{border:1px solid var(--line);border-radius:var(--radius);background:var(--panel);padding:1rem 1.1rem;margin:1.5rem 0 1.2rem}.browser-fields{display:flex;flex-wrap:wrap;gap:.8rem;align-items:flex-end}.field{display:flex;flex-direction:column;gap:.25rem;font-size:.8rem;color:var(--ink-dim);min-width:0}.field input,.field select{font:inherit;font-size:.92rem;color:var(--ink);background:var(--bg);border:1px solid var(--line);border-radius:8px;padding:.45rem .6rem;min-width:9rem}.field input[type=search]{min-width:14rem}.browser-status{display:flex;flex-wrap:wrap;gap:.4rem 1rem;margin-top:.8rem;font-size:.84rem;color:var(--ink-dim)}.browser-hint{opacity:.8}.sheet-bar{position:sticky;bottom:.8rem;z-index:15;display:flex;flex-wrap:wrap;align-items:center;gap:.7rem;margin:1rem 0;padding:.7rem 1rem;border:1px solid var(--accent);border-radius:999px;background:#16203c;box-shadow:0 8px 24px #00000073;font-size:.9rem}.row-pick,.row-preview{display:none}.spell-list.is-selectable .row-pick{display:inline-block;flex:none;accent-color:var(--accent);width:1rem;height:1rem;margin:0}.spell-list.is-selectable .row-preview{display:inline-block}.row-preview{flex:none;border:1px solid var(--line);background:transparent;color:var(--ink-dim);border-radius:6px;padding:0 .35rem;font:inherit;font-size:.9rem;line-height:1.5;cursor:pointer}@media(hover:hover)and (pointer:fine){.spell-list.is-selectable .row-preview{display:none}}.card-preview{position:fixed;right:1rem;bottom:1rem;z-index:30;padding:.5rem;border-radius:12px;background:#0a0e1aeb;border:1px solid var(--line);box-shadow:0 16px 40px #0000008c;animation:preview-in .14s ease-out}@keyframes preview-in{0%{opacity:0;transform:translateY(6px)}}@media(prefers-reduced-motion:reduce){.card-preview{animation:none}}.card-preview-close{position:absolute;top:-.5rem;right:-.5rem;width:1.7rem;height:1.7rem;border-radius:50%;border:1px solid var(--line);background:var(--panel);color:var(--ink);font-size:1rem;line-height:1;cursor:pointer}@media(hover:hover)and (pointer:fine){.card-preview-close{display:none}}.no-results-note{display:none;color:var(--ink-dim);margin-top:1.2rem}.spell-list:not(:has(.spell-row:not([hidden])))+.no-results-note{display:block}.hero{padding:3.5rem 0 2.5rem;border-bottom:1px solid var(--line);background:radial-gradient(70rem 30rem at 15% -10%,rgba(90,123,220,.18),transparent 60%),var(--bg)}.hero .eyebrow{color:var(--ink-dim);font-size:.86rem;letter-spacing:.16em;text-transform:uppercase;margin:0 0 .6rem}.hero h1{font-size:clamp(2rem,1.2rem + 3.4vw,3.2rem);margin-bottom:.4rem}.hero .tagline{color:var(--gold);font-size:clamp(1.05rem,.9rem + .7vw,1.35rem);margin:0 0 1.2rem}.hero .lead{max-width:62ch;color:var(--ink-dim);margin:0 0 1.8rem}.hero-actions{display:flex;flex-wrap:wrap;gap:.7rem}.hero-layout{display:grid;gap:2.5rem;align-items:center;grid-template-columns:minmax(0,1fr)}@media(min-width:980px){.hero-layout{grid-template-columns:minmax(0,1fr) auto}}.pillars{display:grid;gap:1rem;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));margin:2.5rem 0}.pillars h2{font-size:1rem;margin-bottom:.35rem}.pillars p{margin:0;color:var(--ink-dim);font-size:.9rem}.hero-card{justify-self:center}:root{--grad-ranger: linear-gradient(165deg, #3d2b33 0%, #5c7d72 60%, #79a893 100%);--grad-bard: linear-gradient(165deg, #5e2170 0%, #a2519e 60%, #cd7bb4 100%);--grad-sorcerer: linear-gradient(165deg, #4a1522 0%, #a12c2c 55%, #e0523c 100%);--grad-cleric: linear-gradient(165deg, #6d5c4a 0%, #c19a45 60%, #ecc94f 100%);--grad-druid: linear-gradient(165deg, #46291f 0%, #5d7028 60%, #71a32e 100%);--grad-wizard: linear-gradient(165deg, #5a4aa0 0%, #3d55b8 60%, #2947ae 100%);--grad-warlock: linear-gradient(165deg, #351a1e 0%, #8f3526 60%, #d0562e 100%);--grad-paladin: linear-gradient(165deg, #6680c2 0%, #a8a887 60%, #e5c76e 100%);--card-w: 340px;--card-h: 480px;--card-scale: 1}.card-box{width:calc(var(--card-w) * var(--card-scale));height:calc(var(--card-h) * var(--card-scale));flex:none}.gcard{position:relative;width:var(--card-w);height:var(--card-h);flex:none;padding:14px;display:flex;border-radius:10px;color:#fff;overflow:hidden;box-shadow:0 10px 30px #00000040;transform:scale(var(--card-scale));transform-origin:top left;font-family:var(--font-card, system-ui, -apple-system, "Segoe UI", Roboto, sans-serif);font-size:16px;line-height:1.4}.gcard:after{content:"";position:absolute;inset:9px;border:1px solid rgba(255,255,255,.55);border-radius:4px;pointer-events:none}.gcard:before{content:"";position:absolute;inset:12px;border:1px solid rgba(255,255,255,.25);border-radius:3px;pointer-events:none}.gcard[data-grad=ranger]{background:var(--grad-ranger)}.gcard[data-grad=bard]{background:var(--grad-bard)}.gcard[data-grad=sorcerer]{background:var(--grad-sorcerer)}.gcard[data-grad=cleric]{background:var(--grad-cleric)}.gcard[data-grad=druid]{background:var(--grad-druid)}.gcard[data-grad=wizard]{background:var(--grad-wizard)}.gcard[data-grad=warlock]{background:var(--grad-warlock)}.gcard[data-grad=paladin]{background:var(--grad-paladin)}.game-card-front{flex:1;background:#fdfcf7;color:#2c2c34;border-radius:6px;clip-path:polygon(7% 0,93% 0,100% 3%,100% 97%,93% 100%,7% 100%,0 97%,0 3%);padding:14px 16px 12px;display:flex;flex-direction:column;position:relative;z-index:1;min-width:0}.spell-head{display:flex;align-items:stretch;gap:8px;margin-bottom:12px}.spell-name-box{flex:1;min-width:0;background:#e7e2d3;border-radius:8px;padding:10px 12px}.spell-name{font-weight:800;font-size:1.05em;line-height:1.15;overflow-wrap:break-word;hyphens:auto}.spell-school{font-style:italic;font-size:.8em;color:#7a745f}.spell-vsm{display:flex;flex-direction:column;justify-content:center;gap:2px;font-size:.68em;font-weight:700;color:#c5c0b0}.spell-vsm .on{color:#6e6852}.spell-hex{width:54px;flex:none;display:flex;align-items:center;justify-content:center;background:#372a55;color:#fff;font-size:1.6em;font-weight:800;clip-path:polygon(50% 0,100% 25%,100% 75%,50% 100%,0 75%,0 25%);margin:-6px -4px 0 0;height:66px}.spell-stats{display:flex;gap:7px;margin-bottom:12px}.spell-stat{flex:1;min-width:0;background:#e7e2d3;border-radius:7px;padding:7px 6px;text-align:center;display:flex;flex-direction:column;gap:2px}.spell-stat b{font-size:.82em;overflow-wrap:break-word;hyphens:auto}.spell-stat span{font-size:.62em;color:#7a745f}.spell-desc{flex:1;min-height:0;font-size:.8em;line-height:1.5;overflow:hidden;text-align:justify;overflow-wrap:break-word;hyphens:auto}.spell-desc[data-density="2"]{font-size:.72em;line-height:1.45}.spell-desc[data-density="3"]{font-size:.65em;line-height:1.4}.spell-desc p{margin:0}.spell-desc .spell-trigger{font-style:italic;color:#5f5947}.spell-desc p+p{margin-top:10px}.spell-material{position:relative;margin-top:10px;padding-top:7px;text-align:center;font-size:.7em;font-style:italic;color:#9a7b3f}.spell-material:before{content:"";position:absolute;top:0;left:7%;right:7%;height:1px;background:linear-gradient(90deg,transparent,currentColor 22%,currentColor 78%,transparent);opacity:.55}.spell-page-of{margin-top:8px;text-align:center;font-size:.6em;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:#a09884}.spell-credit{position:absolute;left:0;right:0;bottom:3px;text-align:center;font-size:6px;letter-spacing:.04em;color:#ffffff9e;z-index:2;pointer-events:none}@page{size:A4;margin:12mm}@media print{*{-webkit-print-color-adjust:exact!important;print-color-adjust:exact!important}html,body{background:#fff!important;color:#000;margin:0;padding:0}.site-header,.site-footer,.breadcrumb,.card-actions,.card-note,.spell-body,.app-note,.no-print{display:none!important}main{padding:0}.wrap{width:auto;margin:0}.card-box,.gcard{break-inside:avoid;page-break-inside:avoid}.gcard{box-shadow:none!important}.card-column,.card-stack{gap:6mm}.print-sheet{display:grid;grid-template-columns:repeat(3,auto);justify-content:center;align-content:start;gap:0}.print-sheet .card-box{outline:.2mm dashed rgba(0,0,0,.28);outline-offset:0}}.print-sheet{display:grid;grid-template-columns:repeat(3,auto);justify-content:center;gap:0;background:#fff;padding:6mm;border-radius:6px;margin:1.5rem auto;width:fit-content;max-width:100%;overflow-x:auto}
