@import url('https://fonts.googleapis.com/css2?family=Cormorant+Garamond:ital,wght@0,500;0,600;0,700;1,500;1,600;1,700&family=DM+Sans:wght@400;500;600;700&display=swap');
:root{--cream:#f1e0bd;--paper:#e9d3aa;--ink:#3d293c;--gold:#dab276;--muted:#b5a7a2;--cyan:#86dfed;--plum:#211b27;--red:#ad514b}*{box-sizing:border-box}body{margin:0;overflow:hidden;background:#211b27;color:var(--cream);font-family:'DM Sans',sans-serif;font-size:14px}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit;cursor:pointer}button:focus-visible,a:focus-visible{outline:2px solid var(--cyan);outline-offset:5px}button{transition:transform .18s,background .18s,opacity .18s}button:hover{filter:brightness(1.12)}button:active{transform:translateY(2px)}a{color:inherit;text-decoration:none}.hidden{display:none!important}#stage{position:fixed;inset:0}#stage canvas{width:100%;height:100%;display:block}.vignette{position:fixed;inset:0;pointer-events:none;box-shadow:inset 0 0 140px 20px #1b152b66;background:linear-gradient(0deg,#18131e88,transparent 25%,transparent 80%,#18131e55)}#masthead{position:fixed;left:36px;right:32px;top:24px;display:flex;justify-content:space-between;align-items:center;z-index:10}.brand{display:flex;gap:12px;align-items:center;font-family:'Cormorant Garamond',Georgia,serif;font-weight:700;font-size:17px;letter-spacing:2px;line-height:.9}.brand small{font-size:11px;letter-spacing:5px}.crest{width:39px;height:47px;display:grid;place-items:center;border:1px solid #bf9b5c;border-radius:8px 8px 20px 20px;color:var(--gold);font-size:25px;transform:rotate(-6deg)}.header-right{display:flex;gap:10px;align-items:center}.edition{font-size:9px;letter-spacing:2px;color:#ccb99c;margin-right:16px}.icon-button{color:var(--cream);height:36px;min-width:38px;padding:0 10px;background:#241c2bbb;border:1px solid #ba956a55;border-radius:5px;font-size:19px}.icon-button span{font-size:8px;vertical-align:middle;margin-left:4px}.menu-copy{position:fixed;top:16%;left:7%;width:480px;z-index:3}#menu:before{content:'';position:fixed;inset:0;background:linear-gradient(90deg,#201a29fa 0%,#231b2bf4 26%,#221b2bd9 38%,#221b2b4d 60%,transparent 75%);pointer-events:none}.eyebrow{font-size:9px;letter-spacing:2.4px;font-weight:700;color:var(--gold);display:flex;align-items:center;gap:9px}.eyebrow i{height:5px;width:5px;background:var(--gold);transform:rotate(45deg)}h1{font-family:'Cormorant Garamond',Georgia,serif;font-weight:600;font-size:clamp(64px,7vw,110px);letter-spacing:-4px;line-height:.84;margin:28px 0 24px;position:relative;text-shadow:0 4px 25px #110c1a66}h1 em{font-weight:500;color:#e8c78f}h1 .title-star{position:absolute;font-size:38px;top:0;left:365px;font-style:normal;font-weight:400;transform:rotate(13deg);color:var(--gold)}.tagline{font-family:'Cormorant Garamond',Georgia,serif;font-size:28px;line-height:1.06;margin:20px 0;color:#f0dfc4;font-style:italic}.description{color:#bfb0b6;font-size:12px;line-height:1.8;margin:0 0 28px}.mode-select{display:flex;gap:8px;margin-bottom:14px;width:396px}.mode{background:#2a2232b3;color:#c5b5b6;border:1px solid #957a6a44;border-radius:4px;padding:14px 14px 12px;text-align:left;flex:1}.mode span{display:block;font-size:12px;font-weight:600}.mode small{font-size:7px;letter-spacing:1.2px;display:block;margin-top:5px;color:#a89498}.mode.active{background:#ae885d20;border-color:#cba26a;color:#edd5a7;box-shadow:inset 0 0 0 1px #bc92532a}.mode.active small{color:#cbaa78}.primary{background:var(--gold);color:#302331;display:flex;justify-content:space-between;align-items:center;border:1px solid #f4dbab77;border-radius:4px;padding:17px 23px;font-size:15px;font-weight:700;box-shadow:0 5px 28px #c9944126;min-height:52px}.menu-copy>.primary{width:396px}.primary span{font-size:23px;font-weight:400}.menu-meta{display:flex;justify-content:space-between;align-items:center;width:396px;margin-top:14px}.menu-meta>span{font-size:8px;letter-spacing:1.2px;color:#a89699}.menu-meta button,.menu-footer button{background:none;border:0;padding:0;color:#d0ba98;font-size:10px}.menu-meta button span,.menu-footer button span{margin-left:6px}.menu-controls{display:flex;gap:19px;margin-top:29px;color:#9e8e9d;font-size:9px}kbd{font-family:inherit;font-size:9px;display:inline-flex;border:1px solid #aa97934d;border-radius:3px;padding:3px 6px;color:#d9c5ac;background:#241c2944;margin-right:5px;white-space:nowrap}.scene-caption{position:fixed;right:6%;bottom:17%;display:flex;align-items:center;gap:12px;text-shadow:0 2px 10px #1b101e}.scene-caption small{font-size:8px;letter-spacing:2px;color:#d8b985;display:block;margin-bottom:6px}.scene-caption strong{font-family:'Cormorant Garamond',Georgia,serif;font-size:20px;font-style:italic;font-weight:500}.tiny-star{font-size:29px;color:var(--gold)}.menu-footer{position:fixed;left:36px;right:32px;bottom:23px;display:flex;align-items:center;justify-content:space-between;border-top:1px solid #c0a27930;padding-top:18px;font-size:7px;letter-spacing:1.5px;color:#aa949e}.menu-footer button{font-size:10px;letter-spacing:0}.version{color:#baa98f}#hud{position:fixed;inset:0;pointer-events:none}.hud-top{position:absolute;left:32px;right:32px;top:94px;display:flex;justify-content:space-between;align-items:flex-start}.player-card{display:flex;gap:12px;align-items:center;background:#241c2dcf;border:1px solid #b9926159;border-radius:5px;padding:11px 16px;width:212px;box-shadow:0 8px 35px #120c1722}.portrait{width:42px;height:47px;display:grid;place-items:center;clip-path:polygon(5% 0,95% 0,100% 75%,50% 100%,0 75%);font-family:Georgia,serif;font-size:25px;background:#823e50;color:#e8cda8;border:1px solid #d2ac76}.hud-label{font-size:8px;letter-spacing:1.6px;color:#c3ab91;font-weight:600}.player-card small{display:block;font-size:7px;letter-spacing:1px;color:var(--cyan);margin-top:4px}#hearts{font-size:19px;letter-spacing:2px;color:#d97979;line-height:1.1;margin:3px 0}#hearts .lost{color:#5e4556}.class-card{background:linear-gradient(110deg,#ead3ab,#f2dfba);color:#473142;border-radius:3px 3px 12px 3px;text-align:center;min-width:268px;position:relative;padding:13px 40px 15px;border:1px solid #b79568;box-shadow:0 4px 20px #1d132a55;transform:rotate(-1deg)}.class-card .hud-label{color:#93735c;display:block;font-size:7px}.class-card strong{font-family:'Cormorant Garamond',Georgia,serif;font-size:23px;font-weight:700;display:block;margin:1px 0}.class-card #timer{font-size:11px;letter-spacing:2px;font-variant-numeric:tabular-nums;color:#795a59}.class-progress{position:absolute;bottom:0;left:10px;right:10px;height:3px;background:#b9a38555}.class-progress i{display:block;height:100%;background:#7e5660;width:0;transition:width .3s}.score-card{text-align:right;min-width:180px;background:#241c2dbb;padding:13px 16px;border-radius:5px;border:1px solid #b9926133}.score-card strong{font-size:28px;letter-spacing:1px;display:block;font-variant-numeric:tabular-nums;line-height:1.2;color:#edd0a0}.score-card>span:last-child{font-size:9px;color:#e6bb7e}.roster{position:absolute;left:32px;top:205px;display:flex;flex-direction:column;gap:8px}.classmate{display:flex;gap:8px;align-items:center;background:#241c2bb0;border:1px solid #c19c6c28;padding:7px 9px;border-radius:4px;width:139px}.classmate .portrait{width:27px;height:32px;font-size:15px}.classmate strong{display:block;font-size:10px;color:#e8d2af}.classmate small{font-size:7px;letter-spacing:.7px;color:#a997a2}.mini-hp{height:2px;background:#4a364a;margin-top:5px;width:78px}.mini-hp i{height:100%;display:block;background:#77b7b2}.hud-bottom{position:absolute;left:32px;right:32px;bottom:61px;display:flex;justify-content:space-between;align-items:flex-end;gap:12px}.spell-panel,.objective-panel,.ingredient-panel{display:flex;align-items:center;gap:12px;background:#261e2edb;border:1px solid #b6906759;padding:13px 15px;border-radius:5px;backdrop-filter:blur(8px);box-shadow:0 4px 20px #1e122733}.spell-panel strong{display:block;font-family:'Cormorant Garamond',Georgia,serif;font-size:22px;margin:0 0 2px}.spell-panel #spell-level{font-size:7px;color:#af9aa7;letter-spacing:1px}.spell-icon{height:43px;width:43px;display:grid;place-items:center;background:#53798433;border:1px solid #82d8e366;border-radius:7px;color:var(--cyan);font-size:29px;transform:rotate(-5deg)}.blink-key{margin-left:9px;border-left:1px solid #a88c6d33;padding-left:12px;display:flex;flex-direction:column;text-align:center}.blink-key small{font-size:7px;margin-top:5px;color:#b09aab}.objective-panel{border-color:#ceb07c88;background:linear-gradient(120deg,#ead5af,#d8bb91);color:#483443;min-width:310px;transform:rotate(.5deg)}.objective-icon{font-size:28px;color:#97624a}.objective-panel .hud-label{color:#987557;font-size:7px}.objective-panel strong{display:block;font-size:11px;margin:4px 0}.objective-panel #objective-hint{font-size:8px;color:#896d5d}.objective-ring{margin-left:8px;border:1px solid #a37e58;border-radius:50%;height:34px;width:34px;display:grid;place-items:center;font-size:10px;font-weight:700}.ingredient-panel{display:block;min-width:146px}.ingredient-panel>div{display:flex;gap:15px;margin-top:9px;font-size:18px}.ingredient-panel b{font-size:13px;color:#ead4b4}.frost{color:var(--cyan)}.fire{color:#f5a46b}.slime{color:#bcd76f}.game-controls{position:absolute;bottom:22px;display:flex;justify-content:center;gap:22px;width:100%;font-size:8px;color:#b09bab}.game-controls kbd{font-size:7px}#toast{position:fixed;top:29%;left:50%;transform:translate(-50%,-12px);opacity:0;z-index:40;background:#2c2233ed;border:1px solid #c9a36f80;border-radius:5px;padding:12px 22px;text-align:center;color:#edd4aa;max-width:80vw;font-size:12px;transition:opacity .2s,transform .2s;pointer-events:none}#toast.show{opacity:1;transform:translate(-50%,0)}#banner{position:fixed;left:0;right:0;top:39%;text-align:center;pointer-events:none;z-index:11;background:linear-gradient(90deg,transparent,#271c2be0,transparent);padding:25px 0;animation:bannerIn .4s}#banner small{font-size:9px;letter-spacing:4px;color:#d6b171}#banner h2{font-family:'Cormorant Garamond',Georgia,serif;font-size:60px;line-height:1;margin:9px 0;color:#f2dbaf;font-weight:600;font-style:italic}#banner p{font-size:12px;color:#d5bdba;margin:10px}#overlay{position:fixed;inset:0;z-index:30;background:#19131fd9;backdrop-filter:blur(9px);display:flex;align-items:center;justify-content:center;padding:28px;overflow:auto}#dialog{width:min(850px,96vw);position:relative;border:1px solid #b68d5d88;border-radius:10px;background:radial-gradient(ellipse at 50% 0,#443047,#2a202f 65%);padding:35px 42px;box-shadow:0 30px 100px #09060e88;text-align:center}#dialog>.eyebrow{justify-content:center}#dialog h2{font-family:'Cormorant Garamond',Georgia,serif;font-size:48px;font-weight:500;margin:9px 0 5px;color:#f0d6a9;font-style:italic}#dialog .sub{color:#baa5b4;font-size:11px;line-height:1.8;margin:0 0 22px}.close{position:absolute;right:15px;top:12px;border:0;background:none;color:#c5b298;font-size:23px}.brew-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin:21px 0}.recipe-card{padding:20px 12px 16px;border:1px solid #b4946755;border-radius:7px;background:#221a28;position:relative;min-height:174px;color:#cfbbc2}.recipe-card.selected{border-color:#d7b87d;background:#c3a16415;box-shadow:0 0 22px #c7994830}.recipe-card .recipe-symbol{font-family:Georgia,serif;font-size:34px;height:46px;display:block;color:var(--cyan);text-shadow:0 0 18px #6acbda66}.recipe-card.fire .recipe-symbol{color:#f5a46b;text-shadow:0 0 18px #fc7e4566}.recipe-card.slime .recipe-symbol{color:#bcd76f}.recipe-card strong{display:block;font-family:'Cormorant Garamond',Georgia,serif;font-size:22px;color:#eed5aa;margin:8px 0}.recipe-card small{display:block;font-size:9px;line-height:1.6;color:#ab94a7}.recipe-card .tag{position:absolute;top:7px;right:8px;font-size:7px;color:#d3b475;letter-spacing:.7px}.brew-actions{display:flex;justify-content:center;gap:8px;margin:16px 0}.pill{border:1px solid #b3936360;background:#2c2232;color:#b5a0ad;border-radius:30px;padding:9px 18px;font-size:10px}.pill.selected{background:#dab276;color:#34263a;border-color:#dab276}.recipe-preview{height:91px;background:#211927;border:1px dashed #a9855655;border-radius:6px;position:relative;margin:15px 0 12px;overflow:hidden}.recipe-preview .preview-orb{position:absolute;left:15%;top:28px;color:#95f0ff;font-size:34px;animation:boomerang 2.3s infinite ease-in-out;filter:drop-shadow(0 0 10px #8fe7f9)}.recipe-preview.fire .preview-orb{color:#ff9857;filter:drop-shadow(0 0 10px #ff7a44)}.recipe-preview.slime .preview-orb{color:#bddd7f}.recipe-preview .preview-track{position:absolute;left:15%;right:15%;top:48px;border-top:1px dashed #83c8d44d}.recipe-preview small{position:absolute;bottom:7px;left:0;right:0;font-size:7px;letter-spacing:2px;color:#827284}.contribution{display:flex;justify-content:center;align-items:center;gap:10px;color:#b6a2af;font-size:10px;margin:11px 0 17px}.contribution .portrait{width:25px;height:29px;font-size:15px}.contribution strong{color:#dfc396}.dialog-actions{display:flex;justify-content:center;gap:12px;align-items:center;margin-top:18px}.dialog-actions .primary{min-width:240px;justify-content:center;gap:40px}.secondary{border:1px solid #b0916955;background:transparent;color:#cdb698;border-radius:4px;padding:15px 20px;min-height:49px;font-size:11px}.report{background:linear-gradient(120deg,#ead7b2,#dbc198)!important;color:#533a49!important;transform:rotate(-.6deg);border:1px solid #a17e59!important}.report h2{color:#533445!important}.report .eyebrow{color:#8e694c}.report .sub{color:#8c6c60!important}.report .stamp{position:absolute;right:43px;top:66px;border:3px solid #a94c4b;border-radius:6px;color:#a94c4b;font-family:Georgia,serif;font-size:25px;font-weight:700;padding:8px 12px;transform:rotate(13deg);opacity:.9}.grades{display:grid;grid-template-columns:repeat(3,1fr);margin:25px 0;border-top:1px solid #97755966;border-bottom:1px solid #97755966}.grades>div{padding:16px 8px;border-right:1px solid #97755933}.grades>div:last-child{border:0}.grades small{font-size:9px;letter-spacing:1px;display:block}.grades strong{font-family:Georgia,serif;font-size:42px;font-weight:500;display:block;margin-top:5px;color:#754d58}.report-recipe{font-family:'Cormorant Garamond',Georgia,serif;font-size:24px;color:#6f4d51}.award{padding:13px;background:#a7834c14;border:1px dashed #98795666;font-size:11px;margin-top:13px}.award span{display:block;font-family:'Cormorant Garamond',Georgia,serif;font-size:25px;margin-top:4px;font-style:italic}.report .primary{background:#614153;color:#f1d5a5;border-color:#614153}.report .contribution{color:#806357}.help-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;text-align:left}.help-grid article{background:#20182488;padding:17px;border:1px solid #ac8e5e33;border-radius:6px}.help-grid strong{display:block;color:#dfc497;font-size:13px;margin-bottom:7px}.help-grid p{font-size:11px;color:#bba5b3;line-height:1.7;margin:0}.sketch-img{max-width:100%;border-radius:5px;margin-top:15px}.sketch-dialog{width:min(1100px,96vw)!important;padding:25px!important}#boss-bar{position:absolute;left:31%;right:24%;top:210px;background:#251b2de8;border:1px solid #bf8f6b66;border-radius:5px;padding:10px 14px}#boss-bar>div:first-child{display:flex;justify-content:space-between;font-size:9px;letter-spacing:1px;color:#e3c292}#boss-bar small{font-size:7px;color:#bd97ad}.boss-track{height:5px;background:#61424d;margin-top:9px;border-radius:3px;overflow:hidden}.boss-track i{display:block;height:100%;width:100%;background:linear-gradient(90deg,#ad666e,#e3ae83);transition:width .2s}#detention{position:absolute;left:50%;top:36%;transform:translateX(-50%);width:370px;text-align:center;background:#dfc49f;color:#614553;border:1px solid #9d7359;padding:20px;box-shadow:0 15px 70px #17101b66;pointer-events:none}#detention .eyebrow{font-size:7px;justify-content:center;color:#9a6c4e}#detention h2{font:italic 45px 'Cormorant Garamond',Georgia,serif;margin:8px 0}#detention p{font-size:11px;line-height:1.6;margin:0 0 8px}#detention strong{font:28px Georgia,serif}#loading{position:fixed;inset:0;z-index:100;display:grid;place-content:center;background:#211a29;text-align:center}.loading-star{font-size:60px;color:#d4ad74;animation:spin 4s linear infinite}#loading p{font-size:11px;color:#b99ea9;margin-top:25px;letter-spacing:1px}#mobile-controls{position:fixed;bottom:105px;left:14px;z-index:14;gap:5px;display:flex}#mobile-controls button{background:#322437cc;color:#e8d4b6;border:1px solid #b99c6b88;border-radius:8px;padding:14px;font-size:13px}@keyframes boomerang{0%{left:15%;transform:rotate(0)}50%{left:78%;transform:rotate(220deg)}100%{left:15%;transform:rotate(440deg)}}@keyframes spin{to{transform:rotate(360deg)}}@keyframes bannerIn{from{opacity:0;transform:translateY(15px)}to{opacity:1;transform:none}}
@media(min-height:950px){.menu-copy{top:20%}}@media(max-height:760px){.menu-copy{top:16%;left:6%}h1{font-size:76px;margin:20px 0}.tagline{font-size:25px;margin:14px 0}.description{margin-bottom:18px}.mode{padding:10px 12px}.menu-controls{margin-top:20px}.primary{padding:13px 20px;min-height:47px}.scene-caption{bottom:20%}.menu-footer{bottom:17px;padding-top:13px}#dialog{padding:23px 30px}#dialog h2{font-size:39px}.recipe-card{min-height:152px;padding-top:14px}.recipe-preview{height:75px}.brew-grid{margin:15px 0}.hud-top{top:82px}.roster{top:188px}}
@media(max-width:950px){.edition{display:none}.hud-bottom{left:15px;right:15px;gap:6px}.spell-panel,.objective-panel,.ingredient-panel{padding:10px;gap:7px}.objective-panel{min-width:250px}.spell-panel strong{font-size:18px}.blink-key{display:none}.class-card{min-width:220px;padding:10px 20px}.score-card{min-width:125px}.player-card{width:180px}.roster{left:17px}.menu-copy{left:6%}.scene-caption{right:3%;max-width:260px}.scene-caption strong{font-size:17px}.brew-grid{gap:7px}.recipe-card strong{font-size:20px}}
@media(max-width:650px){#masthead{left:18px;right:15px;top:18px}.brand{font-size:13px}.crest{width:30px;height:37px}.brand small{font-size:8px;letter-spacing:4px}.icon-button{height:32px;min-width:32px;padding:0 7px}.menu-copy{left:7%;top:17%;width:86%}#menu:before{background:linear-gradient(90deg,#201a29ed,#201a29b8 70%,#201a2977)}h1{font-size:80px}.description{font-size:11px}.mode-select,.menu-copy>.primary,.menu-meta{width:100%}.eyebrow{font-size:7px;letter-spacing:1.7px}h1 .title-star{left:280px;top:3px;font-size:27px}.tagline{font-size:26px}.scene-caption{display:none}.menu-footer{left:18px;right:18px}.menu-footer>span:first-child{display:none}.version{font-size:6px}.menu-controls{gap:12px;font-size:8px}.hud-top{left:12px;right:12px;top:78px;gap:8px}.player-card{width:auto;padding:9px}.player-card>.portrait{display:none}.class-card{min-width:165px;padding:10px 12px}.class-card strong{font-size:18px}.score-card{min-width:80px;padding:10px 8px}.score-card strong{font-size:19px}.score-card .hud-label{font-size:6px;letter-spacing:.5px}.score-card>span:last-child{font-size:7px}.hud-label{font-size:7px}#hearts{font-size:15px;letter-spacing:0}.roster{top:174px;left:12px;gap:5px}.classmate{width:93px;padding:5px}.classmate .portrait{display:none}.mini-hp{width:73px}.classmate strong{font-size:8px}.classmate small{font-size:6px}.hud-bottom{bottom:48px;flex-wrap:wrap;left:12px;right:12px;gap:6px}.spell-panel{flex:1}.spell-panel strong{font-size:17px}.spell-icon{width:32px;height:32px;font-size:22px}.ingredient-panel{min-width:110px}.ingredient-panel>div{font-size:14px;gap:9px;margin-top:6px}.ingredient-panel b{font-size:11px}.objective-panel{order:-1;width:100%;min-width:0;padding:8px 12px;justify-content:center}.objective-panel strong{font-size:10px}.objective-icon{font-size:23px}.objective-ring{height:28px;width:28px}.game-controls{bottom:10px;gap:8px;font-size:6px}.game-controls span:nth-child(2),.game-controls span:last-child{display:none}#dialog{padding:25px 16px;max-height:94vh;overflow:auto}#dialog h2{font-size:36px}.brew-grid{grid-template-columns:1fr 1fr}.recipe-card{min-height:135px;padding:11px 9px}.recipe-card .recipe-symbol{height:34px;font-size:28px}.recipe-card strong{margin:5px 0;font-size:20px}.recipe-card small{font-size:8px}.recipe-preview{height:66px}.brew-actions{margin:10px 0}.pill{padding:8px 13px}.contribution{font-size:8px;gap:6px}.dialog-actions .primary{min-width:190px;font-size:12px}.help-grid{grid-template-columns:1fr;gap:6px}.help-grid article{padding:11px}.help-grid p{font-size:10px}.report .stamp{right:14px;top:71px;font-size:17px}.grades strong{font-size:30px}.grades small{font-size:7px}.report-recipe{font-size:20px}.dialog-actions{gap:8px}.secondary{font-size:10px;padding:11px}.game-controls kbd{font-size:6px;padding:2px 3px}#boss-bar{left:25%;right:8%;top:181px}#boss-bar small{display:none}#detention{width:80%;top:32%}}
