@import url('tools.css');
@font-face{font-family:Medieval;src:url('assets/fonts/medievalsharp.ttf') format('truetype');font-display:swap}
@font-face{font-family:Map;src:url('assets/fonts/map-condensed.otf') format('opentype');font-display:swap}
:root{--ink:#eee3c4;--muted:#c1b69a;--gold:#e1ca88;--dark:#171a13;--line:#787560;--paper:#dfd8b9;--pixel:Map,'Arial Narrow',sans-serif;--serif:Georgia,serif;--fantasy:Medieval,Georgia,serif;--wall:url('assets/stone/rough-masonry.png');--stone:url('assets/stone/alternate-stone.png');--floor:url('assets/stone/floor.png');color-scheme:dark}
*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;color:var(--ink);font:17px/1.5 var(--serif);background:#8ca873 var(--wall) repeat center top;background-size:243px 96px;background-blend-mode:multiply}button,input,select,textarea{font:inherit}button{color:inherit;cursor:pointer;border:0}a{color:inherit}button,a{-webkit-tap-highlight-color:transparent;touch-action:manipulation}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:3px solid #f8df96;outline-offset:4px}button:disabled{opacity:.5;cursor:wait}img{max-width:100%}[hidden]{display:none!important}.skip{position:fixed;top:-100px;z-index:100;background:#eee1b6;color:#111;padding:12px}.skip:focus{top:0}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0)}
.dungeon-shell{position:relative;max-width:1280px;min-height:100svh;margin:auto;padding:0 74px;background:linear-gradient(90deg,#080e0980,transparent 14% 86%,#080e0980);box-shadow:0 0 60px #0008;isolation:isolate;overflow:hidden}.wall-edge{position:absolute;top:0;bottom:0;width:56px;z-index:12;pointer-events:none;background:#a2a78e var(--wall) repeat-y right top/162px 64px;background-blend-mode:multiply;box-shadow:inset 2px 0 #b9bca644,inset -5px 0 #11180faa,5px 0 10px #0008}.wall-edge-left{left:0}.wall-edge-right{right:0;background-position:left top;box-shadow:inset -2px 0 #b9bca644,inset 5px 0 #11180faa,-5px 0 10px #0008}
.entrance{padding:24px 0 12px;position:relative;z-index:5;text-align:center}.name-cavity{position:relative;max-width:710px;margin:0 auto;padding:19px 75px 15px;border-radius:48% 45% 36% 40% / 42% 50% 40% 36%;background:linear-gradient(#111a12cf,#192318e8),var(--wall) center/160px 122px;box-shadow:inset 0 10px 24px #000d,inset 3px 0 10px #000,0 3px 0 #a8a58677,0 8px 12px #000b;border:6px solid #3e4433}.name-inscription{text-shadow:0 2px 2px #000,0 -1px #ffffff25}.teacher-name{font:34px/1.1 var(--fantasy);color:#c9c9aa}.name-inscription h1{font:62px/.98 var(--fantasy);margin:5px 0 10px;letter-spacing:-1px;color:#eee4bc}.place{font:17px var(--pixel);margin:5px 0 0;letter-spacing:1.1px;color:#c6bea2}.entrance-torch{position:absolute;top:25%;width:47px;height:116px;object-fit:contain;filter:drop-shadow(0 0 22px #d98a3970)}.entrance-torch.left{left:0;transform:translateX(-32%)}.entrance-torch.right{right:0;transform:translateX(32%)}.instruments{font:19px/1.4 var(--pixel);margin:15px 0 13px;color:#f0e3bd;text-shadow:1px 2px #000}.instruments span{padding:0 7px;color:#b8b692}.stone-nav{display:flex;gap:10px;justify-content:center;margin:0 auto;position:relative;z-index:10}.stone-nav button{min-width:128px;padding:8px 20px;background:linear-gradient(#1b201995,#10170cbb),var(--stone) center/160px 80px;box-shadow:inset 1px 1px #b7b49b66,inset -2px -3px #10170cd9,0 4px 6px #0007;font:20px/1.2 var(--fantasy);text-shadow:1px 2px #000;color:#e8ddbb;clip-path:polygon(3% 0,97% 2%,100% 20%,97% 100%,2% 95%,0 16%)}.stone-nav button:hover{color:#fff4cc;filter:brightness(1.25)}
.dungeon-wall{display:grid;grid-template-columns:1fr 1fr 1fr;gap:20px 30px;position:relative;padding:18px 8px 0;align-items:end}.alcoves{display:contents}.alcove{position:relative;min-width:0;display:block;background:transparent;height:320px;padding:0;isolation:isolate;filter:drop-shadow(3px 5px 3px #0009);outline-offset:4px}.alcove.lessons{grid-column:1;grid-row:1}.alcove.contact{grid-column:3;grid-row:1}.alcove.study{grid-column:1;grid-row:2}.alcove.rhythm{grid-column:2;grid-row:2;height:300px}.alcove.strings{grid-column:3;grid-row:2;height:327px}.arch-stones{position:absolute;inset:0 0 24px;background:linear-gradient(90deg,#0008,transparent 17% 82%,#0009),var(--stone) center/180px 90px;border-radius:48% 46% 6% 4% / 37% 32% 3% 4%;box-shadow:inset 0 3px 0 #dad9b64d,inset 0 -6px 0 #0c110ddd,2px 4px 10px #000b;filter:sepia(.55) brightness(.64)}.alcove.study .arch-stones{border-radius:43% 53% 3% 6% / 27% 36% 2% 6%}.alcove.strings .arch-stones{border-radius:53% 43% 3% 4% / 41% 32% 2% 3%}.alcove-opening{position:absolute;inset:26px 25px 47px;background:#090c09;overflow:hidden;border-radius:49% 49% 2% 3% / 35% 33% 2% 3%;box-shadow:0 1px 2px #e2d8b35c,inset 0 0 20px #000;isolation:isolate}.alcove-back{width:100%;height:100%;display:block;object-fit:cover;filter:brightness(.65) saturate(.55);position:absolute;inset:0}.alcove-opening:after{content:'';position:absolute;inset:0;pointer-events:none;z-index:3;box-shadow:inset 0 18px 22px #000c,inset 7px 0 12px #0009,inset -7px 0 12px #0009;background:linear-gradient(0deg,#141d1280,transparent 35%)}.alcove-floor{position:absolute;bottom:0;left:0;right:0;height:24%;background:linear-gradient(#131a11bb,#131a1155),var(--floor) center/160px 110px;transform:perspective(100px) rotateX(25deg);transform-origin:bottom;filter:brightness(.55);box-shadow:0 -7px 20px #10160ea0}.alcove-creature{position:absolute;z-index:2;width:42%;height:60%;object-fit:contain;bottom:6%;left:45%;filter:brightness(.86) drop-shadow(6px 9px 3px #000c);image-rendering:auto}.alcove-prop{position:absolute;width:27%;height:39%;object-fit:contain;bottom:9%;left:10%;z-index:2;filter:brightness(.8)}.lessons .alcove-prop{height:28%;left:34%;bottom:auto;top:8%;filter:drop-shadow(0 0 7px #e4a84d55)}.contact .alcove-prop{height:40%;width:30%;left:12%;bottom:12%}.study .alcove-prop{width:19%;height:55%;left:14%;bottom:10%}.strings .alcove-creature{width:48%;left:42%}.rhythm .alcove-prop{width:15%;left:15%;height:50%;filter:drop-shadow(0 0 17px #fb9e3455)}.stone-sill{position:absolute;z-index:4;bottom:22px;height:25px;left:-5px;right:-5px;background:linear-gradient(#9b9b7866,#171d16bb),var(--stone) center/180px 90px;box-shadow:0 6px 4px #0009,inset 0 3px #b6b3925c;clip-path:polygon(2% 0,99% 4%,100% 80%,97% 100%,1% 90%,0 18%);filter:sepia(.4) brightness(.85)}.arch-keystone{position:absolute;top:-3px;left:44%;width:15%;height:43px;z-index:4;background:linear-gradient(110deg,#969b7e44,#212c1bc9),var(--stone) 0 0/240px 120px;box-shadow:1px 2px 4px #000c;clip-path:polygon(3% 0,100% 8%,87% 100%,10% 96%);filter:sepia(.4) brightness(.75)}.section-label{position:absolute;z-index:5;bottom:0;left:7%;right:7%;text-align:center;font:27px/1.3 var(--fantasy);padding:5px 6px 7px;color:#eee1b4;background:linear-gradient(#141a11b8,#141a11e6),var(--wall) center/120px 91px;box-shadow:inset 0 1px #abb18b77,0 3px 3px #000a;text-shadow:1px 2px #000;clip-path:polygon(3% 0,97% 2%,100% 85%,96% 100%,0 95%,1% 10%)}.alcove:hover .section-label{color:#fff5cb;background-color:#625f31}.alcove:hover .alcove-back{filter:brightness(.84) saturate(.65)}.alcove:hover .arch-stones{filter:sepia(.5) brightness(.78)}
.orb-sanctum{grid-column:2;grid-row:1;position:relative;min-width:0;height:344px;margin-bottom:2px;isolation:isolate}.orb-gargoyle{position:absolute;top:-17px;left:26%;width:48%;height:76px;object-fit:contain;z-index:5;filter:brightness(.66)}.orb-recess{position:absolute;inset:47px 0 0;background:var(--stone) center/180px 90px;border:18px solid #333d2a;border-radius:48% 51% 7% 8% / 40% 43% 5% 7%;box-shadow:inset 0 0 18px #000,0 3px 0 #969c7366,0 9px 18px #000c;overflow:visible}.orb-recess:before{content:'';position:absolute;inset:-20px;z-index:-1;border-radius:inherit;background:linear-gradient(#71845b77,#1b2318bb),var(--stone) center/180px 90px;box-shadow:inset 0 3px #b5baa064}.recess-view{width:100%;height:100%;object-fit:cover;border-radius:50% 50% 5% 5% / 35% 35% 5% 5%;filter:brightness(.4) sepia(.4)}.orb-button{position:absolute;z-index:3;bottom:18px;left:50%;transform:translateX(-50%);width:175px;height:185px;padding:0;background:none;filter:drop-shadow(0 0 17px #7399ac55)}.orb-button img{width:100%;height:100%;object-fit:contain}.orb-button:hover{filter:drop-shadow(0 0 22px #9adcf4bb)}.orb-shelf{position:absolute;z-index:2;left:-23px;right:-23px;height:30px;bottom:0;background:linear-gradient(#b2b69177,#11190ecc),var(--stone) center/160px 80px;box-shadow:0 7px 6px #000b;border-radius:5% 7% 20% 12%}.orb-label{position:absolute;z-index:6;bottom:-26px;left:8%;right:8%;padding:7px 0;font:24px/1.15 var(--fantasy);background:#182114 var(--wall) center/120px 91px;background-blend-mode:multiply;color:#e9e0bb;box-shadow:inset 0 1px #9da47c,0 4px 5px #000a;text-shadow:1px 2px #000}
.corridor-floor{grid-column:1/-1;position:relative;height:155px;margin:10px -50px 0;background:linear-gradient(#172314b3,#131c1060),var(--floor) center/260px 175px;clip-path:polygon(5% 0,95% 0,100% 100%,0 100%);box-shadow:inset 0 12px 16px #000b;border-top:6px solid #333c28}.floor-creature{position:absolute;left:14%;bottom:4%;width:110px;filter:brightness(.7)}.floor-door{position:absolute;height:134px;width:260px;object-fit:contain;left:50%;bottom:9px;transform:translateX(-50%);filter:brightness(.65)}.floor-spider{position:absolute;right:15%;bottom:15%;width:60px;filter:brightness(.65)}.bottom-plaque{display:flex;align-items:center;justify-content:space-between;gap:15px;position:relative;z-index:6;background:linear-gradient(#182213d9,#11190fed),var(--stone) center/180px 90px;margin:0 -25px;padding:17px 24px;box-shadow:0 -3px 0 #8b947455,0 6px 10px #0008;font:18px var(--pixel)}.bottom-plaque>a{text-decoration:none}.bottom-plaque>a:hover{text-decoration:underline}.world-settings{display:flex;gap:16px}.world-settings button{background:none;padding:5px 0;font:16px var(--pixel);color:#c9c3ab;border-bottom:1px solid #788168}.site-footer{display:flex;justify-content:space-between;gap:10px;padding:26px 3px;color:#d1d0b2;font:14px var(--pixel);text-shadow:1px 2px #000}.site-footer button{padding:0;background:none;text-decoration:underline}
.room-dialog{padding:0;width:min(1120px,calc(100vw - 48px));max-width:none;max-height:calc(100dvh - 40px);background:var(--wall) center/240px 183px;color:var(--ink);border:12px solid #414735;box-shadow:0 25px 100px #000d;overflow:hidden}.room-dialog::backdrop{background:#030703db}.room-topbar{height:52px;display:flex;align-items:center;justify-content:space-between;padding:0 13px;gap:15px;background:linear-gradient(#202c17bb,#162010e6),var(--stone) center/160px 80px;border-bottom:3px solid #7b7e5f;font:18px var(--pixel)}.room-topbar button{background:none;padding:7px}.close-room{font:28px Georgia!important}.back-link{font:18px var(--pixel)}.room-layout{display:grid;grid-template-columns:46% 54%;height:min(680px,calc(100dvh - 116px));min-height:0}.room-scene{position:relative;isolation:isolate;min-width:0;overflow:hidden;background:#121c10 var(--wall) center/240px 183px}.room-scene>#room-backdrop{position:absolute;inset:30px 24px 65px;width:calc(100% - 48px);height:calc(100% - 95px);object-fit:cover;filter:brightness(.56) saturate(.6);border-radius:48% 48% 0 0 / 25% 25% 0 0;box-shadow:0 2px #a2a98a,0 0 0 15px #35432e,0 0 0 18px #182412}.room-scene-shade{position:absolute;inset:0;background:linear-gradient(0deg,#14210fe6,transparent 40%);pointer-events:none;z-index:3}.room-object{position:absolute;max-width:45%;object-fit:contain;z-index:2;filter:brightness(.9);transform:translate(-50%,-100%)}.room-object.glow{filter:drop-shadow(0 0 13px #d19c3d55)}.scene-caption{position:absolute;bottom:20px;left:20px;right:20px;text-align:center;z-index:4}.scene-caption h2{font:30px var(--fantasy);margin:0;text-shadow:1px 2px #000}.scene-caption span{display:none}.room-content{padding:30px 32px 23px;overflow-y:auto;overscroll-behavior:contain;scrollbar-color:#778062 #182014;display:flex;flex-direction:column;background:linear-gradient(#172112ed,#121b0ff2),var(--wall) center/160px 122px;box-shadow:inset 7px 0 16px #0008;min-height:0}.room-kicker{display:none}.room-content h1{font:38px/1.15 var(--fantasy);margin:0 0 20px;color:#eee5c6}.room-content p{font-size:17px;line-height:1.6;color:#d4d4be;margin:0 0 17px}.room-content p.lead{font-size:20px;color:#ede6cc}.room-footer{display:flex;justify-content:space-between;align-items:center;margin-top:auto;padding-top:26px;gap:15px;font:16px var(--pixel)}.room-footer button{border:1px solid #687359;background:#26311e;color:#ddd6b7;width:42px;height:36px}.room-footer span{color:#adba97}.tool-panel{background:linear-gradient(#152010d9,#10180ded),var(--wall) center/160px 122px}.btn{font-family:var(--pixel);font-size:18px}.fine{color:#b5bda5!important}.instrument-tabs button{font-size:17px}.instrument-tabs button[aria-selected=true]{background:#465335}.lesson-form input::placeholder,.lesson-form textarea::placeholder{color:#a7ad98}.email-line a{font-size:19px}.facts strong{font-size:22px}.credits-dialog h2{font-family:var(--fantasy)}
@media(min-width:1400px){.dungeon-shell{max-width:1360px;padding-left:90px;padding-right:90px}.alcove{height:350px}.orb-sanctum{height:375px}.orb-button{width:190px;height:202px}.alcove.rhythm{height:332px}.alcove.strings{height:356px}}
@media(max-width:900px){.dungeon-shell{padding:0 34px}.wall-edge{width:25px}.dungeon-wall{gap:18px 17px;padding:22px 0 0}.alcove{height:280px}.alcove.strings{height:290px}.alcove.rhythm{height:270px}.orb-sanctum{height:305px}.orb-button{width:150px;height:165px}.orb-recess{border-width:13px}.alcove-opening{inset:22px 19px 45px}.section-label{font-size:23px}.name-cavity{max-width:620px}.room-content{padding:28px 24px}.room-dialog{width:calc(100vw - 24px)}.room-layout{grid-template-columns:40% 60%}}
@media(max-width:620px){
 body{background-size:162px 64px}.dungeon-shell{padding:0 19px}.wall-edge{width:13px;background-size:81px 32px;box-shadow:inset -2px 0 #11180faa,3px 0 6px #0008}.wall-edge-right{box-shadow:inset 2px 0 #11180faa,-3px 0 6px #0008}.entrance{padding:16px 7px 10px}.name-cavity{padding:16px 17px 15px;border-width:4px;border-radius:44% 47% 35% 34% / 25% 30% 25% 25%;margin:0 6px;box-shadow:inset 0 6px 17px #000,0 3px #a8a58655,0 6px 9px #000a}.teacher-name{font-size:29px}.name-inscription h1{font-size:44px;line-height:1.06;margin:5px 0 9px;letter-spacing:-.6px}.place{font-size:15px;letter-spacing:.6px}.entrance-torch{width:27px;height:87px;top:30%}.entrance-torch.left{left:-4px}.entrance-torch.right{right:-4px}.instruments{font-size:16px;margin:14px -7px 12px;white-space:nowrap}.instruments span{padding:0 2px}.stone-nav{gap:5px;margin:0 -3px}.stone-nav button{min-width:0;flex:1;padding:9px 3px;font-size:20px;min-height:43px}.dungeon-wall{grid-template-columns:1fr 1fr;gap:22px 15px;padding:0 2px}.orb-sanctum{grid-column:1/-1;grid-row:1;width:245px;height:264px;margin:9px auto 9px}.orb-gargoyle{top:0;height:64px;left:25%;width:50%}.orb-recess{inset:46px 12px 0;border-width:14px}.orb-button{width:156px;height:164px;bottom:9px}.orb-shelf{height:23px;bottom:-4px}.orb-label{bottom:-26px;font-size:22px;left:0;right:0;padding:7px 0}.recess-view{object-position:center}.alcove{height:239px}.alcove.lessons{grid-column:1;grid-row:2}.alcove.contact{grid-column:2;grid-row:2}.alcove.study{grid-column:1;grid-row:3}.alcove.strings{grid-column:2;grid-row:3;height:244px}.alcove.rhythm{grid-column:1/-1;grid-row:4;width:230px;height:250px;justify-self:center;margin-top:0}.alcove-opening{inset:19px 14px 42px}.arch-stones{inset:0 0 21px;background-size:auto,120px 60px}.arch-keystone{height:31px;width:20%;left:40%}.stone-sill{height:20px;bottom:23px;left:-3px;right:-3px;background-size:auto,120px 60px}.section-label{font-size:22px;left:0;right:0;padding:6px 2px;line-height:1.25;white-space:nowrap}.alcove-creature{width:57%;left:33%;height:60%;bottom:5%}.study .alcove-prop{width:24%;left:9%;height:55%}.contact .alcove-prop{left:4%;width:30%}.strings .alcove-creature{width:63%;left:35%;height:50%}.strings .alcove-prop{width:33%;left:2%}.lessons .alcove-prop{width:33%;left:28%;top:6%}.alcove-floor{height:20%}.corridor-floor{grid-column:1/-1;height:111px;margin:0 -15px;background-size:auto,170px 115px}.floor-door{width:160px;height:95px;bottom:0}.floor-creature{width:72px;left:4%;bottom:3%}.floor-spider{width:40px;right:4%;bottom:13%}.bottom-plaque{display:block;text-align:center;margin:0 -5px;padding:16px 6px;font-size:19px}.world-settings{justify-content:center;gap:25px;margin-top:13px}.world-settings button{font-size:16px}.site-footer{padding:20px 3px 24px;font-size:12px;align-items:center}.site-footer button{font-size:13px}.room-dialog{width:100%;height:100dvh;max-height:100dvh;margin:0;position:fixed;inset:0;border:0;overflow-y:auto}.room-topbar{position:sticky;top:0;z-index:20;height:51px}.room-topbar>span{font-size:16px}.room-layout{display:flex;flex-direction:column;height:auto;max-height:none}.room-scene{height:232px;min-height:232px;order:0}.room-scene>#room-backdrop{inset:20px 30px 30px;width:calc(100% - 60px);height:calc(100% - 50px);object-position:50% 45%;border-radius:46% 46% 0 0 / 37% 37% 0 0;box-shadow:0 2px #a2a98a,0 0 0 10px #35432e}.room-object{max-height:65%;max-width:29%}.scene-caption{display:none}.room-content{overflow:visible;height:auto;padding:24px 22px 27px;min-height:calc(100dvh - 283px)}.room-content h1{font-size:34px;margin-bottom:17px}.room-content p{font-size:16px}.room-content p.lead{font-size:19px}.room-footer{padding-top:25px}.form-row{grid-template-columns:1fr 1fr}.tool-panel{padding:17px 12px}.instrument-tabs button{padding:12px 9px;font-size:17px}.rhythm-grid{gap:4px}.beat{height:46px;font-size:18px}
}
@media(max-width:360px){.dungeon-shell{padding:0 14px}.entrance{padding-left:0;padding-right:0}.name-inscription h1{font-size:39px}.instruments{font-size:14px}.section-label{font-size:20px}.stone-nav button{font-size:18px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*{animation:none!important;transition:none!important}}
/* The wall uses one continuous tile layer; carved stone pixels form the openings. */
.arch-frame{position:absolute;inset:0 0 19px;width:100%;height:calc(100% - 19px);z-index:4;filter:brightness(1.22) sepia(.14);pointer-events:none}.alcove-opening{inset:17% 18% 18%;border-radius:45% 44% 0 0 / 18% 18% 0 0;box-shadow:none}.stone-sill{left:2%;right:2%;bottom:14px;height:22px;filter:brightness(.65) sepia(.4);box-shadow:0 4px 4px #0009}.section-label{bottom:-2px;left:5%;right:5%;font-size:25px}.alcove-creature{width:57%;height:63%;left:35%;bottom:5%}.alcove-prop{left:5%;width:34%}.study .alcove-prop{width:24%;left:4%}.strings .alcove-creature{width:67%;left:28%;height:60%}.strings .alcove-prop{left:0;width:39%}.contact .alcove-prop{left:0;width:39%;bottom:8%}.orb-stone-frame{position:absolute;inset:29px -3px -4px;width:calc(100% + 6px);height:calc(100% - 25px);z-index:4;filter:brightness(1.26) sepia(.2);pointer-events:none}.orb-recess{inset:21% 17% 8%;border:0;border-radius:44% 44% 0 0 / 24% 24% 0 0;background:none;box-shadow:none}.orb-recess:before{display:none}.orb-shelf{display:none}.orb-button{z-index:5;bottom:5px;width:170px;height:185px}.recess-view{border-radius:inherit}.orb-label{bottom:-34px;left:-16%;right:-16%;font-size:25px;z-index:6}.orb-gargoyle{z-index:6}.orb-sanctum{margin-bottom:9px}.battlement{position:absolute;width:100%;height:auto;top:-26%;left:0;filter:brightness(.75);pointer-events:none;opacity:.9}.corridor-floor{overflow:hidden}.floor-door,.floor-creature,.floor-spider{z-index:2}.name-cavity{border-radius:41% 46% 39% 43% / 40% 39% 36% 42%;border-color:#434a33;box-shadow:inset 0 10px 24px #000d,inset 3px 0 10px #000,0 3px 0 #a8a58644,0 8px 12px #000b}
@media(max-width:620px){.name-inscription h1{font-size:34px;white-space:nowrap;letter-spacing:-.5px}.name-cavity{padding:18px 5px}.teacher-name{font-size:29px}.orb-sanctum{height:267px;width:254px;margin-top:5px;margin-bottom:11px}.orb-recess{inset:23% 18% 8%}.orb-button{width:158px;height:168px;bottom:3px}.orb-label{font-size:22px;bottom:-28px}.orb-stone-frame{inset:32px 0 -3px;width:100%;height:calc(100% - 29px)}.orb-gargoyle{top:4px}.section-label{font-size:21px;left:0;right:0;bottom:-1px}.stone-sill{bottom:18px;height:18px}.alcove-opening{inset:17% 18% 19%}.alcove-creature{width:70%;left:28%;height:64%;bottom:3%}.study .alcove-prop{width:25%;left:0}.strings .alcove-creature{width:75%;left:27%;height:55%}.strings .alcove-prop{width:36%;left:-4%}.battlement{width:610px;max-width:none;left:50%;transform:translateX(-50%);top:-120px}.alcove.rhythm .alcove-creature{width:60%;left:35%}}
@media(max-width:360px){.name-inscription h1{font-size:30px}}
.alcove{filter:drop-shadow(2px 5px 3px #0008)}.alcove.study .arch-frame{transform:scaleX(-1)}.alcove.strings .arch-frame{transform:rotate(1deg)}.alcove.contact .arch-frame{transform:rotate(-.8deg)}.arch-frame,.orb-stone-frame{filter:brightness(1.4) sepia(.22)}

/* Stationary wooden plaque with the original bracket, without chain remnants. */
.entrance{padding-top:10px}
.sign-mount{position:relative;max-width:540px;margin:0 auto;height:350px;isolation:isolate}
.sign-bracket{position:absolute;top:0;left:2%;width:96%;height:65px;filter:brightness(.65) drop-shadow(2px 3px 0 #000a);image-rendering:pixelated}
.sign-swing{position:absolute;top:54px;left:2%;right:2%;animation:none!important;transform:none!important;filter:drop-shadow(4px 7px 4px #0009)}
.wood-title{margin:0;font-size:0;line-height:0;font-weight:normal}
.wood-title img{display:block;width:100%;height:auto;image-rendering:pixelated}
.sign-place{font:17px var(--pixel);letter-spacing:.8px;text-shadow:1px 2px #000;color:#d8d0b1;margin:7px 0 10px}
.entrance .instruments{margin-top:8px}
@media(max-width:620px){
 .entrance{padding-top:8px}
 .sign-mount{height:auto;aspect-ratio:1.50;max-width:380px;margin:0 -4px}
 .sign-bracket{height:19%}
 .sign-swing{top:14%;left:0;right:0}
 .sign-place{font-size:15px;margin:5px 0 9px}
}

/* Header spacing for the sign and its wall sconces. */
.sign-stage{position:relative;max-width:790px;margin:0 auto}
.floor-door{mix-blend-mode:screen}
@media(min-width:621px) and (max-width:900px){
 .sign-mount{width:calc(100% - 190px);height:auto;aspect-ratio:540/350}
 .sign-bracket{height:19%}.sign-swing{top:15.4%}
}
@media(max-width:620px){
 .sign-stage{padding-bottom:30px}
}

/* Archived iron torch baskets mounted on small wooden backplates. */
.header-sconce{position:absolute;top:120px;width:46px;height:92px;pointer-events:none;isolation:isolate}
.sconce-left{left:33px}.sconce-right{right:33px}
.header-sconce:before{content:'';position:absolute;top:-20%;left:-45%;width:190%;height:90%;background:radial-gradient(ellipse,#c67a2729,transparent 70%);z-index:-1}
.header-sconce img{display:block;width:100%;height:auto;image-rendering:pixelated;filter:brightness(.9) drop-shadow(1px 3px 2px #000a)}
.sconce-right img{transform:scaleX(-1)}
@media(min-width:621px) and (max-width:900px){
 .header-sconce{top:80px;width:38px;height:76px}
 .sconce-left{left:25px}.sconce-right{right:25px}
}
@media(max-width:620px){
 .header-sconce{top:auto;bottom:2px;width:24px;height:48px}
 .sconce-left{left:76px}.sconce-right{right:76px}
}

/* Integer pixel enlargement keeps the small original bracket crisp on desktop. */
@media(min-width:901px){.sign-bracket{left:20px;width:500px;height:68px}}

/* Archived frog beside the crystal ball. */
.orb-frog{position:absolute;z-index:6;left:0;bottom:7px;width:78px;height:auto;pointer-events:none;filter:brightness(.88) drop-shadow(2px 4px 2px #000a)}
@media(max-width:900px){.orb-frog{left:-4%;width:64px}}
@media(max-width:620px){.orb-frog{left:-5%;bottom:5px;width:67px}}

/* Ensemble group and the longer section name. */
.lessons .section-label{white-space:normal;font-size:24px;line-height:1.15}
@media(min-width:621px) and (max-width:900px){.lessons .section-label{font-size:20px}}
@media(max-width:620px){.lessons .section-label{font-size:19px;line-height:1.05;padding:4px 2px}.stone-nav [data-enter="lessons"]{font-size:18px}}

/* An archived woodland clearing behind a new, inward-facing gathering. */
.lessons .alcove-back,.lessons:hover .alcove-back{filter:brightness(1.12) saturate(.85);object-position:68% bottom;image-rendering:pixelated}
.lessons .alcove-opening:after{z-index:1;background:linear-gradient(180deg,#051b2440,transparent 55%);box-shadow:inset 0 8px 12px #0005,inset 4px 0 7px #0003,inset -4px 0 7px #0003}
.lessons .alcove-floor{display:none}
.room-scene[data-room="lessons"]>#room-backdrop{filter:brightness(1.12) saturate(.85);object-position:68% bottom;image-rendering:pixelated}
.room-scene[data-room="lessons"] .room-scene-shade{z-index:1;background:linear-gradient(180deg,#051b2440,transparent 58%,#14210f55)}
/* Two left fairies retain their positions; an archived instrument fills the right. */
.ensemble-party{position:absolute;z-index:2;left:0;right:0;bottom:2%;aspect-ratio:.9;pointer-events:none}
.party-member{position:absolute;display:block;height:auto;image-rendering:pixelated;object-fit:contain;filter:drop-shadow(1px 3px 1px #07150980)}
.party-peach{left:13%;width:40%;bottom:16%;z-index:1;transform:scaleX(-1)}
.party-blue{left:6%;width:46%;bottom:1%;z-index:3}
.party-guitar{left:58%;width:36%;bottom:5%;z-index:2}
.room-scene .ensemble-party{left:50%;right:auto;bottom:12%;width:min(80%,390px);transform:translateX(-50%)}
@media(max-width:620px){
 .room-scene .ensemble-party{width:225px;max-width:70%;bottom:13%}
 .lessons .ensemble-party{aspect-ratio:.65;bottom:3%}
 .lessons .party-peach{left:8%;width:45%;bottom:22%}
 .lessons .party-blue{left:1%;width:53%;bottom:1%}
 .lessons .party-guitar{left:58%;width:38%;bottom:5%}
}


/* The dwarf's crystal cavern, assembled from archived rock and mineral graphics. */
.rhythm .alcove-back,.rhythm:hover .alcove-back{filter:brightness(.86) saturate(.82);object-position:55% center;image-rendering:pixelated}
.rhythm .alcove-floor{display:none}
.rhythm .alcove-opening:after{z-index:1;background:linear-gradient(0deg,#0d091638,transparent 35%);box-shadow:inset 0 8px 12px #0006,inset 4px 0 7px #0005,inset -4px 0 7px #0005}
.rhythm .alcove-prop{width:46%;height:48%;left:0;bottom:4%;filter:drop-shadow(0 0 5px #9361b126);image-rendering:pixelated}
.room-scene[data-room="rhythm"]>#room-backdrop{filter:brightness(.86) saturate(.82);object-position:55% center;image-rendering:pixelated}
.room-scene[data-room="rhythm"] .room-scene-shade{z-index:1;background:linear-gradient(0deg,#100b1d88,transparent 42%)}

/* Exact transparent Shire sign and bracket from the Photoshop coding project. */
.sign-mount-shire{width:100%;max-width:568px;height:auto;aspect-ratio:568/440;margin:0 auto}
.sign-mount-shire .wood-title{filter:drop-shadow(3px 5px 2px #0008)}
@media(min-width:621px){.header-sconce{top:52%}}
@media(min-width:621px) and (max-width:900px){.sign-mount-shire{width:calc(100% - 150px)}}
@media(max-width:620px){.sign-mount-shire{width:100%;max-width:380px;margin:0 auto;aspect-ratio:568/440}}

/* Center the wooden oval itself: its pixel edges are x=68..540, center 304,
   within a 568px canvas centered at 284. Shift the attached bracket with it. */
.sign-mount-shire{transform:translateX(-3.52112676056338%)}

/* Wooden signs now sit directly on the portal thresholds. */
.portal-sign,.alcove:hover .portal-sign{position:absolute;z-index:6;left:0;right:0;bottom:-2px;display:block;padding:0;background:none;box-shadow:none;clip-path:none;font-size:0;line-height:0}
.portal-sign img{display:block;width:100%;height:auto;image-rendering:pixelated;filter:drop-shadow(1px 3px 1px #0008)}
.alcove:hover .portal-sign img{filter:brightness(1.1) drop-shadow(1px 3px 1px #0008)}
.alcove .stone-sill{display:none}
@media(max-width:620px){
 .sconce-left{left:6%}.sconce-right{right:6%}
 .alcove .portal-sign,.alcove:hover .portal-sign{left:-3%;right:-3%;bottom:4px;padding:0}
}

/* Reading and keyboard order: About, Lessons, Rock Band, Jazz Combo, Contact, Camps. */
.dungeon-wall .alcove,.dungeon-wall .orb-sanctum{grid-column:auto;grid-row:auto;width:100%;margin:0;justify-self:stretch}
.dungeon-wall .orb-sanctum{height:320px;filter:drop-shadow(2px 5px 3px #0008)}
.orb-sanctum .orb-stone-frame{inset:0 0 19px;width:100%;height:calc(100% - 19px)}
.orb-sanctum .orb-recess{inset:17% 18% 18%;border-radius:45% 44% 0 0 / 18% 18% 0 0}
.orb-sanctum .orb-button{width:min(130%,170px);height:88%;bottom:3px}
.orb-sanctum .orb-frog{width:min(42%,78px);left:-3%;bottom:5px}
.orb-sanctum .orb-frog-friend{width:min(38%,64px);left:auto;right:-3%;transform:scaleX(-1)}
.room-object.orb-frog-friend{transform:translate(-50%,-100%) scaleX(-1)}
.orb-label.portal-sign{left:0;right:0;bottom:-2px;padding:0;background:none;box-shadow:none;font-size:0;line-height:0}
.orb-label.portal-sign:hover img{filter:brightness(1.1) drop-shadow(1px 3px 1px #0008)}
@media(min-width:1400px){.dungeon-wall .orb-sanctum{height:350px}}
@media(min-width:621px) and (max-width:900px){.dungeon-wall .orb-sanctum{height:280px}}
@media(max-width:620px){
 .dungeon-wall .orb-sanctum,.dungeon-wall .alcove.rhythm{height:239px}
 .orb-sanctum .orb-recess{bottom:19%}
 .orb-label.portal-sign{left:-3%;right:-3%;bottom:4px}
}

/* Contact wizard placement on phones. */
@media(max-width:620px){
 .contact .alcove-creature{width:52%;left:48%;}
}

/* Uploaded animated dragon with one level dish and one bone. */
.dragon-nook{position:relative;width:min(320px,100%);height:155px;justify-self:center;isolation:isolate;filter:brightness(.9) saturate(.9);}
.dragon-nook:before{content:"";position:absolute;left:50%;bottom:22px;width:min(170px,85%);height:16px;transform:translateX(-50%);background:#080e08;border-radius:50%;opacity:.35;filter:blur(3px);z-index:-1;}
.sleeping-dragon{position:absolute;width:min(184px,100%);height:auto;left:50%;bottom:20px;transform:translateX(-50%);image-rendering:pixelated;filter:drop-shadow(1px 2px 1px #10170d66);}
.dragon-prop{position:absolute;height:auto;image-rendering:pixelated;filter:drop-shadow(1px 2px 1px #10170d88);}
.dragon-bowl{width:48px;left:max(0px,calc(50% - 147px));bottom:16px;}
.dragon-bone{width:39px;left:max(45px,calc(50% - 103px));bottom:0;}

/* Two dwarves gathered around the uploaded campfire. */
.rhythm .alcove-prop{width:52%;height:auto;left:0;bottom:14%;filter:brightness(.9) drop-shadow(2px 3px 1px #0008);image-rendering:pixelated;}
.rhythm .alcove-creature{width:57%;height:auto;left:44%;bottom:14%;}
.dwarf-campfire{position:absolute;z-index:3;width:52%;height:auto;left:24%;bottom:0;image-rendering:pixelated;filter:drop-shadow(0 0 5px #d87a2338);pointer-events:none;}
.room-object.campfire{z-index:3;filter:drop-shadow(0 0 9px #d87a2344);}

/* Uploaded wolf below and eagle overhead; the Contact wizard stays. */
.contact .alcove-prop{width:56%;height:auto;left:-2%;bottom:5%;filter:brightness(.95) drop-shadow(1px 2px 1px #0008);image-rendering:pixelated;}
.contact-eagle{position:absolute;z-index:2;width:88%;height:auto;left:1%;top:0;image-rendering:pixelated;filter:brightness(1.35) drop-shadow(0 1px 1px #c8c5ac44);pointer-events:none;}
.room-object.contact-eagle-object{max-width:46%;max-height:54%;filter:brightness(1.35) drop-shadow(0 1px 1px #c8c5ac44);}

/* Original Taron dragon counter; only the number window is overlaid. */
.corridor-floor{height:175px;display:grid;grid-template-columns:minmax(0,1fr) minmax(0,336px) minmax(0,1fr);gap:8px;align-items:end;padding:0 clamp(8px,3vw,45px) 14px;}
.footer-email-boulder{display:block;position:relative;z-index:2;justify-self:center;width:100%;max-width:336px;line-height:0;}
.footer-email-boulder img{display:block;width:100%;height:auto;image-rendering:pixelated;}
.footer-email-boulder:hover img{filter:brightness(1.1);}
.footer-email-boulder:focus-visible{outline:2px solid #e4d797;outline-offset:3px;border-radius:35% 35% 12% 12%;}
.visitor-counter{justify-self:center;position:relative;width:min(132px,100%);aspect-ratio:132/50;margin:0 0 8px;image-rendering:pixelated}
.visitor-counter img{display:block;width:100%;height:100%;image-rendering:pixelated}
.visitor-counter canvas{position:absolute;left:37.121212%;top:70%;width:27.272727%;height:18%;image-rendering:pixelated;background:#e66900}
@media(max-width:620px){
 .corridor-floor{height:244px;grid-template-columns:minmax(0,1fr) minmax(0,1fr);grid-template-rows:130px 1fr;gap:0 4px;padding:0 8px 10px;}
 .corridor-floor .dragon-nook{grid-column:1;grid-row:1;width:min(170px,100%);height:130px;}
 .footer-email-boulder{grid-column:1/-1;grid-row:2;width:min(280px,100%);}
 .dragon-bowl{width:36px;bottom:4px;}
 .dragon-bone{width:30px;bottom:0;}
 .visitor-counter{grid-column:2;grid-row:1;width:110px;}
}
