/* =============================================================
   responsive.css — 响应式与移动端适配
   - 中屏：多列网格折叠
   - 小屏（≤600）：浮层单列化、头部紧凑、移动端 HUD
   保留区域（#game-status / #dream-object-controls）的移动端规则原样迁移。
   所有输入框字号 ≥16px（见 components.css）。
   ============================================================= */

/* ===== 调酒挑战：窄桌面/平板单栏 ===== */
@media (max-width: 980px) {
    #bartending-challenge-panel.ui-overlay {
        align-items: flex-start;
        justify-content: center;
        overflow-y: auto;
    }
    .bartending-shell {
        width: min(96vw, 760px);
        max-height: none;
        margin: 12px auto;
    }
    .bartending-body {
        overflow: visible;
    }
    .bartending-status-deck {
        grid-template-columns: 1fr;
    }
    .bartending-round-console {
        text-align: left;
    }
    .bartending-grid {
        min-height: auto;
        display: flex;
        flex-direction: column;
        grid-template-columns: 1fr;
    }
    .bartending-mixer-panel {
        grid-template-columns: 1fr;
    }
    .bartending-result-panel {
        width: 100%;
        min-height: auto;
    }
    .bartending-ingredient-list {
        max-height: none;
        display: grid;
        grid-template-columns: repeat(2, minmax(0, 1fr));
        overflow: visible;
        padding-right: 0;
    }
    .bartending-slot-board {
        min-height: auto;
        display: grid;
        grid-template-columns: 1fr 1fr;
        gap: 10px;
        padding: 12px;
        overflow: visible;
    }
    .bartending-slot-board::before {
        display: none;
    }
    .bartending-slot {
        position: static;
        width: auto;
        min-height: 66px;
        transform: none;
    }
    .slot-base,
    .slot-flavor,
    .slot-garnish {
        top: auto;
        right: auto;
        bottom: auto;
        left: auto;
    }
    .slot-garnish {
        grid-column: 1 / -1;
    }
    .bartending-shaker {
        position: relative;
        left: auto;
        top: auto;
        grid-column: 1 / -1;
        justify-self: center;
        width: 62px;
        height: 82px;
        transform: rotate(-8deg);
        margin: 2px 0 4px;
    }
}

@media (max-width: 600px) {
    .side-combat-statusbar {
        top: 112px;
        left: 50%;
        right: auto;
        width: calc(100vw - 24px);
        grid-template-columns: 1fr;
        gap: 8px;
        transform: translateX(-50%);
    }
    .side-combat-route {
        top: 13px;
        width: min(360px, calc(100vw - 208px));
        min-width: 210px;
        gap: 1px;
    }
    .side-combat-route > strong {
        font-size: 0.94rem;
    }
    .side-combat-route__map {
        min-height: 28px;
        padding-top: 14px;
    }
    .side-combat-route__pointer {
        top: -12px;
        font-size: 1.18rem;
    }
    .side-combat-route__node {
        min-width: 20px;
        font-size: 0.98rem;
    }
    .side-combat-route__gap {
        min-width: 12px;
        font-size: 0.72rem;
        letter-spacing: 0.1em;
    }
    .side-combat-player {
        top: 90px;
        right: 10px;
        width: min(232px, calc(74vw - 10px));
        min-height: 54px;
        grid-template-columns: minmax(112px, 1fr) 48px;
        gap: 8px;
        padding: 6px 7px 6px 12px;
    }
    .side-combat-player__avatar {
        width: 44px;
        height: 44px;
    }
    .side-combat-player strong {
        font-size: 0.88rem;
    }
    .side-combat-skill {
        width: 48px;
        height: 48px;
        min-height: 48px;
    }
    .side-combat-skill img {
        width: 40px;
        height: 40px;
    }
    .side-combat-enemy-layer {
        top: 37%;
        left: 12px;
        right: 12px;
        justify-content: center;
        gap: 8px;
        min-width: 0;
    }
    .side-combat-enemy {
        width: 108px;
        min-height: 104px;
        padding: 11px 10px;
    }
    .side-combat-enemy--boss {
        width: 158px;
        min-height: 118px;
    }
    .side-combat-sprite-enemy__hud {
        width: min(138px, 88%);
    }
    .side-combat-sprite-enemy__row .side-combat-enemy__name,
    .side-combat-sprite-enemy__row strong {
        font-size: 0.68rem;
    }
    .side-combat-hand {
        bottom: 120px;
        width: calc(100vw - 18px);
        gap: 6px;
    }
    .side-combat-card {
        width: 23vw;
        min-width: 78px;
        max-width: 110px;
        height: 136px;
        padding: 8px;
    }
    .side-combat-card strong {
        margin-top: 9px;
        font-size: 1rem;
    }
    .side-combat-card small {
        min-height: 30px;
        margin-top: 5px;
        font-size: 0.64rem;
    }
    .side-combat-card__top,
    .side-combat-card__value {
        font-size: 0.6rem;
    }
    .side-combat-log {
        left: 12px;
        bottom: 270px;
        width: calc(100vw - 24px);
        min-height: 56px;
        max-height: 94px;
        overflow: hidden;
        font-size: 0.68rem;
    }
    .side-combat-actions {
        right: 12px;
        bottom: 72px;
    }
    .side-combat-round,
    .side-combat-discard {
        left: calc(50% + 33vw);
        bottom: 118px;
        width: 46px;
        height: 46px;
        font-size: 1rem;
    }
    .side-combat-deck-toggle {
        left: calc(50% - 33vw - 46px);
    }
    .side-combat-refresh-round {
        left: calc(50% - 33vw - 98px);
    }
    .side-combat-info-toggle {
        left: 12px;
        top: auto;
        bottom: 118px;
    }
    .side-combat-rule-toggle {
        left: auto;
        right: 12px;
        top: calc(50% - 112px);
        bottom: auto;
        width: 46px;
        height: 46px;
        font-size: 1.28rem;
        transform: translateY(-50%);
    }
    .side-combat-rule-toggle:hover {
        transform: translateY(calc(-50% - 2px));
    }
    .side-combat-rule-toggle::after {
        width: 48px;
        font-size: 0.58rem;
    }
    .side-combat.is-started .side-combat-rule-toggle {
        left: 12px;
        right: auto;
        top: calc(50% - 166px);
        bottom: auto;
    }
    .side-combat-scoreboard-toggle {
        left: auto;
        right: 12px;
        top: calc(50% - 22px);
        bottom: auto;
        width: 46px;
        height: 46px;
        transform: translateY(-50%);
    }
    .side-combat-scoreboard-toggle:hover {
        transform: translateY(-50%);
    }
    .side-combat-discard {
        left: auto;
        right: 80px;
    }
    .side-combat-play-count {
        left: auto;
        right: 6px;
        bottom: 118px;
        min-width: 62px;
        height: 46px;
        padding: 0 10px;
        font-size: 0.94rem;
    }
    .side-combat-archive {
        left: 12px;
        top: 50%;
        gap: 26px;
    }
    .side-combat-archive-toggle {
        width: 46px;
        height: 46px;
    }
    .side-combat-archive-toggle::after {
        width: 48px;
        font-size: 0.58rem;
    }
    .side-combat-archive-db {
        width: 21px;
        height: 25px;
    }
    .side-combat-carry-slots {
        gap: 6px;
        padding: 8px 6px;
    }
    .side-combat-carry-slot {
        width: 36px;
        height: 36px;
        font-size: 0.9rem;
    }
    .side-combat-archive-panel {
        left: 66px;
        width: calc(100vw - 78px);
        max-height: calc(100vh - 122px);
        overflow: auto;
    }
    .side-combat-rule-panel {
        right: 66px;
        width: calc(100vw - 78px);
        max-height: calc(100vh - 122px);
    }
    .side-combat-scoreboard-panel {
        right: 66px;
        top: calc(50% - 22px);
        width: calc(100vw - 78px);
        max-height: calc(100vh - 122px);
    }
    .side-combat.is-started .side-combat-rule-panel {
        left: 66px;
        right: auto;
    }
    .side-combat-archive-grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
        grid-auto-rows: 132px;
        min-height: 0;
    }
    .side-combat-archive-card {
        height: 132px;
    }
    .side-combat-card--archive-cast {
        width: 120px;
        height: 158px;
    }
    .side-combat-actions button {
        min-height: 42px;
        padding: 0 12px;
        font-size: 0.72rem;
    }
    .side-combat-modal__panel {
        padding: 18px;
    }
    .side-combat-modal textarea {
        min-height: 96px;
        font-size: 16px;
    }
}

