/* v0.5.4.5 Serious Ryujin Balance Adjust */
.ryujin-watch{position:fixed;left:50%;bottom:112px;transform:translateX(-50%);z-index:52;width:min(340px,calc(100vw - 40px));padding:11px 14px;border-radius:18px;background:rgba(8,22,25,.82);color:#fff;box-shadow:0 12px 35px rgba(0,0,0,.24);backdrop-filter:blur(10px);text-align:center;font-weight:800;pointer-events:none}.ryujin-watch small{display:block;font-size:11px;opacity:.78;margin-bottom:7px}.ryujin-watch-track{height:5px;border-radius:99px;background:rgba(255,255,255,.16);overflow:hidden}.ryujin-watch-track i{display:block;width:0;height:100%;background:linear-gradient(90deg,#7de5ff,#d7ef96);border-radius:99px;transition:width .08s linear}
.ryujin-battle{position:fixed;inset:0;z-index:70;pointer-events:none;font-family:system-ui,-apple-system,"Segoe UI",sans-serif;color:#fff}.ryujin-battle.hidden,.ryujin-watch.hidden{display:none!important}.ryujin-boss{position:absolute;top:max(18px,env(safe-area-inset-top));left:50%;transform:translateX(-50%);width:min(640px,calc(100vw - 36px));padding:10px 14px 12px;border-radius:18px;background:rgba(7,18,28,.76);box-shadow:0 12px 38px rgba(0,0,0,.25);backdrop-filter:blur(10px)}.ryujin-boss-head{display:flex;justify-content:space-between;align-items:end;gap:16px;margin-bottom:7px}.ryujin-boss-head b{font-size:18px}.ryujin-boss-head span{font-size:12px;opacity:.85}.ryujin-hp-track{height:12px;border-radius:99px;background:rgba(255,255,255,.15);overflow:hidden;border:1px solid rgba(255,255,255,.16)}.ryujin-hp-track i{display:block;height:100%;width:100%;background:linear-gradient(90deg,#6fd19d,#d6d957,#f38a61);transition:width .35s ease}
.ryujin-message{position:absolute;z-index:4;left:50%;bottom:174px;transform:translateX(-50%);width:min(760px,calc(100vw - 34px));min-height:48px;padding:12px 18px;border-radius:17px;background:rgba(6,19,26,.82);box-shadow:0 12px 34px rgba(0,0,0,.26);backdrop-filter:blur(10px);display:flex;align-items:center;justify-content:center;text-align:center;font-weight:800;line-height:1.45}.ryujin-message.is-emph{color:#ffe16d;text-shadow:0 1px 10px rgba(255,201,62,.28)}
.ryujin-decision{position:absolute;z-index:3;inset:0;display:flex;align-items:center;justify-content:center;pointer-events:none}.ryujin-decision-card{pointer-events:auto;width:min(430px,calc(100vw - 38px));padding:24px;border-radius:24px;background:linear-gradient(180deg,rgba(10,34,43,.96),rgba(7,21,29,.96));box-shadow:0 30px 70px rgba(0,0,0,.4);border:1px solid rgba(160,236,255,.28);text-align:center}.ryujin-decision-card small{display:block;letter-spacing:.17em;color:#91e5ff;font-weight:900}.ryujin-decision-card h2{margin:8px 0 16px;font-size:clamp(22px,5vw,34px)}.ryujin-decision-actions{display:grid;grid-template-columns:1fr 1fr;gap:12px}.ryujin-decision-actions button,.ryujin-command-grid button,.ryujin-submenu button{min-height:50px;border:0;border-radius:14px;color:#fff;font-weight:900;font-size:15px;cursor:pointer;background:linear-gradient(180deg,#1a6170,#104651);box-shadow:0 7px 18px rgba(0,0,0,.2);touch-action:manipulation}
/* Keep the encounter line readable instead of letting the centered decision card cover it. */
.ryujin-battle.is-decision .ryujin-message{top:calc(50% + 175px);bottom:auto}
.ryujin-decision-actions button:first-child{background:linear-gradient(180deg,#2a8774,#176354)}.ryujin-decision-actions button:disabled,.ryujin-command-grid button:disabled,.ryujin-submenu button:disabled{opacity:.48;cursor:default}
.ryujin-battle-hud{position:absolute;left:0;right:0;bottom:max(16px,env(safe-area-inset-bottom));display:flex;justify-content:center;align-items:end;gap:14px;padding:0 16px;pointer-events:none}.ryujin-player-status{pointer-events:none;width:min(240px,35vw);padding:12px 14px;border-radius:18px;background:rgba(8,23,30,.85);box-shadow:0 10px 30px rgba(0,0,0,.25);backdrop-filter:blur(10px)}.ryujin-player-status b{display:block;margin-bottom:8px}.ryujin-stat-row{display:flex;justify-content:space-between;font-size:13px;margin:3px 0}.ryujin-stat-row strong{font-variant-numeric:tabular-nums}.ryujin-command-panel{pointer-events:auto;width:min(560px,60vw);padding:10px;border-radius:20px;background:rgba(8,23,30,.85);box-shadow:0 10px 30px rgba(0,0,0,.25);backdrop-filter:blur(10px)}.ryujin-command-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}.ryujin-submenu{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.ryujin-submenu.attack{grid-template-columns:1fr 1fr .72fr}.ryujin-submenu button.back{background:rgba(255,255,255,.13)}

/* HP danger feedback: only the HP value flashes when Taro is below 50 HP. */
#ryujinTaroHp.is-danger{display:inline-block;color:#ff5b5b;text-shadow:0 0 10px rgba(255,55,55,.45);animation:ryujinHpDanger .72s ease-in-out infinite alternate}
@keyframes ryujinHpDanger{from{opacity:1;transform:scale(1)}to{opacity:.42;transform:scale(1.06)}}

.ryujin-float-text{position:fixed;z-index:95;transform:translate(-50%,-50%);font:900 clamp(20px,3vw,38px)/1 system-ui,sans-serif;text-shadow:0 3px 14px rgba(0,0,0,.75);pointer-events:none;animation:ryujinFloat 1.1s ease-out forwards}@keyframes ryujinFloat{0%{opacity:0;transform:translate(-50%,-20%) scale(.7)}18%{opacity:1;transform:translate(-50%,-50%) scale(1.12)}100%{opacity:0;transform:translate(-50%,-150%) scale(.94)}}.ryujin-hit-flash{position:absolute;inset:0;opacity:0;transition:opacity .12s ease;pointer-events:none}.ryujin-hit-flash.show{opacity:1}.ryujin-suppressed{visibility:hidden!important}
@media(max-width:720px){.ryujin-boss{top:10px}.ryujin-message{bottom:205px;font-size:13px;min-height:42px;padding:9px 12px}.ryujin-battle-hud{display:grid;grid-template-columns:1fr;gap:8px;bottom:8px}.ryujin-player-status{width:auto;padding:8px 12px;display:grid;grid-template-columns:auto 1fr 1fr;gap:8px;align-items:center}.ryujin-player-status b{margin:0}.ryujin-stat-row{margin:0;gap:6px}.ryujin-command-panel{width:auto}.ryujin-command-grid{grid-template-columns:repeat(4,1fr)}.ryujin-command-grid button,.ryujin-submenu button{min-height:46px;font-size:12px;padding:4px}.ryujin-submenu{grid-template-columns:repeat(3,1fr)}.ryujin-watch{bottom:92px}.ryujin-decision-card{padding:20px}}
@media(max-height:620px){.ryujin-battle.is-decision .ryujin-message{top:auto;bottom:18px}}
@media(max-height:520px) and (orientation:landscape){.ryujin-boss{width:min(520px,60vw);top:8px;padding:7px 10px}.ryujin-boss-head b{font-size:14px}.ryujin-message{left:16px;bottom:14px;transform:none;width:min(460px,48vw);min-height:42px}.ryujin-battle-hud{left:auto;right:10px;width:min(590px,50vw);padding:0;bottom:10px}.ryujin-player-status{display:none}.ryujin-command-panel{width:100%}}

/* v0.5.2 victory/title presentation. Hidden unless Ryujin is defeated. */
.ryujin-title-unlock{position:absolute;z-index:8;left:50%;top:50%;transform:translate(-50%,-42%) scale(.88);width:min(520px,calc(100vw - 38px));padding:20px 24px 22px;border-radius:22px;background:linear-gradient(180deg,rgba(28,34,36,.96),rgba(10,24,30,.97));border:1px solid rgba(255,225,112,.52);box-shadow:0 26px 70px rgba(0,0,0,.42),0 0 34px rgba(255,211,77,.18);text-align:center;pointer-events:none;opacity:0;visibility:hidden;transition:opacity .28s ease,transform .36s cubic-bezier(.2,.9,.25,1.25),visibility 0s linear .36s}.ryujin-title-unlock.show{opacity:1;visibility:visible;transform:translate(-50%,-50%) scale(1);transition-delay:0s}.ryujin-title-unlock small{display:block;font-size:11px;letter-spacing:.22em;font-weight:900;color:#ffe786;margin-bottom:7px}.ryujin-title-unlock b{display:block;font-size:clamp(21px,4vw,34px);line-height:1.32;color:#fff4b5;text-shadow:0 2px 16px rgba(255,207,72,.28)}.ryujin-title-unlock span{display:block;margin-top:8px;font-size:13px;font-weight:800;color:#dff7ff}
@media(max-width:720px){.ryujin-title-unlock{padding:17px 16px 19px;top:46%}.ryujin-title-unlock b{font-size:clamp(19px,6vw,28px)}}
