/* Phase 8.9: TOP, integrated map and progression presentation. */
.home89{max-width:1000px;margin:auto}.home89-start{text-align:center;padding:14px 18px 18px;background:linear-gradient(130deg,#e4f7ff,#fffae4);border:2px solid #b1ddef;border-radius:24px;margin-bottom:18px}.home89-start h1{margin:0}.home89 .home88-title-logo{height:90px;width:auto;max-width:100%;margin:auto}.home89-subtitle{font-size:16px;color:#315b71;margin:6px 0 14px}
.home89-start-buttons{display:grid;grid-template-columns:1.5fr 1fr 1fr;gap:12px}.home89-start-buttons .btn{font-size:20px;min-width:0;min-height:76px;padding:12px 10px;line-height:1.45}.home89-start-buttons small{display:block;font-size:14px;margin-top:3px}.home89-start-buttons .home89-begin{background:#ffdc55;border-color:#e5b128;color:#473409;box-shadow:0 4px 0 #dfa822}.home89-master{background:#fff0c5;border-color:#e0c064;color:#56431b}.home89-map-button{background:#e2f6ed;border-color:#86c8aa;color:#245745}
.home89-tools{display:grid;grid-template-columns:1.4fr 1fr 1fr;gap:10px;margin:20px 0}.home89-tools .btn{font-size:17px;padding:10px;min-width:0}.home89 .home86-learning h2{font-size:23px}.settings89{max-width:760px;margin:auto}.settings89>label{display:block;font-size:20px;font-weight:700;margin:20px 0 8px}
.map89-section{scroll-margin-top:16px;padding:20px;background:#fff;border:2px solid #afd7e6;border-radius:24px;box-shadow:0 4px 0 #cfe8ed}.map89-section>h2{text-align:center;color:#215979;font-size:25px;margin:0 0 6px}.map89-hint{text-align:center;font-size:16px;margin:0 0 14px;color:#3b6268}.map89-board{position:relative;width:min(100%,620px);aspect-ratio:620/560;margin:auto;background:#ecf6ee;border-radius:22px;isolation:isolate}.map89-board>img{width:100%;height:100%;display:block;object-fit:contain}.map89-hit{position:absolute;inset:0;width:100%;height:100%;z-index:1}.map89-hit path{fill:transparent;cursor:pointer;pointer-events:all}.map89-hit path:hover{fill:#ffdb4d44}
.map89-region{display:flex;flex-direction:column;align-items:center;justify-content:center;position:absolute;transform:translate(-50%,-50%);min-width:145px;min-height:80px;padding:8px 10px;border:2px solid #5c9e92;border-radius:14px;background:#fffef3;color:#234b4b;box-shadow:0 4px 0 #3d74622e;font:inherit;line-height:1.4;z-index:2;cursor:pointer}.map89-region strong{font-size:21px}.map89-region small{font-size:14px;margin:3px 0}.map89-master-marks{font-size:12px;color:#496756}.map89-region:hover{background:#fff2b0}.map89-region.is-complete{background:#fff2b0;border-color:#b79228}.map89-region:focus-visible{outline:4px solid #ff9f27;outline-offset:3px}.map89-section>.map-caption{text-align:center;margin:10px 0 14px}.map89-common{display:flex;align-items:center;justify-content:space-between;gap:20px;background:#f3effb;border:2px solid #d4c7ec;border-radius:16px;padding:12px 18px}.map89-common>span{font-size:16px;color:#5e507a}.map89-common .map89-region{position:static;transform:none;min-width:220px}.map89-section .map-source{margin:12px 0 0}
.training89-highlight{outline:5px solid #ffae22!important;outline-offset:4px;box-shadow:0 0 0 10px #ffde6a70!important;animation:map89-flash .7s ease-in-out 3}
@keyframes map89-flash{50%{outline-color:#fff171}}
@media(max-width:600px){.home89-start{padding:12px 10px 16px}.home89 .home88-title-logo{height:auto;max-height:92px;width:100%;max-width:360px}.home89-subtitle{font-size:14px}.home89-start-buttons{gap:7px;grid-template-columns:1.4fr 1fr 1fr}.home89-start-buttons .btn{font-size:16px;padding:8px 5px;min-height:72px;border-radius:12px}.home89-start-buttons small{font-size:12px}.map89-section{padding:16px 10px}.map89-section>h2{font-size:22px}.map89-hint{font-size:14px}.map89-region{min-width:104px;min-height:70px;padding:6px 5px;border-radius:11px}.map89-region strong{font-size:17px}.map89-region small{font-size:12px;margin:2px 0}.map89-master-marks{font-size:10px}.map89-common{flex-direction:column;gap:8px;padding:12px}.map89-common .map89-region{width:100%;min-width:0}.home89-tools{gap:7px}.home89-tools .btn{font-size:14px;padding:9px 6px}.training89-actions{align-items:stretch}.training89-actions>label,.training89-actions>.btn{width:100%}}
@media(prefers-reduced-motion:reduce){.training89-highlight{animation:none}}
.training89 .master-battle-dialogue{min-height:210px}.training89 .master-battle-text{min-height:6.4em}.training89 .master88-portrait img{animation:none!important}
.training89-progress{text-align:left}.training89-actions{display:flex;flex-wrap:wrap;align-items:end;gap:12px}.training89-actions label{min-width:220px;flex:1}.training89-actions select{margin-top:6px}.final89-checklist ul{list-style:none;padding:0;display:grid;gap:8px}.final89-checklist li{display:flex;justify-content:space-between;gap:12px;padding:9px 12px;background:#edf6f1;border-radius:10px;font-size:16px}.final89-checklist h2{font-size:23px}
.master89-select .master88-tier{margin:18px 0}.master89-select .master88-tier>div p{font-size:16px;line-height:1.6;margin:7px 0}.master89-select .master88-tier h2{font-size:25px}.master89-select .master88-tier .btn{white-space:normal;min-height:48px;font-size:18px}.master89-hub .master88-roster-card small{margin-top:5px}.final89-hub>h1{font-size:30px}.final89-hub .master-battle{max-width:850px;margin:18px auto}.final89-checklist{max-width:760px;margin:12px auto 22px}.region89-result{border-top:2px solid #d7e9e1;margin-top:24px;padding-top:16px;text-align:left}.progress89-list{display:grid;grid-template-columns:1fr 1fr;gap:16px}.progress89-list article{padding:18px;border:2px solid #cae1d9;border-radius:16px;background:#f8fcf5}.progress89-list article p{font-size:16px}
.region89-celebration{font-size:24px;font-weight:800;color:#6b5114;background:#fff2bc;border:2px solid #d6b855}
.unlock89-dialog{max-width:min(92vw,640px);width:600px;text-align:center;background:linear-gradient(#fffbe4,#f1faf2);border:4px solid #dab647;padding:24px;border-radius:22px;color:#3c4b35}.unlock89-dialog::backdrop{background:#0b2438c9}.unlock89-dialog h1{font-size:27px}.unlock89-dialog h2{font-size:30px;color:#856719;line-height:1.5}.unlock89-dialog .master88-portrait{height:230px;margin:auto}.unlock89-dialog .actions{justify-content:center}.unlock89-dialog .btn{font-size:17px}.unlock89-dialog[open]{animation:unlock89-appear .35s ease-out}
@keyframes unlock89-appear{from{opacity:.4;transform:scale(.97)}to{opacity:1;transform:scale(1)}}
/* The field continues behind the frame. Question and feedback keep the same frame position. */
.master-battle-frame{background:transparent}.master-battle[data-battle-state="correct"] img,.master-battle[data-battle-state="incorrect"] img{animation:none!important}
.quiz.master89-explanation .panel{display:block}.master89-explanation .feedback{margin:0 0 18px}
@media(max-width:600px){.progress89-list{grid-template-columns:1fr}.master89-select .master88-tier{grid-template-columns:95px minmax(0,1fr);padding:12px;gap:10px}.master89-select .master88-tier h2{font-size:22px}.master89-select .master88-tier>div p{font-size:14px}.master89-select .master88-tier .btn{font-size:16px}.final89-hub>h1{font-size:25px}.unlock89-dialog{padding:18px}.unlock89-dialog h1{font-size:22px}.unlock89-dialog h2{font-size:25px}.unlock89-dialog .master88-portrait{height:180px}.region89-celebration{font-size:20px}}
@media(prefers-reduced-motion:reduce){.unlock89-dialog[open]{animation:none}}
/* Keep neighboring labels separate on a 390px screen, while retaining 44px+ targets. */
@media(max-width:600px){.map89-region{min-height:68px;padding:4px 5px;line-height:1.25}.map89-region strong{line-height:1.25}.map89-region small{line-height:1.25}.map89-master-marks{line-height:1.25}}