@media (min-width: 760px) and (max-height: 540px) {
    #side-scroller-adventure.is-side-combat-active .side-scroller-title {
        min-width: 148px;
        padding: 8px 13px;
    }
    #side-scroller-adventure.is-side-combat-active .side-scroller-title span {
        font-size: 0.56rem;
    }
    #side-scroller-adventure.is-side-combat-active .side-scroller-title strong {
        font-size: 0.86rem;
    }
    #side-scroller-adventure.is-side-combat-active .side-scroller-close {
        min-height: 34px;
        padding: 0 14px;
        font-size: 0.78rem;
    }
    #side-scroller-adventure.is-side-combat-active .side-scroller-hint {
        bottom: 12px;
        padding: 7px 15px;
        font-size: 0.72rem;
    }
    #side-scroller-adventure.is-side-combat-active .side-combat-route {
        top: 7px;
        width: min(470px, calc(100vw - 520px));
        min-width: 320px;
        gap: 0;
    }
    #side-scroller-adventure.is-side-combat-active .side-combat-route__map {
        min-height: 24px;
        padding-top: 10px;
    }
    #side-scroller-adventure.is-side-combat-active .side-combat-route__pointer {
        top: -10px;
        font-size: 1rem;
    }
    #side-scroller-adventure.is-side-combat-active .side-combat-route__node {
        min-width: 22px;
        font-size: 1rem;
    }
    #side-scroller-adventure.is-side-combat-active .side-combat-route__gap {
        min-width: 18px;
        font-size: 0.7rem;
        letter-spacing: 0.12em;
    }
    #side-scroller-adventure.is-side-combat-active .side-combat-route > strong {
        font-size: 1rem;
    }
    #side-scroller-adventure.is-side-combat-active .side-combat-score-live {
        margin-top: -10px;
        font-size: 0.62rem;
    }
    #side-scroller-adventure.is-side-combat-active .side-combat-player {
        top: 68px;
        right: 18px;
        width: 232px;
        min-height: 50px;
        grid-template-columns: minmax(112px, 1fr) 46px;
        gap: 8px;
        padding: 5px 7px 5px 12px;
    }
    #side-scroller-adventure.is-side-combat-active .side-combat-player__avatar {
        width: 42px;
        height: 42px;
    }
    #side-scroller-adventure.is-side-combat-active .side-combat-player strong {
        font-size: 0.84rem;
    }
    #side-scroller-adventure.is-side-combat-active .side-combat-hp {
        height: 6px;
        margin-top: 5px;
    }
    #side-scroller-adventure.is-side-combat-active .side-combat-log {
        left: 16px;
        bottom: 158px;
        width: min(430px, 28vw);
        min-height: 54px;
        max-height: 106px;
        padding: 10px 12px;
        overflow: hidden;
        font-size: 0.66rem;
    }
    #side-scroller-adventure.is-side-combat-active .side-combat-hand {
        bottom: 18px;
        width: min(820px, calc(100vw - 520px));
        min-width: 520px;
        gap: 8px;
    }
    #side-scroller-adventure.is-side-combat-active .side-combat-card {
        width: 150px;
        height: 180px;
        min-width: 0;
        padding: 12px;
    }
    #side-scroller-adventure.is-side-combat-active .side-combat-card:nth-child(1) { transform: rotate(-3deg) translateY(5px); }
    #side-scroller-adventure.is-side-combat-active .side-combat-card:nth-child(2) { transform: rotate(-1deg); }
    #side-scroller-adventure.is-side-combat-active .side-combat-card:nth-child(3) { transform: rotate(1deg); }
    #side-scroller-adventure.is-side-combat-active .side-combat-card:nth-child(4) { transform: rotate(3deg) translateY(5px); }
    #side-scroller-adventure.is-side-combat-active .side-combat-card strong {
        margin-top: 12px;
        font-size: 1.08rem;
    }
    #side-scroller-adventure.is-side-combat-active .side-combat-card small {
        min-height: 34px;
        margin-top: 7px;
        font-size: 0.68rem;
        line-height: 1.35;
    }
    #side-scroller-adventure.is-side-combat-active .side-combat-card__top,
    #side-scroller-adventure.is-side-combat-active .side-combat-card__value {
        font-size: 0.62rem;
    }
    #side-scroller-adventure.is-side-combat-active .side-combat-round,
    #side-scroller-adventure.is-side-combat-active .side-combat-discard {
        width: 48px;
        height: 48px;
        bottom: 28px;
        font-size: 1.02rem;
    }
    #side-scroller-adventure.is-side-combat-active .side-combat-deck-toggle {
        left: calc(50% - 340px);
    }
    #side-scroller-adventure.is-side-combat-active .side-combat-refresh-round {
        left: calc(50% - 396px);
    }
    #side-scroller-adventure.is-side-combat-active .side-combat-refresh-tag {
        min-width: 72px;
        padding: 3px 8px;
        font-size: 0.58rem;
    }
    #side-scroller-adventure.is-side-combat-active .side-combat-discard {
        left: auto;
        right: 252px;
    }
    #side-scroller-adventure.is-side-combat-active .side-combat-discard::after {
        min-width: 58px;
        padding: 3px 8px;
        font-size: 0.56rem;
    }
    #side-scroller-adventure.is-side-combat-active .side-combat-play-count {
        left: auto;
        right: 166px;
        bottom: 28px;
        min-width: 66px;
        height: 48px;
        padding: 0 10px;
        font-size: 0.96rem;
    }
    #side-scroller-adventure.is-side-combat-active .side-combat-actions {
        right: 18px;
        bottom: 30px;
    }
    #side-scroller-adventure.is-side-combat-active .side-combat-actions button {
        min-height: 48px;
        padding: 0 15px;
        font-size: 0.78rem;
    }
    #side-scroller-adventure.is-side-combat-active .side-combat-info-toggle {
        left: 18px;
        bottom: 28px;
    }
    #side-scroller-adventure.is-side-combat-active .side-combat-archive {
        left: 18px;
        top: 52%;
        gap: 14px;
    }
    #side-scroller-adventure.is-side-combat-active .side-combat-archive-toggle,
    #side-scroller-adventure.is-side-combat-active .side-combat-rule-toggle,
    #side-scroller-adventure.is-side-combat-active .side-combat-scoreboard-toggle {
        width: 48px;
        height: 48px;
    }
    #side-scroller-adventure.is-side-combat-active .side-combat-archive-toggle::after,
    #side-scroller-adventure.is-side-combat-active .side-combat-rule-toggle::after {
        width: 54px;
        font-size: 0.56rem;
    }
    #side-scroller-adventure.is-side-combat-active .side-combat-carry-slots {
        gap: 6px;
        padding: 8px 6px;
    }
    #side-scroller-adventure.is-side-combat-active .side-combat-carry-slot {
        width: 36px;
        height: 36px;
        font-size: 0.88rem;
    }
    #side-scroller-adventure.is-side-combat-active .side-combat-rule-toggle {
        right: 18px;
        top: calc(50% - 118px);
    }
    #side-scroller-adventure.is-side-combat-active .side-combat-scoreboard-toggle {
        right: 18px;
        top: calc(50% - 18px);
    }
    #side-scroller-adventure.is-side-combat-active .side-combat.is-started .side-combat-rule-toggle {
        left: 18px;
        top: calc(50% - 156px);
        right: auto;
    }
    #side-scroller-adventure.is-side-combat-active .side-combat-skill {
        width: 44px;
        height: 44px;
        min-height: 44px;
    }
    #side-scroller-adventure.is-side-combat-active .side-combat-skill img {
        width: 38px;
        height: 38px;
    }
    #side-scroller-adventure.is-side-combat-active .side-combat-skill span {
        min-width: 18px;
        height: 18px;
        font-size: 0.62rem;
    }
    #side-scroller-adventure.is-side-combat-active .side-combat-sprite-enemy__hud {
        width: min(150px, 92%);
    }
    #side-scroller-adventure.is-side-combat-active .side-combat-sprite-enemy__row .side-combat-enemy__name,
    #side-scroller-adventure.is-side-combat-active .side-combat-sprite-enemy__row strong {
        font-size: 0.68rem;
    }
    #side-scroller-adventure.is-side-combat-active .side-combat-sprite-enemy__hp-track {
        height: 4px;
    }
    #side-scroller-adventure.is-side-combat-active .side-combat-modal {
        inset: 54px 0 0;
        padding: 10px;
        align-items: start;
        justify-items: center;
    }
    #side-scroller-adventure.is-side-combat-active .side-combat-modal__panel {
        width: min(520px, calc(100vw - 240px));
        max-height: calc(100vh - 76px);
        overflow: auto;
        padding: 18px 22px;
    }
    #side-scroller-adventure.is-side-combat-active .side-combat-modal__eyebrow {
        font-size: 0.68rem;
    }
    #side-scroller-adventure.is-side-combat-active .side-combat-modal h2 {
        margin: 6px 0 8px;
        font-size: 1.18rem;
    }
    #side-scroller-adventure.is-side-combat-active .side-combat-modal p {
        margin-bottom: 10px;
        font-size: 0.76rem;
        line-height: 1.45;
    }
    #side-scroller-adventure.is-side-combat-active .side-combat-difficulty {
        grid-template-columns: 42px minmax(120px, 1fr) 42px;
        gap: 10px;
        width: min(294px, 100%);
        margin: 4px auto 10px;
    }
    #side-scroller-adventure.is-side-combat-active .side-combat-modal .side-combat-difficulty__arrow {
        width: 42px;
        height: 42px;
        min-height: 42px;
        font-size: 2rem;
    }
    #side-scroller-adventure.is-side-combat-active .side-combat-difficulty strong {
        font-size: 0.98rem;
    }
    #side-scroller-adventure.is-side-combat-active .side-combat-difficulty__text span {
        font-size: 0.68rem;
    }
    #side-scroller-adventure.is-side-combat-active .side-combat-modal textarea {
        min-height: 76px;
        padding: 10px 12px;
        font-size: 0.88rem;
    }
    #side-scroller-adventure.is-side-combat-active .side-combat-modal button {
        min-height: 36px;
        margin-top: 10px;
        padding: 0 15px;
        font-size: 0.78rem;
    }
    #side-scroller-adventure.is-side-combat-active .side-combat-archive-panel,
    #side-scroller-adventure.is-side-combat-active .side-combat-rule-panel,
    #side-scroller-adventure.is-side-combat-active .side-combat-scoreboard-panel {
        max-height: calc(100vh - 72px);
        overflow: hidden;
        padding: 12px;
    }
    #side-scroller-adventure.is-side-combat-active .side-combat-archive-panel {
        left: 84px;
        width: min(500px, calc(100vw - 180px));
    }
    #side-scroller-adventure.is-side-combat-active .side-combat-rule-panel {
        right: 84px;
        width: min(390px, calc(100vw - 180px));
    }
    #side-scroller-adventure.is-side-combat-active .side-combat.is-started .side-combat-rule-panel {
        left: 84px;
        right: auto;
    }
    #side-scroller-adventure.is-side-combat-active .side-combat-scoreboard-panel {
        right: 84px;
        width: min(330px, calc(100vw - 180px));
    }
    #side-scroller-adventure.is-side-combat-active .side-combat-archive-grid {
        grid-auto-rows: 112px;
        min-height: 0;
        gap: 8px;
        margin: 10px 0;
    }
    #side-scroller-adventure.is-side-combat-active .side-combat-archive-card {
        height: 112px;
        gap: 5px;
        padding: 9px 34px 9px 10px;
    }
    #side-scroller-adventure.is-side-combat-active .side-combat-archive-card strong {
        font-size: 0.9rem;
    }
    #side-scroller-adventure.is-side-combat-active .side-combat-archive-card small,
    #side-scroller-adventure.is-side-combat-active .side-combat-archive-card em,
    #side-scroller-adventure.is-side-combat-active .side-combat-deck-item span {
        font-size: 0.62rem;
    }
    #side-scroller-adventure.is-side-combat-active .side-combat-rule-content,
    #side-scroller-adventure.is-side-combat-active .side-combat-scoreboard-list {
        font-size: 0.74rem;
    }
    #side-scroller-adventure.is-side-combat-active .side-combat-tooltip--deck {
        max-height: calc(100vh - 92px);
    }
    #side-scroller-adventure.is-side-combat-active .side-combat-deck-list {
        max-height: calc(100vh - 158px);
    }
}

