/*
 * Moonvale Impeccable experiment — The Living Route Atlas.
 * Presentation-only override for impeccable-mobile.html. Runtime, state,
 * save, offline and gameplay semantics remain the production mobile bundle.
 */

body.mv-impeccable {
    --atlas-flax: #f3e6c9;
    --atlas-paper: #fbf4df;
    --atlas-ink: #243c43;
    --atlas-ink-soft: #5d6e68;
    --atlas-route: #bd5f43;
    --atlas-route-dark: #874332;
    --atlas-herb: #61856e;
    --atlas-water: #5d8996;
    --atlas-moon: #9fa8d2;
    --atlas-line: rgba(45, 66, 62, .28);
    --atlas-shadow: rgba(27, 47, 49, .2);
    --atlas-cut: polygon(0 8px, 9px 8px, 9px 0, calc(100% - 12px) 0, 100% 12px, 100% 100%, 0 100%);
    --atlas-cut-small: polygon(0 6px, 7px 6px, 7px 0, calc(100% - 8px) 0, 100% 8px, 100% 100%, 0 100%);
    --paper: var(--atlas-flax);
    --paper-card: var(--atlas-paper);
    --ink: var(--atlas-ink);
    --ink-soft: var(--atlas-ink-soft);
    --line: var(--atlas-line);
    --moon: var(--atlas-water);
    --moon-deep: #3f6d78;
    background: #cbd3bd;
    color: var(--atlas-ink);
    font-family: "Noto Sans TC", "PingFang TC", "Microsoft JhengHei", sans-serif;
}

[data-theme="night"] body.mv-impeccable {
    --atlas-flax: #102d36;
    --atlas-paper: #173f46;
    --atlas-ink: #f4e8c8;
    --atlas-ink-soft: #c4d5cc;
    --atlas-route: #df7b5b;
    --atlas-route-dark: #f0a77c;
    --atlas-herb: #6fa47f;
    --atlas-water: #8fb4c2;
    --atlas-moon-gold: #e0b45f;
    --atlas-line: rgba(196, 213, 204, .28);
    --atlas-shadow: rgba(4, 14, 22, .48);
    background: #0b222b;
}

.mv-impeccable *,
.mv-impeccable *::before,
.mv-impeccable *::after {
    box-sizing: border-box;
}

.mv-impeccable button,
.mv-impeccable input {
    font: inherit;
}

.mv-impeccable button:focus-visible,
.mv-impeccable input:focus-visible,
.mv-impeccable [tabindex]:focus-visible {
    outline: 3px solid #f0a56f;
    outline-offset: 2px;
}

.mv-impeccable .mv-cozy-panel,
.mv-impeccable .mv-cozy-button,
.mv-impeccable .mv-cozy-slot,
.mv-impeccable .mv-cozy-control {
    border-image: none;
    background-image: none;
    border-radius: 0;
    filter: none;
    text-shadow: none;
}

/* Loading is a quiet route-pass cover, not a modal floating in fantasy fog. */
.mv-impeccable #mv-splash::before {
    filter: blur(2px) saturate(.72) brightness(.58);
}

.mv-impeccable .mv-splash-panel.mv-cozy-panel {
    width: min(306px, calc(100vw - 42px));
    min-height: 340px;
    justify-content: flex-end;
    align-items: flex-start;
    padding: 112px 26px 28px;
    border: 1px solid rgba(86, 72, 48, .46);
    background:
        linear-gradient(90deg, transparent 0 14px, rgba(189,95,67,.72) 14px 17px, transparent 17px),
        var(--atlas-paper);
    clip-path: var(--atlas-cut);
    color: var(--atlas-ink);
    box-shadow: 0 18px 48px rgba(13, 25, 28, .35);
}

.mv-impeccable .mv-splash-mark.mv-cozy-slot {
    position: absolute;
    top: 28px;
    left: 26px;
    width: 62px;
    height: 62px;
    border: 1px solid var(--atlas-route);
    background: transparent;
    transform: rotate(-4deg);
}

.mv-impeccable .mv-splash-panel h1 {
    margin: 4px 0 8px;
    color: var(--atlas-ink) !important;
    font-family: "Noto Serif TC", "PMingLiU", serif;
    font-size: 30px;
    letter-spacing: .08em;
    text-shadow: none !important;
}

.mv-impeccable-kicker {
    margin: 0;
    color: var(--atlas-route);
    font-size: 11px;
    font-weight: 900;
    letter-spacing: .22em;
}

.mv-impeccable #mv-splash-progress,
.mv-impeccable #mv-splash-version {
    color: var(--atlas-ink-soft) !important;
    text-shadow: none !important;
}

/* App frame: a full-bleed place with two thin, legible route edges. */
.mv-impeccable #app {
    background: var(--atlas-flax);
}

.mv-impeccable .mv-status.mv-cozy-panel {
    position: relative;
    z-index: 20;
    min-height: 64px;
    gap: 3px;
    padding: calc(5px + var(--mv-safe-top)) 10px 5px;
    border: 0;
    border-bottom: 1px solid var(--atlas-line);
    background:
        linear-gradient(90deg, var(--atlas-route) 0 4px, transparent 4px),
        color-mix(in srgb, var(--atlas-flax) 95%, transparent);
    color: var(--atlas-ink-soft);
    box-shadow: 0 3px 14px var(--atlas-shadow);
    backdrop-filter: none;
}

.mv-impeccable .mv-status .mv-status-top {
    min-height: 18px;
    gap: 7px;
    padding-left: 5px;
    color: var(--atlas-ink-soft);
    font-size: 11px;
    letter-spacing: .02em;
}

.mv-impeccable .mv-status .mv-status-money {
    color: var(--atlas-route-dark);
}

.mv-impeccable .mv-status .mv-vitals {
    gap: 6px;
    padding-left: 5px;
}

.mv-impeccable .mv-status .mv-vital.mv-cozy-control {
    min-height: 27px;
    gap: 4px;
    padding: 2px 5px;
    border: 0;
    border-left: 1px solid var(--atlas-line);
    background: transparent;
    color: var(--atlas-ink);
    box-shadow: none;
}

.mv-impeccable .mv-status .mv-vital:first-child {
    border-left: 0;
}

.mv-impeccable .mv-status .mv-vital .mv-bar {
    height: 5px;
    border-radius: 0;
    background: color-mix(in srgb, var(--atlas-ink) 15%, transparent);
    box-shadow: none;
}

.mv-impeccable .mv-status .mv-vital .mv-bar-fill {
    border-radius: 0;
    box-shadow: none;
}

.mv-impeccable .mv-status .mv-vital .mv-bar-fill::after {
    display: none;
}

.mv-impeccable .mv-status .mv-vital-num {
    color: var(--atlas-ink-soft);
    font-size: 10px;
}

/* Living village atlas: map remains fully playable; chrome becomes print. */
.mv-impeccable .mv-village-map {
    background: url("/resources/maps/styles/village-route-atlas-v1.png") center / cover no-repeat;
}

.mv-impeccable .mv-village-map-img {
    opacity: 0;
}

/* Wave49: the same Village atlas grows from recovered fields to a completed
   bridge and finally a shared bridge-mill round. These are raster states of
   canonical owner truth, not a construction UI or a new progression system. */
.mv-impeccable .mv-village-map[data-location="Village"][data-art-state^="village-"] {
    background: none;
}

.mv-impeccable .mv-village-map[data-location="Village"][data-art-state^="village-"] .mv-village-map-img {
    opacity: 1;
    transition: filter 320ms cubic-bezier(.22, 1, .36, 1);
}

.mv-impeccable .mv-village-map[data-location="Village"][data-art-state="village-quiet"] .mv-village-map-img {
    filter: saturate(.78) brightness(.92);
}

.mv-impeccable .mv-village-map[data-location="Village"][data-art-state="village-early"] .mv-village-map-img {
    filter: saturate(.94) brightness(.99);
}

.mv-impeccable .mv-village-map[data-location="Village"][data-art-state="village-mid"] .mv-village-map-img {
    filter: saturate(1.01) brightness(1.01);
}

.mv-impeccable .mv-village-map[data-location="Village"][data-art-state="village-mature"] .mv-village-map-img {
    filter: saturate(1.07) brightness(1.025);
}

@media (prefers-reduced-motion: reduce) {
    .mv-impeccable .mv-village-map[data-location="Village"][data-art-state^="village-"] .mv-village-map-img {
        transition: none;
    }
}

/* Wave 18：東磨坊的 landmark 與節點已逐一校準，才放行 location-specific art。
   其他 MAP_ART 仍沿用村莊 atlas，等各自完成座標 QA 後再逐地點開啟。 */
.mv-impeccable .mv-village-map[data-location="Eastern mill"] {
    background: none;
}

.mv-impeccable .mv-village-map[data-location="Eastern mill"] .mv-village-map-img {
    opacity: 1;
}

/* Wave 33：舊路約維護站改用 canonical 封閉第二門／名冊／返程圖，仍只放行此地點。 */
.mv-impeccable .mv-village-map[data-location="Mysterious depths"] {
    background: none;
}

.mv-impeccable .mv-village-map[data-location="Mysterious depths"] .mv-village-map-img {
    opacity: 1;
}

/* Wave 20：城門、南側棚屋與牆腳植被已校準，香草教學與永久採集共用同一 landmark。 */
.mv-impeccable .mv-village-map[data-location="Town outskirts"] {
    background: none;
}

.mv-impeccable .mv-village-map[data-location="Town outskirts"] .mv-village-map-img {
    opacity: 1;
}

/* Wave 23：借住小屋的床、木箱、窗邊掛架與回村小徑已校準，僅放行此專屬圖。 */
.mv-impeccable .mv-village-map[data-location="Shack"] {
    background: none;
}

.mv-impeccable .mv-village-map[data-location="Shack"] .mv-village-map-img {
    opacity: 1;
}

/* Wave 24：瀑布、右岸淺水石台、石蟹岩棚與兩條回程路已按專圖校準。 */
.mv-impeccable .mv-village-map[data-location="Waterfall basin"] {
    background: none;
}

.mv-impeccable .mv-village-map[data-location="Waterfall basin"] .mv-village-map-img {
    opacity: 1;
}

/* Wave 25：沼澤入口硬泥脊、深水蘆澤與兩條旅行路已按專圖校準。 */
.mv-impeccable .mv-village-map[data-location="Swampland fields"] {
    background: none;
}

.mv-impeccable .mv-village-map[data-location="Swampland fields"] .mv-village-map-img {
    opacity: 1;
}

/* Wave 26：蛇牙長屋、火圈、兩座工棚、入口棧橋與外圍蘆澤已按聚落專圖校準。 */
.mv-impeccable .mv-village-map[data-location="Swampland tribe"] {
    background: none;
}

.mv-impeccable .mv-village-map[data-location="Swampland tribe"] .mv-village-map-img {
    opacity: 1;
}

/* Wave 27：第 5 次河岸清場後便道才可通行；只在該 derived presentation state
   放行稀疏蟹群、草坡與上下游彎道皆已校準的 Riverbank 專圖。 */
.mv-impeccable .mv-village-map[data-location="Riverbank"][data-art-state="shore-open"] {
    background: none;
}

.mv-impeccable .mv-village-map[data-location="Riverbank"][data-art-state="shore-open"] .mv-village-map-img {
    opacity: 1;
}

/* Wave 28：僅在既有 create-camp action 已完成時，放行防雨帳、營火、
   背風草坡、崖邊踏點與返程木橋都已校準的風口營地專圖。 */
.mv-impeccable .mv-village-map[data-location="Mountain camp"][data-art-state="camp-built"] {
    background: none;
}

.mv-impeccable .mv-village-map[data-location="Mountain camp"][data-art-state="camp-built"] .mv-village-map-img {
    opacity: 1;
}

/* Wave 29：溪橋村、車轍長路、林間支路與遠處城門皆按永久 Forest road 專圖校準。 */
.mv-impeccable .mv-village-map[data-location="Forest road"] {
    background: none;
}

.mv-impeccable .mv-village-map[data-location="Forest road"] .mv-village-map-img {
    opacity: 1;
}

/* Wave48：Forest Road 以現有 owner 狀態長出路痕、探索格與局部霧。
   這層完全不接事件，真正互動仍由上方七個 map-node 按鈕負責。 */
.mv-impeccable .mv-village-map[data-location="Forest road"] .mv-journey-layer {
    --journey-open: #d79b57;
    --journey-open-dark: #74492f;
    --journey-frontier: #d8c69d;
    --journey-unknown: #64716a;
    isolation: isolate;
}

.mv-impeccable .mv-journey-routes {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    overflow: visible;
}

.mv-impeccable .mv-journey-route {
    fill: none;
    stroke-linecap: round;
    stroke-linejoin: round;
    vector-effect: non-scaling-stroke;
}

.mv-impeccable .mv-journey-route-open {
    stroke: var(--journey-open);
    stroke-width: 4.5;
    stroke-dasharray: 2 7;
    filter: drop-shadow(0 2px 1px rgba(57, 42, 31, .54));
}

.mv-impeccable .mv-journey-route-frontier {
    stroke: var(--journey-frontier);
    stroke-width: 3.5;
    stroke-dasharray: 1 8;
    opacity: .74;
}

.mv-impeccable .mv-journey-route-unknown {
    stroke: var(--journey-unknown);
    stroke-width: 3;
    stroke-dasharray: 1 10;
    opacity: .32;
}

.mv-impeccable .mv-journey-space,
.mv-impeccable .mv-journey-fog,
.mv-impeccable .mv-journey-traveler {
    position: absolute;
    left: var(--journey-x);
    top: var(--journey-y);
    transform: translate(-50%, -50%);
}

.mv-impeccable .mv-journey-space {
    z-index: 3;
    width: 20px;
    height: 20px;
    border: 3px solid rgba(255, 246, 215, .92);
    border-radius: 50%;
    background: var(--journey-open);
    box-shadow: 0 3px 7px rgba(50, 38, 29, .42), inset 0 1px rgba(255,255,255,.62);
}

.mv-impeccable .mv-journey-space[data-state="frontier"] {
    border-style: dashed;
    background: var(--journey-frontier);
    opacity: .86;
}

.mv-impeccable .mv-journey-space[data-state="unknown"] {
    width: 15px;
    height: 15px;
    border-width: 2px;
    border-color: rgba(235, 231, 209, .62);
    background: var(--journey-unknown);
    opacity: .54;
}

.mv-impeccable .mv-journey-fog {
    z-index: 1;
    width: var(--journey-fog-w);
    height: var(--journey-fog-h);
    border-radius: 46% 58% 42% 61%;
    background:
        radial-gradient(ellipse at 46% 52%, rgba(45, 60, 57, .82) 0 21%, rgba(66, 79, 73, .66) 46%, rgba(85, 93, 83, 0) 76%);
    filter: blur(7px) saturate(.72);
    mix-blend-mode: multiply;
    animation: mv-journey-fog-breathe 7s ease-in-out infinite alternate;
}

.mv-impeccable .mv-journey-fog[data-state="frontier"] {
    opacity: .58;
    filter: blur(6px) saturate(.8);
}

.mv-impeccable .mv-journey-fog[data-state="unknown"] {
    opacity: .9;
}

.mv-impeccable .mv-journey-traveler {
    z-index: 4;
    display: grid;
    justify-items: center;
    gap: 1px;
    min-width: 58px;
    animation: mv-journey-presence 2.8s cubic-bezier(.16, 1, .3, 1) infinite;
}

.mv-impeccable .mv-journey-footprints {
    position: relative;
    width: 27px;
    height: 29px;
    filter: drop-shadow(0 2px 1px rgba(44, 31, 24, .5));
    transform: rotate(19deg);
}

.mv-impeccable .mv-journey-footprints::before,
.mv-impeccable .mv-journey-footprints::after {
    content: "";
    position: absolute;
    width: 9px;
    height: 15px;
    border: 2px solid #fff3cf;
    border-radius: 60% 52% 58% 45%;
    background: var(--journey-open-dark);
}

.mv-impeccable .mv-journey-footprints::before {
    left: 3px;
    top: 1px;
    transform: rotate(-14deg);
}

.mv-impeccable .mv-journey-footprints::after {
    right: 2px;
    bottom: 0;
    transform: rotate(12deg);
}

.mv-impeccable .mv-journey-traveler-label {
    padding: 3px 7px 4px;
    border: 1px solid rgba(255, 243, 207, .9);
    border-bottom: 2px solid var(--journey-open-dark);
    background: rgba(82, 57, 41, .88);
    clip-path: var(--atlas-cut-small);
    color: #fff8df;
    font-size: 10px;
    font-weight: 900;
    line-height: 1;
    text-shadow: 0 1px 1px rgba(34, 24, 18, .72);
    box-shadow: 0 3px 7px rgba(43, 31, 23, .32);
}

[data-theme="night"] .mv-impeccable .mv-village-map[data-location="Forest road"] .mv-journey-layer {
    --journey-open: #e2b56f;
    --journey-open-dark: #745039;
    --journey-frontier: #b6b7a2;
    --journey-unknown: #4a5960;
}

[data-theme="night"] .mv-impeccable .mv-journey-fog {
    background:
        radial-gradient(ellipse at 46% 52%, rgba(18, 34, 43, .88) 0 22%, rgba(31, 47, 52, .72) 47%, rgba(47, 59, 61, 0) 77%);
    mix-blend-mode: normal;
}

@keyframes mv-journey-fog-breathe {
    from { transform: translate(-50%, -50%) scale(.98); }
    to { transform: translate(-49%, -51%) scale(1.04); }
}

@keyframes mv-journey-presence {
    0%, 100% { transform: translate(-50%, -50%) scale(1); }
    50% { transform: translate(-50%, -53%) scale(1.04); }
}

@media (prefers-reduced-motion: reduce) {
    .mv-impeccable .mv-journey-fog,
    .mv-impeccable .mv-journey-traveler {
        animation: none;
    }
}

/* Wave 30：同一座峽谷只按既有倒木行動完成態切換兩張校準專圖。
   疣豬是一次遭遇，不成為永久地圖物件。 */
.mv-impeccable .mv-village-map[data-location="Carya Canyon"][data-art-state="ravine-prebridge"],
.mv-impeccable .mv-village-map[data-location="Carya Canyon"][data-art-state="fallen-tree-bridge"] {
    background: none;
}

.mv-impeccable .mv-village-map[data-location="Carya Canyon"][data-art-state="ravine-prebridge"] .mv-village-map-img,
.mv-impeccable .mv-village-map[data-location="Carya Canyon"][data-art-state="fallen-tree-bridge"] .mv-village-map-img {
    opacity: 1;
}

/* Wave 31：Nearby cave 只作洞外 route overview。節點只描述可見洞口、岩棚、
   山壁與返村小徑；洞室、巨門與礦脈名稱全部留在 sheet。 */
.mv-impeccable .mv-village-map[data-location="Nearby cave"] {
    background: none;
}

.mv-impeccable .mv-village-map[data-location="Nearby cave"] .mv-village-map-img {
    opacity: 1;
}

/* Wave 32: Lake beach swaps between the empty shore and the exact existing
   create-lake-camp completion state. The old dock raster stays hidden. */
.mv-impeccable .mv-village-map[data-location="Lake beach"][data-art-state="shore-pre-camp"],
.mv-impeccable .mv-village-map[data-location="Lake beach"][data-art-state="campsite-post-build"] {
    background: none;
}

.mv-impeccable .mv-village-map[data-location="Lake beach"][data-art-state="shore-pre-camp"] .mv-village-map-img,
.mv-impeccable .mv-village-map[data-location="Lake beach"][data-art-state="campsite-post-build"] .mv-village-map-img {
    opacity: 1;
}

/* 成熟洞線 owner 密度高；雙欄只套用明示 metadata 的深徑 sheet，避免把圖片退化成
   單欄文字牆。卡片仍保留觸控高度與原本 proxy/on-click 行為。 */
.mv-impeccable .mv-node-sheet[data-layout="compact-grid"] .mv-node-sheet-list {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 7px;
}

.mv-impeccable .mv-node-sheet[data-layout="compact-grid"] .mv-node-act {
    min-width: 0;
    min-height: 74px;
    padding: 7px 8px;
    gap: 6px;
    align-items: center;
    border: 1px solid color-mix(in srgb, var(--atlas-route-dark) 34%, transparent);
    border-image: none !important;
    border-radius: 0;
    background: color-mix(in srgb, var(--atlas-paper) 92%, white 8%) !important;
    box-shadow: 0 2px 0 color-mix(in srgb, var(--atlas-ink) 16%, transparent);
    clip-path: none;
}

.mv-impeccable .mv-node-sheet[data-layout="compact-grid"] .mv-node-act[aria-disabled="true"] {
    border-style: dashed;
    background: color-mix(in srgb, var(--atlas-paper) 84%, var(--atlas-route-dark) 16%) !important;
    opacity: .88;
}

.mv-impeccable .mv-node-sheet[data-layout="compact-grid"] .mv-node-act.mv-action-route {
    border-bottom: 3px solid var(--atlas-route);
}

.mv-impeccable .mv-node-sheet[data-layout="compact-grid"] .mv-node-act:active {
    transform: translateY(1px);
    box-shadow: none;
}

.mv-impeccable .mv-node-sheet[data-layout="compact-grid"] .mv-action-icon {
    width: 30px;
    min-width: 30px;
}

.mv-impeccable .mv-node-sheet[data-layout="compact-grid"] .mv-action-label {
    font-size: 12px;
    line-height: 1.22;
}

.mv-impeccable .mv-node-sheet[data-layout="compact-grid"] .mv-action-sub {
    font-size: 12px;
    line-height: 1.18;
}

.mv-impeccable .mv-village-map::before {
    content: "";
    position: absolute;
    inset: 0;
    z-index: 1;
    pointer-events: none;
    background:
        linear-gradient(90deg, rgba(38,60,59,.15), transparent 12%, transparent 88%, rgba(38,60,59,.12)),
        linear-gradient(180deg, rgba(251,244,223,.12), transparent 28%, transparent 76%, rgba(40,57,52,.12));
    mix-blend-mode: multiply;
}

[data-theme="night"] .mv-impeccable .mv-village-map::before {
    background: linear-gradient(180deg, rgba(14, 36, 48, .12), rgba(10, 34, 43, .32));
    mix-blend-mode: normal;
}

[data-theme="night"] .mv-impeccable .mv-village-map::after {
    background: var(--mv-time-tint, transparent);
    mix-blend-mode: normal;
}

.mv-impeccable .mv-route-ledger.mv-cozy-panel {
    width: min(100%, 342px);
    margin-inline: auto;
    padding: 8px 11px 9px 15px;
    border: 1px solid rgba(70,87,74,.34);
    border-bottom: 3px solid var(--atlas-route);
    background: color-mix(in srgb, var(--atlas-paper) 93%, transparent);
    clip-path: var(--atlas-cut-small);
    color: var(--atlas-ink);
    box-shadow: 0 5px 18px var(--atlas-shadow);
    backdrop-filter: none;
}

.mv-impeccable .mv-route-ledger-title {
    color: var(--atlas-route-dark);
    font-size: 11px;
    letter-spacing: .08em;
}

.mv-impeccable .mv-route-ledger-mark {
    width: 25px;
    height: 15px;
    border: 1px solid var(--atlas-route);
    border-radius: 0;
    background:
        radial-gradient(circle at 28% 50%, var(--atlas-route) 0 2px, transparent 3px),
        radial-gradient(circle at 72% 50%, var(--atlas-herb) 0 2px, transparent 3px);
    box-shadow: none;
    transform: rotate(-4deg);
}

.mv-impeccable .mv-route-trail {
    margin-top: 5px;
}

.mv-impeccable .mv-route-step {
    color: color-mix(in srgb, var(--atlas-ink-soft) 72%, transparent);
}

.mv-impeccable .mv-route-step::before {
    top: 6px;
    height: 1px;
    background: color-mix(in srgb, var(--atlas-route) 45%, transparent);
}

.mv-impeccable .mv-route-dot {
    width: 13px;
    height: 13px;
    border-width: 1px;
    border-radius: 50% 42% 52% 44%;
    background: var(--atlas-paper);
    box-shadow: none;
}

.mv-impeccable .mv-route-done,
.mv-impeccable .mv-route-active {
    color: var(--atlas-route);
}

.mv-impeccable .mv-route-done .mv-route-dot,
.mv-impeccable .mv-route-active .mv-route-dot {
    background: var(--atlas-route);
}

.mv-impeccable .mv-route-active .mv-route-dot {
    box-shadow: 0 0 0 3px color-mix(in srgb, var(--atlas-paper) 70%, transparent);
}

.mv-impeccable .mv-route-name,
.mv-impeccable .mv-route-note {
    color: var(--atlas-ink);
    font-size: 11px;
}

.mv-impeccable .mv-route-note {
    margin-top: 4px;
    font-weight: 500;
}

.mv-impeccable .mv-evidence-board.mv-cozy-panel {
    background: color-mix(in srgb, var(--atlas-paper) 94%, transparent);
    color: var(--atlas-ink);
}

.mv-impeccable .mv-evidence-action.mv-cozy-button {
    border: 1px solid color-mix(in srgb, var(--atlas-route-dark) 78%, var(--atlas-ink));
    border-bottom-width: 3px;
    background: var(--atlas-route-dark);
    clip-path: var(--atlas-cut-small);
    color: var(--atlas-paper);
    text-shadow: none;
    box-shadow: 0 4px 10px var(--atlas-shadow);
}

.mv-impeccable .mv-evidence-action.mv-cozy-button > span {
    opacity: .9;
}

.mv-impeccable .mv-map-node {
    gap: 1px;
    min-width: 60px;
    min-height: 60px;
}

.mv-impeccable .mv-map-node-pin.mv-cozy-slot {
    width: 52px;
    height: 52px;
    border: 2px solid var(--atlas-paper);
    border-bottom-color: var(--atlas-route);
    background: color-mix(in srgb, var(--atlas-paper) 94%, transparent);
    clip-path: polygon(50% 0, 90% 18%, 100% 65%, 72% 100%, 28% 100%, 0 65%, 10% 18%);
    box-shadow: 0 4px 10px var(--atlas-shadow);
    animation: mv-atlas-breathe 2.8s ease-in-out infinite;
}

.mv-impeccable .mv-map-node-pin .mv-map-node-pin-img {
    width: 38px !important;
    height: 38px !important;
    border-radius: 0;
    filter: saturate(.82) contrast(1.02) drop-shadow(0 2px 1px rgba(38,54,48,.2));
}

.mv-impeccable .mv-map-node-label.mv-cozy-button {
    min-height: 28px;
    margin-top: -4px;
    padding: 3px 9px 4px;
    border: 1px solid var(--atlas-line);
    border-bottom: 2px solid var(--atlas-route);
    background: color-mix(in srgb, var(--atlas-paper) 94%, transparent);
    clip-path: var(--atlas-cut-small);
    color: var(--atlas-ink);
    font-size: 11px;
    font-weight: 800;
    line-height: 1;
    box-shadow: 0 3px 7px var(--atlas-shadow);
}

.mv-impeccable .mv-map-node[aria-expanded="true"] .mv-map-node-pin {
    border-color: var(--atlas-route);
    background: var(--atlas-paper);
}

.mv-impeccable .mv-map-node[aria-expanded="true"] .mv-map-node-label {
    border-color: var(--atlas-route-dark);
    background: var(--atlas-route-dark);
    color: var(--atlas-paper);
}

.mv-impeccable .mv-map-node[aria-disabled="true"] .mv-map-node-pin,
.mv-impeccable .mv-map-node.mv-disabled .mv-map-node-pin {
    border-color: color-mix(in srgb, var(--atlas-ink-soft) 45%, transparent);
    background: color-mix(in srgb, var(--atlas-paper) 72%, transparent);
    opacity: .74;
}

.mv-impeccable .mv-map-node[aria-disabled="true"] .mv-map-node-label,
.mv-impeccable .mv-map-node.mv-disabled .mv-map-node-label {
    border-color: var(--atlas-line);
    color: var(--atlas-ink-soft);
    opacity: .9;
}

.mv-impeccable .mv-map-node-more {
    background: var(--atlas-route);
    box-shadow: 6px 0 0 -1px var(--atlas-route);
}

@keyframes mv-atlas-breathe {
    0%, 100% { transform: translateY(0); }
    50% { transform: translateY(-2px); }
}

/* Current work is a route dock, visually connected to the map edge. */
.mv-impeccable .mv-ongoing.mv-cozy-panel,
.mv-impeccable .mv-scene-mapmode > .mv-ongoing.mv-cozy-panel:not([hidden]) {
    left: 8px;
    right: 8px;
    bottom: 7px;
    min-height: 74px;
    gap: 7px;
    padding: 8px 9px 8px 12px;
    border: 1px solid var(--atlas-line);
    border-top: 3px solid var(--atlas-route);
    background: color-mix(in srgb, var(--atlas-paper) 95%, transparent);
    clip-path: var(--atlas-cut);
    color: var(--atlas-ink);
    box-shadow: 0 7px 20px var(--atlas-shadow);
    backdrop-filter: none;
}

.mv-impeccable .mv-ongoing-art {
    width: 44px;
    height: 44px;
    border: 1px solid var(--atlas-line);
    background: color-mix(in srgb, var(--atlas-herb) 12%, transparent);
    clip-path: var(--atlas-cut-small);
}

.mv-impeccable .mv-ongoing-title,
.mv-impeccable .mv-ongoing-info {
    color: var(--atlas-ink);
}

.mv-impeccable .mv-ongoing-info {
    max-height: 32px;
    color: var(--atlas-ink-soft);
    font-size: 11px;
}

.mv-impeccable .mv-ongoing-bar {
    height: 4px;
    border-radius: 0;
    background: color-mix(in srgb, var(--atlas-ink) 16%, transparent);
    box-shadow: none;
}

.mv-impeccable .mv-ongoing-bar-fill {
    background: var(--atlas-route);
}

.mv-impeccable .mv-ongoing-stop.mv-cozy-button {
    min-width: 62px;
    min-height: 48px;
    padding: 0 9px;
    border: 1px solid var(--atlas-route);
    background: transparent;
    color: var(--atlas-route-dark);
    clip-path: var(--atlas-cut-small);
}

/* Navigation is one route line with page marks, not six framed buttons. */
.mv-impeccable .mv-tabbar {
    position: relative;
    z-index: 30;
    min-height: 68px;
    gap: 0;
    padding: 5px 4px max(5px, var(--mv-safe-bottom));
    border: 0;
    border-top: 1px solid var(--atlas-line);
    background: var(--atlas-flax);
    box-shadow: 0 -5px 18px var(--atlas-shadow);
}

.mv-impeccable .mv-tabbar::before {
    content: "";
    display: block;
    position: absolute;
    left: 9%;
    right: 9%;
    top: 22px;
    height: 1px;
    background: color-mix(in srgb, var(--atlas-route) 42%, transparent);
    pointer-events: none;
}

.mv-impeccable .mv-tab {
    min-height: 56px;
    gap: 0;
    padding: 3px 1px 2px;
    border: 0;
    background: transparent;
    color: var(--atlas-ink-soft);
    font-size: 11px;
    font-weight: 700;
    line-height: 1;
}

.mv-impeccable .mv-tab-icon {
    width: 34px;
    height: 34px;
    border: 1px solid transparent;
    background: var(--atlas-flax);
    transform: none;
}

.mv-impeccable .mv-tab-icon .mv-icon {
    width: 27px !important;
    height: 27px !important;
    filter: saturate(.72);
}

.mv-impeccable .mv-tab.mv-active {
    color: var(--atlas-route-dark);
}

.mv-impeccable .mv-tab.mv-active .mv-tab-icon,
[data-theme="night"] .mv-impeccable .mv-tab.mv-active .mv-tab-icon {
    border-color: var(--atlas-route);
    background: var(--atlas-paper);
    transform: rotate(-3deg);
    box-shadow: 0 2px 0 var(--atlas-route);
}

.mv-impeccable .mv-tab.mv-active .mv-tab-icon .mv-icon {
    filter: saturate(.95);
}

.mv-impeccable .mv-tab:active {
    transform: translateY(1px);
    filter: none;
}

.mv-impeccable .mv-quest.mv-quest-finished.mv-open {
    opacity: 1;
}

.mv-impeccable .mv-quest.mv-quest-finished.mv-open .mv-quest-head.mv-cozy-button {
    border-image-source: var(--mv-tf-button-default);
    color: var(--mv-tf-ink);
}

.mv-impeccable .mv-quest.mv-quest-finished.mv-open .mv-quest-state {
    color: var(--mv-tf-ink-soft);
}

/* Dialogue: face, voice, response. The options remain a fixed third row. */
.mv-impeccable .mv-scene[data-mode="dialogue"] {
    padding: 0;
    background:
        linear-gradient(180deg, color-mix(in srgb, var(--atlas-flax) 82%, transparent), var(--atlas-flax)),
        url("/resources/maps/styles/village-route-atlas-v1.png") center 43% / cover no-repeat;
}

.mv-impeccable .mv-scene[data-mode="dialogue"]::before {
    content: "";
    position: absolute;
    inset: 0;
    pointer-events: none;
    background: linear-gradient(180deg, color-mix(in srgb, var(--atlas-flax) 40%, transparent), var(--atlas-flax) 82%);
}

/* Wave 33: the route-register action stays inside the canonical maintenance-station illustration. */
.mv-impeccable .mv-scene[data-mode="dialogue"][data-action-location="Mysterious depths"][data-action-key="trace route register"] {
    background:
        linear-gradient(180deg, rgba(24, 24, 43, .06), rgba(251, 244, 223, .34) 86%),
        url("/resources/maps/styles/mysterious-depths-route-register-closed-gate-v1.png") center 50% / cover no-repeat;
}

.mv-impeccable .mv-scene[data-mode="dialogue"][data-action-location="Mysterious depths"][data-action-key="trace route register"]::before {
    background: linear-gradient(180deg, rgba(251, 244, 223, .08), rgba(251, 244, 223, .16) 62%, var(--atlas-flax) 96%);
}

.mv-impeccable .mv-scene[data-mode="dialogue"][data-action-location="Mysterious depths"][data-action-key="trace route register"] .mv-dlg-avatar-art {
    background: url("/resources/icons/map-title.png") center / 76% no-repeat;
    color: transparent;
}

.mv-impeccable .mv-scene[data-mode="dialogue"][data-action-location="Mysterious depths"][data-action-key="trace route register"] .mv-dlg-action {
    align-self: start;
    width: 100%;
    border: 1px solid color-mix(in srgb, var(--atlas-route-dark) 58%, transparent);
    background: rgba(251, 244, 223, .9);
    color: #1d303a;
    box-shadow: 0 8px 20px rgba(48, 35, 27, .18);
}

[data-theme="night"] .mv-impeccable .mv-scene[data-mode="dialogue"][data-action-location="Mysterious depths"][data-action-key="trace route register"]::before {
    background: linear-gradient(180deg, rgba(13, 37, 53, .36), rgba(8, 26, 45, .56) 68%, var(--atlas-flax) 96%);
}

[data-theme="night"] .mv-impeccable .mv-scene[data-mode="dialogue"][data-action-location="Mysterious depths"][data-action-key="trace route register"] .mv-dlg-action {
    border-color: color-mix(in srgb, var(--atlas-route) 70%, transparent);
    background: rgba(13, 37, 53, .87);
    color: #fff8e8;
}

.mv-impeccable .mv-scene[data-mode="dialogue"][data-action-location="Mysterious depths"][data-action-key="trace route register"] .mv-dlg-action-end.mv-cozy-button {
    border: 1px solid var(--atlas-route-dark);
    background: var(--atlas-route-dark);
    clip-path: var(--atlas-cut-small);
    color: #fff8e8;
    font-weight: 800;
    box-shadow:
        0 3px 0 color-mix(in srgb, var(--atlas-ink) 42%, transparent),
        0 7px 16px rgba(10, 15, 20, .22);
}

.mv-impeccable .mv-scene[data-mode="dialogue"][data-action-location="Mysterious depths"][data-action-key="trace route register"] .mv-dlg-action-end.mv-cozy-button:active {
    transform: translateY(2px);
    box-shadow: 0 1px 0 color-mix(in srgb, var(--atlas-ink) 42%, transparent);
}

/* Wave 20: Anna's lesson and the one-shot route remain inside the South Wall illustration. */
.mv-impeccable .mv-scene[data-mode="dialogue"][data-dialogue-key="old woman of the slums"],
.mv-impeccable .mv-scene[data-mode="dialogue"][data-action-location="Town outskirts"][data-action-key="mark south-wall herbs"] {
    background:
        linear-gradient(180deg, rgba(251, 244, 223, .06), rgba(251, 244, 223, .36) 86%),
        url("/resources/maps/styles/town-outskirts.png") center 52% / cover no-repeat;
}

.mv-impeccable .mv-scene[data-mode="dialogue"][data-dialogue-key="old woman of the slums"]::before,
.mv-impeccable .mv-scene[data-mode="dialogue"][data-action-location="Town outskirts"][data-action-key="mark south-wall herbs"]::before {
    background: linear-gradient(180deg, rgba(251, 244, 223, .06), rgba(251, 244, 223, .18) 62%, var(--atlas-flax) 96%);
}

[data-theme="night"] .mv-impeccable .mv-scene[data-mode="dialogue"][data-dialogue-key="old woman of the slums"]::before,
[data-theme="night"] .mv-impeccable .mv-scene[data-mode="dialogue"][data-action-location="Town outskirts"][data-action-key="mark south-wall herbs"]::before {
    background: linear-gradient(180deg, rgba(13, 37, 53, .38), rgba(8, 26, 45, .54) 68%, var(--atlas-flax) 96%);
}

.mv-impeccable .mv-scene[data-mode="dialogue"][data-action-location="Town outskirts"][data-action-key="mark south-wall herbs"] .mv-dlg-avatar-art {
    background: url("/resources/icons/items/indigolay/icon_Hub.png") center / 76% no-repeat;
    color: transparent;
}

.mv-impeccable .mv-scene[data-mode="dialogue"][data-action-location="Town outskirts"][data-action-key="mark south-wall herbs"] .mv-dlg-action-end.mv-cozy-button {
    border: 1px solid var(--atlas-route-dark);
    background: var(--atlas-route-dark);
    clip-path: var(--atlas-cut-small);
    color: #fff8e8;
    font-weight: 800;
    box-shadow:
        0 3px 0 color-mix(in srgb, var(--atlas-ink) 42%, transparent),
        0 7px 16px rgba(10, 15, 20, .22);
}

[data-theme="night"] .mv-impeccable .mv-scene[data-mode="dialogue"][data-action-location="Town outskirts"][data-action-key="mark south-wall herbs"] .mv-dlg-action-end.mv-cozy-button {
    border-color: var(--atlas-route);
    background: var(--atlas-route-dark);
    color: #1d303a;
}

.mv-impeccable .mv-scene[data-mode="dialogue"][data-action-location="Town outskirts"][data-action-key="mark south-wall herbs"] .mv-dlg-action-end.mv-cozy-button:active {
    transform: translateY(2px);
    box-shadow: 0 1px 0 color-mix(in srgb, var(--atlas-ink) 42%, transparent);
}

/* Wave 21: the shared-upkeep beat stays on the canonical Village atlas. Ella
   hands off at the village, the transient bridgehead node becomes the action,
   and Ed closes the route without inventing a second bridge illustration. */
.mv-impeccable .mv-scene[data-mode="dialogue"][data-action-location="Village"][data-action-key="mark bridge mill round"],
.mv-impeccable .mv-scene[data-mode="dialogue"][data-action-location="Village"][data-action-key="hang bridge upkeep board"] {
    background:
        linear-gradient(180deg, rgba(251, 244, 223, .04), rgba(251, 244, 223, .34) 86%),
        url("/resources/maps/styles/village-route-atlas-v1.png") center 59% / cover no-repeat;
}

.mv-impeccable .mv-scene[data-mode="dialogue"][data-action-location="Village"][data-action-key="mark bridge mill round"]::before,
.mv-impeccable .mv-scene[data-mode="dialogue"][data-action-location="Village"][data-action-key="hang bridge upkeep board"]::before {
    background: linear-gradient(180deg, rgba(251, 244, 223, .05), rgba(251, 244, 223, .16) 62%, var(--atlas-flax) 96%);
}

[data-theme="night"] .mv-impeccable .mv-scene[data-mode="dialogue"][data-dialogue-key="village elder"]::before,
[data-theme="night"] .mv-impeccable .mv-scene[data-mode="dialogue"][data-dialogue-key="old craftsman"]::before,
[data-theme="night"] .mv-impeccable .mv-scene[data-mode="dialogue"][data-action-location="Village"][data-action-key="mark bridge mill round"]::before,
[data-theme="night"] .mv-impeccable .mv-scene[data-mode="dialogue"][data-action-location="Village"][data-action-key="hang bridge upkeep board"]::before {
    background: linear-gradient(180deg, rgba(13, 37, 53, .34), rgba(8, 26, 45, .52) 68%, var(--atlas-flax) 96%);
}

.mv-impeccable .mv-scene[data-mode="dialogue"][data-action-location="Village"][data-action-key="mark bridge mill round"] .mv-dlg-avatar-art,
.mv-impeccable .mv-scene[data-mode="dialogue"][data-action-location="Village"][data-action-key="hang bridge upkeep board"] .mv-dlg-avatar-art {
    background: url("/resources/icons/clean-cel-v1/node-gate-v1.png") center / 76% no-repeat;
    color: transparent;
}

.mv-impeccable .mv-scene[data-mode="dialogue"][data-action-location="Village"][data-action-key="mark bridge mill round"] .mv-dlg-action,
.mv-impeccable .mv-scene[data-mode="dialogue"][data-action-location="Village"][data-action-key="hang bridge upkeep board"] .mv-dlg-action {
    align-self: start;
    width: 100%;
    border: 1px solid color-mix(in srgb, var(--atlas-route-dark) 58%, transparent);
    background: rgba(251, 244, 223, .88);
    color: #1d303a;
    box-shadow: 0 8px 20px rgba(48, 35, 27, .18);
}

[data-theme="night"] .mv-impeccable .mv-scene[data-mode="dialogue"][data-action-location="Village"][data-action-key="mark bridge mill round"] .mv-dlg-action,
[data-theme="night"] .mv-impeccable .mv-scene[data-mode="dialogue"][data-action-location="Village"][data-action-key="hang bridge upkeep board"] .mv-dlg-action {
    border-color: color-mix(in srgb, var(--atlas-route) 70%, transparent);
    background: rgba(13, 37, 53, .84);
    color: #fff8e8;
}

.mv-impeccable .mv-scene[data-mode="dialogue"][data-action-location="Village"][data-action-key="mark bridge mill round"] .mv-dlg-action-end.mv-cozy-button,
.mv-impeccable .mv-scene[data-mode="dialogue"][data-action-location="Village"][data-action-key="hang bridge upkeep board"] .mv-dlg-action-end.mv-cozy-button {
    border: 1px solid var(--atlas-route-dark);
    background: var(--atlas-route-dark);
    clip-path: var(--atlas-cut-small);
    color: #fff8e8;
    font-weight: 800;
    box-shadow:
        0 3px 0 color-mix(in srgb, var(--atlas-ink) 42%, transparent),
        0 7px 16px rgba(10, 15, 20, .22);
}

[data-theme="night"] .mv-impeccable .mv-scene[data-mode="dialogue"][data-action-location="Village"][data-action-key="mark bridge mill round"] .mv-dlg-action-end.mv-cozy-button,
[data-theme="night"] .mv-impeccable .mv-scene[data-mode="dialogue"][data-action-location="Village"][data-action-key="hang bridge upkeep board"] .mv-dlg-action-end.mv-cozy-button {
    border-color: var(--atlas-route);
    background: var(--atlas-route-dark);
    color: #1d303a;
}

/* Node sheets live outside the scene artwork. Keep their disabled state
   distinct at night without letting the route title or reason disappear. */
[data-theme="night"] body.mv-impeccable .mv-node-sheet .mv-sheet-title-copy h3,
[data-theme="night"] body.mv-impeccable .mv-node-sheet .mv-sheet-visible-close {
    color: #fff8e8;
}

[data-theme="night"] body.mv-impeccable .mv-node-sheet .mv-action.mv-cozy-button[aria-disabled="true"] {
    color: #eadfc9;
    opacity: .94;
}

[data-theme="night"] body.mv-impeccable .mv-node-sheet .mv-action.mv-cozy-button[aria-disabled="true"] .mv-action-sub {
    color: #c8d5d8;
}

[data-theme="night"] body.mv-impeccable .mv-node-sheet .mv-action.mv-cozy-button:not([aria-disabled="true"]) {
    color: #fff8e8;
}

[data-theme="night"] body.mv-impeccable .mv-node-sheet .mv-action.mv-cozy-button:not([aria-disabled="true"]) .mv-action-sub {
    color: #c8d5d8;
}

.mv-impeccable .mv-scene[data-mode="dialogue"][data-action-location="Village"][data-action-key="mark bridge mill round"] .mv-dlg-action-end.mv-cozy-button:active,
.mv-impeccable .mv-scene[data-mode="dialogue"][data-action-location="Village"][data-action-key="hang bridge upkeep board"] .mv-dlg-action-end.mv-cozy-button:active {
    transform: translateY(2px);
    box-shadow: 0 1px 0 color-mix(in srgb, var(--atlas-ink) 42%, transparent);
}

/* Wave 23: the linen-frame one-shot stays inside the same borrowed-room art. */
.mv-impeccable .mv-scene[data-mode="dialogue"][data-action-location="Shack"][data-action-key="prepare guest linen frame"] {
    background:
        linear-gradient(180deg, rgba(251, 244, 223, .04), rgba(251, 244, 223, .34) 86%),
        url("/resources/maps/styles/shack.png") center 48% / cover no-repeat;
}

.mv-impeccable .mv-scene[data-mode="dialogue"][data-action-location="Shack"][data-action-key="prepare guest linen frame"]::before {
    background: linear-gradient(180deg, rgba(251, 244, 223, .05), rgba(251, 244, 223, .17) 62%, var(--atlas-flax) 96%);
}

[data-theme="night"] .mv-impeccable .mv-scene[data-mode="dialogue"][data-action-location="Shack"][data-action-key="prepare guest linen frame"]::before {
    background: linear-gradient(180deg, rgba(13, 37, 53, .34), rgba(8, 26, 45, .54) 68%, var(--atlas-flax) 96%);
}

.mv-impeccable .mv-scene[data-mode="dialogue"][data-action-location="Shack"][data-action-key="prepare guest linen frame"] .mv-dlg-avatar-art {
    background: url("/resources/icons/action-job.png") center / 76% no-repeat;
    color: transparent;
}

.mv-impeccable .mv-scene[data-mode="dialogue"][data-action-location="Shack"][data-action-key="prepare guest linen frame"] .mv-dlg-action {
    align-self: start;
    width: 100%;
    border: 1px solid color-mix(in srgb, var(--atlas-route-dark) 58%, transparent);
    background: rgba(251, 244, 223, .9);
    color: #1d303a;
    box-shadow: 0 8px 20px rgba(48, 35, 27, .18);
}

[data-theme="night"] .mv-impeccable .mv-scene[data-mode="dialogue"][data-action-location="Shack"][data-action-key="prepare guest linen frame"] .mv-dlg-action {
    border-color: color-mix(in srgb, var(--atlas-route) 70%, transparent);
    background: rgba(13, 37, 53, .86);
    color: #fff8e8;
}

.mv-impeccable .mv-scene[data-mode="dialogue"][data-action-location="Shack"][data-action-key="prepare guest linen frame"] .mv-dlg-action-end.mv-cozy-button {
    border: 1px solid var(--atlas-route-dark);
    background: var(--atlas-route-dark);
    clip-path: var(--atlas-cut-small);
    color: #fff8e8;
    font-weight: 800;
    box-shadow:
        0 3px 0 color-mix(in srgb, var(--atlas-ink) 42%, transparent),
        0 7px 16px rgba(10, 15, 20, .22);
}

[data-theme="night"] .mv-impeccable .mv-scene[data-mode="dialogue"][data-action-location="Shack"][data-action-key="prepare guest linen frame"] .mv-dlg-action-end.mv-cozy-button {
    border-color: var(--atlas-route);
    color: #1d303a;
}

.mv-impeccable .mv-scene[data-mode="dialogue"][data-action-location="Shack"][data-action-key="prepare guest linen frame"] .mv-dlg-action-end.mv-cozy-button:active {
    transform: translateY(2px);
    box-shadow: 0 1px 0 color-mix(in srgb, var(--atlas-ink) 42%, transparent);
}

/* Wave 24: the current-reading one-shot stays anchored to the visible right shelf. */
.mv-impeccable .mv-scene[data-mode="dialogue"][data-action-location="Waterfall basin"][data-action-key="chart basin currents"] {
    background:
        linear-gradient(180deg, rgba(251, 244, 223, .03), rgba(251, 244, 223, .30) 86%),
        url("/resources/maps/styles/waterfall-basin.png") center 55% / cover no-repeat;
}

.mv-impeccable .mv-scene[data-mode="dialogue"][data-action-location="Waterfall basin"][data-action-key="chart basin currents"]::before {
    background: linear-gradient(180deg, rgba(251, 244, 223, .04), rgba(251, 244, 223, .15) 62%, var(--atlas-flax) 96%);
}

[data-theme="night"] .mv-impeccable .mv-scene[data-mode="dialogue"][data-action-location="Waterfall basin"][data-action-key="chart basin currents"]::before {
    background: linear-gradient(180deg, rgba(13, 37, 53, .36), rgba(8, 26, 45, .56) 68%, var(--atlas-flax) 96%);
}

.mv-impeccable .mv-scene[data-mode="dialogue"][data-action-location="Waterfall basin"][data-action-key="chart basin currents"] .mv-dlg-avatar-art {
    background: url("/resources/icons/skills/perception.png") center / 76% no-repeat;
    color: transparent;
}

.mv-impeccable .mv-scene[data-mode="dialogue"][data-action-location="Waterfall basin"][data-action-key="chart basin currents"] .mv-dlg-action {
    align-self: start;
    width: 100%;
    border: 1px solid color-mix(in srgb, var(--atlas-route-dark) 58%, transparent);
    background: rgba(251, 244, 223, .90);
    color: #1d303a;
    box-shadow: 0 8px 20px rgba(48, 35, 27, .18);
}

[data-theme="night"] .mv-impeccable .mv-scene[data-mode="dialogue"][data-action-location="Waterfall basin"][data-action-key="chart basin currents"] .mv-dlg-action {
    border-color: color-mix(in srgb, var(--atlas-route) 70%, transparent);
    background: rgba(13, 37, 53, .87);
    color: #fff8e8;
}

.mv-impeccable .mv-scene[data-mode="dialogue"][data-action-location="Waterfall basin"][data-action-key="chart basin currents"] .mv-dlg-action-end.mv-cozy-button {
    border: 1px solid var(--atlas-route-dark);
    background: var(--atlas-route-dark);
    clip-path: var(--atlas-cut-small);
    color: #fff8e8;
    font-weight: 800;
    box-shadow:
        0 3px 0 color-mix(in srgb, var(--atlas-ink) 42%, transparent),
        0 7px 16px rgba(10, 15, 20, .22);
}

[data-theme="night"] .mv-impeccable .mv-scene[data-mode="dialogue"][data-action-location="Waterfall basin"][data-action-key="chart basin currents"] .mv-dlg-action-end.mv-cozy-button {
    border-color: var(--atlas-route);
    color: #1d303a;
}

.mv-impeccable .mv-scene[data-mode="dialogue"][data-action-location="Waterfall basin"][data-action-key="chart basin currents"] .mv-dlg-action-end.mv-cozy-button:active {
    transform: translateY(2px);
    box-shadow: 0 1px 0 color-mix(in srgb, var(--atlas-ink) 42%, transparent);
}

/* Wave 25: the first reedline stays anchored to the visible central mud ridge. */
.mv-impeccable .mv-scene[data-mode="dialogue"][data-action-location="Swampland fields"][data-action-key="mark first mud ridge"] {
    background:
        linear-gradient(180deg, rgba(251, 244, 223, .03), rgba(251, 244, 223, .30) 86%),
        url("/resources/maps/styles/swampland-fields.png") center 54% / cover no-repeat;
}

.mv-impeccable .mv-scene[data-mode="dialogue"][data-action-location="Swampland fields"][data-action-key="mark first mud ridge"]::before {
    background: linear-gradient(180deg, rgba(251, 244, 223, .04), rgba(251, 244, 223, .15) 62%, var(--atlas-flax) 96%);
}

[data-theme="night"] .mv-impeccable .mv-scene[data-mode="dialogue"][data-action-location="Swampland fields"][data-action-key="mark first mud ridge"]::before {
    background: linear-gradient(180deg, rgba(13, 37, 53, .36), rgba(8, 26, 45, .58) 68%, var(--atlas-flax) 96%);
}

.mv-impeccable .mv-scene[data-mode="dialogue"][data-action-location="Swampland fields"][data-action-key="mark first mud ridge"] .mv-dlg-avatar-art {
    background: url("/resources/icons/action-job.png") center / 76% no-repeat;
    color: transparent;
}

.mv-impeccable .mv-scene[data-mode="dialogue"][data-action-location="Swampland fields"][data-action-key="mark first mud ridge"] .mv-dlg-action {
    align-self: start;
    width: 100%;
    border: 1px solid color-mix(in srgb, var(--atlas-route-dark) 58%, transparent);
    background: rgba(251, 244, 223, .91);
    color: #1d303a;
    box-shadow: 0 8px 20px rgba(48, 35, 27, .18);
}

[data-theme="night"] .mv-impeccable .mv-scene[data-mode="dialogue"][data-action-location="Swampland fields"][data-action-key="mark first mud ridge"] .mv-dlg-action {
    border-color: color-mix(in srgb, var(--atlas-route) 70%, transparent);
    background: rgba(13, 37, 53, .88);
    color: #fff8e8;
}

.mv-impeccable .mv-scene[data-mode="dialogue"][data-action-location="Swampland fields"][data-action-key="mark first mud ridge"] .mv-dlg-action-end.mv-cozy-button {
    border: 1px solid var(--atlas-route-dark);
    background: var(--atlas-route-dark);
    clip-path: var(--atlas-cut-small);
    color: #fff8e8;
    font-weight: 800;
    box-shadow:
        0 3px 0 color-mix(in srgb, var(--atlas-ink) 42%, transparent),
        0 7px 16px rgba(10, 15, 20, .22);
}

[data-theme="night"] .mv-impeccable .mv-scene[data-mode="dialogue"][data-action-location="Swampland fields"][data-action-key="mark first mud ridge"] .mv-dlg-action-end.mv-cozy-button {
    border-color: var(--atlas-route);
    color: #1d303a;
}

.mv-impeccable .mv-scene[data-mode="dialogue"][data-action-location="Swampland fields"][data-action-key="mark first mud ridge"] .mv-dlg-action-end.mv-cozy-button:active {
    transform: translateY(2px);
    box-shadow: 0 1px 0 color-mix(in srgb, var(--atlas-ink) 42%, transparent);
}

/* Wave 30: bridge construction stays on the truthful pre-bridge ravine art.
   Success returns to the map, where the stateful resolver swaps to the fallen trunk. */
.mv-impeccable .mv-scene[data-mode="dialogue"][data-action-location="Carya Canyon"][data-action-key="Make a bridge"] {
    background:
        linear-gradient(180deg, rgba(251, 244, 223, .02), rgba(251, 244, 223, .30) 86%),
        url("/resources/maps/styles/carya-canyon-ravine-prebridge-v1.png") center 48% / cover no-repeat;
}

.mv-impeccable .mv-scene[data-mode="dialogue"][data-action-location="Carya Canyon"][data-action-key="Make a bridge"]::before {
    background: linear-gradient(180deg, rgba(251, 244, 223, .04), rgba(251, 244, 223, .15) 62%, var(--atlas-flax) 96%);
}

[data-theme="night"] .mv-impeccable .mv-scene[data-mode="dialogue"][data-action-location="Carya Canyon"][data-action-key="Make a bridge"]::before {
    background: linear-gradient(180deg, rgba(13, 37, 53, .36), rgba(8, 26, 45, .58) 68%, var(--atlas-flax) 96%);
}

.mv-impeccable .mv-scene[data-mode="dialogue"][data-action-location="Carya Canyon"][data-action-key="Make a bridge"] .mv-dlg-avatar-art {
    background: url("/resources/icons/action-job.png") center / 76% no-repeat;
    color: transparent;
}

.mv-impeccable .mv-scene[data-mode="dialogue"][data-action-location="Carya Canyon"][data-action-key="Make a bridge"] .mv-dlg-action {
    align-self: start;
    width: 100%;
    border: 1px solid color-mix(in srgb, var(--atlas-route-dark) 58%, transparent);
    background: rgba(251, 244, 223, .91);
    color: #1d303a;
    box-shadow: 0 8px 20px rgba(48, 35, 27, .18);
}

[data-theme="night"] .mv-impeccable .mv-scene[data-mode="dialogue"][data-action-location="Carya Canyon"][data-action-key="Make a bridge"] .mv-dlg-action {
    border-color: color-mix(in srgb, var(--atlas-route) 70%, transparent);
    background: rgba(13, 37, 53, .88);
    color: #fff8e8;
}

.mv-impeccable .mv-scene[data-mode="dialogue"][data-action-location="Carya Canyon"][data-action-key="Make a bridge"] .mv-dlg-action-end.mv-cozy-button {
    border: 1px solid var(--atlas-route-dark);
    background: var(--atlas-route-dark);
    clip-path: var(--atlas-cut-small);
    color: #fff8e8;
    font-weight: 800;
    box-shadow:
        0 3px 0 color-mix(in srgb, var(--atlas-ink) 42%, transparent),
        0 7px 16px rgba(10, 15, 20, .22);
}

[data-theme="night"] .mv-impeccable .mv-scene[data-mode="dialogue"][data-action-location="Carya Canyon"][data-action-key="Make a bridge"] .mv-dlg-action-end.mv-cozy-button {
    border-color: var(--atlas-route);
    color: #1d303a;
}

/* Wave 32: building the Lake beach camp keeps the truthful empty shore as the
   dominant action scene. Completion returns to the map and swaps to built art. */
.mv-impeccable .mv-scene[data-mode="dialogue"][data-action-location="Lake beach"][data-action-key="create lake camp"] {
    background:
        linear-gradient(180deg, rgba(251, 244, 223, .02), rgba(251, 244, 223, .30) 86%),
        url("/resources/maps/styles/lake-beach-shore-pre-camp-v1.png") center 62% / cover no-repeat;
}

.mv-impeccable .mv-scene[data-mode="dialogue"][data-action-location="Lake beach"][data-action-key="create lake camp"]::before {
    background: linear-gradient(180deg, rgba(251, 244, 223, .04), rgba(251, 244, 223, .15) 62%, var(--atlas-flax) 96%);
}

[data-theme="night"] .mv-impeccable .mv-scene[data-mode="dialogue"][data-action-location="Lake beach"][data-action-key="create lake camp"]::before {
    background: linear-gradient(180deg, rgba(13, 37, 53, .36), rgba(8, 26, 45, .58) 68%, var(--atlas-flax) 96%);
}

.mv-impeccable .mv-scene[data-mode="dialogue"][data-action-location="Lake beach"][data-action-key="create lake camp"] .mv-dlg-avatar-art {
    background: url("/resources/icons/action-job.png") center / 76% no-repeat;
    color: transparent;
}

.mv-impeccable .mv-scene[data-mode="dialogue"][data-action-location="Lake beach"][data-action-key="create lake camp"] .mv-dlg-action {
    align-self: start;
    width: 100%;
    border: 1px solid color-mix(in srgb, var(--atlas-route-dark) 58%, transparent);
    background: rgba(255, 249, 232, .91);
    box-shadow: 0 8px 20px rgba(48, 35, 27, .18);
}

[data-theme="night"] .mv-impeccable .mv-scene[data-mode="dialogue"][data-action-location="Lake beach"][data-action-key="create lake camp"] .mv-dlg-action {
    border-color: color-mix(in srgb, var(--atlas-route) 70%, transparent);
    background: rgba(13, 37, 53, .88);
    color: #fff8e8;
}

.mv-impeccable .mv-scene[data-mode="dialogue"][data-action-location="Lake beach"][data-action-key="create lake camp"] .mv-dlg-action-end.mv-cozy-button {
    border: 1px solid var(--atlas-route-dark);
    background: var(--atlas-route-dark);
    clip-path: var(--atlas-cut-small);
    min-height: 48px;
    color: #fff8e8;
    box-shadow: 0 2px 0 color-mix(in srgb, var(--atlas-ink) 42%, transparent),
        0 7px 16px rgba(10, 15, 20, .22);
}

[data-theme="night"] .mv-impeccable .mv-scene[data-mode="dialogue"][data-action-location="Lake beach"][data-action-key="create lake camp"] .mv-dlg-action-end.mv-cozy-button {
    border-color: var(--atlas-route);
    color: #1d303a;
}

.mv-impeccable .mv-scene[data-mode="dialogue"][data-action-location="Lake beach"][data-action-key="create lake camp"] .mv-dlg-action-end.mv-cozy-button:active {
    transform: translateY(2px);
    box-shadow: 0 1px 0 color-mix(in srgb, var(--atlas-ink) 42%, transparent);
}

.mv-impeccable .mv-scene[data-mode="dialogue"][data-action-location="Carya Canyon"][data-action-key="Make a bridge"] .mv-dlg-action-end.mv-cozy-button:active {
    transform: translateY(2px);
    box-shadow: 0 1px 0 color-mix(in srgb, var(--atlas-ink) 42%, transparent);
}

.mv-impeccable .mv-scene[data-mode="dialogue"] > .mv-dialogue.mv-cozy-panel {
    position: relative;
    z-index: 1;
    grid-template-rows: auto minmax(0, 1fr) auto;
    gap: 8px;
    height: 100%;
    padding: 14px 13px 10px;
    border: 0;
    background: transparent;
    color: var(--atlas-ink);
    box-shadow: none;
}

.mv-impeccable .mv-dlg-head {
    align-items: flex-end;
    gap: 10px;
    min-height: 112px;
    border-bottom: 1px solid var(--atlas-line);
    padding-bottom: 8px;
}

.mv-impeccable .mv-dlg-avatar.mv-cozy-slot {
    width: 96px;
    height: 112px;
    border: 0;
    border-bottom: 3px solid var(--atlas-route);
    background: transparent;
    clip-path: polygon(8% 0, 100% 0, 100% 88%, 84% 100%, 0 100%, 0 12%);
    box-shadow: 0 6px 12px var(--atlas-shadow);
}

.mv-impeccable .mv-dlg-avatar-art[data-portrait] {
    background-size: 200% 200%;
}

.mv-impeccable .mv-dlg-head h2 {
    margin: 0 0 7px;
    color: var(--atlas-ink);
    font-family: "Noto Serif TC", "PMingLiU", serif;
    font-size: 22px;
    letter-spacing: .08em;
}

.mv-impeccable .mv-dlg-visible-exit.mv-cozy-button {
    min-width: 64px;
    min-height: 48px;
    margin-bottom: 1px;
    padding: 0 9px;
    border: 1px solid var(--atlas-line);
    background: color-mix(in srgb, var(--atlas-paper) 72%, transparent);
    clip-path: var(--atlas-cut-small);
    color: var(--atlas-ink-soft);
}

.mv-impeccable .mv-dlg-answer.mv-cozy-panel {
    --atlas-dialogue-leading: 27px;
    --atlas-dialogue-rule-offset: 14px;
    min-height: 0;
    padding: 15px 15px 17px 19px;
    border: 0;
    border-left: 2px solid var(--atlas-route);
    border-bottom: 1px solid var(--atlas-line);
    background:
        repeating-linear-gradient(
            180deg,
            transparent 0 var(--atlas-dialogue-rule-offset),
            color-mix(in srgb, var(--atlas-line) 46%, transparent) var(--atlas-dialogue-rule-offset) calc(var(--atlas-dialogue-rule-offset) + 1px),
            transparent calc(var(--atlas-dialogue-rule-offset) + 1px) var(--atlas-dialogue-leading)
        ),
        color-mix(in srgb, var(--atlas-paper) 91%, transparent);
    clip-path: var(--atlas-cut);
    color: var(--atlas-ink);
    font-family: "Noto Serif TC", "PMingLiU", serif;
    font-size: 16px;
    font-style: normal;
    line-height: var(--atlas-dialogue-leading);
    box-shadow: 0 5px 15px var(--atlas-shadow);
}

.mv-impeccable .mv-dlg-answer.mv-cozy-panel[hidden] {
    display: none;
}

.mv-impeccable .mv-dlg-answer::before,
.mv-impeccable .mv-dlg-answer::after {
    display: none;
}

.mv-impeccable .mv-dlg-options {
    gap: 6px;
    padding-top: 2px;
}

.mv-impeccable .mv-dlg-option.mv-cozy-button {
    min-height: 48px;
    padding: 8px 34px 8px 12px;
    border: 1px solid var(--atlas-line);
    border-bottom: 2px solid var(--atlas-herb);
    background: color-mix(in srgb, var(--atlas-paper) 94%, transparent);
    clip-path: var(--atlas-cut-small);
    color: var(--atlas-ink);
    text-align: left;
    box-shadow: 0 3px 8px var(--atlas-shadow);
}

.mv-impeccable .mv-dlg-option.mv-cozy-button::after {
    content: "›";
    position: absolute;
    right: 13px;
    color: var(--atlas-route);
    font-size: 22px;
    font-weight: 400;
}

.mv-impeccable .mv-dlg-option-say.mv-cozy-button {
    align-self: stretch;
    max-width: none;
    border-left-color: var(--atlas-route);
    background: color-mix(in srgb, var(--atlas-route) 8%, var(--atlas-paper));
    text-align: left;
}

.mv-impeccable .mv-dlg-option-end.mv-cozy-button {
    color: var(--atlas-ink-soft);
}

/* Named NPC work stays inside the NPC conversation. The portrait remains the
   identity owner; this panel is one entrusted task, not a worker/building UI. */
.mv-impeccable .mv-dlg-answer.mv-dlg-task-panel {
    display: grid;
    grid-template-columns: 86px minmax(0, 1fr);
    grid-template-rows: auto auto auto;
    gap: 9px 13px;
    align-content: center;
    white-space: normal;
}

.mv-impeccable .mv-dlg-task-art.mv-cozy-slot {
    grid-row: 1 / 3;
    width: 86px;
    height: 96px;
    border: 1px solid var(--atlas-line);
    background: color-mix(in srgb, var(--atlas-herb) 14%, var(--atlas-paper));
    clip-path: var(--atlas-cut-small);
}

.mv-impeccable .mv-dlg-task-copy {
    display: flex;
    flex-direction: column;
    gap: 4px;
}

.mv-impeccable .mv-dlg-task-copy > small {
    color: var(--atlas-route);
    font-size: 11px;
    font-weight: 700;
    letter-spacing: .08em;
}

.mv-impeccable .mv-dlg-task-copy > strong {
    font-family: "Noto Serif TC", "PMingLiU", serif;
    font-size: 20px;
}

.mv-impeccable .mv-dlg-task-copy > span {
    color: var(--atlas-ink-soft);
    font-size: 13px;
    line-height: 1.45;
}

.mv-impeccable .mv-dlg-task-progress {
    position: relative;
    grid-column: 2;
    height: 10px;
    overflow: hidden;
    border: 1px solid var(--atlas-line);
    background: color-mix(in srgb, var(--atlas-ink) 8%, transparent);
    clip-path: var(--atlas-cut-small);
}

.mv-impeccable .mv-dlg-task-progress-fill {
    display: block;
    height: 100%;
    background: linear-gradient(90deg, var(--atlas-herb), var(--atlas-route));
    transform: scaleX(var(--npc-task-progress, 0));
    transform-origin: left center;
    transition: transform 240ms linear;
}

.mv-impeccable .mv-dlg-task-status {
    grid-column: 1 / -1;
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    gap: 12px;
    padding-top: 7px;
    border-top: 1px solid var(--atlas-line);
}

.mv-impeccable .mv-dlg-task-status small,
.mv-impeccable .mv-dlg-task-repeat {
    color: var(--atlas-ink-soft);
    font-size: 12px;
}

.mv-impeccable .mv-dlg-task-repeat {
    grid-column: 1 / -1;
}

.mv-impeccable .mv-dlg-option-npc-task.mv-cozy-button {
    border-bottom-color: var(--atlas-route);
    background: color-mix(in srgb, var(--atlas-herb) 10%, var(--atlas-paper));
}

.mv-impeccable .mv-dlg-option-npc-task.mv-cozy-button:disabled {
    cursor: default;
    opacity: .72;
}

@media (max-height: 740px) {
    .mv-impeccable .mv-dlg-answer.mv-dlg-task-panel {
        grid-template-columns: 68px minmax(0, 1fr);
        gap: 7px 10px;
        padding-block: 10px;
    }

    .mv-impeccable .mv-dlg-task-art.mv-cozy-slot {
        width: 68px;
        height: 76px;
    }

    .mv-impeccable .mv-dlg-task-copy > strong {
        font-size: 17px;
    }

    .mv-impeccable .mv-dlg-task-copy > span {
        font-size: 12px;
    }
}

@media (prefers-reduced-motion: reduce) {
    .mv-impeccable .mv-dlg-task-progress-fill {
        transition: none;
    }
}

.mv-impeccable .mv-toast-stack:has(~ .mv-screens .mv-scene[data-mode="dialogue"].mv-active),
.mv-impeccable .mv-scene[data-mode="dialogue"].mv-active ~ .mv-toast-stack {
    visibility: hidden;
}

/* Shared page language for journal and inventory: one atlas leaf. */
.mv-impeccable .mv-screen[data-screen="bag"]::before,
.mv-impeccable .mv-screen[data-screen="journal"]::before {
    opacity: .26;
    filter: saturate(.7) blur(2px);
}

.mv-impeccable .mv-screen[data-screen="bag"],
.mv-impeccable .mv-screen[data-screen="journal"] {
    background:
        linear-gradient(90deg, transparent 0 13px, color-mix(in srgb, var(--atlas-route) 40%, transparent) 13px 14px, transparent 14px),
        var(--atlas-flax);
}

.mv-impeccable .mv-surface-header {
    min-height: 56px;
    padding: 8px 14px 7px 20px;
    border: 0;
    border-bottom: 1px solid var(--atlas-line);
    background: transparent;
}

.mv-impeccable .mv-surface-header h1,
.mv-impeccable .mv-surface-header-title {
    color: var(--atlas-ink);
    font-family: "Noto Serif TC", "PMingLiU", serif;
    letter-spacing: .08em;
}

.mv-impeccable .mv-subtabs,
.mv-impeccable .mv-journal-v2 > .mv-journal-nav {
    gap: 3px;
    padding: 5px 12px;
    border-bottom: 1px solid var(--atlas-line);
    background: transparent;
}

.mv-impeccable .mv-subtab.mv-cozy-button,
.mv-impeccable .mv-journal-nav-button.mv-cozy-button {
    min-height: 48px;
    padding: 5px 7px;
    border: 0;
    border-bottom: 2px solid transparent;
    background: transparent;
    color: var(--atlas-ink-soft);
    box-shadow: none;
}

.mv-impeccable .mv-subtab.mv-active,
.mv-impeccable .mv-subtab[aria-selected="true"],
.mv-impeccable .mv-journal-nav-button[aria-pressed="true"],
.mv-impeccable .mv-journal-nav-button[aria-selected="true"] {
    border-bottom-color: var(--atlas-route);
    background: color-mix(in srgb, var(--atlas-route) 7%, transparent);
    color: var(--atlas-route-dark);
}

/* Inventory is an object tray: art leads, metadata recedes. */
.mv-impeccable .mv-bag > .mv-journal-panel,
.mv-impeccable .mv-bag-stage,
.mv-impeccable .mv-bag-board {
    background: transparent;
}

.mv-impeccable .mv-bag-stage {
    border: 0;
    box-shadow: none;
}

.mv-impeccable .mv-bag-capacity {
    color: var(--atlas-ink-soft);
}

.mv-impeccable .mv-catchips {
    gap: 4px;
    padding-inline: 12px;
}

.mv-impeccable .mv-catchip.mv-cozy-button,
.mv-impeccable .mv-filterchips .mv-chip-toggle.mv-cozy-button {
    min-height: 44px;
    border: 1px solid transparent;
    border-bottom-color: var(--atlas-line);
    background: transparent;
    color: var(--atlas-ink-soft);
    box-shadow: none;
}

.mv-impeccable .mv-catchip.mv-active,
.mv-impeccable .mv-catchip[aria-pressed="true"],
.mv-impeccable .mv-filterchips .mv-chip-toggle[aria-pressed="true"] {
    border-color: var(--atlas-route);
    background: color-mix(in srgb, var(--atlas-route) 8%, transparent);
    color: var(--atlas-route-dark);
}

.mv-impeccable .mv-bag-board {
    padding: 10px 12px 28px;
}

.mv-impeccable .mv-bag .mv-item-grid {
    gap: 8px;
}

.mv-impeccable .mv-bag .mv-item-cell.mv-cozy-slot {
    min-height: 72px;
    border: 1px solid var(--atlas-line);
    border-bottom: 3px solid color-mix(in srgb, var(--atlas-herb) 72%, transparent);
    background:
        linear-gradient(145deg, color-mix(in srgb, var(--atlas-paper) 90%, transparent), color-mix(in srgb, var(--atlas-flax) 78%, transparent));
    clip-path: var(--atlas-cut-small);
    box-shadow: 0 4px 9px var(--atlas-shadow);
}

.mv-impeccable .mv-bag .mv-item-cell.mv-selected {
    border-color: var(--atlas-route);
    border-bottom-color: var(--atlas-route);
    background: color-mix(in srgb, var(--atlas-route) 9%, var(--atlas-paper));
}

.mv-impeccable .mv-bag .mv-item-icon .mv-icon,
.mv-impeccable .mv-bag .mv-item-icon > img {
    filter: saturate(.84) drop-shadow(0 3px 2px rgba(43,55,46,.2));
}

.mv-impeccable .mv-item-count {
    border: 0;
    background: var(--atlas-route);
    color: #fff8e8;
}

.mv-impeccable .mv-bag-selection.mv-cozy-panel {
    border: 1px solid var(--atlas-line);
    border-top: 3px solid var(--atlas-route);
    background: var(--atlas-paper);
    clip-path: var(--atlas-cut);
    box-shadow: 0 -5px 16px var(--atlas-shadow);
}

/* Backpack specificity reset: late CozyUi rules are deliberately strong in
   production, so this experiment names the real bag hierarchy explicitly. */
.mv-impeccable .mv-screen.mv-bag {
    background:
        linear-gradient(90deg, transparent 0 13px, color-mix(in srgb, var(--atlas-route) 42%, transparent) 13px 14px, transparent 14px),
        var(--atlas-flax);
}

.mv-impeccable .mv-bag .mv-bag-art {
    opacity: .2;
    filter: saturate(.48) contrast(.9) brightness(1.08);
    mix-blend-mode: multiply;
}

[data-theme="night"] .mv-impeccable .mv-bag .mv-bag-art {
    opacity: .16;
    filter: saturate(.42) brightness(.72);
    mix-blend-mode: screen;
}

.mv-impeccable .mv-bag .mv-bag-stage::after {
    background:
        repeating-linear-gradient(180deg, transparent 0 31px, color-mix(in srgb, var(--atlas-line) 30%, transparent) 31px 32px),
        linear-gradient(180deg, color-mix(in srgb, var(--atlas-paper) 72%, transparent), color-mix(in srgb, var(--atlas-flax) 88%, transparent));
}

.mv-impeccable .mv-bag > .mv-subtabs {
    top: 4px;
    gap: 1px;
    padding: 0 12px 3px 18px;
    border: 0;
    border-bottom: 1px solid var(--atlas-line);
    background: color-mix(in srgb, var(--atlas-flax) 94%, transparent);
    box-shadow: none;
}

.mv-impeccable .mv-bag > .mv-subtabs .mv-subtab.mv-cozy-button {
    min-height: 54px;
    padding: 5px 8px;
    border: 0 !important;
    border-bottom: 2px solid transparent !important;
    border-image: none !important;
    background: transparent !important;
    color: var(--atlas-ink-soft);
    text-shadow: none;
    box-shadow: none;
}

.mv-impeccable .mv-bag > .mv-subtabs .mv-subtab.mv-cozy-button.mv-active {
    border-bottom-color: var(--atlas-route) !important;
    background: color-mix(in srgb, var(--atlas-route) 7%, transparent) !important;
    color: var(--atlas-route-dark);
}

.mv-impeccable .mv-bag .mv-bag-capacity {
    top: 65px;
    min-height: 48px;
    padding: 6px 15px 6px 10px;
    border: 1px solid var(--atlas-line) !important;
    border-bottom: 3px solid var(--atlas-route) !important;
    border-image: none !important;
    background: color-mix(in srgb, var(--atlas-paper) 92%, transparent);
    clip-path: var(--atlas-cut-small);
    color: var(--atlas-ink);
    box-shadow: 0 3px 9px var(--atlas-shadow);
}

.mv-impeccable .mv-bag .mv-bag-capacity small {
    color: var(--atlas-ink-soft);
}

.mv-impeccable .mv-bag-stage > .mv-catchips {
    top: 116px;
    gap: 3px;
    padding: 3px 8px 7px;
}

.mv-impeccable .mv-bag-stage > .mv-catchips .mv-catchip {
    min-width: 58px;
    min-height: 46px;
    padding: 4px 6px;
    border: 0 !important;
    border-bottom: 2px solid var(--atlas-line) !important;
    border-image: none !important;
    border-radius: 0;
    background: color-mix(in srgb, var(--atlas-paper) 68%, transparent) !important;
    clip-path: var(--atlas-cut-small);
    color: var(--atlas-ink-soft);
    text-shadow: none;
    backdrop-filter: none;
}

.mv-impeccable .mv-bag-stage > .mv-catchips .mv-catchip.mv-active {
    border-bottom-color: var(--atlas-route) !important;
    background: color-mix(in srgb, var(--atlas-route) 10%, var(--atlas-paper)) !important;
    color: var(--atlas-route-dark);
}

.mv-impeccable .mv-bag .mv-bag-board {
    left: 8%;
    right: 8%;
}

.mv-impeccable .mv-bag .mv-item-cell {
    width: 64px;
    height: 72px;
    min-height: 72px;
    padding: 7px 5px;
    border: 1px solid var(--atlas-line) !important;
    border-bottom: 3px solid var(--atlas-herb) !important;
    border-image: none !important;
    background:
        linear-gradient(145deg, color-mix(in srgb, var(--atlas-paper) 92%, transparent), color-mix(in srgb, var(--atlas-flax) 76%, transparent)) !important;
    clip-path: var(--atlas-cut-small);
    box-shadow: 0 4px 9px var(--atlas-shadow);
}

.mv-impeccable .mv-bag .mv-item-cell.mv-selected {
    border-color: var(--atlas-route) !important;
    border-bottom-color: var(--atlas-route) !important;
    border-image: none !important;
    background: color-mix(in srgb, var(--atlas-route) 9%, var(--atlas-paper)) !important;
    transform: translateY(-2px);
    box-shadow: 0 5px 12px var(--atlas-shadow);
}

.mv-impeccable .mv-bag .mv-item-ghost {
    width: 64px;
    height: 72px;
    min-height: 72px;
    border: 1px dashed color-mix(in srgb, var(--atlas-line) 75%, transparent) !important;
    border-image: none !important;
    background: color-mix(in srgb, var(--atlas-paper) 28%, transparent) !important;
    border-radius: 0;
    opacity: .58;
}

.mv-impeccable .mv-bag .mv-bag-selection {
    left: 8px;
    right: 8px;
    bottom: 6px;
    padding: 10px 14px calc(9px + var(--mv-safe-bottom));
    border: 1px solid var(--atlas-line) !important;
    border-top: 3px solid var(--atlas-route) !important;
    border-image: none !important;
    background: var(--atlas-paper) !important;
    clip-path: var(--atlas-cut);
    color: var(--atlas-ink);
    box-shadow: 0 -5px 16px var(--atlas-shadow);
}

.mv-impeccable .mv-bag .mv-bag-selection-idle,
.mv-impeccable .mv-bag .mv-bag-selected-copy span,
.mv-impeccable .mv-bag .mv-bag-details > summary,
.mv-impeccable .mv-bag .mv-bag-tooltip {
    color: var(--atlas-ink-soft);
}

.mv-impeccable .mv-bag .mv-bag-selection-close,
.mv-impeccable .mv-bag .mv-bag-selection .mv-item-action {
    min-height: 46px;
    border: 1px solid var(--atlas-line) !important;
    border-image: none !important;
    background: transparent !important;
    clip-path: var(--atlas-cut-small);
    color: var(--atlas-ink);
    text-shadow: none;
}

.mv-impeccable .mv-bag .mv-bag-selection .mv-item-action-primary,
.mv-impeccable .mv-bag .mv-bag-selection .mv-item-action.mv-on {
    border-color: var(--atlas-route) !important;
    background: var(--atlas-route) !important;
    color: #fff8e8;
}

/* Journal is a continuous route trace rather than stacked report cards. */
.mv-impeccable .mv-journal-view {
    background: transparent;
}

.mv-impeccable .mv-journal-view > .mv-journal-panel {
    padding: 6px 12px 26px 24px;
    background:
        linear-gradient(90deg, transparent 0 10px, color-mix(in srgb, var(--atlas-route) 52%, transparent) 10px 11px, transparent 11px);
}

.mv-impeccable .mv-journal-log-summary.mv-cozy-panel,
.mv-impeccable .mv-first-trail.mv-cozy-panel {
    border: 1px solid var(--atlas-line);
    border-bottom: 3px solid var(--atlas-route);
    background: color-mix(in srgb, var(--atlas-paper) 88%, transparent);
    clip-path: var(--atlas-cut);
    box-shadow: 0 4px 10px var(--atlas-shadow);
}

.mv-impeccable .mv-journal-log-summary strong {
    color: var(--atlas-ink);
}

.mv-impeccable .mv-journal-log-summary small {
    color: var(--atlas-ink-soft);
}

.mv-impeccable .mv-journal-log-summary .mv-journal-entry-count {
    border-radius: 0;
    background: color-mix(in srgb, var(--atlas-route) 18%, var(--atlas-paper));
    color: var(--atlas-route-dark);
}

.mv-impeccable .mv-harvest-row {
    position: relative;
    padding-left: 8px;
}

.mv-impeccable .mv-harvest-row::before {
    content: "";
    position: absolute;
    left: -9px;
    top: 22px;
    width: 8px;
    height: 8px;
    border: 2px solid var(--atlas-route);
    border-radius: 50%;
    background: var(--atlas-flax);
}

.mv-impeccable .mv-harvest-card.mv-cozy-panel {
    min-height: 54px;
    padding: 8px 10px;
    border: 0;
    border-bottom: 1px solid var(--atlas-line);
    background: transparent;
    color: var(--atlas-ink);
    box-shadow: none;
}

.mv-impeccable .mv-journal-v2 > .mv-journal-nav .mv-journal-nav-button.mv-cozy-button {
    min-height: 50px;
    padding: 5px 8px;
    border: 0 !important;
    border-bottom: 2px solid transparent !important;
    border-image: none !important;
    background: transparent !important;
    color: var(--atlas-ink-soft);
    text-shadow: none;
    box-shadow: none;
}

.mv-impeccable .mv-journal-v2 > .mv-journal-nav .mv-journal-nav-button.mv-cozy-button.mv-active,
.mv-impeccable .mv-journal-v2 > .mv-journal-nav .mv-journal-nav-button.mv-cozy-button[aria-pressed="true"] {
    border-bottom-color: var(--atlas-route) !important;
    background: color-mix(in srgb, var(--atlas-route) 7%, transparent) !important;
    color: var(--atlas-route-dark);
}

.mv-impeccable .mv-first-trail-step.mv-cozy-slot,
.mv-impeccable .mv-quest.mv-cozy-panel,
.mv-impeccable .mv-quest-task.mv-cozy-slot,
.mv-impeccable .mv-bestiary-row.mv-cozy-button {
    border-image: none;
    border: 1px solid var(--atlas-line);
    background: color-mix(in srgb, var(--atlas-paper) 84%, transparent);
    color: var(--atlas-ink);
    box-shadow: none;
}

/* Onboarding is the half road pass: the first object the player owns. */
.mv-impeccable .mv-sheet-overlay.mv-rename-sheet {
    align-items: center;
    padding: 18px;
    background:
        linear-gradient(rgba(21,39,43,.28), rgba(21,39,43,.62)),
        url("/resources/maps/styles/village-route-atlas-v1.png") center / cover no-repeat;
}

.mv-impeccable .mv-rename-sheet > .mv-sheet.mv-cozy-panel {
    position: relative;
    width: min(100%, 344px);
    max-width: 344px;
    padding: 94px 24px 23px;
    border: 1px solid rgba(82,78,56,.46);
    border-top: 4px solid var(--atlas-route);
    background:
        linear-gradient(90deg, transparent 0 23px, color-mix(in srgb, var(--atlas-route) 32%, transparent) 23px 24px, transparent 24px),
        var(--atlas-paper);
    clip-path: polygon(0 0, 81% 0, 81% 10px, 100% 10px, 100% 100%, 17% 100%, 17% calc(100% - 10px), 0 calc(100% - 10px));
    color: var(--atlas-ink);
    box-shadow: 0 18px 50px rgba(11,27,31,.42);
}

.mv-impeccable .mv-rename-sheet > .mv-sheet::before {
    content: "半張路票";
    position: absolute;
    top: 24px;
    left: 24px;
    padding: 6px 11px;
    border: 1px solid var(--atlas-route);
    color: var(--atlas-route-dark);
    font-family: "Noto Serif TC", "PMingLiU", serif;
    font-size: 15px;
    font-weight: 900;
    letter-spacing: .16em;
    transform: rotate(-3deg);
}

.mv-impeccable .mv-rename-sheet .mv-sheet-grip {
    display: none;
}

.mv-impeccable .mv-rename-title {
    color: var(--atlas-ink);
    font-family: "Noto Serif TC", "PMingLiU", serif;
    font-size: 25px;
    letter-spacing: .06em;
}

.mv-impeccable .mv-rename-hint {
    color: var(--atlas-ink-soft);
    font-size: 13px;
    line-height: 1.6;
}

.mv-impeccable .mv-rename-input.mv-cozy-slot {
    min-height: 54px;
    padding: 8px 10px;
    border: 0;
    border-bottom: 2px solid var(--atlas-route);
    background: color-mix(in srgb, var(--atlas-flax) 62%, transparent);
    color: var(--atlas-ink);
    font-family: "Noto Serif TC", "PMingLiU", serif;
    font-size: 21px;
    text-align: left;
}

.mv-impeccable .mv-rename-actions {
    grid-template-columns: 1fr 1.35fr;
    margin-top: 13px;
}

.mv-impeccable .mv-rename-actions .mv-cozy-button {
    min-height: 50px;
    border: 1px solid var(--atlas-line);
    background: transparent;
    clip-path: var(--atlas-cut-small);
    color: var(--atlas-ink-soft);
}

.mv-impeccable .mv-rename-actions .mv-cozy-button-primary {
    border-color: var(--atlas-route);
    background: var(--atlas-route);
    color: #fff8e8;
}

.mv-impeccable .mv-offline-close.mv-cozy-button-primary,
.mv-impeccable .mv-defeat-close.mv-cozy-button-primary {
    border: 1px solid var(--atlas-route);
    background: var(--atlas-route-dark);
    clip-path: var(--atlas-cut-small);
    color: var(--atlas-flax);
    box-shadow: 0 4px 10px var(--atlas-shadow);
}

/* The Atlas reset removes the raster slot frame; replace its transparent
   six-pixel border so equipment art remains geometrically centered. */
.mv-impeccable .mv-pd-slot.mv-cozy-slot {
    width: 48px;
    height: 48px;
    display: grid;
    place-items: center;
    padding: 5px;
    border: 1px solid var(--atlas-line);
    background: color-mix(in srgb, var(--atlas-paper) 86%, transparent);
    clip-path: var(--atlas-cut-small);
    box-shadow: 0 3px 8px var(--atlas-shadow);
}

.mv-impeccable .mv-pd-slot.mv-cozy-slot:disabled {
    opacity: .82;
}

.mv-impeccable .mv-pd-slot.mv-cozy-slot > .mv-icon,
.mv-impeccable .mv-pd-slot.mv-cozy-slot > .mv-pd-slot-empty {
    margin: 0;
    place-self: center;
}

.mv-impeccable .mv-pd-slot-empty {
    width: 36px;
    height: 36px;
    display: grid;
    place-items: center;
}

.mv-impeccable .mv-pd-slot-empty > .mv-icon {
    display: block;
    margin: 0;
}

/* Reputation is a visible travel ledger, not a row of disappearing text chips. */
.mv-impeccable .mv-pd-reputation-card.mv-cozy-panel {
    padding: 11px;
    border: 1px solid var(--atlas-line);
    border-top: 3px solid var(--atlas-route);
    background: color-mix(in srgb, var(--atlas-paper) 94%, transparent);
    clip-path: var(--atlas-cut-small);
    color: var(--atlas-ink);
    box-shadow: 0 5px 14px var(--atlas-shadow);
}

.mv-impeccable .mv-pd-reputation-heading > .mv-icon {
    flex: none;
}

.mv-impeccable .mv-pd-reputation-heading h4 {
    color: var(--atlas-route-dark);
    letter-spacing: .04em;
}

.mv-impeccable .mv-pd-reputation-hint {
    color: var(--atlas-ink-soft);
}

.mv-impeccable .mv-pd-reputation-tile.mv-cozy-slot {
    border: 1px solid var(--atlas-line);
    border-bottom: 3px solid color-mix(in srgb, var(--atlas-route) 52%, var(--atlas-line));
    background: color-mix(in srgb, var(--atlas-paper) 88%, transparent);
    clip-path: var(--atlas-cut-small);
    color: var(--atlas-ink);
    box-shadow: 0 3px 8px var(--atlas-shadow);
}

.mv-impeccable .mv-pd-reputation-tile.mv-has-reputation {
    border-bottom-color: var(--atlas-route);
    background: color-mix(in srgb, var(--atlas-route) 8%, var(--atlas-paper));
}

.mv-impeccable .mv-pd-reputation-label {
    color: var(--atlas-ink-soft);
}

.mv-impeccable .mv-pd-reputation-value {
    color: var(--atlas-route-dark);
}

/* Shared overlays retain their information hierarchy without game-asset frames. */
.mv-impeccable .mv-sheet.mv-cozy-panel,
.mv-impeccable .mv-offline-card.mv-cozy-panel,
.mv-impeccable .mv-defeat-card.mv-cozy-panel,
.mv-impeccable .mvd-modal.mv-cozy-panel,
.mv-impeccable .mvcs-modal.mv-cozy-panel {
    border: 1px solid var(--atlas-line);
    border-top: 3px solid var(--atlas-route);
    background: var(--atlas-paper);
    clip-path: var(--atlas-cut);
    color: var(--atlas-ink);
    box-shadow: 0 -10px 30px var(--atlas-shadow);
}

.mv-impeccable .mvd-heading h2,
.mv-impeccable .mvcs-modal h2,
.mv-impeccable .mvd-message,
.mv-impeccable .mvcs-card-title {
    color: var(--atlas-ink);
}

.mv-impeccable .mvd-detail,
.mv-impeccable .mvcs-note {
    color: var(--atlas-ink-soft);
    font-size: 14px;
    line-height: 1.6;
    opacity: 1;
}

.mv-impeccable .mvd-requirement,
.mv-impeccable .mvcs-required {
    color: var(--atlas-route-dark);
    line-height: 1.45;
}

.mv-impeccable .mvcs-card.mv-cozy-panel {
    padding: 11px;
    border: 1px solid var(--atlas-line);
    background: color-mix(in srgb, var(--atlas-flax) 74%, var(--atlas-paper));
    clip-path: var(--atlas-cut-small);
    color: var(--atlas-ink);
    box-shadow: 0 3px 8px var(--atlas-shadow);
}

.mv-impeccable .mvcs-card td {
    color: var(--atlas-ink);
    overflow-wrap: anywhere;
}

.mv-impeccable .mvcs-card td:first-child {
    color: var(--atlas-ink-soft);
}

.mv-impeccable .mvcs-btn.mv-cozy-button,
.mv-impeccable .mv-more-panel[data-more-panel="saves"] :is(.mvcs-btn, .mv-settings-button).mv-cozy-button {
    min-height: 50px;
    padding: 10px 14px;
    border: 1px solid var(--atlas-line);
    border-bottom: 3px solid var(--atlas-water);
    background: var(--atlas-flax);
    clip-path: var(--atlas-cut-small);
    color: var(--atlas-ink);
    box-shadow: 0 3px 8px var(--atlas-shadow);
    font-size: 14px;
    font-weight: 800;
    line-height: 1.35;
    text-shadow: none;
}

.mv-impeccable .mvcs-btn.mv-cozy-button-primary,
.mv-impeccable .mvcs-btn.mvcs-btn-primary,
.mv-impeccable .mv-more-panel[data-more-panel="saves"] :is(.mvcs-btn, .mv-settings-button).mv-cozy-button-primary {
    border-color: var(--atlas-route);
    border-bottom-color: var(--atlas-route-dark);
    background: var(--atlas-route-dark);
    color: var(--atlas-flax);
}

.mv-impeccable .mvd-input.mv-cozy-slot {
    min-height: 52px;
    padding: 9px 12px;
    border: 1px solid var(--atlas-line);
    border-bottom: 3px solid var(--atlas-route);
    background: var(--atlas-flax);
    clip-path: var(--atlas-cut-small);
    color: var(--atlas-ink);
    font-size: 16px;
    text-align: left;
}

.mv-impeccable .mvcs-btn.mvd-danger,
.mv-impeccable .mv-more-panel[data-more-panel="saves"] .mv-settings-button.mv-settings-danger {
    border-color: #a34442;
    border-bottom-color: #642d2d;
    background: #7f3737;
    color: #fff8e8 !important;
}

.mv-impeccable .mvcs-btn.mv-cozy-button:disabled,
.mv-impeccable .mv-more-panel[data-more-panel="saves"] :is(.mvcs-btn, .mv-settings-button).mv-cozy-button:disabled {
    border-color: color-mix(in srgb, var(--atlas-line) 58%, transparent);
    background: color-mix(in srgb, var(--atlas-flax) 48%, transparent);
    color: color-mix(in srgb, var(--atlas-ink) 66%, transparent);
    box-shadow: none;
    opacity: .82;
}

.mv-impeccable .mvcs-btn.mvd-danger:disabled {
    color: color-mix(in srgb, var(--atlas-ink) 66%, transparent) !important;
}

.mv-impeccable .mv-sheet-grip {
    width: 42px;
    height: 4px;
    border-radius: 0;
    background: var(--atlas-route);
}

.mv-impeccable .mv-toast.mv-cozy-panel,
.mv-impeccable .mvcs-toast.mv-cozy-panel {
    border: 1px solid var(--atlas-line);
    border-bottom: 3px solid var(--atlas-route);
    background: var(--atlas-paper);
    clip-path: var(--atlas-cut-small);
    color: var(--atlas-ink);
    box-shadow: 0 5px 14px var(--atlas-shadow);
}

@media (max-width: 370px), (max-height: 740px) {
    .mv-impeccable .mv-status.mv-cozy-panel {
        min-height: 60px;
        padding-inline: 7px;
    }

    .mv-impeccable .mv-route-ledger.mv-cozy-panel {
        padding-block: 6px 7px;
    }

    .mv-impeccable .mv-route-note {
        display: none;
    }

    .mv-impeccable .mv-map-node-pin.mv-cozy-slot {
        width: 48px;
        height: 48px;
    }

    .mv-impeccable .mv-map-node-label.mv-cozy-button {
        min-height: 27px;
        padding-inline: 7px;
    }

    .mv-impeccable .mv-tabbar {
        min-height: 64px;
        padding-inline: 2px;
    }

    .mv-impeccable .mv-tab {
        min-height: 54px;
        font-size: 10px;
    }

    .mv-impeccable .mv-dlg-head {
        min-height: 96px;
    }

    .mv-impeccable .mv-dlg-avatar.mv-cozy-slot {
        width: 82px;
        height: 96px;
    }

    .mv-impeccable .mv-dlg-answer.mv-cozy-panel {
        --atlas-dialogue-rule-offset: 11px;
        padding: 12px 13px 14px 16px;
        font-size: 15px;
    }

    .mv-impeccable .mv-dlg-option.mv-cozy-button {
        min-height: 46px;
        padding-block: 6px;
        font-size: 13px;
    }

    .mv-impeccable .mv-pd-slot.mv-cozy-slot {
        width: 44px;
        height: 44px;
        padding: 3px;
    }

    .mv-impeccable .mvd-actions {
        grid-template-columns: 1fr;
    }
}

/* ═══════════════════════════════════════════════════════════════════
   Wave78: returning-player Skills overview
   The growth yard remains the visual owner. The default view is a
   picture-led overview; one category opens one bounded skill ledger.
   ═══════════════════════════════════════════════════════════════════ */

.mv-impeccable .mv-skills.mv-has-skills.mv-skills-overview .mv-skills-hero {
    flex: 1 1 auto;
    min-height: 420px;
    background-position: center;
}

.mv-impeccable .mv-skills.mv-has-skills.mv-skills-overview .mv-skill-path-preview {
    display: block;
}

.mv-impeccable .mv-skills.mv-skills-overview .mv-skills-deck.mv-cozy-panel {
    flex: 0 0 auto;
    gap: 0;
    padding-bottom: calc(10px + min(var(--mv-safe-bottom), 10px));
}

.mv-impeccable .mv-skills .mv-skill-list[hidden] {
    display: none;
}

@media (max-height: 740px) {
    .mv-impeccable .mv-skills.mv-has-skills.mv-skills-overview .mv-skills-hero {
        min-height: 392px;
    }

    .mv-impeccable .mv-skills.mv-skills-overview .mv-skills-hero-copy p {
        display: none;
    }
}

@media (prefers-reduced-motion: reduce) {
    .mv-impeccable *,
    .mv-impeccable *::before,
    .mv-impeccable *::after {
        scroll-behavior: auto !important;
        animation-duration: .01ms !important;
        animation-iteration-count: 1 !important;
        transition-duration: .01ms !important;
    }
}

/* ═══════════════════════════════════════════════════════════════════
   Wave 50: Living World Diorama
   David's 2026-08-23 verdict was that the atlas chrome read as collage.
   The world art remains the stage; landmarks and edge HUD now share one
   soft, translucent game material instead of clipped paper pieces.
   ═══════════════════════════════════════════════════════════════════ */

.mv-impeccable .mv-status.mv-cozy-panel {
    border: 0;
    border-radius: 0 0 18px 18px;
    background:
        linear-gradient(180deg, rgba(255, 250, 231, .94), rgba(239, 232, 198, .82));
    box-shadow: 0 5px 18px rgba(35, 55, 49, .16);
    backdrop-filter: blur(12px) saturate(1.08);
    -webkit-backdrop-filter: blur(12px) saturate(1.08);
}

[data-theme="night"] .mv-impeccable .mv-status.mv-cozy-panel {
    background:
        linear-gradient(180deg, rgba(20, 43, 55, .96), rgba(31, 61, 68, .84));
    box-shadow: 0 5px 20px rgba(3, 14, 21, .42);
}

.mv-impeccable .mv-status .mv-vital.mv-cozy-control {
    border-left-color: color-mix(in srgb, var(--atlas-herb) 30%, transparent);
}

.mv-impeccable .mv-status .mv-vital .mv-bar,
.mv-impeccable .mv-status .mv-vital .mv-bar-fill {
    border-radius: 999px;
}

.mv-impeccable .mv-route-ledger.mv-cozy-panel {
    display: grid;
    grid-template-columns: 24px minmax(0, 1fr);
    grid-template-rows: 24px 16px;
    align-items: center;
    width: min(100%, 354px);
    max-height: 54px;
    margin-inline: auto;
    padding: 6px 11px 6px;
    overflow: hidden;
    border: 0;
    border-radius: 0 0 18px 18px;
    background:
        linear-gradient(180deg, rgba(249, 244, 213, .88), rgba(224, 232, 200, .76));
    clip-path: none;
    box-shadow: 0 6px 20px rgba(28, 50, 46, .2);
    backdrop-filter: blur(10px) saturate(1.08);
    -webkit-backdrop-filter: blur(10px) saturate(1.08);
}

[data-theme="night"] .mv-impeccable .mv-route-ledger.mv-cozy-panel {
    background:
        linear-gradient(180deg, rgba(25, 56, 65, .9), rgba(35, 69, 70, .78));
    box-shadow: 0 7px 22px rgba(2, 14, 20, .4);
}

.mv-impeccable .mv-route-ledger-title {
    grid-column: 1;
    grid-row: 1;
    justify-content: center;
    width: 24px;
    min-width: 24px;
}

.mv-impeccable .mv-route-ledger-title > span:last-child {
    position: absolute;
    width: 1px;
    height: 1px;
    overflow: hidden;
    clip-path: inset(50%);
}

.mv-impeccable .mv-route-ledger-mark {
    width: 22px;
    height: 22px;
    border: 0;
    border-radius: 50%;
    background:
        radial-gradient(circle at 34% 50%, var(--atlas-route) 0 3px, transparent 4px),
        radial-gradient(circle at 69% 50%, var(--atlas-herb) 0 3px, transparent 4px),
        color-mix(in srgb, var(--atlas-paper) 38%, transparent);
    box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--atlas-route) 55%, transparent);
    transform: none;
}

.mv-impeccable .mv-route-trail {
    grid-column: 2;
    grid-row: 1;
    margin: 0;
    gap: 3px;
}

.mv-impeccable .mv-route-step {
    gap: 0;
}

.mv-impeccable .mv-route-step::before {
    top: 6px;
    height: 2px;
    border-radius: 999px;
}

.mv-impeccable .mv-route-dot {
    width: 12px;
    height: 12px;
    border-width: 2px;
    border-radius: 50%;
    background: color-mix(in srgb, var(--atlas-paper) 55%, transparent);
}

.mv-impeccable .mv-route-name {
    font-size: 10px;
    line-height: 1;
}

.mv-impeccable .mv-route-note {
    display: block;
    grid-column: 1 / -1;
    grid-row: 2;
    min-width: 0;
    margin: 0;
    overflow: hidden;
    color: var(--atlas-ink);
    font-size: 10px;
    font-weight: 700;
    line-height: 16px;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.mv-impeccable .mv-map-node {
    min-width: 64px;
    min-height: 64px;
    gap: 0;
    filter: drop-shadow(0 5px 5px rgba(32, 54, 43, .2));
}

.mv-impeccable .mv-map-node-pin.mv-cozy-slot {
    width: 52px;
    height: 52px;
    border: 0;
    border-radius: 50%;
    background:
        radial-gradient(circle, rgba(255, 249, 218, .82) 0 40%, rgba(255, 244, 195, .28) 41% 58%, transparent 72%);
    clip-path: none;
    box-shadow: none;
    animation: mv-world-hotspot-breathe 2.8s ease-in-out infinite;
}

.mv-impeccable .mv-map-node-pin .mv-map-node-pin-img {
    width: 40px !important;
    height: 40px !important;
    filter: saturate(.94) contrast(1.04) drop-shadow(0 2px 2px rgba(27, 48, 39, .35));
}

.mv-impeccable .mv-map-node-label.mv-cozy-button {
    min-height: 25px;
    margin-top: -7px;
    padding: 4px 10px 5px;
    border: 0;
    border-radius: 12px;
    background: rgba(43, 64, 51, .82);
    clip-path: none;
    color: #fff7d9;
    font-size: 11px;
    font-weight: 850;
    line-height: 1;
    text-shadow: 0 1px 2px rgba(8, 20, 14, .42);
    box-shadow: 0 4px 10px rgba(24, 45, 35, .2);
    backdrop-filter: blur(5px);
    -webkit-backdrop-filter: blur(5px);
}

[data-theme="night"] .mv-impeccable .mv-map-node-label.mv-cozy-button {
    background: rgba(20, 45, 54, .88);
    color: #f8ecc8;
}

.mv-impeccable .mv-map-node[aria-expanded="true"] .mv-map-node-pin {
    background:
        radial-gradient(circle, rgba(255, 246, 186, .98) 0 43%, rgba(230, 143, 88, .38) 44% 61%, transparent 74%);
    transform: translateY(-2px) scale(1.08);
}

.mv-impeccable .mv-map-node[aria-expanded="true"] .mv-map-node-label {
    background: rgba(137, 71, 50, .92);
    color: #fff8dc;
    transform: translateY(-2px);
}

.mv-impeccable .mv-map-node[aria-disabled="true"] .mv-map-node-pin,
.mv-impeccable .mv-map-node.mv-disabled .mv-map-node-pin {
    border: 0;
    background:
        radial-gradient(circle, rgba(226, 226, 205, .58) 0 40%, rgba(196, 204, 186, .18) 41% 58%, transparent 72%);
    opacity: .64;
}

.mv-impeccable .mv-map-node[aria-disabled="true"] .mv-map-node-label,
.mv-impeccable .mv-map-node.mv-disabled .mv-map-node-label {
    border: 0;
    background: rgba(61, 69, 62, .58);
    color: rgba(255, 249, 224, .76);
    opacity: .84;
}

@keyframes mv-world-hotspot-breathe {
    0%, 100% { transform: translateY(0) scale(1); filter: brightness(1); }
    50% { transform: translateY(-2px) scale(1.035); filter: brightness(1.08); }
}

.mv-impeccable .mv-tabbar {
    min-height: 68px;
    border: 0;
    border-radius: 20px 20px 0 0;
    background:
        linear-gradient(180deg, rgba(248, 242, 213, .88), rgba(231, 225, 191, .96));
    box-shadow: 0 -6px 22px rgba(31, 52, 45, .16);
    backdrop-filter: blur(12px) saturate(1.08);
    -webkit-backdrop-filter: blur(12px) saturate(1.08);
}

[data-theme="night"] .mv-impeccable .mv-tabbar {
    background:
        linear-gradient(180deg, rgba(35, 65, 72, .9), rgba(20, 43, 55, .98));
    box-shadow: 0 -6px 24px rgba(2, 12, 18, .44);
}

.mv-impeccable .mv-tabbar::before {
    opacity: 0;
}

.mv-impeccable .mv-tab-icon {
    border: 0;
    border-radius: 50%;
    background: transparent;
}

.mv-impeccable .mv-tab.mv-active .mv-tab-icon,
[data-theme="night"] .mv-impeccable .mv-tab.mv-active .mv-tab-icon {
    border: 0;
    border-radius: 50%;
    background:
        radial-gradient(circle, rgba(255, 241, 181, .92) 0 42%, rgba(224, 134, 82, .2) 43% 65%, transparent 72%);
    box-shadow: none;
    transform: translateY(-3px) scale(1.12);
}

.mv-impeccable .mv-tab:active {
    transform: translateY(1px) scale(.97);
}

@media (max-width: 370px), (max-height: 740px) {
    .mv-impeccable .mv-route-ledger.mv-cozy-panel {
        grid-template-rows: 23px 15px;
        max-height: 50px;
        padding-block: 5px;
    }

    .mv-impeccable .mv-route-note {
        display: block;
        font-size: 9px;
        line-height: 15px;
    }

    .mv-impeccable .mv-map-node-pin.mv-cozy-slot {
        width: 48px;
        height: 48px;
    }

    .mv-impeccable .mv-map-node-label.mv-cozy-button {
        min-height: 24px;
        padding: 4px 8px;
    }
}

/* ═══════════════════════════════════════════════════════════════════
   Wave 51: Clean-cel living slice
   Village, named cast, speech chrome, and the millers' world state now
   share one smooth digital rendering grammar. No paper simulation.
   ═══════════════════════════════════════════════════════════════════ */

.mv-impeccable .mv-village-map[data-location="Village"][data-art-state="village-quiet"] .mv-village-map-img {
    filter: saturate(.9) brightness(.94) contrast(1.025);
}

.mv-impeccable .mv-village-map[data-location="Village"][data-art-state="village-early"] .mv-village-map-img {
    filter: saturate(.97) brightness(.98) contrast(1.025);
}

.mv-impeccable .mv-village-map[data-location="Village"][data-art-state="village-mid"] .mv-village-map-img {
    filter: saturate(1) brightness(1) contrast(1.02);
}

.mv-impeccable .mv-village-map[data-location="Village"][data-art-state="village-mature"] .mv-village-map-img {
    filter: saturate(1.04) brightness(1.01) contrast(1.02);
}

.mv-impeccable .mv-dlg-avatar-art[data-portrait],
.mv-impeccable .mv-dlg-task-millers,
.mv-impeccable .mv-map-task-seal-portrait {
    background-image: url("/resources/characters/story-opening-cast-clean-cel-v2.webp");
    background-repeat: no-repeat;
    background-size: 200% 200%;
}

.mv-impeccable .mv-dlg-task-millers,
.mv-impeccable .mv-map-task-seal-portrait {
    background-position: 100% 100%;
}

.mv-impeccable .mv-scene[data-mode="dialogue"][data-dialogue-key="village elder"],
.mv-impeccable .mv-scene[data-mode="dialogue"][data-dialogue-key="old craftsman"],
.mv-impeccable .mv-scene[data-mode="dialogue"][data-dialogue-key="village guard"],
.mv-impeccable .mv-scene[data-mode="dialogue"][data-dialogue-key="village millers"] {
    background:
        linear-gradient(180deg, rgba(20, 48, 47, .04) 0%, rgba(20, 48, 47, .18) 50%, rgba(22, 43, 42, .5) 100%),
        url("/output/art-direction/wave64-village-map/k4-state-family-v1/runtime/village-k4-quiet-world-v1.png") center 44% / cover no-repeat;
}

.mv-impeccable .mv-scene[data-mode="dialogue"][data-world-art-state="village-mid"]:is([data-dialogue-key="village elder"], [data-dialogue-key="old craftsman"], [data-dialogue-key="village guard"], [data-dialogue-key="village millers"]) {
    background-image:
        linear-gradient(180deg, rgba(20, 48, 47, .04) 0%, rgba(20, 48, 47, .18) 50%, rgba(22, 43, 42, .5) 100%),
        url("/output/art-direction/wave64-village-map/k4-state-family-v1/runtime/village-k4-mid-world-v1.png");
}

.mv-impeccable .mv-scene[data-mode="dialogue"][data-world-art-state="village-mature"]:is([data-dialogue-key="village elder"], [data-dialogue-key="old craftsman"], [data-dialogue-key="village guard"], [data-dialogue-key="village millers"]) {
    background-image:
        linear-gradient(180deg, rgba(20, 48, 47, .04) 0%, rgba(20, 48, 47, .18) 50%, rgba(22, 43, 42, .5) 100%),
        url("/output/art-direction/wave64-village-map/k4-state-family-v1/runtime/village-k4-mature-world-v1.png");
}

.mv-impeccable .mv-scene[data-mode="dialogue"][data-dialogue-key="village elder"]::before,
.mv-impeccable .mv-scene[data-mode="dialogue"][data-dialogue-key="old craftsman"]::before,
.mv-impeccable .mv-scene[data-mode="dialogue"][data-dialogue-key="village guard"]::before,
.mv-impeccable .mv-scene[data-mode="dialogue"][data-dialogue-key="village millers"]::before {
    background: linear-gradient(180deg, rgba(255, 255, 239, .08), rgba(16, 37, 38, .12) 45%, rgba(13, 32, 34, .44));
}

.mv-impeccable .mv-scene[data-mode="dialogue"]:is([data-dialogue-key="village elder"], [data-dialogue-key="old craftsman"], [data-dialogue-key="village guard"], [data-dialogue-key="village millers"]) > .mv-dialogue.mv-cozy-panel {
    gap: 9px;
    padding: 10px 11px 9px;
}

.mv-impeccable .mv-scene[data-mode="dialogue"]:is([data-dialogue-key="village elder"], [data-dialogue-key="old craftsman"], [data-dialogue-key="village guard"], [data-dialogue-key="village millers"]) .mv-dlg-head {
    align-items: flex-start;
    min-height: 148px;
    gap: 9px;
    padding: 0;
    border: 0;
}

.mv-impeccable .mv-scene[data-mode="dialogue"]:is([data-dialogue-key="village elder"], [data-dialogue-key="old craftsman"], [data-dialogue-key="village guard"], [data-dialogue-key="village millers"]) .mv-dlg-identity {
    display: flex;
    flex: 1 1 auto;
    flex-direction: column;
    align-items: flex-start;
    min-width: 0;
    max-width: calc(100% - 57px);
    gap: 6px;
}

.mv-impeccable .mv-scene[data-mode="dialogue"]:is([data-dialogue-key="village elder"], [data-dialogue-key="old craftsman"], [data-dialogue-key="village guard"], [data-dialogue-key="village millers"]) .mv-dlg-avatar.mv-cozy-slot {
    width: 112px;
    height: 112px;
    overflow: hidden;
    border: 2px solid rgba(255, 248, 210, .92);
    border-radius: 24px 24px 18px 18px;
    background: #dcebc8;
    clip-path: none;
    box-shadow: 0 9px 24px rgba(13, 35, 34, .3);
}

.mv-impeccable .mv-scene[data-mode="dialogue"]:is([data-dialogue-key="village elder"], [data-dialogue-key="old craftsman"], [data-dialogue-key="village guard"], [data-dialogue-key="village millers"]) .mv-dlg-head h2 {
    display: flex;
    flex: none;
    align-items: center;
    justify-content: center;
    width: fit-content;
    min-width: 112px;
    max-width: 100%;
    min-height: 30px;
    margin: 0;
    padding: 4px 10px;
    border: 1px solid rgba(255, 248, 210, .38);
    border-radius: 9px;
    background: rgba(31, 65, 59, .72);
    color: rgba(255, 248, 220, .94);
    font-family: inherit;
    font-size: 14px;
    font-weight: 760;
    letter-spacing: .025em;
    line-height: 1.15;
    overflow-wrap: anywhere;
    text-align: center;
    text-shadow: 0 1px 1px rgba(5, 20, 18, .32);
    box-shadow: 0 3px 9px rgba(13, 35, 34, .16);
}

.mv-impeccable .mv-scene[data-mode="dialogue"]:is([data-dialogue-key="village elder"], [data-dialogue-key="old craftsman"], [data-dialogue-key="village guard"], [data-dialogue-key="village millers"]) .mv-dlg-visible-exit.mv-cozy-button {
    align-self: flex-start;
    width: 48px;
    min-width: 48px;
    height: 48px;
    min-height: 48px;
    margin-bottom: 0;
    padding: 0;
    border: 0;
    border-radius: 14px;
    background: transparent;
    clip-path: none;
    color: #fff8dc;
    box-shadow: none;
}

.mv-impeccable .mv-scene[data-mode="dialogue"]:is([data-dialogue-key="village elder"], [data-dialogue-key="old craftsman"], [data-dialogue-key="village guard"], [data-dialogue-key="village millers"]) .mv-dlg-answer.mv-cozy-panel {
    align-self: start;
    width: 100%;
    height: fit-content;
    max-height: 100%;
    min-height: 0;
    padding: 14px 15px;
    border: 1px solid rgba(151, 119, 66, .38);
    border-radius: 18px;
    background: rgba(255, 250, 224, .94);
    clip-path: none;
    color: #213d39;
    font-family: inherit;
    font-size: 16px;
    line-height: 1.62;
    box-shadow: 0 8px 22px rgba(64, 47, 24, .18);
    backdrop-filter: blur(11px) saturate(1.04);
    -webkit-backdrop-filter: blur(11px) saturate(1.04);
}

.mv-impeccable .mv-dialogue[data-dialogue-view="npc_task"] .mv-dlg-answer.mv-cozy-panel {
    align-self: stretch;
    height: auto;
}

.mv-impeccable .mv-scene[data-mode="dialogue"]:is([data-dialogue-key="village elder"], [data-dialogue-key="old craftsman"], [data-dialogue-key="village guard"], [data-dialogue-key="village millers"]) .mv-dlg-options {
    gap: 7px;
    padding: 0;
}

.mv-impeccable .mv-scene[data-mode="dialogue"]:is([data-dialogue-key="village elder"], [data-dialogue-key="old craftsman"], [data-dialogue-key="village guard"], [data-dialogue-key="village millers"]) .mv-dlg-option.mv-cozy-button {
    min-height: 48px;
    padding: 8px 35px 8px 13px;
    border: 1px solid rgba(65, 111, 91, .62);
    border-radius: 16px;
    background: rgba(220, 239, 216, .96);
    clip-path: none;
    color: #213d39;
    font-size: 14px;
    font-weight: 720;
    box-shadow: 0 5px 14px rgba(13, 35, 34, .2), inset 0 1px rgba(255, 255, 255, .5);
    backdrop-filter: blur(9px);
    -webkit-backdrop-filter: blur(9px);
}

.mv-impeccable .mv-scene[data-mode="dialogue"]:is([data-dialogue-key="village elder"], [data-dialogue-key="old craftsman"], [data-dialogue-key="village guard"], [data-dialogue-key="village millers"]) .mv-dlg-option-say.mv-cozy-button {
    border-color: rgba(62, 115, 84, .72);
    background: rgba(199, 231, 198, .97);
}

.mv-impeccable .mv-scene[data-mode="dialogue"]:is([data-dialogue-key="village elder"], [data-dialogue-key="old craftsman"], [data-dialogue-key="village guard"], [data-dialogue-key="village millers"]) .mv-dlg-option-end.mv-cozy-button {
    color: #405f59;
}

.mv-impeccable .mv-scene[data-mode="dialogue"]:is([data-dialogue-key="village elder"], [data-dialogue-key="old craftsman"], [data-dialogue-key="village guard"], [data-dialogue-key="village millers"]) .mv-dlg-option.mv-cozy-button:focus-visible,
.mv-impeccable .mv-scene[data-mode="dialogue"]:is([data-dialogue-key="village elder"], [data-dialogue-key="old craftsman"], [data-dialogue-key="village guard"], [data-dialogue-key="village millers"]) .mv-dlg-visible-exit.mv-cozy-button:focus-visible {
    outline: 3px solid #fff1a8;
    outline-offset: 2px;
}

.mv-impeccable .mv-dlg-answer.mv-dlg-task-panel {
    grid-template-columns: 96px minmax(0, 1fr);
    gap: 9px 13px;
}

.mv-impeccable .mv-dlg-task-art.mv-cozy-slot {
    position: relative;
    width: 96px;
    height: 108px;
    overflow: hidden;
    border: 1px solid rgba(71, 108, 85, .46);
    border-radius: 20px;
    background: #d9ebc3;
    clip-path: none;
    box-shadow: inset 0 0 0 2px rgba(255, 253, 222, .55);
}

.mv-impeccable .mv-dlg-task-millers {
    position: absolute;
    inset: 0;
}

.mv-impeccable .mv-dlg-task-ready-art {
    position: absolute;
    right: 2px;
    bottom: 2px;
    width: 44px;
    height: 44px;
    object-fit: contain;
    opacity: 0;
    filter: drop-shadow(0 3px 4px rgba(40, 50, 26, .26));
    transform: translateY(5px) scale(.82);
    transition: opacity 180ms ease-out, transform 220ms ease-out;
}

.mv-impeccable .mv-dlg-task-panel[data-task-phase="complete"] .mv-dlg-task-ready-art {
    opacity: 1;
    transform: translateY(0) scale(1);
}

.mv-impeccable .mv-dlg-task-progress,
.mv-impeccable .mv-dlg-task-progress-fill {
    border-radius: 999px;
    clip-path: none;
}

.mv-impeccable .mv-dlg-task-progress {
    height: 11px;
    border-color: rgba(71, 108, 85, .42);
    background: rgba(44, 79, 68, .12);
}

.mv-impeccable .mv-dlg-task-progress-fill {
    background: linear-gradient(90deg, #7aaa70, #efaa55);
}

.mv-impeccable .mv-map-task-seal {
    position: absolute;
    z-index: 4;
    top: -9px;
    right: -15px;
    width: 48px;
    height: 48px;
    pointer-events: none;
    filter: drop-shadow(0 5px 7px rgba(13, 35, 34, .32));
}

.mv-impeccable .mv-map-task-seal[hidden] {
    display: none;
}

.mv-impeccable .mv-map-task-seal-portrait {
    position: absolute;
    inset: 3px;
    overflow: hidden;
    border: 2px solid #fff5c8;
    border-radius: 50%;
    background-color: #d9ebc3;
}

.mv-impeccable .mv-map-task-seal-progress {
    position: absolute;
    inset: -1px;
    border-radius: 50%;
    background: conic-gradient(#efa14d calc(var(--npc-task-progress, 0) * 1turn), rgba(255, 249, 207, .42) 0);
    -webkit-mask: radial-gradient(farthest-side, transparent calc(100% - 4px), #000 calc(100% - 3px));
    mask: radial-gradient(farthest-side, transparent calc(100% - 4px), #000 calc(100% - 3px));
}

.mv-impeccable .mv-map-task-seal-ready {
    position: absolute;
    right: -7px;
    bottom: -7px;
    width: 29px;
    height: 29px;
    object-fit: contain;
    opacity: 0;
    transform: scale(.76);
    filter: drop-shadow(0 2px 3px rgba(34, 42, 22, .32));
    transition: opacity 180ms ease-out, transform 220ms ease-out;
}

.mv-impeccable .mv-map-node[data-npc-task-phase="working"] .mv-map-task-seal {
    animation: mv-npc-task-breathe 2.4s ease-in-out infinite;
}

.mv-impeccable .mv-map-node[data-npc-task-phase="complete"] .mv-map-task-seal-ready {
    opacity: 1;
    transform: scale(1);
}

@keyframes mv-npc-task-breathe {
    0%, 100% { transform: translateY(0) scale(1); }
    50% { transform: translateY(-2px) scale(1.04); }
}

[data-theme="night"] .mv-impeccable .mv-scene[data-mode="dialogue"]:is([data-dialogue-key="village elder"], [data-dialogue-key="old craftsman"], [data-dialogue-key="village guard"], [data-dialogue-key="village millers"]) .mv-dlg-answer.mv-cozy-panel,
[data-theme="night"] .mv-impeccable .mv-scene[data-mode="dialogue"]:is([data-dialogue-key="village elder"], [data-dialogue-key="old craftsman"], [data-dialogue-key="village guard"], [data-dialogue-key="village millers"]) .mv-dlg-option.mv-cozy-button {
    border-color: rgba(164, 198, 167, .38);
    color: #f9f1d7;
}

[data-theme="night"] .mv-impeccable .mv-scene[data-mode="dialogue"]:is([data-dialogue-key="village elder"], [data-dialogue-key="old craftsman"], [data-dialogue-key="village guard"], [data-dialogue-key="village millers"]) .mv-dlg-answer.mv-cozy-panel {
    background: rgba(41, 48, 47, .94);
}

[data-theme="night"] .mv-impeccable .mv-scene[data-mode="dialogue"]:is([data-dialogue-key="village elder"], [data-dialogue-key="old craftsman"], [data-dialogue-key="village guard"], [data-dialogue-key="village millers"]) .mv-dlg-option.mv-cozy-button {
    background: rgba(37, 70, 60, .95);
}

[data-theme="night"] .mv-impeccable .mv-scene[data-mode="dialogue"]:is([data-dialogue-key="village elder"], [data-dialogue-key="old craftsman"], [data-dialogue-key="village guard"], [data-dialogue-key="village millers"]) .mv-dlg-option-say.mv-cozy-button {
    background: rgba(47, 81, 66, .94);
}

[data-theme="night"] .mv-impeccable .mv-scene[data-mode="dialogue"]:is([data-dialogue-key="village elder"], [data-dialogue-key="old craftsman"], [data-dialogue-key="village guard"], [data-dialogue-key="village millers"]) .mv-dlg-option-end.mv-cozy-button,
[data-theme="night"] .mv-impeccable .mv-dlg-task-copy > span,
[data-theme="night"] .mv-impeccable .mv-dlg-task-status small,
[data-theme="night"] .mv-impeccable .mv-dlg-task-repeat {
    color: #d6dfc8;
}

@media (max-width: 370px), (max-height: 740px) {
    .mv-impeccable .mv-scene[data-mode="dialogue"]:is([data-dialogue-key="village elder"], [data-dialogue-key="old craftsman"], [data-dialogue-key="village guard"], [data-dialogue-key="village millers"]) .mv-dlg-head {
        min-height: 119px;
    }

    .mv-impeccable .mv-scene[data-mode="dialogue"]:is([data-dialogue-key="village elder"], [data-dialogue-key="old craftsman"], [data-dialogue-key="village guard"], [data-dialogue-key="village millers"]) .mv-dlg-identity {
        max-width: calc(100% - 57px);
        gap: 5px;
    }

    .mv-impeccable .mv-scene[data-mode="dialogue"]:is([data-dialogue-key="village elder"], [data-dialogue-key="old craftsman"], [data-dialogue-key="village guard"], [data-dialogue-key="village millers"]) .mv-dlg-avatar.mv-cozy-slot {
        width: 86px;
        height: 86px;
        border-radius: 19px 19px 15px 15px;
    }

    .mv-impeccable .mv-scene[data-mode="dialogue"]:is([data-dialogue-key="village elder"], [data-dialogue-key="old craftsman"], [data-dialogue-key="village guard"], [data-dialogue-key="village millers"]) .mv-dlg-head h2 {
        min-width: 86px;
        min-height: 28px;
        padding: 3px 8px;
        font-size: 13px;
    }

    .mv-impeccable .mv-scene[data-mode="dialogue"]:is([data-dialogue-key="village elder"], [data-dialogue-key="old craftsman"], [data-dialogue-key="village guard"], [data-dialogue-key="village millers"]) .mv-dlg-visible-exit.mv-cozy-button {
        width: 48px;
        min-width: 48px;
        padding: 0;
    }

    .mv-impeccable .mv-scene[data-mode="dialogue"]:is([data-dialogue-key="village elder"], [data-dialogue-key="old craftsman"], [data-dialogue-key="village guard"], [data-dialogue-key="village millers"]) .mv-dlg-answer.mv-cozy-panel {
        padding: 11px 12px;
        font-size: 14px;
        line-height: 1.5;
    }

    .mv-impeccable .mv-scene[data-mode="dialogue"]:is([data-dialogue-key="village elder"], [data-dialogue-key="old craftsman"], [data-dialogue-key="village guard"], [data-dialogue-key="village millers"]) .mv-dlg-option.mv-cozy-button {
        min-height: 46px;
        padding-block: 7px;
        font-size: 13px;
    }

    .mv-impeccable .mv-dlg-answer.mv-dlg-task-panel {
        grid-template-columns: 68px minmax(0, 1fr);
    }

    .mv-impeccable .mv-dlg-task-art.mv-cozy-slot {
        width: 68px;
        height: 78px;
    }
}

@media (prefers-reduced-motion: reduce) {
    .mv-impeccable .mv-map-node[data-npc-task-phase="working"] .mv-map-task-seal {
        animation: none;
    }

    .mv-impeccable .mv-dlg-task-ready-art,
    .mv-impeccable .mv-map-task-seal-ready {
        transition: none;
    }
}

/* ═══════════════════════════════════════════════════════════════════
   Wave52: clean-cel first-viewport chrome
   The new icon family is crisp and self-contained. Edge chrome now uses
   flat cel planes and hard route marks instead of paper-pack borders,
   radial glow, blur, or sticker-like shadow stacks.
   ═══════════════════════════════════════════════════════════════════ */

.mv-impeccable .mv-status.mv-cozy-panel {
    border-bottom: 2px solid #2f6257;
    border-radius: 0 0 12px 12px;
    background: #f2ebca;
    box-shadow: 0 3px 0 rgba(34, 72, 62, .22);
    backdrop-filter: none;
    -webkit-backdrop-filter: none;
}

[data-theme="night"] .mv-impeccable .mv-status.mv-cozy-panel {
    border-bottom-color: #d78a62;
    background: #183b45;
    box-shadow: 0 3px 0 rgba(5, 20, 25, .55);
}

.mv-impeccable .mv-route-ledger.mv-cozy-panel {
    border: 2px solid #315f55;
    border-top: 0;
    border-radius: 0 0 12px 12px;
    background: #e7edcf;
    box-shadow: 0 3px 0 rgba(34, 72, 62, .25);
    backdrop-filter: none;
    -webkit-backdrop-filter: none;
}

[data-theme="night"] .mv-impeccable .mv-route-ledger.mv-cozy-panel {
    border-color: #d78a62;
    border-top: 0;
    background: #234d51;
    box-shadow: 0 3px 0 rgba(5, 20, 25, .5);
}

.mv-impeccable .mv-map-node {
    filter: none;
}

.mv-impeccable .mv-map-node-pin.mv-cozy-slot {
    border: 2px solid #2f6257;
    background: rgba(246, 237, 194, .94);
    box-shadow: 0 3px 0 rgba(25, 60, 50, .3);
}

.mv-impeccable .mv-map-node-pin .mv-map-node-pin-img,
[data-theme="night"] .mv-impeccable .mv-map-node-pin .mv-map-node-pin-img {
    filter: none;
}

.mv-impeccable .mv-map-node-label.mv-cozy-button {
    border: 1px solid #f3e6bd;
    background: #315f55;
    box-shadow: 0 2px 0 rgba(17, 48, 39, .32);
    backdrop-filter: none;
    -webkit-backdrop-filter: none;
}

[data-theme="night"] .mv-impeccable .mv-map-node-label.mv-cozy-button {
    border-color: #7da6a0;
    background: #183b45;
}

.mv-impeccable .mv-map-node[aria-expanded="true"] .mv-map-node-pin {
    border-color: #b95840;
    background: #ffe6a7;
    box-shadow: 0 3px 0 rgba(135, 67, 50, .38);
}

.mv-impeccable .mv-map-node[aria-expanded="true"] .mv-map-node-label {
    background: #a9513d;
}

.mv-impeccable .mv-map-node[aria-disabled="true"] .mv-map-node-pin,
.mv-impeccable .mv-map-node.mv-disabled .mv-map-node-pin {
    border-color: #69766c;
    background: #d5d7bd;
}

.mv-impeccable .mv-tabbar {
    min-height: 68px;
    border: 0;
    border-top: 2px solid #2f6257;
    border-radius: 14px 14px 0 0;
    background: #f2ebca;
    box-shadow: 0 -3px 0 rgba(34, 72, 62, .24);
    backdrop-filter: none;
    -webkit-backdrop-filter: none;
}

[data-theme="night"] .mv-impeccable .mv-tabbar,
body[data-theme="night"] .mv-impeccable .mv-tabbar {
    border-color: #d78a62;
    background: #183b45;
    box-shadow: 0 -3px 0 rgba(5, 20, 25, .55);
}

.mv-impeccable .mv-tab {
    min-height: 56px;
    border: 0;
    border-image: none;
    background: transparent;
    color: #526861;
    text-shadow: none;
}

.mv-impeccable .mv-tab.mv-active {
    border: 0;
    border-image: none;
    background: transparent;
    color: #874332;
    text-shadow: none;
}

[data-theme="night"] .mv-impeccable .mv-tab {
    color: #b8ccc4;
}

[data-theme="night"] .mv-impeccable .mv-tab.mv-active {
    color: #ffd4aa;
}

.mv-impeccable .mv-tab.mv-active .mv-tab-icon,
[data-theme="night"] .mv-impeccable .mv-tab.mv-active .mv-tab-icon {
    transform: translateY(-2px);
    background: transparent;
    filter: none;
}

.mv-impeccable .mv-tab.mv-active::after {
    display: block;
    bottom: 3px;
    width: 25px;
    height: 3px;
    border-radius: 2px;
    background: #bd5f43;
}

.mv-impeccable .mv-icon[src*="/clean-cel-v1/"],
[data-theme="night"] .mv-impeccable .mv-icon[src*="/clean-cel-v1/"] {
    filter: none;
}

/* ═══════════════════════════════════════════════════════════════════
   Wave53: clean-cel growth yard
   One clean environment now owns both the fresh six-path preview and
   the populated Skills backdrop. The growth deck is a readable cel
   plane; icons sit on authored stone pads without sticker frames.
   ═══════════════════════════════════════════════════════════════════ */

.mv-impeccable .mv-screen[data-screen="skills"]::before {
    background-image: url("/resources/img/backgrounds/bg-skills-path-clean-cel-v1.webp");
    background-position: center top;
    opacity: .26;
    filter: saturate(.86) brightness(.98);
    transform: scale(1.02);
}

[data-theme="night"] .mv-impeccable .mv-screen[data-screen="skills"]::before {
    opacity: .42;
    filter: saturate(1.06) brightness(.86) contrast(1.03);
}

.mv-impeccable .mv-skills-hero {
    background:
        linear-gradient(180deg, rgba(246, 237, 194, .08), rgba(24, 59, 69, .52)),
        url("/resources/img/backgrounds/bg-skills-path-clean-cel-v1.webp") center 38% / cover no-repeat;
    box-shadow: inset 0 -2px 0 #315f55;
}

.mv-impeccable .mv-skills-hero-copy {
    color: #fff8e8;
    background: linear-gradient(90deg, rgba(24, 59, 69, .9) 0%, rgba(24, 59, 69, .7) 58%, transparent 88%);
    text-shadow: 0 2px 0 rgba(15, 43, 48, .72);
}

.mv-impeccable .mv-skills-hero-copy .mv-screen-kicker {
    color: #ffd4aa;
}

[data-theme="night"] .mv-impeccable .mv-skills-hero {
    background-image:
        linear-gradient(180deg, rgba(18, 47, 58, .28), rgba(12, 34, 43, .7)),
        url("/resources/img/backgrounds/bg-skills-path-clean-cel-v1.webp");
}

.mv-impeccable .mv-skills-deck.mv-cozy-panel {
    margin-top: -12px;
    border: 0;
    border-top: 2px solid #315f55;
    border-radius: 14px 14px 0 0;
    background: #e7edcf;
    color: #243c43;
    box-shadow: 0 -3px 0 rgba(34, 72, 62, .24);
}

/* Wave75: all returning-player category destinations stay directly visible on phone. */
.mv-impeccable .mv-skills-deck .mv-catchips {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 4px;
    padding: 0 12px 4px;
    overflow-x: visible;
}

[data-theme="night"] .mv-impeccable .mv-skills-deck.mv-cozy-panel {
    border-top-color: #d78a62;
    background: #193b45;
    color: #f6edcf;
    box-shadow: 0 -3px 0 rgba(5, 20, 25, .5);
}

.mv-impeccable .mv-skills-deck .mv-catchip.mv-cozy-button {
    min-width: 0;
    min-height: 44px;
    padding-inline: 4px;
    border: 1px solid #7da096;
    border-image: none;
    border-radius: 8px;
    background: transparent;
    color: #526861;
}

.mv-impeccable .mv-skills-deck .mv-catchip.mv-cozy-button[aria-pressed="true"] {
    border-color: #315f55;
    background: #315f55;
    color: #fff8e8;
}

.mv-impeccable .mv-skill-header {
    color: #526861;
}

.mv-impeccable .mv-skill-row.mv-cozy-button {
    border: 2px solid #7da096;
    border-image: none;
    border-radius: 10px;
    background: #f2ebca;
    color: #243c43;
    box-shadow: 0 2px 0 rgba(34, 72, 62, .2);
}

.mv-impeccable .mv-skill-row .mv-skill-emblem {
    border: 0;
    border-image: none;
    border-radius: 50%;
    background: transparent;
}

[data-theme="night"] .mv-impeccable .mv-skills-deck .mv-catchip.mv-cozy-button {
    border-color: #72958f;
    color: #d6e4da;
}

[data-theme="night"] .mv-impeccable .mv-skills-deck .mv-catchip.mv-cozy-button[aria-pressed="true"] {
    border-color: #d78a62;
    background: #a9513d;
    color: #fff8e8;
}

[data-theme="night"] .mv-impeccable .mv-skill-header {
    color: #ffd4aa;
}

[data-theme="night"] .mv-impeccable .mv-skill-row.mv-cozy-button {
    border-color: #72958f;
    background: #234d51;
    color: #fff8e8;
}

[data-theme="night"] .mv-impeccable .mv-skill-row .mv-skill-lv,
[data-theme="night"] .mv-impeccable .mv-skill-row .mv-skill-sub {
    color: #c9d9cf;
}

.mv-impeccable .mv-skills-awakened.mv-cozy-slot {
    border: 2px solid #315f55;
    border-image: none;
    border-radius: 10px;
    background: #f2ebca;
    box-shadow: 0 2px 0 rgba(34, 72, 62, .24);
}

[data-theme="night"] .mv-impeccable .mv-skills-awakened.mv-cozy-slot {
    border-color: #d78a62;
    background: #193b45;
    color: #f6edcf;
}

.mv-impeccable .mv-skill-preview-node.mv-cozy-slot,
.mv-impeccable .mv-skill-preview-node.mv-recommended {
    border: 0;
    border-image: none;
    border-radius: 50%;
    background: transparent;
    box-shadow: none;
}

.mv-impeccable .mv-skill-preview-node .mv-icon {
    filter: none;
}

.mv-impeccable .mv-skill-preview-node > span,
.mv-impeccable .mv-skill-path-hint {
    border: 1px solid #f3e6bd;
    border-radius: 8px;
    background: #315f55;
    color: #fff8e8;
    box-shadow: 0 2px 0 rgba(17, 48, 39, .32);
    backdrop-filter: none;
}

.mv-impeccable .mv-skill-preview-node.mv-recommended::after {
    border: 1px solid #ffe0bc;
    border-radius: 8px;
    background: #bd5f43;
    box-shadow: 0 2px 0 rgba(135, 67, 50, .36);
}

@media (max-height: 740px) {
    .mv-impeccable .mv-skill-path-hint {
        display: none;
    }
}

/* ═══════════════════════════════════════════════════════════════════
   Wave54: clean-cel traveller room
   The shared More shell now lives in one crisp room. The hero uses a
   purpose-built 5:6 paper doll and an independent square avatar crop;
   neither owner stretches the other asset geometry.
   ═══════════════════════════════════════════════════════════════════ */

.mv-impeccable .mv-screen[data-screen="more"]::before {
    background-image: url("/resources/img/backgrounds/bg-character-page-clean-cel-v2.webp");
    background-position: center top;
    opacity: 1;
    filter: saturate(.96) brightness(1.08);
    transform: none;
}

[data-theme="night"] .mv-impeccable .mv-screen[data-screen="more"]::before {
    opacity: 1;
    filter: saturate(1.03) brightness(.9) contrast(1.02);
}

.mv-impeccable .mv-screen[data-screen="more"] .mv-icon[src*="hero-portrait-clean-cel-v1.png"],
[data-theme="night"] .mv-impeccable .mv-screen[data-screen="more"] .mv-icon[src*="hero-portrait-clean-cel-v1.png"],
.mv-impeccable .mv-pd-portrait-img,
[data-theme="night"] .mv-impeccable .mv-pd-portrait-img {
    filter: none;
}

.mv-impeccable .mv-more-header .mv-surface-header-art {
    width: 48px;
    height: 48px;
    overflow: hidden;
    border: 2px solid #315f55;
    border-radius: 50%;
    background: #f2ebca;
    box-shadow: 0 2px 0 rgba(34, 72, 62, .28);
    filter: none;
}

.mv-impeccable .mv-more-header .mv-surface-header-art .mv-icon {
    width: 46px !important;
    height: 46px !important;
    object-fit: cover;
}

.mv-impeccable .mv-more-nav-button.mv-cozy-button {
    min-height: 66px;
    border: 1px solid #7da096;
    border-image: none;
    border-radius: 8px;
    background: #f2ebca;
    color: #526861;
    box-shadow: 0 2px 0 rgba(34, 72, 62, .2);
    filter: none;
}

.mv-impeccable .mv-more-nav-button.mv-cozy-button[aria-selected="true"] {
    border-color: #315f55;
    background: #315f55;
    color: #fff8e8;
    box-shadow: 0 3px 0 rgba(17, 48, 39, .34);
    filter: none;
}

.mv-impeccable .mv-more-nav-button .mv-icon[src*="hero-portrait-clean-cel-v1.png"] {
    width: 34px !important;
    height: 34px !important;
}

[data-theme="night"] .mv-impeccable .mv-more-header .mv-surface-header-art,
[data-theme="night"] .mv-impeccable .mv-more-nav-button.mv-cozy-button {
    border-color: #72958f;
    background: #234d51;
    color: #f6edcf;
}

[data-theme="night"] .mv-impeccable .mv-more-nav-button.mv-cozy-button[aria-selected="true"] {
    border-color: #d78a62;
    background: #a9513d;
    color: #fff8e8;
}

.mv-impeccable .mv-char-paperdoll.mv-cozy-panel {
    border: 2px solid #315f55;
    border-image: none;
    border-radius: 14px;
    background: rgba(231, 237, 207, .94);
    color: #243c43;
    box-shadow: 0 4px 0 rgba(34, 72, 62, .24);
    backdrop-filter: none;
    -webkit-backdrop-filter: none;
}

[data-theme="night"] .mv-impeccable .mv-char-paperdoll.mv-cozy-panel {
    border-color: #d78a62;
    background: rgba(25, 59, 69, .96);
    color: #f6edcf;
    box-shadow: 0 4px 0 rgba(5, 20, 25, .58);
}

.mv-impeccable .mv-pd-portrait-frame.mv-cozy-slot {
    width: 150px;
    height: auto;
    aspect-ratio: 5 / 6;
    padding: 0;
    border: 0;
    border-image: none;
    border-radius: 0;
    background: transparent;
    box-shadow: none;
}

.mv-impeccable .mv-pd-portrait-frame .mv-pd-portrait,
.mv-impeccable .mv-pd-portrait-frame .mv-pd-portrait-img {
    width: 100%;
    height: 100%;
}

.mv-impeccable .mv-pd-portrait-frame .mv-pd-portrait-img {
    display: block;
    object-fit: contain;
    border-radius: 0;
}

.mv-impeccable .mv-pd-slot.mv-cozy-slot,
.mv-impeccable .mv-pd-glance > span.mv-cozy-slot {
    border: 1px solid #7da096;
    border-image: none;
    border-radius: 8px;
    background: #f2ebca;
    color: #243c43;
    box-shadow: 0 2px 0 rgba(34, 72, 62, .18);
}

.mv-impeccable .mv-pd-slot.mv-cozy-slot:disabled {
    border-color: #9eaa9b;
    background: #dfe4c9;
    opacity: .84;
}

[data-theme="night"] .mv-impeccable .mv-pd-slot.mv-cozy-slot,
[data-theme="night"] .mv-impeccable .mv-pd-glance > span.mv-cozy-slot {
    border-color: #72958f;
    background: #234d51;
    color: #f6edcf;
}

[data-theme="night"] .mv-impeccable .mv-pd-slot.mv-cozy-slot:disabled {
    border-color: #527774;
    background: #1c4148;
    opacity: .92;
}

[data-theme="night"] .mv-impeccable .mv-more-panel[data-more-panel="settings"] .mv-settings-group.mv-cozy-panel {
    border: 2px solid #d78a62;
    border-image: none;
    border-radius: 12px;
    background: rgba(25, 59, 69, .96);
    color: #f6edcf;
    box-shadow: 0 3px 0 rgba(5, 20, 25, .5);
}

[data-theme="night"] .mv-impeccable .mv-more-panel[data-more-panel="settings"] .mv-setting-row.mv-cozy-panel {
    border: 0;
    border-bottom: 1px solid #527774;
    border-image: none;
    border-radius: 0;
    background: transparent;
    color: #f6edcf;
}

[data-theme="night"] .mv-impeccable .mv-more-panel[data-more-panel="settings"] .mv-setting-row.mv-cozy-panel:last-child {
    border-bottom: 0;
}

[data-theme="night"] .mv-impeccable .mv-more-panel[data-more-panel="settings"] h3,
[data-theme="night"] .mv-impeccable .mv-more-panel[data-more-panel="settings"] .mv-setting-row > span,
[data-theme="night"] .mv-impeccable .mv-more-panel[data-more-panel="settings"] .mv-setting-number {
    color: #f6edcf;
}

[data-theme="night"] .mv-impeccable .mv-more-nav-button.mv-cozy-button,
[data-theme="night"] .mv-impeccable .mv-pd-name,
[data-theme="night"] .mv-impeccable .mv-pd-name-row,
[data-theme="night"] .mv-impeccable .mv-pd-rename.mv-cozy-button,
[data-theme="night"] .mv-impeccable .mv-pd-stats-panel,
[data-theme="night"] .mv-impeccable .mv-pd-base-stats,
[data-theme="night"] .mv-impeccable .mv-pd-atk-panel,
[data-theme="night"] .mv-impeccable .mv-pd-def-panel,
[data-theme="night"] .mv-impeccable .mv-pd-base-label,
[data-theme="night"] .mv-impeccable .mv-pd-base-cell,
[data-theme="night"] .mv-impeccable .mv-pd-base-val,
[data-theme="night"] .mv-impeccable .mv-pd-stat-row,
[data-theme="night"] .mv-impeccable .mv-pd-stat-val,
[data-theme="night"] .mv-impeccable .mv-pd-xp-info,
[data-theme="night"] .mv-impeccable .mv-pd-vital-label,
[data-theme="night"] .mv-impeccable .mv-pd-reputation-card {
    color: #f6edcf;
}

[data-theme="night"] .mv-impeccable .mv-more-nav-button.mv-cozy-button[aria-selected="true"] {
    color: #ffd4aa;
}

@media (max-width: 370px), (max-height: 740px) {
    .mv-impeccable .mv-pd-portrait-frame.mv-cozy-slot {
        width: 132px;
    }
}

/* ═══════════════════════════════════════════════════════════════════
   Wave55: traveller-ready bench
   Backpack and equipment are now one clean-cel room: scene first,
   authored object anchors second, compact touch chrome last.
   ═══════════════════════════════════════════════════════════════════ */

.mv-impeccable .mv-screen.mv-bag {
    background: #18383a;
}

.mv-impeccable .mv-screen[data-screen="bag"]::before {
    display: none;
}

.mv-impeccable .mv-bag > .mv-subtabs {
    top: 6px;
    left: 8px;
    right: 8px;
    z-index: 12;
    gap: 5px;
    padding: 0;
    border: 0;
    background: transparent;
    box-shadow: none;
    backdrop-filter: none;
    -webkit-backdrop-filter: none;
}

.mv-impeccable .mv-bag > .mv-subtabs .mv-subtab.mv-cozy-button {
    min-height: 50px;
    padding: 4px 8px;
    border: 1px solid rgba(246, 237, 207, .8) !important;
    border-radius: 9px;
    background: rgba(24, 56, 58, .9) !important;
    color: #f6edcf;
    box-shadow: 0 2px 0 rgba(12, 30, 31, .5);
}

.mv-impeccable .mv-bag > .mv-subtabs .mv-subtab.mv-cozy-button.mv-active,
.mv-impeccable .mv-bag > .mv-subtabs .mv-subtab.mv-cozy-button[aria-selected="true"] {
    border-color: #f6edcf !important;
    background: #bd5f43 !important;
    color: #fff8e8;
    box-shadow: 0 3px 0 #874332;
}

.mv-impeccable .mv-bag > .mv-subtabs .mv-subtab .mv-icon {
    width: 30px !important;
    height: 30px !important;
}

.mv-impeccable .mv-bag-stage {
    --mv-bag-selection-height: 58px;
    background: #18383a;
}

.mv-impeccable .mv-bag-stage.mv-has-selection {
    --mv-bag-selection-height: 194px;
}

.mv-impeccable .mv-bag .mv-bag-art {
    opacity: 1;
    object-position: center center;
    filter: saturate(.98) brightness(1.01);
    mix-blend-mode: normal;
    transform: none;
}

.mv-impeccable .mv-bag .mv-bag-stage::after {
    background: rgba(18, 44, 44, .04);
}

[data-theme="night"] .mv-impeccable .mv-bag .mv-bag-art {
    opacity: 1;
    filter: saturate(1.03) brightness(.92) contrast(1.02);
    mix-blend-mode: normal;
}

[data-theme="night"] .mv-impeccable .mv-bag .mv-bag-stage::after {
    background: rgba(10, 34, 43, .08);
}

.mv-impeccable .mv-bag .mv-bag-capacity {
    top: 144px;
    min-height: 44px;
    padding: 4px 10px 4px 6px;
    border: 1px solid #315f55 !important;
    border-radius: 8px;
    background: rgba(242, 235, 202, .94) !important;
    color: #243c43;
    box-shadow: 0 2px 0 rgba(34, 72, 62, .28);
    clip-path: none;
    backdrop-filter: none;
    -webkit-backdrop-filter: none;
}

.mv-impeccable .mv-bag .mv-bag-capacity small {
    color: #526861;
}

.mv-impeccable .mv-bag-stage > .mv-catchips {
    top: 62px;
    left: 6px;
    right: 6px;
    z-index: 10;
    gap: 4px;
    padding: 2px 2px 7px;
}

.mv-impeccable .mv-bag-stage > .mv-catchips .mv-catchip {
    min-width: 55px;
    min-height: 46px;
    padding: 3px 5px;
    border: 1px solid rgba(246, 237, 207, .82) !important;
    border-radius: 8px;
    background: rgba(24, 56, 58, .9) !important;
    color: #f6edcf;
    box-shadow: 0 2px 0 rgba(12, 30, 31, .46);
    clip-path: none;
    backdrop-filter: none;
    -webkit-backdrop-filter: none;
}

.mv-impeccable .mv-bag-stage > .mv-catchips .mv-catchip.mv-active {
    border-color: #f6edcf !important;
    background: #bd5f43 !important;
    color: #fff8e8;
    box-shadow: 0 3px 0 #874332;
}

.mv-impeccable .mv-bag-stage > .mv-catchips .mv-catchip .mv-icon {
    width: 25px !important;
    height: 25px !important;
    filter: none;
}

.mv-impeccable .mv-bag .mv-bag-board {
    top: 211px;
    left: 17%;
    right: 17%;
    bottom: calc(var(--mv-bag-selection-height) + 54px);
    padding: 0;
    overflow-y: auto;
    mask-image: none;
    -webkit-mask-image: none;
}

.mv-impeccable .mv-bag .mv-item-grid {
    grid-template-columns: repeat(4, 58px);
    gap: 8px 7px;
}

.mv-impeccable .mv-bag .mv-item-cell,
.mv-impeccable .mv-bag .mv-item-ghost {
    width: 58px;
    height: 58px;
    min-height: 58px;
    border: 0 !important;
    border-image: none !important;
    border-radius: 8px;
}

.mv-impeccable .mv-bag .mv-item-ghost {
    visibility: hidden;
    background: transparent !important;
    box-shadow: none;
    opacity: 0;
}

.mv-impeccable .mv-bag .mv-item-cell,
.mv-impeccable .mv-bag .mv-item-cell.mv-selected {
    padding: 4px;
    background: rgba(242, 235, 202, .78) !important;
    box-shadow: 0 2px 0 rgba(36, 60, 67, .34);
    clip-path: none;
}

.mv-impeccable .mv-bag .mv-item-cell.mv-selected {
    outline: 3px solid #bd5f43;
    outline-offset: -2px;
    transform: translateY(-2px);
    box-shadow: 0 3px 0 #874332;
}

.mv-impeccable .mv-bag .mv-item-icon .mv-icon,
.mv-impeccable .mv-bag .mv-item-icon > img {
    filter: none;
}

.mv-impeccable .mv-bag-stage > .mv-empty {
    top: 52%;
    border: 1px solid #315f55;
    border-radius: 8px;
    background: rgba(242, 235, 202, .94);
    color: #243c43;
    box-shadow: 0 2px 0 rgba(34, 72, 62, .28);
    backdrop-filter: none;
    -webkit-backdrop-filter: none;
}

.mv-impeccable .mv-bag .mv-bag-selection {
    left: 9px;
    right: 9px;
    bottom: 6px;
    min-height: 48px;
    padding: 6px 10px calc(6px + var(--mv-safe-bottom));
    border: 2px solid #315f55 !important;
    border-radius: 12px;
    background: #e7edcf !important;
    color: #243c43;
    box-shadow: 0 -3px 0 rgba(34, 72, 62, .28);
    clip-path: none;
    backdrop-filter: none;
    -webkit-backdrop-filter: none;
}

.mv-impeccable .mv-bag .mv-bag-selection-idle {
    min-height: 34px;
    color: #526861;
    font-size: 12px;
}

.mv-impeccable .mv-bag .mv-bag-selection-close,
.mv-impeccable .mv-bag .mv-bag-selection .mv-item-action {
    min-height: 44px;
    border: 1px solid #7da096 !important;
    border-radius: 8px;
    background: #f2ebca !important;
    color: #243c43;
    box-shadow: 0 2px 0 rgba(34, 72, 62, .2);
    clip-path: none;
}

.mv-impeccable .mv-bag .mv-bag-selection .mv-item-action-primary,
.mv-impeccable .mv-bag .mv-bag-selection .mv-item-action.mv-on {
    border-color: #315f55 !important;
    background: #315f55 !important;
    color: #fff8e8;
}

[data-theme="night"] .mv-impeccable .mv-bag .mv-bag-selection {
    border-color: #d78a62 !important;
    background: #193b45 !important;
    color: #f6edcf;
    box-shadow: 0 -3px 0 rgba(5, 20, 25, .56);
}

[data-theme="night"] .mv-impeccable .mv-bag .mv-bag-selection-idle,
[data-theme="night"] .mv-impeccable .mv-bag .mv-bag-selected-copy span,
[data-theme="night"] .mv-impeccable .mv-bag .mv-bag-details > summary,
[data-theme="night"] .mv-impeccable .mv-bag .mv-bag-tooltip {
    color: #c9d9cf;
}

[data-theme="night"] .mv-impeccable .mv-bag .mv-bag-selection-close,
[data-theme="night"] .mv-impeccable .mv-bag .mv-bag-selection .mv-item-action {
    border-color: #72958f !important;
    background: #234d51 !important;
    color: #f6edcf;
}

.mv-impeccable .mv-bag > .mv-bag-equipment.mv-active {
    position: relative;
    display: block;
    height: 100%;
    min-height: 100%;
    padding: 0;
    overflow: hidden;
    background: #102a2c;
}

[data-theme="night"] .mv-impeccable .mv-bag > .mv-bag-equipment.mv-active {
    background: #07181c;
}

.mv-impeccable .mv-equip-intro {
    position: absolute;
    z-index: 4;
    top: 63px;
    left: 50%;
    transform: translateX(-50%);
    min-height: 42px;
    width: max-content;
    max-width: 104px;
    margin: 0;
    padding: 5px 12px;
    border: 1px solid #315f55;
    border-radius: 8px;
    background: rgba(242, 235, 202, .94);
    color: #243c43;
    box-shadow: 0 2px 0 rgba(34, 72, 62, .28);
    backdrop-filter: none;
    -webkit-backdrop-filter: none;
}

.mv-impeccable .mv-equip-intro strong {
    color: #243c43;
    font-size: 14px;
}

.mv-impeccable .mv-equip-intro span {
    position: absolute;
    width: 1px;
    height: 1px;
    padding: 0;
    margin: -1px;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
    white-space: nowrap;
    border: 0;
}

.mv-impeccable .mv-bag-equipment .mv-equip-list {
    position: absolute;
    left: 50%;
    top: 50%;
    display: block;
    width: auto;
    max-width: 100%;
    height: min(100%, 150vw);
    aspect-ratio: 2 / 3;
    padding: 0;
    transform: translate(-50%, -50%);
    background: url("/resources/img/backgrounds/bg-equipment-loadout-clean-cel-v1.webp") center / 100% 100% no-repeat;
}

[data-theme="night"] .mv-impeccable .mv-bag-equipment .mv-equip-list {
    background-image: linear-gradient(rgba(10, 34, 43, .14), rgba(10, 34, 43, .14)), url("/resources/img/backgrounds/bg-equipment-loadout-clean-cel-v1.webp");
}

.mv-impeccable .mv-bag-equipment .mv-equip-row {
    position: absolute;
    z-index: 3;
    display: grid;
    place-items: center;
    width: 52px;
    min-width: 52px;
    height: 52px;
    min-height: 52px;
    padding: 2px;
    border: 1px solid rgba(246, 237, 207, .82) !important;
    border-radius: 9px;
    background: rgba(24, 56, 58, .76) !important;
    box-shadow: 0 2px 0 rgba(12, 30, 31, .46);
    overflow: visible;
    transform: translate(-50%, -50%);
}

.mv-impeccable .mv-bag-equipment .mv-equip-row:not(:disabled):active {
    transform: translate(-50%, -50%) scale(.94);
}

.mv-impeccable .mv-bag-equipment .mv-equip-row.mv-equip-empty {
    border-color: rgba(191, 181, 153, .48) !important;
    background: rgba(20, 49, 51, .62) !important;
    opacity: .72;
    box-shadow: inset 0 0 0 2px rgba(8, 28, 30, .2);
}

.mv-impeccable .mv-bag-equipment .mv-equip-art,
.mv-impeccable .mv-bag-equipment .mv-equip-art .mv-icon,
.mv-impeccable .mv-bag-equipment .mv-equip-art .mv-equip-placeholder {
    width: 46px !important;
    height: 46px !important;
    margin: 0;
    opacity: 1;
    filter: none;
}

.mv-impeccable .mv-bag-equipment .mv-equip-row.mv-equip-empty .mv-equip-placeholder {
    opacity: .34;
    filter: grayscale(1) saturate(0) sepia(.12) brightness(.82) contrast(.82);
}

[data-theme="night"] .mv-impeccable .mv-bag-equipment .mv-equip-row.mv-equip-empty {
    border-color: rgba(147, 163, 146, .36) !important;
    background: rgba(7, 27, 30, .74) !important;
    opacity: .68;
}

[data-theme="night"] .mv-impeccable .mv-bag-equipment .mv-equip-row.mv-equip-empty .mv-equip-placeholder {
    opacity: .3;
    filter: grayscale(1) saturate(0) brightness(.72) contrast(.78);
}

.mv-impeccable .mv-bag-equipment .mv-equip-slot,
.mv-impeccable .mv-bag-equipment .mv-equip-name {
    position: absolute;
    width: 1px;
    height: 1px;
    padding: 0;
    margin: -1px;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
    white-space: nowrap;
    border: 0;
}

.mv-impeccable .mv-bag-equipment .mv-equip-row[data-slot="head"] { left: 28.4%; top: 15.9%; }
.mv-impeccable .mv-bag-equipment .mv-equip-row[data-slot="torso"] { left: 28.4%; top: 28.7%; }
.mv-impeccable .mv-bag-equipment .mv-equip-row[data-slot="arms"] { left: 28.4%; top: 41.8%; }
.mv-impeccable .mv-bag-equipment .mv-equip-row[data-slot="legs"] { left: 28.4%; top: 54.8%; }
.mv-impeccable .mv-bag-equipment .mv-equip-row[data-slot="feet"] { left: 28.4%; top: 67.8%; }
.mv-impeccable .mv-bag-equipment .mv-equip-row[data-slot="cape"] { left: 71.6%; top: 15.9%; }
.mv-impeccable .mv-bag-equipment .mv-equip-row[data-slot="weapon"] { left: 71.6%; top: 28.7%; }
.mv-impeccable .mv-bag-equipment .mv-equip-row[data-slot="off-hand"] { left: 71.6%; top: 41.8%; }
.mv-impeccable .mv-bag-equipment .mv-equip-row[data-slot="ring"] { left: 71.6%; top: 54.8%; }
.mv-impeccable .mv-bag-equipment .mv-equip-row[data-slot="amulet"] { left: 71.6%; top: 67.8%; }
.mv-impeccable .mv-bag-equipment .mv-equip-row[data-slot="artifact"] { left: 50%; top: 47.4%; }
.mv-impeccable .mv-bag-equipment .mv-equip-row[data-slot="pickaxe"] { left: 23.7%; top: 94.9%; }
.mv-impeccable .mv-bag-equipment .mv-equip-row[data-slot="axe"] { left: 36.8%; top: 94.9%; }
.mv-impeccable .mv-bag-equipment .mv-equip-row[data-slot="sickle"] { left: 50%; top: 94.9%; }
.mv-impeccable .mv-bag-equipment .mv-equip-row[data-slot="shovel"] { left: 63.2%; top: 94.9%; }
.mv-impeccable .mv-bag-equipment .mv-equip-row[data-slot="fishing_pole"] { left: 76.3%; top: 94.9%; }

[data-theme="night"] .mv-impeccable .mv-equip-intro {
    border-color: #d78a62;
    background: rgba(25, 59, 69, .96);
    color: #f6edcf;
}

[data-theme="night"] .mv-impeccable .mv-equip-intro strong,
[data-theme="night"] .mv-impeccable .mv-equip-intro span {
    color: #f6edcf;
}

.mv-impeccable .mv-char-paperdoll.mv-cozy-panel {
    border: 0;
    background: transparent;
    box-shadow: none;
}

[data-theme="night"] .mv-impeccable .mv-char-paperdoll.mv-cozy-panel {
    border: 0;
    background: transparent;
    box-shadow: none;
}

.mv-impeccable .mv-pd-name-row {
    width: max-content;
    max-width: 100%;
    margin-inline: auto;
    padding: 4px 5px 4px 12px;
    border: 1px solid #315f55;
    border-radius: 9px;
    background: rgba(242, 235, 202, .94);
    box-shadow: 0 2px 0 rgba(34, 72, 62, .28);
}

[data-theme="night"] .mv-impeccable .mv-pd-name-row {
    border-color: #d78a62;
    background: rgba(25, 59, 69, .96);
    color: #f6edcf;
    box-shadow: 0 2px 0 rgba(5, 20, 25, .56);
}

[data-theme="night"] .mv-impeccable .mv-pd-name,
[data-theme="night"] .mv-impeccable .mv-pd-rename.mv-cozy-button {
    color: #f6edcf;
}

.mv-impeccable .mv-pd-slot.mv-cozy-slot {
    border-color: rgba(246, 237, 207, .86);
    background: rgba(24, 56, 58, .82);
    box-shadow: 0 2px 0 rgba(12, 30, 31, .42);
}

.mv-impeccable .mv-pd-slot.mv-cozy-slot:disabled {
    border-color: rgba(246, 237, 207, .64);
    background: rgba(24, 56, 58, .7);
    opacity: .92;
}

.mv-impeccable .mv-pd-slot .mv-icon {
    filter: none;
}

.mv-impeccable .mv-pd-glance {
    padding: 5px;
    border: 1px solid #315f55;
    border-radius: 10px;
    background: rgba(231, 237, 207, .92);
    box-shadow: 0 2px 0 rgba(34, 72, 62, .24);
}

.mv-impeccable .mv-more-panel[data-more-panel="settings"] .mv-settings-group.mv-cozy-panel {
    border: 2px solid #315f55;
    border-image: none;
    border-radius: 12px;
    background: rgba(231, 237, 207, .96);
    color: #243c43;
    box-shadow: 0 3px 0 rgba(34, 72, 62, .28);
    backdrop-filter: none;
    -webkit-backdrop-filter: none;
}

@media (max-width: 370px), (max-height: 740px) {
    .mv-impeccable .mv-bag .mv-bag-capacity { top: 137px; }
    .mv-impeccable .mv-bag .mv-bag-board { top: 200px; left: 15%; right: 15%; }
    .mv-impeccable .mv-bag .mv-item-grid { grid-template-columns: repeat(4, 54px); gap: 6px; }
    .mv-impeccable .mv-bag .mv-item-cell,
    .mv-impeccable .mv-bag .mv-item-ghost { width: 54px; height: 54px; min-height: 54px; }
    .mv-impeccable .mv-bag-equipment .mv-equip-row { width: 46px; min-width: 46px; height: 46px; min-height: 46px; }
    .mv-impeccable .mv-bag-equipment .mv-equip-art,
    .mv-impeccable .mv-bag-equipment .mv-equip-art .mv-icon,
    .mv-impeccable .mv-bag-equipment .mv-equip-art .mv-equip-placeholder { width: 41px !important; height: 41px !important; }
}

/* ═══════════════════════════════════════════════════════════════════
   Wave56: scene-owned Character stage
   One authored valet alcove carries all ten runtime equipment owners.
   The background supplies mounts; stateful icons never float as cards.
   ═══════════════════════════════════════════════════════════════════ */

.mv-impeccable .mv-pd-loadout-stage {
    position: relative;
    isolation: isolate;
    width: min(100%, 348px);
    aspect-ratio: 2 / 3;
    margin-inline: auto;
    overflow: hidden;
}

.mv-impeccable .mv-pd-loadout-stage::before {
    content: "";
    position: absolute;
    inset: 0;
    z-index: 0;
    background: url("/resources/img/backgrounds/bg-character-loadout-close-clean-cel-v1.png") center / 100% 100% no-repeat;
    pointer-events: none;
}

[data-theme="night"] .mv-impeccable .mv-pd-loadout-stage::before {
    filter: saturate(1.03) brightness(.92) contrast(1.02);
}

.mv-impeccable .mv-pd-loadout-stage .mv-pd-name-row {
    position: absolute;
    top: 10.4%;
    left: 50%;
    z-index: 5;
    width: max-content;
    max-width: 88%;
    margin: 0;
    min-height: 50px;
    padding: 0 4px 0 12px;
    border: 2px solid #b87843;
    border-radius: 9px;
    background: rgba(20, 61, 62, .97);
    color: #f6edcf;
    box-shadow: 0 3px 0 rgba(41, 25, 17, .48);
    transform: translateX(-50%);
    pointer-events: none;
}

.mv-impeccable .mv-pd-loadout-stage .mv-pd-name {
    color: #f6edcf;
}

.mv-impeccable .mv-pd-loadout-stage .mv-pd-rename.mv-cozy-button {
    min-height: 46px;
    border: 0;
    border-left: 1px solid rgba(246, 237, 207, .34);
    border-radius: 0;
    background: transparent;
    color: #f6edcf;
    box-shadow: none;
    pointer-events: auto;
}

[data-theme="night"] .mv-impeccable .mv-pd-loadout-stage .mv-pd-name-row {
    border-color: #d78a62;
    background: rgba(18, 54, 61, .98);
    color: #f6edcf;
    box-shadow: 0 3px 0 rgba(5, 20, 25, .62);
}

.mv-impeccable .mv-pd-loadout-stage .mv-pd-body,
.mv-impeccable .mv-pd-loadout-stage .mv-pd-bottom-equip {
    position: absolute;
    inset: 0;
    display: block;
    padding: 0;
    pointer-events: none;
}

.mv-impeccable .mv-pd-loadout-stage .mv-pd-left,
.mv-impeccable .mv-pd-loadout-stage .mv-pd-right,
.mv-impeccable .mv-pd-loadout-stage .mv-pd-bottom-left,
.mv-impeccable .mv-pd-loadout-stage .mv-pd-bottom-right {
    display: contents;
}

.mv-impeccable .mv-pd-loadout-stage .mv-pd-center {
    position: absolute;
    top: 37.8%;
    left: 50%;
    z-index: 2;
    display: block;
    width: 44%;
    transform: translateX(-50%);
    pointer-events: none;
}

.mv-impeccable .mv-pd-loadout-stage .mv-pd-portrait-frame.mv-cozy-slot {
    width: 100%;
    height: auto;
    aspect-ratio: 5 / 6;
}

.mv-impeccable .mv-pd-loadout-stage .mv-pd-slot.mv-cozy-slot {
    position: absolute;
    z-index: 4;
    width: 48px;
    min-width: 48px;
    height: 48px;
    min-height: 48px;
    padding: 5px;
    border: 0;
    border-radius: 7px;
    background: transparent;
    box-shadow: none;
    transform: translate(-50%, -50%);
    pointer-events: auto;
}

.mv-impeccable .mv-pd-loadout-stage .mv-pd-slot.mv-cozy-slot:disabled {
    border: 0;
    background: transparent;
    box-shadow: none;
    opacity: .82;
}

.mv-impeccable .mv-pd-loadout-stage .mv-pd-slot.mv-cozy-slot:not(:disabled):active {
    transform: translate(-50%, -50%) scale(.92);
}

.mv-impeccable .mv-pd-loadout-stage .mv-pd-slot.mv-cozy-slot:focus-visible {
    outline: 3px solid #bd5f43;
    outline-offset: 1px;
}

.mv-impeccable .mv-pd-loadout-stage .mv-pd-slot .mv-icon {
    width: 36px !important;
    height: 36px !important;
    filter: none;
}

.mv-impeccable .mv-pd-loadout-stage .mv-pd-slot-empty .mv-icon {
    width: 30px !important;
    height: 30px !important;
    opacity: .78;
    filter: none;
}

.mv-impeccable .mv-pd-loadout-stage .mv-pd-slot[data-slot="head"] { left: 16.553%; top: 34.896%; }
.mv-impeccable .mv-pd-loadout-stage .mv-pd-slot[data-slot="torso"] { left: 16.553%; top: 47.005%; }
.mv-impeccable .mv-pd-loadout-stage .mv-pd-slot[data-slot="arms"] { left: 16.553%; top: 59.115%; }
.mv-impeccable .mv-pd-loadout-stage .mv-pd-slot[data-slot="weapon"] { left: 83.057%; top: 34.896%; }
.mv-impeccable .mv-pd-loadout-stage .mv-pd-slot[data-slot="legs"] { left: 83.057%; top: 47.005%; }
.mv-impeccable .mv-pd-loadout-stage .mv-pd-slot[data-slot="feet"] { left: 83.057%; top: 59.115%; }
.mv-impeccable .mv-pd-loadout-stage .mv-pd-slot[data-slot="off-hand"] { left: 29.053%; top: 81.283%; }
.mv-impeccable .mv-pd-loadout-stage .mv-pd-slot[data-slot="cape"] { left: 42.920%; top: 81.283%; }
.mv-impeccable .mv-pd-loadout-stage .mv-pd-slot[data-slot="ring"] { left: 56.885%; top: 81.283%; }
.mv-impeccable .mv-pd-loadout-stage .mv-pd-slot[data-slot="amulet"] { left: 70.752%; top: 81.283%; }

[data-theme="night"] .mv-impeccable .mv-pd-loadout-stage .mv-pd-slot.mv-cozy-slot,
[data-theme="night"] .mv-impeccable .mv-pd-loadout-stage .mv-pd-slot.mv-cozy-slot:disabled {
    border: 0;
    background: transparent;
    box-shadow: none;
}

@media (max-width: 370px), (max-height: 740px) {
    .mv-impeccable .mv-pd-loadout-stage {
        width: min(100%, calc(326px - var(--mv-safe-bottom)));
    }

    .mv-impeccable .mv-pd-loadout-stage .mv-pd-name-row {
        max-width: 96%;
    }

    .mv-impeccable .mv-pd-loadout-stage .mv-pd-rename.mv-cozy-button {
        width: 72px;
        padding-inline: 8px;
    }

    .mv-impeccable .mv-pd-loadout-stage .mv-pd-slot.mv-cozy-slot {
        width: 44px;
        min-width: 44px;
        height: 44px;
        min-height: 44px;
        padding: 4px;
    }

    .mv-impeccable .mv-pd-loadout-stage .mv-pd-slot .mv-icon {
        width: 34px !important;
        height: 34px !important;
    }

    .mv-impeccable .mv-pd-loadout-stage .mv-pd-slot-empty .mv-icon {
        width: 28px !important;
        height: 28px !important;
    }
}

/* ═══════════════════════════════════════════════════════════════════
   Wave56.3: single-frame Character hierarchy
   The cabinet is the page. Low-frequency records live in a details sheet,
   so the primary stage never pretends to need page scrolling.
   ═══════════════════════════════════════════════════════════════════ */

.mv-impeccable .mv-tabbar {
    min-height: 58px;
    padding: 3px 4px max(3px, var(--mv-safe-bottom));
}

.mv-impeccable .mv-tab {
    min-height: 48px;
    padding-block: 1px;
}

.mv-impeccable .mv-tab-icon {
    width: 30px;
    height: 30px;
}

.mv-impeccable .mv-tab-icon .mv-icon {
    width: 26px !important;
    height: 26px !important;
}

.mv-impeccable .mv-more-header {
    min-height: 50px;
    padding: 2px 6px 4px;
}

.mv-impeccable .mv-more-header .mv-surface-header-art {
    width: 42px;
    height: 42px;
}

.mv-impeccable .mv-more-header .mv-surface-header-art .mv-icon {
    width: 40px !important;
    height: 40px !important;
}

.mv-impeccable .mv-more-nav {
    padding: 4px 0;
}

.mv-impeccable .mv-more-nav-button.mv-cozy-button {
    min-height: 56px;
    padding-block: 3px;
}

.mv-impeccable .mv-more-v2[data-more-panel="character"] .mv-more-view {
    overflow: hidden;
    padding: 0 2px;
}

.mv-impeccable .mv-more-panel[data-more-panel="character"],
.mv-impeccable .mv-more-panel[data-more-panel="character"] .mv-char-paperdoll {
    height: 100%;
    min-height: 0;
}

.mv-impeccable .mv-more-panel[data-more-panel="character"] .mv-char-paperdoll {
    justify-content: flex-start;
    gap: 0;
    padding: 0;
    overflow: hidden;
}

.mv-impeccable .mv-more-panel[data-more-panel="character"] .mv-pd-loadout-stage {
    width: auto;
    max-width: 100%;
    height: 100%;
    max-height: 522px;
    flex: none;
}

.mv-impeccable .mv-pd-loadout-stage .mv-pd-name-row {
    top: 4.8%;
    gap: 4px;
    padding-left: 10px;
}

.mv-impeccable .mv-pd-loadout-stage :is(.mv-pd-details, .mv-pd-rename).mv-cozy-button {
    width: 50px;
    min-width: 50px;
    min-height: 46px;
    padding-inline: 4px;
    border: 0;
    border-left: 1px solid rgba(246, 237, 207, .34);
    border-radius: 0;
    background: transparent;
    color: #f6edcf;
    box-shadow: none;
    pointer-events: auto;
}

.mv-impeccable .mv-pd-loadout-stage .mv-pd-slot .mv-icon {
    width: 41px !important;
    height: 41px !important;
}

.mv-impeccable .mv-pd-loadout-stage .mv-pd-slot-empty .mv-icon {
    width: 31px !important;
    height: 31px !important;
}

.mv-impeccable .mv-character-details-sheet {
    inset: auto 0 0;
    height: 100dvh;
}

.mv-impeccable .mv-character-details-sheet > .mv-sheet.mv-cozy-panel {
    display: flex;
    flex-direction: column;
    width: min(100%, 560px);
    max-height: min(82dvh, 680px);
    overflow: hidden;
    border: 2px solid #315f55;
    border-bottom: 0;
    border-radius: 16px 16px 0 0;
    background: #e7edcf;
    color: #243c43;
    box-shadow: 0 -5px 0 rgba(34, 72, 62, .28);
}

[data-theme="night"] .mv-impeccable .mv-character-details-sheet > .mv-sheet.mv-cozy-panel {
    border-color: #d78a62;
    background: #193b45;
    color: #f6edcf;
    box-shadow: 0 -5px 0 rgba(5, 20, 25, .58);
}

.mv-impeccable .mv-character-details-scroll {
    position: relative;
    min-height: 0;
    overflow-y: auto;
    overscroll-behavior: contain;
    scrollbar-width: none;
    padding: 2px 2px max(12px, var(--mv-safe-bottom));
}

.mv-impeccable .mv-character-details-scroll::-webkit-scrollbar {
    display: none;
}

.mv-impeccable .mv-character-details-scroll > :first-child {
    margin-top: 2px;
}

@media (max-width: 370px), (max-height: 740px) {
    .mv-impeccable .mv-more-header {
        min-height: 48px;
    }

    .mv-impeccable .mv-more-nav-button.mv-cozy-button {
        min-height: 52px;
    }

    .mv-impeccable .mv-pd-loadout-stage .mv-pd-name-row {
        max-width: 99%;
    }

    .mv-impeccable .mv-pd-loadout-stage :is(.mv-pd-details, .mv-pd-rename).mv-cozy-button {
        width: 46px;
        min-width: 46px;
    }

    .mv-impeccable .mv-pd-loadout-stage .mv-pd-slot .mv-icon {
        width: 39px !important;
        height: 39px !important;
    }

    .mv-impeccable .mv-pd-loadout-stage .mv-pd-slot-empty .mv-icon {
        width: 29px !important;
        height: 29px !important;
    }
}

/* ═══════════════════════════════════════════════════════════════════
   Wave57: scene-owned Journal route board
   One mounted field owns chapters, filters, milestones and live events.
   Dynamic truth stays in the existing Journal, quest and bestiary DOM.
   ═══════════════════════════════════════════════════════════════════ */

.mv-impeccable .mv-screen.mv-journal-route-board {
    --journal-wall: #91a792;
    --journal-frame: #214f4c;
    --journal-frame-light: #397267;
    --journal-board: #dce5c6;
    --journal-board-note: #f2ebca;
    --journal-board-ink: #24413f;
    --journal-board-soft: #5d7168;
    --journal-route: #bd5f43;
    --journal-route-dark: #783c31;
    --journal-brass: #c89449;
    padding: 0;
    background: var(--journal-wall);
    background-image: none;
    color: var(--journal-board-ink);
}

[data-theme="night"] .mv-impeccable .mv-screen.mv-journal-route-board {
    --journal-wall: #132d35;
    --journal-frame: #153f45;
    --journal-frame-light: #2d6264;
    /* The board is a lamp-lit tool. Night darkens its room／frame, not the
       readable route aperture or runtime event truth. */
    --journal-board: #dce5c6;
    --journal-board-note: #f2ebca;
    --journal-board-ink: #24413f;
    --journal-board-soft: #526b62;
    --journal-route: #df7b5b;
    --journal-route-dark: #874332;
    --journal-brass: #e0b45f;
    background: var(--journal-wall);
    background-image: none;
}

.mv-impeccable .mv-journal-route-board > .mv-journal-header {
    position: relative;
    z-index: 3;
    width: calc(100% - 20px);
    min-height: 50px;
    margin: 4px 10px 0;
    padding: 3px 10px;
    border: 2px solid var(--journal-frame-light);
    border-bottom: 0;
    border-radius: 16px 16px 0 0;
    background: var(--journal-frame);
    color: #f6edcf;
    box-shadow: 0 5px 14px rgba(21, 47, 44, .28);
    text-shadow: none;
}

.mv-impeccable .mv-journal-route-board > .mv-journal-header::after {
    content: "";
    position: absolute;
    right: 74px;
    bottom: 6px;
    width: 22px;
    height: 5px;
    border-radius: 3px;
    background: var(--journal-route);
}

.mv-impeccable .mv-journal-route-board > .mv-journal-header .mv-surface-header-art {
    width: 42px;
    height: 42px;
    flex: none;
    display: grid;
    place-items: center;
    border: 2px solid var(--journal-brass);
    border-radius: 50%;
    background: var(--journal-board-note);
    box-shadow: 0 2px 0 rgba(9, 35, 35, .42);
}

.mv-impeccable .mv-journal-route-board > .mv-journal-header .mv-surface-header-copy {
    color: #f6edcf;
}

.mv-impeccable .mv-journal-route-board > .mv-journal-header .mv-surface-header-copy strong {
    font-family: "Noto Serif TC", "PMingLiU", serif;
    font-size: 18px;
    letter-spacing: .08em;
}

.mv-impeccable .mv-journal-route-board > .mv-journal-header .mv-surface-header-copy small {
    color: #d3ddc8;
    letter-spacing: .04em;
}

.mv-impeccable .mv-journal-route-board > .mv-journal-nav {
    position: relative;
    z-index: 3;
    width: calc(100% - 20px);
    min-height: 48px;
    margin: 0 10px;
    padding: 2px 10px 4px;
    gap: 6px;
    border-right: 2px solid var(--journal-frame-light);
    border-left: 2px solid var(--journal-frame-light);
    background: var(--journal-frame);
}

.mv-impeccable .mv-journal-route-board > .mv-journal-nav::after {
    content: "";
    position: absolute;
    right: 10px;
    bottom: 0;
    left: 10px;
    height: 2px;
    background: var(--journal-frame-light);
}

.mv-impeccable .mv-journal-route-board > .mv-journal-nav .mv-journal-nav-button.mv-cozy-button {
    position: relative;
    min-height: 44px;
    padding: 3px 7px 4px;
    gap: 2px;
    border: 2px solid var(--journal-frame-light) !important;
    border-radius: 10px;
    background: #2a625a !important;
    background-image: none !important;
    color: #e8ecd6;
    box-shadow: 0 3px 0 rgba(8, 29, 29, .42);
    opacity: .82;
    transform: none;
}

.mv-impeccable .mv-journal-route-board > .mv-journal-nav .mv-journal-nav-button.mv-cozy-button[aria-pressed="true"] {
    border-color: #f0b088 !important;
    background: var(--journal-route) !important;
    color: #fff8e8;
    opacity: 1;
    transform: translateY(-1px);
}

.mv-impeccable .mv-journal-route-board > .mv-journal-nav .mv-journal-nav-button.mv-cozy-button:active {
    transform: scale(.96);
}

.mv-impeccable .mv-journal-route-board > .mv-journal-view {
    margin: 0 8px;
    padding: 0 2px calc(12px + var(--mv-safe-bottom));
    background: transparent;
}

.mv-impeccable .mv-journal-route-board > .mv-journal-view > .mv-journal-panel {
    position: relative;
    isolation: isolate;
    min-height: 100%;
    padding: 6px 12px calc(30px + var(--mv-safe-bottom));
    border: 2px solid var(--journal-frame);
    border-top: 0;
    border-radius: 0 0 16px 16px;
    background: var(--journal-board);
    color: var(--journal-board-ink);
    box-shadow: 0 6px 14px rgba(21, 47, 44, .26);
}

.mv-impeccable .mv-journal-route-board > .mv-journal-view > .mv-journal-panel::after {
    content: "";
    position: absolute;
    top: 9px;
    right: 9px;
    z-index: 0;
    width: 7px;
    height: 7px;
    border: 1px solid var(--journal-route-dark);
    border-radius: 50%;
    background: var(--journal-brass);
    box-shadow: 0 2px 0 rgba(42, 61, 51, .24);
    pointer-events: none;
}

.mv-impeccable .mv-route-board::before {
    content: "";
    position: absolute;
    top: 22px;
    bottom: 22px;
    left: 36px;
    z-index: 0;
    width: 6px;
    border: 2px solid var(--journal-route-dark);
    border-radius: 6px;
    background: var(--journal-route);
    pointer-events: none;
}

.mv-impeccable .mv-route-board > * {
    position: relative;
    z-index: 1;
}

.mv-impeccable .mv-route-board-heading.mv-cozy-panel {
    min-width: 62px;
    min-height: 38px;
    margin: 0 0 0 auto;
    padding: 0;
    display: grid;
    place-items: center;
    border: 0;
    border-radius: 0;
    background: transparent;
    color: #f6edcf;
    box-shadow: none;
}

.mv-impeccable .mv-route-board-heading .mv-journal-entry-count {
    min-height: 36px;
    padding: 4px 8px;
    display: grid;
    place-items: center;
    border: 1px solid var(--journal-brass);
    border-radius: 9px;
    background: var(--journal-frame-light);
    color: #fff3d6;
    box-shadow: 0 2px 0 rgba(9, 35, 35, .34);
}

.mv-impeccable .mv-route-prologue.mv-cozy-panel {
    min-height: 58px;
    margin: 0;
    padding: 3px 2px 5px;
    border: 0;
    border-bottom: 2px solid var(--journal-frame-light);
    border-radius: 0;
    background: transparent;
    color: var(--journal-board-ink);
    box-shadow: none;
}

.mv-impeccable .mv-route-prologue .mv-first-trail-title {
    display: none;
}

.mv-impeccable .mv-route-prologue .mv-first-trail-step.mv-cozy-slot {
    min-height: 46px;
    padding: 3px 2px;
    border: 2px solid var(--journal-frame-light);
    border-radius: 12px;
    background: var(--journal-board-note);
    color: var(--journal-board-ink);
    box-shadow: 0 3px 0 rgba(48, 76, 65, .18);
}

.mv-impeccable .mv-route-prologue .mv-first-trail-arrow {
    color: var(--journal-route);
    font-weight: 900;
}

.mv-impeccable .mv-route-legend {
    margin: 0 0 2px;
    padding: 3px 0 4px;
    grid-template-columns: 38px repeat(4, minmax(0, 1fr));
    align-items: center;
    gap: 3px;
    border-bottom: 2px solid var(--journal-frame-light);
}

.mv-impeccable .mv-route-legend-label {
    grid-column: auto;
    padding-left: 2px;
    color: var(--journal-board-soft);
    font-size: 8px;
    font-weight: 900;
    line-height: 1.2;
    letter-spacing: .08em;
}

.mv-impeccable .mv-route-legend .mv-chip-toggle.mv-cozy-button {
    min-width: 0;
    min-height: 44px;
    padding: 2px;
    gap: 1px;
    border: 2px solid var(--journal-frame-light) !important;
    border-radius: 11px;
    background: transparent !important;
    background-image: none !important;
    color: var(--journal-board-soft);
    box-shadow: 0 2px 0 rgba(48, 76, 65, .14);
    opacity: .72;
}

.mv-impeccable .mv-route-legend .mv-chip-toggle.mv-cozy-button.mv-on {
    border-color: var(--journal-route) !important;
    background: var(--journal-board-note) !important;
    color: var(--journal-route-dark);
    opacity: 1;
}

.mv-impeccable .mv-route-legend .mv-chip-toggle.mv-cozy-button:active {
    transform: scale(.94);
}

.mv-impeccable .mv-harvest-timeline {
    gap: 0;
    padding: 8px 0 26px;
}

.mv-impeccable .mv-harvest-timeline::before {
    top: 8px;
    bottom: 8px;
    left: 25px;
    width: 6px;
    border: 2px solid var(--journal-route-dark);
    border-radius: 6px;
    background: var(--journal-route);
}

.mv-impeccable .mv-route-stop {
    min-height: 64px;
    padding: 4px 0 2px;
    grid-template-columns: 58px minmax(0, 1fr);
    gap: 4px;
}

.mv-impeccable .mv-route-stop::before {
    display: none;
}

.mv-impeccable .mv-route-stop .mv-harvest-node.mv-cozy-slot {
    width: 52px;
    height: 52px;
    padding: 6px;
    border: 2px solid var(--journal-route-dark);
    border-radius: 50%;
    background: var(--journal-board-note);
    box-shadow: 0 3px 0 rgba(57, 78, 65, .22);
}

.mv-impeccable .mv-route-stop .mv-harvest-card.mv-cozy-panel {
    min-height: 56px;
    padding: 5px 4px 10px 7px;
    border: 0;
    border-bottom: 1px solid var(--journal-frame-light);
    border-radius: 0;
    background: transparent;
    color: var(--journal-board-ink);
    box-shadow: none;
}

.mv-impeccable .mv-route-stop .mv-harvest-header,
.mv-impeccable .mv-route-stop .mv-harvest-ts,
.mv-impeccable .mv-route-stop .mv-harvest-kills {
    color: var(--journal-board-soft);
}

.mv-impeccable .mv-route-stop .mv-harvest-label,
.mv-impeccable .mv-route-stop .mv-harvest-loc,
.mv-impeccable .mv-route-stop .mv-harvest-body,
.mv-impeccable .mv-route-stop .mv-harvest-lvup-line {
    color: var(--journal-board-ink);
}

.mv-impeccable .mv-route-stop .mv-harvest-chip.mv-cozy-slot {
    min-height: 34px;
    padding: 3px 6px;
    border: 1px solid var(--journal-frame-light);
    border-radius: 9px;
    background: var(--journal-board-note);
    color: var(--journal-board-ink);
}

.mv-impeccable .mv-route-source-marker {
    min-height: 32px;
    margin-left: 58px;
    justify-items: start;
    border-bottom: 1px solid var(--journal-frame-light);
    color: var(--journal-board-soft);
    letter-spacing: .08em;
}

.mv-impeccable .mv-route-endpoint.mv-cozy-panel {
    min-height: 220px;
    margin-left: 58px;
    padding: 28px 18px 54px;
    border: 0;
    border-radius: 0;
    background: transparent;
    color: var(--journal-board-soft);
    box-shadow: none;
}

.mv-impeccable .mv-route-endpoint > .mv-icon {
    width: 76px !important;
    height: 76px !important;
    padding: 10px;
    border: 2px solid var(--journal-route-dark);
    border-radius: 50%;
    background: var(--journal-board-note);
    box-shadow: 0 3px 0 rgba(57, 78, 65, .22);
}

.mv-impeccable .mv-route-endpoint strong {
    color: var(--journal-board-ink);
}

.mv-impeccable .mv-journal-route-board .mv-quests,
.mv-impeccable .mv-journal-route-board .mv-bestiary {
    gap: 8px;
}

.mv-impeccable .mv-journal-route-board .mv-quests > .mv-chip-toggle.mv-cozy-button {
    min-height: 46px;
    padding: 5px 10px;
    border: 2px solid var(--journal-frame-light) !important;
    border-radius: 10px;
    background: var(--journal-board-note) !important;
    background-image: none !important;
    color: var(--journal-board-ink);
    box-shadow: 0 2px 0 rgba(48, 76, 65, .16);
}

.mv-impeccable .mv-journal-route-board .mv-quest-list,
.mv-impeccable .mv-journal-route-board .mv-bestiary-list {
    position: relative;
    gap: 0;
    padding-left: 58px;
}

.mv-impeccable .mv-journal-route-board .mv-quest-list::before,
.mv-impeccable .mv-journal-route-board .mv-bestiary-list::before {
    content: "";
    position: absolute;
    top: 8px;
    bottom: 8px;
    left: 25px;
    width: 6px;
    border: 2px solid var(--journal-route-dark);
    border-radius: 6px;
    background: var(--journal-route);
}

.mv-impeccable .mv-journal-route-board .mv-quest.mv-cozy-panel {
    position: relative;
    padding: 0;
    border: 0;
    border-bottom: 1px solid var(--journal-frame-light);
    border-radius: 0;
    background: transparent;
    color: var(--journal-board-ink);
    box-shadow: none;
}

.mv-impeccable .mv-journal-route-board .mv-quest::before,
.mv-impeccable .mv-journal-route-board .mv-bestiary-row::before {
    content: "";
    position: absolute;
    top: 26px;
    left: -38px;
    width: 14px;
    height: 14px;
    border: 2px solid var(--journal-route-dark);
    border-radius: 50%;
    background: var(--journal-brass);
    transform: translateY(-50%);
}

.mv-impeccable .mv-journal-route-board .mv-quest-head.mv-cozy-button {
    min-height: 58px;
    padding: 5px 2px;
    border: 0 !important;
    border-radius: 0;
    background: transparent !important;
    background-image: none !important;
    color: var(--journal-board-ink);
    box-shadow: none;
}

.mv-impeccable .mv-journal-route-board .mv-quest.mv-open .mv-quest-head.mv-cozy-button {
    background: var(--journal-board-note) !important;
    color: var(--journal-route-dark);
}

.mv-impeccable .mv-journal-route-board .mv-quest-art.mv-cozy-slot,
.mv-impeccable .mv-journal-route-board .mv-bestiary-art.mv-cozy-slot {
    border: 2px solid var(--journal-frame-light);
    border-radius: 50%;
    background: var(--journal-board-note);
}

.mv-impeccable .mv-journal-route-board .mv-quest-state.mv-cozy-slot,
.mv-impeccable .mv-journal-route-board .mv-bestiary-kills.mv-cozy-slot {
    min-height: 32px;
    padding: 4px 7px;
    border: 1px solid var(--journal-frame-light);
    border-radius: 8px;
    background: var(--journal-board-note);
    color: var(--journal-route-dark);
}

.mv-impeccable .mv-journal-route-board .mv-quest-task.mv-cozy-slot {
    min-height: 44px;
    padding: 6px 8px;
    border: 0;
    border-top: 1px solid var(--journal-frame-light);
    border-radius: 0;
    background: transparent;
    color: var(--journal-board-ink);
}

.mv-impeccable .mv-journal-route-board .mv-bestiary-row.mv-cozy-button {
    position: relative;
    min-height: 58px;
    padding: 5px 2px;
    border: 0 !important;
    border-bottom: 1px solid var(--journal-frame-light) !important;
    border-radius: 0;
    background: transparent !important;
    background-image: none !important;
    color: var(--journal-board-ink);
    box-shadow: none;
}

.mv-impeccable .mv-journal-route-board .mv-empty {
    color: var(--journal-board-soft);
}

.mv-impeccable .mv-journal-route-board .mv-icon {
    filter: none;
}

@media (max-width: 370px), (max-height: 740px) {
    .mv-impeccable .mv-journal-route-board > .mv-journal-header {
        min-height: 46px;
        margin-top: 3px;
        padding-block: 2px;
    }

    .mv-impeccable .mv-journal-route-board > .mv-journal-header .mv-surface-header-art {
        width: 38px;
        height: 38px;
    }

    .mv-impeccable .mv-journal-route-board > .mv-journal-nav {
        min-height: 46px;
        padding-bottom: 2px;
    }

    .mv-impeccable .mv-journal-route-board > .mv-journal-nav .mv-journal-nav-button.mv-cozy-button {
        min-height: 44px;
        padding-inline: 4px;
    }

    .mv-impeccable .mv-journal-route-board > .mv-journal-view > .mv-journal-panel {
        padding: 5px 9px calc(24px + var(--mv-safe-bottom));
    }

    .mv-impeccable .mv-route-board::before {
        left: 32px;
    }

    .mv-impeccable .mv-route-prologue.mv-cozy-panel {
        min-height: 56px;
        padding-bottom: 4px;
    }

    .mv-impeccable .mv-route-prologue .mv-first-trail-step.mv-cozy-slot {
        min-height: 44px;
    }

    .mv-impeccable .mv-route-legend .mv-chip-toggle.mv-cozy-button {
        min-height: 44px;
    }

    .mv-impeccable .mv-route-stop {
        grid-template-columns: 54px minmax(0, 1fr);
    }

    .mv-impeccable .mv-route-stop .mv-harvest-node.mv-cozy-slot {
        width: 48px;
        height: 48px;
    }
}

@media (prefers-reduced-motion: reduce) {
    .mv-impeccable .mv-journal-route-board button {
        transition: none;
    }
}

/* Wave57.1: illustrated route-board material pass.
   The raster owns only the static frame and map field; live route truth stays in DOM. */
.mv-impeccable .mv-screen.mv-journal-route-board {
    position: relative;
    overflow: hidden;
    background: #294b45;
}

.mv-impeccable .mv-screen.mv-journal-route-board::before {
    content: "";
    position: absolute;
    inset: 0;
    z-index: 0;
    background-image: url("/resources/img/backgrounds/bg-journal-route-board-clean-cel-v1.webp");
    background-position: center;
    background-size: 100% 100%;
    background-repeat: no-repeat;
    opacity: 1;
    filter: none;
    pointer-events: none;
}

[data-theme="night"] .mv-impeccable .mv-screen.mv-journal-route-board::before {
    filter: saturate(1.03) brightness(.92) contrast(1.02);
}

.mv-impeccable .mv-journal-route-board > :is(.mv-journal-header, .mv-journal-nav, .mv-journal-view) {
    position: relative;
    z-index: 1;
}

.mv-impeccable .mv-journal-route-board > .mv-journal-header {
    width: calc(100% - 44px);
    min-height: 50px;
    margin: 10px 22px 0;
    padding: 4px 12px;
    border: 0;
    border-bottom: 2px solid var(--journal-brass);
    border-radius: 12px 12px 0 0;
    background: rgba(18, 67, 64, .94);
    box-shadow: none;
}

[data-theme="night"] .mv-impeccable .mv-journal-route-board > .mv-journal-header,
[data-theme="night"] .mv-impeccable .mv-journal-route-board > .mv-journal-nav {
    background: rgba(13, 43, 49, .94);
}

.mv-impeccable .mv-journal-route-board > .mv-journal-header::after {
    right: 72px;
    bottom: 5px;
}

.mv-impeccable .mv-journal-route-board > .mv-journal-nav {
    width: calc(100% - 44px);
    margin: 0 22px;
    padding: 2px 8px 5px;
    border: 0;
    background: rgba(18, 67, 64, .94);
}

.mv-impeccable .mv-journal-route-board > .mv-journal-view {
    margin: 0 32px 52px;
    padding: 0 2px calc(12px + var(--mv-safe-bottom));
}

.mv-impeccable .mv-journal-route-board > .mv-journal-view > .mv-journal-panel {
    padding: 7px 5px calc(30px + var(--mv-safe-bottom));
    border: 0;
    background: transparent;
    box-shadow: none;
}

.mv-impeccable .mv-journal-route-board > .mv-journal-view > .mv-journal-panel::after {
    display: none;
}

.mv-impeccable .mv-route-legend {
    grid-template-columns: 32px repeat(4, minmax(0, 1fr));
    border-bottom-color: rgba(57, 114, 103, .48);
}

.mv-impeccable .mv-route-legend-label {
    font-size: 9px;
    text-align: center;
}

.mv-impeccable .mv-harvest-timeline::before {
    left: 23px;
    width: 5px;
}

.mv-impeccable .mv-route-stop {
    grid-template-columns: 54px minmax(0, 1fr);
    gap: 3px;
    padding-block: 5px 4px;
}

.mv-impeccable .mv-route-stop::after {
    content: "";
    position: absolute;
    top: 28px;
    left: 42px;
    z-index: 0;
    width: 15px;
    height: 4px;
    border: 1px solid var(--journal-route-dark);
    border-radius: 4px;
    background: var(--journal-route);
}

.mv-impeccable .mv-route-stop .mv-harvest-node.mv-cozy-slot {
    z-index: 1;
    width: 48px;
    height: 48px;
    padding: 5px;
    border-color: var(--journal-brass);
    box-shadow: 0 3px 0 rgba(57, 78, 65, .24), 0 0 0 2px var(--journal-route-dark);
}

.mv-impeccable .mv-route-stop .mv-harvest-card.mv-cozy-panel {
    min-height: 54px;
    padding: 5px 3px 7px 8px;
    border-bottom: 0;
}

.mv-impeccable .mv-route-stop .mv-harvest-label,
.mv-impeccable .mv-route-stop .mv-harvest-loc,
.mv-impeccable .mv-route-stop .mv-harvest-lvup-line b {
    font-family: "Noto Serif TC", "PMingLiU", serif;
    letter-spacing: .04em;
}

.mv-impeccable .mv-route-source-marker {
    min-height: 30px;
    margin: 2px 0 2px 54px;
    padding: 3px 9px;
    align-self: flex-start;
    width: auto;
    min-width: 138px;
    border: 1px solid rgba(120, 60, 49, .35);
    border-radius: 3px;
    background: rgba(247, 233, 205, .72);
    color: var(--journal-route-dark);
    box-shadow: 0 2px 0 rgba(57, 78, 65, .14);
    transform: rotate(-.4deg);
}

.mv-impeccable .mv-route-source-marker[hidden] {
    display: none !important;
}

[data-theme="night"] .mv-impeccable .mv-route-source-marker {
    background: rgba(242, 235, 202, .92);
}

.mv-impeccable .mv-journal-route-board .mv-quest.mv-cozy-panel,
.mv-impeccable .mv-journal-route-board .mv-bestiary-row.mv-cozy-button {
    border-bottom-color: transparent !important;
}

.mv-impeccable .mv-journal-route-board .mv-quest::before,
.mv-impeccable .mv-journal-route-board .mv-bestiary-row::before {
    border-color: var(--journal-brass);
    box-shadow: 0 0 0 2px var(--journal-route-dark);
}

@media (max-width: 370px), (max-height: 740px) {
    .mv-impeccable .mv-journal-route-board > .mv-journal-header {
        width: calc(100% - 36px);
        margin: 8px 18px 0;
    }

    .mv-impeccable .mv-journal-route-board > .mv-journal-nav {
        width: calc(100% - 36px);
        margin-inline: 18px;
    }

    .mv-impeccable .mv-journal-route-board > .mv-journal-view {
        margin-inline: 26px;
    }

    .mv-impeccable .mv-journal-route-board > .mv-journal-view > .mv-journal-panel {
        padding-inline: 4px;
    }
}

/* ═══════════════════════════════════════════════════════════════════
   Wave58: clear moonlight final authority.
   The outdoor raster must visibly enter night, while runtime nodes,
   portraits, objects, copy and stable chrome keep their authored colour.
   ═══════════════════════════════════════════════════════════════════ */
[data-theme="night"] .mv-impeccable .mv-village-map[data-location] .mv-village-map-img {
    filter: saturate(1.05) brightness(.82) contrast(1.04);
}

/* Stable chrome stays legible regardless of the scene below it.  Base cozy
   sheets intentionally use brown day ink, so the final night authority must
   reclaim every sheet title and its persistent close affordance. */
[data-theme="night"] body.mv-impeccable .mv-sheet.mv-cozy-panel .mv-sheet-title-copy h3,
[data-theme="night"] body.mv-impeccable .mv-sheet.mv-cozy-panel .mv-sheet-visible-close {
    color: var(--ink);
}

/* ═══════════════════════════════════════════════════════════════════
   Wave59: scene-owned More settings instrument desk.
   The raster supplies five empty physical mounts. Runtime DOM retains
   every icon, Traditional Chinese label, value and interactive state.
   ═══════════════════════════════════════════════════════════════════ */
.mv-impeccable .mv-more-v2[data-more-panel="settings"] .mv-more-view {
    overflow: hidden;
    padding: 0 2px var(--mv-safe-bottom);
}

.mv-impeccable .mv-more-panel[data-more-panel="settings"] {
    height: 100%;
    min-height: 0;
    gap: 0;
    padding: 0;
    border: 0;
    border-radius: 0;
    background: transparent;
    box-shadow: none;
}

.mv-impeccable .mv-more-panel[data-more-panel="settings"] .mv-settings-group[data-more-group="settings"] {
    position: relative;
    isolation: isolate;
    width: min(100%, 360px);
    height: 100%;
    min-height: 0;
    max-height: 560px;
    margin: auto;
    padding: 0;
    overflow: hidden;
    border: 0;
    border-radius: 0;
    background: transparent;
    box-shadow: none;
}

.mv-impeccable .mv-more-panel[data-more-panel="settings"] .mv-settings-group[data-more-group="settings"]::before {
    content: "";
    position: absolute;
    inset: 0;
    z-index: 0;
    background: url("/resources/img/backgrounds/bg-more-settings-campaign-desk-clean-cel-v1.webp") center / 100% 100% no-repeat;
    filter: none;
    pointer-events: none;
}

[data-theme="night"] .mv-impeccable .mv-more-panel[data-more-panel="settings"] .mv-settings-group[data-more-group="settings"]::before {
    filter: saturate(1.03) brightness(.78) contrast(1.06);
}

[data-theme="night"] .mv-impeccable .mv-more-panel[data-more-panel="settings"] .mv-settings-group[data-more-group="settings"] {
    padding: 0;
    border: 0;
    border-radius: 0;
    background: transparent;
    box-shadow: none;
}

.mv-impeccable .mv-more-panel[data-more-panel="settings"] .mv-settings-group[data-more-group="settings"] > h3 {
    position: absolute;
    top: 15.7%;
    left: 31%;
    right: 31%;
    z-index: 2;
    min-height: 30px;
    margin: 0;
    padding: 2px 6px;
    justify-content: center;
    border: 1px solid #e0b45f;
    border-radius: 6px;
    background: #173f46;
    color: #f4e8c8;
    box-shadow: 0 2px 0 rgba(18, 45, 54, .42);
    font-size: 12px;
    line-height: 1;
}

.mv-impeccable .mv-more-panel[data-more-panel="settings"] .mv-settings-group[data-more-group="settings"] > h3 .mv-icon {
    width: 19px !important;
    height: 19px !important;
    filter: none;
}

.mv-impeccable .mv-more-panel[data-more-panel="settings"] .mv-setting-row.mv-cozy-panel {
    position: absolute;
    left: 9.4%;
    z-index: 1;
    display: grid;
    grid-template-columns: 29.5% minmax(0, 47.5%) 23%;
    align-items: center;
    width: 81.2%;
    height: 11.3%;
    min-height: 44px;
    gap: 0;
    margin: 0;
    padding: 0;
    border: 0;
    border-radius: 0;
    background: transparent;
    color: #f4e8c8;
    box-shadow: none;
}

[data-theme="night"] .mv-impeccable .mv-more-panel[data-more-panel="settings"] .mv-setting-row.mv-cozy-panel {
    left: 9.4%;
    width: 81.2%;
    height: 11.3%;
    padding: 0;
    border: 0;
    border-radius: 0;
    background: transparent;
    box-shadow: none;
}

.mv-impeccable .mv-more-panel[data-more-panel="settings"] .mv-setting-row:nth-of-type(1) { top: 20.2%; }
.mv-impeccable .mv-more-panel[data-more-panel="settings"] .mv-setting-row:nth-of-type(2) { top: 33.8%; }
.mv-impeccable .mv-more-panel[data-more-panel="settings"] .mv-setting-row:nth-of-type(3) { top: 47.3%; }
.mv-impeccable .mv-more-panel[data-more-panel="settings"] .mv-setting-row:nth-of-type(4) { top: 60.8%; }
.mv-impeccable .mv-more-panel[data-more-panel="settings"] .mv-setting-row:nth-of-type(5) { top: 74.1%; }

.mv-impeccable .mv-more-panel[data-more-panel="settings"] .mv-setting-row > .mv-icon {
    justify-self: center;
    width: 40px !important;
    height: 40px !important;
    padding: 5px;
    border: 0;
    background: transparent;
    filter: none;
}

.mv-impeccable .mv-more-panel[data-more-panel="settings"] .mv-setting-row > span {
    min-width: 0;
    padding-inline: 4px;
    color: #f4e8c8;
    font-size: clamp(11px, 3.3vw, 13px);
    font-weight: 800;
    line-height: 1.25;
    text-align: left;
    text-shadow: 0 1px 0 rgba(5, 20, 25, .72);
}

.mv-impeccable .mv-more-panel[data-more-panel="settings"] .mv-setting-row input[type="checkbox"],
.mv-impeccable .mv-more-panel[data-more-panel="settings"] .mv-setting-number {
    justify-self: center;
    width: 44px;
    height: 44px;
    min-height: 44px;
    margin: 0;
    padding: 0;
    border: 2px solid #e0b45f;
    border-radius: 5px;
    background: #102d36;
    color: #f4e8c8;
    box-shadow: inset 0 0 0 2px rgba(16, 45, 54, .72), 0 2px 0 rgba(5, 20, 25, .42);
    filter: none;
}

.mv-impeccable .mv-more-panel[data-more-panel="settings"] .mv-setting-row input[type="checkbox"]:checked {
    border-color: #ffd0a6;
    background: #b85f49;
    box-shadow: inset 0 0 0 3px #173f46, 0 2px 0 rgba(5, 20, 25, .42);
}

.mv-impeccable .mv-more-panel[data-more-panel="settings"] .mv-setting-row:has(input[type="checkbox"]:checked)::after {
    top: 50%;
    right: 0;
    width: 23%;
    transform: translateY(-53%);
    color: #fff8e8;
    text-align: center;
    text-shadow: 0 1px 2px rgba(5, 20, 25, .8);
}

.mv-impeccable .mv-more-panel[data-more-panel="settings"] .mv-setting-number {
    font-size: 16px;
    font-weight: 900;
    text-align: center;
}

.mv-impeccable .mv-more-panel[data-more-panel="settings"] .mv-setting-row input:focus-visible {
    outline: 3px solid #fff8e8;
    outline-offset: 2px;
}

@media (max-width: 370px), (max-height: 740px) {
    .mv-impeccable .mv-more-v2[data-more-panel="settings"] .mv-more-header small {
        display: none;
    }

    .mv-impeccable .mv-more-panel[data-more-panel="settings"] .mv-settings-group[data-more-group="settings"] > h3 {
        min-height: 28px;
        padding-inline: 4px;
        font-size: 11px;
    }

    .mv-impeccable .mv-more-panel[data-more-panel="settings"] .mv-setting-row > .mv-icon {
        width: 38px !important;
        height: 38px !important;
    }

    .mv-impeccable .mv-more-panel[data-more-panel="settings"] .mv-setting-row > span {
        padding-inline: 2px;
        font-size: 11px;
    }
}

/* ═══════════════════════════════════════════════════════════════════
   Wave60: scene-owned More travel wayfinder kiosk.
   THESIS: one outdoor route apparatus owns travel; reject the web-card list.
   OWN-WORLD: clear road sky, edge-set teal posts, wide flax route canvas, brass and coral rail.
   STORY: locate the current stop, read the truthful route, choose one destination.
   FIRST VIEWPORT: title latch, current station and one complete reachable stop.
   FORM: front-facing wayfinder kiosk; local extension of the Living World Diorama.
   FINISH: unreviewed and undocumented is unfinished; this build ends with the finish review, the verdict, and DESIGN.md.
   ═══════════════════════════════════════════════════════════════════ */
.mv-impeccable .mv-more-v2[data-more-panel="travel"] .mv-more-view {
    overflow: hidden;
    padding: 0 2px var(--mv-safe-bottom);
}

.mv-impeccable .mv-more-panel[data-more-panel="travel"] {
    height: 100%;
    min-height: 0;
    gap: 0;
    padding: 0;
    overflow: hidden;
    border: 0;
    border-radius: 0;
    background: transparent;
    box-shadow: none;
}

.mv-impeccable .mv-more-panel[data-more-panel="travel"] .mv-map.mv-cozy-panel {
    position: relative;
    isolation: isolate;
    width: min(100%, 360px);
    height: 100%;
    min-height: 0;
    margin: 0 auto;
    padding: 0;
    overflow: hidden;
    border: 0;
    border-radius: 0;
    background: transparent;
    box-shadow: none;
}

.mv-impeccable .mv-more-panel[data-more-panel="travel"] .mv-map::before {
    content: "";
    position: absolute;
    inset: 0;
    z-index: 0;
    background: url("/resources/img/backgrounds/bg-more-travel-wayfinder-kiosk-wide-canvas-clean-cel-v2.webp") center bottom / 110% 110% no-repeat;
    filter: none;
    pointer-events: none;
}

[data-theme="night"] .mv-impeccable .mv-more-panel[data-more-panel="travel"] .mv-map::before {
    filter: saturate(1.04) brightness(.79) contrast(1.06);
}

.mv-impeccable .mv-more-panel[data-more-panel="travel"] .mv-map > summary.mv-cozy-button {
    position: absolute;
    top: 12.4%;
    left: 26%;
    right: 26%;
    z-index: 3;
    min-height: 44px;
    margin: 0;
    padding: 3px 21px 3px 8px;
    justify-content: center;
    border: 0;
    border-radius: 0;
    background: transparent;
    color: #f4e8c8;
    box-shadow: none;
    text-shadow: 0 1px 1px rgba(5, 20, 25, .72);
}

.mv-impeccable .mv-more-panel[data-more-panel="travel"] .mv-map > summary h3 {
    min-width: 0;
    min-height: 0;
    justify-content: center;
    gap: 4px;
    color: inherit;
    font-size: clamp(11px, 3.15vw, 13px);
    line-height: 1;
    white-space: nowrap;
}

.mv-impeccable .mv-more-panel[data-more-panel="travel"] .mv-map > summary h3 .mv-icon {
    width: 20px !important;
    height: 20px !important;
    filter: none;
}

.mv-impeccable .mv-more-panel[data-more-panel="travel"] .mv-map > summary::after {
    content: "";
    position: absolute;
    right: 10px;
    width: 7px;
    height: 7px;
    margin: 0;
    border-right: 2px solid #e0b45f;
    border-bottom: 2px solid #e0b45f;
    transform: translateY(-4px) rotate(45deg);
    transition: transform 150ms ease-out;
}

.mv-impeccable .mv-more-panel[data-more-panel="travel"] .mv-map:not([open]) > summary::after {
    transform: translateY(0) rotate(-45deg);
}

.mv-impeccable .mv-more-panel[data-more-panel="travel"] .mv-map > summary:focus-visible {
    outline: 3px solid #fff8e8;
    outline-offset: -3px;
}

.mv-impeccable .mv-more-panel[data-more-panel="travel"] .mv-map-list {
    position: absolute;
    top: 21.8%;
    right: 10.8%;
    bottom: 15.8%;
    left: 10.8%;
    z-index: 2;
    display: flex;
    min-height: 0;
    gap: 5px;
    padding: 4px 4px 12px;
    overflow-x: hidden;
    overflow-y: auto;
    overscroll-behavior: contain;
    scrollbar-width: thin;
    scrollbar-color: #b85f49 transparent;
}

.mv-impeccable .mv-more-panel[data-more-panel="travel"] .mv-map-list::-webkit-scrollbar {
    width: 5px;
}

.mv-impeccable .mv-more-panel[data-more-panel="travel"] .mv-map-list::-webkit-scrollbar-thumb {
    border-radius: 5px;
    background: #b85f49;
}

.mv-impeccable .mv-more-panel[data-more-panel="travel"] .mv-map-list::before {
    content: "";
    position: absolute;
    top: 11px;
    bottom: 12px;
    left: 25px;
    z-index: -1;
    width: 3px;
    border-radius: 3px;
    background: #b85f49;
    box-shadow: 0 0 0 1px #8a4e3d;
}

.mv-impeccable .mv-more-panel[data-more-panel="travel"] .mv-map-group {
    position: relative;
    min-height: 25px;
    margin: 2px 0 0 44px;
    padding: 4px 9px 4px 15px;
    align-self: flex-start;
    border: 1px solid #8c6b3c;
    background: #f4e8c8;
    color: #31545a;
    clip-path: polygon(8px 0, 100% 0, 100% 100%, 8px 100%, 0 50%);
    font-size: 10px;
    font-weight: 900;
    letter-spacing: .08em;
    line-height: 15px;
}

.mv-impeccable .mv-more-panel[data-more-panel="travel"] .mv-map-group .mv-icon {
    width: 16px !important;
    height: 16px !important;
    margin-right: 3px;
    filter: none;
}

.mv-impeccable .mv-more-panel[data-more-panel="travel"] .mv-map-row.mv-cozy-button {
    position: relative;
    z-index: 1;
    display: grid;
    grid-template-columns: 52px minmax(0, 1fr);
    align-items: center;
    width: 100%;
    min-height: 56px;
    gap: 0;
    margin: 0;
    padding: 0;
    overflow: visible;
    border: 0;
    border-radius: 0;
    background: transparent;
    color: #243c43;
    box-shadow: none;
    text-shadow: none;
}

.mv-impeccable .mv-more-panel[data-more-panel="travel"] .mv-map-row::before {
    content: "";
    position: absolute;
    top: 50%;
    left: 25px;
    z-index: -1;
    width: 35px;
    height: 3px;
    background: #e0b45f;
    transform: translateY(-50%);
}

.mv-impeccable .mv-more-panel[data-more-panel="travel"] .mv-map-icon {
    position: relative;
    z-index: 2;
    display: grid;
    place-items: center;
    width: 46px;
    height: 46px;
    justify-self: start;
    border: 3px solid #e0b45f;
    border-radius: 50%;
    background: #173f46;
    box-shadow: 0 3px 7px rgba(33, 60, 55, .28);
}

.mv-impeccable .mv-more-panel[data-more-panel="travel"] .mv-map-icon .mv-icon {
    width: 32px !important;
    height: 32px !important;
    filter: none;
}

.mv-impeccable .mv-more-panel[data-more-panel="travel"] .mv-map-row .mv-action-text {
    position: relative;
    z-index: 1;
    min-height: 46px;
    justify-content: center;
    padding: 5px 24px 5px 13px;
    border: 1px solid #8c6b3c;
    background: #f4e8c8;
    clip-path: polygon(8px 0, 100% 0, 100% 100%, 8px 100%, 0 50%);
}

.mv-impeccable .mv-more-panel[data-more-panel="travel"] .mv-map-row:not(.mv-map-far):not(.mv-map-here) .mv-action-text::after {
    content: "";
    position: absolute;
    top: 50%;
    right: 10px;
    width: 8px;
    height: 8px;
    border-top: 2px solid #a9513d;
    border-right: 2px solid #a9513d;
    transform: translateY(-50%) rotate(45deg);
}

.mv-impeccable .mv-more-panel[data-more-panel="travel"] .mv-action-label {
    overflow: hidden;
    color: inherit;
    font-size: 13px;
    font-weight: 900;
    line-height: 17px;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.mv-impeccable .mv-more-panel[data-more-panel="travel"] .mv-action-sub {
    overflow: hidden;
    color: #55706f;
    font-size: 10px;
    font-weight: 700;
    line-height: 14px;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.mv-impeccable .mv-more-panel[data-more-panel="travel"] .mv-map-row.mv-map-here .mv-map-icon {
    border-color: #fff0b3;
    background: #a9513d;
}

.mv-impeccable .mv-more-panel[data-more-panel="travel"] .mv-map-row.mv-map-here .mv-action-text {
    border-color: #e0b45f;
    background: #315f55;
    color: #fff8e8;
}

.mv-impeccable .mv-more-panel[data-more-panel="travel"] .mv-map-row.mv-map-here .mv-action-sub {
    color: #f4d9ad;
}

.mv-impeccable .mv-more-panel[data-more-panel="travel"] .mv-map-row.mv-map-far {
    opacity: 1;
}

.mv-impeccable .mv-more-panel[data-more-panel="travel"] .mv-map-row.mv-map-far .mv-map-icon {
    border-color: #8fa49b;
    background: #6f8178;
}

.mv-impeccable .mv-more-panel[data-more-panel="travel"] .mv-map-row.mv-map-far .mv-action-text {
    border-color: #a5a78f;
    background: #dfe0c5;
    color: #596661;
}

.mv-impeccable .mv-more-panel[data-more-panel="travel"] .mv-map-row:focus-visible {
    outline: 3px solid #a9513d;
    outline-offset: 2px;
}

.mv-impeccable .mv-more-panel[data-more-panel="travel"] .mv-map-row:not(.mv-map-far):not(.mv-map-here):active {
    transform: translateY(1px) scale(.985);
}

.mv-impeccable .mv-more-panel[data-more-panel="travel"] .mv-map-hint.mv-cozy-panel {
    position: absolute;
    right: 22%;
    bottom: 8.8%;
    left: 22%;
    z-index: 3;
    display: flex;
    width: auto;
    min-height: 24px;
    margin: 0;
    padding: 4px 6px;
    align-items: center;
    justify-content: center;
    gap: 4px;
    border: 0;
    border-radius: 0;
    background: transparent;
    color: #f4e8c8;
    box-shadow: none;
    font-size: 9px;
    font-weight: 800;
    line-height: 12px;
    text-align: center;
}

.mv-impeccable .mv-more-panel[data-more-panel="travel"] .mv-map-hint .mv-icon {
    width: 20px !important;
    height: 20px !important;
    flex: none;
    filter: none;
}

.mv-impeccable .mv-more-panel[data-more-panel="travel"] .mv-map > .mv-scroll-hint[data-axis="y"] {
    position: absolute;
    right: auto;
    bottom: .7%;
    left: 50%;
    z-index: 5;
    width: 32px;
    height: 32px;
    transform: translateX(-50%);
}

.mv-impeccable .mv-more-panel[data-more-panel="travel"] .mv-map > .mv-scroll-hint .mv-scroll-hint-dot {
    position: static;
    border: 2px solid #fff0b3;
    border-radius: 50%;
    background: #a9513d;
    color: #fff8e8;
    box-shadow: 0 3px 7px rgba(33, 60, 55, .28);
}

[data-theme="night"] .mv-impeccable .mv-more-panel[data-more-panel="travel"] :is(.mv-map-row, .mv-map-hint, .mv-map-group, .mv-map-icon, .mv-action-text, .mv-icon) {
    filter: none;
}

@media (max-width: 370px), (max-height: 740px) {
    .mv-impeccable .mv-more-v2[data-more-panel="travel"] .mv-more-header small {
        display: none;
    }

    .mv-impeccable .mv-more-panel[data-more-panel="travel"] .mv-map > summary.mv-cozy-button {
        top: 12.1%;
        min-height: 44px;
    }

    .mv-impeccable .mv-more-panel[data-more-panel="travel"] .mv-map-list {
        top: 21.7%;
        bottom: calc(25.7% + min(var(--mv-safe-bottom), 16px));
        gap: 2px;
        padding-top: 2px;
    }

    .mv-impeccable .mv-more-panel[data-more-panel="travel"] .mv-map-row.mv-cozy-button {
        min-height: 46px;
        grid-template-columns: 48px minmax(0, 1fr);
    }

    .mv-impeccable .mv-more-panel[data-more-panel="travel"] .mv-map-icon {
        width: 44px;
        height: 44px;
    }

    .mv-impeccable .mv-more-panel[data-more-panel="travel"] .mv-map-icon .mv-icon {
        width: 30px !important;
        height: 30px !important;
    }

    .mv-impeccable .mv-more-panel[data-more-panel="travel"] .mv-map-row .mv-action-text {
        min-height: 44px;
        padding-inline: 12px 22px;
    }

    .mv-impeccable .mv-more-panel[data-more-panel="travel"] .mv-map-hint.mv-cozy-panel {
        right: 20%;
        left: 20%;
        font-size: 8px;
        line-height: 11px;
    }
}

@media (prefers-reduced-motion: reduce) {
    .mv-impeccable .mv-more-panel[data-more-panel="travel"] .mv-map > summary::after {
        transition: none;
    }
}

/* ═══════════════════════════════════════════════════════════════════
   Wave61: scene-owned More saves traveller archive.
   THESIS: one moonflower archive owns every save action; reject the web-card stack.
   OWN-WORLD: deep-teal cabinet, walnut frame, moon-gold fittings and one lamp-lit ledger bay.
   STORY: read the cloud seal, secure a local copy, recover or deliberately clear the journey.
   FIRST VIEWPORT: archive title, cloud truth and all four local save seals.
   FORM: front-facing traveller archive; local extension of the Living World Diorama.
   FINISH: unreviewed and undocumented is unfinished; this build ends with the finish review, the verdict, and DESIGN.md.
   ═══════════════════════════════════════════════════════════════════ */
.mv-impeccable .mv-more-v2[data-more-panel="saves"] .mv-more-view {
    overflow: hidden;
    padding: 0 2px var(--mv-safe-bottom);
}

.mv-impeccable .mv-more-panel[data-more-panel="saves"] {
    height: 100%;
    min-height: 0;
    gap: 0;
    padding: 0;
    overflow: hidden;
    border: 0;
    border-radius: 0;
    background: transparent;
    box-shadow: none;
}

.mv-impeccable .mv-more-panel[data-more-panel="saves"] .mv-save-archive {
    position: relative;
    isolation: isolate;
    width: min(100%, 360px);
    height: 100%;
    min-height: 0;
    max-height: 590px;
    margin: auto;
    overflow: hidden;
}

.mv-impeccable .mv-more-panel[data-more-panel="saves"] .mv-save-archive::before {
    content: "";
    position: absolute;
    inset: 0;
    z-index: 0;
    background: url("/resources/img/backgrounds/bg-more-saves-traveller-archive-clean-cel-v1.webp") center / 100% 100% no-repeat;
    filter: saturate(.96) brightness(1.04);
    pointer-events: none;
}

[data-theme="night"] .mv-impeccable .mv-more-panel[data-more-panel="saves"] .mv-save-archive::before {
    filter: saturate(.96) brightness(.88);
}

.mv-impeccable .mv-more-panel[data-more-panel="saves"] .mv-save-archive-title {
    position: absolute;
    top: 18.9%;
    right: 32.5%;
    left: 32.5%;
    z-index: 3;
    display: flex;
    min-height: 34px;
    margin: 0;
    padding: 2px 4px;
    align-items: center;
    justify-content: center;
    gap: 4px;
    overflow: hidden;
    color: #f4e8c8;
    font-family: "Noto Serif TC", "PMingLiU", serif;
    font-size: clamp(10px, 2.9vw, 12px);
    font-weight: 900;
    line-height: 1;
    letter-spacing: .04em;
    text-align: center;
    text-shadow: 0 1px 1px rgba(5, 20, 25, .78);
    white-space: nowrap;
}

.mv-impeccable .mv-more-panel[data-more-panel="saves"] .mv-save-archive-title .mv-icon {
    width: 18px !important;
    height: 18px !important;
    flex: none;
    filter: none;
}

.mv-impeccable .mv-more-panel[data-more-panel="saves"] .mv-save-archive-scroll {
    position: absolute;
    top: 26.3%;
    right: 14.5%;
    bottom: 24.2%;
    left: 14.5%;
    z-index: 2;
    min-width: 0;
    min-height: 0;
    padding: 3px 5px 14px;
    overflow-x: hidden;
    overflow-y: auto;
    overscroll-behavior: contain;
    scrollbar-color: #a98443 transparent;
    scrollbar-width: thin;
}

.mv-impeccable .mv-more-panel[data-more-panel="saves"] .mv-save-archive-scroll::-webkit-scrollbar {
    width: 5px;
}

.mv-impeccable .mv-more-panel[data-more-panel="saves"] .mv-save-archive-scroll::-webkit-scrollbar-thumb {
    border-radius: 5px;
    background: #a98443;
}

.mv-impeccable .mv-more-panel[data-more-panel="saves"] .mv-save-archive-scroll > .mv-settings-group.mv-cozy-panel {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    min-width: 0;
    gap: 5px;
    margin: 0;
    padding: 0 3px 9px;
    border: 0;
    border-radius: 0;
    background: transparent;
    box-shadow: none;
}

.mv-impeccable .mv-more-panel[data-more-panel="saves"] .mv-save-archive-scroll > .mv-settings-group + .mv-settings-group {
    padding-top: 3px;
    border-top: 1px solid rgba(140, 107, 60, .52);
}

.mv-impeccable .mv-more-panel[data-more-panel="saves"] .mv-save-archive-scroll > .mv-settings-group > h3 {
    grid-column: 1 / -1;
    display: flex;
    width: max-content;
    max-width: 100%;
    min-height: 24px;
    margin: 0;
    padding: 2px 10px;
    align-items: center;
    gap: 4px;
    border: 1px solid #8c6b3c;
    background: #315f55;
    color: #fff8e8;
    clip-path: polygon(5px 0, calc(100% - 5px) 0, 100% 5px, 100% calc(100% - 5px), calc(100% - 5px) 100%, 5px 100%, 0 calc(100% - 5px), 0 5px);
    box-shadow: inset 0 2px 0 rgba(255, 248, 232, .18), inset 0 -2px 0 #173f46;
    font-family: "Noto Serif TC", "PMingLiU", serif;
    font-size: 11px;
    font-weight: 900;
    line-height: 18px;
    letter-spacing: .04em;
    text-shadow: 0 1px 0 rgba(5, 20, 25, .52);
}

.mv-impeccable .mv-more-panel[data-more-panel="saves"] .mv-save-archive-scroll > .mv-settings-group > h3 .mv-icon {
    width: 18px !important;
    height: 18px !important;
    flex: none;
    filter: none;
}

.mv-impeccable .mv-more-panel[data-more-panel="saves"] .mv-save-archive-scroll [data-more-group="cloud"] > .mvcs-note {
    grid-column: 1 / -1;
    margin: 0;
    padding: 1px 2px 2px;
    color: #294a4d;
    font-size: 10px;
    font-weight: 750;
    line-height: 1.3;
    overflow-wrap: anywhere;
}

.mv-impeccable .mv-more-panel[data-more-panel="saves"] .mv-save-archive-scroll [data-more-group="cloud"] > div:not([class]) {
    grid-column: 1 / -1;
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 5px;
    min-width: 0;
}

.mv-impeccable .mv-more-panel[data-more-panel="saves"] .mv-save-archive-scroll [data-more-group="cloud"] > div:not([class]) > :only-child {
    grid-column: 1 / -1;
}

/* Signed-in states own three or four cloud seals. Shorten the initial aperture
   at that real row boundary so the next local row is never shown as a fragment. */
.mv-impeccable .mv-more-panel[data-more-panel="saves"] .mv-save-archive:where(:has([data-more-group="cloud"] > div:not([class]) > .mvcs-btn:nth-child(3))) .mv-save-archive-scroll {
    bottom: 37%;
}

.mv-impeccable .mv-more-panel[data-more-panel="saves"] .mv-save-archive-scroll :is(.mvcs-btn, .mv-settings-button).mv-cozy-button {
    display: flex;
    width: 100%;
    min-width: 0;
    min-height: 46px;
    margin: 0;
    padding: 4px 5px;
    align-items: center;
    justify-content: center;
    flex-direction: row;
    gap: 4px;
    overflow: hidden;
    border: 1px solid #8c6b3c;
    border-radius: 0;
    background: #f4e8c8;
    color: #294a4d;
    clip-path: polygon(6px 0, calc(100% - 6px) 0, 100% 6px, 100% calc(100% - 6px), calc(100% - 6px) 100%, 6px 100%, 0 calc(100% - 6px), 0 6px);
    box-shadow: inset 0 2px 0 rgba(255, 248, 232, .58), inset 0 -4px 0 var(--mv-save-seal-depth, #315f55), 0 2px 0 rgba(33, 60, 55, .22);
    font-size: clamp(9px, 2.7vw, 11px);
    font-weight: 900;
    line-height: 1.1;
    text-align: center;
    text-shadow: none;
}

.mv-impeccable .mv-more-panel[data-more-panel="saves"] .mv-save-archive-scroll :is(.mvcs-btn, .mv-settings-button).mv-cozy-button > span {
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.mv-impeccable .mv-more-panel[data-more-panel="saves"] .mv-save-archive-scroll :is(.mvcs-btn, .mv-settings-button).mv-cozy-button .mv-icon {
    width: 24px !important;
    height: 24px !important;
    flex: none;
    filter: none;
}

.mv-impeccable .mv-more-panel[data-more-panel="saves"] .mv-save-archive-scroll :is(.mvcs-btn, .mv-settings-button).mv-cozy-button-primary {
    --mv-save-seal-depth: #173f46;
    border-color: #e0b45f;
    background: #315f55;
    color: #fff8e8;
}

.mv-impeccable .mv-more-panel[data-more-panel="saves"] .mv-save-archive-scroll .mvcs-btn.mv-save-conflict {
    --mv-save-seal-depth: #7f3737;
    border-color: #e0b45f;
    background: #a9513d;
    color: #fff8e8;
}

.mv-impeccable .mv-more-panel[data-more-panel="saves"] .mv-save-archive-scroll .mv-settings-button.mv-settings-danger {
    --mv-save-seal-depth: #51262a;
    grid-column: 1 / -1;
    border-color: #d39b6d;
    background: #7f3737;
    color: #fff8e8 !important;
}

.mv-impeccable .mv-more-panel[data-more-panel="saves"] .mv-save-archive-scroll :is(.mvcs-btn, .mv-settings-button).mv-cozy-button:focus-visible {
    outline: 3px solid #fff0b3;
    outline-offset: 2px;
}

.mv-impeccable .mv-more-panel[data-more-panel="saves"] .mv-save-archive-scroll :is(.mvcs-btn, .mv-settings-button).mv-cozy-button:active {
    transform: translateY(2px);
    box-shadow: none;
}

.mv-impeccable .mv-more-panel[data-more-panel="saves"] .mv-save-archive-scroll :is(.mvcs-btn, .mv-settings-button).mv-cozy-button:disabled {
    border-color: #a5a78f;
    background: #dfe0c5;
    color: #596661;
    box-shadow: none;
    opacity: 1;
}

.mv-impeccable .mv-more-panel[data-more-panel="saves"] .mv-save-archive-scroll > .mv-more-footer {
    margin: 2px 0 0;
    padding: 3px 2px 1px;
    color: #526861;
    font-size: 9px;
    font-weight: 800;
    line-height: 13px;
    text-align: center;
}

.mv-impeccable .mv-more-panel[data-more-panel="saves"] .mv-save-archive > .mv-scroll-hint[data-axis="y"] {
    position: absolute;
    right: auto;
    bottom: calc(7.2% + min(var(--mv-safe-bottom), 10px));
    left: 50%;
    z-index: 5;
    width: 34px;
    height: 34px;
    transform: translateX(-50%);
}

.mv-impeccable .mv-more-panel[data-more-panel="saves"] .mv-save-archive > .mv-scroll-hint .mv-scroll-hint-dot {
    position: static;
    border: 2px solid #fff0b3;
    border-radius: 50%;
    background: #315f55;
    color: #fff8e8;
    box-shadow: 0 3px 7px rgba(33, 60, 55, .28);
}

[data-theme="night"] .mv-impeccable .mv-more-panel[data-more-panel="saves"] :is(.mv-save-archive-title, .mv-save-archive-scroll, .mv-settings-group, .mvcs-note, .mvcs-btn, .mv-settings-button, .mv-icon) {
    filter: none;
}

@media (max-width: 370px), (max-height: 740px) {
    .mv-impeccable .mv-more-v2[data-more-panel="saves"] .mv-more-header small {
        display: none;
    }

    .mv-impeccable .mv-more-panel[data-more-panel="saves"] .mv-save-archive-title {
        top: 18.6%;
        min-height: 32px;
        font-size: 10px;
    }

    .mv-impeccable .mv-more-panel[data-more-panel="saves"] .mv-save-archive-scroll {
        top: 26.1%;
        bottom: calc(32.9% + min(var(--mv-safe-bottom), 25px));
        padding-inline: 4px;
    }

    /* Variable signed-in cloud rows need one complete third seal before the
       aperture closes; stop before the first local-save row at short heights. */
    .mv-impeccable .mv-more-panel[data-more-panel="saves"] .mv-save-archive:where(:has([data-more-group="cloud"] > div:not([class]) > .mvcs-btn:nth-child(3))) .mv-save-archive-scroll {
        bottom: calc(34% - min(var(--mv-safe-bottom), 23px));
    }

    .mv-impeccable .mv-more-panel[data-more-panel="saves"] .mv-save-archive-scroll > .mv-settings-group.mv-cozy-panel {
        gap: 4px;
        padding-inline: 2px;
    }

    .mv-impeccable .mv-more-panel[data-more-panel="saves"] .mv-save-archive-scroll :is(.mvcs-btn, .mv-settings-button).mv-cozy-button {
        min-height: 44px;
        padding-inline: 3px;
        font-size: 9px;
    }
}

@media (max-width: 370px) {
    .mv-impeccable .mv-more-panel[data-more-panel="saves"] .mv-save-archive-scroll {
        bottom: calc(30.1% + min(var(--mv-safe-bottom), 25px));
    }
}

@media (prefers-reduced-motion: reduce) {
    .mv-impeccable .mv-more-panel[data-more-panel="saves"] .mv-save-archive-scroll :is(.mvcs-btn, .mv-settings-button).mv-cozy-button {
        transition: none;
    }
}

/* ═══════════════════════════════════════════════════════════════════
   Wave62: scene-owned Bag traveller bookshelf + reading desk.
   THESIS: one physical shelf owns catalogue truth; one desk owns selection.
   Raster source bounds (1024x1536): shelf x=16.2–83.8%, y=20.7–56.9%;
   desk work surface x=9.1–90.9%, y=63.4–82.3%.
   ═══════════════════════════════════════════════════════════════════ */
.mv-impeccable .mv-bag[data-bag-subtab="books"] > .mv-subtabs {
    --mv-tf-button-default: none;
    --mv-tf-button-selected: none;
    border-color: #d6b45f;
    background: #244d4b;
    box-shadow: 0 4px 0 rgba(24, 45, 43, .34);
}

.mv-impeccable .mv-bag[data-bag-subtab="books"] > .mv-subtabs .mv-subtab.mv-cozy-button {
    border: 1px solid transparent;
    background: transparent;
    color: #f8edcf;
    box-shadow: none;
}

.mv-impeccable .mv-bag[data-bag-subtab="books"] > .mv-subtabs .mv-subtab.mv-active {
    border-color: #d6b45f;
    background: #a9513d;
    color: #fff8e8;
    box-shadow: inset 0 -3px 0 #7f3737;
}

.mv-impeccable .mv-bag > .mv-bag-books.mv-active {
    position: relative;
    isolation: isolate;
    display: block;
    width: min(100%, 390px);
    height: 100%;
    min-height: 0;
    max-height: 100%;
    margin: auto;
    padding: 0;
    overflow: hidden;
    background: #173f46;
}

.mv-impeccable .mv-bookshelf-art {
    position: absolute;
    inset: 0;
    z-index: 0;
    width: 100%;
    height: 100%;
    object-fit: fill;
    filter: saturate(.98) brightness(1.03);
    pointer-events: none;
    user-select: none;
}

[data-theme="night"] .mv-impeccable .mv-bookshelf-art {
    filter: saturate(.96) brightness(.84);
}

.mv-impeccable .mv-bookshelf-title {
    position: absolute;
    top: 57.8%;
    right: 32.5%;
    left: 32.5%;
    z-index: 3;
    display: flex;
    min-height: 35px;
    margin: 0;
    padding: 2px 4px;
    align-items: center;
    justify-content: center;
    gap: 4px;
    overflow: hidden;
    color: #294a4d;
    font-family: "Noto Serif TC", "PMingLiU", serif;
    font-size: clamp(10px, 3vw, 12px);
    font-weight: 900;
    line-height: 1;
    text-align: center;
    white-space: nowrap;
}

.mv-impeccable .mv-bookshelf-title .mv-icon {
    width: 18px !important;
    height: 18px !important;
    flex: none;
    filter: none;
}

.mv-impeccable .mv-bookshelf-aperture {
    --mv-bookshelf-row-1: 32.156%;
    --mv-bookshelf-row-2: 36.445%;
    --mv-bookshelf-row-3: 31.399%;
    position: absolute;
    top: 20.7%;
    right: 17.2%;
    bottom: 44.466%;
    left: 17.2%;
    z-index: 2;
    min-width: 0;
    min-height: 0;
    padding: 0 5px;
    overflow-x: hidden;
    overflow-y: auto;
    overscroll-behavior: contain;
    scrollbar-width: none;
}

.mv-impeccable .mv-bookshelf-aperture::-webkit-scrollbar { display: none; }

.mv-impeccable .mv-bookshelf-grid {
    display: grid;
    height: 100%;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    grid-template-rows: var(--mv-bookshelf-row-1) var(--mv-bookshelf-row-2) var(--mv-bookshelf-row-3);
    grid-auto-rows: 0;
    min-width: 0;
    gap: 0 6px;
    align-items: end;
    align-content: stretch;
}

.mv-impeccable .mv-book-volume {
    --mv-book-cover: #315f55;
    --mv-book-depth: #173f46;
    position: relative;
    display: grid;
    width: 100%;
    height: 58px;
    min-width: 0;
    min-height: 58px;
    padding: 3px 2px 4px;
    place-items: center;
    align-content: center;
    gap: 0;
    overflow: hidden;
    border: 1px solid #d6b45f;
    border-radius: 3px 7px 7px 3px;
    background: var(--mv-book-cover);
    color: #fff8e8;
    box-shadow: inset 4px 0 0 rgba(255, 248, 232, .16), inset 0 -4px 0 var(--mv-book-depth), 0 2px 0 rgba(16, 33, 30, .48);
    text-align: center;
}

.mv-impeccable .mv-book-volume:nth-child(4n + 2) { --mv-book-cover: #8b5940; --mv-book-depth: #603a2c; }
.mv-impeccable .mv-book-volume:nth-child(4n + 3) { --mv-book-cover: #64784e; --mv-book-depth: #405238; }
.mv-impeccable .mv-book-volume:nth-child(4n + 4) { --mv-book-cover: #7f4d56; --mv-book-depth: #57333c; }

.mv-impeccable .mv-book-volume[hidden] { display: none; }

.mv-impeccable .mv-book-volume:active {
    transform: scale(.98);
    transform-origin: center bottom;
}

.mv-impeccable .mv-book-volume:focus-visible,
.mv-impeccable .mv-book-volume.mv-selected {
    outline: 3px solid #fff0b3;
    outline-offset: -3px;
    box-shadow: inset 4px 0 0 rgba(255, 248, 232, .18), inset 0 -4px 0 var(--mv-book-depth), 0 0 0 2px #a9513d;
}

.mv-impeccable .mv-book-volume[data-state="active"] {
    --mv-book-cover: #a9513d;
    --mv-book-depth: #7f3737;
}

.mv-impeccable .mv-book-volume[data-owned="false"] { opacity: .82; }

.mv-impeccable .mv-book-volume-art {
    display: grid;
    width: 34px;
    height: 34px;
    place-items: center;
}

.mv-impeccable .mv-book-volume-art .mv-icon {
    width: 32px !important;
    height: 32px !important;
    filter: none;
}

.mv-impeccable .mv-book-volume-name {
    display: block;
    width: 100%;
    overflow: hidden;
    font-size: 8px;
    font-weight: 850;
    line-height: 10px;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.mv-impeccable .mv-book-volume-seal {
    position: absolute;
    top: 1px;
    right: 1px;
    display: grid;
    min-width: 19px;
    height: 19px;
    padding-inline: 2px;
    place-items: center;
    border: 1px solid #f2ce75;
    border-radius: 50%;
    background: #fff0b3;
    color: #294a4d;
    font-size: 7px;
    font-weight: 950;
    line-height: 1;
}

.mv-impeccable .mv-book-volume-seal:empty { display: none; }

.mv-impeccable .mv-book-volume-seal .mv-icon {
    width: 14px !important;
    height: 14px !important;
    filter: none;
}

.mv-impeccable .mv-bookshelf-empty {
    position: absolute;
    inset: auto 4% calc(100% - var(--mv-bookshelf-row-1));
    min-height: 46px;
    padding: 8px;
    border: 1px solid #d6b45f;
    background: #315f55;
    color: #fff8e8;
    font-size: 11px;
    font-weight: 850;
    line-height: 28px;
    text-align: center;
    box-shadow: 0 2px 5px rgba(23, 63, 70, .38);
}

.mv-impeccable .mv-reading-desk {
    position: absolute;
    top: 62.5%;
    right: 11.5%;
    bottom: 18%;
    left: 11.5%;
    z-index: 3;
    min-width: 0;
    min-height: 0;
    pointer-events: none;
}

.mv-impeccable .mv-reading-desk-idle,
.mv-impeccable .mv-reading-volume,
.mv-impeccable .mv-reading-progress,
.mv-impeccable .mv-reading-desk-actions { pointer-events: auto; }

.mv-impeccable .mv-reading-desk-idle {
    position: absolute;
    top: 17%;
    right: 8%;
    left: 8%;
    min-height: 46px;
    padding: 10px 6px;
    color: #526861;
    font-size: 11px;
    font-weight: 850;
    line-height: 26px;
    text-align: center;
}

.mv-impeccable .mv-reading-volume {
    position: absolute;
    top: 8%;
    right: 5%;
    left: 5%;
    display: grid;
    grid-template-columns: 58px minmax(0, 1fr);
    min-height: 58px;
    align-items: center;
    gap: 7px;
}

.mv-impeccable .mv-reading-volume[hidden] { display: none; }

.mv-impeccable .mv-reading-volume-art {
    display: grid;
    width: 58px;
    height: 58px;
    place-items: center;
}

.mv-impeccable .mv-reading-volume-art .mv-icon {
    width: 54px !important;
    height: 54px !important;
    filter: none;
}

.mv-impeccable .mv-reading-volume-copy {
    display: flex;
    min-width: 0;
    flex-direction: column;
    gap: 2px;
    color: #294a4d;
}

.mv-impeccable .mv-reading-volume-copy strong {
    overflow: hidden;
    font-family: "Noto Serif TC", "PMingLiU", serif;
    font-size: clamp(11px, 3vw, 13px);
    font-weight: 900;
    line-height: 1.25;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.mv-impeccable .mv-reading-volume-copy span {
    overflow: hidden;
    color: #526861;
    font-size: 9px;
    font-weight: 850;
    line-height: 1.2;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.mv-impeccable .mv-reading-progress {
    position: absolute;
    top: 53%;
    right: 15%;
    left: 15%;
    height: 7px;
    overflow: hidden;
    border: 1px solid #8c6b3c;
    border-radius: 5px;
    background: #3b3028;
    box-shadow: inset 0 1px 2px rgba(0, 0, 0, .55);
}

.mv-impeccable .mv-reading-progress i {
    display: block;
    width: 0;
    height: 100%;
    background: #e0b45f;
    box-shadow: inset 0 1px 0 #fff0b3;
}

.mv-impeccable .mv-reading-desk[data-state="active"] .mv-reading-progress i { background: #e47d61; }
.mv-impeccable .mv-reading-desk[data-state="finished"] .mv-reading-progress i { background: #86a568; }

.mv-impeccable .mv-reading-desk-actions {
    position: absolute;
    right: 11%;
    bottom: 0;
    left: 11%;
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(70px, 1fr));
    min-width: 0;
    gap: 4px;
}

.mv-impeccable .mv-reading-desk-actions :is(.mv-item-action, .mv-reading-details).mv-cozy-button {
    display: flex;
    min-width: 0;
    min-height: 44px;
    margin: 0;
    padding: 3px 4px;
    align-items: center;
    justify-content: center;
    gap: 3px;
    overflow: hidden;
    border: 1px solid #e0b45f;
    border-radius: 6px;
    background: #315f55;
    color: #fff8e8;
    box-shadow: 0 2px 4px rgba(23, 63, 70, .42);
    font-size: clamp(8px, 2.4vw, 10px);
    font-weight: 900;
    line-height: 1;
    text-align: center;
}

.mv-impeccable .mv-reading-desk-actions :is(.mv-item-action, .mv-reading-details).mv-cozy-button > span {
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.mv-impeccable .mv-reading-desk-actions .mv-item-action-primary.mv-cozy-button {
    background: #a9513d;
    box-shadow: 0 2px 4px rgba(127, 55, 55, .42);
}

.mv-impeccable .mv-reading-desk-actions :is(.mv-item-action, .mv-reading-details).mv-cozy-button:active {
    transform: translateY(2px);
    box-shadow: none;
}

.mv-impeccable .mv-reading-desk-actions .mv-icon {
    width: 20px !important;
    height: 20px !important;
    flex: none;
    filter: none;
}

.mv-impeccable .mv-reading-desk-actions .mv-item-hint { display: none; }

.mv-impeccable .mv-bookshelf-scene > .mv-scroll-hint[data-axis="y"] {
    position: absolute;
    right: auto;
    bottom: 44.566%;
    left: 50%;
    z-index: 5;
    width: 32px;
    height: 32px;
    transform: translateX(-50%);
}

.mv-impeccable .mv-bookshelf-scene > .mv-scroll-hint .mv-scroll-hint-dot {
    position: static;
    border: 2px solid #fff0b3;
    border-radius: 50%;
    background: #a9513d;
    color: #fff8e8;
    box-shadow: 0 3px 7px rgba(33, 60, 55, .28);
}

[data-theme="night"] .mv-impeccable .mv-bookshelf-scene :is(.mv-bookshelf-title, .mv-bookshelf-aperture, .mv-reading-desk, .mv-book-volume, .mv-icon) {
    filter: none;
}

@media (max-width: 370px), (max-height: 740px) {
    .mv-impeccable .mv-bookshelf-aperture {
        --mv-bookshelf-row-1: 32.343%;
        --mv-bookshelf-row-2: 36.436%;
        --mv-bookshelf-row-3: 31.221%;
        top: 20.5%;
        bottom: 44.466%;
        padding: 0 4px;
    }

    .mv-impeccable .mv-bookshelf-grid {
        column-gap: 5px;
    }

    .mv-impeccable .mv-book-volume {
        height: 54px;
        min-height: 54px;
        padding-block: 2px 3px;
    }

    .mv-impeccable .mv-book-volume-art,
    .mv-impeccable .mv-book-volume-art .mv-icon {
        width: 30px !important;
        height: 30px !important;
    }

    .mv-impeccable .mv-bookshelf-title { min-height: 32px; }

    .mv-impeccable .mv-reading-desk {
        right: 10.5%;
        bottom: calc(17.8% + min(var(--mv-safe-bottom), 8px));
        left: 10.5%;
    }

    .mv-impeccable .mv-reading-volume {
        grid-template-columns: 48px minmax(0, 1fr);
        min-height: 48px;
    }

    .mv-impeccable .mv-reading-volume-art,
    .mv-impeccable .mv-reading-volume-art .mv-icon {
        width: 46px !important;
        height: 46px !important;
    }

    .mv-impeccable .mv-reading-progress { top: 50%; }

    .mv-impeccable .mv-reading-desk-actions {
        right: 8%;
        left: 8%;
        gap: 3px;
    }

    .mv-impeccable .mv-reading-desk-actions :is(.mv-item-action, .mv-reading-details).mv-cozy-button {
        min-height: 44px;
        padding-inline: 2px;
        font-size: 8px;
    }
}

@media (prefers-reduced-motion: reduce) {
    .mv-impeccable .mv-book-volume,
    .mv-impeccable .mv-reading-progress i,
    .mv-impeccable .mv-reading-desk-actions :is(.mv-item-action, .mv-reading-details).mv-cozy-button {
        transition: none;
    }
}

/* Wave63: Infested field is a scene-owned encounter frame. The clean-cel
   raster supplies the route lintel, enemy clearing and traveller rail; runtime
   UI is mounted into those physical owners instead of floating Toffee cards. */
.mv-impeccable .mv-combat[data-combat-art-owner="Infested field"] {
    position: relative;
    isolation: isolate;
    flex: 1 1 auto;
    width: calc(100% + (2 * var(--sp-4)));
    min-height: 540px;
    margin: 0 calc(-1 * var(--sp-4));
    overflow: hidden;
    gap: 0;
    border-radius: 0;
    background-color: #21170f;
    background-image: var(--combat-environment-image);
    background-position: center top;
    background-size: 100% auto;
    background-repeat: no-repeat;
    box-shadow: inset 0 0 0 1px rgba(224, 180, 95, .28);
}

.mv-impeccable .mv-combat[data-combat-art-owner="Infested field"] .mv-combat-head.mv-cozy-panel {
    position: absolute;
    top: 1.6vw;
    right: 3vw;
    left: 3vw;
    z-index: 8;
    height: 19vw;
    min-height: 68px;
    max-height: 82px;
    padding: 0;
    border: 0;
    background: none;
    color: #fff6dc;
    box-shadow: none;
    pointer-events: none;
}

.mv-impeccable .mv-combat[data-combat-art-owner="Infested field"] .mv-loc-name-row {
    position: static;
    display: grid;
    height: 100%;
    grid-template-columns: 52px minmax(0, 1fr) 52px;
    align-items: start;
}

.mv-impeccable .mv-combat[data-combat-art-owner="Infested field"] .mv-loc-name-row .mv-light { display: none; }

.mv-impeccable .mv-combat[data-combat-art-owner="Infested field"] .mv-combat-time-seal {
    position: absolute;
    top: .6vw;
    left: .7vw;
    z-index: 2;
    display: grid;
    width: 15vw;
    height: 15vw;
    min-width: 52px;
    min-height: 52px;
    max-width: 62px;
    max-height: 62px;
    place-items: center;
    border-radius: 50%;
    background: #12383a;
    box-shadow: inset 0 0 0 2px rgba(221, 174, 83, .74);
}

.mv-impeccable .mv-combat[data-combat-art-owner="Infested field"] .mv-combat-time-seal::before {
    content: "";
    position: absolute;
    width: 34px;
    height: 34px;
    background: #efbd50;
    clip-path: polygon(50% 0, 59% 24%, 78% 8%, 76% 34%, 100% 29%, 80% 50%, 100% 71%, 76% 66%, 78% 92%, 59% 76%, 50% 100%, 41% 76%, 22% 92%, 24% 66%, 0 71%, 20% 50%, 0 29%, 24% 34%, 22% 8%, 41% 24%);
}

.mv-impeccable .mv-combat[data-combat-art-owner="Infested field"] .mv-combat-time-seal::after {
    content: "";
    position: absolute;
    width: 22px;
    height: 22px;
    border-radius: 50%;
    background: #ffdb7a;
    box-shadow: inset -3px -3px rgba(181, 113, 36, .18);
}

.mv-impeccable .mv-combat[data-combat-art-owner="Infested field"] .mv-loc-name-row h2 {
    grid-column: 2;
    align-self: start;
    margin: calc(4.6vw + 13px) 0 0;
    overflow: hidden;
    color: #fff6dc;
    font-family: "Noto Serif TC", "PMingLiU", serif;
    font-size: clamp(17px, 5vw, 21px);
    font-weight: 900;
    line-height: 1;
    text-align: center;
    text-overflow: ellipsis;
    text-shadow: 0 2px 2px rgba(7, 22, 22, .9);
    white-space: nowrap;
}

.mv-impeccable .mv-combat[data-combat-art-owner="Infested field"] .mv-loc-desc {
    position: absolute;
    width: 1px;
    height: 1px;
    padding: 0;
    margin: -1px;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
    white-space: nowrap;
    border: 0;
}

.mv-impeccable .mv-combat[data-combat-art-owner="Infested field"] .mv-combat-leave.mv-cozy-button {
    position: absolute;
    top: .6vw;
    right: .7vw;
    display: grid;
    width: 15vw;
    height: 15vw;
    min-width: 52px;
    min-height: 52px;
    max-width: 62px;
    max-height: 62px;
    padding: 0;
    place-items: center;
    border: 0;
    border-radius: 50%;
    background: transparent;
    color: #fff6dc;
    box-shadow: none;
    pointer-events: auto;
}

.mv-impeccable .mv-combat[data-combat-art-owner="Infested field"] .mv-combat-leave.mv-cozy-button:active {
    transform: scale(.9);
    background: rgba(255, 246, 220, .12);
}

.mv-impeccable .mv-combat[data-combat-art-owner="Infested field"] .mv-combat-leave .mv-icon {
    width: 28px !important;
    height: 28px !important;
    filter: brightness(1.16);
}

.mv-impeccable .mv-combat[data-combat-art-owner="Infested field"] .mv-leave-label { display: none; }

.mv-impeccable .mv-combat[data-combat-art-owner="Infested field"] .mv-combat-counts {
    position: absolute;
    top: calc(10.1vw + 11px);
    right: 19vw;
    left: 19vw;
    display: flex;
    min-width: 0;
    justify-content: center;
    gap: 10px;
    margin: 0;
    color: #e9c77e;
    font-size: clamp(9px, 2.6vw, 11px);
    line-height: 1;
    text-shadow: 0 1px 2px rgba(5, 20, 20, .9);
}

.mv-impeccable .mv-combat[data-combat-art-owner="Infested field"] .mv-combat-counts .mv-cozy-slot {
    min-height: 0;
    padding: 0;
    overflow: hidden;
    border: 0;
    background: none;
    color: inherit;
    font-size: inherit;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.mv-impeccable .mv-combat[data-combat-art-owner="Infested field"] .mv-arena {
    position: absolute;
    top: 20vw;
    right: 0;
    bottom: 176px;
    left: 0;
    z-index: 3;
    height: auto;
    min-height: 0;
    max-height: none;
    margin: 0;
    padding: 0;
    overflow: visible;
    border-radius: 0;
}

.mv-impeccable .mv-combat[data-combat-art-owner="Infested field"] .mv-arena-sky { display: none; }

.mv-impeccable .mv-combat[data-combat-art-owner="Infested field"] .mv-stage {
    position: absolute;
    inset: 0;
    display: block;
}

.mv-impeccable .mv-combat[data-combat-art-owner="Infested field"] .mv-stage[hidden] { display: none; }

.mv-impeccable .mv-combat[data-combat-art-owner="Infested field"] .mv-stage-mob {
    position: absolute;
    top: 88px;
    right: 0;
    left: 0;
    display: flex;
    min-height: 0;
    align-items: flex-start;
    justify-content: center;
    gap: 0;
}

.mv-impeccable .mv-combat[data-combat-art-owner="Infested field"] .mv-stage-mob[data-count="1"] .mv-mob {
    width: min(76vw, 300px);
    gap: 0;
}

.mv-impeccable .mv-combat[data-combat-art-owner="Infested field"] .mv-stage-mob[data-count="1"] .mv-mob-body {
    z-index: 1;
    width: min(76vw, 300px);
    height: min(76vw, 300px);
    filter: none;
    animation: none;
}

.mv-impeccable .mv-combat[data-combat-art-owner="Infested field"] .mv-stage-mob[data-count="1"] .mv-mob-body::after {
    display: none;
}

.mv-impeccable .mv-combat[data-combat-art-owner="Infested field"] .mv-stage-mob[data-count="1"] .mv-mob::before {
    content: "";
    position: absolute;
    bottom: 18%;
    left: 50%;
    width: 58%;
    height: 3.2%;
    transform: translateX(-50%);
    border-radius: 50%;
    background: rgba(74, 48, 23, .22);
    box-shadow: 0 2px 6px rgba(74, 48, 23, .24);
    pointer-events: none;
}

.mv-impeccable .mv-combat[data-combat-art-owner="Infested field"] .mv-stage-mob[data-count="1"] :is(.mv-mob-name, .mv-mob-hp) {
    display: none;
}

.mv-impeccable .mv-combat[data-combat-art-owner="Infested field"] .mv-stage-plate.mv-cozy-panel {
    position: absolute;
    right: 4vw;
    bottom: 0;
    left: 4vw;
    width: auto;
    min-height: 74px;
    padding: 8px 12px 7px;
    border: 2px solid #d9ad58;
    border-radius: 9px;
    background: rgba(19, 57, 57, .94);
    color: #fff6dc;
    box-shadow: inset 0 0 0 2px rgba(5, 34, 35, .58), 0 4px 8px rgba(54, 35, 17, .28);
}

.mv-impeccable .mv-combat[data-combat-art-owner="Infested field"] :is(.mv-stage-name, .mv-stage-hp-num) {
    color: #fff6dc;
    text-shadow: 0 1px 2px rgba(0, 0, 0, .55);
}

.mv-impeccable .mv-combat[data-combat-art-owner="Infested field"] .mv-stage-name {
    font-family: "Noto Serif TC", "PMingLiU", serif;
    font-size: 15px;
    font-weight: 900;
}

.mv-impeccable .mv-combat[data-combat-art-owner="Infested field"] .mv-stage-plate .mv-stage-stats {
    min-height: 0;
    margin-top: 3px;
    color: #f2dca9;
    font-size: 10px;
}

.mv-impeccable .mv-combat[data-combat-art-owner="Infested field"] .mv-stage-plate .mv-bar-lg {
    height: 12px;
    border: 1px solid rgba(245, 220, 165, .46);
    background: #263d39;
}

.mv-impeccable .mv-combat[data-combat-art-owner="Infested field"] .mv-stage-plate .mv-bar-charge {
    height: 5px;
    /* queue 8：保留本主題的深色底，但把斜紋跑道疊回去——素色底會讓蓄力條
       又退回「第二條血」的讀法（base.css 的 .mv-bar-charge 語意層說明在該處）。 */
    background:
        repeating-linear-gradient(115deg,
            color-mix(in srgb, var(--charge) 62%, transparent) 0 3px,
            transparent 3px 7px),
        #263d39;
}

.mv-impeccable .mv-combat[data-combat-art-owner="Infested field"] .mv-cadence-seal {
    position: absolute;
    top: 5px;
    left: 50%;
    min-height: 22px;
    margin: 0;
    padding: 2px 7px;
    transform: translate(-50%, -100%);
    border: 1px solid #d9ad58;
    border-radius: 5px 5px 0 0;
    background: #173f41;
    color: #f4dda8;
    box-shadow: none;
    font-size: 9px;
}

.mv-impeccable .mv-combat[data-combat-art-owner="Infested field"] .mv-cadence-seal.mv-active {
    border-color: #e6c4ff;
    background: #3c345e;
    color: #fff4ff;
    box-shadow: 0 0 9px rgba(190, 155, 255, .42);
}

.mv-impeccable .mv-combat[data-combat-art-owner="Infested field"] > .mv-enemies { display: none; }

.mv-impeccable .mv-combat[data-combat-art-owner="Infested field"] .mv-player.mv-cozy-panel {
    position: absolute;
    right: 8px;
    bottom: 60px;
    left: 8px;
    z-index: 6;
    display: grid;
    height: 116px;
    min-height: 116px;
    padding: 8px;
    grid-template-columns: 84px minmax(0, 1fr);
    gap: 8px;
    overflow: hidden;
    border: 2px solid #d2a552;
    border-radius: 10px;
    background: #143b3d;
    box-shadow: inset 0 0 0 2px #082a2d, 0 4px 8px rgba(15, 12, 8, .4);
}

.mv-impeccable .mv-combat[data-combat-art-owner="Infested field"] .mv-player-avatar {
    position: relative;
    display: grid;
    width: 84px;
    height: 96px;
    place-items: center;
    align-self: center;
    overflow: hidden;
    border: 2px solid #d2a552;
    border-radius: 8px 8px 20px 20px;
    background: #ead39f;
    box-shadow: inset 0 0 0 2px #31534c, inset 0 -15px 20px rgba(63, 48, 25, .18);
}

.mv-impeccable .mv-combat[data-combat-art-owner="Infested field"] .mv-player-avatar .mv-icon {
    position: absolute;
    bottom: -6px;
    left: 50%;
    width: 120% !important;
    height: auto !important;
    max-width: none;
    transform: translateX(-50%);
    object-fit: contain;
    filter: none;
}

.mv-impeccable .mv-combat[data-combat-art-owner="Infested field"] .mv-player-vitals {
    display: grid;
    min-width: 0;
    height: 96px;
    padding: 4px 6px;
    grid-template-rows: repeat(3, 22px) 22px;
    align-items: center;
    align-self: center;
    overflow: hidden;
    border: 1px solid #916c37;
    border-radius: 7px;
    background: #0d2d30;
    box-shadow: inset 0 0 0 1px rgba(239, 204, 130, .1);
}

.mv-impeccable .mv-combat[data-combat-art-owner="Infested field"] .mv-player-row {
    display: grid;
    grid-template-columns: 20px minmax(0, 1fr) 56px;
    min-width: 0;
    height: 22px;
    gap: 5px;
    border-bottom: 1px solid rgba(226, 192, 120, .12);
}

.mv-impeccable .mv-combat[data-combat-art-owner="Infested field"] .mv-player-row .mv-player-icon {
    width: 18px;
}

.mv-impeccable .mv-combat[data-combat-art-owner="Infested field"] .mv-player-row .mv-player-icon .mv-icon {
    width: 16px !important;
    height: 16px !important;
    filter: none;
}

.mv-impeccable .mv-combat[data-combat-art-owner="Infested field"] .mv-player-row .mv-bar {
    width: 100%;
    height: 8px;
    margin: 0;
    border: 1px solid rgba(243, 219, 166, .38);
    border-radius: 5px;
    background: #263d39;
    box-shadow: inset 0 1px 2px rgba(0, 0, 0, .45);
}

.mv-impeccable .mv-combat[data-combat-art-owner="Infested field"] .mv-player-row .mv-bar-atk { height: 5px; }

.mv-impeccable .mv-combat[data-combat-art-owner="Infested field"] .mv-player-num {
    min-width: 0;
    color: #fff6dc;
    font-size: 10px;
    font-weight: 800;
    line-height: 1;
    text-align: right;
    text-shadow: 0 1px 1px rgba(0, 0, 0, .6);
}

.mv-impeccable .mv-combat[data-combat-art-owner="Infested field"] .mv-player-num:empty::after {
    content: "蓄力";
    color: #c9b98e;
}

.mv-impeccable .mv-combat[data-combat-art-owner="Infested field"] .mv-player-stats {
    grid-row: 4;
    display: flex;
    min-width: 0;
    height: 22px;
    margin: 0 -6px -4px;
    padding: 0 6px;
    align-items: center;
    justify-content: center;
    overflow: hidden;
    border-top: 1px solid #916c37;
    background: #173f41;
    color: #f2dca9;
    font-size: 9px;
    font-weight: 800;
    line-height: 1;
    text-align: center;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.mv-impeccable .mv-combat[data-combat-art-owner="Infested field"] > .mv-stancebar.mv-cozy-panel {
    position: absolute;
    right: 0;
    bottom: 6px;
    left: 0;
    z-index: 7;
    display: flex;
    height: 50px;
    min-height: 50px;
    padding: 0;
    border: 2px solid #d2a552;
    border-radius: 9px;
    background: #143b3d;
    box-shadow: inset 0 0 0 2px #082a2d, 0 3px 8px rgba(0, 0, 0, .36);
}

.mv-impeccable .mv-combat[data-combat-art-owner="Infested field"] .mv-stancebar-chips {
    flex: 0 1 auto;
    min-width: 0;
    gap: 4px;
    padding: 0;
}

.mv-impeccable .mv-combat[data-combat-art-owner="Infested field"] .mv-stancebar-chips:not(:has(> .mv-stance-chip)) { display: none; }

.mv-impeccable .mv-combat[data-combat-art-owner="Infested field"] :is(.mv-stance-chip, .mv-stancebar-open).mv-cozy-button {
    flex: 1 1 auto;
    min-height: 44px;
    padding: 0 9px;
    border: 1px solid #c89446;
    border-radius: 6px;
    background: #214b49;
    color: #fff6dc;
    box-shadow: inset 0 1px rgba(255, 246, 220, .14), 0 2px 3px rgba(0, 0, 0, .3);
    font-size: 11px;
    text-shadow: 0 1px 1px rgba(0, 0, 0, .55);
}

.mv-impeccable .mv-combat[data-combat-art-owner="Infested field"] .mv-stance-chip.mv-cozy-button:is(.mv-active, [aria-pressed="true"]) {
    border-color: #f1ce7d;
    background: #a24f3d;
    color: #fff9e9;
}

.mv-impeccable .mv-combat[data-combat-art-owner="Infested field"] :is(.mv-stance-chip, .mv-stancebar-open).mv-cozy-button:active {
    transform: translateY(2px);
    box-shadow: inset 0 1px rgba(255, 246, 220, .12);
}

[data-theme="night"] .mv-impeccable .mv-combat[data-combat-art-owner="Infested field"] {
    background-image:
        linear-gradient(rgba(18, 32, 47, .3), rgba(16, 25, 39, .48)),
        var(--combat-environment-image);
    background-size: 100% 150vw, 100% auto;
    background-repeat: no-repeat;
}

[data-theme="night"] .mv-impeccable .mv-combat[data-combat-art-owner="Infested field"] .mv-combat-time-seal::before {
    display: none;
}

[data-theme="night"] .mv-impeccable .mv-combat[data-combat-art-owner="Infested field"] .mv-combat-time-seal::after {
    width: 30px;
    height: 30px;
    border-radius: 0;
    background: url("/resources/icons/clean-cel-v1/moon-waxing-v1.png") center / contain no-repeat;
    box-shadow: none;
}

/* Wave76: the fixed global HUD is the sole sun/moon owner during combat. Keep
   the painted lintel mount quiet, and lock the enemy readout above every hit
   animation so the sprite can flash without covering its own status truth. */
.mv-impeccable .mv-combat[data-combat-art-owner="Infested field"] .mv-combat-time-seal::before,
.mv-impeccable .mv-combat[data-combat-art-owner="Infested field"] .mv-combat-time-seal::after {
    display: none;
}

.mv-impeccable .mv-combat[data-combat-art-owner="Infested field"] .mv-stage {
    isolation: isolate;
}

.mv-impeccable .mv-combat[data-combat-art-owner="Infested field"] .mv-stage-mob {
    z-index: 1;
}

.mv-impeccable .mv-combat[data-combat-art-owner="Infested field"] .mv-stage-plate.mv-cozy-panel {
    z-index: 4;
    isolation: isolate;
}

/* Wave63.1: combat becomes one continuous scene from the compact field HUD
   through the encounter and into the navigation deck. Global vitals are not
   duplicated here because the traveller console already owns their live truth. */
body.mv-impeccable:has(.mv-scene.mv-active[data-mode="combat"] > .mv-combat[data-combat-art-owner="Infested field"]) #app {
    background: #12383a;
}

body.mv-impeccable:has(.mv-scene.mv-active[data-mode="combat"] > .mv-combat[data-combat-art-owner="Infested field"]) .mv-combat[data-combat-art-owner="Infested field"] {
    background-size: 100% 100%;
}

[data-theme="night"] body.mv-impeccable:has(.mv-scene.mv-active[data-mode="combat"] > .mv-combat[data-combat-art-owner="Infested field"]) .mv-combat[data-combat-art-owner="Infested field"] {
    background-size: 100% 100%, 100% 100%;
}

body.mv-impeccable:has(.mv-scene.mv-active[data-mode="combat"] > .mv-combat[data-combat-art-owner="Infested field"]) .mv-status.mv-cozy-panel {
    min-height: 44px;
    padding: calc(4px + var(--mv-safe-top)) 14px 4px;
    border: 0;
    border-bottom: 2px solid #c89446;
    background: #12383a;
    color: #f2dca9;
    box-shadow: none;
}

body.mv-impeccable:has(.mv-scene.mv-active[data-mode="combat"] > .mv-combat[data-combat-art-owner="Infested field"]) .mv-status .mv-status-top {
    min-height: 34px;
    padding: 0;
    color: #f2dca9;
    font-size: 11px;
}

body.mv-impeccable:has(.mv-scene.mv-active[data-mode="combat"] > .mv-combat[data-combat-art-owner="Infested field"]) .mv-status .mv-status-money {
    color: #ffd47b;
}

body.mv-impeccable:has(.mv-scene.mv-active[data-mode="combat"] > .mv-combat[data-combat-art-owner="Infested field"]) .mv-status .mv-vitals {
    display: none;
}

body.mv-impeccable:has(.mv-scene.mv-active[data-mode="combat"] > .mv-combat[data-combat-art-owner="Infested field"]) .mv-scene.mv-active[data-mode="combat"] {
    padding-top: 0;
    padding-bottom: 0;
    background: #21170f;
}

body.mv-impeccable:has(.mv-scene.mv-active[data-mode="combat"] > .mv-combat[data-combat-art-owner="Infested field"]) .mv-tabbar {
    min-height: 58px;
    padding: 3px 4px max(3px, var(--mv-safe-bottom));
    border: 0;
    border-top: 2px solid #c89446;
    background: #12383a;
    box-shadow: none;
}

body.mv-impeccable:has(.mv-scene.mv-active[data-mode="combat"] > .mv-combat[data-combat-art-owner="Infested field"]) .mv-tabbar::before {
    display: none;
}

body.mv-impeccable:has(.mv-scene.mv-active[data-mode="combat"] > .mv-combat[data-combat-art-owner="Infested field"]) .mv-tab {
    min-height: 48px;
    color: #e7d5a8;
    text-shadow: 0 1px 1px rgba(0, 0, 0, .52);
}

body.mv-impeccable:has(.mv-scene.mv-active[data-mode="combat"] > .mv-combat[data-combat-art-owner="Infested field"]) .mv-tab-icon {
    background: transparent;
}

body.mv-impeccable:has(.mv-scene.mv-active[data-mode="combat"] > .mv-combat[data-combat-art-owner="Infested field"]) .mv-tab.mv-active {
    color: #ffd47b;
}

body.mv-impeccable:has(.mv-scene.mv-active[data-mode="combat"] > .mv-combat[data-combat-art-owner="Infested field"]) .mv-tab.mv-active .mv-tab-icon {
    border: 1px solid #c89446;
    border-radius: 7px;
    background: #1d4b4a;
    box-shadow: inset 0 -2px rgba(238, 190, 91, .2);
}

@media (max-width: 370px), (max-height: 740px) {
    .mv-impeccable .mv-combat[data-combat-art-owner="Infested field"] { min-height: 540px; }
    .mv-impeccable .mv-combat[data-combat-art-owner="Infested field"] .mv-combat-head.mv-cozy-panel { padding: 0; border: 0; }
    .mv-impeccable .mv-combat[data-combat-art-owner="Infested field"] .mv-arena {
        bottom: 176px;
        height: auto;
        min-height: 0;
        padding: 0;
    }
    .mv-impeccable .mv-combat[data-combat-art-owner="Infested field"] .mv-stage { height: auto; }
    .mv-impeccable .mv-combat[data-combat-art-owner="Infested field"] .mv-stage-mob { top: 36px; min-height: 0; }
    .mv-impeccable .mv-combat[data-combat-art-owner="Infested field"] .mv-stage-mob[data-count="1"] .mv-mob-primary { width: min(71vw, 278px); }
    .mv-impeccable .mv-combat[data-combat-art-owner="Infested field"] .mv-stage-mob[data-count="1"] .mv-mob-primary .mv-mob-body { width: min(71vw, 278px); height: min(71vw, 278px); }
    .mv-impeccable .mv-combat[data-combat-art-owner="Infested field"] .mv-stage-plate.mv-cozy-panel { padding: 7px 10px 6px; border-width: 2px; }
    .mv-impeccable .mv-combat[data-combat-art-owner="Infested field"] .mv-player.mv-cozy-panel {
        height: 116px;
        padding: 8px;
        border-width: 2px;
    }
    .mv-impeccable .mv-combat[data-combat-art-owner="Infested field"] > .mv-stancebar.mv-cozy-panel { padding: 0; border-width: 2px; }
}

@media (prefers-reduced-motion: reduce) {
    .mv-impeccable .mv-combat[data-combat-art-owner="Infested field"] .mv-mob-body { animation: none; }
    .mv-impeccable .mv-combat[data-combat-art-owner="Infested field"] :is(.mv-combat-leave, .mv-stance-chip, .mv-stancebar-open) { transition: none; }
}

/* ═══════════════════════════════════════════════════════════════════════════
   Wave65: one K4-derived game shell and one exact Village world projection.
   Header/footer are stable chrome.  The middle remains the owning screen.
   ═══════════════════════════════════════════════════════════════════════════ */

.mv-impeccable {
    --mv-wave65-header-art-h: clamp(76px, 21.09375vw, 82px);
    --mv-wave65-footer-art-h: clamp(57.3px, 15.91796875vw, 62.1px);
    --mv-wave65-route-h: clamp(32px, 8.88671875vw, 49.8px);
}

.mv-impeccable .mv-status.mv-cozy-panel,
body.mv-impeccable:has(.mv-scene.mv-active[data-mode="combat"] > .mv-combat[data-combat-art-owner="Infested field"]) .mv-status.mv-cozy-panel {
    position: relative;
    z-index: 5;
    flex: 0 0 calc(var(--mv-wave65-header-art-h) + var(--mv-safe-top));
    width: 100%;
    min-height: 0;
    height: calc(var(--mv-wave65-header-art-h) + var(--mv-safe-top));
    padding: 0;
    border: 0;
    border-radius: 0;
    background: #173f43;
    color: #f4e8c8;
    box-shadow: none;
    overflow: hidden;
}

.mv-impeccable .mv-status.mv-cozy-panel::before {
    content: "";
    position: absolute;
    z-index: 0;
    left: 0;
    right: 0;
    top: var(--mv-safe-top);
    height: var(--mv-wave65-header-art-h);
    background: url("/output/art-direction/wave65-shared-shell/shared-header-traveller-lintel-candidate-a.png") center / 100% 100% no-repeat;
    pointer-events: none;
}

.mv-impeccable .mv-status .mv-status-top,
body.mv-impeccable:has(.mv-scene.mv-active[data-mode="combat"] > .mv-combat[data-combat-art-owner="Infested field"]) .mv-status .mv-status-top {
    position: absolute;
    z-index: 1;
    inset: var(--mv-safe-top) 0 auto;
    display: block;
    width: 100%;
    height: 48%;
    min-height: 0;
    padding: 0;
    color: #f4e8c8;
    font-size: clamp(9px, 2.45vw, 10px);
    font-weight: 850;
    line-height: 1;
    text-shadow: 0 1px 1px rgba(8, 29, 32, .78);
}

.mv-impeccable .mv-status-moon {
    position: absolute;
    left: 4.1%;
    top: 7px;
    display: grid;
    width: 6.65%;
    min-width: 28px;
    height: 36px;
    place-items: center;
}

.mv-impeccable .mv-status-moon .mv-status-moon-img {
    width: 34px !important;
    height: 34px !important;
    object-fit: contain;
    filter: none;
}

.mv-impeccable #mv-status-time {
    position: absolute;
    left: 15.2%;
    top: 13px;
    width: 27%;
    text-align: center;
}

.mv-impeccable #mv-status-weather {
    position: absolute;
    left: 43%;
    top: 13px;
    width: 17%;
    text-align: center;
}

.mv-impeccable .mv-status .mv-status-money,
body.mv-impeccable:has(.mv-scene.mv-active[data-mode="combat"] > .mv-combat[data-combat-art-owner="Infested field"]) .mv-status .mv-status-money {
    position: absolute;
    top: 9px;
    right: 4.1%;
    display: flex;
    width: 18.75%;
    height: 28px;
    align-items: center;
    justify-content: center;
    gap: 3px;
    color: #ffe2a0;
}

.mv-impeccable .mv-status-spacer { display: none; }

.mv-impeccable .mv-status .mv-vitals,
body.mv-impeccable:has(.mv-scene.mv-active[data-mode="combat"] > .mv-combat[data-combat-art-owner="Infested field"]) .mv-status .mv-vitals {
    position: absolute;
    z-index: 1;
    left: 0;
    right: 0;
    top: calc(var(--mv-safe-top) + 53.7%);
    bottom: 6.5%;
    display: block;
    gap: 0;
}

.mv-impeccable .mv-status .mv-vital.mv-cozy-control {
    position: absolute;
    top: 0;
    bottom: 0;
    min-width: 0;
    min-height: 0;
    padding: 0 6px;
    border: 0;
    border-radius: 0;
    background: transparent;
    box-shadow: none;
}

.mv-impeccable .mv-status .mv-vital-hp { left: 6.640625%; width: 27.05078125%; }
.mv-impeccable .mv-status .mv-vital-stam { left: 36.42578125%; width: 27.05078125%; }
.mv-impeccable .mv-status .mv-vital-xp { left: 66.2109375%; width: 27.34375%; }

.mv-impeccable .mv-status .mv-vital-icon .mv-icon,
.mv-impeccable .mv-status .mv-status-money-img {
    width: 22px !important;
    height: 22px !important;
    object-fit: contain;
    filter: none;
}

.mv-impeccable .mv-status .mv-vital .mv-bar {
    height: 7px;
    margin: 0;
    border: 1px solid rgba(9, 39, 42, .58);
    border-radius: 4px;
    background: rgba(12, 43, 46, .72);
    box-shadow: inset 0 1px 1px rgba(0, 0, 0, .35);
}

.mv-impeccable .mv-status .mv-vital-num {
    color: #f8eabc;
    font-size: 8.5px;
    line-height: 10px;
    text-shadow: 0 1px 1px rgba(8, 29, 32, .82);
}

.mv-impeccable .mv-tabbar,
body.mv-impeccable:has(.mv-scene.mv-active[data-mode="combat"] > .mv-combat[data-combat-art-owner="Infested field"]) .mv-tabbar {
    position: relative;
    z-index: 5;
    display: block;
    flex: 0 0 calc(var(--mv-wave65-footer-art-h) + var(--mv-safe-bottom));
    width: 100%;
    min-height: 0;
    height: calc(var(--mv-wave65-footer-art-h) + var(--mv-safe-bottom));
    padding: 0 0 var(--mv-safe-bottom);
    border: 0;
    border-radius: 0;
    background: #173f43 url("/output/art-direction/wave65-shared-shell/shared-footer-k4-physical-rail-v1.png") top center / 100% var(--mv-wave65-footer-art-h) no-repeat;
    box-shadow: none;
    overflow: hidden;
}

.mv-impeccable .mv-tabbar::before,
body.mv-impeccable:has(.mv-scene.mv-active[data-mode="combat"] > .mv-combat[data-combat-art-owner="Infested field"]) .mv-tabbar::before {
    display: none;
}

.mv-impeccable .mv-tab,
body.mv-impeccable:has(.mv-scene.mv-active[data-mode="combat"] > .mv-combat[data-combat-art-owner="Infested field"]) .mv-tab {
    position: absolute;
    top: 2px;
    display: grid;
    height: calc(var(--mv-wave65-footer-art-h) - 5px);
    min-height: 44px;
    grid-template-rows: minmax(34px, 1fr) 12px;
    place-items: center;
    gap: 0;
    padding: 0;
    color: #f4e8c8;
    font-size: clamp(9px, 2.45vw, 10px);
    font-weight: 850;
    line-height: 11px;
    text-shadow: 0 1px 1px rgba(8, 29, 32, .82);
}

.mv-impeccable .mv-tab[data-tab="scene"] { left: 4.1%; width: 16.8%; }
.mv-impeccable .mv-tab[data-tab="skills"] { left: 23.34%; width: 15.04%; }
.mv-impeccable .mv-tab[data-tab="bag"] { left: 40.72%; width: 14.84%; }
.mv-impeccable .mv-tab[data-tab="journal"] { left: 57.91%; width: 16.5%; }
.mv-impeccable .mv-tab[data-tab="more"] { left: 76.95%; width: 17.38%; }

.mv-impeccable .mv-tab-icon,
body.mv-impeccable:has(.mv-scene.mv-active[data-mode="combat"] > .mv-combat[data-combat-art-owner="Infested field"]) .mv-tab-icon {
    display: grid;
    width: 42px;
    height: 42px;
    place-items: center;
    border: 0;
    border-radius: 0;
    background: transparent;
    box-shadow: none;
}

.mv-impeccable .mv-tab-icon .mv-icon {
    width: 42px !important;
    height: 42px !important;
    max-width: none;
    max-height: none;
    object-fit: contain;
    filter: none;
}

.mv-impeccable .mv-tab.mv-active,
body.mv-impeccable:has(.mv-scene.mv-active[data-mode="combat"] > .mv-combat[data-combat-art-owner="Infested field"]) .mv-tab.mv-active {
    color: #ffd878;
}

.mv-impeccable .mv-tab.mv-active .mv-tab-icon,
body.mv-impeccable:has(.mv-scene.mv-active[data-mode="combat"] > .mv-combat[data-combat-art-owner="Infested field"]) .mv-tab.mv-active .mv-tab-icon {
    border: 0;
    border-radius: 0;
    background: transparent;
    box-shadow: none;
    transform: translateY(-2px) scale(1.04);
}

.mv-impeccable .mv-tab.mv-active::after {
    top: auto;
    bottom: 0;
    width: 22px;
    height: 3px;
    background: #f1c86d;
    box-shadow: 0 0 5px rgba(248, 213, 123, .5);
}

.mv-impeccable .mv-scene.mv-scene-mapmode[data-world-location="Village"] {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    min-height: 0;
    padding: 0;
    gap: 0;
    background: #173f43;
    overflow: hidden;
}

.mv-impeccable .mv-scene.mv-scene-mapmode[data-world-location="Village"] > .mv-route-ledger-slot {
    position: absolute;
    z-index: 4;
    inset: 0 0 auto;
    display: block;
    width: 100%;
    height: var(--mv-wave65-route-h);
    background: url("/output/art-direction/wave64-village-map/k4-state-family-v1/runtime/village-k4-route-rail-v1.png") center / 100% 100% no-repeat;
    pointer-events: none;
}

.mv-impeccable .mv-scene.mv-scene-mapmode[data-world-location="Village"] > .mv-village-map[data-art-family="k4"] {
    position: absolute;
    inset: var(--mv-wave65-route-h) 0 auto;
    width: 100%;
    height: calc(100% - var(--mv-wave65-route-h));
}

.mv-impeccable .mv-village-map[data-art-family="k4"] .mv-village-map-img,
.mv-impeccable .mv-village-map[data-art-family="k4"] .mv-village-nodes,
.mv-impeccable .mv-village-map[data-art-family="k4"] .mv-journey-layer {
    position: absolute;
    inset: auto;
    left: var(--mv-k4-world-left);
    top: var(--mv-k4-world-top);
    width: var(--mv-k4-world-width);
    height: var(--mv-k4-world-height);
}

.mv-impeccable .mv-village-map[data-art-family="k4"] .mv-village-map-img {
    object-fit: fill;
    object-position: center;
    filter: none;
}

.mv-impeccable .mv-village-map[data-art-family="k4"] .mv-map-node {
    display: block;
    min-width: 44px;
    min-height: 44px;
    padding: 0;
    gap: 0;
    overflow: visible;
    filter: none;
    cursor: pointer;
}

.mv-impeccable .mv-village-map[data-art-family="k4"] .mv-k4-node-content {
    position: absolute;
    z-index: 2;
    left: 50%;
    top: 49%;
    display: grid;
    width: 70%;
    grid-template-rows: 17px 16px;
    justify-items: center;
    align-items: center;
    row-gap: 1px;
    transform: translate(-50%, -50%);
    transform-origin: center;
    transition: transform 150ms ease, filter 150ms ease;
    pointer-events: none;
}

.mv-impeccable .mv-village-map[data-art-family="k4"] .mv-map-node[data-node="field"] .mv-k4-node-content { top: 47%; }
.mv-impeccable .mv-village-map[data-art-family="k4"] .mv-map-node[data-node="elder"] .mv-k4-node-content,
.mv-impeccable .mv-village-map[data-art-family="k4"] .mv-map-node[data-node="market"] .mv-k4-node-content { top: 53%; }
.mv-impeccable .mv-village-map[data-art-family="k4"] .mv-map-node[data-node="river"] .mv-k4-node-content { top: 48%; }

.mv-impeccable .mv-village-map[data-art-family="k4"] .mv-k4-node-signal {
    position: relative;
    z-index: 2;
    display: grid;
    width: 30px;
    height: 17px;
    place-items: center;
    pointer-events: none;
    transition: filter 150ms ease, transform 150ms ease;
}

.mv-impeccable .mv-village-map[data-art-family="k4"] .mv-k4-node-signal::before {
    content: "";
    position: absolute;
    inset: -5px -7px;
    border: 1px solid rgba(247, 205, 105, .5);
    border-radius: 50%;
    background: rgba(247, 205, 105, .12);
    box-shadow: 0 0 0 4px rgba(247, 205, 105, .08);
    animation: mv-k4-signal-breathe 1.9s ease-in-out infinite;
}

.mv-impeccable .mv-village-map[data-art-family="k4"] .mv-k4-node-signal-core {
    position: relative;
    width: 10px;
    height: 10px;
    border: 2px solid #6e4328;
    border-radius: 50%;
    background: #f3c96c;
    box-shadow: 0 0 0 2px rgba(23, 63, 67, .8), 0 1px 0 #fff1b2, 0 0 8px rgba(247, 205, 105, .72);
    transition: background-color 150ms ease, box-shadow 150ms ease, transform 150ms ease;
}

@keyframes mv-k4-signal-breathe {
    0%, 100% { opacity: .62; transform: scale(.88); }
    50% { opacity: 1; transform: scale(1.08); }
}

.mv-impeccable .mv-village-map[data-art-family="k4"] .mv-map-node[aria-disabled="true"] .mv-k4-node-signal::before {
    display: none;
}

.mv-impeccable .mv-village-map[data-art-family="k4"] .mv-map-node[aria-disabled="true"] .mv-k4-node-signal-core {
    border-color: #344f4d;
    background: #6f8179;
    box-shadow: 0 0 0 2px rgba(20, 48, 47, .8), inset 0 1px 0 rgba(233, 237, 217, .28);
}

.mv-impeccable .mv-village-map[data-art-family="k4"] .mv-map-node[aria-expanded="true"] .mv-k4-node-signal-core {
    background: #fff0a5;
    box-shadow: 0 0 0 3px #bd5f43, 0 0 12px rgba(255, 222, 130, .9);
}

.mv-impeccable .mv-village-map[data-art-family="k4"] .mv-map-node[aria-expanded="true"] .mv-k4-node-signal::before {
    opacity: 1;
    transform: scale(1.08);
    animation: none;
}

.mv-impeccable .mv-village-map[data-art-family="k4"] .mv-map-node:active .mv-k4-node-content {
    transform: translate(-50%, -50%) scale(.94);
    filter: brightness(.92);
}

.mv-impeccable .mv-village-map[data-art-family="k4"] .mv-map-node:focus-visible {
    outline: 3px solid #f3c96c;
    outline-offset: 2px;
    border-radius: 12px;
}

.mv-impeccable .mv-village-map[data-art-family="k4"] .mv-map-node-label.mv-cozy-button,
[data-theme="night"] .mv-impeccable .mv-village-map[data-art-family="k4"] .mv-map-node-label.mv-cozy-button {
    position: relative;
    z-index: 2;
    min-width: 34px;
    min-height: 15px;
    max-width: 100%;
    margin: 0;
    padding: 1px 4px;
    border: 1px solid rgba(224, 180, 95, .72);
    border-radius: 2px;
    clip-path: none;
    background: #173f43;
    color: #f4e8c8;
    font-size: 10.5px;
    font-weight: 900;
    line-height: 12px;
    text-shadow: 0 1px 0 #102f34;
    box-shadow: 0 2px 0 rgba(8, 29, 32, .42);
    opacity: 1;
    transform: none;
    filter: none;
    transition: color 150ms ease, border-color 150ms ease, background-color 150ms ease, box-shadow 150ms ease;
}

.mv-impeccable .mv-village-map[data-art-family="k4"] .mv-map-node[aria-disabled="true"] {
    cursor: not-allowed;
}

.mv-impeccable .mv-village-map[data-art-family="k4"] .mv-map-node[aria-disabled="true"] .mv-map-node-label.mv-cozy-button {
    opacity: .78;
    filter: saturate(.45) brightness(.8);
}

.mv-impeccable .mv-village-map[data-art-family="k4"] .mv-map-node:focus-visible .mv-k4-node-signal::before {
    opacity: 1;
    transform: scale(1.08);
    animation: none;
}

@media (hover: hover) and (pointer: fine) {
    .mv-impeccable .mv-village-map[data-art-family="k4"] .mv-map-node:not([aria-disabled="true"]):not([aria-expanded="true"]):not(:active):hover .mv-k4-node-content {
        transform: translate(-50%, calc(-50% - 2px));
        filter: brightness(1.07);
    }

    .mv-impeccable .mv-village-map[data-art-family="k4"] .mv-map-node:not([aria-disabled="true"]):not([aria-expanded="true"]):not(:active):hover .mv-k4-node-signal {
        transform: scale(1.12);
        filter: brightness(1.08);
    }

    .mv-impeccable .mv-village-map[data-art-family="k4"] .mv-map-node:not([aria-disabled="true"]):not([aria-expanded="true"]):not(:active):hover .mv-k4-node-signal::before {
        opacity: 1;
        transform: scale(1.08);
        animation-play-state: paused;
        border-color: rgba(255, 228, 145, .9);
        background: rgba(255, 222, 130, .2);
        box-shadow: 0 0 0 5px rgba(247, 205, 105, .12), 0 0 12px rgba(255, 222, 130, .5);
    }

    .mv-impeccable .mv-village-map[data-art-family="k4"] .mv-map-node:not([aria-disabled="true"]):not([aria-expanded="true"]):not(:active):hover .mv-k4-node-signal-core {
        background: #fff0a5;
        box-shadow: 0 0 0 2px rgba(23, 63, 67, .88), 0 1px 0 #fff7c9, 0 0 11px rgba(255, 222, 130, .9);
    }

    .mv-impeccable .mv-village-map[data-art-family="k4"] .mv-map-node:not([aria-disabled="true"]):not([aria-expanded="true"]):not(:active):hover .mv-map-node-label.mv-cozy-button {
        color: #fff4d3;
        border-color: rgba(255, 222, 130, .95);
        background: #1b4a4e;
        box-shadow: 0 2px 0 rgba(8, 29, 32, .52), 0 0 9px rgba(247, 205, 105, .28);
    }
}

@media (prefers-reduced-motion: reduce) {
    .mv-impeccable .mv-village-map[data-art-family="k4"] .mv-k4-node-signal::before {
        animation: none !important;
        opacity: 1;
        transform: none;
    }

    .mv-impeccable .mv-village-map[data-art-family="k4"] .mv-k4-node-content,
    .mv-impeccable .mv-village-map[data-art-family="k4"] .mv-k4-node-signal,
    .mv-impeccable .mv-village-map[data-art-family="k4"] .mv-k4-node-signal-core,
    .mv-impeccable .mv-village-map[data-art-family="k4"] .mv-map-node-label.mv-cozy-button {
        transition: none !important;
    }
}

.mv-impeccable .mv-scene.mv-scene-mapmode[data-world-location="Village"] .mv-route-ledger.mv-cozy-panel {
    position: absolute;
    inset: 0;
    width: 100%;
    margin: 0;
    padding: 0;
    border: 0;
    border-radius: 0;
    clip-path: none;
    background: transparent;
    box-shadow: none;
}

.mv-impeccable .mv-scene.mv-scene-mapmode[data-world-location="Village"] :is(.mv-route-ledger-title, .mv-route-note) {
    display: none;
}

.mv-impeccable .mv-scene.mv-scene-mapmode[data-world-location="Village"] .mv-route-trail {
    position: absolute;
    inset: 0;
    display: block;
    grid-column: auto;
    grid-row: auto;
    margin: 0;
}

.mv-impeccable .mv-scene.mv-scene-mapmode[data-world-location="Village"] .mv-route-step {
    position: absolute;
    top: 5%;
    display: grid;
    width: 20%;
    height: 82%;
    grid-template-rows: 12px 1fr;
    justify-items: center;
    align-items: center;
    transform: translateX(-50%);
}

.mv-impeccable .mv-scene.mv-scene-mapmode[data-world-location="Village"] .mv-route-step[data-route-key="field"] { left: 16.943%; }
.mv-impeccable .mv-scene.mv-scene-mapmode[data-world-location="Village"] .mv-route-step[data-route-key="cave"] { left: 39.502%; }
.mv-impeccable .mv-scene.mv-scene-mapmode[data-world-location="Village"] .mv-route-step[data-route-key="mill"] { left: 60.742%; }
.mv-impeccable .mv-scene.mv-scene-mapmode[data-world-location="Village"] .mv-route-step[data-route-key="bridge"] { left: 83.203%; }
.mv-impeccable .mv-scene.mv-scene-mapmode[data-world-location="Village"] .mv-route-step::before { display: none; }

.mv-impeccable .mv-scene.mv-scene-mapmode[data-world-location="Village"] .mv-route-dot {
    width: 10px;
    height: 10px;
    border: 2px solid #e4b65f;
    background: #173f43;
    box-sizing: border-box;
}

.mv-impeccable .mv-scene.mv-scene-mapmode[data-world-location="Village"] :is(.mv-route-active, .mv-route-done) .mv-route-dot {
    background: #f3c96c;
}

.mv-impeccable .mv-scene.mv-scene-mapmode[data-world-location="Village"] .mv-route-name {
    align-self: start;
    margin: 0;
    color: #f8eabc;
    font-size: clamp(9px, 2.45vw, 10px);
    font-weight: 900;
    line-height: 11px;
    text-shadow: 0 1px 0 #102f34;
}

/* Dialogue may borrow the current K4-derived middle, never the retired rasters. */
.mv-impeccable .mv-scene[data-mode="dialogue"][data-world-art-state="village-quiet"]:is([data-dialogue-key="village elder"], [data-dialogue-key="old craftsman"], [data-dialogue-key="village guard"], [data-dialogue-key="village millers"]),
.mv-impeccable .mv-scene[data-mode="dialogue"][data-world-art-state="village-early"]:is([data-dialogue-key="village elder"], [data-dialogue-key="old craftsman"], [data-dialogue-key="village guard"], [data-dialogue-key="village millers"]) {
    background-image:
        linear-gradient(180deg, rgba(20, 48, 47, .04) 0%, rgba(20, 48, 47, .18) 50%, rgba(22, 43, 42, .5) 100%),
        url("/output/art-direction/wave64-village-map/k4-state-family-v1/runtime/village-k4-quiet-world-v1.png");
}

.mv-impeccable .mv-scene[data-mode="dialogue"][data-world-art-state="village-mid"]:is([data-dialogue-key="village elder"], [data-dialogue-key="old craftsman"], [data-dialogue-key="village guard"], [data-dialogue-key="village millers"]) {
    background-image:
        linear-gradient(180deg, rgba(20, 48, 47, .04) 0%, rgba(20, 48, 47, .18) 50%, rgba(22, 43, 42, .5) 100%),
        url("/output/art-direction/wave64-village-map/k4-state-family-v1/runtime/village-k4-mid-world-v1.png");
}

.mv-impeccable .mv-scene[data-mode="dialogue"][data-world-art-state="village-mature"]:is([data-dialogue-key="village elder"], [data-dialogue-key="old craftsman"], [data-dialogue-key="village guard"], [data-dialogue-key="village millers"]) {
    background-image:
        linear-gradient(180deg, rgba(20, 48, 47, .04) 0%, rgba(20, 48, 47, .18) 50%, rgba(22, 43, 42, .5) 100%),
        url("/output/art-direction/wave64-village-map/k4-state-family-v1/runtime/village-k4-mature-world-v1.png");
}

@media (prefers-reduced-motion: reduce) {
    .mv-impeccable .mv-village-map[data-art-family="k4"] .mv-map-node-pin,
    .mv-impeccable .mv-village-map[data-art-family="k4"] .mv-map-node,
    .mv-impeccable .mv-tab,
    .mv-impeccable .mv-tab-icon { animation: none; transition: none; }
}

/* ═══════════════════════════════════════════════════════════════════
   Wave66: upright Backpack owner geometry + legible active footer bay
   The 1024×1536 raster, twelve storage owners, and item hitboxes share
   one contained 2:3 coordinate system at every supported phone size.
   ═══════════════════════════════════════════════════════════════════ */

.mv-impeccable .mv-bag > .mv-subtabs {
    top: 5px;
    left: 7px;
    right: 7px;
    gap: 5px;
}

.mv-impeccable .mv-bag > .mv-subtabs .mv-subtab.mv-cozy-button {
    min-height: 46px;
    padding: 3px 8px;
}

.mv-impeccable .mv-bag > .mv-subtabs .mv-subtab .mv-icon {
    width: 23px !important;
    height: 23px !important;
}

.mv-impeccable .mv-bag-stage {
    --mv-bag-selection-height: 0px;
    overflow: clip;
    background: #102f32;
}

.mv-impeccable .mv-bag-stage.mv-has-selection {
    --mv-bag-selection-height: 0px;
}

.mv-impeccable .mv-bag-canvas {
    position: absolute;
    z-index: 1;
    top: 50%;
    left: 50%;
    width: auto;
    height: 100%;
    aspect-ratio: 2 / 3;
    overflow: hidden;
    isolation: isolate;
    transform: translate(-50%, -50%);
}

.mv-impeccable .mv-bag .mv-bag-art {
    position: absolute;
    z-index: 0;
    inset: 0;
    width: 100%;
    height: 100%;
    object-fit: fill;
    object-position: center;
    opacity: 1;
    filter: saturate(.98) brightness(1.01);
    transform: none;
}

[data-theme="night"] .mv-impeccable .mv-bag .mv-bag-art {
    opacity: 1;
    filter: saturate(.96) brightness(.76) contrast(1.04);
}

.mv-impeccable .mv-bag .mv-bag-stage::after {
    z-index: 0;
    background: rgba(7, 28, 30, .08);
}

.mv-impeccable .mv-bag-stage > .mv-catchips {
    top: 56px;
    left: 5px;
    right: 5px;
    z-index: 12;
    display: grid;
    grid-template-columns: repeat(6, minmax(0, 1fr));
    gap: 3px;
    padding: 0;
}

.mv-impeccable .mv-bag-stage > .mv-catchips .mv-catchip {
    min-width: 0;
    min-height: 44px;
    padding: 2px 1px;
    flex-direction: column;
    gap: 0;
    border-color: rgba(221, 184, 106, .58) !important;
    border-radius: 8px;
    background: rgba(12, 45, 47, .86) !important;
    color: #eadfbd;
    font-size: clamp(9px, 2.45vw, 10px);
    line-height: 11px;
    box-shadow: inset 0 1px 0 rgba(246, 237, 207, .12), 0 2px 0 rgba(6, 24, 25, .52);
}

.mv-impeccable .mv-bag-stage > .mv-catchips .mv-catchip.mv-active {
    border-color: #e0b966 !important;
    background: #9e503b !important;
    color: #fff6dc;
    box-shadow: inset 0 1px 0 rgba(255, 236, 181, .3), 0 2px 0 #653126, 0 0 8px rgba(235, 187, 91, .28);
}

.mv-impeccable .mv-bag-stage > .mv-catchips .mv-catchip .mv-icon {
    width: 19px !important;
    height: 19px !important;
}

.mv-impeccable .mv-bag .mv-bag-capacity {
    z-index: 4;
    top: 27.6%;
    min-height: 38px;
    padding: 3px 9px 3px 5px;
    border-color: #b18347 !important;
    border-radius: 7px;
    background: rgba(20, 54, 52, .94) !important;
    color: #f4e8c8;
    box-shadow: inset 0 1px 0 rgba(255, 226, 157, .16), 0 2px 0 rgba(38, 21, 14, .62);
}

.mv-impeccable .mv-bag .mv-bag-capacity .mv-icon {
    width: 25px !important;
    height: 25px !important;
}

.mv-impeccable .mv-bag .mv-bag-capacity b {
    font-size: 12px;
}

.mv-impeccable .mv-bag .mv-bag-capacity small {
    color: #c9d9cf;
    font-size: 9px;
}

.mv-impeccable .mv-bag-stage.mv-has-selection .mv-bag-capacity {
    opacity: 0;
    visibility: hidden;
    pointer-events: none;
}

.mv-impeccable .mv-bag .mv-bag-board {
    z-index: 3;
    top: 36.85%;
    left: 18.85%;
    right: 18.85%;
    bottom: auto;
    width: 62.3%;
    height: 28.45%;
    padding: 0;
    overflow: visible;
}

.mv-impeccable .mv-bag .mv-item-grid {
    display: grid;
    width: 100%;
    height: 100%;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    grid-template-rows: repeat(3, minmax(0, 1fr));
    gap: 0;
}

.mv-impeccable .mv-bag .mv-item-cell,
.mv-impeccable .mv-bag .mv-item-ghost {
    width: 100%;
    height: 100%;
    min-width: 44px;
    min-height: 44px;
    border: 0 !important;
    border-radius: 7px;
}

.mv-impeccable .mv-bag .mv-item-cell,
.mv-impeccable .mv-bag .mv-item-cell.mv-selected {
    padding: 7%;
    background: transparent !important;
    box-shadow: none;
    transform: none;
    clip-path: none;
}

.mv-impeccable .mv-bag .mv-item-cell.mv-selected {
    outline: 2px solid #e2b458;
    outline-offset: -4px;
    background: rgba(210, 126, 70, .15) !important;
    box-shadow: inset 0 0 0 2px rgba(255, 235, 170, .22), 0 0 8px rgba(235, 180, 82, .38);
}

.mv-impeccable .mv-bag .mv-item-cell:focus-visible,
.mv-impeccable .mv-bag .mv-item-cell.mv-selected:focus-visible {
    outline: 3px solid #fff1b3;
    outline-offset: -3px;
}

.mv-impeccable .mv-bag .mv-item-cell:not(:disabled):active,
.mv-impeccable .mv-bag .mv-item-cell.mv-selected:not(:disabled):active {
    transform: scale(.94);
}

.mv-impeccable .mv-bag .mv-item-cell[hidden] {
    display: none !important;
}

.mv-impeccable .mv-bag .mv-item-icon {
    width: 100% !important;
    height: 100% !important;
    max-width: none;
    max-height: none;
    background: transparent;
}

.mv-impeccable .mv-bag .mv-item-icon .mv-icon,
.mv-impeccable .mv-bag .mv-item-icon > img {
    width: 74% !important;
    height: 74% !important;
    max-width: 44px;
    max-height: 44px;
    object-fit: contain;
    filter: none;
}

.mv-impeccable .mv-bag .mv-item-count {
    right: 3px;
    bottom: 2px;
    min-width: 20px;
    height: 18px;
    padding-inline: 4px;
    border-width: 1px;
    border-color: #f4e8c8;
    background: #a84e3b;
    font-size: 9px;
    box-shadow: 0 1px 2px rgba(34, 18, 13, .55);
}

.mv-impeccable .mv-bag .mv-item-fav {
    top: 2px;
    right: 3px;
    width: 16px;
    height: 16px;
}

.mv-impeccable .mv-bag .mv-item-fav .mv-icon {
    width: 15px !important;
    height: 15px !important;
}

.mv-impeccable .mv-bag .mv-bag-pager {
    position: absolute;
    z-index: 4;
    top: 67.2%;
    left: 50%;
    display: grid;
    grid-template-columns: 44px auto 44px;
    align-items: center;
    gap: 5px;
    transform: translateX(-50%);
}

.mv-impeccable .mv-bag .mv-bag-pager[hidden] {
    display: none;
}

.mv-impeccable .mv-bag .mv-bag-pager button {
    width: 44px;
    min-width: 44px;
    height: 44px;
    min-height: 44px;
    border: 1px solid #a77b43;
    border-radius: 8px;
    background: #183f3f;
    color: #f4d78f;
    font-size: 24px;
    box-shadow: inset 0 1px 0 rgba(248, 223, 162, .15), 0 2px 0 rgba(36, 19, 12, .62);
}

.mv-impeccable .mv-bag .mv-bag-pager button:disabled {
    opacity: .42;
}

.mv-impeccable .mv-bag .mv-bag-page-label {
    min-width: 42px;
    color: #f4e8c8;
    font-size: 11px;
    font-weight: 850;
    text-align: center;
    text-shadow: 0 1px 1px #102f32;
}

.mv-impeccable .mv-bag-stage.mv-has-selection .mv-bag-pager {
    opacity: 1;
    pointer-events: auto;
}

.mv-impeccable .mv-bag .mv-bag-canvas > .mv-empty {
    top: 51%;
    border-color: #b18347;
    background: rgba(20, 54, 52, .94);
    color: #f4e8c8;
}

/* The selected item is an in-bag inspector mounted in the upper lid.
   It never covers the twelve compartment owners, so every row remains
   directly comparable and tappable while selection changes. */
.mv-impeccable .mv-bag .mv-bag-selection {
    position: absolute;
    z-index: 7;
    top: 16.6%;
    right: auto;
    bottom: auto;
    left: 18.85%;
    display: none;
    width: 62.3%;
    height: 18.8%;
    min-height: 96px;
    max-height: none;
    box-sizing: border-box;
    padding: 5px;
    overflow: hidden;
    border: 1px solid #b18347 !important;
    border-radius: 8px;
    background: rgba(19, 56, 55, .96) !important;
    color: #f4e8c8;
    box-shadow: inset 0 1px 0 rgba(255, 226, 157, .14), 0 2px 0 rgba(38, 21, 14, .62);
    transform: none;
}

.mv-impeccable .mv-bag .mv-bag-selection[data-state="selected"] {
    display: grid;
    grid-template-rows: minmax(42px, .9fr) 44px;
    gap: 3px;
}

.mv-impeccable .mv-bag .mv-bag-selected-main {
    min-width: 0;
    min-height: 0;
    gap: 6px;
    padding: 0 45px 0 2px;
}

.mv-impeccable .mv-bag .mv-bag-selected-icon {
    width: 38px;
    height: 38px;
    margin: 0;
    border-radius: 7px;
    background: rgba(242, 232, 190, .12);
    filter: none;
}

.mv-impeccable .mv-bag .mv-bag-selected-icon .mv-icon,
.mv-impeccable .mv-bag .mv-bag-selected-icon > img {
    width: 34px !important;
    height: 34px !important;
    object-fit: contain;
}

/* Wave73: the Wave66 lid inspector remains inside the approved owner geometry,
   but now carries readable type, semantic rarity contrast, and a shell-owned
   scroll affordance that never becomes part of the scrolling prose. */
.mv-impeccable .mv-bag .mv-bag-selected-copy strong {
    overflow: hidden;
    color: #fff2c9;
    font-size: clamp(12px, 3.2vw, 14px);
    line-height: 16px;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.mv-impeccable .mv-bag .mv-bag-selected-copy span {
    margin-top: 1px;
    overflow: hidden;
    color: #c9d9cf;
    font-size: 11px;
    line-height: 13px;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.mv-impeccable .mv-bag .mv-bag-selection-close {
    top: 4px;
    right: 4px;
    width: 44px;
    min-width: 44px;
    height: 44px;
    min-height: 44px;
    padding: 0;
    border-color: rgba(218, 187, 118, .58) !important;
    background: rgba(29, 73, 70, .96) !important;
    color: #f4e8c8;
    font-size: 11px;
    line-height: 1;
}

.mv-impeccable .mv-bag .mv-bag-action-dock {
    display: grid;
    min-width: 0;
    min-height: 44px;
    grid-template-columns: minmax(0, 1fr) 44px;
    gap: 3px;
}

.mv-impeccable .mv-bag .mv-bag-selection .mv-item-actions {
    display: grid;
    min-width: 0;
    grid-auto-columns: minmax(0, 1fr);
    grid-auto-flow: column;
    grid-template-columns: none;
    gap: 3px;
    margin: 0;
}

.mv-impeccable .mv-bag .mv-bag-selection .mv-item-action {
    min-width: 0;
    min-height: 44px;
    padding: 2px;
    flex-direction: column;
    gap: 0;
    border-color: rgba(218, 187, 118, .5) !important;
    background: rgba(34, 78, 73, .96) !important;
    color: #f4e8c8;
    font-size: 11px;
    line-height: 12px;
    white-space: nowrap;
}

.mv-impeccable .mv-bag .mv-bag-selection .mv-item-action .mv-icon {
    width: 17px !important;
    height: 17px !important;
}

.mv-impeccable .mv-bag .mv-bag-selection .mv-item-action-primary,
.mv-impeccable .mv-bag .mv-bag-selection .mv-item-action.mv-on {
    border-color: #e0b966 !important;
    background: #9e503b !important;
    color: #fff6dc;
}

.mv-impeccable .mv-bag .mv-bag-details {
    position: relative;
    min-width: 44px;
    margin: 0;
}

.mv-impeccable .mv-bag .mv-bag-details > summary {
    width: 44px;
    min-width: 44px;
    min-height: 44px;
    padding: 0;
    border: 1px solid rgba(218, 187, 118, .5);
    border-radius: 7px;
    background: rgba(34, 78, 73, .96);
    color: #f4e8c8;
    font-size: 11px;
    line-height: 12px;
    text-align: center;
}

.mv-impeccable .mv-bag .mv-bag-details > summary::after {
    width: 6px;
    height: 6px;
    margin-left: 5px;
}

.mv-impeccable .mv-bag .mv-bag-details[open] {
    position: absolute;
    z-index: 9;
    inset: 4px;
    display: grid;
    grid-template-rows: 44px minmax(0, 1fr);
    margin: 0;
    overflow: hidden;
    border: 1px solid #b18347;
    border-radius: 7px;
    background: #173f3f;
}

.mv-impeccable .mv-bag .mv-bag-details[open] > summary {
    width: 100%;
    min-width: 0;
    min-height: 44px;
    border: 0;
    border-bottom: 1px solid rgba(218, 187, 118, .38);
    border-radius: 0;
}

.mv-impeccable .mv-bag .mv-bag-details .mv-bag-tooltip {
    height: 100%;
    max-height: none;
    min-height: 0;
    box-sizing: border-box;
    padding: 6px 42px 8px 8px;
    overflow-y: auto;
    border-top: 0;
    color: #dbe4cf;
    font-size: 13px;
    line-height: 18px;
    overscroll-behavior: contain;
}

.mv-impeccable .mv-bag .mv-bag-details .mv-item-tooltip-title {
    color: #fff2c9;
    font-size: 14px;
    line-height: 20px;
}

.mv-impeccable .mv-bag .mv-bag-details .mv-item-rarity-trash { color: #c8d1cd; }
.mv-impeccable .mv-bag .mv-bag-details .mv-item-rarity-common { color: #f4ead0; }
.mv-impeccable .mv-bag .mv-bag-details .mv-item-rarity-uncommon { color: #9bd4a5; }
.mv-impeccable .mv-bag .mv-bag-details .mv-item-rarity-rare { color: #9dcced; }
.mv-impeccable .mv-bag .mv-bag-details .mv-item-rarity-epic { color: #e0b2dc; }
.mv-impeccable .mv-bag .mv-bag-details .mv-item-rarity-legendary { color: #f4c271; }
.mv-impeccable .mv-bag .mv-bag-details .mv-item-rarity-mythical { color: #ffad91; }

.mv-impeccable .mv-bag .mv-bag-details[open] > .mv-scroll-hint[data-axis="y"] {
    position: absolute;
    right: 7px;
    bottom: 7px;
    left: auto;
    width: 32px;
    height: 32px;
}

.mv-impeccable .mv-bag .mv-bag-details[open] > .mv-scroll-hint[data-axis="y"] > .mv-scroll-hint-dot {
    right: 0;
    bottom: 0;
    left: auto;
}

[data-theme="night"] .mv-impeccable .mv-bag .mv-bag-selection {
    border-color: #b18347 !important;
    background: rgba(13, 42, 45, .97) !important;
    color: #f4e8c8;
}

.mv-impeccable .mv-bag .mv-bag-details .mv-bag-tooltip {
    scrollbar-width: none;
}

.mv-impeccable .mv-bag .mv-bag-details .mv-bag-tooltip::-webkit-scrollbar {
    display: none;
}

.mv-impeccable .mv-tab::before,
body.mv-impeccable:has(.mv-scene.mv-active[data-mode="combat"] > .mv-combat[data-combat-art-owner="Infested field"]) .mv-tab::before {
    content: "";
    position: absolute;
    z-index: 0;
    top: 2px;
    left: 7%;
    right: 7%;
    bottom: 10px;
    border: 1px solid transparent;
    border-radius: 10px;
    pointer-events: none;
}

.mv-impeccable .mv-tab > *,
body.mv-impeccable:has(.mv-scene.mv-active[data-mode="combat"] > .mv-combat[data-combat-art-owner="Infested field"]) .mv-tab > * {
    position: relative;
    z-index: 1;
}

.mv-impeccable .mv-tab.mv-active::before,
body.mv-impeccable:has(.mv-scene.mv-active[data-mode="combat"] > .mv-combat[data-combat-art-owner="Infested field"]) .mv-tab.mv-active::before {
    border-color: rgba(241, 200, 109, .7);
    background: rgba(34, 88, 84, .7);
    box-shadow: inset 0 0 0 1px rgba(255, 235, 169, .12), inset 0 3px 8px rgba(9, 34, 35, .62), 0 0 9px rgba(241, 200, 109, .34);
}

.mv-impeccable .mv-tab.mv-active .mv-tab-icon,
body.mv-impeccable:has(.mv-scene.mv-active[data-mode="combat"] > .mv-combat[data-combat-art-owner="Infested field"]) .mv-tab.mv-active .mv-tab-icon {
    transform: translateY(-2px) scale(1.06);
}

.mv-impeccable .mv-tab.mv-active .mv-tab-icon .mv-icon,
body.mv-impeccable:has(.mv-scene.mv-active[data-mode="combat"] > .mv-combat[data-combat-art-owner="Infested field"]) .mv-tab.mv-active .mv-tab-icon .mv-icon {
    filter: brightness(1.16) saturate(1.08);
}

@media (max-width: 370px), (max-height: 740px) {
    .mv-impeccable .mv-bag .mv-bag-capacity { top: 26.8%; }
    .mv-impeccable .mv-bag .mv-bag-board {
        top: 36.85%;
        left: 18.85%;
        right: 18.85%;
        width: 62.3%;
        height: 28.45%;
    }
    .mv-impeccable .mv-bag .mv-item-grid {
        grid-template-columns: repeat(4, minmax(0, 1fr));
        grid-template-rows: repeat(3, minmax(0, 1fr));
        gap: 0;
    }
    .mv-impeccable .mv-bag .mv-item-cell,
    .mv-impeccable .mv-bag .mv-item-ghost {
        width: 100%;
        height: 100%;
        min-height: 44px;
    }
}

@media (prefers-reduced-motion: reduce) {
    .mv-impeccable .mv-bag .mv-item-cell,
    .mv-impeccable .mv-tab,
    .mv-impeccable .mv-tab-icon { transition: none; }
}

/* ═══════════════════════════════════════════════════════════════════
   Wave67: Journal canvas containment
   The Wave57 raster stays production truth. Its 895×1523 paper aperture
   defines the only viewport where live Journal text may render or scroll.
   ═══════════════════════════════════════════════════════════════════ */

.mv-impeccable .mv-screen.mv-journal-route-board {
    /* Raster-derived safe paper rectangle:
       x = 112..783 / 895; bottom = 1355 / 1523. */
    --journal-canvas-top: 117px;
    --journal-canvas-side: 12.5%;
    --journal-canvas-bottom: 11%;
    --journal-canvas-pad-top: 12px;
    --journal-canvas-pad-right: 6px;
    --journal-canvas-pad-bottom: 34px;
    --journal-canvas-pad-left: 12px;
}

.mv-impeccable .mv-journal-route-board > .mv-journal-header {
    display: grid;
    grid-template-columns: 42px minmax(0, 1fr) 78px;
    column-gap: 8px;
    min-height: 60px;
    margin-top: 0;
}

.mv-impeccable .mv-journal-route-board > .mv-journal-header::after {
    display: none;
}

.mv-impeccable .mv-journal-route-board > .mv-journal-header .mv-surface-header-copy {
    overflow: hidden;
}

.mv-impeccable .mv-journal-route-board > .mv-journal-header .mv-surface-header-copy small {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.mv-impeccable .mv-journal-route-board > .mv-journal-header .mv-route-board-heading {
    width: 78px;
    min-width: 0;
    margin: 0;
    justify-self: end;
    grid-template-columns: minmax(0, 1fr);
    overflow: visible;
    clip-path: none;
}

.mv-impeccable .mv-journal-route-board > .mv-journal-header .mv-journal-entry-count {
    width: 100%;
    min-width: 0;
    box-sizing: border-box;
    padding-inline: 5px;
}

.mv-impeccable .mv-journal-route-board > .mv-journal-view {
    position: absolute;
    top: var(--journal-canvas-top);
    right: var(--journal-canvas-side);
    bottom: var(--journal-canvas-bottom);
    left: var(--journal-canvas-side);
    width: auto;
    height: auto;
    margin: 0;
    padding: 0;
    overflow-x: hidden;
    overflow-y: auto;
    overscroll-behavior: contain;
    scroll-padding-block: var(--journal-canvas-pad-top) var(--journal-canvas-pad-bottom);
    scroll-snap-type: y mandatory;
}

.mv-impeccable .mv-journal-route-board .mv-route-legend {
    grid-template-columns: repeat(4, minmax(0, 1fr));
}

.mv-impeccable .mv-journal-route-board .mv-route-legend-label {
    display: none;
}

.mv-impeccable .mv-journal-route-board .mv-route-legend .mv-chip-toggle.mv-cozy-button {
    background: #e2e3bd !important;
    opacity: 1;
}

.mv-impeccable .mv-journal-route-board .mv-route-legend .mv-chip-toggle.mv-cozy-button:not(.mv-on) .mv-icon {
    opacity: .62;
}

.mv-impeccable .mv-journal-route-board .mv-route-legend .mv-chip-toggle.mv-cozy-button.mv-on {
    background: var(--journal-board-note) !important;
}

.mv-impeccable .mv-journal-route-board > .mv-journal-view > .mv-journal-panel {
    min-width: 0;
    padding:
        var(--journal-canvas-pad-top)
        var(--journal-canvas-pad-right)
        var(--journal-canvas-pad-bottom)
        var(--journal-canvas-pad-left);
}

/* A light ledger band lets the eye segment each stop without turning the
   route into stacked cards. It owns both the event label and its timestamp. */
.mv-impeccable .mv-journal-route-board .mv-route-stop .mv-harvest-header {
    width: 100%;
    min-width: 0;
    min-height: 28px;
    box-sizing: border-box;
    padding: 4px 7px;
    border-left: 3px solid rgba(189, 95, 67, .58);
    border-radius: 7px;
    background: rgba(71, 111, 94, .13);
}

.mv-impeccable .mv-journal-route-board .mv-harvest-levelup .mv-harvest-header::before {
    content: "成長";
    color: var(--journal-board-ink);
    font-weight: 800;
    letter-spacing: 1.5px;
}

/* The generic 32px bouncing slot floats upward into the final harvest chip.
   Journal owns a narrow paper-bottom gutter, so keep only the chevron there. */
.mv-impeccable .mv-journal-route-board > .mv-journal-view > .mv-scroll-hint[data-axis="y"] {
    bottom: 0;
}

.mv-impeccable .mv-journal-route-board > .mv-journal-view > .mv-scroll-hint[data-axis="y"] > .mv-scroll-hint-dot {
    width: 20px;
    height: 14px;
    left: -10px;
    bottom: 0;
    border: 0;
    background: transparent;
    box-shadow: none;
    filter: none;
    animation: none;
}

.mv-impeccable .mv-journal-route-board :is(
    .mv-journal-log-summary,
    .mv-route-legend,
    .mv-route-stop,
    .mv-route-source-marker,
    .mv-quest,
    .mv-bestiary-row
) {
    scroll-snap-align: start;
    scroll-margin-top: var(--journal-canvas-pad-top);
}

.mv-impeccable .mv-journal-route-board .mv-canvas-edge-clipped {
    visibility: hidden;
    pointer-events: none;
}

.mv-impeccable .mv-journal-route-board :is(
    .mv-harvest-card,
    .mv-harvest-body,
    .mv-harvest-kills,
    .mv-harvest-loc,
    .mv-quest,
    .mv-quest-task,
    .mv-bestiary-row
) {
    min-width: 0;
    max-width: 100%;
    overflow-wrap: anywhere;
    word-break: break-word;
}

@media (max-width: 370px), (max-height: 740px) {
    .mv-impeccable .mv-screen.mv-journal-route-board {
        --journal-canvas-top: 113px;
    }

    .mv-impeccable .mv-journal-route-board > .mv-journal-header {
        grid-template-columns: 38px minmax(0, 1fr) 78px;
        column-gap: 7px;
        min-height: 58px;
        margin-top: 0;
    }

    .mv-impeccable .mv-journal-route-board > .mv-journal-header .mv-route-board-heading {
        width: 78px;
    }
}

/* ═══════════════════════════════════════════════════════════════════
   Wave68: approved close-camera Character stage.
   Runtime mounts follow the promoted source-pixel cabinet geometry.
   ═══════════════════════════════════════════════════════════════════ */
.mv-impeccable .mv-more-v2[data-more-panel="character"] .mv-pd-loadout-stage::before {
    background-image: url("/resources/img/backgrounds/bg-character-loadout-close-clean-cel-v1.png");
}

@media (min-height: 741px) {
    .mv-impeccable .mv-more-v2[data-more-panel="character"] .mv-pd-loadout-stage {
        width: 100%;
        height: auto;
        max-height: none;
    }
}

.mv-impeccable .mv-more-v2[data-more-panel="character"] .mv-pd-loadout-stage .mv-pd-name-row {
    top: 8.5%;
}

.mv-impeccable .mv-more-v2[data-more-panel="character"] .mv-pd-loadout-stage .mv-pd-center {
    top: 35%;
    width: 56%;
}

.mv-impeccable .mv-more-v2[data-more-panel="character"] .mv-pd-loadout-stage .mv-pd-slot.mv-cozy-slot {
    width: 52px;
    min-width: 52px;
    height: 52px;
    min-height: 52px;
    padding: 3px;
}

.mv-impeccable .mv-more-v2[data-more-panel="character"] .mv-pd-loadout-stage .mv-pd-slot .mv-icon {
    width: 45px !important;
    height: 45px !important;
}

.mv-impeccable .mv-more-v2[data-more-panel="character"] .mv-pd-loadout-stage .mv-pd-slot-empty .mv-icon {
    width: 34px !important;
    height: 34px !important;
}

.mv-impeccable .mv-more-v2[data-more-panel="character"] .mv-pd-loadout-stage .mv-pd-slot[data-slot="head"] { left: 9.814%; top: 32.943%; }
.mv-impeccable .mv-more-v2[data-more-panel="character"] .mv-pd-loadout-stage .mv-pd-slot[data-slot="torso"] { left: 9.814%; top: 49.544%; }
.mv-impeccable .mv-more-v2[data-more-panel="character"] .mv-pd-loadout-stage .mv-pd-slot[data-slot="arms"] { left: 9.814%; top: 66.341%; }
.mv-impeccable .mv-more-v2[data-more-panel="character"] .mv-pd-loadout-stage .mv-pd-slot[data-slot="weapon"] { left: 90.137%; top: 32.943%; }
.mv-impeccable .mv-more-v2[data-more-panel="character"] .mv-pd-loadout-stage .mv-pd-slot[data-slot="legs"] { left: 90.137%; top: 49.544%; }
.mv-impeccable .mv-more-v2[data-more-panel="character"] .mv-pd-loadout-stage .mv-pd-slot[data-slot="feet"] { left: 90.137%; top: 66.341%; }
.mv-impeccable .mv-more-v2[data-more-panel="character"] .mv-pd-loadout-stage .mv-pd-slot[data-slot="off-hand"] { left: 24.268%; top: 91.797%; }
.mv-impeccable .mv-more-v2[data-more-panel="character"] .mv-pd-loadout-stage .mv-pd-slot[data-slot="cape"] { left: 41.357%; top: 91.797%; }
.mv-impeccable .mv-more-v2[data-more-panel="character"] .mv-pd-loadout-stage .mv-pd-slot[data-slot="ring"] { left: 58.447%; top: 91.797%; }
.mv-impeccable .mv-more-v2[data-more-panel="character"] .mv-pd-loadout-stage .mv-pd-slot[data-slot="amulet"] { left: 75.586%; top: 91.797%; }

@media (max-width: 370px), (max-height: 740px) {
    .mv-impeccable .mv-more-v2[data-more-panel="character"] .mv-pd-loadout-stage .mv-pd-slot.mv-cozy-slot {
        width: 44px;
        min-width: 44px;
        height: 44px;
        min-height: 44px;
        padding: 1px;
    }

    .mv-impeccable .mv-more-v2[data-more-panel="character"] .mv-pd-loadout-stage .mv-pd-slot .mv-icon {
        width: 42px !important;
        height: 42px !important;
    }

    .mv-impeccable .mv-more-v2[data-more-panel="character"] .mv-pd-loadout-stage .mv-pd-slot-empty .mv-icon {
        width: 32px !important;
        height: 32px !important;
    }
}

/* ═══════════════════════════════════════════════════════════════════
   Wave68.1: Character traveller dossier.
   Details are a dedicated cabinet ledger, not a pale floating web sheet.
   One continuous framed canvas owns the heading, overview and scroll body.
   ═══════════════════════════════════════════════════════════════════ */
body.mv-impeccable .mv-character-details-sheet {
    --dossier-shell: #11383b;
    --dossier-shell-deep: #0b292c;
    --dossier-brass: #d8a856;
    --dossier-brass-dark: #8d5b2f;
    --dossier-paper: #f0e7c8;
    --dossier-paper-deep: #ddd3ad;
    --dossier-ink: #253f41;
    --dossier-ink-soft: #607473;
    inset: 0;
    z-index: 95;
    display: grid;
    place-items: center;
    width: 100%;
    height: 100dvh;
    padding: 0;
    background: var(--dossier-shell-deep);
}

body.mv-impeccable .mv-character-details-sheet[hidden] {
    display: none;
}

[data-theme="night"] body.mv-impeccable .mv-character-details-sheet {
    --dossier-shell: #12393d;
    --dossier-shell-deep: #081f23;
    --dossier-brass: #d3915e;
    --dossier-brass-dark: #77462f;
    --dossier-paper: #21494a;
    --dossier-paper-deep: #193d40;
    --dossier-ink: #f7edcf;
    --dossier-ink-soft: #b9cbc4;
}

body.mv-impeccable .mv-character-details-sheet > .mv-sheet.mv-character-dossier {
    position: relative;
    display: flex;
    flex-direction: column;
    width: min(100%, 560px);
    height: 100dvh;
    max-height: 100dvh;
    min-height: 0;
    padding: max(10px, env(safe-area-inset-top)) 10px max(8px, env(safe-area-inset-bottom));
    overflow: hidden;
    border: 7px solid var(--dossier-brass-dark);
    border-top-width: 9px;
    border-bottom-width: 9px;
    border-radius: 0;
    background: var(--dossier-shell);
    clip-path: none;
    color: var(--dossier-ink);
    box-shadow: inset 0 0 0 2px var(--dossier-brass), inset 0 0 0 5px var(--dossier-shell-deep);
}

[data-theme="night"] body.mv-impeccable .mv-character-details-sheet > .mv-sheet.mv-cozy-panel.mv-character-dossier {
    border-color: var(--dossier-brass-dark);
    background: var(--dossier-shell);
    color: var(--dossier-ink);
    box-shadow: inset 0 0 0 2px var(--dossier-brass), inset 0 0 0 5px var(--dossier-shell-deep);
}

body.mv-impeccable .mv-character-dossier > .mv-sheet-grip {
    display: none;
}

body.mv-impeccable .mv-character-dossier-heading.mv-sheet-heading {
    flex: none;
    min-height: 64px;
    margin: 0 2px 8px;
    padding: 5px 6px 7px;
    border-bottom: 2px solid var(--dossier-brass);
}

body.mv-impeccable .mv-character-dossier-heading .mv-sheet-title-block {
    gap: 8px;
}

body.mv-impeccable .mv-character-dossier-heading .mv-sheet-title-art {
    width: 50px;
    height: 50px;
    border: 2px solid var(--dossier-brass);
    border-radius: 50%;
    background: var(--dossier-paper);
}

body.mv-impeccable .mv-character-dossier-heading .mv-sheet-title-copy h3,
[data-theme="night"] body.mv-impeccable .mv-character-dossier-heading .mv-sheet-title-copy h3 {
    margin: 0;
    color: #fff2ce;
    font-size: 23px;
    line-height: 1.05;
    letter-spacing: .06em;
}

body.mv-impeccable .mv-character-dossier-heading .mv-sheet-title-copy small {
    margin-top: 4px;
    color: #b9cbc4;
    font-size: 11px;
}

body.mv-impeccable .mv-character-dossier-heading .mv-sheet-visible-close.mv-cozy-button {
    width: 64px;
    min-width: 64px;
    min-height: 48px;
    padding: 4px;
    border: 2px solid var(--dossier-brass);
    border-radius: 9px;
    background: #285a57;
    color: #fff2ce;
    font-size: 14px;
    font-weight: 800;
    box-shadow: 0 3px 0 var(--dossier-shell-deep);
}

body.mv-impeccable .mv-character-dossier > .mv-pd-glance {
    flex: none;
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 0;
    margin: 0 2px 8px;
    padding: 5px 4px;
    border: 1px solid var(--dossier-brass-dark);
    border-top-color: var(--dossier-brass);
    border-bottom-color: var(--dossier-brass);
    border-radius: 8px;
    background: var(--dossier-shell-deep);
}

body.mv-impeccable .mv-character-dossier > .mv-pd-glance > span.mv-cozy-slot,
[data-theme="night"] body.mv-impeccable .mv-character-dossier > .mv-pd-glance > span.mv-cozy-slot {
    min-height: 50px;
    grid-template-columns: 26px minmax(0, 1fr);
    padding: 3px 7px;
    border: 0;
    border-right: 1px solid rgba(216, 168, 86, .42);
    border-radius: 0;
    background: transparent;
    color: #fff2ce;
    box-shadow: none;
}

body.mv-impeccable .mv-character-dossier > .mv-pd-glance > span:last-child {
    border-right: 0;
}

body.mv-impeccable .mv-character-dossier > .mv-pd-glance b {
    font-size: 13px;
}

body.mv-impeccable .mv-character-dossier > .mv-pd-glance small {
    color: #aac1ba;
    font-size: 9px;
}

body.mv-impeccable .mv-character-dossier .mv-character-details-scroll {
    flex: 1 1 auto;
    min-height: 0;
    margin: 0 2px;
    padding: 10px 10px max(28px, calc(12px + env(safe-area-inset-bottom)));
    overflow-x: hidden;
    overflow-y: auto;
    border: 2px solid var(--dossier-brass-dark);
    border-radius: 8px;
    background: var(--dossier-paper);
    color: var(--dossier-ink);
    box-shadow: inset 0 0 0 1px var(--dossier-brass);
    scrollbar-width: none;
}

body.mv-impeccable .mv-character-dossier .mv-character-details-scroll::-webkit-scrollbar {
    display: none;
}

body.mv-impeccable .mv-character-dossier .mv-character-dossier-section {
    position: relative;
    margin: 0;
    padding: 10px 0 12px;
    border: 0;
    border-bottom: 1px solid color-mix(in srgb, var(--dossier-brass-dark) 44%, transparent);
    border-radius: 0;
    background: transparent;
    clip-path: none;
    color: var(--dossier-ink);
    box-shadow: none;
}

body.mv-impeccable .mv-character-dossier .mv-character-dossier-section:first-child {
    padding-top: 2px;
}

body.mv-impeccable .mv-character-dossier .mv-character-dossier-label {
    display: flex;
    align-items: center;
    gap: 6px;
    margin: 0 0 7px;
    color: var(--dossier-ink);
    font-size: 15px;
    letter-spacing: .08em;
}

body.mv-impeccable .mv-character-dossier :is(
    .mv-pd-xp-section,
    .mv-pd-vital,
    .mv-pd-base-stats,
    .mv-pd-atk-panel,
    .mv-pd-def-panel
).mv-cozy-panel {
    border: 0;
    border-radius: 0;
    background: transparent;
    clip-path: none;
    color: var(--dossier-ink);
    box-shadow: none;
}

body.mv-impeccable .mv-character-dossier .mv-pd-xp-section.mv-cozy-panel {
    padding: 0 3px 8px;
}

body.mv-impeccable .mv-character-dossier .mv-pd-xp-info {
    color: var(--dossier-ink-soft);
    font-size: 13px;
    font-weight: 700;
}

body.mv-impeccable .mv-character-dossier .mv-bar {
    min-height: 9px;
    border: 1px solid color-mix(in srgb, var(--dossier-brass-dark) 54%, transparent);
    background: color-mix(in srgb, var(--dossier-shell-deep) 18%, var(--dossier-paper-deep));
}

body.mv-impeccable .mv-character-dossier .mv-pd-vitals-row {
    gap: 8px;
}

body.mv-impeccable .mv-character-dossier .mv-pd-vital.mv-cozy-panel {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    gap: 4px 8px;
    padding: 7px 9px;
    border-left: 4px solid var(--dossier-brass-dark);
    background: var(--dossier-paper-deep);
}

body.mv-impeccable .mv-character-dossier .mv-character-dossier-meter-name {
    color: var(--dossier-ink);
    font-size: 12px;
    font-weight: 800;
}

body.mv-impeccable .mv-character-dossier .mv-pd-vital-label {
    color: var(--dossier-ink-soft);
    font-size: 11px;
    font-variant-numeric: tabular-nums;
}

body.mv-impeccable .mv-character-dossier .mv-pd-vital .mv-bar {
    grid-column: 1 / -1;
}

body.mv-impeccable .mv-character-dossier .mv-pd-stats-panel.mv-cozy-panel {
    gap: 8px;
    padding-inline: 0;
}

body.mv-impeccable .mv-character-dossier .mv-pd-base-stats.mv-cozy-panel,
body.mv-impeccable .mv-character-dossier .mv-pd-atk-panel.mv-cozy-panel,
body.mv-impeccable .mv-character-dossier .mv-pd-def-panel.mv-cozy-panel {
    padding: 0;
}

body.mv-impeccable .mv-character-dossier :is(.mv-pd-stats-title, .mv-pd-atk-title, .mv-pd-def-title) {
    margin: 0 0 6px;
    color: var(--dossier-ink);
    font-size: 14px;
    letter-spacing: .06em;
}

body.mv-impeccable .mv-character-dossier .mv-pd-base-row {
    display: grid;
    grid-template-columns: repeat(5, minmax(0, 1fr));
    gap: 5px;
}

body.mv-impeccable .mv-character-dossier .mv-pd-base-cell.mv-cozy-slot,
[data-theme="night"] body.mv-impeccable .mv-character-dossier .mv-pd-base-cell.mv-cozy-slot {
    min-height: 50px;
    padding: 5px 2px;
    border: 1px solid color-mix(in srgb, var(--dossier-brass-dark) 55%, transparent);
    border-bottom: 3px solid var(--dossier-brass-dark);
    border-radius: 7px;
    background: var(--dossier-paper-deep);
    color: var(--dossier-ink);
    box-shadow: none;
}

body.mv-impeccable .mv-character-dossier .mv-pd-base-label {
    color: var(--dossier-ink-soft);
}

body.mv-impeccable .mv-character-dossier .mv-pd-base-val {
    color: var(--dossier-ink);
    font-size: 17px;
}

body.mv-impeccable .mv-character-dossier .mv-pd-combat-row {
    gap: 10px;
    padding-top: 2px;
}

body.mv-impeccable .mv-character-dossier :is(.mv-pd-atk-panel, .mv-pd-def-panel) {
    min-width: 0;
}

body.mv-impeccable .mv-character-dossier .mv-pd-stat-row.mv-cozy-slot,
[data-theme="night"] body.mv-impeccable .mv-character-dossier .mv-pd-stat-row.mv-cozy-slot {
    min-height: 32px;
    padding: 4px 6px;
    border: 0;
    border-bottom: 1px solid color-mix(in srgb, var(--dossier-brass-dark) 34%, transparent);
    border-radius: 0;
    background: transparent;
    color: var(--dossier-ink);
    box-shadow: none;
}

body.mv-impeccable .mv-character-dossier .mv-pd-stat-val {
    color: var(--dossier-ink);
}

body.mv-impeccable .mv-character-dossier .mv-pd-effects {
    margin-top: 2px;
}

body.mv-impeccable .mv-character-dossier .mv-pd-effect-chip.mv-cozy-slot,
[data-theme="night"] body.mv-impeccable .mv-character-dossier .mv-pd-effect-chip.mv-cozy-slot {
    border: 1px solid var(--dossier-brass-dark);
    border-radius: 16px;
    background: var(--dossier-paper-deep);
    color: var(--dossier-ink);
}

body.mv-impeccable .mv-character-dossier .mv-pd-bonuses {
    color: var(--dossier-ink-soft);
    text-align: left;
}

body.mv-impeccable .mv-character-dossier .mv-pd-reputation-card.mv-cozy-panel {
    padding-inline: 0;
    background: transparent;
}

body.mv-impeccable .mv-character-dossier .mv-pd-reputation-heading h4,
body.mv-impeccable .mv-character-dossier .mv-pd-reputation-hint {
    color: var(--dossier-ink);
}

body.mv-impeccable .mv-character-dossier .mv-pd-reputation-hint {
    color: var(--dossier-ink-soft);
}

body.mv-impeccable .mv-character-dossier .mv-pd-reputation-tile.mv-cozy-slot,
[data-theme="night"] body.mv-impeccable .mv-character-dossier .mv-pd-reputation-tile.mv-cozy-slot {
    min-height: 66px;
    border: 1px solid color-mix(in srgb, var(--dossier-brass-dark) 55%, transparent);
    border-bottom: 3px solid var(--dossier-brass-dark);
    border-radius: 7px;
    background: var(--dossier-paper-deep);
    clip-path: none;
    color: var(--dossier-ink);
    box-shadow: none;
}

body.mv-impeccable .mv-character-dossier .mv-pd-reputation-label,
body.mv-impeccable .mv-character-dossier .mv-pd-reputation-value {
    color: var(--dossier-ink);
}

body.mv-impeccable .mv-character-dossier .mv-char-itemlog.mv-cozy-panel {
    margin-top: 10px;
    padding: 0;
    border: 1px solid var(--dossier-brass-dark);
    border-radius: 8px;
    background: var(--dossier-paper-deep);
    clip-path: none;
    color: var(--dossier-ink);
    box-shadow: none;
}

body.mv-impeccable .mv-character-dossier .mv-char-itemlog > summary.mv-cozy-button {
    min-height: 48px;
    padding: 8px 12px;
    border: 0;
    border-radius: 7px;
    background: transparent;
    color: var(--dossier-ink);
    font-size: 14px;
    font-weight: 800;
    box-shadow: none;
}

body.mv-impeccable .mv-character-dossier .mv-char-itemlog-rows {
    max-height: none;
    padding: 0 9px 9px;
    overflow: visible;
}

body.mv-impeccable .mv-character-dossier .mv-char-effect.mv-cozy-slot,
[data-theme="night"] body.mv-impeccable .mv-character-dossier .mv-char-effect.mv-cozy-slot {
    min-height: 40px;
    border: 0;
    border-top: 1px solid color-mix(in srgb, var(--dossier-brass-dark) 34%, transparent);
    border-radius: 0;
    background: transparent;
    color: var(--dossier-ink);
    box-shadow: none;
}

body.mv-impeccable .mv-character-dossier .mv-char-effect-time {
    color: var(--dossier-ink-soft);
}

@media (max-width: 370px), (max-height: 740px) {
    body.mv-impeccable .mv-character-details-sheet > .mv-sheet.mv-character-dossier {
        padding-inline: 6px;
        border-inline-width: 5px;
    }

    body.mv-impeccable .mv-character-dossier-heading.mv-sheet-heading {
        min-height: 58px;
        margin-bottom: 6px;
        padding-inline: 3px;
    }

    body.mv-impeccable .mv-character-dossier-heading .mv-sheet-title-art {
        width: 44px;
        height: 44px;
    }

    body.mv-impeccable .mv-character-dossier-heading .mv-sheet-title-copy h3,
    [data-theme="night"] body.mv-impeccable .mv-character-dossier-heading .mv-sheet-title-copy h3 {
        font-size: 20px;
    }

    body.mv-impeccable .mv-character-dossier-heading .mv-sheet-title-copy small {
        font-size: 10px;
    }

    body.mv-impeccable .mv-character-dossier-heading .mv-sheet-visible-close.mv-cozy-button {
        width: 56px;
        min-width: 56px;
        min-height: 44px;
    }

    body.mv-impeccable .mv-character-dossier > .mv-pd-glance {
        margin-bottom: 6px;
        padding-inline: 1px;
    }

    body.mv-impeccable .mv-character-dossier > .mv-pd-glance > span.mv-cozy-slot,
    [data-theme="night"] body.mv-impeccable .mv-character-dossier > .mv-pd-glance > span.mv-cozy-slot {
        grid-template-columns: 23px minmax(0, 1fr);
        padding-inline: 4px;
    }

    body.mv-impeccable .mv-character-dossier .mv-character-details-scroll {
        padding: 8px 8px max(24px, calc(10px + env(safe-area-inset-bottom)));
    }
}

/* ═══════════════════════════════════════════════════════════════════
   Wave69: compact More masthead.
   The study identity and its four room switches share one cabinet lintel,
   returning the former second navigation row to the active scene.
   ═══════════════════════════════════════════════════════════════════ */
body.mv-impeccable .mv-more-v2.mv-active {
    display: grid;
    grid-template-columns: 144px minmax(0, 1fr);
    grid-template-rows: auto minmax(0, 1fr);
    column-gap: 6px;
    row-gap: 0;
}

body.mv-impeccable .mv-more-v2 > .mv-more-view {
    grid-column: 1 / -1;
    grid-row: 2;
}

body.mv-impeccable .mv-more-v2 > .mv-more-header {
    display: grid;
    grid-template-columns: 40px minmax(70px, 86px);
    grid-column: 1;
    grid-row: 1;
    align-items: center;
    gap: 6px;
    min-height: 58px;
    padding: 4px 6px 5px;
    border-bottom: 1px solid rgba(216, 168, 86, .72);
}

body.mv-impeccable .mv-more-v2 > .mv-more-header .mv-surface-header-art {
    width: 40px;
    height: 40px;
}

body.mv-impeccable .mv-more-v2 > .mv-more-header .mv-surface-header-art .mv-icon {
    width: 38px !important;
    height: 38px !important;
}

body.mv-impeccable .mv-more-v2 > .mv-more-header .mv-surface-header-copy {
    overflow: hidden;
    color: #fff5e7;
    text-shadow: 0 2px 9px rgba(17, 36, 35, .82);
}

body.mv-impeccable .mv-more-v2 > .mv-more-header .mv-surface-header-copy strong {
    overflow: hidden;
    font-family: "Noto Serif TC", "PMingLiU", serif;
    font-size: 17px;
    line-height: 1.05;
    letter-spacing: .06em;
    text-overflow: ellipsis;
    white-space: nowrap;
}

body.mv-impeccable .mv-more-v2 > .mv-more-header .mv-surface-header-copy small {
    margin-top: 3px;
    overflow: hidden;
    color: #d3ddc8;
    font-size: 9px;
    line-height: 1.1;
    letter-spacing: .02em;
    text-overflow: ellipsis;
    white-space: nowrap;
}

body.mv-impeccable .mv-more-v2 > .mv-more-nav {
    display: grid;
    grid-template-columns: repeat(4, minmax(44px, 1fr));
    grid-column: 2;
    grid-row: 1;
    align-self: center;
    gap: 2px;
    min-width: 0;
    padding: 2px;
    border: 1px solid rgba(216, 168, 86, .72);
    border-radius: 9px;
    background: rgba(8, 43, 43, .84);
    box-shadow: 0 3px 7px rgba(9, 29, 29, .34);
}

body.mv-impeccable .mv-more-v2 > .mv-more-nav .mv-more-nav-button.mv-cozy-button {
    width: 100%;
    min-width: 0;
    min-height: 48px;
    padding: 3px 1px 2px;
    gap: 0;
    border: 0;
    border-radius: 6px;
    background: #f2ebca;
    color: #526861;
    font-size: 12px;
    line-height: 1;
    text-shadow: none;
    box-shadow: inset 0 0 0 1px rgba(125, 160, 150, .82);
    filter: none;
}

body.mv-impeccable .mv-more-v2 > .mv-more-nav .mv-more-nav-button .mv-icon,
body.mv-impeccable .mv-more-v2 > .mv-more-nav .mv-more-nav-button .mv-icon[src*="hero-portrait-clean-cel-v1.png"] {
    width: 22px !important;
    height: 22px !important;
}

body.mv-impeccable .mv-more-v2 > .mv-more-nav .mv-more-nav-button > span {
    overflow: hidden;
    text-overflow: clip;
    white-space: nowrap;
}

body.mv-impeccable .mv-more-v2 > .mv-more-nav .mv-more-nav-button.mv-cozy-button[aria-selected="true"] {
    background: #315f55;
    color: #fff8e8;
    box-shadow: inset 0 0 0 1px #d8a856, 0 2px 0 rgba(17, 48, 39, .4);
    transform: none;
}

[data-theme="night"] body.mv-impeccable .mv-more-v2 > .mv-more-nav .mv-more-nav-button.mv-cozy-button {
    background: #234d51;
    color: #f6edcf;
    box-shadow: inset 0 0 0 1px #72958f;
}

[data-theme="night"] body.mv-impeccable .mv-more-v2 > .mv-more-nav .mv-more-nav-button.mv-cozy-button[aria-selected="true"] {
    background: #a9513d;
    color: #fff8e8;
    box-shadow: inset 0 0 0 1px #e6b36e, 0 2px 0 rgba(5, 20, 25, .5);
}

@media (max-width: 370px), (max-height: 740px) {
    body.mv-impeccable .mv-more-v2.mv-active {
        grid-template-columns: 118px minmax(0, 1fr);
        column-gap: 4px;
    }

    body.mv-impeccable .mv-more-v2 > .mv-more-header {
        grid-template-columns: 38px 68px;
        gap: 4px;
        min-height: 56px;
        padding-inline: 4px;
    }

    body.mv-impeccable .mv-more-v2 > .mv-more-header .mv-surface-header-art {
        width: 38px;
        height: 38px;
    }

    body.mv-impeccable .mv-more-v2 > .mv-more-header .mv-surface-header-art .mv-icon {
        width: 36px !important;
        height: 36px !important;
    }

    body.mv-impeccable .mv-more-v2 > .mv-more-header .mv-surface-header-copy strong {
        font-size: 15px;
    }

    body.mv-impeccable .mv-more-v2 > .mv-more-header .mv-surface-header-copy small {
        font-size: 8px;
    }

    body.mv-impeccable .mv-more-v2 > .mv-more-nav {
        grid-template-columns: repeat(4, minmax(44px, 1fr));
        gap: 1px;
        padding: 1px;
    }

    body.mv-impeccable .mv-more-v2 > .mv-more-nav .mv-more-nav-button.mv-cozy-button {
        min-height: 48px;
        font-size: 12px;
    }
}

/* Wave69.1: the travel kiosk and traveller archive are fixtures of the
   Moonlit Study, not full posters placed inside it. Crop their ornamental
   crowns and plinths into the surrounding beams, then give the useful
   route/ledger apertures the reclaimed height. */
body.mv-impeccable .mv-more-panel[data-more-panel="travel"] .mv-map.mv-cozy-panel,
body.mv-impeccable .mv-more-panel[data-more-panel="saves"] .mv-save-archive {
    width: 100%;
    max-width: 376px;
    max-height: none;
    box-shadow:
        inset 0 10px 12px rgba(31, 20, 12, .56),
        inset 0 -9px 12px rgba(31, 20, 12, .5);
}

body.mv-impeccable .mv-more-panel[data-more-panel="travel"] .mv-map::before,
body.mv-impeccable .mv-more-panel[data-more-panel="saves"] .mv-save-archive::before {
    transform: scale(1.18);
    transform-origin: center;
}

body.mv-impeccable .mv-more-panel[data-more-panel="travel"] .mv-map::before {
    transform: scale(1.35);
}

body.mv-impeccable .mv-more-panel[data-more-panel="travel"] .mv-map::after {
    content: "";
    position: absolute;
    z-index: 1;
    top: 0;
    right: 0;
    left: 0;
    height: 62px;
    border-top: 3px solid #6f421f;
    border-bottom: 3px solid #d2a24f;
    background:
        linear-gradient(90deg, rgba(31, 20, 12, .68), transparent 12%, transparent 88%, rgba(31, 20, 12, .68)),
        linear-gradient(180deg, #6f421f 0 9px, #173f46 9px 49px, #6f421f 49px 59px, #2d1b12 59px);
    box-shadow:
        inset 0 2px 0 rgba(255, 221, 142, .32),
        inset 0 -2px 0 rgba(31, 20, 12, .7),
        0 5px 9px rgba(31, 20, 12, .38);
    pointer-events: none;
}

body.mv-impeccable .mv-more-panel[data-more-panel="travel"] .mv-map > summary.mv-cozy-button {
    top: 1.1%;
    left: 18%;
    right: 18%;
    border: 1px solid #d2a24f;
    border-radius: 4px;
    background: linear-gradient(180deg, rgba(36, 86, 85, .98), rgba(18, 57, 60, .98));
    box-shadow: inset 0 0 0 1px rgba(255, 240, 179, .16), 0 2px 0 rgba(31, 20, 12, .52);
}

body.mv-impeccable .mv-more-panel[data-more-panel="travel"] .mv-map-list {
    top: 10.8%;
    right: 9.5%;
    bottom: 11.3%;
    left: 9.5%;
}

body.mv-impeccable .mv-more-panel[data-more-panel="travel"] .mv-map-hint.mv-cozy-panel {
    right: 0;
    bottom: 0;
    left: 0;
    min-height: 36px;
    padding-inline: 38px;
    border-top: 2px solid #d2a24f;
    background:
        linear-gradient(90deg, #3f2618 0 7%, #173f46 12% 88%, #3f2618 93% 100%);
    box-shadow: inset 0 2px 0 rgba(255, 240, 179, .14), 0 -4px 9px rgba(31, 20, 12, .34);
}

body.mv-impeccable .mv-more-panel[data-more-panel="travel"] .mv-map > .mv-scroll-hint[data-axis="y"] {
    bottom: .15%;
}

body.mv-impeccable .mv-more-panel[data-more-panel="saves"] .mv-save-archive-title {
    top: 15.5%;
}

body.mv-impeccable .mv-more-panel[data-more-panel="saves"] .mv-save-archive::after {
    content: "";
    position: absolute;
    z-index: 1;
    top: 21.7%;
    right: 8.15%;
    bottom: 14.7%;
    width: 9px;
    border: 1px solid #87602f;
    border-radius: 5px;
    background: linear-gradient(90deg, #102f34, #23555a 48%, #102f34);
    box-shadow:
        inset 0 0 0 1px rgba(244, 232, 200, .12),
        0 -3px 0 #d6aa58,
        0 3px 0 #d6aa58;
    pointer-events: none;
}

body.mv-impeccable .mv-more-panel[data-more-panel="saves"] .mv-save-archive-scroll,
body.mv-impeccable .mv-more-panel[data-more-panel="saves"] .mv-save-archive:where(:has([data-more-group="cloud"] > div:not([class]) > .mvcs-btn:nth-child(3))) .mv-save-archive-scroll {
    top: 21.7%;
    right: 8.2%;
    bottom: 14.7%;
    left: 11.5%;
    padding: 4px 7.4% 16px 5px;
    scrollbar-color: #d6aa58 #153f43;
    scrollbar-width: auto;
}

body.mv-impeccable .mv-more-panel[data-more-panel="saves"] .mv-save-archive-scroll::-webkit-scrollbar {
    width: 9px;
}

body.mv-impeccable .mv-more-panel[data-more-panel="saves"] .mv-save-archive-scroll::-webkit-scrollbar-track {
    border: 1px solid #87602f;
    border-radius: 5px;
    background: linear-gradient(90deg, #102f34, #23555a 48%, #102f34);
    box-shadow: inset 0 0 0 1px rgba(244, 232, 200, .12);
}

body.mv-impeccable .mv-more-panel[data-more-panel="saves"] .mv-save-archive-scroll::-webkit-scrollbar-thumb {
    min-height: 38px;
    border: 1px solid #725027;
    border-radius: 5px;
    background: linear-gradient(90deg, #8d622b, #e0b45f 48%, #9b6b30);
    box-shadow: inset 0 0 0 1px rgba(255, 240, 179, .48), 0 1px 2px rgba(31, 20, 12, .44);
}

body.mv-impeccable .mv-more-panel[data-more-panel="saves"] .mv-save-archive > .mv-scroll-hint[data-axis="y"] {
    bottom: 4.5%;
}

@media (max-width: 370px), (max-height: 740px) {
    body.mv-impeccable .mv-more-panel[data-more-panel="travel"] .mv-map > summary.mv-cozy-button {
        top: 1%;
    }

    body.mv-impeccable .mv-more-panel[data-more-panel="travel"] .mv-map-list {
        top: 10.6%;
        bottom: 11.3%;
    }

    body.mv-impeccable .mv-more-panel[data-more-panel="saves"] .mv-save-archive-title {
        top: 15.3%;
    }

    body.mv-impeccable .mv-more-panel[data-more-panel="saves"] .mv-save-archive-scroll,
    body.mv-impeccable .mv-more-panel[data-more-panel="saves"] .mv-save-archive:where(:has([data-more-group="cloud"] > div:not([class]) > .mvcs-btn:nth-child(3))) .mv-save-archive-scroll {
        top: 21.5%;
        bottom: calc(15% + min(var(--mv-safe-bottom), 12px));
        padding-right: 7.4%;
    }
}

@media (max-width: 370px) {
    body.mv-impeccable .mv-more-panel[data-more-panel="travel"] .mv-map-list {
        bottom: 14%;
    }
}

/* ═══════════════════════════════════════════════════════════════════
   Wave70: phone accessibility correction
   Fill the Backpack stage by width while preserving the approved 2:3
   raster geometry. Short phones may crop only the decorative lower edge.
   Offline summaries use luminance-first hierarchy on the deep teal panel.
   ═══════════════════════════════════════════════════════════════════ */

.mv-impeccable .mv-bag-canvas {
    --mv-bag-scene-offset-y: clamp(70px, 10.5dvh, 88px);
    top: var(--mv-bag-scene-offset-y);
    width: auto;
    min-width: 0;
    height: max(100%, 150cqw);
    transform: translateX(-50%);
}

.mv-impeccable .mv-bag-stage {
    container-type: size;
}

.mv-impeccable .mv-bag .mv-item-cell,
.mv-impeccable .mv-bag .mv-item-cell.mv-selected {
    padding: 2%;
}

.mv-impeccable .mv-bag .mv-item-icon .mv-icon,
.mv-impeccable .mv-bag .mv-item-icon > img {
    width: 88% !important;
    height: 88% !important;
    max-width: 50px;
    max-height: 50px;
}

body.mv-impeccable > .mv-offline-overlay:not(.mv-defeat-overlay) .mv-offline-card.mv-cozy-panel {
    border: 1px solid #668b82;
    border-top: 3px solid #e8795c;
    border-image: none;
    background: #164e50 !important;
    color: #fff4d2;
    box-shadow: 0 12px 30px rgba(3, 20, 22, .5);
    filter: none;
}

body.mv-impeccable > .mv-offline-overlay:not(.mv-defeat-overlay) .mv-offline-group.mv-cozy-slot {
    border: 0;
    border-image: none;
    background: transparent;
}

body.mv-impeccable > .mv-offline-overlay:not(.mv-defeat-overlay) .mv-offline-card h3 {
    color: #fff0bd;
    text-shadow: 0 1px 1px rgba(3, 20, 22, .8);
}

body.mv-impeccable > .mv-offline-overlay:not(.mv-defeat-overlay) .mv-offline-away,
body.mv-impeccable > .mv-offline-overlay:not(.mv-defeat-overlay) .mv-offline-quiet,
body.mv-impeccable > .mv-offline-overlay:not(.mv-defeat-overlay) .mv-offline-cap {
    color: #d8eee5;
}

body.mv-impeccable > .mv-offline-overlay:not(.mv-defeat-overlay) .mv-offline-group-head {
    border-bottom-color: rgba(255, 231, 166, .34);
    color: #ffd77a;
    text-shadow: 0 1px 1px rgba(3, 20, 22, .72);
}

body.mv-impeccable > .mv-offline-overlay:not(.mv-defeat-overlay) .mv-offline-stat,
body.mv-impeccable > .mv-offline-overlay:not(.mv-defeat-overlay) .mv-offline-stat-name {
    color: #fff4d2;
}

body.mv-impeccable > .mv-offline-overlay:not(.mv-defeat-overlay) .mv-offline-stat-delta {
    color: #bfe9dc;
}

body.mv-impeccable > .mv-offline-overlay:not(.mv-defeat-overlay) .mv-offline-stat:nth-child(even) {
    border-left-color: rgba(255, 231, 166, .28);
}

body.mv-impeccable > .mv-offline-overlay:not(.mv-defeat-overlay) .mv-offline-stat:nth-child(n + 3) {
    border-top-color: rgba(255, 231, 166, .24);
}

body.mv-impeccable > .mv-offline-overlay:not(.mv-defeat-overlay) .mv-offline-close.mv-cozy-button {
    border: 1px solid #ffd0ad;
    border-image: none;
    background: #f3a57d !important;
    clip-path: polygon(2% 0, 98% 0, 100% 18%, 100% 100%, 0 100%, 0 18%);
    color: #2d211d;
    font-weight: 850;
    text-shadow: 0 1px rgba(255, 246, 221, .5);
    box-shadow: 0 3px 0 #9d513d;
}

/* ═══════════════════════════════════════════════════════════════════
   Wave71: named NPC portrait safe crop
   Keep the approved square cast atlas intact, but give every compact
   dialogue portrait enough inner headroom that hair never meets the frame.
   ═══════════════════════════════════════════════════════════════════ */

.mv-impeccable .mv-scene[data-mode="dialogue"]:is(
    [data-dialogue-key="village elder"],
    [data-dialogue-key="old craftsman"],
    [data-dialogue-key="village guard"],
    [data-dialogue-key="village millers"]
) .mv-dlg-avatar-art[data-portrait] {
    border-radius: inherit;
    transform: translateY(4%) scale(.84);
    transform-origin: center center;
}

/* Wave81 phone correction: the previous 8% inset still left the clean-cel
   subject's hair touching the compact 86px aperture. The shared cast crop now
   owns an unmistakable inner sky margin for all four atlas cells. */
.mv-impeccable .mv-scene[data-mode="dialogue"]:is(
    [data-dialogue-key="village elder"],
    [data-dialogue-key="old craftsman"],
    [data-dialogue-key="village guard"],
    [data-dialogue-key="village millers"]
) > .mv-dialogue.mv-cozy-panel {
    padding-top: 14px;
}

.mv-impeccable .mv-scene[data-mode="dialogue"]:is(
    [data-dialogue-key="village elder"],
    [data-dialogue-key="old craftsman"],
    [data-dialogue-key="village guard"],
    [data-dialogue-key="village millers"]
) .mv-dlg-option.mv-cozy-button {
    transition:
        transform 90ms ease-out,
        filter 90ms ease-out,
        background-color 120ms ease-out,
        border-color 120ms ease-out,
        box-shadow 120ms ease-out;
}

@media (hover: hover) and (pointer: fine) {
    .mv-impeccable .mv-scene[data-mode="dialogue"]:is(
        [data-dialogue-key="village elder"],
        [data-dialogue-key="old craftsman"],
        [data-dialogue-key="village guard"],
        [data-dialogue-key="village millers"]
    ) .mv-dlg-option.mv-cozy-button:not(:disabled):hover {
        border-color: #d99342;
        background: rgba(236, 247, 218, .99);
        filter: brightness(1.035) saturate(1.06);
        box-shadow:
            0 7px 16px rgba(13, 35, 34, .24),
            inset 0 0 0 2px rgba(255, 241, 168, .72);
    }
}

.mv-impeccable .mv-scene[data-mode="dialogue"]:is(
    [data-dialogue-key="village elder"],
    [data-dialogue-key="old craftsman"],
    [data-dialogue-key="village guard"],
    [data-dialogue-key="village millers"]
) .mv-dlg-option.mv-cozy-button:not(:disabled):active {
    transform: translateY(1px) scale(.985);
    filter: brightness(.9) saturate(.95);
    box-shadow:
        0 2px 6px rgba(13, 35, 34, .22),
        inset 0 2px 5px rgba(31, 65, 59, .2);
}

@media (hover: hover) and (pointer: fine) {
    [data-theme="night"] .mv-impeccable .mv-scene[data-mode="dialogue"]:is(
        [data-dialogue-key="village elder"],
        [data-dialogue-key="old craftsman"],
        [data-dialogue-key="village guard"],
        [data-dialogue-key="village millers"]
    ) .mv-dlg-option.mv-cozy-button:not(:disabled):hover {
        border-color: #f0c266;
        background: rgba(53, 91, 73, .98);
        filter: brightness(1.09) saturate(1.06);
    }
}

@media (prefers-reduced-motion: reduce) {
    .mv-impeccable .mv-scene[data-mode="dialogue"]:is(
        [data-dialogue-key="village elder"],
        [data-dialogue-key="old craftsman"],
        [data-dialogue-key="village guard"],
        [data-dialogue-key="village millers"]
    ) .mv-dlg-option.mv-cozy-button {
        transition: none;
    }
}

/* ═══════════════════════════════════════════════════════════════════
   Wave72: K4 Village action tray
   The village remains the primary visual owner. Multi-action landmarks
   open a compact map-attached command tray instead of an opaque paper
   page that erases the lower half of the world.
   ═══════════════════════════════════════════════════════════════════ */

body.mv-impeccable > .mv-node-sheet[data-art-family="k4"] {
    align-items: flex-end;
    padding: 0 7px;
    background: rgba(7, 26, 29, .34);
}

body.mv-impeccable > .mv-node-sheet[data-art-family="k4"] > .mv-sheet.mv-cozy-panel {
    --mv-tf-panel-wide: linear-gradient(#173f43, #173f43);
    position: relative;
    width: min(100%, 430px);
    max-height: min(44dvh, 344px);
    margin: 0 auto;
    padding: 8px 9px calc(10px + var(--mv-safe-bottom));
    overflow-y: auto;
    border: 1px solid #d7a950;
    border-top-width: 3px;
    border-radius: 16px 16px 0 0;
    background:
        linear-gradient(180deg, rgba(31, 83, 82, .98), rgba(14, 55, 58, .99)),
        #173f43;
    color: #fff1ca;
    box-shadow: 0 -8px 24px rgba(4, 21, 23, .48), inset 0 1px rgba(255, 240, 190, .24);
}

body.mv-impeccable > .mv-node-sheet[data-art-family="k4"] > .mv-sheet::before {
    content: "";
    position: absolute;
    inset: 5px 6px auto;
    height: 1px;
    background: linear-gradient(90deg, transparent, rgba(255, 224, 147, .62), transparent);
    pointer-events: none;
}

body.mv-impeccable > .mv-node-sheet[data-art-family="k4"] .mv-sheet-grip {
    width: 52px;
    height: 5px;
    margin: 1px auto 5px;
    background: #d9ad59;
    box-shadow: 0 1px 0 rgba(255, 240, 188, .48), 0 0 0 1px rgba(62, 35, 20, .42);
}

body.mv-impeccable > .mv-node-sheet[data-art-family="k4"] .mv-sheet-heading {
    min-height: 46px;
    margin: 0 2px 6px;
    padding-bottom: 5px;
    border-bottom: 1px solid rgba(239, 205, 126, .34);
}

body.mv-impeccable > .mv-node-sheet[data-art-family="k4"] .mv-sheet-title-copy h3 {
    display: flex;
    align-items: center;
    gap: 7px;
    margin: 0;
    color: #fff2c9;
    font-size: 17px;
    line-height: 1.1;
    text-shadow: 0 1px 1px rgba(3, 21, 23, .85);
}

body.mv-impeccable > .mv-node-sheet[data-art-family="k4"] .mv-sheet-title-copy .mv-icon {
    width: 31px !important;
    height: 31px !important;
}

body.mv-impeccable > .mv-node-sheet[data-art-family="k4"] .mv-sheet-visible-close.mv-cozy-button {
    --mv-tf-button-secondary: linear-gradient(#245f5d, #245f5d);
    width: 68px;
    min-width: 68px;
    min-height: 44px;
    padding: 0 8px;
    border: 1px solid #e3ba6a;
    border-radius: 8px;
    background: #245f5d;
    color: #fff1ca;
    font-size: 13px;
    box-shadow: 0 2px 0 rgba(6, 28, 30, .55);
}

body.mv-impeccable > .mv-node-sheet[data-art-family="k4"] .mv-node-sheet-list {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 7px;
}

body.mv-impeccable > .mv-node-sheet[data-art-family="k4"] .mv-node-act.mv-cozy-button {
    --mv-tf-button-default: linear-gradient(rgba(18, 63, 65, .98), rgba(18, 63, 65, .98));
    min-width: 0;
    min-height: 58px;
    padding: 5px 8px;
    gap: 7px;
    border: 1px solid rgba(232, 191, 104, .82);
    border-radius: 9px;
    background: rgba(18, 63, 65, .9);
    color: #fff1ca;
    box-shadow: 0 2px 0 rgba(5, 27, 29, .52), inset 0 1px rgba(255, 242, 199, .12);
}

body.mv-impeccable > .mv-node-sheet[data-art-family="k4"] .mv-node-act:last-child:nth-child(odd) {
    grid-column: 1 / -1;
}

body.mv-impeccable > .mv-node-sheet[data-art-family="k4"] .mv-node-act .mv-action-icon {
    width: 32px;
    height: 32px;
}

body.mv-impeccable > .mv-node-sheet[data-art-family="k4"] .mv-node-act .mv-action-icon .mv-icon {
    width: 31px;
    height: 31px;
}

body.mv-impeccable > .mv-node-sheet[data-art-family="k4"] .mv-node-act .mv-action-label {
    color: #fff1ca;
    font-size: 13px;
    line-height: 1.2;
}

body.mv-impeccable > .mv-node-sheet[data-art-family="k4"] .mv-node-act .mv-action-sub {
    margin-top: 2px;
    color: #cfe8dc;
    font-size: 10.5px;
    line-height: 1.25;
}

body.mv-impeccable > .mv-node-sheet[data-art-family="k4"] .mv-node-act[aria-disabled="true"] {
    border-color: rgba(192, 184, 145, .5);
    background: rgba(23, 53, 55, .88);
    color: #d4d2bb;
    opacity: .82;
}

body.mv-impeccable > .mv-node-sheet[data-art-family="k4"] .mv-node-act.mv-action-route {
    border-color: #f0c76f;
    background: #2d7168;
}

body.mv-impeccable > .mv-node-sheet[data-art-family="k4"] .mv-node-act:focus-visible {
    outline: 3px solid #ffe4a0;
    outline-offset: 1px;
}

@media (max-width: 370px), (max-height: 740px) {
    body.mv-impeccable > .mv-node-sheet[data-art-family="k4"] > .mv-sheet.mv-cozy-panel {
        max-height: min(44dvh, 300px);
        padding-inline: 7px;
    }

    body.mv-impeccable > .mv-node-sheet[data-art-family="k4"] .mv-node-sheet-list {
        gap: 6px;
    }

    body.mv-impeccable > .mv-node-sheet[data-art-family="k4"] .mv-node-act.mv-cozy-button {
        min-height: 58px;
        padding-inline: 6px;
    }
}

/* ═══════════════════════════════════════════════════════════════════
   Wave82: truthful Character tool ownership and phone reachability.
   The approved close cabinet remains the first scene; the approved
   Equipment cabinet's lower rack owns the five runtime tool buttons.
   A dedicated scene rail keeps direction-correct arrows off all owners.
   ═══════════════════════════════════════════════════════════════════ */
.mv-impeccable .mv-more-v2[data-more-panel="character"] .mv-char-paperdoll {
    position: relative;
    background: #153d3c;
}

.mv-impeccable .mv-more-v2[data-more-panel="character"] .mv-pd-character-scroll {
    width: 100%;
    height: calc(100% - 38px);
    min-height: 0;
    overflow-x: hidden;
    overflow-y: auto;
    overscroll-behavior-y: contain;
    scrollbar-width: none;
    touch-action: pan-y;
}

.mv-impeccable .mv-more-v2[data-more-panel="character"] .mv-pd-character-scroll::-webkit-scrollbar {
    display: none;
}

.mv-impeccable .mv-more-v2[data-more-panel="character"] .mv-pd-character-scroll-inner {
    display: flex;
    width: 100%;
    min-height: 100%;
    flex-direction: column;
    align-items: center;
    background: linear-gradient(180deg, #153d3c 0%, #102e31 100%);
}

.mv-impeccable .mv-more-v2[data-more-panel="character"] .mv-pd-character-scroll .mv-pd-loadout-stage {
    width: min(100%, 348px);
    height: auto;
    max-height: none;
    aspect-ratio: 2 / 3;
}

.mv-impeccable .mv-more-v2[data-more-panel="character"] .mv-pd-tool-rack {
    position: relative;
    isolation: isolate;
    width: min(100%, 348px);
    flex: none;
    aspect-ratio: 100 / 42;
    overflow: hidden;
    background: url("/resources/img/backgrounds/bg-equipment-loadout-clean-cel-v1.webp") center bottom / 100% auto no-repeat;
}

[data-theme="night"] .mv-impeccable .mv-more-v2[data-more-panel="character"] .mv-pd-tool-rack {
    background-image: linear-gradient(rgba(10, 34, 43, .14), rgba(10, 34, 43, .14)), url("/resources/img/backgrounds/bg-equipment-loadout-clean-cel-v1.webp");
}

.mv-impeccable .mv-more-v2[data-more-panel="character"] .mv-pd-tool-slots {
    position: absolute;
    inset: 0;
}

.mv-impeccable .mv-more-v2[data-more-panel="character"] .mv-pd-tool-rack .mv-pd-slot.mv-cozy-slot {
    position: absolute;
    top: 81.8%;
    width: 52px;
    min-width: 52px;
    height: 52px;
    min-height: 52px;
    padding: 2px;
    overflow: visible;
    transform: translate(-50%, -50%);
}

.mv-impeccable .mv-more-v2[data-more-panel="character"] .mv-pd-tool-rack .mv-pd-slot[data-slot="pickaxe"] { left: 23.7%; }
.mv-impeccable .mv-more-v2[data-more-panel="character"] .mv-pd-tool-rack .mv-pd-slot[data-slot="axe"] { left: 36.8%; }
.mv-impeccable .mv-more-v2[data-more-panel="character"] .mv-pd-tool-rack .mv-pd-slot[data-slot="sickle"] { left: 50%; }
.mv-impeccable .mv-more-v2[data-more-panel="character"] .mv-pd-tool-rack .mv-pd-slot[data-slot="shovel"] { left: 63.2%; }
.mv-impeccable .mv-more-v2[data-more-panel="character"] .mv-pd-tool-rack .mv-pd-slot[data-slot="fishing_pole"] { left: 76.3%; }

.mv-impeccable .mv-more-v2[data-more-panel="character"] .mv-pd-tool-rack .mv-pd-slot .mv-icon {
    width: 46px !important;
    height: 46px !important;
    filter: none;
}

.mv-impeccable .mv-more-v2[data-more-panel="character"] .mv-pd-tool-rack .mv-pd-slot:disabled .mv-icon {
    opacity: .32;
    filter: grayscale(1) saturate(0) brightness(.78) contrast(.82);
}

.mv-impeccable .mv-more-v2[data-more-panel="character"] .mv-char-paperdoll > .mv-scroll-hint[data-bidirectional="true"] {
    position: absolute;
    right: auto;
    bottom: 0;
    left: 50%;
    display: block;
    width: 76px;
    height: 38px;
    transform: translateX(-50%);
}

.mv-impeccable .mv-more-v2[data-more-panel="character"] .mv-char-paperdoll > .mv-scroll-hint[data-bidirectional="true"][hidden] {
    display: none;
}

.mv-impeccable .mv-more-v2[data-more-panel="character"] .mv-char-paperdoll > .mv-scroll-hint[data-bidirectional="true"] > .mv-scroll-hint-dot {
    top: 3px;
    bottom: auto;
    width: 32px;
    height: 32px;
    border: 2px solid #f3d37d;
    background: #a9513d;
    color: #fff8e8;
    box-shadow: 0 3px 7px rgba(8, 29, 32, .44);
    animation: none;
}

.mv-impeccable .mv-more-v2[data-more-panel="character"] .mv-char-paperdoll > .mv-scroll-hint[data-state="both"] > .mv-scroll-hint-back { left: 4px; }
.mv-impeccable .mv-more-v2[data-more-panel="character"] .mv-char-paperdoll > .mv-scroll-hint[data-state="both"] > .mv-scroll-hint-forward { left: 40px; }
.mv-impeccable .mv-more-v2[data-more-panel="character"] .mv-char-paperdoll > .mv-scroll-hint[data-state="back"] > .mv-scroll-hint-back,
.mv-impeccable .mv-more-v2[data-more-panel="character"] .mv-char-paperdoll > .mv-scroll-hint[data-state="forward"] > .mv-scroll-hint-forward { left: 22px; }

@media (hover: hover) and (pointer: fine) {
    .mv-impeccable .mv-more-v2[data-more-panel="character"] .mv-pd-tool-rack .mv-pd-slot:not(:disabled):hover {
        filter: brightness(1.14);
        box-shadow: 0 4px 9px rgba(245, 207, 113, .32);
        transform: translate(-50%, -50%) translateY(-1px);
    }
}

.mv-impeccable .mv-more-v2[data-more-panel="character"] .mv-pd-tool-rack .mv-pd-slot:focus-visible {
    outline: 3px solid #fff0b3;
    outline-offset: 2px;
}

.mv-impeccable .mv-more-v2[data-more-panel="character"] .mv-pd-tool-rack .mv-pd-slot:not(:disabled):active {
    filter: brightness(.9);
    transform: translate(-50%, -50%) scale(.94);
}

@media (max-width: 370px), (max-height: 740px) {
    .mv-impeccable .mv-more-v2[data-more-panel="character"] .mv-pd-tool-rack .mv-pd-slot.mv-cozy-slot {
        width: 44px;
        min-width: 44px;
        height: 44px;
        min-height: 44px;
        padding: 1px;
    }

    .mv-impeccable .mv-more-v2[data-more-panel="character"] .mv-pd-tool-rack .mv-pd-slot .mv-icon {
        width: 42px !important;
        height: 42px !important;
    }
}

@media (prefers-reduced-motion: reduce) {
    .mv-impeccable .mv-more-v2[data-more-panel="character"] .mv-pd-tool-rack .mv-pd-slot {
        transition: none;
    }
}

/* ═══════════════════════════════════════════════════════════════════
   Wave83: travelling shop as one authored market pavilion.
   Candidate art owns the full frame; live merchandise, truthful
   direction cues, and the transaction controls inhabit its fixtures.
   ═══════════════════════════════════════════════════════════════════ */
body.mv-impeccable > .mv-trade-marketplace-overlay {
    align-items: flex-end;
    padding: max(8px, var(--mv-safe-top)) 0 0;
    background: rgba(6, 24, 31, .67);
}

body.mv-impeccable > .mv-trade-marketplace-overlay[hidden] {
    display: none;
}

body.mv-impeccable > .mv-trade-marketplace-overlay > .mv-trade-marketplace.mv-cozy-panel {
    position: relative;
    isolation: isolate;
    width: min(100vw, 430px);
    height: auto;
    max-height: calc(100dvh - max(8px, var(--mv-safe-top)));
    aspect-ratio: 2 / 3;
    margin: 0 auto;
    padding: 0;
    overflow: hidden;
    flex: none;
    border: 1px solid #a87a3a;
    border-bottom: 0;
    border-radius: 18px 18px 0 0;
    background-color: #123f43;
    background-image:
        linear-gradient(180deg, rgba(7, 40, 45, .02), rgba(7, 31, 35, .08)),
        url("/output/art-direction/wave83-travelling-shop/market-pavilion-candidate-v1.png");
    background-position: center top;
    background-repeat: no-repeat;
    background-size: 100% auto;
    color: #fff4d4;
    box-shadow: 0 -8px 26px rgba(4, 19, 25, .42);
}

[data-theme="night"] body.mv-impeccable > .mv-trade-marketplace-overlay > .mv-trade-marketplace.mv-cozy-panel,
body.mv-impeccable[data-theme="night"] > .mv-trade-marketplace-overlay > .mv-trade-marketplace.mv-cozy-panel {
    background-image:
        linear-gradient(180deg, rgba(5, 25, 40, .12), rgba(4, 22, 31, .22)),
        url("/output/art-direction/wave83-travelling-shop/market-pavilion-candidate-v1.png");
}

body.mv-impeccable > .mv-trade-marketplace-overlay .mv-sheet-banner,
body.mv-impeccable > .mv-trade-marketplace-overlay .mv-sheet-grip,
body.mv-impeccable > .mv-trade-marketplace-overlay .mv-sheet-lead,
body.mv-impeccable > .mv-trade-marketplace-overlay .mv-sheet-title-art {
    display: none;
}

body.mv-impeccable > .mv-trade-marketplace-overlay .mv-sheet-heading {
    position: absolute;
    z-index: 5;
    top: 7.4%;
    right: 8.4%;
    left: 8.4%;
    display: flex;
    min-height: 58px;
    margin: 0;
    padding: 6px 7px 6px 12px;
    align-items: center;
    border: 1px solid rgba(242, 204, 111, .78);
    border-radius: 11px;
    background: rgba(10, 62, 65, .88);
    box-shadow: 0 3px 0 rgba(32, 20, 14, .52), inset 0 1px rgba(255, 241, 195, .18);
}

body.mv-impeccable > .mv-trade-marketplace-overlay .mv-sheet-title-block {
    min-width: 0;
    flex: 1;
}

body.mv-impeccable > .mv-trade-marketplace-overlay .mv-sheet-title-copy h3 {
    color: #fff2c8;
    font-size: 18px;
    line-height: 1.05;
    text-shadow: 0 1px 2px rgba(3, 22, 24, .9);
}

body.mv-impeccable > .mv-trade-marketplace-overlay .mv-sheet-title-copy small {
    max-width: none;
    margin-top: 3px;
    overflow: hidden;
    color: #cde8db;
    font-size: 10.5px;
    line-height: 1.2;
    text-overflow: ellipsis;
    white-space: nowrap;
}

body.mv-impeccable > .mv-trade-marketplace-overlay .mv-sheet-visible-close.mv-cozy-button {
    width: 58px;
    min-width: 58px;
    min-height: 44px;
    padding: 0 8px;
    border: 1px solid #e6bc66;
    border-radius: 8px;
    background: #245f5d;
    color: #fff3ce;
    box-shadow: 0 2px 0 rgba(5, 27, 29, .68);
}

body.mv-impeccable > .mv-trade-marketplace-overlay .mv-sheet-mode-tabs {
    position: absolute;
    z-index: 5;
    top: 20.8%;
    right: 14.5%;
    left: 9.2%;
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 7px;
    min-height: 44px;
    padding: 0;
    overflow: visible;
}

body.mv-impeccable > .mv-trade-marketplace-overlay .mv-sheet-mode-tabs .mv-catchip.mv-cozy-button {
    min-width: 0;
    min-height: 44px;
    padding: 4px 6px;
    gap: 5px;
    border: 1px solid #d5a84e;
    border-radius: 9px;
    background: rgba(13, 60, 62, .94);
    color: #dbefe3;
    box-shadow: 0 2px 0 rgba(5, 25, 27, .68);
}

body.mv-impeccable > .mv-trade-marketplace-overlay .mv-sheet-mode-tabs .mv-catchip.mv-cozy-button.mv-active,
body.mv-impeccable > .mv-trade-marketplace-overlay .mv-sheet-mode-tabs .mv-catchip.mv-cozy-button[aria-pressed="true"] {
    border-color: #ffe08e;
    background: #a9523b;
    color: #fff8dd;
    box-shadow: 0 2px 0 #5d2d24, inset 0 0 0 1px rgba(255, 238, 173, .22);
}

body.mv-impeccable > .mv-trade-marketplace-overlay .mv-sheet-scroll {
    position: absolute;
    z-index: 3;
    top: 29.7%;
    right: 16.5%;
    bottom: 34.1%;
    left: 17.1%;
    min-height: 0;
    padding: 0;
    overflow-x: hidden;
    overflow-y: auto;
    container-type: size;
    overscroll-behavior-y: contain;
    scroll-behavior: smooth;
    scroll-snap-type: y mandatory;
    scrollbar-width: none;
    touch-action: pan-y;
}

body.mv-impeccable > .mv-trade-marketplace-overlay .mv-sheet-scroll::-webkit-scrollbar {
    display: none;
}

body.mv-impeccable > .mv-trade-marketplace-overlay .mv-trade-grid.mv-storage-grid {
    display: block;
    width: 100%;
    min-height: 100%;
    padding: 0;
    gap: 0;
}

body.mv-impeccable > .mv-trade-marketplace-overlay .mv-trade-page {
    display: grid;
    width: 100%;
    height: 100cqh;
    min-height: 100cqh;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    grid-template-rows: repeat(3, minmax(0, 1fr));
    gap: 3px 6px;
    padding: 3px 2px;
    align-items: stretch;
    scroll-snap-align: start;
    scroll-snap-stop: always;
}

body.mv-impeccable > .mv-trade-marketplace-overlay .mv-item-cell.mv-cozy-slot {
    position: relative;
    display: grid;
    min-width: 0;
    min-height: 44px;
    padding: 3px 4px;
    grid-template-columns: 38px minmax(0, 1fr);
    grid-template-rows: auto auto 1fr;
    gap: 0 4px;
    overflow: visible;
    border: 1px solid rgba(202, 154, 75, .5);
    border-radius: 7px;
    background: rgba(13, 45, 44, .75);
    color: #fff0c9;
    text-align: left;
    box-shadow: inset 0 1px rgba(255, 231, 165, .09);
}

body.mv-impeccable > .mv-trade-marketplace-overlay .mv-item-cell.mv-cozy-slot:has(.mv-trade-select:disabled) {
    cursor: default;
    filter: saturate(.72);
    opacity: .76;
}

body.mv-impeccable > .mv-trade-marketplace-overlay .mv-item-cell.mv-cozy-slot.mv-trade-selected {
    border-color: #ffe38c;
    background: rgba(34, 92, 76, .9);
    box-shadow: inset 0 0 0 1px rgba(255, 224, 136, .35), 0 0 0 1px rgba(84, 47, 24, .7);
}

body.mv-impeccable > .mv-trade-marketplace-overlay .mv-trade-select {
    position: absolute;
    inset: 0;
    z-index: 1;
    width: 100%;
    min-width: 44px;
    height: 100%;
    min-height: 44px;
    padding: 0;
    border: 0;
    border-radius: 7px;
    background: transparent;
    color: transparent;
    box-shadow: none;
    cursor: pointer;
}

body.mv-impeccable > .mv-trade-marketplace-overlay .mv-item-art,
body.mv-impeccable > .mv-trade-marketplace-overlay .mv-item-name,
body.mv-impeccable > .mv-trade-marketplace-overlay .mv-item-meta,
body.mv-impeccable > .mv-trade-marketplace-overlay .mv-item-count {
    position: relative;
    z-index: 0;
    pointer-events: none;
}

body.mv-impeccable > .mv-trade-marketplace-overlay .mv-item-art {
    display: grid;
    width: 38px;
    height: 38px;
    grid-row: 1 / 4;
    align-self: center;
    place-items: center;
}

body.mv-impeccable > .mv-trade-marketplace-overlay .mv-item-art .mv-icon,
body.mv-impeccable > .mv-trade-marketplace-overlay .mv-item-art img {
    width: 38px !important;
    height: 38px !important;
    object-fit: contain;
}

body.mv-impeccable > .mv-trade-marketplace-overlay .mv-item-name {
    min-width: 0;
    overflow: hidden;
    color: #fff3cf;
    font-size: 10.5px;
    font-weight: 800;
    line-height: 1.12;
    text-overflow: ellipsis;
    white-space: nowrap;
}

body.mv-impeccable > .mv-trade-marketplace-overlay .mv-item-meta,
body.mv-impeccable > .mv-trade-marketplace-overlay .mv-item-count {
    min-width: 0;
    overflow: hidden;
    color: #cce6d8;
    font-size: 8.5px;
    line-height: 1.15;
    text-overflow: ellipsis;
    white-space: nowrap;
}

body.mv-impeccable > .mv-trade-marketplace-overlay .mv-trade-badges {
    position: absolute;
    right: 2px;
    bottom: 2px;
    display: flex;
    gap: 2px;
    z-index: 2;
}

body.mv-impeccable > .mv-trade-marketplace-overlay .mv-storage-all.mv-cozy-button {
    position: static;
    width: 44px;
    min-width: 44px;
    height: 44px;
    min-height: 44px;
    padding: 0;
    border: 1px solid #e4b65b;
    border-radius: 8px;
    background: #a9533d;
    color: #fff8df;
    font-size: 13px;
    font-weight: 900;
    box-shadow: 0 2px 0 rgba(66, 31, 24, .75);
}

body.mv-impeccable > .mv-trade-marketplace-overlay .mv-storage-all.mv-cozy-button.mv-trade-minus {
    background: #235d5a;
}

body.mv-impeccable > .mv-trade-marketplace-overlay .mv-empty {
    position: absolute;
    inset: 14% 6% auto;
    min-height: 52px;
    padding: 12px;
    border: 1px solid #d4a85a;
    border-radius: 9px;
    background: rgba(10, 49, 50, .9);
    color: #fff1ca;
    text-align: center;
}

body.mv-impeccable > .mv-trade-marketplace-overlay .mv-trade-scroll-rail {
    position: absolute;
    z-index: 4;
    top: 29.7%;
    right: 2.1%;
    bottom: 34.1%;
    width: 48px;
    pointer-events: none;
}

body.mv-impeccable > .mv-trade-marketplace-overlay .mv-trade-scroll-rail::before,
body.mv-impeccable > .mv-trade-marketplace-overlay .mv-trade-scroll-rail::after {
    content: "";
    position: absolute;
    right: 2px;
    width: 44px;
    height: 44px;
    border: 2px solid #cfa351;
    border-radius: 50%;
    background: #174b4b;
    box-shadow: inset 0 0 0 2px rgba(56, 30, 19, .42), 0 2px 3px rgba(5, 24, 25, .52);
}

body.mv-impeccable > .mv-trade-marketplace-overlay .mv-trade-scroll-rail::before { top: 0; }
body.mv-impeccable > .mv-trade-marketplace-overlay .mv-trade-scroll-rail::after { bottom: 0; }

body.mv-impeccable > .mv-trade-marketplace-overlay .mv-trade-scroll-rail > .mv-scroll-hint[data-bidirectional="true"] {
    position: absolute;
    inset: 0;
    z-index: 2;
    display: block;
    width: 48px;
    height: 100%;
    pointer-events: none;
}

body.mv-impeccable > .mv-trade-marketplace-overlay .mv-trade-scroll-rail > .mv-scroll-hint[hidden] {
    display: none;
}

body.mv-impeccable > .mv-trade-marketplace-overlay .mv-trade-scroll-rail .mv-scroll-hint-dot {
    position: absolute;
    right: 2px;
    width: 44px;
    height: 44px;
    border: 2px solid #ffe08a;
    border-radius: 50%;
    background: #a94f39;
    color: #fff8de;
    box-shadow: 0 3px 5px rgba(5, 22, 23, .62), inset 0 1px rgba(255, 241, 191, .3);
    animation: none;
}

body.mv-impeccable > .mv-trade-marketplace-overlay .mv-trade-scroll-rail .mv-scroll-hint-back { top: 0; }
body.mv-impeccable > .mv-trade-marketplace-overlay .mv-trade-scroll-rail .mv-scroll-hint-forward { bottom: 0; }

body.mv-impeccable > .mv-trade-marketplace-overlay .mv-sheet-footer {
    position: absolute;
    z-index: 5;
    top: 70.1%;
    right: 8.7%;
    bottom: 5.2%;
    left: 8.7%;
    display: grid;
    min-height: 0;
    margin: 0;
    padding: 7px 8px 6px;
    grid-template-rows: minmax(42px, 1fr) 48px;
    gap: 6px;
    border: 1px solid rgba(231, 187, 94, .62);
    border-radius: 10px;
    background: rgba(12, 57, 56, .88);
    box-shadow: inset 0 1px rgba(255, 240, 190, .14), 0 3px 0 rgba(49, 29, 18, .44);
}

body.mv-impeccable > .mv-trade-marketplace-overlay .mv-trade-summary {
    display: grid;
    min-height: 42px;
    margin: 0;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    border: 1px solid rgba(218, 173, 83, .45);
    border-radius: 7px;
    background: rgba(5, 39, 41, .62);
}

body.mv-impeccable > .mv-trade-marketplace-overlay .mv-trade-summary > span {
    display: flex;
    min-width: 0;
    padding: 3px 4px;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    border: 0;
    border-right: 1px solid rgba(221, 178, 91, .42);
    border-radius: 0;
    background: transparent;
    color: #fff1c7;
}

body.mv-impeccable > .mv-trade-marketplace-overlay .mv-trade-summary > span:last-child {
    border-right: 0;
}

body.mv-impeccable > .mv-trade-marketplace-overlay .mv-trade-summary small {
    color: #c8e0d4;
    font-size: 9px;
}

body.mv-impeccable > .mv-trade-marketplace-overlay .mv-trade-summary b {
    max-width: 100%;
    overflow: hidden;
    color: #fff0b9;
    font-size: 12px;
    text-overflow: ellipsis;
    white-space: nowrap;
}

body.mv-impeccable > .mv-trade-marketplace-overlay .mv-trade-summary > .mv-trade-short {
    background: rgba(142, 54, 45, .42);
    color: #ffd2c0;
}

body.mv-impeccable > .mv-trade-marketplace-overlay .mv-item-actions {
    display: grid;
    grid-template-columns: 1.25fr 1fr 1fr;
    gap: 6px;
}

body.mv-impeccable > .mv-trade-marketplace-overlay .mv-item-action.mv-cozy-button {
    min-width: 0;
    min-height: 44px;
    padding: 0 7px;
    border: 1px solid #d9ab55;
    border-radius: 8px;
    background: #245f5b;
    color: #fff2cc;
    box-shadow: 0 2px 0 rgba(5, 25, 27, .72);
}

body.mv-impeccable > .mv-trade-marketplace-overlay .mv-item-action.mv-cozy-button-primary {
    border-color: #ffe18f;
    background: #a9523c;
    color: #fff8df;
}

body.mv-impeccable > .mv-trade-marketplace-overlay button:disabled,
body.mv-impeccable > .mv-trade-marketplace-overlay [role="button"][aria-disabled="true"] {
    cursor: default;
    filter: saturate(.35) brightness(.82);
    opacity: .62;
    box-shadow: none;
}

@media (hover: hover) and (pointer: fine) {
    body.mv-impeccable > .mv-trade-marketplace-overlay button:not(:disabled):hover,
    body.mv-impeccable > .mv-trade-marketplace-overlay [role="button"]:not([aria-disabled="true"]):hover {
        filter: brightness(1.12);
        transform: translateY(-1px);
    }

    body.mv-impeccable > .mv-trade-marketplace-overlay .mv-item-cell:has(.mv-trade-select:not(:disabled):hover) {
        filter: brightness(1.12);
        transform: translateY(-1px);
    }
}

body.mv-impeccable > .mv-trade-marketplace-overlay button:focus-visible,
body.mv-impeccable > .mv-trade-marketplace-overlay [role="button"]:focus-visible {
    outline: 3px solid #fff0a8;
    outline-offset: 1px;
}

body.mv-impeccable > .mv-trade-marketplace-overlay .mv-item-cell:has(.mv-trade-select:focus-visible) {
    outline: 3px solid #fff0a8;
    outline-offset: 1px;
}

body.mv-impeccable > .mv-trade-marketplace-overlay button:not(:disabled):active,
body.mv-impeccable > .mv-trade-marketplace-overlay [role="button"]:not([aria-disabled="true"]):active {
    filter: brightness(.88);
    transform: translateY(1px) scale(.98);
}

body.mv-impeccable > .mv-trade-marketplace-overlay .mv-item-cell:has(.mv-trade-select:not(:disabled):active) {
    filter: brightness(.88);
    transform: translateY(1px) scale(.98);
}

@media (max-width: 370px), (max-height: 740px) {
    body.mv-impeccable > .mv-trade-marketplace-overlay .mv-sheet-heading {
        min-height: 52px;
        padding-block: 4px;
    }

    body.mv-impeccable > .mv-trade-marketplace-overlay .mv-sheet-title-copy small {
        display: none;
    }

    body.mv-impeccable > .mv-trade-marketplace-overlay .mv-sheet-mode-tabs .mv-catchip.mv-cozy-button span {
        font-size: 11px;
    }

    body.mv-impeccable > .mv-trade-marketplace-overlay .mv-item-cell.mv-cozy-slot {
        grid-template-columns: 34px minmax(0, 1fr);
        padding-inline: 2px;
    }

    body.mv-impeccable > .mv-trade-marketplace-overlay .mv-item-art,
    body.mv-impeccable > .mv-trade-marketplace-overlay .mv-item-art .mv-icon,
    body.mv-impeccable > .mv-trade-marketplace-overlay .mv-item-art img {
        width: 34px !important;
        height: 34px !important;
    }

    body.mv-impeccable > .mv-trade-marketplace-overlay .mv-sheet-footer {
        padding-inline: 6px;
        gap: 4px;
    }

    body.mv-impeccable > .mv-trade-marketplace-overlay .mv-storage-all.mv-cozy-button {
        width: 44px;
        min-width: 44px;
        height: 44px;
        min-height: 44px;
    }
}

@media (prefers-reduced-motion: reduce) {
    body.mv-impeccable > .mv-trade-marketplace-overlay *,
    body.mv-impeccable > .mv-trade-marketplace-overlay *::before,
    body.mv-impeccable > .mv-trade-marketplace-overlay *::after {
        scroll-behavior: auto;
        transition: none;
        animation: none;
    }
}

/* ═══════════════════════════════════════════════════════════════════
   Wave84: travelling-shop copy contrast.
   Keep Wave83 geometry and commerce truth intact; give stable copy
   explicit market-surface roles instead of inherited atlas badges.
   ═══════════════════════════════════════════════════════════════════ */
body.mv-impeccable > .mv-trade-marketplace-overlay > .mv-trade-marketplace {
    --mv-market-copy-primary: #fff9dd;
    --mv-market-copy-secondary: #eef8e9;
    --mv-market-copy-disabled-primary: #e2ebdd;
    --mv-market-copy-disabled-secondary: #d3dfd5;
    --mv-market-copy-footer-label: #e8f3e7;
    --mv-market-copy-footer-value: #fff6c9;
}

body.mv-impeccable > .mv-trade-marketplace-overlay .mv-sheet-title-copy small {
    color: var(--mv-market-copy-secondary);
}

body.mv-impeccable > .mv-trade-marketplace-overlay .mv-item-name {
    color: var(--mv-market-copy-primary);
}

body.mv-impeccable > .mv-trade-marketplace-overlay .mv-item-meta,
body.mv-impeccable > .mv-trade-marketplace-overlay .mv-item-count {
    color: var(--mv-market-copy-secondary);
}

body.mv-impeccable > .mv-trade-marketplace-overlay .mv-item-count {
    background: transparent;
}

body.mv-impeccable > .mv-trade-marketplace-overlay .mv-item-cell.mv-cozy-slot:has(.mv-trade-select:disabled) {
    filter: none;
    opacity: 1;
}

body.mv-impeccable > .mv-trade-marketplace-overlay .mv-item-cell.mv-cozy-slot:has(.mv-trade-select:disabled) .mv-item-name {
    color: var(--mv-market-copy-disabled-primary);
}

body.mv-impeccable > .mv-trade-marketplace-overlay .mv-item-cell.mv-cozy-slot:has(.mv-trade-select:disabled) .mv-item-meta,
body.mv-impeccable > .mv-trade-marketplace-overlay .mv-item-cell.mv-cozy-slot:has(.mv-trade-select:disabled) .mv-item-count {
    color: var(--mv-market-copy-disabled-secondary);
}

body.mv-impeccable > .mv-trade-marketplace-overlay .mv-trade-summary small {
    color: var(--mv-market-copy-footer-label);
}

body.mv-impeccable > .mv-trade-marketplace-overlay .mv-trade-summary b {
    color: var(--mv-market-copy-footer-value);
}

body.mv-impeccable > .mv-trade-marketplace-overlay .mv-item-action.mv-cozy-button:disabled {
    border-color: #8e9b8e;
    background: #445c57;
    color: #f2eee0;
    filter: none;
    opacity: 1;
}

/* ═══════════════════════════════════════════════════════════════════
   Wave85: full-screen travelling shop readability pass.
   Keep the approved pavilion concept, but let it own the phone frame.
   Merchandise cards only select merchandise; quantity controls live in
   one dedicated tray and never cover the item art or copy.
   ═══════════════════════════════════════════════════════════════════ */
body.mv-impeccable > .mv-trade-marketplace-overlay {
    align-items: stretch;
    padding: 0;
    background: #0d3035;
}

body.mv-impeccable > .mv-trade-marketplace-overlay > .mv-trade-marketplace.mv-cozy-panel {
    width: min(100vw, 430px);
    height: 100dvh;
    min-height: 100svh;
    max-height: none;
    aspect-ratio: auto;
    border: 0;
    border-radius: 0;
    background-position: center top;
    background-size: 100% 100%;
    box-shadow: 0 0 30px rgba(4, 19, 25, .52);
}

body.mv-impeccable > .mv-trade-marketplace-overlay .mv-sheet-heading {
    top: max(8px, calc(var(--mv-safe-top) + 4px));
    right: 5.5%;
    left: 5.5%;
    min-height: 60px;
}

body.mv-impeccable > .mv-trade-marketplace-overlay .mv-sheet-mode-tabs {
    top: 13.2%;
    right: 8%;
    left: 8%;
}

body.mv-impeccable > .mv-trade-marketplace-overlay .mv-sheet-scroll {
    top: 21.2%;
    right: 14.5%;
    bottom: 37%;
    left: 8.5%;
}

body.mv-impeccable > .mv-trade-marketplace-overlay .mv-trade-page {
    gap: 7px 8px;
    padding: 5px 2px;
}

body.mv-impeccable > .mv-trade-marketplace-overlay .mv-item-cell.mv-cozy-slot {
    padding: 7px 6px;
    grid-template-columns: 50px minmax(0, 1fr);
    grid-template-rows: auto auto 1fr;
    gap: 2px 7px;
    overflow: hidden;
    border-color: rgba(215, 173, 92, .66);
    background: rgba(9, 45, 44, .84);
}

body.mv-impeccable > .mv-trade-marketplace-overlay .mv-item-cell.mv-cozy-slot.mv-trade-focused {
    border-color: #ffe497;
    background: rgba(32, 90, 76, .94);
    box-shadow: inset 0 0 0 2px rgba(255, 226, 139, .28), 0 2px 0 rgba(66, 36, 20, .72);
}

body.mv-impeccable > .mv-trade-marketplace-overlay .mv-item-cell.mv-cozy-slot.mv-trade-maxed {
    background: rgba(30, 77, 67, .9);
}

body.mv-impeccable > .mv-trade-marketplace-overlay .mv-item-art,
body.mv-impeccable > .mv-trade-marketplace-overlay .mv-item-art .mv-icon,
body.mv-impeccable > .mv-trade-marketplace-overlay .mv-item-art img {
    width: 50px !important;
    height: 50px !important;
}

body.mv-impeccable > .mv-trade-marketplace-overlay .mv-item-name {
    font-size: 12.5px;
    line-height: 1.2;
}

body.mv-impeccable > .mv-trade-marketplace-overlay .mv-item-meta,
body.mv-impeccable > .mv-trade-marketplace-overlay .mv-item-count {
    font-size: 10.5px;
    line-height: 1.25;
}

body.mv-impeccable > .mv-trade-marketplace-overlay .mv-item-count {
    align-self: end;
    color: #fff0b9;
    font-weight: 800;
}

body.mv-impeccable > .mv-trade-marketplace-overlay .mv-trade-scroll-rail {
    top: 21.2%;
    right: 2.3%;
    bottom: 37%;
    width: 44px;
    border: 1px solid rgba(211, 165, 78, .72);
    border-radius: 22px;
    background: rgba(12, 58, 58, .94);
    box-shadow: inset 0 0 0 2px rgba(47, 27, 18, .34);
}

body.mv-impeccable > .mv-trade-marketplace-overlay .mv-trade-scroll-rail::before,
body.mv-impeccable > .mv-trade-marketplace-overlay .mv-trade-scroll-rail::after {
    content: none;
}

body.mv-impeccable > .mv-trade-marketplace-overlay .mv-trade-scroll-rail > .mv-scroll-hint[data-bidirectional="true"] {
    width: 44px;
}

body.mv-impeccable > .mv-trade-marketplace-overlay .mv-trade-scroll-rail .mv-scroll-hint-dot {
    right: 1px;
    width: 40px;
    height: 40px;
}

body.mv-impeccable > .mv-trade-marketplace-overlay .mv-trade-picker {
    position: absolute;
    z-index: 5;
    top: 64%;
    right: 8%;
    bottom: 23.5%;
    left: 8%;
    display: grid;
    min-height: 0;
    padding: 5px 7px;
    grid-template-columns: 44px minmax(0, 1fr) auto;
    grid-template-rows: minmax(32px, 1fr) 44px;
    gap: 4px 7px;
    align-items: center;
    border: 1px solid rgba(232, 190, 102, .76);
    border-radius: 10px;
    background: rgba(8, 48, 49, .95);
    color: #fff6d4;
    box-shadow: 0 2px 0 rgba(50, 29, 17, .58), inset 0 1px rgba(255, 237, 179, .12);
}

body.mv-impeccable > .mv-trade-marketplace-overlay .mv-trade-picker[hidden] {
    display: none;
}

body.mv-impeccable > .mv-trade-marketplace-overlay .mv-trade-picker-art {
    display: grid;
    width: 44px;
    height: 44px;
    grid-row: 1;
    place-items: center;
}

body.mv-impeccable > .mv-trade-marketplace-overlay .mv-trade-picker-art .mv-icon,
body.mv-impeccable > .mv-trade-marketplace-overlay .mv-trade-picker-art img {
    width: 44px !important;
    height: 44px !important;
    object-fit: contain;
}

body.mv-impeccable > .mv-trade-marketplace-overlay .mv-trade-picker-copy {
    display: flex;
    min-width: 0;
    flex-direction: column;
}

body.mv-impeccable > .mv-trade-marketplace-overlay .mv-trade-picker-copy strong,
body.mv-impeccable > .mv-trade-marketplace-overlay .mv-trade-picker-copy small {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

body.mv-impeccable > .mv-trade-marketplace-overlay .mv-trade-picker-copy strong {
    font-size: 13px;
    line-height: 17px;
}

body.mv-impeccable > .mv-trade-marketplace-overlay .mv-trade-picker-copy small {
    color: var(--mv-market-copy-secondary);
    font-size: 10.5px;
    line-height: 14px;
}

body.mv-impeccable > .mv-trade-marketplace-overlay .mv-trade-picker-count {
    color: #fff0b9;
    font-size: 11px;
    font-weight: 900;
    white-space: nowrap;
}

body.mv-impeccable > .mv-trade-marketplace-overlay .mv-trade-picker-actions {
    display: grid;
    grid-column: 1 / -1;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 7px;
}

body.mv-impeccable > .mv-trade-marketplace-overlay .mv-trade-picker-actions .mv-cozy-button {
    min-width: 0;
    min-height: 44px;
    padding: 0 8px;
    border: 1px solid #e0b25a;
    border-radius: 8px;
    background: #a9533d;
    color: #fff8df;
    font-size: 13px;
    font-weight: 900;
    box-shadow: 0 2px 0 rgba(61, 31, 22, .72);
}

body.mv-impeccable > .mv-trade-marketplace-overlay .mv-trade-picker-actions .mv-trade-picker-minus {
    background: #245f5b;
}

body.mv-impeccable > .mv-trade-marketplace-overlay .mv-sheet-footer {
    top: 77.2%;
    right: 6.5%;
    bottom: max(8px, calc(var(--mv-safe-bottom) + 4px));
    left: 6.5%;
    padding: 7px;
    grid-template-rows: minmax(46px, 1fr) 48px;
    gap: 7px;
}

body.mv-impeccable > .mv-trade-marketplace-overlay .mv-trade-summary small {
    font-size: 10.5px;
}

body.mv-impeccable > .mv-trade-marketplace-overlay .mv-trade-summary b {
    font-size: 13px;
}

@media (max-height: 740px) {
    body.mv-impeccable > .mv-trade-marketplace-overlay .mv-sheet-heading {
        min-height: 54px;
    }

    body.mv-impeccable > .mv-trade-marketplace-overlay .mv-sheet-mode-tabs {
        top: 12.2%;
    }

    body.mv-impeccable > .mv-trade-marketplace-overlay .mv-sheet-scroll,
    body.mv-impeccable > .mv-trade-marketplace-overlay .mv-trade-scroll-rail {
        top: 20.2%;
    }

    body.mv-impeccable > .mv-trade-marketplace-overlay .mv-item-cell.mv-cozy-slot {
        padding: 5px 4px;
        grid-template-columns: 44px minmax(0, 1fr);
    }

    body.mv-impeccable > .mv-trade-marketplace-overlay .mv-item-art,
    body.mv-impeccable > .mv-trade-marketplace-overlay .mv-item-art .mv-icon,
    body.mv-impeccable > .mv-trade-marketplace-overlay .mv-item-art img {
        width: 44px !important;
        height: 44px !important;
    }

    body.mv-impeccable > .mv-trade-marketplace-overlay .mv-trade-picker {
        top: 63.4%;
        bottom: 23.8%;
    }

    body.mv-impeccable > .mv-trade-marketplace-overlay .mv-sheet-footer {
        top: 77%;
    }
}

/* Wave85.1: the bidirectional hint inhabits the pavilion's painted rail.
   Two opaque sockets hide the baked arrow glyphs; the shared helper then
   paints only the currently truthful direction above them. The gold stem
   between the sockets stays visible instead of being covered by a CSS pill. */
body.mv-impeccable > .mv-trade-marketplace-overlay .mv-sheet-scroll {
    right: 18%;
}

body.mv-impeccable > .mv-trade-marketplace-overlay .mv-trade-scroll-rail {
    top: 30.9%;
    right: 5.8%;
    bottom: 39.5%;
    width: 40px;
    border: 0;
    border-radius: 0;
    background: transparent;
    box-shadow: none;
}

body.mv-impeccable > .mv-trade-marketplace-overlay .mv-trade-scroll-rail::before,
body.mv-impeccable > .mv-trade-marketplace-overlay .mv-trade-scroll-rail::after {
    content: "";
    position: absolute;
    right: 0;
    width: 40px;
    height: 40px;
    border: 2px solid #cfa351;
    border-radius: 50%;
    background: #174b4b;
    box-shadow: inset 0 0 0 2px rgba(56, 30, 19, .42), 0 2px 3px rgba(5, 24, 25, .52);
}

body.mv-impeccable > .mv-trade-marketplace-overlay .mv-trade-scroll-rail::before {
    top: 0;
}

body.mv-impeccable > .mv-trade-marketplace-overlay .mv-trade-scroll-rail::after {
    bottom: 0;
}

body.mv-impeccable > .mv-trade-marketplace-overlay .mv-trade-scroll-rail > .mv-scroll-hint[data-bidirectional="true"] {
    width: 40px;
}

body.mv-impeccable > .mv-trade-marketplace-overlay .mv-trade-scroll-rail .mv-scroll-hint-dot {
    right: 0;
    left: auto;
    width: 40px;
    height: 40px;
}

body.mv-impeccable > .mv-trade-marketplace-overlay .mv-trade-scroll-rail .mv-scroll-hint-back {
    top: 0;
    bottom: auto;
}

body.mv-impeccable > .mv-trade-marketplace-overlay .mv-trade-scroll-rail .mv-scroll-hint-forward {
    top: auto;
    bottom: 0;
}

/* ═══════════════════════════════════════════════════════════════════
   Wave86: scene-owned scroll truth
   One continuous track and live thumb replace native chrome and the
   doubled arrow mechanism. The fixture belongs to its painted surface.
   ═══════════════════════════════════════════════════════════════════ */
.mv-art-scrollbar {
    position: absolute;
    display: block;
    pointer-events: none;
}

.mv-art-scrollbar[hidden] {
    display: none;
}

.mv-art-scrollbar-track,
.mv-art-scrollbar-thumb {
    position: absolute;
    display: block;
}

.mv-art-scrollbar-thumb {
    will-change: transform;
}

/* Returning-player ledger: the rail is attached to the modal frame, never
   injected into the rows, so unlocks and level changes cannot collide with it. */
body.mv-impeccable > .mv-offline-overlay:not(.mv-defeat-overlay) .mv-offline-scroll-shell {
    position: relative;
    min-height: 0;
    max-height: min(46dvh, 330px);
    margin: 0 0 var(--sp-3);
    padding: 2px 30px 2px 0;
}

body.mv-impeccable > .mv-offline-overlay:not(.mv-defeat-overlay) .mv-offline-list {
    width: 100%;
    height: 100%;
    max-height: min(46dvh, 330px);
    margin: 0;
    padding: 0 4px 8px 0;
    overflow-x: hidden;
    overflow-y: auto;
    scrollbar-width: none;
    overscroll-behavior: contain;
}

body.mv-impeccable > .mv-offline-overlay:not(.mv-defeat-overlay) .mv-offline-list::-webkit-scrollbar {
    display: none;
}

body.mv-impeccable > .mv-offline-overlay:not(.mv-defeat-overlay) .mv-offline-scroll-shell > .mv-art-scrollbar {
    top: 0;
    right: 2px;
    bottom: 4px;
    width: 20px;
    border: 1px solid #d1a756;
    border-radius: 10px;
    background: #103c40;
    box-shadow: inset 0 0 0 2px rgba(3, 25, 28, .52), 0 2px 4px rgba(3, 20, 22, .38);
}

body.mv-impeccable > .mv-offline-overlay:not(.mv-defeat-overlay) .mv-art-scrollbar-track {
    inset: 5px 6px;
    overflow: hidden;
    border: 1px solid rgba(255, 225, 145, .48);
    border-radius: 4px;
    background: #876431;
    box-shadow: inset 0 1px 3px rgba(38, 21, 12, .72);
}

body.mv-impeccable > .mv-offline-overlay:not(.mv-defeat-overlay) .mv-art-scrollbar-thumb {
    top: 0;
    right: 0;
    left: 0;
    border: 1px solid #ffe49a;
    border-radius: 4px;
    background: linear-gradient(90deg, #bf724f, #e3976d 46%, #a8543e);
    box-shadow: inset 0 1px rgba(255, 241, 195, .5), 0 1px 2px rgba(31, 18, 13, .65);
}

/* Travelling shop: the wooden bays, counter and bottom till are the layout.
   UI reinforces those owners instead of placing another stack of green cards
   over the pavilion. */
body.mv-impeccable > .mv-trade-marketplace-overlay .mv-sheet-heading {
    top: max(6px, calc(var(--mv-safe-top) + 2px));
    right: 7%;
    left: 7%;
    min-height: 54px;
    padding: 4px 5px 4px 11px;
    border-color: rgba(229, 190, 100, .74);
    border-radius: 8px;
    background: rgba(8, 55, 58, .78);
    box-shadow: 0 3px 6px rgba(35, 20, 13, .34), inset 0 1px rgba(255, 241, 195, .14);
}

body.mv-impeccable > .mv-trade-marketplace-overlay .mv-sheet-title-copy h3 {
    font-size: clamp(16px, 4.7vw, 19px);
}

body.mv-impeccable > .mv-trade-marketplace-overlay .mv-sheet-title-copy small {
    font-size: clamp(9px, 2.6vw, 10.5px);
}

body.mv-impeccable > .mv-trade-marketplace-overlay .mv-sheet-visible-close.mv-cozy-button {
    width: 54px;
    min-width: 54px;
    min-height: 44px;
    border-radius: 7px;
}

body.mv-impeccable > .mv-trade-marketplace-overlay .mv-sheet-mode-tabs {
    top: 12.3%;
    right: 9%;
    left: 9%;
    gap: 8px;
}

body.mv-impeccable > .mv-trade-marketplace-overlay .mv-sheet-mode-tabs .mv-catchip.mv-cozy-button {
    border-radius: 7px;
    background: rgba(8, 52, 54, .86);
}

body.mv-impeccable > .mv-trade-marketplace-overlay .mv-sheet-scroll {
    top: 20.8%;
    right: 17%;
    bottom: 37.2%;
    left: 10.2%;
}

body.mv-impeccable > .mv-trade-marketplace-overlay .mv-trade-page {
    gap: 4px 7px;
    padding: 3px 1px;
}

body.mv-impeccable > .mv-trade-marketplace-overlay .mv-item-cell.mv-cozy-slot {
    padding: 6px 5px;
    grid-template-columns: 54px minmax(0, 1fr);
    grid-template-rows: auto auto 1fr;
    gap: 2px 5px;
    overflow: hidden;
    border: 1px solid rgba(226, 190, 106, .34);
    border-radius: 5px;
    background: linear-gradient(180deg, rgba(7, 37, 36, .24), rgba(7, 37, 36, .48));
    color: #fff0c9;
    box-shadow: inset 0 -12px 20px rgba(5, 27, 28, .12);
}

body.mv-impeccable > .mv-trade-marketplace-overlay .mv-item-cell.mv-cozy-slot.mv-trade-focused {
    border-color: #ffe49a;
    background: linear-gradient(180deg, rgba(43, 105, 83, .36), rgba(21, 72, 65, .68));
    box-shadow: inset 0 0 0 2px rgba(255, 226, 139, .24), 0 2px 4px rgba(45, 27, 17, .36);
}

body.mv-impeccable > .mv-trade-marketplace-overlay .mv-item-cell.mv-cozy-slot.mv-trade-maxed {
    background: linear-gradient(180deg, rgba(34, 86, 72, .34), rgba(20, 67, 61, .66));
}

body.mv-impeccable > .mv-trade-marketplace-overlay .mv-item-art,
body.mv-impeccable > .mv-trade-marketplace-overlay .mv-item-art .mv-icon,
body.mv-impeccable > .mv-trade-marketplace-overlay .mv-item-art img {
    width: 54px !important;
    height: 54px !important;
}

body.mv-impeccable > .mv-trade-marketplace-overlay .mv-item-name {
    align-self: end;
    color: #fff5d8;
    font-size: clamp(11.5px, 3.1vw, 13px);
    text-shadow: 0 1px 2px rgba(4, 23, 24, .9);
}

body.mv-impeccable > .mv-trade-marketplace-overlay .mv-item-meta,
body.mv-impeccable > .mv-trade-marketplace-overlay .mv-item-count {
    color: #e5f0d7;
    font-size: clamp(9px, 2.5vw, 10.5px);
    text-shadow: 0 1px 2px rgba(4, 23, 24, .92);
}

body.mv-impeccable > .mv-trade-marketplace-overlay .mv-trade-scroll-rail {
    top: 30.1%;
    right: 5.9%;
    bottom: 39%;
    width: 32px;
    border: 1px solid #d3aa5b;
    border-radius: 16px;
    background: #164b4d;
    box-shadow: inset 0 0 0 2px rgba(55, 31, 18, .42), 0 2px 4px rgba(5, 24, 25, .42);
}

body.mv-impeccable > .mv-trade-marketplace-overlay .mv-trade-scroll-rail::before,
body.mv-impeccable > .mv-trade-marketplace-overlay .mv-trade-scroll-rail::after {
    content: none;
}

body.mv-impeccable > .mv-trade-marketplace-overlay .mv-scroll-hint {
    display: none !important;
}

body.mv-impeccable > .mv-trade-marketplace-overlay .mv-trade-scroll-rail > .mv-art-scrollbar {
    inset: 4px;
}

body.mv-impeccable > .mv-trade-marketplace-overlay .mv-art-scrollbar-track {
    inset: 0 7px;
    overflow: hidden;
    border: 1px solid rgba(255, 226, 145, .52);
    border-radius: 5px;
    background: #896631;
    box-shadow: inset 0 1px 3px rgba(37, 20, 11, .74);
}

body.mv-impeccable > .mv-trade-marketplace-overlay .mv-art-scrollbar-thumb {
    top: 0;
    right: -3px;
    left: -3px;
    border: 1px solid #ffe59a;
    border-radius: 6px;
    background: linear-gradient(90deg, #ab583e, #dc8760 48%, #984934);
    box-shadow: inset 0 1px rgba(255, 239, 184, .52), 0 1px 3px rgba(36, 18, 12, .7);
}

body.mv-impeccable > .mv-trade-marketplace-overlay .mv-trade-picker {
    top: 64.2%;
    right: 8.5%;
    bottom: 23.2%;
    left: 8.5%;
    padding: 5px 7px;
    border-color: rgba(139, 94, 45, .7);
    border-radius: 6px;
    background: rgba(239, 216, 159, .91);
    color: #163f3f;
    box-shadow: inset 0 1px rgba(255, 247, 211, .58), 0 3px 7px rgba(48, 28, 16, .42);
}

body.mv-impeccable > .mv-trade-marketplace-overlay .mv-trade-picker-copy strong,
body.mv-impeccable > .mv-trade-marketplace-overlay .mv-trade-picker-copy small,
body.mv-impeccable > .mv-trade-marketplace-overlay .mv-trade-picker-count {
    color: #174748;
    text-shadow: none;
}

body.mv-impeccable > .mv-trade-marketplace-overlay .mv-trade-picker-copy small {
    color: #3f625b;
}

body.mv-impeccable > .mv-trade-marketplace-overlay .mv-sheet-footer {
    top: 77.5%;
    right: 7.2%;
    bottom: max(7px, calc(var(--mv-safe-bottom) + 3px));
    left: 7.2%;
    padding: 6px;
    grid-template-rows: minmax(44px, 1fr) 48px;
    gap: 6px;
    border-color: rgba(216, 173, 83, .48);
    border-radius: 7px;
    background: rgba(7, 45, 45, .78);
    box-shadow: inset 0 1px rgba(255, 240, 190, .1), 0 3px 7px rgba(45, 27, 17, .34);
}

body.mv-impeccable > .mv-trade-marketplace-overlay .mv-sheet-footer .mv-item-actions {
    grid-template-columns: repeat(2, minmax(0, 1fr));
}

body.mv-impeccable > .mv-trade-marketplace-overlay .mv-sheet-footer .mv-trade-exit {
    display: none;
}

@media (max-height: 740px) {
    body.mv-impeccable > .mv-offline-overlay:not(.mv-defeat-overlay) .mv-offline-scroll-shell,
    body.mv-impeccable > .mv-offline-overlay:not(.mv-defeat-overlay) .mv-offline-list {
        max-height: 42dvh;
    }

    body.mv-impeccable > .mv-trade-marketplace-overlay .mv-sheet-heading {
        min-height: 50px;
    }

    body.mv-impeccable > .mv-trade-marketplace-overlay .mv-sheet-mode-tabs {
        top: 11.8%;
    }

    body.mv-impeccable > .mv-trade-marketplace-overlay .mv-sheet-scroll {
        top: 20.2%;
    }

    body.mv-impeccable > .mv-trade-marketplace-overlay .mv-trade-picker {
        top: 63.8%;
        bottom: 23.6%;
    }

    body.mv-impeccable > .mv-trade-marketplace-overlay .mv-sheet-footer {
        top: 77.2%;
    }
}

/* ═══════════════════════════════════════════════════════════════════
   Wave88: contained merchandise grid correction
   The authored phone-ratio pavilion supplies six warm display bays, a
   parchment selection counter and a lower till. Runtime UI inhabits those
   fixtures; product art leads each bay while every caption owner remains
   above the painted shelf divider.
   ═══════════════════════════════════════════════════════════════════ */
body.mv-impeccable > .mv-trade-marketplace-overlay > .mv-trade-marketplace[data-art-family="wave87-merchandise-stage-candidate"].mv-cozy-panel {
    background-image:
        linear-gradient(180deg, rgba(7, 40, 45, .01), rgba(7, 31, 35, .035)),
        url("/output/art-direction/wave87-travelling-shop-merchandise-stage-v1/shop-merchandise-stage-candidate-v1.png");
    background-position: center center;
    background-size: 100% 100%;
}

[data-theme="night"] body.mv-impeccable > .mv-trade-marketplace-overlay > .mv-trade-marketplace[data-art-family="wave87-merchandise-stage-candidate"].mv-cozy-panel,
body.mv-impeccable[data-theme="night"] > .mv-trade-marketplace-overlay > .mv-trade-marketplace[data-art-family="wave87-merchandise-stage-candidate"].mv-cozy-panel {
    background-image:
        linear-gradient(180deg, rgba(5, 25, 40, .1), rgba(4, 22, 31, .18)),
        url("/output/art-direction/wave87-travelling-shop-merchandise-stage-v1/shop-merchandise-stage-candidate-v1.png");
}

body.mv-impeccable > .mv-trade-marketplace-overlay .mv-trade-marketplace[data-art-family="wave87-merchandise-stage-candidate"] .mv-sheet-heading {
    top: max(2.6%, calc(var(--mv-safe-top) + 2px));
    right: 4.5%;
    left: 10.5%;
    min-height: 51px;
    padding: 3px 3px 3px 14%;
    border: 0;
    background: transparent;
    box-shadow: none;
}

body.mv-impeccable > .mv-trade-marketplace-overlay .mv-trade-marketplace[data-art-family="wave87-merchandise-stage-candidate"] .mv-sheet-title-copy {
    color: #163f40;
    text-shadow: 0 1px rgba(255, 249, 218, .72);
}

body.mv-impeccable > .mv-trade-marketplace-overlay .mv-trade-marketplace[data-art-family="wave87-merchandise-stage-candidate"] .mv-sheet-title-copy small {
    color: #345d58;
    text-shadow: none;
}

body.mv-impeccable > .mv-trade-marketplace-overlay .mv-trade-marketplace[data-art-family="wave87-merchandise-stage-candidate"] .mv-sheet-mode-tabs {
    top: 10.4%;
    right: 3.7%;
    left: 3.7%;
    gap: 3.8%;
}

body.mv-impeccable > .mv-trade-marketplace-overlay .mv-trade-marketplace[data-art-family="wave87-merchandise-stage-candidate"] .mv-sheet-mode-tabs .mv-catchip.mv-cozy-button {
    min-height: 44px;
    border-color: transparent;
    background: transparent;
    box-shadow: none;
}

body.mv-impeccable > .mv-trade-marketplace-overlay .mv-trade-marketplace[data-art-family="wave87-merchandise-stage-candidate"] .mv-sheet-mode-tabs .mv-catchip.mv-cozy-button.mv-active,
body.mv-impeccable > .mv-trade-marketplace-overlay .mv-trade-marketplace[data-art-family="wave87-merchandise-stage-candidate"] .mv-sheet-mode-tabs .mv-catchip.mv-cozy-button[aria-pressed="true"] {
    border-color: rgba(255, 231, 153, .76);
    background: rgba(158, 69, 45, .44);
    box-shadow: inset 0 0 0 1px rgba(255, 239, 183, .24);
}

body.mv-impeccable > .mv-trade-marketplace-overlay .mv-trade-marketplace[data-art-family="wave87-merchandise-stage-candidate"] .mv-sheet-scroll {
    top: 17.2%;
    right: 9.6%;
    bottom: 35.3%;
    left: 6.2%;
}

body.mv-impeccable > .mv-trade-marketplace-overlay .mv-trade-marketplace[data-art-family="wave87-merchandise-stage-candidate"] .mv-trade-page {
    row-gap: 7.2%;
    column-gap: 3.7%;
    padding: 1.1% 1.7% 9%;
}

body.mv-impeccable > .mv-trade-marketplace-overlay .mv-trade-marketplace[data-art-family="wave87-merchandise-stage-candidate"] .mv-item-cell.mv-cozy-slot {
    position: relative;
    padding: 3px 8px 14px;
    grid-template-columns: minmax(0, 1fr);
    grid-template-rows: minmax(0, 1fr) auto auto;
    row-gap: 1px;
    place-items: center;
    overflow: hidden;
    border: 1px solid transparent;
    border-radius: 5px;
    background: transparent;
    color: #173f3e;
    text-align: center;
    box-shadow: none;
}

body.mv-impeccable > .mv-trade-marketplace-overlay .mv-trade-marketplace[data-art-family="wave87-merchandise-stage-candidate"] .mv-item-cell.mv-cozy-slot.mv-trade-focused {
    border-color: #8f542d;
    background: rgba(255, 244, 196, .25);
    box-shadow: inset 0 0 0 2px rgba(255, 230, 143, .72), 0 2px 4px rgba(45, 27, 17, .24);
}

body.mv-impeccable > .mv-trade-marketplace-overlay .mv-trade-marketplace[data-art-family="wave87-merchandise-stage-candidate"] .mv-item-cell.mv-cozy-slot.mv-trade-maxed {
    background: rgba(50, 112, 91, .13);
}

body.mv-impeccable > .mv-trade-marketplace-overlay .mv-trade-marketplace[data-art-family="wave87-merchandise-stage-candidate"] .mv-item-art {
    width: 50px !important;
    height: 50px !important;
    grid-column: 1 / -1;
    grid-row: 1;
    align-self: center;
}

body.mv-impeccable > .mv-trade-marketplace-overlay .mv-trade-marketplace[data-art-family="wave87-merchandise-stage-candidate"] .mv-item-art .mv-icon,
body.mv-impeccable > .mv-trade-marketplace-overlay .mv-trade-marketplace[data-art-family="wave87-merchandise-stage-candidate"] .mv-item-art img {
    width: 50px !important;
    height: 50px !important;
}

body.mv-impeccable > .mv-trade-marketplace-overlay .mv-trade-marketplace[data-art-family="wave87-merchandise-stage-candidate"] .mv-item-name {
    grid-column: 1 / -1;
    grid-row: 2;
    align-self: end;
    width: 100%;
    color: #173f3e;
    font-size: 14px;
    font-weight: 800;
    line-height: 16px;
    text-align: center;
    text-shadow: 0 1px rgba(255, 247, 210, .86);
}

body.mv-impeccable > .mv-trade-marketplace-overlay .mv-trade-marketplace[data-art-family="wave87-merchandise-stage-candidate"] .mv-item-meta,
body.mv-impeccable > .mv-trade-marketplace-overlay .mv-trade-marketplace[data-art-family="wave87-merchandise-stage-candidate"] .mv-item-count {
    color: #294f49;
    font-size: clamp(10px, 2.7vw, 11px);
    line-height: 12px;
    white-space: nowrap;
    text-shadow: 0 1px rgba(255, 247, 210, .8);
}

body.mv-impeccable > .mv-trade-marketplace-overlay .mv-trade-marketplace[data-art-family="wave87-merchandise-stage-candidate"] .mv-item-meta {
    grid-column: 1 / -1;
    grid-row: 3;
    justify-self: center;
    width: 100%;
    text-align: center;
}

body.mv-impeccable > .mv-trade-marketplace-overlay .mv-trade-marketplace[data-art-family="wave87-merchandise-stage-candidate"] .mv-item-count {
    position: absolute;
    top: 6px;
    right: 7px;
    z-index: 2;
    padding: 1px 4px;
    border: 1px solid rgba(143, 84, 45, .42);
    border-radius: 7px;
    background: rgba(255, 244, 196, .88);
    font-size: 10px;
    font-weight: 700;
    line-height: 12px;
    text-align: center;
    text-shadow: none;
}

body.mv-impeccable > .mv-trade-marketplace-overlay .mv-trade-marketplace[data-art-family="wave87-merchandise-stage-candidate"] .mv-item-count:empty {
    display: none;
}

/* Wave91: keep the painted rail as part of the stall, while its Saves-family
   gold position thumb appears only during movement. No duplicate arrows. */
body.mv-impeccable > .mv-trade-marketplace-overlay .mv-trade-marketplace[data-art-family="wave87-merchandise-stage-candidate"] .mv-trade-scroll-rail {
    top: 18.2%;
    right: 1.15%;
    bottom: 35.7%;
    width: 23px;
    border-color: #d3aa5b;
    border-radius: 12px;
    background: rgba(17, 70, 70, .96);
}

body.mv-impeccable > .mv-trade-marketplace-overlay .mv-trade-marketplace[data-art-family="wave87-merchandise-stage-candidate"] .mv-trade-scroll-rail > .mv-art-scrollbar {
    inset: 4px 3px;
}

body.mv-impeccable > .mv-trade-marketplace-overlay .mv-trade-marketplace[data-art-family="wave87-merchandise-stage-candidate"] .mv-art-scrollbar-track {
    inset: 0 4px;
    border-color: rgba(255, 224, 139, .66);
    background: linear-gradient(90deg, #173f40, #2f6864 48%, #173f40);
    box-shadow: inset 0 1px 4px rgba(7, 31, 31, .82), 0 0 0 1px rgba(91, 57, 27, .34);
}

body.mv-impeccable > .mv-trade-marketplace-overlay .mv-trade-marketplace[data-art-family="wave87-merchandise-stage-candidate"] .mv-art-scrollbar-thumb {
    right: -2px;
    left: -2px;
    border-color: #6f4d23;
    background: linear-gradient(90deg, #8d622b, #e0b45f 48%, #9b6b30);
    box-shadow: inset 0 1px rgba(255, 239, 171, .88), 0 1px 3px rgba(41, 23, 11, .72);
}

body.mv-impeccable > .mv-trade-marketplace-overlay .mv-trade-marketplace[data-art-family="wave87-merchandise-stage-candidate"] .mv-art-scrollbar[data-auto-hide="true"] .mv-art-scrollbar-thumb {
    opacity: 0;
    transition: opacity 140ms ease-out;
}

body.mv-impeccable > .mv-trade-marketplace-overlay .mv-trade-marketplace[data-art-family="wave87-merchandise-stage-candidate"] .mv-art-scrollbar[data-auto-hide="true"][data-active="true"] .mv-art-scrollbar-thumb {
    opacity: 1;
}

body.mv-impeccable > .mv-trade-marketplace-overlay .mv-trade-marketplace[data-art-family="wave87-merchandise-stage-candidate"] .mv-trade-picker {
    top: 65.7%;
    right: 3.8%;
    bottom: 21.8%;
    left: 3.8%;
    padding: clamp(14px, 2.15dvh, 18px) 5.2% clamp(14px, 2.25dvh, 19px);
    grid-template-columns: 48px minmax(0, 1fr) minmax(132px, 41%);
    grid-template-rows: minmax(0, 1fr) auto;
    gap: 1px 6px;
    border: 0;
    background: transparent;
    color: #153d3d;
    box-shadow: none;
}

body.mv-impeccable > .mv-trade-marketplace-overlay .mv-trade-marketplace[data-art-family="wave87-merchandise-stage-candidate"] .mv-trade-picker-art {
    width: 48px;
    height: 48px;
    grid-column: 1;
    grid-row: 1 / 3;
}

body.mv-impeccable > .mv-trade-marketplace-overlay .mv-trade-marketplace[data-art-family="wave87-merchandise-stage-candidate"] .mv-trade-picker-art .mv-icon,
body.mv-impeccable > .mv-trade-marketplace-overlay .mv-trade-marketplace[data-art-family="wave87-merchandise-stage-candidate"] .mv-trade-picker-art img {
    width: 48px !important;
    height: 48px !important;
}

body.mv-impeccable > .mv-trade-marketplace-overlay .mv-trade-marketplace[data-art-family="wave87-merchandise-stage-candidate"] .mv-trade-picker-copy {
    grid-column: 2;
    grid-row: 1;
    align-self: end;
}

body.mv-impeccable > .mv-trade-marketplace-overlay .mv-trade-marketplace[data-art-family="wave87-merchandise-stage-candidate"] .mv-trade-picker-count {
    grid-column: 2;
    grid-row: 2;
    align-self: start;
}

body.mv-impeccable > .mv-trade-marketplace-overlay .mv-trade-marketplace[data-art-family="wave87-merchandise-stage-candidate"] .mv-trade-picker-actions {
    grid-column: 3;
    grid-row: 1 / 3;
    gap: 5px;
    align-self: center;
}

body.mv-impeccable > .mv-trade-marketplace-overlay .mv-trade-marketplace[data-art-family="wave87-merchandise-stage-candidate"] .mv-trade-picker-actions .mv-cozy-button {
    min-height: 44px;
    padding: 0 3px;
    border-radius: 5px;
    font-size: 12px;
}

body.mv-impeccable > .mv-trade-marketplace-overlay .mv-trade-marketplace[data-art-family="wave87-merchandise-stage-candidate"] .mv-sheet-footer {
    top: 79.1%;
    right: 5.8%;
    bottom: max(1.6%, calc(var(--mv-safe-bottom) + 2px));
    left: 5.8%;
    padding: 2.8% 3% 1.2%;
    grid-template-rows: minmax(44px, 1fr) 44px;
    gap: 4.5%;
    border: 0;
    background: transparent;
    box-shadow: none;
}

body.mv-impeccable > .mv-trade-marketplace-overlay .mv-trade-marketplace[data-art-family="wave87-merchandise-stage-candidate"] .mv-trade-summary {
    background: transparent;
}

body.mv-impeccable > .mv-trade-marketplace-overlay .mv-trade-marketplace[data-art-family="wave87-merchandise-stage-candidate"] .mv-item-action.mv-cozy-button {
    min-height: 44px;
    padding: 0 6px;
    border-color: #f0c369;
    border-radius: 7px;
    background: #b55436;
    color: #fff8df;
    font-size: 14px;
}

@media (prefers-reduced-motion: reduce) {
    body.mv-impeccable > .mv-trade-marketplace-overlay .mv-trade-marketplace[data-art-family="wave87-merchandise-stage-candidate"] .mv-art-scrollbar[data-auto-hide="true"] .mv-art-scrollbar-thumb {
        transition: none;
    }
}

body.mv-impeccable > .mv-trade-marketplace-overlay .mv-trade-marketplace[data-art-family="wave87-merchandise-stage-candidate"] .mv-item-action.mv-cozy-button-primary {
    background: #a94b31;
}

@media (max-height: 740px) {
    body.mv-impeccable > .mv-trade-marketplace-overlay .mv-trade-marketplace[data-art-family="wave87-merchandise-stage-candidate"] .mv-sheet-heading {
        min-height: 44px;
    }

    body.mv-impeccable > .mv-trade-marketplace-overlay .mv-trade-marketplace[data-art-family="wave87-merchandise-stage-candidate"] .mv-sheet-mode-tabs {
        top: 10.4%;
    }

    body.mv-impeccable > .mv-trade-marketplace-overlay .mv-trade-marketplace[data-art-family="wave87-merchandise-stage-candidate"] .mv-sheet-scroll {
        top: 17.2%;
    }

    body.mv-impeccable > .mv-trade-marketplace-overlay .mv-trade-marketplace[data-art-family="wave87-merchandise-stage-candidate"] .mv-item-cell.mv-cozy-slot {
        padding: 3px 7px 8px;
    }

    body.mv-impeccable > .mv-trade-marketplace-overlay .mv-trade-marketplace[data-art-family="wave87-merchandise-stage-candidate"] .mv-item-art,
    body.mv-impeccable > .mv-trade-marketplace-overlay .mv-trade-marketplace[data-art-family="wave87-merchandise-stage-candidate"] .mv-item-art .mv-icon,
    body.mv-impeccable > .mv-trade-marketplace-overlay .mv-trade-marketplace[data-art-family="wave87-merchandise-stage-candidate"] .mv-item-art img {
        width: 40px !important;
        height: 40px !important;
    }

    body.mv-impeccable > .mv-trade-marketplace-overlay .mv-trade-marketplace[data-art-family="wave87-merchandise-stage-candidate"] .mv-trade-picker {
        top: 65.7%;
        bottom: 21.8%;
        grid-template-columns: 44px minmax(0, 1fr) minmax(132px, 42%);
        padding-top: 14px;
        padding-right: 4.8%;
        padding-bottom: 14px;
        padding-left: 4.8%;
    }

    body.mv-impeccable > .mv-trade-marketplace-overlay .mv-trade-marketplace[data-art-family="wave87-merchandise-stage-candidate"] .mv-sheet-footer {
        top: 79.1%;
    }
}

/* Wave90: Art Director caption band and hierarchy correction */
body.mv-impeccable > .mv-trade-marketplace-overlay .mv-trade-marketplace[data-art-family="wave87-merchandise-stage-candidate"] .mv-item-meta {
    color: #143c3a;
    font-size: clamp(10.5px, 2.8vw, 11px);
    font-weight: 700;
    text-shadow: 0 1px 0 rgba(255, 248, 218, .48);
}

body.mv-impeccable > .mv-trade-marketplace-overlay .mv-trade-marketplace[data-art-family="wave87-merchandise-stage-candidate"] .mv-sheet-mode-tabs .mv-catchip.mv-cozy-button > span {
    transform: translateY(-3px);
}

/* ═══════════════════════════════════════════════════════════════════
   Wave91 phone gate fixes (tests/qa-wave91-gate.mjs; rule = no text
   truncation, no element overlap, no sideways scroll).
   ═══════════════════════════════════════════════════════════════════ */

/* Skills overview: on 390-wide phones the path hint pill sat 9px over the
   bottom emblem label (製作). Tighten and lower the pill so it clears it. */
@media (max-width: 400px) {
    .mv-impeccable .mv-skill-path-hint {
        bottom: 4px;
        padding: 5px 12px;
        font-size: 10px;
    }
}

/* Bookshelf reading desk: the 75px action buttons ellipsised five-glyph labels
   (內容與效果 → 內容與…). Let the label wrap onto two lines instead. */
.mv-impeccable .mv-reading-desk-actions :is(.mv-item-action, .mv-reading-details).mv-cozy-button > span {
    white-space: normal;
    overflow: visible;
    text-overflow: clip;
    line-height: 1.15;
}

/* Travelling shop picker: the quantity row (0／1 件) was pushed onto the drawn
   card's bottom border by the 1fr/auto rows. Centre the copy + count block. */
body.mv-impeccable > .mv-trade-marketplace-overlay .mv-trade-marketplace[data-art-family="wave87-merchandise-stage-candidate"] .mv-trade-picker {
    grid-template-rows: auto auto;
    align-content: center;
    grid-template-columns: minmax(0, 1fr) 142px;
    padding: 8px 3.8% 8px 9%;
}

/* Keep the complete selection name on the counter; its art already owns a bay. */
body.mv-impeccable > .mv-trade-marketplace-overlay .mv-trade-marketplace[data-art-family="wave87-merchandise-stage-candidate"] .mv-trade-picker-art {
    display: none;
}
body.mv-impeccable > .mv-trade-marketplace-overlay .mv-trade-marketplace[data-art-family="wave87-merchandise-stage-candidate"] .mv-trade-picker-copy small {
    display: none;
}
body.mv-impeccable > .mv-trade-marketplace-overlay .mv-trade-marketplace[data-art-family="wave87-merchandise-stage-candidate"] .mv-trade-picker-copy,
body.mv-impeccable > .mv-trade-marketplace-overlay .mv-trade-marketplace[data-art-family="wave87-merchandise-stage-candidate"] .mv-trade-picker-count {
    grid-column: 1;
}
body.mv-impeccable > .mv-trade-marketplace-overlay .mv-trade-marketplace[data-art-family="wave87-merchandise-stage-candidate"] .mv-trade-picker-copy strong {
    white-space: normal;
    overflow: visible;
    text-overflow: clip;
    font-size: 14px;
    line-height: 17px;
}
body.mv-impeccable > .mv-trade-marketplace-overlay .mv-trade-marketplace[data-art-family="wave87-merchandise-stage-candidate"] .mv-trade-picker-actions {
    grid-column: 2;
}
body.mv-impeccable > .mv-trade-marketplace-overlay .mv-trade-marketplace[data-art-family="wave87-merchandise-stage-candidate"] .mv-item-cell.mv-cozy-slot {
    padding: 0 4px 9px;
}
body.mv-impeccable > .mv-trade-marketplace-overlay .mv-trade-marketplace[data-art-family="wave87-merchandise-stage-candidate"] .mv-item-name {
    white-space: normal;
    overflow: visible;
    text-overflow: clip;
    -webkit-line-clamp: unset;
}
body.mv-impeccable > .mv-trade-marketplace-overlay .mv-trade-marketplace[data-art-family="wave87-merchandise-stage-candidate"] .mv-item-meta {
    font-size: 12px;
    line-height: 15px;
}
body.mv-impeccable > .mv-trade-marketplace-overlay .mv-trade-marketplace[data-art-family="wave87-merchandise-stage-candidate"] .mv-item-art,
body.mv-impeccable > .mv-trade-marketplace-overlay .mv-trade-marketplace[data-art-family="wave87-merchandise-stage-candidate"] .mv-item-art img {
    width: 48px !important;
    height: 100% !important;
    max-height: 48px;
    min-height: 0;
    object-fit: contain;
}
body.mv-impeccable > .mv-trade-marketplace-overlay .mv-trade-marketplace[data-art-family="wave87-merchandise-stage-candidate"] .mv-sheet-footer {
    bottom: max(22px, calc(var(--mv-safe-bottom) + 12px));
    padding-bottom: 0;
    gap: 4px;
}
body.mv-impeccable > .mv-trade-marketplace-overlay .mv-trade-marketplace[data-art-family="wave87-merchandise-stage-candidate"] .mv-trade-scroll-rail {
    right: 2%;
    width: 14px;
    border-radius: 3px;
    border-width: 1px;
}
body.mv-impeccable > .mv-trade-marketplace-overlay .mv-trade-marketplace[data-art-family="wave87-merchandise-stage-candidate"] .mv-trade-scroll-rail > .mv-art-scrollbar {
    inset: 3px 0;
}

/* Journal: the prologue trail was not a snap point, so on short frames the
   mandatory y-snap scrolled the paper 61px on entry and hid the trail cards
   under the nav row. Make the first card a snap start so scrollTop 0 is valid. */
.mv-impeccable .mv-journal-route-board .mv-first-trail {
    scroll-snap-align: start;
    scroll-margin-top: var(--journal-canvas-pad-top);
}

/* Skills overview on 360-wide phones: the emblem cluster is too tight, so the
   middle-row label pills landed on the lower-row icons. Shrink the emblems. */
@media (max-width: 370px) {
    .mv-impeccable .mv-skill-preview-node.mv-cozy-slot,
    .mv-impeccable .mv-skill-preview-node.mv-recommended {
        width: 56px;
        height: 56px;
    }
    .mv-impeccable .mv-skill-preview-node .mv-icon {
        width: 40px !important;
        height: 40px !important;
    }
    .mv-impeccable .mv-skill-preview-node > span {
        top: calc(100% + 2px);
        min-width: 46px;
        padding: 1px 6px;
        font-size: 10px;
    }
}
/* Merchandise and its authored shelves share the same scrolling plane.
   Each two-item row owns the source aperture x=54..786, y=300..595. */
body.mv-impeccable > .mv-trade-marketplace-overlay .mv-trade-marketplace[data-art-family="wave87-merchandise-stage-candidate"] .mv-sheet-scroll {
    left: 6.2645%; right: 8.8167%; top: 16.4384%; bottom: 35.3425%;
    scroll-snap-type: none; scroll-behavior: auto;
    background: #53361f;
}
body.mv-impeccable > .mv-trade-marketplace-overlay .mv-trade-marketplace[data-art-family="wave87-merchandise-stage-candidate"] .mv-trade-page {
    position: relative;
    height: max(33.333cqh, 130px); min-height: max(33.333cqh, 130px);
    grid-template-rows: minmax(0, 1fr);
    background-image: url("/output/art-direction/wave87-travelling-shop-merchandise-stage-v1/shop-merchandise-stage-candidate-v1.png");
    background-size: 117.7596% 618.6441%;
    background-position: 41.5385% 19.6078%;
    background-repeat: no-repeat;
    padding: 6px 1.7% 13px;
    row-gap: 0; column-gap: 4%;
    scroll-snap-align: none;
}
body.mv-impeccable > .mv-trade-marketplace-overlay .mv-trade-marketplace[data-art-family="wave87-merchandise-stage-candidate"] .mv-item-cell.mv-cozy-slot { padding: 3px 6px 7px; }
body.mv-impeccable > .mv-trade-marketplace-overlay .mv-trade-marketplace[data-art-family="wave87-merchandise-stage-candidate"] .mv-item-art, body.mv-impeccable > .mv-trade-marketplace-overlay .mv-trade-marketplace[data-art-family="wave87-merchandise-stage-candidate"] .mv-item-art img { width: 56px !important; max-height: 56px; }
/* Labels occupy the painted mounts, not a second offset set of panels. */
body.mv-impeccable > .mv-trade-marketplace-overlay .mv-trade-marketplace[data-art-family="wave87-merchandise-stage-candidate"] .mv-sheet-heading { inset: 3% 3% auto; height: 5.2%; min-height: 44px; padding: 0; display: block; }
body.mv-impeccable > .mv-trade-marketplace-overlay .mv-trade-marketplace[data-art-family="wave87-merchandise-stage-candidate"] .mv-sheet-title-block { position: absolute; left: 23%; right: 23%; height: 100%; display: grid; place-items: center; padding: 0; }
body.mv-impeccable > .mv-trade-marketplace-overlay .mv-trade-marketplace[data-art-family="wave87-merchandise-stage-candidate"] .mv-sheet-title-copy { width: 100%; text-align: center; }
body.mv-impeccable > .mv-trade-marketplace-overlay .mv-trade-marketplace[data-art-family="wave87-merchandise-stage-candidate"] .mv-sheet-title-copy h3 { color: #173f3e; font-size: 18px; line-height: 22px; text-shadow: none; margin: 0; }
body.mv-impeccable > .mv-trade-marketplace-overlay .mv-trade-marketplace[data-art-family="wave87-merchandise-stage-candidate"] .mv-sheet-title-copy small { display: none; }
body.mv-impeccable > .mv-trade-marketplace-overlay .mv-trade-marketplace[data-art-family="wave87-merchandise-stage-candidate"] .mv-sheet-visible-close { position: absolute; right: 0; top: 0; height: 100%; }
body.mv-impeccable > .mv-trade-marketplace-overlay .mv-trade-marketplace[data-art-family="wave87-merchandise-stage-candidate"] .mv-sheet-mode-tabs { top: 10.2%; left: 5%; right: 5%; gap: 4%; }
body.mv-impeccable > .mv-trade-marketplace-overlay .mv-trade-marketplace[data-art-family="wave87-merchandise-stage-candidate"] .mv-sheet-mode-tabs .mv-catchip.mv-cozy-button { border: 0; border-radius: 0; box-shadow: none; background: transparent; }
body.mv-impeccable > .mv-trade-marketplace-overlay .mv-trade-marketplace[data-art-family="wave87-merchandise-stage-candidate"] .mv-sheet-mode-tabs .mv-catchip.mv-cozy-button.mv-active { box-shadow: inset 0 -3px #ffdf91; background: rgba(255,235,183,.12); }
body.mv-impeccable > .mv-trade-marketplace-overlay .mv-trade-marketplace[data-art-family="wave87-merchandise-stage-candidate"] .mv-trade-picker { inset: 67.7% 10% 24.6% 10.8%; display: block; padding: 0; }
body.mv-impeccable > .mv-trade-marketplace-overlay .mv-trade-marketplace[data-art-family="wave87-merchandise-stage-candidate"] .mv-trade-picker-copy { position: absolute; left: 3%; width: 47%; top: 50%; transform: translateY(-70%); }
body.mv-impeccable > .mv-trade-marketplace-overlay .mv-trade-marketplace[data-art-family="wave87-merchandise-stage-candidate"] .mv-trade-picker-count { position: absolute; left: 3%; bottom: 10%; font-size: 12px; line-height: 16px; }
body.mv-impeccable > .mv-trade-marketplace-overlay .mv-trade-marketplace[data-art-family="wave87-merchandise-stage-candidate"] .mv-trade-picker-actions { position: absolute; left: 58%; right: 0; top: 50%; transform: translateY(-50%); height: max(44px, 100%); grid-template-columns: repeat(3,1fr); gap: 0; }
body.mv-impeccable > .mv-trade-marketplace-overlay .mv-trade-marketplace[data-art-family="wave87-merchandise-stage-candidate"] .mv-trade-picker-actions .mv-cozy-button { min-width: 44px; min-height: 44px; border: 0; border-radius: 0; background: transparent; color: #183f3d; box-shadow: none; font-size: 15px; font-weight: 800; }
body.mv-impeccable > .mv-trade-marketplace-overlay .mv-trade-marketplace[data-art-family="wave87-merchandise-stage-candidate"] .mv-trade-picker-actions .mv-cozy-button:disabled { opacity: .45; }
body.mv-impeccable > .mv-trade-marketplace-overlay .mv-trade-marketplace[data-art-family="wave87-merchandise-stage-candidate"] .mv-sheet-footer { inset: 81.9% 12% 5.2%; padding: 0; display: block; }
body.mv-impeccable > .mv-trade-marketplace-overlay .mv-trade-marketplace[data-art-family="wave87-merchandise-stage-candidate"] .mv-trade-summary { position: absolute; inset: 0 0 auto; height: 40%; border: 0; border-radius: 0; box-shadow: none; padding: 0; gap: 5%; background: transparent; }
body.mv-impeccable > .mv-trade-marketplace-overlay .mv-trade-marketplace[data-art-family="wave87-merchandise-stage-candidate"] .mv-trade-summary > span { border: 0; padding: 0; justify-content: center; gap: 0; }
body.mv-impeccable > .mv-trade-marketplace-overlay .mv-trade-marketplace[data-art-family="wave87-merchandise-stage-candidate"] .mv-sheet-footer .mv-item-actions { position: absolute; inset: auto 0 0; height: 39%; gap: 9%; }
body.mv-impeccable > .mv-trade-marketplace-overlay .mv-trade-marketplace[data-art-family="wave87-merchandise-stage-candidate"] .mv-item-action.mv-cozy-button { min-height: 44px; border: 0; border-radius: 0; background: transparent; box-shadow: none; padding: 0; }
body.mv-impeccable > .mv-trade-marketplace-overlay .mv-trade-marketplace[data-art-family="wave87-merchandise-stage-candidate"] .mv-item-action.mv-cozy-button:disabled { opacity: .5; }
body.mv-impeccable > .mv-trade-marketplace-overlay .mv-trade-marketplace[data-art-family="wave87-merchandise-stage-candidate"] button:focus-visible { outline: 2px solid #fff0ac; outline-offset: -3px; }
body.mv-impeccable > .mv-trade-marketplace-overlay .mv-trade-marketplace[data-art-family="wave87-merchandise-stage-candidate"] button:not(:disabled):active { filter: brightness(.8); }
@media (hover: hover) and (pointer: fine) { body.mv-impeccable > .mv-trade-marketplace-overlay .mv-trade-marketplace[data-art-family="wave87-merchandise-stage-candidate"] button:not(:disabled):hover { filter: brightness(1.18); } }

/* Keep the field enemy grounded above its health panel at every arena size. */
body.mv-impeccable > .mv-trade-marketplace-overlay .mv-trade-marketplace[data-art-family="wave87-merchandise-stage-candidate"] .mv-trade-grid[data-short="true"] .mv-trade-page { height: 33.333cqh; min-height: 33.333cqh; }
.mv-impeccable .mv-combat[data-combat-art-owner="Infested field"] .mv-combat-time-seal { display: none; }
.mv-impeccable .mv-combat[data-combat-art-owner="Infested field"] { min-height: 0; }
/* The arena belongs to the bounded game frame, never the desktop viewport.
   Separate the sprite ground from the readout so neither can cover the other. */
.mv-impeccable .mv-combat[data-combat-art-owner="Infested field"] .mv-arena { top: 17%; container-type: size; }
.mv-impeccable .mv-combat[data-combat-art-owner="Infested field"] .mv-stage { display: grid; grid-template-columns: minmax(0, 1fr); grid-template-rows: minmax(0, 1fr) auto; gap: 0; }
.mv-impeccable .mv-combat[data-combat-art-owner="Infested field"] .mv-stage-mob { position: relative; inset: auto; height: 100%; align-items: flex-end; container-type: size; }
.mv-impeccable .mv-combat[data-combat-art-owner="Infested field"] .mv-stage-plate.mv-cozy-panel { position: relative; inset: auto; margin: 0 4%; }
.mv-impeccable .mv-combat[data-combat-art-owner="Infested field"] .mv-stage-mob[data-count="1"] .mv-mob-primary { width: min(76cqw, 360px, 100cqh); }
.mv-impeccable .mv-combat[data-combat-art-owner="Infested field"] .mv-stage-mob[data-count="1"] .mv-mob-primary .mv-mob-body { width: min(76cqw, 360px, 100cqh); height: min(76cqw, 360px, 100cqh); }
.mv-impeccable .mv-combat[data-combat-art-owner="Infested field"] .mv-combat-head.mv-cozy-panel { top:0; left:0; right:0; height:15%; min-height:0; max-height:none; container-type:size; }
.mv-impeccable .mv-combat[data-combat-art-owner="Infested field"] .mv-loc-name-row h2 { position:absolute; top:35%; left:22%; right:22%; margin:0; font-size:clamp(14px,23cqh,21px); }
.mv-impeccable .mv-combat[data-combat-art-owner="Infested field"] .mv-combat-counts { top:calc(35% + clamp(14px,23cqh,21px) + 3px); left:24%; right:24%; }
.mv-impeccable .mv-combat[data-combat-art-owner="Infested field"] .mv-combat-leave.mv-cozy-button { top:14%; right:3%; width:15%; height:66%; min-width:44px; min-height:44px; }
.mv-impeccable .mv-combat .mv-toasts.mv-toasts-combat { position: absolute; top: 17%; bottom: auto; left: 50%; right: auto; transform: translateX(-50%); width: min(80%, 300px); }
.mv-impeccable .mv-combat .mv-toasts-combat .mv-toast { background: #204d48; color: #fff0c9; box-shadow: 0 2px 4px #152f2d; border: 1px solid #c8a15b; }
@media (max-height: 640px) {
    .mv-impeccable .mv-combat[data-combat-art-owner="Infested field"] .mv-loc-name-row h2 { top: 25%; font-size: 14px; }
    .mv-impeccable .mv-combat[data-combat-art-owner="Infested field"] .mv-combat-counts { top: calc(25% + 17px); font-size: 9px; }
}
