/* An illuminated library, parchment work surfaces, and a leather-bound root tome. */
:root{--gold:#f3d291;--ink:#342718;--muted:#eee0ca;--line:#997d514d;color-scheme:light}
body{background-color:#171b28;background-image:linear-gradient(180deg,rgba(8,14,27,.4),rgba(9,15,27,.64)),url('assets/wizard-school.webp');background-size:cover;background-position:center top;background-attachment:fixed;min-height:100vh}
header{background:#101a2ae0;border-bottom:1px solid #c2a36966;box-shadow:0 5px 30px #060b1660;border-radius:0 0 8px 8px}
.brand{font-size:27px}.brand-mark{color:#efc777}.nav{color:#f0e7d8}.nav.active{background:#60462880;color:#ffdf9f;border:1px solid #aa8350}#count{background:#4a3525;color:#ffe5b2}
.heading{background:#101b2a99;border:1px solid #a68b5638;padding:20px 24px;border-radius:8px;box-shadow:0 8px 30px #0003}.heading h1{color:#fff7e5}.heading p{color:#f1e7d4}.heading .subtle,.actions .subtle{background:#1d2a3ae6;color:#ffe2ac;border-color:#bba174}
main{max-width:1360px}.workspace{gap:30px}.panel,.parchment{color:var(--ink);background-color:#eee0bd;background-image:linear-gradient(#fff8e51a,#b998511a),url('assets/parchment.webp');background-size:cover;background-position:center;border-color:#9e7940;box-shadow:0 12px 32px #050a1780,inset 0 0 24px #9d762c33}.panel p{color:#675035}.panel h2,.panel h3{color:#3c2b1c}.panel .eyebrow,.parchment .eyebrow{color:#715125}
.library{border:8px solid #614329;border-left:15px solid #382c25;border-radius:7px 13px 13px 7px;padding:23px;box-shadow:-3px 0 0 #967041,0 3px 0 #d8bc83,0 7px 0 #a88a56,0 17px 35px #060a17a6,inset 0 0 35px #a4824038;position:relative}
.library .section-title{border-bottom:1px solid #a9864a88;padding-bottom:15px;margin-bottom:17px}.library h2{font-size:26px}.library #rootCount{color:#705637}.search{background:#fff9e3bb;border:1px solid #9d8051;color:#3c2b1c}.search input{color:#3c2b1c}.search input::placeholder{color:#736044}.search span{color:#795b33}.search:focus-within{outline-color:#634726}.filter{color:#634829;border-color:#9b7b47;background:#f8ecd299}.filter.active{background:#513b2b;color:#fff0cc;border-color:#513b2b}.hint{color:#675035}.root-grid{scrollbar-color:#916c39 #e9d5a7}.root-card{background:#fff4d5bd;color:#46321e;border:1px solid #b39057;border-radius:5px;box-shadow:0 2px 3px #714a241a}.root-card strong{color:#533519}.root-card small{color:#795b38}.root-card:hover{background:#fff6df;border-color:#73532b}.root-card.chosen{background:#e6cc94;border-color:#624221;box-shadow:inset 0 0 0 1px #624221}.root-card:focus-visible{outline-color:#4f3721}
.mix{border-radius:18px 18px 10px 10px;border-block:6px solid #b18b48;padding:24px;box-shadow:0 13px 32px #0008,inset 0 5px 9px #fff5dbaa,inset 0 -7px 10px #91632144}.mix .section-title{padding-bottom:12px;border-bottom:1px solid #a9864a77}.slot{background:#fff2d155;color:#7a613f;border-color:#927042;border-radius:5px}.slot.filled{background:#e7cf9c;color:#513619;border-color:#987441}.slot.filled small{color:#594226}.slot button{color:#594226}.mix .subtle{color:#624624;border-color:#9a794c;background:#f5e6c4b0}.mix .primary{background:#49344e;color:#fff1cd;border-color:#735175;box-shadow:0 3px 0 #2c1e2f}.mix .status{color:#593d1e;font-weight:600}
.parchment{border-radius:3px 12px 12px 3px;border-left:9px solid #85603a;box-shadow:-3px 0 0 #3b2b23,0 3px 0 #c4ad7d,0 7px 0 #7c633e,0 14px 35px #060a1777,inset 0 0 26px #a87f3933;padding:27px 30px}.paper-top>span:last-child{color:#795530}.parchment input{color:#422d1d;border-color:#a78950}.parchment textarea{background:#fff9e9bb;border-color:#aa8a51;color:#422d1d}.parchment label{color:#503a24}.parchment .prompt,.breakdown{color:#675035}.meaning{border-color:#ac8e58}.meaning p{color:#422d1d}.ink-button{background:#49344e;color:#fff1cd;box-shadow:0 3px 0 #2c1e2f}.ink-button:focus-visible{outline-color:#5b3c67}.empty{border-radius:7px;border-block:5px solid #b18b48}.empty .spark{color:#795431}.empty p{color:#675035}.empty .primary{background:#49344e;color:#fff1cd;border-color:#735175}
.book-note{background:#101b2ae0;border:1px solid #a68b5655;border-radius:6px;padding:12px 18px;color:#eee2ca}.page h2,.page p{color:#422d1d}.page .delete{background:#f8edd6c9;color:#664523;border-color:#a28450}.page-number{color:#715125}footer{background:#101a2ade;color:#f1e3c9;border-top-color:#a68b5666}
button:focus-visible{outline-color:#bb8f42}.nav:focus-visible,.heading button:focus-visible{outline-color:#ffe1a0}
@media(max-width:1000px){.library{padding:19px;border-left-width:12px}.workspace{gap:24px}}
@media(max-width:740px){body{background-attachment:scroll;background-size:auto 100vh;background-repeat:no-repeat;background-color:#172030}.heading{padding:17px 18px}.library{padding:17px}.mix{padding:20px}.parchment{padding:23px}.brand{font-size:25px}header{border-radius:0}.workspace{gap:25px}}
@media print{body{background:white!important}.heading{background:white;border:0;box-shadow:none;padding:0}.heading h1,.heading h1 em{color:black}.page{background:white!important;border:1px solid #999!important;box-shadow:none!important;color:black}.page p,.page h2{color:black}.page .eyebrow,.page-number{color:#555}header,footer{display:none!important}}
/* Keep the root slots and finished spell on one parchment, with the bank immediately below. */
.workspace{display:flex;flex-direction:column;gap:20px}.workspace>.creation,.workspace>.library{width:100%}.creation.mix{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.15fr);gap:28px;align-items:start}.incantation-controls,.spell-details{min-width:0}.spell-details{border-left:1px solid #a9864a88;padding-left:28px}.creation .parchment{background:none;border:0;border-radius:0;box-shadow:none;padding:0}.creation .paper-top{display:none}.creation .parchment label{margin:0 0 5px}.creation .parchment input{font-size:30px;padding-bottom:6px}.creation .breakdown{padding:8px 0}.creation .meaning{padding:8px 0}.creation .meaning p{font-size:20px}.creation .parchment textarea{min-height:64px;height:72px;padding:8px 10px}.creation .parchment label[for="description"]{margin-top:10px}.creation .parchment .prompt{margin:6px 0;font-size:14px}.creation .ink-button{margin-top:7px;padding:9px 16px}.creation .empty{padding:24px 0;border:0;background:none;box-shadow:none;text-align:left}.creation .empty h3{font-size:24px;margin:0 0 10px}.creation .empty p{margin:0;max-width:none}.creation .selected{min-height:90px}.creation .mix-footer{margin:10px 0 14px}.library .root-grid{grid-template-columns:repeat(6,minmax(0,1fr));max-height:290px}.library .section-title{margin-bottom:12px;padding-bottom:10px}.library .hint{margin:10px 0}.library .filters{margin-top:10px}.heading{margin-bottom:20px;padding:15px 24px}.heading h1{font-size:34px;margin:6px 0}.heading p{margin:5px 0}main{padding-top:24px}
@media(max-width:1000px){.library .root-grid{grid-template-columns:repeat(4,minmax(0,1fr))}.creation.mix{gap:20px}.spell-details{padding-left:20px}}
@media(max-width:740px){.creation.mix{grid-template-columns:1fr;gap:16px}.spell-details{border-left:0;padding-left:0;border-top:1px solid #a9864a88;padding-top:15px}.creation .empty{padding:0}.creation .empty h3{font-size:21px;margin-bottom:6px}.creation .empty p{font-size:14px}.library .root-grid{grid-template-columns:repeat(3,minmax(0,1fr));max-height:265px}.heading{padding:14px 18px}.heading h1{font-size:30px}.heading .eyebrow{display:none}.heading{gap:10px}.creation .selected{min-height:78px}}
@media(max-width:360px){.library .root-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media print{.heading{padding:0}}
.sound-options{border:1px solid #ac8a53;border-radius:6px;background:#fff4d455;padding:9px 12px;margin:0 0 12px}.sound-options summary,.word-magic-guide summary{cursor:pointer;font-weight:650;color:#50351e;font-size:14px}.sound-options[open] summary{margin-bottom:12px}.sound-options select{font:14px system-ui;color:#48321d;background:#fff7df;border:1px solid #ac8a53;border-radius:5px;padding:8px;width:100%;margin:0 0 9px}.creation .sound-options label{font-size:14px;margin-bottom:5px}.creation .sound-note{font-size:14px;color:#644c31;margin:6px 0;line-height:1.5}.sound-preview{background:#edddb5;border-left:3px solid #8b6837;padding:9px 12px;margin:9px 0;overflow-wrap:anywhere}.sound-preview strong,.sound-preview span{display:block}.sound-preview strong{font:26px Georgia;color:#422b1a}.sound-preview #soundParts{font-size:14px;color:#674c2b;margin-top:3px}.sound-options .subtle{color:#51351e;border-color:#9d7a45;background:#fff3d5;padding:7px 12px;font-size:14px}.word-magic-guide{padding:16px 22px;width:100%}.word-magic-guide summary{font-size:16px}.guide-grid{display:grid;grid-template-columns:1fr 1fr;gap:24px}.guide-grid h3{font-size:23px;margin:16px 0 8px}.word-magic-guide p{color:#57402a;font-size:16px}.word-magic-guide .guide-note{border-top:1px solid #a9864a88;padding-top:12px;margin-top:16px;font-size:14px}.word-magic-guide .guide-sources{font-size:14px}.guide-sources a{color:#50385f;text-decoration:underline}.sound-options summary:focus-visible,.word-magic-guide summary:focus-visible{outline:3px solid #7f5931;outline-offset:3px}@media(max-width:740px){.guide-grid{grid-template-columns:1fr;gap:0}.word-magic-guide{padding:14px 18px}}@media print{.word-magic-guide,.sound-options{display:none}}

.spell-suggestions{margin:12px 0 16px}.name-suggestions{display:flex;flex-wrap:wrap;gap:8px;margin-top:8px}.suggestion-button{display:flex;flex-direction:column;gap:3px;background:#f4e3bc;color:#3e2919;border:1px solid #916c38;border-radius:8px;padding:9px 12px;font:600 1rem Georgia,serif;overflow-wrap:anywhere;max-width:100%;cursor:pointer}.suggestion-button small{font:400 .875rem/1.3 system-ui}.suggestion-button:hover,.suggestion-button:focus-visible{background:#e8cb8d;outline:2px solid #6a4529;outline-offset:2px}.meaning-suggestions{display:flex;flex-wrap:wrap;gap:7px}.meaning-choice{font:400 .875rem/1.4 system-ui;background:#fff7e5;border:1px solid #916c38;border-radius:8px;padding:8px 10px;color:#3e2919;cursor:pointer;text-align:left;max-width:100%}.meaning-choice.active{background:#3e2919;color:#fff4dc}.meaning-choice:focus-visible{outline:2px solid #6a4529;outline-offset:2px}

.quick-link{margin:12px 0;padding:12px 14px;border:1px dashed #916c38;border-radius:8px;background:#f5e4bc}.quick-link[hidden]{display:none}.quick-link .breakdown{font-weight:600;overflow-wrap:anywhere}

/* Flowing calligraphy for the name, with an illuminated gold flourish. */
@font-face{font-family:SpellbookCalligraphy;src:url('assets/fonts/spellbook-calligraphy.otf') format('opentype');font-weight:400;font-style:normal;font-display:swap}
header{gap:24px;flex-wrap:wrap}
.brand{font-family:SpellbookCalligraphy,'Segoe Script','Apple Chancery',cursive;font-weight:400;font-size:clamp(2.25rem,3.6vw,3rem);line-height:1.2;gap:10px;max-width:100%;padding:4px 4px 10px 0}
.brand-title{position:relative;display:block;padding-right:18px;color:#fff1cb;text-shadow:0 1px 1px #070c15,0 0 18px #d4a95940}
.brand-title em{font:inherit;color:#ffe4a0;text-shadow:0 0 15px #e2b85860}
.brand-title::after{content:'';position:absolute;left:9%;right:9%;bottom:-3px;height:12px;border-bottom:1px solid #edc97da6;border-radius:0 0 70% 40%;transform:rotate(-3deg);box-shadow:0 5px 9px -8px #ffe9a4;pointer-events:none}
.brand-mark{font-size:1.75rem;align-self:center;text-shadow:0 0 12px #ffdc8d;animation:spellbook-sparkle 4s ease-in-out infinite}
.brand-spark{position:absolute;right:-1px;top:2px;font:1rem Georgia,serif;color:#ffe9ae;text-shadow:0 0 10px #f9ce78;animation:spellbook-sparkle 4s ease-in-out 1.2s infinite}
@keyframes spellbook-sparkle{0%,100%{opacity:.65}50%{opacity:1;text-shadow:0 0 13px #ffe29d,0 0 24px #edc777}}
@media(max-width:740px){.brand{font-size:clamp(2rem,8.5vw,2.625rem)}header{gap:14px}.brand-title{padding-right:14px}.brand-mark{font-size:1.4rem}.brand-spark{font-size:.875rem}}
@media(prefers-reduced-motion:reduce){.brand-mark,.brand-spark{animation:none}}

#result{position:relative;isolation:isolate}
.spell-magic{position:absolute;inset:0 0 auto;height:210px;pointer-events:none;overflow:hidden;z-index:3;border-radius:inherit}
.magic-trail{position:absolute;left:6%;top:12%;width:88%;height:100px;border-top:3px solid #ffe9a0;border-radius:50%;filter:drop-shadow(0 0 6px #d0acff);transform:rotate(-12deg);animation:magic-sweep 700ms ease-out both}
.magic-particle{position:absolute;left:var(--x);top:var(--y);color:#fff3ba;font-size:22px;text-shadow:0 0 5px #9266e8,0 0 12px #c69fff;animation:magic-spark 850ms var(--delay) ease-out both}
@keyframes magic-sweep{0%{opacity:0;clip-path:inset(0 100% 0 0)}30%{opacity:1}80%{clip-path:inset(0 0 0 0);opacity:1}100%{opacity:0;clip-path:inset(0 0 0 0)}}
@keyframes magic-spark{0%{opacity:0;transform:scale(.2)}25%{opacity:1;transform:scale(1)}100%{opacity:0;transform:translateY(var(--drift)) scale(.3)}}
@media(prefers-reduced-motion:reduce){.magic-trail{display:none}.magic-particle{animation:magic-still 600ms ease-out both}}
@keyframes magic-still{from{opacity:.8}to{opacity:0}}

.filters{flex-wrap:wrap}.root-card-wrap{position:relative;min-width:0}.root-card-wrap .root-card{width:100%;height:100%;padding-top:38px}.favorite-root{position:absolute;top:3px;right:3px;width:36px;height:36px;padding:0;border:0;border-radius:5px;background:transparent;color:#634221;font-size:25px;line-height:1}.favorite-root:hover,.favorite-root.active{background:#ead39d;color:#533519}.favorite-root:focus-visible{outline-color:#4f3721}

.selected{grid-template-columns:repeat(2,minmax(0,1fr))}.hear-spell{display:inline-block;background:#49344e;color:#fff1cd;border:1px solid #735175;border-radius:8px;padding:9px 14px;font-size:14px;margin-top:10px}.page .hear-spell{margin-right:12px}.speech-status{max-width:1360px;margin:12px auto;padding:0 24px;font-size:14px}.speech-status:empty{display:none}@media print{.hear-spell,.speech-status{display:none!important}}

/* A framed spell demonstration beneath the two root slots. */
.spell-preview{margin-top:22px;border-top:1px solid #a9864a88;padding-top:18px}.preview-header{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:12px}.preview-header h3{font:23px Georgia,serif;margin:0}.preview-header .subtle{font-size:14px;padding:7px 10px;background:#f7ebcf;color:#50351e;border-color:#9d7a45}.preview-scene{position:relative;overflow:hidden;border:2px solid #86633c;border-radius:9px;background:#111a32;aspect-ratio:3/2;box-shadow:0 5px 16px #46301e30}.preview-scene img{display:block;width:100%;height:100%;object-fit:cover}.preview-scene canvas{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}.preview-name{position:absolute;bottom:12px;left:12px;right:12px;color:#fff2cf;background:#0d142be0;border:1px solid #d2b47770;border-radius:6px;padding:6px 12px;font:22px Georgia,serif;text-align:center;overflow-wrap:anywhere}.spell-preview #previewCaption{font-size:16px;line-height:1.5;margin:12px 0 6px;overflow-wrap:anywhere}.spell-preview .preview-note{font-size:14px;color:#72593d;margin:4px 0}@media print{.spell-preview{display:none!important}}
