html,body{position:fixed;inset:0;overscroll-behavior:none;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;touch-action:none}
body *{-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;-webkit-tap-highlight-color:transparent}
input,textarea,[contenteditable=true],[contenteditable=true] *{user-select:text;-webkit-user-select:text;-webkit-touch-callout:default;touch-action:manipulation}
img{-webkit-user-drag:none}button{touch-action:manipulation}
.is-loading #app,.is-loading #modalBackdrop{visibility:hidden}
#bootScreen{position:fixed;inset:0;z-index:3000;display:grid;place-items:center;background:#080c0e}
.boot-spinner{width:44px;height:44px;border:7px solid #36555c;border-top-color:#9cc4cc;animation:portal-spin 1s steps(8) infinite}
.save-choice #bootScreen{display:none}
@keyframes portal-spin{to{transform:rotate(360deg)}}
.portal-shade{position:fixed;inset:0;z-index:2100;display:grid;place-items:center;padding:max(14px,env(safe-area-inset-top)) max(14px,env(safe-area-inset-right)) max(14px,env(safe-area-inset-bottom)) max(14px,env(safe-area-inset-left));background:#070e12b8;backdrop-filter:blur(3px);font-family:PixelAE,Plumbum,monospace}
.portal-card{padding:20px;max-width:min(580px,94vw);display:flex;flex-direction:column;gap:14px;text-align:center;font-size:22px;line-height:1.25;max-height:94dvh;overflow:auto;overscroll-behavior:contain;touch-action:pan-y;scrollbar-width:none}
.portal-card h1{font-size:clamp(28px,5vw,52px);line-height:1.1}.portal-card h2{font-size:26px}.portal-card p{font-size:20px}.portal-card .primary-btn,.portal-card .secondary-btn{font-size:22px;min-height:44px;padding:8px 16px}
.portal-menu .portal-card{width:420px;background:#626e72}.portal-button-art{width:96px;height:96px;object-fit:contain;align-self:center}.portal-save-note{font-size:16px!important}
.portal-orientation{z-index:2600;background:#101c21}.portal-phone{font-size:65px;color:#c6e0d5}.portal-conflict{z-index:3100}.portal-account{z-index:2800}
.portal-tutorial{position:absolute;inset:0;z-index:260;display:flex;align-items:flex-end;justify-content:center;padding:12px;background:#080c0e66;pointer-events:auto}
.portal-tutorial .portal-card{position:relative;width:min(610px,88%);gap:9px;padding:14px 18px;text-align:left}.portal-tutorial .portal-card h2{font-size:22px;padding-right:44px}.portal-tutorial .portal-card p{font-size:19px;line-height:1.25}.portal-actions{display:flex;gap:12px;justify-content:flex-end}.tutorial-count{position:absolute;right:14px;top:12px;font-size:16px;color:#c4d0cc}
.tutorial-action{background:none;pointer-events:none;align-items:flex-start;padding-top:12px}.tutorial-action .portal-card{pointer-events:auto;width:min(600px,70%);background:#5c6e74}.tutorial-action .portal-card h2{font-size:19px}.tutorial-action .portal-card p{font-size:17px}.tutorial-action .secondary-btn{font-size:16px;min-height:32px;padding:3px 12px}.tutorial-focus{filter:drop-shadow(0 0 5px #efe9b2)!important}
.tutorial-action .portal-card{position:absolute;bottom:8px;top:auto}.tutorial-action .portal-actions{position:static}.tutorial-action .portal-card p{padding-right:0;min-height:0}
.tutorial-pointed .portal-card{position:absolute;z-index:2}.tutorial-spotlight{background:none}.tutorial-target-ring{position:absolute;z-index:0;pointer-events:none;border:3px solid #fff0a6;box-shadow:0 0 0 2px #15191a;image-rendering:pixelated}.tutorial-spotlight .tutorial-target-ring{box-shadow:0 0 0 2px #15191a,0 0 0 200vmax #080c0e99}.tutorial-pointer{position:absolute;z-index:1;width:20px;height:22px;background:#fff0a6;clip-path:polygon(30% 0,70% 0,70% 45%,100% 45%,100% 60%,60% 100%,40% 100%,0 60%,0 45%,30% 45%);pointer-events:none;animation:tutorial-point .8s steps(2,end) infinite}.reduced-motion .tutorial-pointer{animation:none}@keyframes tutorial-point{50%{transform:translateY(3px)}}
#stage.tutorial-chest-step #collectAll{display:block}.tutorial-touch-controls #collectAll{min-height:44px;min-width:140px;padding:6px 12px;font-size:16px}.tutorial-touch-controls #collectAll kbd{display:none}
#stage.tutorial-skills-step [data-panel="skills"]{display:block!important}.tutorial-pointer[data-direction="up"]{rotate:180deg}
#stage.tutorial-upgrades-step [data-panel="upgrades"]{display:block!important}
.tutorial-target-action{position:absolute;z-index:1;padding:0;border:0;background:transparent;box-shadow:none;pointer-events:auto}.tutorial-target-action:focus-visible{outline:3px solid #fff0a6;outline-offset:4px}
/* A discovery dialog suspends the field; its consumed loot target is stale. */
#app[inert] #tutorial{visibility:hidden}
#app[inert] .tutorial-focus{filter:none!important}
.rebirth-reward-copy{display:block;min-width:0}.rebirth-reward-copy b,.rebirth-reward-copy small{display:block}.rebirth-reward-copy small{font-size:.85em;line-height:1.2;margin-top:4px;max-width:330px}
.tutorial-mascot{position:absolute;right:8px;top:-66px;width:84px;height:70px;pointer-events:none;image-rendering:pixelated;animation:portal-guide 2s ease-in-out infinite}.tutorial-action .tutorial-mascot{display:none}.reduced-motion .tutorial-mascot{animation:none}@keyframes portal-guide{50%{transform:translateY(-4px)}}
.portal-reward{display:flex;flex-direction:column;align-items:center;gap:5px;margin:8px auto;max-width:480px}.portal-reward button{display:flex;align-items:center;justify-content:center;gap:8px;min-height:44px;width:100%;font-size:20px;white-space:normal}.portal-reward p{font-size:15px;line-height:1.2;text-align:center}.portal-reward button:disabled{opacity:1;color:#ccd5d5;background:#46545e}
#modalBody,.ctb-book-scroll,.ctb-book-chest-list,.portal-card{overscroll-behavior:contain;touch-action:pan-y}
#modal[data-type="skills"]{height:92dvh;max-height:92dvh}#modal[data-type="skills"] #modalBody{display:flex;flex:1;flex-direction:column;overflow:hidden;min-height:0;gap:6px}#modal[data-type="skills"] .skill-balance{flex:none;margin:0}#sourceSkillTree{flex:1;min-height:80px!important;height:auto!important}#modal[data-type="skills"] .rebirth-action{flex:none;margin:0;padding:2px 0;gap:8px;flex-wrap:wrap}#modal[data-type="skills"] .rebirth-action>p{line-height:1.1}#modal[data-type="skills"] .portal-reward{flex:none;width:min(100%,480px)}
@media(orientation:landscape){#app{width:min(100vw,calc(100dvh * 16 / 9));height:auto;max-height:100dvh;aspect-ratio:16/9}#modal[data-type="settings"] .settings-grid{display:grid;grid-template-columns:1fr 1fr;gap:4px 16px}}
#rebirthCount{margin-left:auto;font-size:18px;white-space:nowrap}.rebirth-controls{display:flex;align-items:center;justify-content:center;gap:14px;width:100%;min-width:0}.rebirth-controls .primary-btn{flex:none}#rebirthRewardPreview{display:flex;align-items:center;gap:6px;min-width:0;margin:0;text-align:left;color:#e4d8ef;line-height:1.2}#rebirthRewardPreview i{width:24px;height:24px;flex:none}#modal[data-type="skills"] #rebirthProgress{flex:1 1 100%;max-width:850px;margin:auto}#modal[data-type="skills"] #skillFeedback{flex-basis:100%}
@media(max-height:500px) and (orientation:landscape){
 .portal-card{padding:12px;gap:9px}.portal-menu .portal-card{width:380px}.portal-button-art{width:58px;height:58px}.portal-menu h1{font-size:30px}.portal-card p{font-size:17px}.portal-menu .primary-btn,.portal-menu .secondary-btn{min-height:38px;font-size:20px}
 .portal-tutorial .portal-card{width:76%;max-height:70dvh;padding:9px 12px;gap:5px}.portal-tutorial .portal-card h2{font-size:18px}.portal-tutorial .portal-card p{font-size:16px}.portal-tutorial .primary-btn,.portal-tutorial .secondary-btn{font-size:16px;min-height:32px;padding:4px 12px}.tutorial-action .portal-card{width:62%}.tutorial-action .portal-actions{margin-top:-3px}.tutorial-count{font-size:13px;top:9px;right:9px}
 #modal[data-type="settings"] .setting-row{font-size:16px;padding:5px;gap:7px;min-height:34px}#modal[data-type="settings"] .setting-row small{font-size:12px;line-height:1.1}.setting-row input[type="range"]{width:74px;min-width:0}.setting-row output{font-size:13px;width:29px}#modal[data-type="settings"] .settings-help{font-size:14px;line-height:1.2}#modal[data-type="settings"] .settings-grid{gap:2px 8px}
 .portal-reward{margin:4px auto;max-width:390px}.portal-reward button{min-height:36px;font-size:17px;padding:5px}.portal-reward p{font-size:12px}
 #modal[data-type="skills"] .modal-header{padding:5px 10px}#modal[data-type="skills"] #modalBody{padding:6px 10px;gap:2px}#modal[data-type="skills"] .skill-balance{font-size:18px;min-height:24px}#modal[data-type="skills"] .rebirth-action{gap:4px;flex-wrap:nowrap}#modal[data-type="skills"] .rebirth-action>p{font-size:12px}#modal[data-type="skills"] .rebirth-action .primary-btn{font-size:15px;padding:4px 10px;min-height:30px}#modal[data-type="skills"] #skillMode{font-size:12px}#modal[data-type="skills"] .portal-reward{margin:2px auto;gap:2px}#modal[data-type="skills"] .portal-reward button{min-height:32px}#modal[data-type="skills"] .rebirth-confirm{position:absolute;inset:auto 8px 8px;z-index:25;background:#31424a;padding:10px;display:flex;flex-wrap:wrap;font-size:16px}
}
@media(prefers-reduced-motion:reduce){.boot-spinner{animation:none}}
@media(max-height:500px) and (orientation:landscape){
 #modal[data-type="skills"]{height:96dvh;max-height:96dvh}
 #modal[data-type="skills"] #modalBody{display:grid;grid-template-columns:minmax(0,1fr) clamp(210px,40vw,240px);grid-template-rows:24px minmax(0,1fr) auto;column-gap:8px;row-gap:4px}
 #modal[data-type="skills"] .skill-balance{grid-column:1/3;grid-row:1}
 #modal[data-type="skills"] #rebirthCount{font-size:12px}#modal[data-type="skills"] #rebirthProgress{flex:none}#modal[data-type="skills"] .rebirth-controls{gap:8px;flex:none}#modal[data-type="skills"] .rebirth-controls .primary-btn{font-size:14px;padding:4px 6px}#modal[data-type="skills"] #rebirthRewardPreview{flex:0 1 auto;font-size:12px;gap:3px}#modal[data-type="skills"] #rebirthRewardPreview i{width:18px;height:18px}
 #modal[data-type="skills"] #sourceSkillTree{grid-column:1;grid-row:2/4;width:100%;height:100%!important;min-height:0!important}
 #modal[data-type="skills"] .rebirth-action{grid-column:2;grid-row:2;display:flex;flex-direction:column;justify-content:center;align-items:stretch;gap:8px;text-align:center;min-height:0;overflow:auto;touch-action:pan-y;overscroll-behavior:contain;scrollbar-width:none}
 #modal[data-type="skills"] .portal-reward{grid-column:2;grid-row:3;max-width:100%;margin:0;width:100%;align-self:end}
 #modal[data-type="skills"] .portal-reward button{font-size:16px;line-height:1.15;min-height:50px;gap:4px;text-shadow:1px 1px #101318,-1px -1px #101318}
 #modal[data-type="skills"] .portal-reward button i{width:22px;height:22px}
 #modal[data-type="skills"] .portal-reward p{font-size:12px;line-height:1.1;text-shadow:1px 1px #101318}
}