#side-scroller-adventure.is-side-combat-compact-wide .side-combat-route {
    top: calc(7px * var(--side-combat-ui-scale, 1));
    width: min(calc(470px * var(--side-combat-ui-scale, 1)), calc(100vw - 520px));
}

#side-scroller-adventure.is-side-combat-compact-wide .side-combat-route__map {
    min-height: calc(24px * var(--side-combat-ui-scale, 1));
    padding-top: calc(10px * var(--side-combat-ui-scale, 1));
}

#side-scroller-adventure.is-side-combat-compact-wide .side-combat-route__pointer {
    top: calc(-10px * var(--side-combat-ui-scale, 1));
    font-size: calc(1rem * var(--side-combat-ui-scale, 1));
}

#side-scroller-adventure.is-side-combat-compact-wide .side-combat-route__node {
    min-width: calc(22px * var(--side-combat-ui-scale, 1));
    font-size: calc(1rem * var(--side-combat-ui-scale, 1));
}

#side-scroller-adventure.is-side-combat-compact-wide .side-combat-route__gap {
    min-width: calc(18px * var(--side-combat-ui-scale, 1));
    font-size: calc(0.7rem * var(--side-combat-ui-scale, 1));
    letter-spacing: calc(0.12em * var(--side-combat-ui-scale, 1));
}

#side-scroller-adventure.is-side-combat-compact-wide .side-combat-route > strong {
    margin-top: calc(4px * var(--side-combat-ui-scale, 1));
    font-size: calc(1rem * var(--side-combat-ui-scale, 1));
}

#side-scroller-adventure.is-side-combat-compact-wide .side-combat-score-live {
    margin-top: calc(-3px * var(--side-combat-ui-scale, 1));
    font-size: calc(0.62rem * var(--side-combat-ui-scale, 1));
}

#side-scroller-adventure.is-side-combat-compact-wide .side-combat-hand {
    bottom: calc(12px + 6px * var(--side-combat-ui-scale, 1));
    width: min(calc(820px * var(--side-combat-ui-scale, 1)), calc(100vw - 520px));
    min-width: min(520px, calc(100vw - 760px));
    gap: calc(8px * var(--side-combat-ui-scale, 1));
}

#side-scroller-adventure.is-side-combat-compact-wide .side-combat-card {
    width: calc(150px * var(--side-combat-ui-scale, 1));
    height: calc(180px * var(--side-combat-ui-scale, 1));
    padding: calc(12px * var(--side-combat-ui-scale, 1));
}

#side-scroller-adventure.is-side-combat-compact-wide .side-combat-card strong {
    margin-top: calc(12px * var(--side-combat-ui-scale, 1));
    font-size: calc(1.08rem * var(--side-combat-ui-scale, 1));
}

#side-scroller-adventure.is-side-combat-compact-wide .side-combat-card small {
    min-height: calc(34px * var(--side-combat-ui-scale, 1));
    margin-top: calc(7px * var(--side-combat-ui-scale, 1));
    font-size: calc(0.68rem * var(--side-combat-ui-scale, 1));
}

#side-scroller-adventure.is-side-combat-compact-wide .side-combat-card__top,
#side-scroller-adventure.is-side-combat-compact-wide .side-combat-card__value {
    font-size: calc(0.62rem * var(--side-combat-ui-scale, 1));
}

#side-scroller-adventure.is-side-combat-compact-wide .side-combat-card__value {
    left: calc(12px * var(--side-combat-ui-scale, 1));
    right: calc(12px * var(--side-combat-ui-scale, 1));
    bottom: calc(12px * var(--side-combat-ui-scale, 1));
    padding-top: calc(10px * var(--side-combat-ui-scale, 1));
}

#side-scroller-adventure.is-side-combat-compact-wide .side-combat-round,
#side-scroller-adventure.is-side-combat-compact-wide .side-combat-discard {
    width: calc(48px * var(--side-combat-ui-scale, 1));
    height: calc(48px * var(--side-combat-ui-scale, 1));
    bottom: calc(18px + 10px * var(--side-combat-ui-scale, 1));
    font-size: calc(1.02rem * var(--side-combat-ui-scale, 1));
}

#side-scroller-adventure.is-side-combat-compact-wide .side-combat-refresh-round {
    left: calc(50% - 396px * var(--side-combat-ui-scale, 1));
}

#side-scroller-adventure.is-side-combat-compact-wide .side-combat-deck-toggle {
    left: calc(50% - 340px * var(--side-combat-ui-scale, 1));
}

#side-scroller-adventure.is-side-combat-compact-wide .side-combat-info-toggle {
    left: calc(18px * var(--side-combat-ui-scale, 1));
    bottom: calc(18px + 10px * var(--side-combat-ui-scale, 1));
}

#side-scroller-adventure.is-side-combat-compact-wide .side-combat-archive {
    left: calc(18px * var(--side-combat-ui-scale, 1));
    gap: calc(14px * var(--side-combat-ui-scale, 1));
    transform: translateY(-50%) scale(var(--side-combat-ui-scale, 1));
    transform-origin: left center;
}

#side-scroller-adventure.is-side-combat-compact-wide .side-combat-play-count {
    right: calc(166px * var(--side-combat-ui-scale, 1));
    bottom: calc(18px + 10px * var(--side-combat-ui-scale, 1));
    min-width: calc(66px * var(--side-combat-ui-scale, 1));
    height: calc(48px * var(--side-combat-ui-scale, 1));
    padding: 0 calc(10px * var(--side-combat-ui-scale, 1));
    font-size: calc(0.96rem * var(--side-combat-ui-scale, 1));
}

#side-scroller-adventure.is-side-combat-compact-wide .side-combat-discard {
    right: calc(252px * var(--side-combat-ui-scale, 1));
}

#side-scroller-adventure.is-side-combat-compact-wide .side-combat-actions {
    right: calc(18px * var(--side-combat-ui-scale, 1));
    bottom: calc(20px + 10px * var(--side-combat-ui-scale, 1));
}

#side-scroller-adventure.is-side-combat-compact-wide .side-combat-actions button {
    min-height: calc(48px * var(--side-combat-ui-scale, 1));
    padding: 0 calc(15px * var(--side-combat-ui-scale, 1));
    font-size: calc(0.78rem * var(--side-combat-ui-scale, 1));
}

