:root{--paper:#ead4ad;--gold:#dcbc84}
.portrait.illustrated{display:block;background-image:url('assets/portraits.png');background-size:200% 200%;background-repeat:no-repeat;background-color:#3b2b42;clip-path:none;border-radius:10px;border:1px solid #ceac7466;font-size:0;box-shadow:inset 0 -10px 12px #24162c66,0 3px 10px #170f2177;flex-shrink:0}
.illustrated[data-person="0"]{background-position:0% 0%}.illustrated[data-person="1"]{background-position:100% 0%}.illustrated[data-person="2"]{background-position:0% 100%}.illustrated[data-person="3"]{background-position:100% 100%}
.player-card .portrait.illustrated{width:53px;height:56px;margin-left:-7px}
.classmate .portrait.illustrated{width:34px;height:36px;border-radius:6px}.classmate{width:152px}
.contribution .portrait.illustrated{width:34px;height:35px;border-radius:7px}.contribution{gap:11px}
.crew-note{display:flex;align-items:center;margin:19px 0 20px;gap:11px}
.crew-faces{display:flex;padding-left:4px}.crew-faces .portrait{width:33px;height:35px;border-radius:50%;margin-left:-4px;background-color:#35283b;border-color:#c3a06d80}
.crew-note p{font-size:9px;color:#a995a6;margin:0;line-height:1.7}.crew-note p strong{font-weight:500;color:#d3bfa5}
.menu-cast{position:fixed;right:4%;top:40%;width:44%;max-width:650px;z-index:2;text-align:center;pointer-events:none}
.cast-heading{font-size:8px;letter-spacing:2.8px;color:#d0b482;text-shadow:0 2px 8px #18101e}
.cast-lineup{display:flex;align-items:flex-end;justify-content:center;margin-top:15px;position:relative}
.cast-lineup:before{content:'';position:absolute;left:3%;right:3%;bottom:25px;height:95px;background:radial-gradient(ellipse,#271c2ae8,transparent 70%);border-bottom:1px solid #c5a46a40}
.cast-student{width:25%;position:relative}.cast-student .portrait.illustrated{width:100%;height:auto;aspect-ratio:1/1.03;background-color:transparent;border:0;box-shadow:none;filter:drop-shadow(0 8px 5px #160c1f77);border-radius:0;margin-bottom:9px}
.cast-student:nth-child(1){transform:translateY(5px) rotate(-2deg)}.cast-student:nth-child(2){transform:translateY(-10px) rotate(1deg)}.cast-student:nth-child(3){transform:rotate(-1deg)}.cast-student:nth-child(4){transform:translateY(4px) rotate(2deg)}
.cast-student strong{font-family:'Cormorant Garamond',Georgia,serif;font-size:20px;display:block;line-height:1.1;color:#edd0a4;text-shadow:0 2px 7px #1b1121}.cast-student small{display:block;font-size:6px;letter-spacing:1.7px;color:#bca3b6;margin-top:5px}
.cast-footer{font-family:'Cormorant Garamond',Georgia,serif;font-size:17px;font-style:italic;color:#d7c1a6;margin-top:21px;text-shadow:0 2px 10px #211326}
.scene-caption{bottom:14%;right:6%}#menu:before{background:linear-gradient(90deg,#201a29fa 0%,#231b2bf3 28%,#221b2bbd 41%,#221b2b36 67%,transparent 85%)}
.spell-art{width:100%;height:100%;display:block;overflow:visible;filter:drop-shadow(0 2px 8px #73b7c82b)}
.recipe-card .recipe-symbol{height:58px;width:58px;margin:1px auto 6px}.recipe-card strong{font-size:23px}.recipe-card{background:radial-gradient(ellipse at 50% 22%,#4b3a4844,#211927 80%);padding-top:24px;border-radius:8px;box-shadow:0 3px 9px #160e1c33}
.recipe-card.selected{background:radial-gradient(ellipse at 50% 22%,#8b744237,#2c222f 85%);border-color:#d6b77d;box-shadow:0 0 25px #c799481c,inset 0 0 0 2px #d4b5781f}
.recipe-card .tag{left:5px;right:5px;text-align:center;top:8px;font-size:6px;letter-spacing:.8px}
.recipe-preview{height:115px;background:radial-gradient(ellipse at 50% 50%,#3f394633,#1d1724 80%);border-color:#c2a87555}.spell-demo{display:block;width:100%;height:100%;overflow:visible}
.spell-panel .spell-icon{padding:4px;background:linear-gradient(130deg,#567d8733,#29303d88);box-shadow:inset 0 0 10px #82d8e318}
#dialog{max-height:94vh;max-height:94dvh;overflow-y:auto;scrollbar-width:thin;scrollbar-color:#9a7b5e #291e30;background:radial-gradient(ellipse at 50% -30%,#68505c,#2b202f 65%);border-color:#b491627d}
#dialog .sub{color:#c2adba}#dialog>.eyebrow{letter-spacing:2px}
.report{background:repeating-linear-gradient(0deg,#5e3a2d04 0px,#5e3a2d04 1px,transparent 1px,transparent 4px),linear-gradient(120deg,#efdfbd,#ddc297)!important;box-shadow:0 30px 100px #09060e88,inset 0 0 50px #80613f18!important}
.report:before{content:'';position:absolute;inset:10px;border:1px solid #9f7a4d3b;pointer-events:none;border-radius:3px}
.report .stamp{border-style:double;border-width:5px;font-size:22px;padding:8px 11px}.report-recipe{display:flex;align-items:center;justify-content:center;gap:10px}.report-recipe .spell-art{width:40px;height:40px;flex-shrink:0}
.report-crew{display:flex;justify-content:center;gap:8px;margin:16px 0}.report-crew .portrait{width:44px;height:47px}.report .award{background:#99745112;border-color:#96764e77}
.class-card{background:repeating-linear-gradient(0deg,#7e5c3504 0px,#7e5c3504 1px,transparent 1px,transparent 4px),linear-gradient(110deg,#e9d1a8,#f2dfba)}
.class-card:before,.class-card:after{content:'✧';position:absolute;top:22px;font-size:16px;color:#9f7c53;opacity:.65}.class-card:before{left:12px}.class-card:after{right:12px}
.objective-panel{box-shadow:0 5px 22px #1d122b44,inset 0 0 0 3px #8f6b3b10}.primary{background:linear-gradient(120deg,#e7c997,#cfaa70);box-shadow:0 5px 28px #c9944126,inset 0 1px 0 #fff0cb55}
@media(max-height:800px){.menu-copy{top:14%}.crew-note{margin:13px 0}.description{margin-bottom:19px}.menu-cast{top:39%}.scene-caption{bottom:15%}}
@media(max-width:1100px){.menu-cast{right:2%;width:43%}.cast-heading{font-size:6px;letter-spacing:2px}.cast-student strong{font-size:17px}.cast-footer{font-size:15px}.scene-caption strong{font-size:16px}}
@media(max-width:900px){.menu-cast{display:none}.crew-note{margin:14px 0}.cast-footer{display:none}.recipe-card .recipe-symbol{height:46px;width:46px}.recipe-card strong{font-size:21px}}
@media(max-width:650px){.crew-faces .portrait{width:30px;height:32px}.crew-note p{font-size:8px}.recipe-card .recipe-symbol{height:39px;width:39px;margin-bottom:5px}.recipe-card{padding-top:22px;min-height:145px}.recipe-card strong{font-size:20px}.contribution{flex-wrap:wrap;row-gap:6px}.contribution .portrait.illustrated{width:28px;height:29px}.recipe-preview{height:96px}.report .stamp{font-size:17px;padding:6px;right:19px;top:68px}.report-recipe{font-size:20px}.report-crew{margin:12px 0}.class-card:before,.class-card:after{display:none}}
@media(min-width:901px){.menu-copy .crew-note{display:none}}
@media(max-width:900px){#menu{position:fixed;inset:0;overflow-y:auto;padding:100px 6vw 40px}#menu .menu-copy{position:relative;top:auto;left:auto;width:min(480px,100%)}.menu-footer{position:relative;left:auto;right:auto;bottom:auto;margin-top:26px;gap:12px}}
@media(prefers-reduced-motion:reduce){button{transition:none}.cast-student{transform:none!important}}
