/* One lower-screen tint, at exactly the combat foot's position in both states. */
.stage-combat .combat.encounter-intro .combat-foot{visibility:visible;opacity:1;pointer-events:none}
.stage-combat .combat.encounter-intro .combat-foot>*{visibility:hidden;pointer-events:none}
.stage-combat .combat .encounter-rule{background:none;box-shadow:none;border:0}
.stage-combat .combat .encounter-rule:before,.stage-combat .combat .encounter-rule:after{background:none;box-shadow:none}

/* Two permanent treasures, each with its own count and a tap/hover description. */
.currency-bar{position:relative;display:grid;grid-template-columns:1fr 1fr;align-items:center;width:100%;min-height:33px;margin:2px 0 8px;border:1px solid #8c865a70;background:linear-gradient(#18251bde,#0c1712e8);box-shadow:inset 0 1px #d3c28c18,0 2px #06110c}
.currency-detail{position:relative;min-width:0}.currency-detail+ .currency-detail{border-left:1px solid #8c865a55}
.currency-detail summary{list-style:none;display:flex;align-items:center;justify-content:center;gap:4px;min-height:33px;padding:3px 4px;cursor:help;outline-offset:2px}
.currency-detail summary::-webkit-details-marker{display:none}
.currency-detail summary b{font:700 12px/1 'Knightle Quill',serif;color:#efdeb0;min-width:15px;text-align:center;font-variant-numeric:tabular-nums;overflow-wrap:anywhere}
.currency-detail summary [data-dragon-fang],.currency-detail summary .dragon-tooth-icon{width:24px;height:25px;object-fit:contain;flex:none}
.ruby-icon{width:23px;height:23px;image-rendering:pixelated;object-fit:contain;flex:none;vertical-align:middle}
.currency-description{display:none;position:absolute;right:0;top:calc(100% + 8px);width:220px;max-width:calc(100vw - 35px);padding:13px 14px;color:#e8dfc6;background:#0b1713f5;border:1px solid #b3a36a;box-shadow:0 4px 0 #030c08,0 8px 24px #0009;z-index:90;text-align:left;pointer-events:none}
.currency-description:before{content:'';position:absolute;right:22px;top:-5px;width:8px;height:8px;transform:rotate(45deg);background:#0b1713;border-left:1px solid #b3a36a;border-top:1px solid #b3a36a}
.currency-description strong{font:700 12px 'Knightle Quill',serif;color:#f0d59a;letter-spacing:.8px}
.currency-description p{font:14px/1.45 'Knightle Quill',serif;margin:7px 0 0;text-shadow:none}
.currency-detail[open] .currency-description,.currency-detail:focus-within .currency-description{display:block}
@media(hover:hover){.currency-detail:hover .currency-description{display:block}}
.home .last-call-side{position:fixed;z-index:20;right:10px;bottom:calc(var(--ad-space) + 94px);width:48px;height:53px;padding:4px;background:none;border:0;filter:drop-shadow(0 3px 1px #06100c);cursor:pointer}
.home .last-call-side .last-call-mark{width:35px;height:43px;transform-origin:50% 85%;animation:call-menu-mug 4s steps(3,end) infinite}
.home .last-call-side:hover{filter:drop-shadow(0 0 6px #d5a96a88) brightness(1.2)}
.home .last-call-side:focus-visible{outline:1px solid #d6c08c;outline-offset:4px}
.home .quest-choices .work-in-progress{opacity:1;cursor:pointer;filter:none}
.home .work-in-progress>span:last-child{font-size:clamp(13px,3.9vw,18px);letter-spacing:.3px;white-space:nowrap}

/* Both enemy statistics use the same face and scale. */
.stage-combat .combat .enemy-vitals>span:first-child,.stage-combat .combat .enemy-vitals .threat,.stage-combat .combat .enemy-vitals .threat b{font:700 11px/1.25 'Knightle Herald',serif;letter-spacing:.2px;font-variant-numeric:tabular-nums}
.stage-combat .combat .enemy-vitals .threat{gap:5px}
.stage-combat .combat .enemy-health-fill{transition:none;box-shadow:inset 0 1px #f7d49a70,1px 0 #fff0c2}
.stage-combat .combat .enemy-health-trail{transition:none;background:linear-gradient(#ffdfae,#d68b56);opacity:.85}
.stage-combat .combat .health-number,.stage-combat .combat .health-number b,.stage-combat .combat .health-number small{font-family:'Knightle Quill',serif;font-weight:700;line-height:1;font-variant-numeric:tabular-nums}
.stage-combat .combat .health-number{font-size:13px;letter-spacing:.3px;text-shadow:1px 1px #0a2419,-1px -1px #0a2419}
.stage-combat .combat .health-number b{font-size:14px}.stage-combat .combat .health-number small{font-size:10px}
.stage-combat .combat .player-health-trail{transition:none!important}
.stage-combat .combat .knight-status>.health-change{position:absolute;left:auto;right:0;top:-16px;z-index:20;display:flex;align-items:baseline;gap:4px;padding:5px 8px 4px;font:700 14px/1 'Knightle Quill',serif;color:#ffe0bd;background:linear-gradient(#512c28f5,#2b1c1af5);border:1px solid #ce8c6a;box-shadow:0 2px #160f0c,inset 0 1px #f0bf8e33;text-shadow:1px 1px #130f0e;letter-spacing:.3px;animation:health-receipt 1.65s both;animation-delay:var(--health-age,0ms);pointer-events:none}
.stage-combat .combat .health-change small{font:700 9px 'Knightle Quill',serif;letter-spacing:.8px}
.stage-combat .combat .knight-status>.health-gain{color:#e8f8bf;border-color:#a8cb89;background:linear-gradient(#36543af5,#172d23f5);box-shadow:0 2px #0b1b13,inset 0 1px #b9e69a33}
@keyframes health-receipt{0%{opacity:0;transform:translateY(8px) scale(.75)}14%{opacity:1;transform:translateY(-5px) scale(1.08)}25%{transform:translateY(-3px) scale(1)}72%{opacity:1;transform:translateY(-8px)}100%{opacity:0;transform:translateY(-23px) scale(.96)}}
.stage-combat .combat .health-gaining .player-health-meter>i{animation:health-mend-light 1.2s ease-out}
@keyframes health-mend-light{0%{filter:brightness(1)}28%{filter:brightness(1.7);box-shadow:inset 0 2px #fff3c0,0 0 12px #b7ef97}100%{filter:brightness(1)}}
.stage-combat .combat .health-impact .player-health-meter{animation:health-contact 650ms ease-out}
@keyframes health-contact{0%{filter:brightness(1.65);translate:0 0}15%{translate:-3px 1px}34%{translate:2px 0}55%{translate:-1px 0;filter:brightness(1.1)}100%{translate:0 0;filter:none}}
.consumable-use .use-confirmation{border:1px solid #a8c28c;background:linear-gradient(#213c2eea,#101e18f5);box-shadow:0 3px #06100c,inset 0 1px #cce9a52b;padding:9px 13px;min-width:0;border-radius:0}
.consumable-use .use-confirmation strong{font:700 13px 'Knightle Quill',serif;letter-spacing:.5px;color:#e2efbe}
.consumable-use .use-confirmation small{font:11px 'Knightle Quill',serif;margin-top:4px;color:#b6c4a6}

/* The blade gathers overhead, then lightning reaches the foe at contact. */
.execution-charge .execution-light{animation:light-gathers 1.75s ease-in both;opacity:.3}
.execution-impact .execution-light{animation:none;background:none;opacity:0}
.execution-impact .execution-words{animation:perfect-title-rise 2.4s both;transform-origin:center}
.execution-impact .execution-words h2{animation:perfect-spectrum 1.4s linear infinite;letter-spacing:2px;filter:drop-shadow(0 2px 1px #07130b) drop-shadow(0 0 5px #d1cff955)}
@keyframes perfect-title-rise{0%,12%{opacity:0;transform:translateY(15px) scale(.8) rotate(-2deg)}23%{opacity:1;transform:translateY(-7px) scale(1.09) rotate(1deg)}34%{opacity:1;transform:translateY(-3px) scale(1) rotate(0)}75%{opacity:1;transform:translateY(-9px) scale(1.02)}100%{opacity:0;transform:translateY(-24px) scale(.98)}}

/* A rare find temporarily owns the reward stage; the purse still catches gold. */
.ruby-find{position:absolute;inset:0;z-index:7;visibility:hidden;pointer-events:none;text-align:center;--ruby-y:45%;--ruby-reveal:0}
.ruby-presenting .reward-carving{opacity:0;transition:opacity .25s}
.ruby-find h2{position:absolute;left:0;right:0;top:calc(var(--ruby-y) - 76px);margin:0;font:700 clamp(24px,7vw,34px)/1.2 'Knightle Herald',serif;letter-spacing:3px;opacity:var(--ruby-reveal);animation:perfect-spectrum 2.2s linear infinite;text-shadow:2px 3px #08130c}
.ruby-aura{position:absolute;left:50%;top:var(--ruby-y);width:230px;height:180px;transform:translate(-50%,-50%);background:radial-gradient(ellipse,#be344737,#ecbc5522 30%,#101d1433 50%,transparent 72%);opacity:var(--ruby-reveal)}
.ruby-found-label{position:absolute;top:calc(var(--ruby-y) + 39px);left:0;right:0;display:flex;align-items:center;justify-content:center;gap:10px;opacity:var(--ruby-reveal);text-shadow:1px 2px #07130b}
.ruby-found-label>strong{font:700 18px 'Knightle Herald',serif;color:#f2ddb1}
.ruby-found-count{display:flex;align-items:center;gap:5px;min-width:46px;padding:3px 7px;background:#0c1915e8;border:1px solid #9b785369;box-shadow:0 2px #06100c;color:#ffe4b9}
.ruby-found-count b{font:700 14px 'Knightle Quill',serif;font-variant-numeric:tabular-nums}
.ruby-collected .ruby-found-count{animation:ruby-catch .55s ease-out both}
@keyframes ruby-catch{0%{transform:scale(1.2);filter:brightness(1.9);box-shadow:0 0 17px #f2a385aa}100%{transform:scale(1);filter:brightness(1)}}
.ruby-flight{position:fixed;inset:0 0 var(--ad-space);height:calc(100dvh - var(--ad-space));width:100vw;pointer-events:none;z-index:8;image-rendering:pixelated}
@media(prefers-reduced-motion:reduce){.home .last-call-side .last-call-mark,.execution-impact .execution-words,.execution-impact .execution-words h2,.ruby-find h2,.ruby-collected .ruby-found-count,.stage-combat .combat .health-impact .player-health-meter,.stage-combat .combat .health-gaining .player-health-meter>i{animation:none!important}.stage-combat .combat .knight-status>.health-change{animation:none;opacity:1;transform:none}.execution-impact .execution-words{opacity:1}.ruby-find h2{color:#e7c39e}}

.stock-wallets{display:flex;align-items:center;gap:8px}.stock-rubies{display:flex;align-items:center;gap:3px;padding-left:7px;border-left:1px solid #9c926b55;font:700 13px 'Knightle Quill',serif;color:#efc5bc}
.stock-rubies .ruby-icon{width:22px;height:22px}.purchase-tag .ruby-icon{width:25px;height:25px}
.ruby-gate-screen{height:100%;display:flex;flex-direction:column;align-items:center;text-align:center;padding:45px 24px 18px;gap:12px;overflow-y:auto}
.ruby-gate-screen .screen-title{flex:none;padding:0;margin:0}.ruby-gate-screen h1{font:700 clamp(26px,7vw,36px) 'Knightle Herald',serif;margin:9px 0}.ruby-gate-screen .screen-title>p:last-child{font:14px 'Knightle Quill',serif;color:#c5c7aa}
.ruby-gate-art{position:relative;width:auto;height:clamp(180px,43dvh,400px);min-height:180px;max-height:430px;flex:none;aspect-ratio:570/760;filter:drop-shadow(0 6px 12px #0008)}
.ruby-gate-art>svg{width:100%;height:100%;display:block;object-fit:contain;overflow:hidden;border:1px solid #77847366;box-shadow:0 3px #08130e}
.gate-socket-gem{position:absolute;left:57.89%;top:42.1%;width:13%;height:12%;transform:translate(-50%,-50%);display:grid;place-items:center;filter:drop-shadow(0 0 8px #ed4a73)}
.gate-socket-gem .ruby-icon{width:100%;height:100%;object-fit:contain}
.gate-socketed .gate-socket-rim{stroke:#f5a3a6;fill:#802d45}.gate-socketed .gate-socket-gem{animation:gate-ruby-glow 3s ease-in-out infinite}
@keyframes gate-ruby-glow{50%{filter:drop-shadow(0 0 16px #ff6a8f);scale:1.04}}
.ruby-gate-controls{flex:none;display:flex;flex-direction:column;align-items:center;gap:10px;width:100%}.gate-purse{display:flex;align-items:center;justify-content:center;gap:6px;font:700 14px 'Knightle Quill',serif;color:#ebd2b3}.gate-purse>span{font-size:9px;letter-spacing:1px;color:#b7bea8}
#app .gate-ruby-button.btn{display:flex;align-items:center;justify-content:center;gap:8px;min-width:130px;font:700 18px 'Knightle Quill',serif}.gate-ruby-button .ruby-icon{width:29px;height:29px}.gate-status{max-width:290px;margin:3px 0;font:14px/1.45 'Knightle Quill',serif;color:#d6d8bc}
.ruby-confirm-dialog{max-width:340px;text-align:center;padding:24px 22px;background:linear-gradient(#1b2924,#0c1713);border:1px solid #b5a172;box-shadow:0 6px #040b07,0 10px 60px #0009}.ruby-confirm-dialog h2{font:700 26px 'Knightle Herald',serif;color:#ecd4ac}.ruby-confirm-dialog>p{font:16px/1.5 'Knightle Quill',serif;color:#d6d6bd}.ruby-confirm-icon .ruby-icon{width:45px;height:45px;filter:drop-shadow(0 0 8px #dd4e6155)}.ruby-confirm-dialog .button-pair{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:20px}
@media(max-height:700px){.ruby-gate-screen{gap:6px;padding-top:37px}.ruby-gate-screen .screen-title .eyebrow{display:none}.ruby-gate-screen h1{margin:4px 0}.ruby-gate-art{max-height:320px}.gate-status{font-size:12px}.ruby-gate-controls{gap:6px}}
@media(prefers-reduced-motion:reduce){.gate-socketed .gate-socket-gem{animation:none}}
/* Keep the intro inscription above the foot's isolated translucent layer. */
.stage-combat .combat.encounter-intro .battle-wrap{position:relative;z-index:2}

/* v111: compact, contained treasure help and an aligned side entrance. */
.currency-detail{position:static}
.currency-description{left:0;right:auto;box-sizing:border-box;width:175px;max-width:calc(100vw - 40px);padding:9px 10px}
.currency-description strong{font-size:10px;letter-spacing:.3px}
.currency-description p{font-size:11px;line-height:1.35;margin-top:5px}
.currency-description:before{left:18px;right:auto}
.currency-detail:last-child .currency-description:before{left:65%}
.ruby-menu-row{display:flex;align-items:center;position:relative;width:100%;min-width:0}
.home .ruby-menu-row .work-in-progress{flex:1;min-width:0;width:auto;padding-right:0}
.home .work-in-progress>span:last-child{font-size:clamp(10px,2.7vw,13px);letter-spacing:0;white-space:nowrap}
.home .ruby-menu-row .last-call-side{position:relative;right:auto;bottom:auto;flex:0 0 32px;width:32px;height:40px;padding:2px}
.home .ruby-menu-row .last-call-side .last-call-mark{width:27px;height:33px}

.currency-description{top:auto;bottom:calc(100% + 8px)}
.currency-description:before{top:auto;bottom:-5px;transform:rotate(225deg)}

/* v112: common notice column and lower menu activities. */
.home .quest-choices .unlock-notice{right:51px}
.home .last-call-side{position:absolute;right:auto;bottom:auto;width:40px;height:48px;padding:3px}
.home .last-call-side .last-call-mark{width:31px;height:38px}
.stage-home .royal-deed-entry{transform:scale(1.12)}
.home .royal-deed-entry .provision-icon{animation:deed-invitation 3.333s ease-in-out infinite;transform-origin:50% 80%}
@keyframes deed-invitation{0%,100%{transform:translateY(0) rotate(-2.4deg)}50%{transform:translateY(-3.6px) rotate(2.4deg);filter:drop-shadow(0 0 6px #dec58366)}}
@media(prefers-reduced-motion:reduce){.home .royal-deed-entry .provision-icon{animation:none}}