#side-scroller-adventure.is-side-combat-compact-wide .side-combat-player {
    top: calc(68px * var(--side-combat-ui-scale, 1));
    right: calc(18px * var(--side-combat-ui-scale, 1));
    width: calc(232px * var(--side-combat-ui-scale, 1));
    min-height: calc(50px * var(--side-combat-ui-scale, 1));
    grid-template-columns: minmax(calc(104px * var(--side-combat-ui-scale, 1)), 1fr) calc(46px * var(--side-combat-ui-scale, 1));
    gap: calc(8px * var(--side-combat-ui-scale, 1));
    padding: calc(5px * var(--side-combat-ui-scale, 1)) calc(7px * var(--side-combat-ui-scale, 1)) calc(5px * var(--side-combat-ui-scale, 1)) calc(12px * var(--side-combat-ui-scale, 1));
}

#side-scroller-adventure.is-side-combat-compact-wide .side-combat-player__avatar {
    width: calc(42px * var(--side-combat-ui-scale, 1));
    height: calc(42px * var(--side-combat-ui-scale, 1));
}

#side-scroller-adventure.is-side-combat-compact-wide .side-combat-player strong {
    font-size: calc(0.84rem * var(--side-combat-ui-scale, 1));
}

#side-scroller-adventure.is-side-combat-compact-wide .side-combat-hp {
    height: max(4px, calc(6px * var(--side-combat-ui-scale, 1)));
    margin-top: calc(5px * var(--side-combat-ui-scale, 1));
}

#side-scroller-adventure.is-side-combat-extreme-wide .side-combat-route {
    top: 4px;
    width: min(430px, calc(100vw - 650px));
    min-width: 300px;
    z-index: 346;
}

#side-scroller-adventure.is-side-combat-extreme-wide .side-combat-route__map {
    min-height: 20px;
    padding-top: 8px;
}

#side-scroller-adventure.is-side-combat-extreme-wide .side-combat-route > strong {
    margin-top: 2px;
    font-size: 0.9rem;
    line-height: 1;
}

#side-scroller-adventure.is-side-combat-extreme-wide .side-combat-score-live {
    margin-top: 4px;
    font-size: 0.6rem;
    line-height: 1;
}

#side-scroller-adventure.is-side-combat-extreme-wide .side-combat-player {
    top: 74px;
    left: 50%;
    right: auto;
    width: min(240px, calc(100vw - 820px));
    min-width: 168px;
    min-height: 34px;
    grid-template-columns: 1fr;
    justify-items: center;
    padding: 6px 12px;
    transform: translateX(-50%);
}

#side-scroller-adventure.is-side-combat-extreme-wide .side-combat-player__meta {
    width: 100%;
    justify-items: center;
}

#side-scroller-adventure.is-side-combat-extreme-wide .side-combat-player strong {
    width: 100%;
    text-align: center;
    font-size: 0.78rem;
}

#side-scroller-adventure.is-side-combat-extreme-wide .side-combat-player__avatar,
#side-scroller-adventure.is-side-combat-extreme-wide #side-combat-player-status {
    display: none;
}

#side-scroller-adventure.is-side-combat-extreme-wide .side-combat-hp {
    width: 100%;
    height: 5px;
    margin-top: 4px;
}

#side-scroller-adventure.is-side-combat-extreme-wide .side-combat-hand {
    bottom: 8px;
    width: min(calc(760px * var(--side-combat-ui-scale, 1)), calc(100vw - 620px));
}

#side-scroller-adventure.is-side-combat-extreme-wide .side-combat-card {
    width: calc(142px * var(--side-combat-ui-scale, 1));
    height: calc(170px * var(--side-combat-ui-scale, 1));
}

#side-scroller-adventure.is-side-combat-extreme-wide .side-combat-info-toggle {
    left: calc(16px * var(--side-combat-ui-scale, 1));
}

#side-scroller-adventure.is-side-combat-extreme-wide .side-combat-archive {
    left: calc(16px * var(--side-combat-ui-scale, 1));
    top: 51%;
}

#side-scroller-adventure.is-side-combat-extreme-wide .side-combat-refresh-round {
    left: calc(50% - 330px * var(--side-combat-ui-scale, 1));
}

#side-scroller-adventure.is-side-combat-extreme-wide .side-combat-deck-toggle {
    left: calc(50% - 276px * var(--side-combat-ui-scale, 1));
}

#side-scroller-adventure.is-side-combat-extreme-wide .side-combat-discard {
    right: calc(210px * var(--side-combat-ui-scale, 1));
}

#side-scroller-adventure.is-side-combat-extreme-wide .side-combat-play-count {
    right: calc(130px * var(--side-combat-ui-scale, 1));
}

#side-scroller-adventure.is-side-combat-extreme-wide .side-combat-actions {
    right: calc(12px * var(--side-combat-ui-scale, 1));
}

#side-scroller-adventure.is-side-combat-compact-wide .side-combat-route {
    top: var(--side-combat-route-top);
    width: min(var(--side-combat-route-width), calc(100vw - 520px));
}

#side-scroller-adventure.is-side-combat-compact-wide .side-combat-route__map {
    min-height: var(--side-combat-route-map-height);
    padding-top: var(--side-combat-route-map-pad);
}

#side-scroller-adventure.is-side-combat-compact-wide .side-combat-route__pointer {
    top: var(--side-combat-route-pointer-top);
    font-size: var(--side-combat-route-pointer-font);
}

#side-scroller-adventure.is-side-combat-compact-wide .side-combat-route__node {
    min-width: var(--side-combat-route-node-width);
    font-size: var(--side-combat-route-node-font);
}

#side-scroller-adventure.is-side-combat-compact-wide .side-combat-route__gap {
    min-width: var(--side-combat-route-gap-width);
    font-size: var(--side-combat-route-gap-font);
}

#side-scroller-adventure.is-side-combat-compact-wide .side-combat-route > strong {
    font-size: var(--side-combat-route-title-font);
}

#side-scroller-adventure.is-side-combat-compact-wide .side-combat-score-live {
    margin-top: 2px;
    font-size: var(--side-combat-score-font);
}

#side-scroller-adventure.is-side-combat-compact-wide .side-combat-hand {
    width: min(var(--side-combat-hand-width), calc(100vw - 520px));
    gap: var(--side-combat-player-gap);
}

#side-scroller-adventure.is-side-combat-compact-wide .side-combat-card {
    width: var(--side-combat-card-width);
    height: var(--side-combat-card-height);
    padding: var(--side-combat-card-pad);
}

#side-scroller-adventure.is-side-combat-compact-wide .side-combat-card strong {
    margin-top: var(--side-combat-card-title-gap);
    font-size: var(--side-combat-card-title-font);
}

#side-scroller-adventure.is-side-combat-compact-wide .side-combat-card small {
    min-height: var(--side-combat-card-copy-height);
    margin-top: var(--side-combat-card-copy-gap);
    font-size: var(--side-combat-card-copy-font);
}

#side-scroller-adventure.is-side-combat-compact-wide .side-combat-card__top,
#side-scroller-adventure.is-side-combat-compact-wide .side-combat-card__value {
    font-size: var(--side-combat-card-meta-font);
}

#side-scroller-adventure.is-side-combat-compact-wide .side-combat-card__value {
    left: var(--side-combat-card-pad);
    right: var(--side-combat-card-pad);
    bottom: var(--side-combat-card-pad);
    padding-top: var(--side-combat-card-value-gap);
}

#side-scroller-adventure.is-side-combat-compact-wide .side-combat-round,
#side-scroller-adventure.is-side-combat-compact-wide .side-combat-discard {
    width: var(--side-combat-round-size);
    height: var(--side-combat-round-size);
    font-size: var(--side-combat-round-font);
}

#side-scroller-adventure.is-side-combat-compact-wide .side-combat-refresh-round {
    left: calc(50% - var(--side-combat-refresh-x));
}

#side-scroller-adventure.is-side-combat-compact-wide .side-combat-deck-toggle {
    left: calc(50% - var(--side-combat-deck-x));
}

#side-scroller-adventure.is-side-combat-compact-wide .side-combat-info-toggle,
#side-scroller-adventure.is-side-combat-compact-wide .side-combat-archive {
    left: var(--side-combat-side-x);
}

#side-scroller-adventure.is-side-combat-compact-wide .side-combat-archive {
    gap: var(--side-combat-side-gap);
}

#side-scroller-adventure.is-side-combat-compact-wide .side-combat-play-count {
    right: var(--side-combat-play-right);
    min-width: var(--side-combat-play-width);
    height: var(--side-combat-round-size);
    font-size: var(--side-combat-play-font);
}

#side-scroller-adventure.is-side-combat-compact-wide .side-combat-discard {
    right: var(--side-combat-discard-right);
}

#side-scroller-adventure.is-side-combat-compact-wide .side-combat-actions {
    right: var(--side-combat-actions-right);
}

#side-scroller-adventure.is-side-combat-compact-wide .side-combat-actions button {
    min-height: var(--side-combat-round-size);
    font-size: var(--side-combat-action-font);
}

