/* Keep the copy a little higher, with a deliberate breath before the sword. */
.stage-combat .encounter-rule{top:calc((100dvh - var(--ad-space)) * .635)}
.stage-combat .encounter-rule .intro-ready{margin-top:13px}

/* Every tag keeps the same final layer before, during and after payment. */
.stage-shop .tavern-stock .shop-card .purchase-tag{width:100%;margin:0;height:44px;min-height:44px;padding:0;box-sizing:border-box;transition:filter .2s,background-color .2s}
.purchase-tag .purchase-check{font:bold 14px/1 Georgia;color:#c8d9a0;flex:none}
.purchase-tag .paying-face{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;gap:4px}
.purchase-tag .purchase-final{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;opacity:0;transform:translateY(5px);transition:opacity .28s ease,transform .28s ease}
.purchase-tag .store-face{display:flex;align-items:center;justify-content:center;gap:4px;min-height:22px;font:12px/1.3 'Knightle Herald';letter-spacing:0;color:#e6ca8e}
.purchase-tag .store-face.owned-face{font:6px/1.3 'Knightle Quill';gap:3px;color:#e8dba6}
.purchase-tag .store-face .coin-icon{animation:none!important;transform:none!important;opacity:1!important;flex:none}
.purchase-tag .purchase-result{font-size:6px;gap:3px;letter-spacing:0}
.purchase-tag[data-purchase-phase="settling"] .purchase-result,.purchase-tag[data-purchase-phase="ready"] .purchase-result{opacity:0;transform:translateY(-5px);transition:opacity .25s ease,transform .25s ease}
.purchase-tag[data-purchase-phase="settling"] .purchase-final,.purchase-tag[data-purchase-phase="ready"] .purchase-final{opacity:1;transform:none}
.purchase-tag[data-purchase-phase="ready"] .paying-face,.purchase-tag[data-purchase-phase="ready"] .purchase-line{opacity:0;visibility:hidden;pointer-events:none}
.tavern-stock .purchase-tag.purchase-owned:disabled{opacity:1;background:#a4873c25;color:#e8dba6}
.purchase-tag.tag-arrived{animation:none}
.preview-card .purchase-tag{width:100%;min-height:44px}
.preview-card .store-face.equip-face{font:9px/1.3 'Knightle Quill';color:#fff0bc}

/* Keep the track in one coordinate system, including perfect-hit feedback. */
.critical-focus .critical-window{animation:timing-window-fade .18s ease-out both;transform:none}
.critical-focus.timing-locked .critical-window{animation:none;transform:none}
.gauge-runner{transition:none!important}
@keyframes timing-window-fade{from{opacity:0}to{opacity:1}}

/* The curse lands once, then its coating keeps a small slow drip. */
.bound-vowel-badge.goop-arriving{animation:bound-seal-land .7s both;animation-delay:var(--goop-age,0ms)}
.bound-vowel-badge.goop-arriving:before{animation:bound-seal-spread .7s both;animation-delay:var(--goop-age,0ms);transform-origin:top}
.bound-vowel-badge.goop-arriving:after{animation:bound-seal-splash .7s both;animation-delay:var(--goop-age,0ms)}
@keyframes bound-seal-land{0%{opacity:0;transform:translateY(-13px) scale(.75,1.2)}20%{opacity:1}45%{transform:translateY(2px) scale(1.22,.7)}68%{transform:translateY(-2px) scale(.92,1.08)}100%{opacity:1;transform:none}}
@keyframes bound-seal-spread{0%,15%{transform:scaleY(.2);opacity:.2}55%{transform:scale(1.15,.9);opacity:1}100%{transform:none;opacity:1}}
@keyframes bound-seal-splash{0%,25%{opacity:0;translate:0 -5px}50%{opacity:1;translate:-2px 0}100%{opacity:1;translate:0 0}}

/* Five little frames remain visible without taking over the feat cabinet. */
.feats-room .feat-inscription:has(.oath-collection){max-height:none;overflow:visible;min-height:0;padding-top:5px}
.feat-inscription:has(.oath-collection)>h2{font-size:16px;margin-bottom:3px}
.feat-inscription:has(.oath-collection)>p{font-size:10px;line-height:1.3;margin:3px auto}
.feat-inscription:has(.oath-collection)>span{font-size:7px}
.feat-inscription .oath-collection{max-width:360px;margin:6px auto 0;padding:5px 0 0}
.feat-inscription .oath-collection-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:4px}
.feat-inscription .collected-oath{padding:2px 0 4px;min-height:0;border-width:1px;background:none}
.feat-inscription .collected-oath .rank-crest{width:42px;height:48px;min-width:42px;min-height:48px}
.feat-inscription .collected-oath figcaption{gap:2px;margin-top:3px}
.feat-inscription .collected-oath strong{font-size:8px;letter-spacing:0}
.feat-inscription .collected-oath figcaption>span{font-size:4px;letter-spacing:0}

.simple-waystone{width:min(360px,calc(100vw - 32px));padding:23px}
.simple-waystone .game-menu-grid{grid-template-columns:1fr;gap:9px;margin-top:20px}
.simple-waystone .game-menu-grid .btn{min-height:44px}
.speed-setting{display:flex;align-items:center;justify-content:space-between;gap:18px;padding:20px 0;border-bottom:1px solid #ab8a4a33;cursor:pointer}
.speed-setting strong{display:block;font:20px 'Knightle Herald';color:#e7d2a1}
.speed-setting small{display:block;font:12px/1.5 Georgia;color:#bfb79e;margin-top:6px;max-width:320px}
.speed-setting input{flex:none;width:23px;height:23px;accent-color:#bfa56a;cursor:pointer}
.home-info{position:absolute;z-index:10;left:15px;bottom:14px;width:32px;height:32px;padding:5px;border:0;border-radius:0;background:none;display:grid;place-items:center;color:#c6b48a;cursor:pointer}
.home-info>span{display:grid;place-items:center;width:22px;height:22px;font:italic bold 16px/1 Georgia;border:1px solid #aa946077;background:linear-gradient(135deg,#26342c,#0b191b);box-shadow:inset 0 0 0 2px #0a171a,inset 0 0 0 3px #ac96662b;text-shadow:1px 1px #091516;clip-path:polygon(4px 0,18px 0,18px 2px,22px 2px,22px 18px,20px 18px,20px 22px,2px 22px,2px 20px,0 20px,0 4px,4px 4px)}
.home-info:hover>span{color:#f0d99d;border-color:#cfb477;background:linear-gradient(135deg,#344235,#122124)}
.home-info:focus-visible{outline:2px solid #e9d291;outline-offset:3px}
.info-dialog{position:relative;width:min(370px,calc(100vw - 28px));max-height:calc(100dvh - var(--ad-space) - 30px);overflow:auto;padding:30px 24px 23px;text-align:center}
.info-close{position:absolute;right:9px;top:7px;width:32px;height:32px;background:none;border:0;color:#cdb887;font-size:24px}
.info-dialog h2{font:30px 'Knightle Herald';color:#efddb0;margin:8px 0}
.info-dialog h3{font:8px 'Knightle Quill';letter-spacing:1px;color:#dbc38f;margin:24px 0 10px}
.info-dialog>p{font:14px/1.5 Georgia;color:#cbc1a7}
.business-email{font:18px 'Knightle Herald';color:#f0d597;text-decoration:underline;text-underline-offset:4px}
.info-dialog .info-contact-copy{font-size:11px;margin:8px 0 0}
.info-rights{margin:20px 0;padding-top:12px;border-top:1px solid #ad946144;color:#a9aa98;font:11px/1.5 Georgia}
.info-rights p{margin:6px 0}.info-rights a{color:#c9bd98}
@media(max-width:350px){.feat-inscription .collected-oath .rank-crest{width:35px;height:40px;min-width:35px;min-height:40px}.feat-inscription .collected-oath strong{font-size:7px}.home-info{left:9px;bottom:8px}}
@media(orientation:landscape) and (max-height:500px){.stage-combat .encounter-rule{top:calc((100dvh - var(--ad-space)) * .53)}.stage-combat .encounter-rule .intro-ready{margin-top:7px}.feat-inscription .collected-oath .rank-crest{width:33px;height:38px;min-width:33px;min-height:38px}}
@media(prefers-reduced-motion:reduce){.bound-vowel-badge.goop-arriving,.bound-vowel-badge.goop-arriving:before,.bound-vowel-badge.goop-arriving:after{animation:none}.purchase-tag .purchase-final,.purchase-tag .purchase-result{transition:none}}

/* One fixed inscription slot for every feat keeps the carved cabinet still. */
.shell.stage-achievements>.feats-room{--feat-detail-height:144px;max-height:620px;grid-template-rows:auto minmax(0,1fr) var(--feat-detail-height);align-content:start}
.feats-room .feat-inscription,.feats-room .feat-inscription:has(.oath-collection){height:var(--feat-detail-height);min-height:0;max-height:none;padding:8px 5px 0;overflow-y:auto}
@media(max-width:350px){.shell.stage-achievements>.feats-room{--feat-detail-height:140px}}
@media(orientation:landscape) and (max-height:500px){
 .shell.stage-achievements>.feats-room{--feat-detail-height:100%;max-height:100%;grid-template-rows:auto minmax(0,1fr)}
 .feats-room .feat-inscription,.feats-room .feat-inscription:has(.oath-collection){height:100%;max-height:100%}
}
/* Unavailable supplies use a compact status face, never the wide price font. */
.purchase-tag .store-face.status-face{font:6px/1.5 'Knightle Quill';padding:3px 5px;max-width:100%;white-space:normal;overflow-wrap:normal;text-align:center;box-sizing:border-box;color:#c5c3a6}
/* Keep the same fade active even when the opening's classes are cleared. */
.home-info,.home .quest-choices{transition:opacity .75s ease,transform .85s ease}
@media(prefers-reduced-motion:reduce){.home-info,.home .quest-choices{transition:none}}
