/* Separate image and label rows so the avatar never covers the character name. */
.portrait{display:grid;grid-template-rows:minmax(0,1fr) auto;gap:7px;padding:9px 8px 10px;align-items:stretch;justify-content:stretch}.avatar-art{position:relative;min-height:0;overflow:hidden}.avatar-art>img{position:absolute;height:100%;width:177.78%;max-width:none;object-fit:contain;left:50%;top:0;transform:translateX(-50%)}.portrait-caption{position:static;line-height:1.25;letter-spacing:1px}.portrait-caption span{font-size:20px;line-height:1.25}.portrait{min-height:120px}.tile img{user-select:none}.tile.frost:before{content:'❄';position:absolute;inset:0;z-index:3;border:3px solid #f2ffffaa;border-radius:inherit;box-shadow:inset 0 0 15px #aff2ff;color:white;background:#b4eaff38;text-shadow:0 1px 3px #558bbb;font-size:22px;display:grid;place-items:center;pointer-events:none}.goals{flex-wrap:wrap}.goal small{font-size:11px;color:#7597af}.goal-icon{font-size:30px}.board-status{max-width:45%;text-align:right}.brand small{letter-spacing:2px}.journey .goals{gap:7px}.journey .goal{min-width:58px}.stage-extra{font-size:12px;color:#7593a8}
[data-screen='intro'] .game-layout,[data-screen='map'] .game-layout,[data-screen='intro'] #back-map,[data-screen='map'] #back-map,[data-screen='game'] #map-screen,[data-screen='intro'] #map-screen,[data-screen='map'] #splash,[data-screen='game'] #splash{display:none!important}
#back-map{margin-left:auto}.edition{margin-left:auto}#back-map+.edition{margin-left:0}
#splash{position:fixed;inset:0;z-index:20;display:flex;align-items:center;justify-content:center;flex-direction:column;background:radial-gradient(ellipse,#f7fdff,#d4eafa);overflow:hidden}#splash img{width:min(65vw,640px);max-height:70vh;object-fit:contain;border-radius:36px;box-shadow:0 18px 60px #6596b735}#splash p{color:#6a94ae;letter-spacing:4px;margin-top:22px;font-size:15px}#skip-intro{position:absolute;right:30px;top:25px;padding:10px 20px}#splash.playing img{animation:title-arrive 2.8s both}#splash.playing p{animation:splash-caption 2.8s both}@keyframes title-arrive{0%{opacity:0;transform:translateY(35px) scale(.65) rotate(-5deg)}28%{opacity:1;transform:translateY(0) scale(1.04) rotate(2deg)}43%,82%{opacity:1;transform:scale(1) rotate(0)}100%{opacity:0;transform:scale(1.08)}}@keyframes splash-caption{0%,22%{opacity:0}40%,85%{opacity:1}100%{opacity:0}}
#map-screen{max-width:1220px;width:calc(100% - 70px);margin:20px auto;min-height:calc(100dvh - 150px);display:flex;flex-direction:column;justify-content:center;gap:20px}.map-heading{display:flex;align-items:end;justify-content:space-between}.map-heading h1{font:800 30px 'Microsoft YaHei',sans-serif;color:#537f9e;margin:0 0 6px;letter-spacing:2px}.map-heading p{font-size:14px;color:#7a9db7}#progress-label{color:#779db7;font-size:14px}.chapter-tabs{display:flex;gap:12px}.chapter-tab{flex:1;border:2px solid white;border-radius:15px;padding:12px 6px;background:#ffffff70;color:#7195ae;font-size:14px}.chapter-tab.active{background:#a8d6ef;color:#3e6e8e;box-shadow:0 3px #8db6d0}.level-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:15px}.level-card{display:flex;flex-direction:column;align-items:center;gap:8px;border:2px solid white;border-radius:24px;padding:18px 8px;background:linear-gradient(140deg,#ffffffd9,#cde7f488);color:#587e9c;box-shadow:0 5px #b4d1e36e;font-size:14px;transition:transform .2s}.level-card:hover{transform:translateY(-3px)}.level-card.selected{outline:3px solid #83b5d6;outline-offset:2px}.level-card.locked{background:#e5eff57d;color:#96acbc;box-shadow:0 4px #c6d9e36e}.level-number{font-size:31px;font-weight:800}.level-card small{font-size:12px;min-height:17px;color:#87a7bb}.stage-info{display:flex;gap:20px;align-items:center;justify-content:space-between;background:#ffffff9c;border:2px solid white;border-radius:22px;padding:17px 22px}.stage-info h2{font-size:20px;color:#587f9b;margin:0 0 7px}.stage-info p{font-size:14px;color:#7899ae;line-height:1.7}.stage-info small{font-size:12px;color:#8aa4b7}#enter-stage{width:180px;flex-shrink:0;margin:0}#enter-stage:disabled{background:#c8dce9;box-shadow:0 4px #b2c9d8;color:#809cad;cursor:default}#save-note{text-align:center;color:#829fb2;font-size:12px}#result-map{margin-top:10px}.goal-image img{pointer-events:none}
@media(min-width:1000px) and (max-height:720px){#map-screen{gap:13px;margin:12px auto;min-height:0}.level-card{padding:11px 8px;gap:5px}.stage-info{padding:12px 18px}.map-heading h1{font-size:25px}.chapter-tab{padding:9px 6px}.portrait-caption span{font-size:17px}.portrait{min-height:110px}}
@media(max-width:999px){.edition{display:none}.level-grid{gap:10px}.level-card{padding:13px 5px}.stage-info{padding:13px}.chapter-tab{font-size:12px}.portrait-caption span{font-size:18px}}
@media(max-width:620px){#map-screen{width:calc(100% - 28px);margin:20px auto;gap:15px}.map-heading h1{font-size:25px}.chapter-tabs{display:grid;grid-template-columns:1fr 1fr;gap:8px}.level-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.stage-info{flex-direction:column;align-items:stretch}#enter-stage{width:100%}.map-heading{align-items:center}.map-heading p{font-size:12px}#progress-label{font-size:12px}.portrait{min-height:125px}.portrait-caption span{font-size:14px}#splash img{width:90vw}.brand{font-size:20px}.brand small{font-size:8px}#back-map{font-size:11px;margin-left:auto}.sound-toggle{margin-left:0}}
@media(prefers-reduced-motion:reduce){#splash.playing img,#splash.playing p{animation:none}}
.avatar-art{width:100%;align-self:stretch;justify-self:stretch}.portrait-caption{width:100%;text-align:center}

.companion-top[hidden]{display:none!important}.character-lobby{min-width:0;background:#ffffff70;border-radius:18px;padding:10px 15px}.lobby-heading{display:flex;justify-content:space-between;color:#547e9b;font-size:14px}.lobby-heading span{font-size:12px}.character-strip{display:flex;gap:12px;overflow-x:auto;padding:8px 3px;scrollbar-width:thin;touch-action:pan-x;user-select:none}.character-card{flex:0 0 98px;border:2px solid transparent;border-radius:16px;background:#effaff90;color:#527b98;padding:4px;font-size:13px}.character-card span{display:block;height:62px;overflow:hidden;position:relative}.character-card img{position:absolute;left:50%;transform:translateX(-50%);height:100%;width:177.78%;object-fit:contain;pointer-events:none}.character-card.active{border-color:#589bc4;background:#d4edff}.character-card b{display:block}.character-lobby p{font-size:13px;color:#60839d;margin-top:4px}#stage-explain{font-size:12px;line-height:1.65;margin-top:6px}#map-screen{gap:12px;margin:12px auto;min-height:0}.level-card{padding:10px 5px;gap:4px}.stage-info{padding:12px 16px}.stage-info h2{font-size:18px}.level-number{font-size:25px}.map-heading h1{font-size:25px}.chapter-tab{padding:8px}#level-rules{padding:3px 8px;margin-top:5px;font-size:12px}@media(max-height:760px) and (min-width:1000px){.character-card span{height:44px}.level-card{padding:6px}.map-heading p{display:none}.character-lobby{padding:7px 12px}.stage-info{padding:8px 12px}}
@media(min-width:1000px){body[data-screen='map'] .topbar{padding-top:10px;padding-bottom:10px}body[data-screen='map'] #map-screen{gap:9px;margin-top:8px;margin-bottom:8px}body[data-screen='map'] .level-card{padding:6px 5px}body[data-screen='map'] .character-card span{height:48px}body[data-screen='map'] footer{padding-top:4px;padding-bottom:4px}body[data-screen='map'] .map-heading p{display:none}}

#star-labels{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));font-size:13px;line-height:1.5;gap:4px;margin-top:8px}#star-labels b{display:block;font-size:11px;font-weight:500;white-space:nowrap}