#side-scroller-adventure.is-side-combat-compact-wide .side-combat-player {
    top: var(--side-combat-player-top);
    right: var(--side-combat-player-right);
    width: var(--side-combat-player-width);
    min-height: var(--side-combat-player-height);
    grid-template-columns: minmax(var(--side-combat-player-text-column), 1fr) var(--side-combat-player-avatar-column);
    gap: var(--side-combat-player-gap);
    padding: var(--side-combat-player-pad-y) var(--side-combat-player-pad-x) var(--side-combat-player-pad-y) var(--side-combat-player-pad-left);
}

#side-scroller-adventure.is-side-combat-compact-wide .side-combat-player__avatar {
    width: var(--side-combat-player-avatar);
    height: var(--side-combat-player-avatar);
}

#side-scroller-adventure.is-side-combat-compact-wide .side-combat-player strong {
    font-size: var(--side-combat-player-font);
}

#side-scroller-adventure.is-side-combat-compact-wide .side-combat-hp {
    margin-top: var(--side-combat-hp-gap);
}

#side-scroller-adventure.is-side-combat-extreme-wide .side-combat-hand {
    width: min(var(--side-combat-hand-width), calc(100vw - 620px));
}

#side-scroller-adventure.is-side-combat-extreme-wide .side-combat-card {
    width: calc(var(--side-combat-card-width) - 8px);
    height: calc(var(--side-combat-card-height) - 10px);
}

#side-scroller-adventure.is-side-combat-extreme-wide .side-combat-refresh-round {
    left: calc(50% - 350px);
}

#side-scroller-adventure.is-side-combat-extreme-wide .side-combat-deck-toggle {
    left: calc(50% - 296px);
}

#side-scroller-adventure.is-side-combat-extreme-wide .side-combat-discard {
    right: 228px;
}

#side-scroller-adventure.is-side-combat-extreme-wide .side-combat-play-count {
    right: 146px;
}

#side-scroller-adventure.is-side-combat-extreme-wide .side-combat-actions {
    right: 12px;
}

@media (min-width: 760px) and (max-height: 420px) {
    #side-scroller-adventure.is-side-combat-active .side-scroller-title {
        min-width: 132px;
        padding: 6px 11px;
    }
    #side-scroller-adventure.is-side-combat-active .side-scroller-close {
        min-height: 30px;
        padding: 0 12px;
        font-size: 0.72rem;
    }
    #side-scroller-adventure.is-side-combat-active .side-combat-route {
        top: 4px;
        width: min(410px, calc(100vw - 560px));
        min-width: 260px;
    }
    #side-scroller-adventure.is-side-combat-active .side-combat-player {
        top: 58px;
        width: 210px;
        min-height: 44px;
        grid-template-columns: minmax(100px, 1fr) 38px;
    }
    #side-scroller-adventure.is-side-combat-active .side-combat-player__avatar {
        width: 36px;
        height: 36px;
    }
    #side-scroller-adventure.is-side-combat-active .side-combat-hand {
        bottom: 10px;
        width: min(690px, calc(100vw - 610px));
        min-width: 440px;
    }
    #side-scroller-adventure.is-side-combat-active .side-combat-card {
        width: 128px;
        height: 150px;
        padding: 10px;
    }
    #side-scroller-adventure.is-side-combat-active .side-combat-card strong {
        margin-top: 8px;
        font-size: 0.94rem;
    }
    #side-scroller-adventure.is-side-combat-active .side-combat-card small {
        min-height: 28px;
        margin-top: 5px;
        font-size: 0.6rem;
    }
    #side-scroller-adventure.is-side-combat-active .side-combat-log {
        bottom: 126px;
        width: min(360px, 27vw);
        max-height: 82px;
        font-size: 0.6rem;
    }
    #side-scroller-adventure.is-side-combat-active .side-combat-actions,
    #side-scroller-adventure.is-side-combat-active .side-combat-round,
    #side-scroller-adventure.is-side-combat-active .side-combat-discard,
    #side-scroller-adventure.is-side-combat-active .side-combat-play-count {
        bottom: 16px;
    }
    #side-scroller-adventure.is-side-combat-active .side-combat-modal {
        inset: 48px 0 0;
    }
    #side-scroller-adventure.is-side-combat-active .side-combat-modal__panel {
        width: min(480px, calc(100vw - 260px));
        max-height: calc(100vh - 62px);
        padding: 14px 20px;
    }
    #side-scroller-adventure.is-side-combat-active .side-combat-modal textarea {
        min-height: 58px;
    }
    #side-scroller-adventure.is-side-combat-active .side-combat-archive {
        gap: 10px;
    }
    #side-scroller-adventure.is-side-combat-active .side-combat-carry-slot {
        width: 32px;
        height: 32px;
    }
    #side-scroller-adventure.is-side-combat-active .side-combat-archive-panel,
    #side-scroller-adventure.is-side-combat-active .side-combat-rule-panel,
    #side-scroller-adventure.is-side-combat-active .side-combat-scoreboard-panel {
        max-height: calc(100vh - 58px);
    }
    #side-scroller-adventure.is-side-combat-active .side-combat-archive-grid {
        grid-auto-rows: 96px;
    }
    #side-scroller-adventure.is-side-combat-active .side-combat-archive-card {
        height: 96px;
    }
    #side-scroller-adventure.is-side-combat-active .side-combat-tooltip--deck {
        max-height: calc(100vh - 70px);
    }
    #side-scroller-adventure.is-side-combat-active .side-combat-deck-list {
        max-height: calc(100vh - 128px);
    }
}

/* ===== 中屏：造梦双栏折叠 ===== */
@media (max-width: 820px) {
    .dream-grid { grid-template-columns: 1fr; }
    #dream-furniture-description { min-height: 200px; }
    .settings-shell { height: 94vh; }
    .settings-body { grid-template-columns: 1fr; }
    .settings-nav {
        border-right: 0;
        padding: 16px;
        display: grid;
        grid-template-columns: 1fr;
        align-content: start;
    }
    .settings-nav-item {
        min-height: 58px;
        grid-template-columns: 54px minmax(0, 1fr);
        justify-items: start;
        text-align: left;
        padding-inline: 12px;
    }
    #settings-panel.is-detail .settings-nav { display: none; }
    #settings-panel:not(.is-detail) .settings-view { display: none; }
    #settings-panel.is-detail .settings-view.active { display: flex; }
    #settings-panel.is-detail .settings-view[data-settings-view="knowledge"].active {
        display: block;
        height: 100%;
        min-height: 0;
        overflow-y: auto;
        overflow-x: hidden;
    }
    #settings-panel.is-detail .settings-view[data-settings-view="advanced"].active {
        display: block;
        height: 100%;
        min-height: 0;
        overflow-y: auto;
        overflow-x: hidden;
    }
    #settings-panel.is-detail .settings-view[data-settings-view="resources"].active {
        display: block;
        height: 100%;
        min-height: 0;
        overflow-y: auto;
        overflow-x: hidden;
    }
    .settings-back-btn {
        display: inline-flex;
        align-self: flex-start;
        margin: 12px 16px 0;
        min-height: 34px;
        padding: 6px 12px;
        font-size: 0.78rem;
    }
    .settings-view[data-settings-view="knowledge"] {
        overflow-y: auto;
        overflow-x: hidden;
    }
    .settings-view[data-settings-view="advanced"] {
        overflow-y: auto;
        overflow-x: hidden;
    }
    .settings-view[data-settings-view="resources"] {
        overflow-y: auto;
        overflow-x: hidden;
    }
    .knowledge-workbench {
        display: block;
        flex: none;
        grid-template-columns: 1fr;
        min-height: auto;
        overflow: visible;
    }
    .kb-main,
    .kb-detail {
        display: block;
        min-height: auto;
        overflow: visible;
    }
    .kb-sidebar {
        border-right: 0;
        border-bottom: 1px solid var(--panel-line);
        max-height: 210px;
    }
    .kb-list { flex-direction: row; overflow-x: auto; overflow-y: hidden; }
    .kb-list-item { min-width: 190px; }
    .kb-management-grid {
        grid-template-columns: 1fr;
        min-height: auto;
        overflow: visible;
    }
    .kb-upload-console { grid-template-columns: 1fr; }
    .kb-actions { justify-content: flex-start; }
    .settings-site-link { display: none; }
    .kb-files-panel,
    .kb-chunks-panel {
        min-height: 0;
        cursor: pointer;
    }
    .kb-files-panel .kb-panel-label,
    .kb-chunks-panel .kb-panel-label {
        min-height: 44px;
        border-bottom: 0;
    }
    .kb-files-panel .kb-panel-label::after,
    .kb-chunks-panel .kb-panel-label::after {
        content: "展开";
        color: var(--c-gold-deep);
        font-size: 0.68rem;
        font-weight: 800;
        letter-spacing: 0.08em;
    }
    .kb-files-panel.is-expanded .kb-panel-label,
    .kb-chunks-panel.is-expanded .kb-panel-label {
        border-bottom: 1px solid var(--panel-line);
    }
    .kb-files-panel.is-expanded .kb-panel-label::after,
    .kb-chunks-panel.is-expanded .kb-panel-label::after {
        content: "收起";
    }
    .kb-files-panel:not(.is-expanded) .kb-file-list,
    .kb-chunks-panel:not(.is-expanded) .kb-chunk-list {
        display: none;
    }
    .kb-files-panel.is-expanded,
    .kb-chunks-panel.is-expanded {
        min-height: 220px;
        cursor: default;
    }
    .kb-files-panel.is-expanded .kb-file-list,
    .kb-chunks-panel.is-expanded .kb-chunk-list {
        max-height: min(42vh, 360px);
        overflow-y: auto;
    }
    .roundtable-shell { height: 94vh; }
    .roundtable-setup-grid { grid-template-columns: 1fr; overflow-y: auto; }
    .roundtable-participant-list { max-height: 330px; }
    .roundtable-chat-layout { grid-template-columns: 1fr; grid-template-rows: auto minmax(0, 1fr); }
    .roundtable-roster { min-height: auto; cursor: pointer; }
    .roundtable-participant-strip {
        display: flex;
        overflow-x: auto;
        overflow-y: hidden;
        padding-bottom: 10px;
    }
    .roundtable-strip-member { min-width: 128px; }
    .roundtable-roster-actions { margin: 0 12px 12px; justify-content: flex-start; }
    .roundtable-mini-picker--members {
        left: 0;
        right: auto;
        transform: none;
    }
}

/* ===== 小屏 ===== */
@media (max-width: 600px) {
    body.side-scroller-active #touch-controls { display: none !important; }
    .side-scroller-topbar {
        top: 12px;
        left: 12px;
        right: 12px;
        gap: 10px;
    }
    .side-scroller-title {
        min-width: 132px;
        padding: 9px 12px;
        border-radius: var(--r-md);
    }
    .side-scroller-title span { font-size: 0.58rem; }
    .side-scroller-title strong { font-size: 0.9rem; }
    .side-scroller-close {
        min-height: 38px;
        padding: 0 14px;
        font-size: 0.82rem;
    }
    .side-scroller-hint {
        bottom: 16px;
        max-width: calc(100vw - 28px);
        white-space: normal;
        text-align: center;
        font-size: 0.76rem;
    }
    .side-scroller-touch {
        display: flex;
        bottom: 64px;
    }
    .side-scroller-touch-btn {
        width: 66px;
        height: 66px;
    }

    /* 保留区域：左上游戏状态（原样迁移） */
    #game-status {
        top: 10px;
        left: 10px;
        min-width: 132px;
        padding: 8px 10px;
    }
    #game-time-display { font-size: 0.82rem; }
    #money-display,
    #affinity-display,
    #salary-toast { font-size: 0.74rem; }

    /* 成就 toast host */
    #achievement-toast-host { right: 12px; bottom: 12px; }

    /* overlay 与浮层尺寸 */
    .ui-overlay { padding: 12px; }
    .otome-panel--sm,
    .otome-panel--md,
    .otome-panel--lg,
    .otome-panel--xl {
        width: 96vw;
        max-height: 92vh;
    }

    /* 头部紧凑 + 关闭按钮绝对定位，避免换行错乱 */
    .otome-panel__head {
        position: relative;
        gap: 12px;
        padding: 16px 56px 16px 16px;
    }
    .otome-panel__icon { width: 44px; height: 44px; }
    .otome-panel__icon img { width: 26px; height: 26px; }
    .otome-panel__title { font-size: 1.3rem; }
    .otome-panel__sub { font-size: 0.78rem; }
    .otome-panel__close { position: absolute; top: 12px; right: 12px; }
    .otome-panel__body { padding: var(--sp-4); }
    .otome-panel__foot { padding: var(--sp-3) var(--sp-4); }

    .settings-shell {
        height: 94vh;
        max-height: 94vh;
    }
    .settings-body { padding: 0; }
    .settings-head .otome-panel__title { font-size: 1.24rem; }
    .settings-foot {
        display: grid;
        grid-template-columns: 1fr;
        align-items: stretch;
    }
    .settings-foot span {
        text-align: center;
        font-size: 0.72rem;
    }
    .settings-view-head { padding: 14px 16px 10px; }
    .settings-form-grid { padding: 14px 16px; }
    .settings-note-card,
    .settings-api-card,
    .settings-intimate-card {
        margin: 0 16px 16px;
        width: calc(100% - 32px);
    }
    .settings-control-panel { padding: 14px 16px; }
    .settings-slider-row {
        grid-template-columns: minmax(0, 1fr);
        gap: 8px;
    }
    .settings-slider-row em {
        justify-self: start;
    }
    .advanced-settings-page {
        padding: 12px 14px 18px;
        gap: 10px;
    }
    .advanced-settings-toolbar {
        position: static;
        grid-template-columns: 1fr;
        gap: 8px;
        padding: 10px 11px;
    }
    .advanced-settings-toolbar p {
        font-size: 0.8rem;
    }
    .advanced-settings-toolbar .btn {
        justify-self: start;
    }
    .advanced-settings-group h3 {
        padding: 9px 11px;
    }
    .advanced-setting-row {
        grid-template-columns: minmax(0, 1fr);
        gap: 7px;
        padding: 9px 11px;
    }
    .advanced-setting-copy label {
        font-size: 0.8rem;
    }
    .advanced-setting-copy small {
        font-size: 0.7rem;
    }
    .advanced-setting-control {
        grid-template-columns: auto minmax(0, 1fr);
        gap: 8px;
    }
    .advanced-setting-control input[type="number"] {
        min-height: 34px;
        padding-block: 4px;
        font-size: 16px;
    }
    .settings-foot-actions {
        display: grid;
        grid-template-columns: 1fr;
    }
    .settings-resources-page {
        padding: 22px 16px 28px;
        gap: 10px;
    }
    .settings-resources-logo-wrap {
        width: min(150px, 46vw);
    }
    .settings-resource-links {
        width: 100%;
        gap: 8px;
    }
    .settings-resource-link {
        flex: 1 1 145px;
        min-width: 0;
        padding-inline: 10px;
    }
    .kb-detail-head {
        display: grid;
        grid-template-columns: 1fr;
        padding: 12px 14px 10px;
    }
    .kb-status { padding-inline: 14px; }
    .kb-upload-console { margin-inline: 14px; }
    .kb-management-grid { padding: 0 14px 14px; }
    .kb-file-card { grid-template-columns: minmax(0, 1fr); }
    .kb-danger-mini { justify-self: start; }

    /* 成就 */
    #achievement-list { grid-template-columns: 1fr; }
    .achievements-summary span { font-size: 1.25rem; }

    /* 对话框 */
    #dialogue-box { padding: 16px 20px 20px; }
    #dialogue-text-area { max-height: 32vh; }
    .chat-bubble { max-width: 88%; }
    .msg-text { font-size: 0.95rem; }
    #dialogue-input { padding: 10px 14px; }

    /* 历史 */
    .history-toolbar { padding: var(--sp-3) var(--sp-4); }
    .history-toolbar .custom-select { margin-left: 0; }
    #history-list, #date-history-list, #bar-history-list, #roundtable-history-list { padding: var(--sp-4); }

    /* 约会 */
    #date-locations { grid-template-columns: 1fr 1fr; padding: var(--sp-3); }

    /* 购物终端 */
    .gift-terminal-actions { flex-direction: column; align-items: stretch; }
    .gift-pending { flex-direction: column; align-items: stretch; }
    #gift-evaluate-btn, #gift-pay-btn { width: 100%; }

    /* 造梦 / 编辑 内联控件单列 */
    .dream-inline-control,
    .dream-style-footer { grid-template-columns: 1fr; }
    .dream-inline-control .btn,
    .dream-style-footer .btn { width: 100%; }
    .dream-template-strip { gap: 7px; }
    .dream-template-btn {
        max-width: 100%;
        font-size: 0.76rem;
        padding-inline: 11px;
    }

    /* 全景按钮 */
    .room-panorama-top {
        left: auto;
        right: 14px;
        transform: none;
        max-width: 150px;
        padding: 9px 14px;
    }
    .room-panorama-title { font-size: 0.72rem; letter-spacing: 0.12em; }
    .room-panorama-hint { font-size: 0.76rem; }
    .room-panorama-side { width: 50px; height: 50px; font-size: 1.9rem; }
    .room-panorama-side.left { left: 14px; }
    .room-panorama-side.right { right: 14px; }
    #room-panorama-capture { min-width: 160px; }
    #room-panorama-close { min-width: 124px; }

    /* 样式修改确认条 */
    #dream-revision-confirm-bar { bottom: 16%; width: calc(100vw - 28px); gap: 10px; }
    .dream-revision-action { min-width: 0; flex: 1; padding: 10px 12px; }
    .dance-panel-body { grid-template-columns: 1fr; gap: 12px; }
    .dance-stage-card { grid-row: auto; min-height: 132px; padding: 18px; }
    .dance-loadout-grid { grid-template-columns: 1fr; }
    .dance-file-card { min-height: 102px; }
    .dance-model-section { grid-column: auto; }
    .dance-model-list { grid-template-columns: 1fr; }
    #dance-curtain-bar { bottom: 16%; width: calc(100vw - 28px); gap: 10px; }
    .bar-guest-shell { max-height: 94vh; }
    .bar-guest-body { grid-template-columns: minmax(200px, 0.58fr) minmax(420px, 1.42fr); }
    .bar-guest-roster,
    .bar-guest-forge { min-height: auto; }
    .bar-guest-card-list { max-height: 260px; }
    .bar-guest-preview-wrap { grid-template-columns: 96px 1fr; }
    .bar-guest-preview { width: 96px; height: 96px; }
    .bar-guest-file-grid { grid-template-columns: minmax(0, 1fr) minmax(0, 0.92fr); }
    .bar-guest-file-card { min-height: 98px; padding: 14px; }
    .bar-guest-foot { flex-direction: column; align-items: stretch; }
    .bar-guest-foot .btn { width: 100%; }
    .roundtable-head .otome-panel__actions {
        width: 100%;
        justify-content: flex-start;
        flex-wrap: wrap;
    }
    .roundtable-head .otome-panel__sub { display: none; }
    .roundtable-head .otome-panel__kicker {
        white-space: nowrap;
        overflow: hidden;
        text-overflow: ellipsis;
        max-width: 150px;
    }
    .roundtable-head.otome-panel__head,
    .roundtable-head {
        min-height: auto;
        padding-top: 12px;
        padding-bottom: 12px;
    }
    .roundtable-head .otome-panel__actions {
        width: auto;
        align-self: center;
    }
    .roundtable-head .otome-chip {
        padding: 7px 10px;
        min-height: 32px;
        font-size: 0.78rem;
    }
    .roundtable-setup-grid,
    .roundtable-chat-layout { padding: 10px; gap: 10px; }
    .roundtable-roster.is-collapsed {
        display: flex;
        flex-direction: row;
        flex-wrap: nowrap;
        align-items: center;
        gap: 8px;
        padding: 8px 10px;
        overflow: hidden;
    }
    .roundtable-roster.is-collapsed .roundtable-panel-label {
        order: 2;
        flex: 0 0 auto;
        min-width: auto;
        padding: 0;
        gap: 0;
    }
    .roundtable-roster.is-collapsed .roundtable-panel-label span {
        font-size: 0.86rem;
        white-space: nowrap;
    }
    .roundtable-roster.is-collapsed .roundtable-panel-label strong {
        display: none;
    }
    .roundtable-roster.is-collapsed .roundtable-participant-strip {
        order: 3;
        display: flex;
        flex-direction: row;
        flex-wrap: nowrap;
        justify-content: flex-end;
        gap: 4px;
        flex: 1 1 auto;
        min-width: 0;
        overflow: hidden;
        padding: 0;
    }
    .roundtable-roster.is-collapsed .roundtable-strip-member {
        min-width: 0;
        width: 28px;
        height: 28px;
        flex: 0 0 28px;
        padding: 0;
        border-radius: 50%;
        background: transparent;
        border-color: transparent;
    }
    .roundtable-roster.is-collapsed .roundtable-strip-member span:not(.roundtable-avatar) {
        display: none;
    }
    .roundtable-roster.is-collapsed .roundtable-avatar--sm {
        width: 28px;
        height: 28px;
    }
    .roundtable-roster.is-collapsed .roundtable-roster-actions {
        order: 1;
        flex: 0 0 auto;
        margin: 0;
        padding: 0;
        justify-content: flex-end;
        min-width: 30px;
    }
    .roundtable-roster.is-collapsed #roundtable-add-member,
    .roundtable-roster.is-collapsed #roundtable-remove-member,
    .roundtable-roster.is-collapsed .roundtable-card-remove,
    .roundtable-roster.is-collapsed .roundtable-mini-picker {
        display: none;
    }
    .roundtable-roster.is-collapsed #roundtable-back {
        display: inline-flex;
        width: 30px;
        height: 30px;
        font-size: 0.95rem;
    }
    .roundtable-roster.is-expanded {
        position: relative;
        cursor: default;
    }
    .roundtable-roster.is-expanded .roundtable-panel-label {
        min-height: 42px;
        padding-left: 58px;
        align-items: center;
    }
    .roundtable-roster.is-expanded .roundtable-roster-actions {
        position: static;
    }
    .roundtable-roster.is-expanded #roundtable-back {
        position: absolute;
        left: 14px;
        top: 12px;
        width: 32px;
        height: 32px;
        font-size: 1rem;
    }
    .roundtable-participant-list { grid-template-columns: 1fr; max-height: 250px; padding-inline: 10px; }
    .roundtable-rule-board { padding: 12px; }
    .roundtable-message-list { min-height: 300px; padding: 12px; }
    .roundtable-bubble { max-width: 82%; }
    .roundtable-input-console { grid-template-columns: 1fr; }
    .roundtable-mini-picker--mentions {
        left: 12px;
        right: auto;
        max-width: calc(100% - 24px);
    }
    .roundtable-mini-picker__grid { grid-template-columns: repeat(3, minmax(62px, 1fr)); }
    #roundtable-input { font-size: 16px; min-height: 72px; }
    #roundtable-send { min-height: 44px; }
    .roundtable-foot {
        display: grid;
        grid-template-columns: minmax(0, 1fr) auto;
        align-items: center;
    }
    .roundtable-foot #roundtable-chat-status { min-width: 0; }
    .roundtable-foot-timebar {
        justify-self: end;
        grid-column: 2;
    }
    .roundtable-game-time {
        font-size: 0.82rem;
    }
    .roundtable-foot .btn { width: 100%; }
    #roundtable-continue,
    #roundtable-start { grid-column: span 1; }
    #bartending-challenge-panel.ui-overlay {
        align-items: flex-start;
        justify-content: center;
        overflow-y: auto;
        padding: 10px;
    }
    .bartending-shell {
        width: 100%;
        max-height: none;
        margin: 0 auto;
    }
    .bartending-shell .otome-panel__head {
        display: grid;
        grid-template-columns: 44px minmax(0, 1fr);
        align-items: start;
        padding-right: 54px;
    }
    .bartending-shell .otome-panel__actions {
        display: contents;
    }
    .bartending-shell .otome-chip {
        position: static;
        grid-column: 2 / 3;
        justify-self: start;
        align-self: start;
        margin-top: 8px;
        min-height: 28px;
        padding: 4px 10px;
        font-size: 0.72rem;
        line-height: 1.25;
        white-space: normal;
    }
    .bartending-body {
        overflow: visible;
        padding: 0;
    }
    .bartending-status-deck { grid-template-columns: 1fr; padding: 14px 14px 0; }
    .bartending-round-console { text-align: left; }
    .bartending-grid {
        display: flex;
        flex-direction: column;
        padding: 14px;
        gap: 12px;
    }
    .bartending-mixer-panel,
    .bartending-result-panel { padding: 12px; }
    .bartending-ingredient-list {
        grid-template-columns: repeat(2, minmax(0, 1fr));
        max-height: none;
        overflow: visible;
    }
    .bartending-ingredient { min-height: 50px; }
    .bartending-lane-label.is-toggle-enabled {
        cursor: pointer;
        user-select: none;
    }
    .bartending-lane-label.is-toggle-enabled::after {
        content: "收起";
        float: right;
        color: rgba(255,237,244,0.58);
        font-size: 0.72rem;
        letter-spacing: 0.08em;
    }
    .bartending-lane.is-collapsed .bartending-lane-label.is-toggle-enabled::after {
        content: "展开";
    }
    .bartending-lane.is-collapsed .bartending-ingredient-list,
    .bartending-lane.is-collapsed input {
        display: none;
    }
    .bartending-choice-row { grid-template-columns: 1fr; }
    .bartending-reveal-head { flex-direction: column; }
    #bartending-result-delta { text-align: left; }
    .bartending-foot {
        position: sticky;
        bottom: 0;
        z-index: 4;
        flex-direction: column;
        align-items: stretch;
    }
    #bartending-start-btn { width: 100%; }

    /* 保留区域：家具圆形浮层移动端布局（原样迁移） */
    .dream-object-btn { width: 38px; height: 38px; }
    .dream-object-btn img { width: 22px; height: 22px; }
    .dream-object-btn.move-up { left: 0; top: -46px; }
    .dream-object-btn.move-left { left: -46px; top: 0; }
    .dream-object-btn.move-right { left: 46px; top: 0; }
    .dream-object-btn.move-down { left: 0; top: 46px; }
    .dream-object-btn.rotate-left { left: -94px; top: 0; }
    .dream-object-btn.rotate-right { left: 94px; top: 0; }
    .dream-object-btn.reset { left: -94px; top: 46px; }
    .dream-object-btn.delete { left: 170px; top: 46px; }
    .dream-object-btn.placement { left: 170px; top: 0; }
    .dream-object-btn.edit { left: 170px; top: -46px; }
    .dream-object-btn.confirm { left: 0; top: 0; }
}

@media (max-width: 820px) {
    .bar-guest-body { grid-template-columns: 1fr; }
    .bar-guest-card-list { max-height: 170px; }
    .bar-guest-file-grid { grid-template-columns: 1fr; }
    .bar-guest-file-card .dance-file-card__title { white-space: normal; }
    .roundtable-setup-grid { grid-template-columns: 1fr; }
    .roundtable-participant-list { grid-template-columns: 1fr; }
}

@media (max-width: 420px) {
    #bartending-challenge-panel.ui-overlay { padding: 8px; }
    .bartending-shell .otome-panel__head {
        min-height: auto;
        padding-left: 14px;
        padding-bottom: 16px;
    }
    .bartending-shell .otome-panel__icon { width: 40px; height: 40px; }
    .bartending-shell .otome-panel__title { font-size: 1.18rem; }
    .bartending-status-deck,
    .bartending-grid { padding-inline: 10px; }
    .bartending-mixer-panel,
    .bartending-result-panel { padding: 10px; }
    .bartending-ingredient {
        min-height: 46px;
        padding: 9px 10px;
    }
    .bartending-preview-panel,
    .bartending-reveal-panel,
    .bartending-end-panel { padding: 12px; }
    .bartending-preview-panel p { font-size: 1.02rem; }
    .room-panorama-top {
        max-width: 126px;
        padding: 8px 10px;
    }
    .room-panorama-title { font-size: 0.64rem; letter-spacing: 0.08em; }
    .room-panorama-hint { font-size: 0.7rem; }
    .room-panorama-bottom { gap: 8px; }
    #room-panorama-capture { min-width: 148px; padding: 0 18px; }
    #room-panorama-close { min-width: 112px; padding: 0 16px; }
}

#side-scroller-adventure.is-side-combat-compact-wide {
    --side-combat-safe-left: max(32px, calc(env(safe-area-inset-left, 0px) + 24px));
    --side-combat-safe-right: max(32px, calc(env(safe-area-inset-right, 0px) + 24px));
}

#side-scroller-adventure.is-side-combat-compact-wide .side-scroller-topbar {
    left: var(--side-combat-safe-left);
    right: var(--side-combat-safe-right);
}

#side-scroller-adventure.is-side-combat-compact-wide .side-combat-archive,
#side-scroller-adventure.is-side-combat-compact-wide .side-combat.is-started .side-combat-rule-toggle {
    left: var(--side-combat-safe-left);
}

#side-scroller-adventure.is-side-combat-compact-wide .side-combat-archive {
    transform: translateY(-50%) scale(var(--side-combat-side-rail-scale, 1));
    transform-origin: left center;
}

#side-scroller-adventure.is-side-combat-compact-wide .side-combat.is-started .side-combat-rule-toggle {
    top: calc(50% - var(--side-combat-rule-archive-offset, 152px));
    right: auto;
    width: var(--side-combat-round-size);
    height: var(--side-combat-round-size);
    transform: translateY(-50%);
}

#side-scroller-adventure.is-side-combat-compact-wide .side-combat-rule-toggle,
#side-scroller-adventure.is-side-combat-compact-wide .side-combat-scoreboard-toggle {
    right: var(--side-combat-safe-right);
}

#side-scroller-adventure.is-side-combat-compact-wide .side-combat-info-toggle {
    left: max(12px, env(safe-area-inset-left, 0px));
    bottom: 18px;
    width: max(var(--side-combat-round-size), 42px);
    height: max(var(--side-combat-round-size), 42px);
}

#side-scroller-adventure.is-side-combat-compact-wide .side-combat-actions {
    right: max(12px, env(safe-area-inset-right, 0px));
}

#side-scroller-adventure.is-side-combat-compact-wide .side-combat-actions button {
    min-height: max(var(--side-combat-round-size), 42px);
}

#side-scroller-adventure.is-side-combat-compact-wide .side-combat-log {
    left: calc(var(--side-combat-safe-left) + 54px);
    bottom: 124px;
    width: min(340px, 25vw);
    max-height: 92px;
    min-height: 0;
    padding: 10px 12px;
    font-size: 0.64rem;
    line-height: 1.5;
}

#side-scroller-adventure.is-side-combat-compact-wide #side-combat-reward-panel,
#side-scroller-adventure.is-side-combat-compact-wide #side-combat-complete-panel {
    inset: 0;
    display: grid;
    place-items: center;
    align-items: center;
    justify-items: center;
    padding: 18px max(var(--side-combat-safe-right), 18px) 18px max(var(--side-combat-safe-left), 18px);
}

#side-scroller-adventure.is-side-combat-compact-wide #side-combat-reward-panel.hidden,
#side-scroller-adventure.is-side-combat-compact-wide #side-combat-complete-panel.hidden {
    display: none;
}

#side-scroller-adventure.is-side-combat-compact-wide #side-combat-reward-panel .side-combat-modal__panel,
#side-scroller-adventure.is-side-combat-compact-wide #side-combat-complete-panel .side-combat-modal__panel {
    width: min(420px, calc(100vw - var(--side-combat-safe-left) - var(--side-combat-safe-right) - 40px));
    max-height: min(76vh, calc(100vh - 54px));
}

#side-scroller-adventure.is-side-combat-extreme-wide .side-combat-player {
    top: 72px;
    left: 50%;
    right: auto;
    width: min(270px, calc(100vw - 760px));
    min-width: 208px;
    min-height: 42px;
    grid-template-columns: minmax(128px, 1fr) 38px;
    gap: 8px;
    justify-items: stretch;
    padding: 5px 6px 5px 14px;
    transform: translateX(-50%);
}

#side-scroller-adventure.is-side-combat-extreme-wide .side-combat-player__meta {
    width: 100%;
    justify-items: end;
}

#side-scroller-adventure.is-side-combat-extreme-wide .side-combat-player strong {
    width: 100%;
    text-align: right;
    font-size: 0.76rem;
}

#side-scroller-adventure.is-side-combat-extreme-wide .side-combat-player__avatar {
    display: block;
    width: 34px;
    height: 34px;
}

#side-scroller-adventure.is-side-combat-extreme-wide #side-combat-player-status {
    display: none;
}

#side-scroller-adventure.is-side-combat-extreme-wide .side-combat-hp {
    width: 100%;
    height: 5px;
    margin-top: 4px;
}

#side-scroller-adventure.is-side-combat-extreme-wide .side-combat-log {
    left: calc(var(--side-combat-safe-left) + 52px);
    bottom: 118px;
    width: min(360px, 24vw);
    max-height: 88px;
}

#side-scroller-adventure.is-side-combat-extreme-wide .side-combat-refresh-round,
#side-scroller-adventure.is-side-combat-extreme-wide .side-combat-deck-toggle,
#side-scroller-adventure.is-side-combat-extreme-wide .side-combat-discard,
#side-scroller-adventure.is-side-combat-extreme-wide .side-combat-play-count {
    right: auto;
}

#side-scroller-adventure.is-side-combat-extreme-wide .side-combat-refresh-round {
    left: calc(50% - 446px);
}

#side-scroller-adventure.is-side-combat-extreme-wide .side-combat-deck-toggle {
    left: calc(50% - 386px);
}

#side-scroller-adventure.is-side-combat-extreme-wide .side-combat-discard {
    left: calc(50% + 338px);
}

#side-scroller-adventure.is-side-combat-extreme-wide .side-combat-play-count {
    left: calc(50% + 398px);
}

@media (max-height: 520px) and (min-width: 900px) {
    #side-scroller-adventure.is-side-combat-extreme-wide .side-combat-archive {
        left: var(--side-combat-safe-left);
    }

    #side-scroller-adventure.is-side-combat-extreme-wide .side-combat.is-started .side-combat-rule-toggle {
        top: calc(51% - 122px);
        left: var(--side-combat-safe-left);
        right: auto;
        width: var(--side-combat-round-size);
        height: var(--side-combat-round-size);
    }

    #side-scroller-adventure.is-side-combat-extreme-wide .side-combat-info-toggle {
        left: max(12px, env(safe-area-inset-left, 0px));
        bottom: 18px;
    }

    #side-scroller-adventure.is-side-combat-extreme-wide .side-combat-actions {
        right: max(12px, env(safe-area-inset-right, 0px));
        bottom: 18px;
    }
}

@media (pointer: coarse) {
    #side-scroller-adventure.is-side-combat-compact-wide .side-scroller-touch {
        left: max(18px, env(safe-area-inset-left, 0px));
        right: max(18px, env(safe-area-inset-right, 0px));
        bottom: 62px;
    }

    #side-scroller-adventure.is-side-combat-compact-wide .side-scroller-touch-btn {
        width: 54px;
        height: 54px;
        font-size: 1.8rem;
    }
}

@media (max-width: 1280px) and (max-height: 560px) {
    #side-scroller-adventure.is-side-combat-extreme-wide .side-combat-refresh-round {
        left: calc(50% - 400px);
    }

    #side-scroller-adventure.is-side-combat-extreme-wide .side-combat-deck-toggle {
        left: calc(50% - 342px);
    }

    #side-scroller-adventure.is-side-combat-extreme-wide .side-combat-discard {
        left: calc(50% + 292px);
    }

    #side-scroller-adventure.is-side-combat-extreme-wide .side-combat-play-count {
        left: calc(50% + 352px);
    }
}
