/* Generated by scripts/build-css-variants.py — do not edit. Source: src/styles/player.css */
  body.dock-layout-settling.dual-app #c,
  body.dock-layout-settling.dual-app #c2 {
    transition: none;
  }
  body.stage-reflow-active.dual-app #c,
  body.stage-reflow-active.dual-app #c2 {
    transition: none !important;
  }
    body.dual-app #paneRow {
    width: 100%; height: 100%;
    align-items: stretch;
    justify-content: stretch;
    align-self: stretch;
    position: relative;
    gap: var(--dual-pane-gap);
    padding: 0 var(--dual-pane-inset-x) var(--dual-pane-inset-y);
    box-sizing: border-box;
  }
  body.dual-app #stage {
    align-items: stretch;
    justify-content: stretch;
  }
  body.dual-app:not(.float-overlay) #paneRow {
    padding: 0;
    justify-content: flex-start;
  }
  body.dual-app:not(.float-overlay) #stage {
    justify-content: flex-start;
    align-items: stretch;
  }
  body.dual-app:not(.float-overlay) #priPane,
  body.dual-app:not(.float-overlay) #secPane {
    border-radius: 0;
    border: none;
    box-shadow: none;
  }
  body.dual-app:not(.float-overlay) .paneViewport {
    border-radius: 0;
  }
  body.dual-app.dual-pane-reversed #paneRow {
    flex-direction: row-reverse;
  }
  #dualSplitHandle {
    display: none;
    position: absolute;
    z-index: 6;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    width: var(--dual-split-handle-hit);
    height: var(--dual-split-handle-hit-h);
    align-items: center;
    justify-content: center;
    touch-action: none;
    cursor: col-resize;
    pointer-events: auto;
    -webkit-tap-highlight-color: transparent;
  }
  body.dual-app #dualSplitHandle:not(.hide) {
    display: flex;
  }
  .dualSplitHandleGrip {
    position: relative;
    box-sizing: border-box;
    flex-shrink: 0;
    width: var(--dual-split-handle-w);
    height: var(--dual-split-handle-h);
    border-radius: var(--dual-split-handle-radius);
    border: 1px solid var(--dual-split-handle-edge);
    background: var(--dual-split-handle-glass);
    backdrop-filter: blur(20px) saturate(180%);
    -webkit-backdrop-filter: blur(20px) saturate(180%);
    opacity: var(--dual-split-handle-idle-opacity);
    box-shadow:
      0 0 0 1px rgba(0, 0, 0, 0.38),
      0 2px 16px rgba(0, 0, 0, 0.45),
      inset 0 1px 0 rgba(255, 255, 255, 0.42);
    transition:
      transform 100ms ease-out,
      opacity 100ms ease-out,
      width 100ms ease-out,
      background 100ms ease-out,
      border-color 100ms ease-out,
      box-shadow 100ms ease-out;
  }
  .dualSplitHandleGrip::before {
    content: "";
    position: absolute;
    top: 50%;
    left: 50%;
    width: var(--dual-split-handle-bar-w);
    height: var(--dual-split-handle-bar-h);
    margin: calc(var(--dual-split-handle-bar-h) * -0.5) 0 0 calc(var(--dual-split-handle-bar-w) * -0.5);
    border-radius: 2px;
    background: var(--dual-split-handle-bar);
    box-shadow: 0 0 6px rgba(0, 0, 0, 0.35);
  }
  .dualSplitHandleGrip::after {
    display: none;
  }
  #dualSplitHandle:active .dualSplitHandleGrip,
  body.dual-split-dragging #dualSplitHandle .dualSplitHandleGrip {
    opacity: 1;
    width: var(--dual-split-handle-w-active);
    background: var(--dual-split-handle-glass-active);
    border-color: var(--dual-split-handle-edge-active);
    transform: scale(1.06);
    box-shadow:
      0 0 0 1px rgba(0, 0, 0, 0.42),
      0 3px 18px rgba(0, 0, 0, 0.5),
      inset 0 1px 0 rgba(255, 255, 255, 0.5);
  }
  body.dual-split-dragging.dual-split-collapse-left #dualSplitHandle .dualSplitHandleGrip,
  body.dual-split-dragging.dual-split-collapse-right #dualSplitHandle .dualSplitHandleGrip {
    background: var(--dual-split-handle-glass-collapse);
    border-color: rgba(255, 255, 255, 0.5);
    box-shadow:
      0 0 14px rgba(220, 80, 60, 0.4),
      inset 0 1px 0 rgba(255, 255, 255, 0.28);
  }
  body.dual-split-handle-dim:not(.dual-split-dragging) #dualSplitHandle:not(.hide) .dualSplitHandleGrip {
    opacity: var(--dual-split-handle-dim-opacity);
    transform: scale(0.94);
  }
  body.dual-split-handle-dim:not(.dual-split-dragging) #dualSplitHandle:not(.hide) .dualSplitHandleGrip::before {
    opacity: var(--dual-split-handle-dim-bar-opacity);
  }
  @media (prefers-reduced-motion: reduce) {
    .dualSplitHandleGrip {
      transition: opacity 120ms ease, background 120ms ease, border-color 120ms ease;
    }
    body.dual-split-handle-dim:not(.dual-split-dragging) #dualSplitHandle:not(.hide) .dualSplitHandleGrip {
      transform: none;
    }
    #dualSplitHandle:active .dualSplitHandleGrip,
    body.dual-split-dragging #dualSplitHandle .dualSplitHandleGrip {
      transform: none;
      width: var(--dual-split-handle-w);
    }
  }
  @media (prefers-reduced-transparency: reduce) {
    .dualSplitHandleGrip {
      backdrop-filter: none;
      -webkit-backdrop-filter: none;
      background: rgba(72, 72, 74, 0.92);
    }
    #dualSplitHandle:active .dualSplitHandleGrip,
    body.dual-split-dragging #dualSplitHandle .dualSplitHandleGrip {
      background: rgba(88, 88, 90, 0.96);
    }
    body.dual-split-dragging.dual-split-collapse-left #dualSplitHandle .dualSplitHandleGrip,
    body.dual-split-dragging.dual-split-collapse-right #dualSplitHandle .dualSplitHandleGrip {
      background: rgba(200, 72, 56, 0.94);
    }
  }
  body.tesla-dpr-zoom {
    --dual-split-handle-w: 12px;
    --dual-split-handle-w-active: 14px;
    --dual-split-handle-h: 76px;
    --dual-split-handle-hit: 56px;
    --dual-split-handle-hit-h: 120px;
    --dual-split-handle-bar-w: 3px;
    --dual-split-handle-bar-h: 40px;
    --dual-split-handle-glass: rgba(48, 48, 52, 0.82);
    --dual-split-handle-glass-active: rgba(62, 62, 68, 0.92);
  }
  body.dual-split-dragging.dual-app #priPane,
  body.dual-split-dragging.dual-app #secPane,
  body.dual-split-settling.dual-app #priPane,
  body.dual-split-settling.dual-app #secPane {
    transition: none;
  }
  #priPane {
    display: contents;
  }
  body.dual-app #priPane {
    display: flex;
    align-items: stretch;
    justify-content: stretch;
    position: relative;
    min-width: 0;
    height: 100%;
    flex: 7 1 0%;
    overflow: hidden;
    box-sizing: border-box;
    border-radius: var(--dual-pane-radius);
    border: var(--dual-pane-border);
    background: var(--dual-pane-bg);
    box-shadow: var(--dual-pane-shadow);
    transition: flex-grow .28s cubic-bezier(.22,.61,.36,1);
  }
  body.single-app #priPane,
  body.float-overlay.dual-app #priPane {
    display: flex;
    align-items: stretch;
    justify-content: stretch;
    position: relative;
    flex: 1 1 auto;
    width: 100%;
    height: 100%;
    min-width: 0;
    overflow: hidden;
    box-sizing: border-box;
    border-radius: var(--dual-pane-radius);
    border: var(--dual-pane-border);
    background: var(--dual-pane-bg);
    box-shadow: var(--dual-pane-shadow);
  }
  body.single-app.single-portrait #paneRow,
  body.app-cast-touch.single-app.single-portrait #paneRow {
    justify-content: center !important;
  }
  body.single-app.single-portrait #priPane {
    flex: 0 0 50% !important;
    width: 50% !important;
    max-width: 50% !important;
    height: 100%;
  }
  /* 半关幸存 secondary：与 single-app 对称的全屏/竖屏卡片布局 */
  body.app-cast-touch.single-app-secondary #paneRow,
  body.single-app-secondary #paneRow {
    width: 100%;
    height: 100%;
    align-items: stretch;
    justify-content: stretch;
    position: relative;
    padding: 0 var(--dual-pane-inset-x) var(--dual-pane-inset-y);
    box-sizing: border-box;
  }
  body.single-app-secondary #stage {
    align-items: stretch;
    justify-content: stretch;
  }
  body.single-app-secondary #secPane {
    display: flex;
    align-items: stretch;
    justify-content: stretch;
    position: relative;
    flex: 1 1 auto;
    width: 100%;
    height: 100%;
    min-width: 0;
    overflow: hidden;
    box-sizing: border-box;
    border-radius: var(--dual-pane-radius);
    border: var(--dual-pane-border);
    background: var(--dual-pane-bg);
    box-shadow: var(--dual-pane-shadow);
  }
  body.single-app-secondary.single-portrait-secondary #paneRow,
  body.app-cast-touch.single-app-secondary.single-portrait-secondary #paneRow {
    justify-content: center !important;
  }
  body.single-app-secondary.single-portrait-secondary #secPane {
    flex: 0 0 50% !important;
    width: 50% !important;
    max-width: 50% !important;
    height: 100%;
  }
  body.single-app-secondary.single-portrait-secondary.fill-fit #secPane {
    width: 50% !important;
    max-width: 50% !important;
  }
  body.single-app-secondary .paneViewport > #c2 {
    display: block;
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    max-width: none;
    max-height: none;
    flex-shrink: 0;
    object-fit: cover;
    object-position: center center;
  }
  body.single-app-secondary #secPane.pane-fit-contain .paneViewport > #c2 {
    object-fit: contain;
    object-position: center center;
  }
  body.single-app-secondary #secPane.pane-fit-stretch .paneViewport > #c2 {
    object-fit: fill;
    object-position: center center;
  }
  body.single-app-secondary #secPane.pane-fit-cover .paneViewport > #c2 {
    object-fit: cover;
    object-position: center center;
  }
  body.single-app-secondary.fill-fit #c2,
  body.single-app-secondary.fill-fit #secPane {
    max-width: none;
    max-height: none;
  }
  body.single-app.fill-ambient #paneRow,
  body.single-app-secondary.fill-ambient #paneRow,
  body.dual-app.fill-ambient #paneRow,
  body.float-overlay.dual-app.fill-ambient #paneRow {
    background: transparent;
  }
  body.single-app.fill-ambient #priPane,
  body.single-app-secondary.fill-ambient #secPane,
  body.dual-app.fill-ambient #priPane,
  body.dual-app.fill-ambient #secPane,
  body.float-overlay.dual-app.fill-ambient #priPane {
    background: transparent;
  }
  body.single-app.fill-ambient .paneViewport,
  body.single-app-secondary.fill-ambient .paneViewport,
  body.dual-app.fill-ambient .paneViewport,
  body.float-overlay.dual-app.fill-ambient .paneViewport {
    background: transparent;
  }
  body.single-app .paneViewport,
  body.single-app-secondary .paneViewport,
  body.dual-app .paneViewport {
    position: relative;
    flex: 1 1 auto;
    width: 100%;
    height: 100%;
    min-width: 0;
    min-height: 0;
    overflow: hidden;
    border-radius: calc(var(--dual-pane-radius) - 1px);
    background: var(--dual-pane-bg);
    isolation: isolate;
  }
  /*
   * single-edge：单应用 / 半关幸存 secondary 直角布局（dock 展开/收起均适用）
   * - 横屏：去卡片 chrome，cover + 顶对齐（与双屏一致，避免 contain 顶缝）
   * - 竖屏：保留 50% 竖卡片，仅去掉圆角
   */
  body.single-app.single-edge:not(.single-portrait) #paneRow,
  body.single-app-secondary.single-edge:not(.single-portrait-secondary) #paneRow {
    padding: 0;
  }
  body.single-app.single-edge:not(.single-portrait) #priPane,
  body.single-app-secondary.single-edge:not(.single-portrait-secondary) #secPane {
    border-radius: 0;
    border: none;
    box-shadow: none;
  }
  body.single-app.single-edge:not(.single-portrait) .paneViewport,
  body.single-app-secondary.single-edge:not(.single-portrait-secondary) .paneViewport {
    border-radius: 0;
  }
  body.single-app.single-edge.single-portrait #priPane,
  body.single-app-secondary.single-edge.single-portrait-secondary #secPane {
    border-radius: 0;
  }
  body.single-app.single-edge.single-portrait .paneViewport,
  body.single-app-secondary.single-edge.single-portrait-secondary .paneViewport {
    border-radius: 0;
  }
  body.dual-partial.single-edge #paneRow {
    padding: 0;
  }
  body.dual-partial.single-edge .pane-solo {
    border-radius: 0;
    border: none;
    box-shadow: none;
  }
  body.dual-partial.single-edge .pane-solo .paneViewport,
  body.dual-partial.single-edge .pane-solo .paneViewport > #c,
  body.dual-partial.single-edge .pane-solo .paneViewport > #c2 {
    border-radius: 0;
  }
  body.single-edge .paneViewport > #c,
  body.single-edge .paneViewport > #c2 {
    border-radius: 0;
  }
  body.single-edge:not(.single-portrait):not(.single-portrait-secondary) #priPane.pane-fit-cover .paneViewport > #c,
  body.single-edge:not(.single-portrait):not(.single-portrait-secondary) #secPane.pane-fit-cover .paneViewport > #c2,
  body.dual-partial.single-edge:not(.single-portrait):not(.single-portrait-secondary) .pane-solo.pane-fit-cover .paneViewport > #c,
  body.dual-partial.single-edge:not(.single-portrait):not(.single-portrait-secondary) .pane-solo.pane-fit-cover .paneViewport > #c2 {
    object-position: center top;
  }
  #c, #c2, #v {
    position: relative; z-index: 3;
    max-width: none; max-height: none;
    background: transparent;
  }
  body.dual-app #c, body.dual-app #c2 {
    transition: none;
  }
  body.single-app #c,
  body.float-overlay.dual-app #c {
    transition: none;
  }
  body.single-app .paneViewport > #c,
  body.single-app-secondary .paneViewport > #c2,
  body.dual-partial .pane-solo .paneViewport > #c,
  body.dual-partial .pane-solo .paneViewport > #c2,
  body.float-overlay.dual-app .paneViewport > #c,
  body.dual-app .paneViewport > #c,
  body.dual-app .paneViewport > #c2 {
    display: block;
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    max-width: none;
    max-height: none;
    flex-shrink: 0;
    object-fit: cover;
    object-position: center center;
  }
  body.single-app .paneViewport > #c,
  body.float-overlay.dual-app .paneViewport > #c {
    object-fit: cover;
  }
  body.dual-app #priPane.pane-fit-contain .paneViewport > #c,
  body.dual-app #secPane.pane-fit-contain .paneViewport > #c2,
  body.single-app #priPane.pane-fit-contain .paneViewport > #c,
  body.float-overlay.dual-app #priPane.pane-fit-contain .paneViewport > #c {
    object-fit: contain;
    object-position: center center;
  }
  body.dual-app #priPane.pane-fit-stretch .paneViewport > #c,
  body.dual-app #secPane.pane-fit-stretch .paneViewport > #c2,
  body.single-app #priPane.pane-fit-stretch .paneViewport > #c,
  body.float-overlay.dual-app #priPane.pane-fit-stretch .paneViewport > #c {
    object-fit: fill;
    object-position: center center;
  }
  body.single-app #priPane.pane-fit-cover .paneViewport > #c,
  body.float-overlay.dual-app #priPane.pane-fit-cover .paneViewport > #c {
    object-fit: cover;
    object-position: center center;
  }
  #c2 { background: #0a0a0c; display: block; }
  #secPane {
    display: none;
    position: relative;
    flex: 0 0 auto;
    align-self: stretch;
    min-width: 0;
  }
  body.dual-app #secPane {
    display: flex;
    align-items: stretch;
    justify-content: stretch;
    position: relative;
    height: 100%;
    flex: 3 1 0%;
    overflow: hidden;
    box-sizing: border-box;
    border-radius: var(--dual-pane-radius);
    border: var(--dual-pane-border);
    background: var(--dual-pane-bg);
    box-shadow: var(--dual-pane-shadow);
    transition: flex-grow .28s cubic-bezier(.22,.61,.36,1);
  }
  /* 分屏 flex-grow 由 JS applyDualSplitFlexGrow() 按物理左:右动态设置 */
  body.dual-app #priPane.align-edge.content-portrait,
  body.dual-app #secPane.align-edge.content-portrait {
    justify-content: flex-start;
    align-items: center;
  }
  body.dual-app #priPane.align-edge.content-landscape,
  body.dual-app #secPane.align-edge.content-landscape {
    justify-content: center;
    align-items: flex-start;
  }
  body.dual-app #priPane.align-center,
  body.dual-app #secPane.align-center {
    justify-content: center;
    align-items: center;
  }
  #priPane.hide,
  #secPane.hide { display: none !important; }
  /* 单副：空主槽必须藏（#priPane 默认 contents，不能像 #secPane 靠默认 none） */
  body.single-app-secondary #priPane { display: none !important; }

  /* 半关分屏：幸存 pane 全屏，空槽隐藏（对称 primary / secondary） */
  body.dual-partial #dualSplitHandle { display: none !important; }
  body.dual-partial #paneRow {
    display: flex;
    width: 100%;
    height: 100%;
    align-items: stretch;
    justify-content: stretch;
    align-self: stretch;
    position: relative;
    padding: 0 var(--dual-pane-inset-x) var(--dual-pane-inset-y);
    box-sizing: border-box;
  }
  body.dual-partial #stage {
    align-items: stretch;
    justify-content: stretch;
  }
  body.dual-partial:not(.sec-live) #secPlaceholder,
  body.dual-partial[data-solo-pane="secondary"] #secPlaceholder {
    display: none !important;
  }
  body.dual-partial .pane-vacant { display: none !important; }
  body.dual-partial .pane-solo {
    display: flex !important;
    align-items: stretch;
    justify-content: stretch;
    position: relative;
    min-width: 0;
    height: 100%;
    overflow: hidden;
    box-sizing: border-box;
    border-radius: var(--dual-pane-radius);
    border: var(--dual-pane-border);
    background: var(--dual-pane-bg);
    box-shadow: var(--dual-pane-shadow);
    flex: 1 1 100%;
    width: 100% !important;
    max-width: 100% !important;
  }
  body.dual-partial .pane-solo .paneViewport,
  body.dual-partial .pane-solo .paneViewport > #c,
  body.dual-partial .pane-solo .paneViewport > #c2 {
    width: 100%;
    height: 100%;
    border-radius: calc(var(--dual-pane-radius) - 1px);
    overflow: hidden;
  }
  /* 半关幸存 pane 竖屏卡片：压过 .pane-solo 的 width:100%!important（对称 single-app.single-portrait） */
  body.dual-partial.single-portrait[data-solo-pane="primary"] #priPane.pane-solo,
  body.single-app.single-portrait #priPane.pane-solo {
    flex: 0 0 50% !important;
    width: 50% !important;
    max-width: 50% !important;
    height: 100%;
  }
  body.dual-partial.single-portrait-secondary[data-solo-pane="secondary"] #secPane.pane-solo,
  body.single-app-secondary.single-portrait-secondary #secPane.pane-solo {
    flex: 0 0 50% !important;
    width: 50% !important;
    max-width: 50% !important;
    height: 100%;
  }
  body.dual-partial.single-portrait[data-solo-pane="primary"] #paneRow,
  body.dual-partial.single-portrait-secondary[data-solo-pane="secondary"] #paneRow {
    justify-content: center !important;
  }

  /* 半关瞬间：藏空槽、铺幸存（关主/关副同一，勿写死 #secPane/#priPane） */
  body.solo-dismiss-instant .pane-vacant,
  body.solo-dismiss-instant .pane-dismissing {
    display: none !important;
    opacity: 0;
    pointer-events: none;
  }
  body.solo-dismiss-instant #dualSplitHandle {
    display: none !important;
  }
  body.solo-dismiss-instant .pane-solo,
  body.solo-dismiss-instant .pane-solo-preview {
    flex: 1 1 100% !important;
    width: 100% !important;
    max-width: 100% !important;
    min-width: 0;
  }
  body.solo-dismiss-instant[data-vacant-pane="secondary"] #orientSecondary,
  body.solo-dismiss-instant[data-vacant-pane="primary"] #orientPrimary,
  body.solo-dismiss-instant #dualPaneSwapBtn {
    display: none !important;
  }

  #floatResizeGrip {
    display: none;
    position: absolute;
    z-index: 9;
    box-sizing: border-box;
    width: 48px;
    height: 48px;
    margin: 0;
    padding: 0;
    border: 0;
    border-radius: 0;
    touch-action: none;
    pointer-events: auto;
    align-items: center;
    justify-content: center;
    background: transparent;
    color: rgba(255, 255, 255, 0.95);
    cursor: nwse-resize;
    -webkit-tap-highlight-color: transparent;
    transition: transform 80ms ease-out, opacity 180ms ease-out;
    right: 2px;
    bottom: 2px;
  }
  body.float-overlay #floatResizeGrip { display: flex; }
  /* P0：半透明底板 + 加大角标，亮色内容上也能认出来 */
  .floatResizeIcon {
    display: flex;
    align-items: center;
    justify-content: center;
    box-sizing: border-box;
    width: 24px;
    height: 24px;
    border-radius: 7px;
    border: 1px solid rgba(255, 255, 255, 0.38);
    background: rgba(0, 0, 0, 0.52);
    box-shadow:
      0 1px 4px rgba(0, 0, 0, 0.45),
      inset 0 1px 0 rgba(255, 255, 255, 0.12);
    pointer-events: none;
    transition: opacity 180ms ease-out, background 120ms ease-out, border-color 120ms ease-out;
  }
  .floatResizeIcon::after {
    content: '';
    display: block;
    width: 10px;
    height: 10px;
    margin: 2px 0 0 2px;
    border-right: 3px solid rgba(255, 255, 255, 0.95);
    border-bottom: 3px solid rgba(255, 255, 255, 0.95);
    border-radius: 0 0 2px 0;
    box-shadow: 0 1px 2px rgba(0, 0, 0, 0.35);
  }
  #floatResizeGrip.is-pressed,
  #floatResizeGrip:active,
  body.float-resizing #floatResizeGrip {
    transform: scale(0.94);
  }
  #floatResizeGrip.is-pressed .floatResizeIcon,
  #floatResizeGrip:active .floatResizeIcon,
  body.float-resizing #floatResizeGrip .floatResizeIcon {
    background: rgba(0, 0, 0, 0.68);
    border-color: rgba(255, 255, 255, 0.5);
    opacity: 1;
  }
  body.float-resizing #floatResizeGrip { cursor: nwse-resize; }
  #floatDragHandle {
    display: none;
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    height: var(--float-chrome-height, 34px);
    z-index: 7;
    cursor: grab;
    touch-action: none;
    pointer-events: auto;
    -webkit-tap-highlight-color: transparent;
  }
  .floatDragChrome {
    position: absolute;
    inset: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    background: linear-gradient(
      180deg,
      rgba(18, 20, 26, 0.72) 0%,
      rgba(18, 20, 26, 0.38) 72%,
      transparent 100%
    );
    backdrop-filter: blur(12px) saturate(160%);
    -webkit-backdrop-filter: blur(12px) saturate(160%);
    border-bottom: 1px solid rgba(255, 255, 255, 0.06);
    pointer-events: none;
    transition: opacity 180ms ease-out, background 180ms ease-out, border-color 180ms ease-out;
  }
  .floatDragPill {
    width: 36px;
    height: 4px;
    border-radius: 99px;
    background: rgba(255, 255, 255, 0.42);
    box-shadow: 0 1px 2px rgba(0, 0, 0, 0.18);
    pointer-events: none;
    transition: opacity 180ms ease-out, background 120ms ease-out;
  }
  body.float-overlay #floatDragHandle { display: block; }
  body.float-dragging #floatDragHandle { cursor: grabbing; }
  body.float-dragging #floatDragHandle .floatDragPill,
  body.float-resizing #floatDragHandle .floatDragPill {
    background: rgba(255, 255, 255, 0.62);
  }
  /* 浮窗 chrome 自动隐藏：顶栏淡出；缩放角标保留半透明，避免亮色内容上消失 */
  body.float-overlay.float-chrome-hidden #floatDragHandle .floatDragChrome {
    opacity: 0;
    background: transparent;
    backdrop-filter: none;
    -webkit-backdrop-filter: none;
    border-bottom-color: transparent;
  }
  body.float-overlay.float-chrome-hidden #floatDragHandle .floatDragPill {
    opacity: 0;
  }
  body.float-overlay.float-chrome-hidden #floatResizeGrip .floatResizeIcon {
    opacity: 0.55;
  }
  body.float-overlay.float-dragging #floatDragHandle .floatDragChrome,
  body.float-overlay.float-resizing #floatDragHandle .floatDragChrome,
  body.float-overlay.overlay-manage-mode #floatDragHandle .floatDragChrome,
  body.float-overlay.float-dragging #floatDragHandle .floatDragPill,
  body.float-overlay.float-resizing #floatDragHandle .floatDragPill,
  body.float-overlay.overlay-manage-mode #floatDragHandle .floatDragPill,
  body.float-overlay.float-dragging #floatResizeGrip .floatResizeIcon,
  body.float-overlay.float-resizing #floatResizeGrip .floatResizeIcon,
  body.float-overlay.overlay-manage-mode #floatResizeGrip .floatResizeIcon {
    opacity: 1;
    pointer-events: auto;
  }
  body.float-swap-animating #secPane {
    transition:
      left .32s cubic-bezier(.22,.61,.36,1),
      top .32s cubic-bezier(.22,.61,.36,1),
      width .32s cubic-bezier(.22,.61,.36,1),
      height .32s cubic-bezier(.22,.61,.36,1);
  }
  body.float-swap-animating #secPane.float-swap-mirror .paneViewport {
    transition: transform .32s cubic-bezier(.22,.61,.36,1);
    transform: scaleX(-1);
  }
  body.float-overlay.dual-app #paneRow {
    gap: 0;
  }
  body.float-overlay.dual-app #secPane {
    --float-chrome-height: 34px;
    position: absolute;
    z-index: 12;
    display: flex !important;
    flex: none;
    min-width: 0;
    overflow: hidden;
    pointer-events: auto;
    border: none;
    border-radius: 0;
    background: transparent;
    box-shadow: none;
    transform-origin: center center;
    will-change: transform, box-shadow;
    transition: box-shadow 120ms ease-out, transform 120ms ease-out;
  }
  body.float-overlay.dual-app #secPane > .paneViewport {
    border-radius: calc(var(--float-pane-radius) - 1px);
    background: #000;
  }
  body.float-dragging.float-overlay.dual-app #secPane,
  body.float-resizing.float-overlay.dual-app #secPane {
    transform: scale(1.012);
    box-shadow: var(--float-pane-shadow-active);
  }
  body.float-overlay #dualSplitHandle { display: none !important; }
  @media (prefers-reduced-motion: reduce) {
    body.float-dragging.float-overlay.dual-app #secPane,
    body.float-resizing.float-overlay.dual-app #secPane {
      transform: none;
    }
    body.float-swap-animating #secPane,
    body.float-swap-animating #secPane.float-swap-mirror .paneViewport {
      transition: none;
    }
    #floatResizeGrip {
      transition: opacity 80ms ease-out;
    }
  }
  @media (prefers-reduced-transparency: reduce) {
    .floatDragChrome {
      background: linear-gradient(180deg, rgba(18, 18, 22, 0.92), transparent);
      backdrop-filter: none;
      -webkit-backdrop-filter: none;
    }
    body.float-overlay.dual-app #secPane {
      background: rgba(8, 8, 12, 0.96);
    }
  }
  .panePlaceholder {
    display: none;
    position: absolute; inset: 0; z-index: 4;
    align-items: center; justify-content: center;
    flex-direction: column; gap: 10px;
    pointer-events: none;
    background: linear-gradient(180deg, rgba(18,18,22,.92), rgba(8,8,10,.96));
    color: rgba(255,255,255,.55);
    font: 500 14px/1.4 -apple-system, "PingFang SC", sans-serif;
    text-align: center;
    padding: 24px;
  }
  /* 分屏等待不再叠「左侧/右侧」文案；最小化仍走下方 pane-minimized 规则 */
  body.dual-app #priPlaceholder,
  body.dual-app #secPlaceholder {
    display: none !important;
  }
  .panePlaceholder strong,
  #secPlaceholder strong {
    color: rgba(255,255,255,.82);
    font-size: 16px; letter-spacing: 0.08em;
  }
  .panePlaceholder span,
  #secPlaceholder span { font-size: 12px; color: rgba(255,255,255,.4); max-width: 12em; }
  .pane-minimized-overlay {
    display: none;
    position: absolute;
    inset: 0;
    z-index: 6;
    align-items: center;
    justify-content: center;
    flex-direction: column;
    gap: 10px;
    pointer-events: none;
    background: linear-gradient(180deg, rgba(18,18,22,.94), rgba(8,8,10,.98));
    color: rgba(255,255,255,.55);
    font: 500 14px/1.4 -apple-system, "PingFang SC", sans-serif;
    text-align: center;
    padding: 24px;
  }
  .pane-minimized-overlay:not(.hide) {
    display: flex;
  }
  .pane-minimized-overlay strong {
    color: rgba(255,255,255,.86);
    font-size: 16px;
    letter-spacing: 0.06em;
  }
  .pane-minimized-overlay span {
    font-size: 12px;
    color: rgba(255,255,255,.42);
    max-width: 14em;
  }
  body.cast-desktop-active .pane-minimized-overlay {
    display: none !important;
  }
  body.pane-minimized-primary #priPane .paneViewport > #c,
  body.pane-minimized-primary #priPane .paneViewport > #v,
  body.pane-minimized-secondary #secPane .paneViewport > #c2 {
    visibility: hidden !important;
  }
  body.pane-genie-active-primary #priPane .paneViewport > #c,
  body.pane-genie-active-primary #priPane .paneViewport > #v,
  body.pane-genie-active-secondary #secPane .paneViewport > #c2 {
    visibility: hidden !important;
  }
  .pane-genie-overlay {
    position: fixed;
    z-index: 6;
    pointer-events: none;
    will-change: transform, opacity;
  }
  body.pane-genie-active #paneRow,
  body.pane-genie-active #dualSplitHandle {
    pointer-events: none;
  }
  body.pane-genie-active #priPane,
  body.pane-genie-active #secPane {
    transition: none;
  }
  body.pane-minimized-primary #priPlaceholder,
  body.pane-minimized-secondary #secPlaceholder {
    display: flex !important;
  }
  /* 浮窗最小化：吸入 Dock 后完全收起，不保留黑占位 */
  body.float-overlay.pane-minimized-primary #priPane,
  body.float-overlay.pane-minimized-primary #priPlaceholder,
  body.float-overlay.pane-minimized-secondary #secPane,
  body.float-overlay.pane-minimized-secondary #secPlaceholder {
    display: none !important;
  }
  body.float-overlay.pane-genie-active-primary #priPane,
  body.float-overlay.pane-genie-active-secondary #secPane {
    visibility: hidden;
  }
  body.float-overlay.pane-genie-active .pane-genie-overlay {
    z-index: 20;
  }
  body.dual-app.pane-minimized-primary #priPane,
  body.dual-app.pane-minimized-secondary #secPane {
    overflow: hidden;
    border-width: 0;
    box-shadow: none;
    pointer-events: none;
  }
  body.fill-fit #c,
  body.fill-fit #c2,
  body.fill-fit #v {
    max-width: 100%; max-height: 100%;
  }
  body.dual-app.fill-fit #c,
  body.dual-app.fill-fit #c2,
  body.dual-app.fill-fit #priPane,
  body.dual-app.fill-fit #secPane,
  body.single-app.fill-fit #c,
  body.single-app.fill-fit #priPane,
  body.float-overlay.dual-app.fill-fit #c,
  body.float-overlay.dual-app.fill-fit #priPane {
    max-width: none;
    max-height: none;
  }
  #v {
    width: 100%; height: 100%;
    object-fit: contain; object-position: center center;
    display: none;
  }
  body.dual-app #priPane > #v {
    width: auto;
    height: auto;
    max-width: none;
    max-height: none;
    flex-shrink: 0;
  }
  body.fill-fill #v { object-fit: cover; }
  body.fill-fit #v, body.fill-ambient #v { object-fit: contain; }
  body.fill-stretch #v { object-fit: fill; }
  #stage.align-edge.content-portrait #v { object-position: left center; }
  #stage.align-edge.content-landscape #v { object-position: center top; }
  #stage.align-center #v { object-position: center center; }
  body.app-cast-touch #stage,
  body.app-cast-touch #paneRow { touch-action: none; }
  body.app-cast-touch #dockPanel,
  body.app-cast-touch #dockFabPreview {
    touch-action: manipulation;
  }
  body.app-cast-touch:not(.dock-collapsed) #dockFab {
    touch-action: manipulation;
  }
  body.app-cast-touch #c,
  body.app-cast-touch #c2 {
    touch-action: none;
    pointer-events: auto;
  }
  body.app-cast-touch #v { pointer-events: none; }
  body.app-cast-touch.mirror-cast #stage { touch-action: none; }
    #appDrawerBackdrop {
    position: fixed; inset: 0; z-index: 119;
    background: rgba(0, 0, 0, 0.35);
    opacity: 0; pointer-events: none;
    transition: opacity .28s ease;
  }
  #appDrawerBackdrop.open { opacity: 1; pointer-events: auto; }
  body.app-drawer-animating #appDrawerBackdrop {
    transition: none;
  }
  #appDrawer {
    position: fixed; left: 0; right: 0; bottom: 0; z-index: 120;
    height: 90vh;
    max-height: 90vh;
    background: rgba(28, 32, 40, 0.62);
    border-top: 1px solid rgba(255, 255, 255, 0.35);
    border-radius: 18px 18px 0 0;
    transform: translateY(110%);
    transition: transform .28s ease;
    display: flex; flex-direction: column;
    backdrop-filter: blur(24px) saturate(180%);
    -webkit-backdrop-filter: blur(24px) saturate(180%);
    box-shadow: 0 -12px 40px rgba(0, 0, 0, 0.28);
    touch-action: none;
  }
  #appDrawer.open { transform: translateY(0); }
  body.app-drawer-animating #appDrawer {
    transition: none;
  }
  body.app-drawer-dragging #appDrawer {
    transition: none;
  }
  #appDrawerGrabber {
    flex-shrink: 0;
    display: flex;
    justify-content: center;
    padding: 8px 0 2px;
    touch-action: none;
    cursor: grab;
  }
  #appDrawerGrabber span {
    width: 36px;
    height: 5px;
    border-radius: 3px;
    background: rgba(255, 255, 255, 0.28);
  }
  body.app-drawer-dragging #appDrawerGrabber {
    cursor: grabbing;
  }
  #appDrawerChrome {
    position: sticky;
    top: 0;
    z-index: 2;
    flex-shrink: 0;
    background: transparent;
  }
  #appDrawer.has-body-scroll #appDrawerChrome::after {
    content: '';
    position: absolute;
    left: 0;
    right: 0;
    bottom: -12px;
    height: 12px;
    pointer-events: none;
    background: linear-gradient(180deg, rgba(0, 0, 0, 0.18) 0%, transparent 100%);
  }
  #appDrawerHead {
    display: flex; align-items: center; gap: 10px;
    padding: 6px 16px 8px; flex-shrink: 0;
  }
  .appDrawerHeadText {
    flex: 1;
    min-width: 0;
  }
  .appDrawerTitleRow {
    display: flex;
    align-items: center;
    gap: 8px;
    min-width: 0;
  }
  #appDrawerTitle {
    margin: 0;
    font: 600 16px/1.2 -apple-system, "PingFang SC", sans-serif;
    color: #fff;
    letter-spacing: -0.01em;
  }
  #appDrawerModeBadge {
    flex-shrink: 0;
    padding: 3px 8px;
    border-radius: 999px;
    background: rgba(255, 255, 255, 0.12);
    color: rgba(255, 255, 255, 0.82);
    font: 600 11px/1 -apple-system, "PingFang SC", sans-serif;
    letter-spacing: 0.04em;
  }
  #appDrawerModeBadge.hidden { display: none; }
  #appDrawerSubtitle {
    margin: 4px 0 0;
    font: 500 12px/1.35 -apple-system, "PingFang SC", sans-serif;
    color: rgba(255, 255, 255, 0.58);
    letter-spacing: 0.02em;
  }
  #appDrawerSubtitle.hidden { display: none; }
  #appDrawerClose {
    margin: 0; box-sizing: border-box; flex-shrink: 0;
    min-height: 40px; padding: 0 14px;
    border: 1px solid rgba(255,255,255,.16);
    border-radius: 12px; cursor: pointer;
    background: rgba(255,255,255,.1); color: #fff;
    font: 600 13px/1 -apple-system, "PingFang SC", sans-serif;
    transition: transform 80ms ease-out, background 80ms ease-out, opacity 80ms ease-out;
  }
  #appDrawerClose.is-pressed,
  #appDrawerClose:active {
    transform: scale(0.96);
    background: rgba(255, 255, 255, 0.16);
  }
  #appSearchWrap {
    position: relative;
    margin: 0 16px 10px;
    flex-shrink: 0;
  }
  #appSearch {
    margin: 0; box-sizing: border-box; width: 100%;
    min-height: 44px; padding: 0 40px 0 14px;
    border: 1px solid rgba(255,255,255,.14);
    border-radius: 12px; background: rgba(255,255,255,.08);
    color: #fff; font: 500 16px/1 -apple-system, "PingFang SC", sans-serif;
    transition: border-color 120ms ease, box-shadow 120ms ease, background 120ms ease;
  }
  #appSearch:focus {
    outline: none;
    border-color: rgba(120, 190, 255, 0.55);
    box-shadow: 0 0 0 3px rgba(96, 176, 255, 0.18);
    background: rgba(255, 255, 255, 0.1);
  }
  #appSearchClear {
    position: absolute;
    right: 6px;
    top: 50%;
    transform: translateY(-50%);
    width: 32px;
    height: 32px;
    margin: 0;
    padding: 0;
    border: 0;
    border-radius: 50%;
    background: rgba(255, 255, 255, 0.12);
    color: rgba(255, 255, 255, 0.85);
    font: 600 18px/1 -apple-system, "PingFang SC", sans-serif;
    cursor: pointer;
    transition: transform 80ms ease-out, background 80ms ease-out;
  }
  #appSearchClear.hidden { display: none; }
  #appSearchClear.is-pressed,
  #appSearchClear:active {
    transform: translateY(-50%) scale(0.94);
    background: rgba(255, 255, 255, 0.2);
  }
  #appDrawerBody {
    overflow: auto; -webkit-overflow-scrolling: touch;
    padding: 0 16px 20px; flex: 1;
    touch-action: pan-y;
  }
  .appSectionTitle {
    margin: 12px 0 8px;
    font: 600 12px/1 -apple-system, "PingFang SC", sans-serif;
    color: rgba(255,255,255,.55);
    letter-spacing: .04em;
  }
  .appDrawerEmpty {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 10px;
    padding: 32px 16px 40px;
    text-align: center;
  }
  .appDrawerEmptyIcon {
    width: 52px;
    height: 52px;
    border-radius: 14px;
    border: 1px dashed rgba(255, 255, 255, 0.22);
    background: rgba(255, 255, 255, 0.04);
  }
  .appDrawerEmptyText {
    margin: 0;
    font: 500 14px/1.4 -apple-system, "PingFang SC", sans-serif;
    color: rgba(255, 255, 255, 0.55);
  }
  .appGridSkeleton .appFavSkeleton {
    width: 52px;
    height: 52px;
    border-radius: 14px;
    background: linear-gradient(90deg, rgba(255,255,255,.06), rgba(255,255,255,.12), rgba(255,255,255,.06));
    background-size: 200% 100%;
    animation: appDrawerSkeleton 1.2s ease-in-out infinite;
  }
  @keyframes appDrawerSkeleton {
    0% { background-position: 100% 0; }
    100% { background-position: -100% 0; }
  }
  #appDrawer .appFavRow,
  #appDrawer .appGridRow {
    display: grid;
    grid-template-columns: repeat(auto-fill, 72px);
    gap: 12px;
    margin-bottom: 8px;
    justify-content: start;
  }
  #appDrawer .appFavItem {
    position: relative;
    border: 0; background: transparent; color: #fff; cursor: pointer;
    font: inherit; padding: 0; text-align: left;
    width: 72px; max-width: 72px; min-height: 72px;
    display: flex; flex-direction: column; align-items: center; justify-content: center;
    gap: 0;
    justify-self: start;
    box-sizing: border-box;
    transition: transform 80ms ease-out, opacity 80ms ease-out, box-shadow 120ms ease;
  }
  #appDrawer .appFavItem.is-pressed {
    transform: scale(0.94);
  }
  #appDrawer .appFavItem.is-occupied {
    opacity: 0.42;
    cursor: not-allowed;
  }
  #appDrawer .appFavItem img {
    width: 52px !important;
    height: 52px !important;
    max-width: 52px !important;
    max-height: 52px !important;
    border-radius: 14px;
    background: rgba(255,255,255,.08);
    object-fit: cover;
    flex-shrink: 0;
    display: block;
    box-shadow: 0 2px 8px rgba(0, 0, 0, 0.2);
    transition: box-shadow 80ms ease-out;
  }
  #appDrawer .appFavItem .appIconFallback {
    display: none;
    width: 52px;
    height: 52px;
    border-radius: 14px;
    background: rgba(255,255,255,.12);
    box-shadow: 0 2px 8px rgba(0, 0, 0, 0.2);
    font: 600 22px/52px -apple-system, "PingFang SC", sans-serif;
    text-align: center;
    color: rgba(255,255,255,.85);
    flex-shrink: 0;
  }
  #appDrawer .appFavItem.no-icon img { display: none; }
  #appDrawer .appFavItem.no-icon .appIconFallback { display: block; }
  #appDrawer .appFavItem.is-pressed img {
    box-shadow: 0 1px 4px rgba(0, 0, 0, 0.15);
  }
  #appDrawer .appFavItemWrap {
    width: 72px;
  }
  #appDrawer .appFavItem .appLabel {
    display: none;
  }
  #appDrawer .appPresetHint {
    margin: -4px 0 10px;
    font: 500 11px/1.35 -apple-system, "PingFang SC", sans-serif;
    color: rgba(255,255,255,.45);
  }
  #appDrawer .preset-slot {
    margin: 0;
    padding: 0;
    box-sizing: border-box;
    width: 72px;
    height: 72px;
    border: 1px solid rgba(255,255,255,.12);
    border-radius: 14px;
    background: rgba(255,255,255,.06);
    cursor: pointer;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    position: relative;
    touch-action: none;
    transition: transform 80ms ease-out, border-color 120ms ease, box-shadow 120ms ease;
  }
  #appDrawer .preset-slot.is-pressed {
    transform: scale(0.96);
  }
  #appDrawer .preset-slot.empty {
    border-style: dashed;
    border-color: rgba(255,255,255,.28);
    background: rgba(255,255,255,.04);
  }
  #appDrawer .preset-slot.filled img {
    width: 52px !important;
    height: 52px !important;
    border-radius: 14px;
    object-fit: cover;
    display: block;
    pointer-events: none;
  }
  #appDrawer .preset-slot-empty-mark {
    font: 500 22px/1 -apple-system, "PingFang SC", sans-serif;
    color: rgba(255,255,255,.45);
    pointer-events: none;
  }
  #appDrawer .preset-slot.drop-target {
    border-color: rgba(96, 176, 255, .85);
    box-shadow: 0 0 0 2px rgba(96, 176, 255, .35);
  }
  #appDrawer .preset-slot.preset-editing {
    border-color: rgba(120, 190, 255, .85);
    box-shadow: 0 0 0 2px rgba(120, 190, 255, .35);
  }
  #appDrawer.preset-dragging #appDrawerBody {
    overflow: hidden;
    touch-action: none;
  }
  #appDrawer .appGridRow .appFavItem {
    touch-action: pan-y;
  }
  #appDrawer .appGridRow .appFavItem.is-long-press-ready {
    box-shadow: 0 0 0 2px rgba(96, 176, 255, .55);
  }
  #appDrawer .appGridRow .appFavItem.is-drag-source {
    opacity: 0.45;
  }
  #appPresetDragGhost {
    position: fixed;
    left: 0;
    top: 0;
    z-index: 130;
    width: 52px;
    height: 52px;
    border-radius: 14px;
    pointer-events: none;
    opacity: 0;
    transform: scale(1);
    transition: opacity .12s ease, transform 120ms ease, box-shadow 120ms ease;
    box-shadow: 0 8px 24px rgba(0,0,0,.35);
    overflow: hidden;
    background: rgba(255,255,255,.08);
  }
  #appPresetDragGhost.visible {
    opacity: 0.95;
    transform: scale(1.08);
    box-shadow: 0 12px 32px rgba(0, 0, 0, 0.45);
  }
  #appPresetDragGhost img {
    width: 52px;
    height: 52px;
    object-fit: cover;
    display: block;
  }
  #appPresetDragGhost.is-dual-ghost {
    width: calc(2 * var(--desktop-grid-unit, 96px) + var(--desktop-grid-gap, 32px));
    min-width: 0;
    height: var(--desktop-grid-unit, 96px);
    padding: 0 var(--desktop-dual-icons-padding-x, 12px);
    display: flex;
    align-items: center;
    justify-content: center;
    box-sizing: border-box;
  }
  #appPresetDragGhost.is-dual-ghost .cast-desktop-dual-icons {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: var(--desktop-dual-icons-gap, 22px);
    width: 100%;
    pointer-events: none;
  }
  #appPresetDragGhost.is-dual-ghost .cast-desktop-dual-icons > img {
    width: var(--desktop-dual-icon-size, 74px);
    height: var(--desktop-dual-icon-size, 74px);
    border-radius: var(--desktop-dual-icon-radius, 16px);
    object-fit: cover;
    display: block;
  }
  @media (prefers-reduced-motion: reduce) {
    #appDrawer, #appDrawerBackdrop {
      transition-duration: .01ms !important;
    }
    #appDrawer.open { transform: none !important; }
    #appDrawer:not(.open) { transform: none !important; opacity: 0; }
    #appDrawer.open { opacity: 1; }
    #appDrawer .appFavItem,
    #appDrawerClose,
    #appSearchClear,
    #appDrawer .preset-slot {
      transition-duration: .01ms !important;
      transform: none !important;
    }
    .appGridSkeleton .appFavSkeleton { animation: none !important; }
  }
  @media (prefers-reduced-transparency: reduce) {
    #appDrawer {
      background: rgba(20, 22, 28, 0.96);
      backdrop-filter: none;
      -webkit-backdrop-filter: none;
    }
  }
  #dualEntryBackdrop {
    position: fixed; inset: 0; z-index: 138;
    background: rgba(0, 0, 0, 0.35);
    opacity: 0; pointer-events: none;
    transition: opacity .28s ease;
  }
  #dualEntryBackdrop.open { opacity: 1; pointer-events: auto; }
  body.dual-entry-animating #dualEntryBackdrop {
    transition: none;
  }
  #dualEntrySheet {
    position: fixed; left: 50%; bottom: 0; z-index: 139;
    width: min(420px, 92vw);
    transform: translate(-50%, 110%);
    transition: transform .28s ease;
    background: rgba(28, 32, 40, 0.62);
    border: 1px solid rgba(255, 255, 255, 0.12);
    border-bottom: 0;
    border-radius: 16px 16px 0 0;
    padding: 0 0 calc(16px + env(safe-area-inset-bottom, 0px));
    color: #fff;
    box-shadow: 0 -12px 40px rgba(0, 0, 0, 0.28);
    backdrop-filter: blur(24px) saturate(180%);
    -webkit-backdrop-filter: blur(24px) saturate(180%);
    pointer-events: none;
    touch-action: none;
  }
  #dualEntrySheet.open { transform: translate(-50%, 0); pointer-events: auto; }
  body.dual-entry-animating #dualEntrySheet {
    transition: none;
  }
  body.app-cast-touch #dualEntrySheet,
  body.app-cast-touch #dualEntryBackdrop.open {
    touch-action: manipulation;
  }
  #dualEntryGrabber {
    display: flex;
    justify-content: center;
    padding: 8px 0 4px;
    touch-action: none;
    cursor: grab;
  }
  #dualEntryGrabber span {
    width: 36px;
    height: 5px;
    border-radius: 3px;
    background: rgba(255, 255, 255, 0.28);
  }
  #dualEntryHeader {
    padding: 0 20px 12px;
  }
  #dualEntrySheet h3 {
    margin: 0 0 6px;
    font: 600 16px/1.25 -apple-system, "PingFang SC", sans-serif;
    letter-spacing: -0.01em;
  }
  #dualEntryHint {
    margin: 0;
    font: 400 13px/1.4 -apple-system, "PingFang SC", sans-serif;
    color: rgba(255,255,255,.58);
    letter-spacing: 0.02em;
  }
  #dualEntryOptions {
    display: flex;
    flex-direction: column;
    gap: 0;
    margin: 0 16px;
    border-radius: 14px;
    overflow: hidden;
    background: rgba(255, 255, 255, 0.06);
    border: 1px solid rgba(255, 255, 255, 0.1);
  }
  .dualEntryOption {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 4px;
    width: 100%;
    margin: 0;
    padding: 14px 16px;
    border: 0;
    border-bottom: 1px solid rgba(255, 255, 255, 0.08);
    border-radius: 0;
    background: transparent;
    color: #fff;
    cursor: pointer;
    text-align: left;
    transition: transform 80ms ease-out, background 80ms ease-out;
  }
  .dualEntryOption:last-child {
    border-bottom: none;
  }
  .dualEntryOption.is-pressed,
  .dualEntryOption:active {
    transform: scale(0.985);
    background: rgba(255, 255, 255, 0.08);
  }
  .dualEntryOption:hover,
  .dualEntryOption:focus-visible {
    background: rgba(255, 255, 255, 0.08);
    outline: none;
  }
  .dualEntryOptionTitle {
    font: 600 15px/1.3 -apple-system, "PingFang SC", sans-serif;
  }
  .dualEntryOptionHint {
    font: 400 12px/1.35 -apple-system, "PingFang SC", sans-serif;
    color: rgba(255,255,255,.55);
    letter-spacing: 0.02em;
  }
  body.dual-entry-chain #dualEntryBackdrop {
    pointer-events: none;
  }
  body.dual-entry-chain #appDrawerBackdrop.open {
    transition: none;
  }
  .dualEntryOption:disabled {
    opacity: 0.42;
    cursor: default;
    pointer-events: none;
  }
  #dualEntrySheet.layout-busy .dualEntryOption {
    opacity: 0.42;
    pointer-events: none;
  }
  #dualEntryCancel {
    display: block;
    width: calc(100% - 32px);
    margin: 10px 16px 0;
    min-height: 50px;
    padding: 12px 14px;
    border-radius: 14px;
    border: 1px solid rgba(255, 255, 255, 0.1);
    background: rgba(255, 255, 255, 0.08);
    color: rgba(255, 255, 255, 0.92);
    font: 600 15px/1.3 -apple-system, "PingFang SC", sans-serif;
    cursor: pointer;
    transition: transform 80ms ease-out, background 80ms ease-out;
  }
  #dualEntryCancel.is-pressed,
  #dualEntryCancel:active {
    transform: scale(0.98);
    background: rgba(255, 255, 255, 0.12);
  }
  @media (prefers-reduced-motion: reduce) {
    #dualEntrySheet, #dualEntryBackdrop {
      transition-duration: .01ms !important;
    }
    #dualEntrySheet.open { transform: translate(-50%, 0) !important; opacity: 1; }
    #dualEntrySheet:not(.open) { transform: translate(-50%, 0) !important; opacity: 0; }
    .dualEntryOption, #dualEntryCancel {
      transition-duration: .01ms !important;
      transform: none !important;
    }
  }
  @media (prefers-reduced-transparency: reduce) {
    #dualEntrySheet {
      background: rgba(20, 22, 28, 0.96);
      backdrop-filter: none;
      -webkit-backdrop-filter: none;
    }
  }
  #closeSplitBackdrop {
    position: fixed; inset: 0; z-index: 140;
    background: rgba(0, 0, 0, 0.35);
    opacity: 0; pointer-events: none;
    transition: opacity .28s ease;
  }
  #closeSplitBackdrop.open { opacity: 1; pointer-events: auto; }
  body.split-sheet-animating #closeSplitBackdrop {
    transition: none;
  }
  #closeSplitSheet {
    position: fixed; left: 50%; bottom: 0; z-index: 141;
    width: min(420px, 92vw);
    transform: translate(-50%, 110%);
    transition: transform .28s ease;
    background: rgba(28, 32, 40, 0.62);
    border: 1px solid rgba(255, 255, 255, 0.12);
    border-bottom: 0;
    border-radius: 16px 16px 0 0;
    padding: 0 0 calc(16px + env(safe-area-inset-bottom, 0px));
    color: #fff;
    box-shadow: 0 -12px 40px rgba(0, 0, 0, 0.28);
    backdrop-filter: blur(24px) saturate(180%);
    -webkit-backdrop-filter: blur(24px) saturate(180%);
    pointer-events: none;
    touch-action: none;
  }
  #closeSplitSheet.open { transform: translate(-50%, 0); pointer-events: auto; }
  body.split-sheet-animating #closeSplitSheet {
    transition: none;
  }
  body.app-cast-touch #closeSplitSheet,
  body.app-cast-touch #closeSplitBackdrop.open {
    touch-action: manipulation;
  }
  #closeSplitGrabber {
    display: flex;
    justify-content: center;
    padding: 8px 0 4px;
    touch-action: none;
    cursor: grab;
  }
  #closeSplitGrabber span {
    width: 36px;
    height: 5px;
    border-radius: 3px;
    background: rgba(255, 255, 255, 0.28);
  }
  #closeSplitHeader {
    padding: 0 20px 10px;
  }
  #closeSplitSheet h3 {
    margin: 0;
    font: 600 16px/1.25 -apple-system, "PingFang SC", sans-serif;
    letter-spacing: -0.01em;
  }
  #closeSplitSheet .splitManageSectionLabel {
    margin: 0 16px 10px;
    font: 600 12px/1.3 -apple-system, "PingFang SC", sans-serif;
    color: rgba(255,255,255,.55);
    letter-spacing: 0.04em;
  }
  .overlayManageHint,
  .splitManageHint {
    margin: 0 16px 14px;
    font: 400 13px/1.45 -apple-system, "PingFang SC", sans-serif;
    color: rgba(255,255,255,.58);
    letter-spacing: 0.02em;
  }
  .overlayManageAction.split-convert-pending {
    opacity: .55;
  }
  .splitManageActionGroup {
    margin: 0 16px;
    border-radius: 14px;
    overflow: hidden;
    background: rgba(255, 255, 255, 0.06);
    border: 1px solid rgba(255, 255, 255, 0.1);
  }
  .overlayManageAction {
    display: block;
    width: 100%;
    margin: 0;
    padding: 14px 16px;
    border: 0;
    border-bottom: 1px solid rgba(255, 255, 255, 0.08);
    border-radius: 0;
    background: transparent;
    color: rgba(255,255,255,.92);
    font: 600 15px/1.2 -apple-system, "PingFang SC", sans-serif;
    cursor: pointer;
    text-align: center;
    transition: transform 80ms ease-out, background 80ms ease-out;
  }
  .splitManageActionGroup .overlayManageAction:last-child {
    border-bottom: none;
  }
  .overlayManageAction.is-pressed,
  .overlayManageAction:active {
    transform: scale(0.985);
    background: rgba(255, 255, 255, 0.08);
  }
  .overlayManageAction.overlayManageDanger {
    border-color: transparent;
    background: transparent;
    color: #ff6961;
  }
  .overlayManageAction.overlayManageDanger.is-pressed,
  .overlayManageAction.overlayManageDanger:active {
    background: rgba(255, 69, 58, 0.12);
  }
  body.overlay-manage-mode #splitManageSection { display: none !important; }
  body.overlay-manage-mode #overlayManageSection { display: block !important; }
  body:not(.overlay-manage-mode) #overlayManageSection { display: none !important; }
  #splitManageRatioOptions {
    display: grid;
    grid-template-columns: repeat(5, minmax(0, 1fr));
    gap: 6px;
    margin: 0 16px 14px;
  }
  .splitRatioOption {
    margin: 0;
    padding: 7px 4px 6px;
    border: 1px solid rgba(255,255,255,.12);
    border-radius: 10px;
    background: rgba(255,255,255,.05);
    color: rgba(255,255,255,.72);
    cursor: pointer;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 5px;
    min-height: 52px;
    transition: transform 80ms ease-out, background 120ms ease, border-color 120ms ease, color 120ms ease;
  }
  .splitRatioOption.on {
    background: rgba(10, 132, 255, 0.22);
    border-color: rgba(10, 132, 255, 0.55);
    color: #fff;
    box-shadow: inset 0 0 0 1px rgba(10, 132, 255, 0.15);
  }
  .splitRatioOption.is-pressed,
  .splitRatioOption:active {
    transform: scale(0.96);
  }
  .splitRatioBars {
    display: flex;
    align-items: stretch;
    width: 100%;
    height: 18px;
    gap: 2px;
    border-radius: 4px;
    overflow: hidden;
  }
  .splitRatioBar {
    display: block;
    min-width: 0;
    border-radius: 2px;
    background: rgba(255,255,255,.35);
  }
  .splitRatioOption.on .splitRatioBar { background: rgba(255,255,255,.92); }
  .splitRatioLabel {
    font: 600 12px/1 -apple-system, "PingFang SC", sans-serif;
    letter-spacing: 0.04em;
  }
  @media (prefers-reduced-motion: reduce) {
    #closeSplitSheet, #closeSplitBackdrop {
      transition-duration: .01ms !important;
    }
    #closeSplitSheet.open { transform: translate(-50%, 0) !important; opacity: 1; }
    #closeSplitSheet:not(.open) { transform: translate(-50%, 0) !important; opacity: 0; }
    .overlayManageAction, .splitRatioOption {
      transition-duration: .01ms !important;
      transform: none !important;
    }
  }
  @media (prefers-reduced-transparency: reduce) {
    #closeSplitSheet {
      background: rgba(20, 22, 28, 0.96);
      backdrop-filter: none;
      -webkit-backdrop-filter: none;
    }
  }
  #appToast {
    position: fixed; left: 50%;
    top: calc(12px + env(safe-area-inset-top, 0px));
    bottom: auto;
    z-index: 130;
    transform: translateX(-50%) translateY(-12px);
    padding: 12px 20px; border-radius: 14px;
    background: rgba(0,0,0,.88); color: #fff;
    font: 600 24px/1.35 -apple-system, "PingFang SC", sans-serif;
    text-shadow: 0 1px 2px rgba(0, 0, 0, 0.35);
    opacity: 0; pointer-events: none; transition: opacity .2s, transform .2s, top .2s;
  }
  #appToast.show { opacity: 1; transform: translateX(-50%) translateY(0); }
  body.app-drawer-open #appToast {
    z-index: 131;
  }

  /* 应用投屏首屏桌面 */
  body.cast-desktop-active #paneRow {
    will-change: transform, opacity;
  }
  body.cast-desktop-active.fill-ambient #ambient,
  body.cast-desktop-active.fill-ambient #ambientDim {
    opacity: 1;
  }
  body.cast-desktop-active.fill-ambient #ambientDim {
    background: var(--desktop-skin-ambient-dim-desktop, rgba(0, 0, 0, 0.22));
  }
  body.cast-desktop-active:not(.fill-ambient) #ambient,
  body.cast-desktop-active:not(.fill-ambient) #ambientDim {
    opacity: 0;
  }
  body.cast-desktop-active #brandField {
    opacity: 0.35;
  }
  body.cast-desktop-active #brandGlow {
    animation: none !important;
    box-shadow: none;
  }
  /* skin tokens for default: see base (pre-boot) */
  #castDesktop {
    position: absolute;
    inset: 0;
    z-index: 12;
    display: flex;
    flex-direction: column;
    align-items: stretch;
    justify-content: space-between;
    overflow: hidden;
    pointer-events: auto;
    transform-origin: center center;
    background: var(--desktop-skin-canvas-blur);
    backdrop-filter: blur(36px) saturate(175%);
    -webkit-backdrop-filter: blur(36px) saturate(175%);
    opacity: 1;
    visibility: visible;
    transition: background 500ms ease;
    --cast-sheet-bg: rgba(28, 32, 40, 0.72);
    --cast-sheet-bg-opaque: rgb(28, 32, 40);
    --cast-sheet-border: rgba(255, 255, 255, 0.12);
    --cast-sheet-title: rgba(255, 255, 255, 0.96);
    --cast-sheet-text: rgba(255, 255, 255, 0.88);
    --cast-sheet-text-strong: #fff;
    --cast-sheet-surface: rgba(255, 255, 255, 0.06);
    --cast-sheet-surface-hover: rgba(255, 255, 255, 0.08);
    --cast-sheet-divider: rgba(255, 255, 255, 0.08);
    --cast-sheet-accent: #88b4ff;
    --cast-sheet-accent-soft: rgba(136, 180, 255, 0.22);
    --cast-sheet-selected-text: rgba(255, 255, 255, 0.96);
    --cast-sheet-selected-border: rgba(255, 255, 255, 0.58);
    --cast-sheet-selected-ring: rgba(255, 255, 255, 0.2);
    --cast-sheet-font-title: 600 20px/1.25 -apple-system, "PingFang SC", sans-serif;
    --cast-sheet-font-label: 600 17px/1.3 -apple-system, "PingFang SC", sans-serif;
    --cast-sheet-font-body: 600 18px/1.35 -apple-system, "PingFang SC", sans-serif;
    --cast-sheet-font-secondary: 500 17px/1.35 -apple-system, "PingFang SC", sans-serif;
    --cast-sheet-font-caption: 500 14px/1.45 -apple-system, "PingFang SC", sans-serif;
    --cast-sheet-width: min(420px, 46vw);
    --cast-sheet-padding: 20px 20px 16px;
    --cast-sheet-option-min-h: 56px;
    --cast-sheet-btn-min-h: 52px;
    --cast-sheet-glyph-size: 24px;
    --cast-sheet-radius: 18px;
  }
  body.cast-desktop-active:not(.fill-ambient) #castDesktop,
  body.cast-desktop-active.car-perf #castDesktop {
    background: var(--desktop-skin-canvas);
    backdrop-filter: none;
    -webkit-backdrop-filter: none;
  }
  /* skin tokens for dusk: see base (pre-boot) */
  /* skin tokens for carbon: see base (pre-boot) */
  body.cast-desktop-active:not(.fill-ambient) #brandField,
  body.cast-desktop-active.car-perf #brandField {
    opacity: 0;
  }
  .cast-desktop-backplate {
    --cast-desktop-tint-r: 88;
    --cast-desktop-tint-g: 140;
    --cast-desktop-tint-b: 220;
    position: absolute;
    inset: 0;
    z-index: 0;
    pointer-events: none;
    background: var(--desktop-skin-backplate);
    transition: background 500ms ease;
  }
  .cast-desktop-backplate::before,
  .cast-desktop-backplate::after {
    content: none;
    position: absolute;
    pointer-events: none;
    z-index: 0;
  }
  body[data-cast-skin="dusk"] .cast-desktop-backplate::after,
  body[data-cast-skin="dusk"] .stage-shell-backplate::after {
    content: "";
    left: 50%;
    top: 78%;
    width: 140%;
    height: 14%;
    transform: translate(-50%, -50%);
    background: radial-gradient(ellipse at center, rgba(232, 145, 90, 0.1) 0%, rgba(232, 145, 90, 0.03) 45%, transparent 72%);
  }
  body[data-cast-skin="carbon"] .cast-desktop-backplate::before,
  body[data-cast-skin="carbon"] .stage-shell-backplate::before {
    content: "";
    inset: 0;
    background: repeating-linear-gradient(
      45deg,
      rgba(28, 28, 34, 0.55) 0 2px,
      transparent 2px 4px
    );
    opacity: 0.06;
  }
  body[data-cast-skin="carbon"] .cast-desktop-backplate::after,
  body[data-cast-skin="carbon"] .stage-shell-backplate::after {
    content: "";
    left: 5%;
    bottom: 12%;
    width: 220px;
    height: 220px;
    background: radial-gradient(circle, rgba(212, 160, 84, 0.14) 0%, rgba(212, 160, 84, 0.04) 45%, transparent 70%);
    filter: blur(32px);
  }
  .cast-desktop-sky {
    position: absolute;
    inset: 0;
    z-index: 0;
    pointer-events: none;
    background: var(--desktop-skin-sky);
    transition: background 500ms ease;
    overflow: hidden;
  }
  .cast-desktop-backplate.has-accent .cast-desktop-sky {
    background:
      radial-gradient(
        ellipse 125% 58% at 50% 0%,
        rgb(var(--cast-desktop-tint-r) var(--cast-desktop-tint-g) var(--cast-desktop-tint-b) / 0.09) 0%,
        var(--desktop-skin-sky-accent-fallback) 38%,
        transparent 68%
      );
  }
  .cast-desktop-lift {
    position: absolute;
    inset: 0;
    z-index: 1;
    pointer-events: none;
    background: var(--desktop-skin-lift);
    transition: background 500ms ease;
  }
  .cast-desktop-accent-glow {
    position: absolute;
    inset: 0;
    z-index: 2;
    pointer-events: none;
    opacity: 0;
    transition: opacity 400ms ease;
  }
  .cast-desktop-settings-btn {
    position: absolute;
    top: max(8px, env(safe-area-inset-top, 0px));
    right: max(12px, env(safe-area-inset-right, 0px));
    z-index: 4;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 80px;
    height: 80px;
    padding: 0;
    border: 0;
    border-radius: 0;
    background: transparent;
    cursor: pointer;
    -webkit-tap-highlight-color: transparent;
    filter: drop-shadow(0 1px 3px rgba(0, 0, 0, 0.45));
    transition: opacity 160ms ease, transform 160ms ease;
  }
  .cast-desktop-settings-btn:hover,
  .cast-desktop-settings-btn:active {
    transform: scale(1.04);
  }
  .cast-desktop-settings-btn:focus-visible {
    outline: 2px solid rgba(255, 255, 255, 0.72);
    outline-offset: 3px;
    border-radius: 16px;
  }
  .cast-desktop-settings-icon {
    display: block;
    width: 40px;
    height: 40px;
    flex-shrink: 0;
    object-fit: contain;
    object-position: center center;
    filter: brightness(0) invert(1);
    opacity: 0.92;
    transition: opacity 400ms ease;
  }
  .cast-desktop-settings-btn:hover .cast-desktop-settings-icon,
  .cast-desktop-settings-btn:active .cast-desktop-settings-icon {
    opacity: 1;
  }
  /* 进桌面 3s 后浅灰；仅点击恢复，hover 不提亮 */
  #castDesktop.settings-dimmed .cast-desktop-settings-icon,
  #castDesktop.settings-dimmed .cast-desktop-settings-btn:hover .cast-desktop-settings-icon,
  #castDesktop.settings-dimmed .cast-desktop-settings-btn:active .cast-desktop-settings-icon {
    opacity: 0.38;
  }
  #castDesktop.dual-manage-open .cast-desktop-settings-btn,
  #castDesktop.app-manage-open .cast-desktop-settings-btn,
  #castDesktop.settings-open .cast-desktop-settings-btn,
  #castDesktop.is-delete-mode .cast-desktop-settings-btn,
  body.cast-desktop-dragging #castDesktop .cast-desktop-settings-btn {
    opacity: 0;
    pointer-events: none;
  }
  #castDesktop.settings-open .cast-desktop-main {
    pointer-events: none;
  }
  .cast-desktop-settings-backdrop {
    position: absolute;
    inset: 0;
    z-index: 28;
    background: rgba(0, 0, 0, 0.35);
    opacity: 0;
    pointer-events: none;
    transition: opacity .22s ease;
  }
  .cast-desktop-settings-backdrop.open {
    opacity: 1;
    pointer-events: auto;
  }
  .cast-desktop-settings-sheet {
    position: absolute;
    left: 50%;
    bottom: calc(16px + env(safe-area-inset-bottom, 0px));
    z-index: 29;
    width: var(--cast-sheet-width);
    transform: translate(-50%, 120%);
    transition: transform .24s ease;
    padding: var(--cast-sheet-padding);
    border-radius: var(--cast-sheet-radius);
    border: 1px solid var(--cast-sheet-border);
    background: var(--cast-sheet-bg);
    backdrop-filter: blur(24px) saturate(180%);
    -webkit-backdrop-filter: blur(24px) saturate(180%);
    box-shadow: 0 12px 40px rgba(0, 0, 0, 0.32);
    color: var(--cast-sheet-text);
    pointer-events: none;
  }
  .cast-desktop-settings-sheet.open {
    transform: translate(-50%, 0);
    pointer-events: auto;
  }
  .cast-desktop-settings-title {
    margin: 0 0 14px;
    font: var(--cast-sheet-font-title);
    text-align: center;
    color: var(--cast-sheet-title);
  }
  .cast-desktop-settings-section {
    margin-bottom: 14px;
  }
  .cast-desktop-settings-section:last-of-type {
    margin-bottom: 12px;
  }
  .cast-desktop-settings-label {
    margin: 0 0 8px;
    font: var(--cast-sheet-font-label);
    color: var(--cast-sheet-text);
  }
  .cast-desktop-settings-skins {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 8px;
  }
  .cast-desktop-settings-skin-card {
    display: flex;
    flex-direction: column;
    align-items: stretch;
    gap: 6px;
    padding: 8px;
    border: 1px solid var(--cast-sheet-border);
    border-radius: 12px;
    background: var(--cast-sheet-surface);
    cursor: pointer;
    transition: border-color 160ms ease, transform 160ms ease, box-shadow 160ms ease;
  }
  .cast-desktop-settings-skin-card:hover {
    border-color: var(--cast-sheet-selected-border);
  }
  .cast-desktop-settings-skin-card.is-active {
    border-color: var(--cast-sheet-selected-border);
    box-shadow: 0 0 0 1px var(--cast-sheet-selected-ring);
    transform: scale(1.02);
  }
  .cast-desktop-settings-skin-card:focus-visible {
    outline: 2px solid var(--cast-sheet-accent);
    outline-offset: 2px;
  }
  .cast-desktop-settings-skin-preview {
    display: block;
    width: 100%;
    height: 44px;
    border-radius: 8px;
    border: 1px solid rgba(255, 255, 255, 0.08);
  }
  .cast-desktop-settings-skin-preview--dusk {
    background:
      radial-gradient(ellipse 88% 58% at 50% 24%, rgb(42, 31, 61) 0%, transparent 72%),
      radial-gradient(ellipse 90% 40% at 50% 100%, rgba(232, 145, 90, 0.22) 0%, transparent 65%),
      linear-gradient(175deg, rgb(28, 22, 34) 0%, rgb(14, 12, 20) 100%);
  }
  .cast-desktop-settings-skin-preview--carbon {
    background:
      radial-gradient(ellipse 88% 58% at 50% 24%, rgb(28, 28, 32) 0%, transparent 72%),
      linear-gradient(175deg, rgb(18, 18, 20) 0%, rgb(8, 8, 10) 100%);
  }
  .cast-desktop-settings-skin-preview--abyss {
    background:
      radial-gradient(circle at 82% 18%, rgba(59, 130, 246, 0.78) 0%, transparent 42%),
      radial-gradient(circle at 12% 88%, rgba(16, 185, 129, 0.68) 0%, transparent 40%),
      radial-gradient(circle at 42% 48%, rgba(124, 58, 237, 0.58) 0%, transparent 38%),
      linear-gradient(175deg, #020617 0%, #0f172a 100%);
  }
  .cast-desktop-settings-skin-preview--nebula {
    background:
      radial-gradient(circle at 18% 22%, rgba(236, 72, 153, 0.78) 0%, transparent 42%),
      radial-gradient(circle at 82% 78%, rgba(6, 182, 212, 0.72) 0%, transparent 40%),
      radial-gradient(circle at 48% 52%, rgba(139, 92, 246, 0.55) 0%, transparent 38%),
      linear-gradient(175deg, #0a0612 0%, #1a0f2e 100%);
  }
  .cast-desktop-settings-skin-name {
    font: var(--cast-sheet-font-label);
    text-align: center;
    color: var(--cast-sheet-text);
  }
  .cast-desktop-settings-skin-card.is-active .cast-desktop-settings-skin-name {
    color: var(--cast-sheet-selected-text);
  }
  .cast-desktop-settings-segment {
    display: flex;
    padding: 3px;
    border-radius: 12px;
    border: 1px solid var(--cast-sheet-border);
    background: var(--cast-sheet-surface);
  }
  .cast-desktop-settings-segment-btn {
    flex: 1 1 50%;
    min-height: var(--cast-sheet-btn-min-h);
    border: 0;
    border-radius: 9px;
    background: transparent;
    font: var(--cast-sheet-font-body);
    color: var(--cast-sheet-text);
    cursor: pointer;
    transition: background 160ms ease, color 160ms ease, box-shadow 160ms ease;
  }
  .cast-desktop-settings-segment-btn.is-active {
    color: var(--cast-sheet-selected-text);
    background: var(--cast-sheet-bg);
    box-shadow: 0 0 0 1px var(--cast-sheet-selected-ring);
  }
  .cast-desktop-settings-segment-btn:focus-visible {
    outline: 2px solid var(--cast-sheet-accent);
    outline-offset: 1px;
  }
  .cast-desktop-settings-segment--dpi {
    display: grid;
    grid-template-columns: repeat(5, minmax(0, 1fr));
    gap: 3px;
  }
  .cast-desktop-settings-segment--dpi .cast-desktop-settings-segment-btn {
    flex: unset;
    min-height: 34px;
    padding: 6px 2px;
    font-size: 13px;
  }
  .cast-desktop-settings-hint {
    margin: 8px 0 0;
    font: var(--cast-sheet-font-caption);
    color: color-mix(in srgb, var(--cast-sheet-text) 78%, transparent);
    text-align: center;
  }
  .cast-desktop-settings-done {
    display: block;
    width: 100%;
    min-height: var(--cast-sheet-btn-min-h);
    margin-top: 4px;
    padding: 10px 14px;
    border: 1px solid var(--cast-sheet-border);
    border-radius: 12px;
    background: var(--cast-sheet-surface);
    color: var(--cast-sheet-text-strong);
    font: var(--cast-sheet-font-body);
    cursor: pointer;
  }
  .cast-desktop-settings-done:active {
    opacity: 0.85;
  }
  .cast-desktop-settings-done:focus-visible {
    outline: 2px solid var(--cast-sheet-accent);
    outline-offset: 2px;
  }
  .cast-desktop-settings-section--init {
    margin-top: 4px;
  }
  .cast-desktop-settings-init-btn {
    display: block;
    width: 100%;
    min-height: var(--cast-sheet-btn-min-h);
    padding: 10px 14px;
    border: 1px solid var(--cast-sheet-border);
    border-radius: 12px;
    background: var(--cast-sheet-surface);
    color: var(--cast-sheet-text-strong);
    font: var(--cast-sheet-font-body);
    cursor: pointer;
  }
  .cast-desktop-settings-init-btn:hover:not(:disabled) {
    background: var(--cast-sheet-surface-hover);
  }
  .cast-desktop-settings-init-btn:disabled,
  .cast-desktop-settings-init-btn.is-busy {
    opacity: 0.55;
    cursor: default;
  }
  .cast-desktop-settings-init-btn:focus-visible {
    outline: 2px solid var(--cast-sheet-accent);
    outline-offset: 2px;
  }
  .cast-desktop-init-confirm-backdrop {
    position: fixed;
    inset: 0;
    z-index: 12050;
    background: rgba(0, 0, 0, 0.42);
    opacity: 0;
    pointer-events: none;
    transition: opacity 180ms ease;
  }
  .cast-desktop-init-confirm-backdrop.open {
    opacity: 1;
    pointer-events: auto;
  }
  .cast-desktop-init-confirm-sheet {
    position: fixed;
    left: 50%;
    bottom: 0;
    z-index: 12060;
    width: min(420px, 92vw);
    max-width: 100%;
    padding: 20px 20px 16px;
    border-radius: 18px 18px 0 0;
    border: 1px solid var(--cast-sheet-border);
    background: var(--cast-sheet-bg-opaque);
    color: var(--cast-sheet-text);
    transform: translate(-50%, 100%);
    transition: transform 220ms cubic-bezier(0.22, 1, 0.36, 1);
    pointer-events: none;
    box-sizing: border-box;
  }
  .cast-desktop-init-confirm-sheet.open {
    transform: translate(-50%, 0);
    pointer-events: auto;
  }
  .cast-desktop-init-confirm-title {
    margin: 0;
    font: var(--cast-sheet-font-title);
    color: var(--cast-sheet-title);
    text-align: center;
  }
  .cast-desktop-init-confirm-body {
    margin: 10px 0 0;
    font: var(--cast-sheet-font-caption);
    color: color-mix(in srgb, var(--cast-sheet-text) 82%, transparent);
    text-align: center;
    line-height: 1.45;
  }
  .cast-desktop-init-confirm-actions {
    display: flex;
    gap: 10px;
    margin-top: 16px;
  }
  .cast-desktop-init-confirm-btn {
    flex: 1 1 0;
    min-height: var(--cast-sheet-btn-min-h);
    padding: 10px 12px;
    border: 1px solid var(--cast-sheet-border);
    border-radius: 12px;
    background: var(--cast-sheet-surface);
    color: var(--cast-sheet-text-strong);
    font: var(--cast-sheet-font-secondary);
    cursor: pointer;
  }
  .cast-desktop-init-confirm-btn--primary {
    border-color: color-mix(in srgb, var(--cast-sheet-accent) 55%, var(--cast-sheet-border));
    background: color-mix(in srgb, var(--cast-sheet-accent-soft) 75%, var(--cast-sheet-surface));
  }
  .cast-desktop-init-confirm-btn:disabled {
    opacity: 0.55;
    cursor: default;
  }
  .cast-desktop-init-confirm-btn:focus-visible {
    outline: 2px solid var(--cast-sheet-accent);
    outline-offset: 2px;
  }
  /* 影院模式：iOS 式居中 Alert（毛玻璃 + 底栏双按钮，车机触控放大） */
  .cinema-mode-confirm-backdrop {
    position: fixed;
    inset: 0;
    z-index: 13050;
    background: rgba(0, 0, 0, 0.38);
    -webkit-backdrop-filter: blur(10px) saturate(160%);
    backdrop-filter: blur(10px) saturate(160%);
    opacity: 0;
    pointer-events: none;
    transition: opacity 220ms ease;
  }
  .cinema-mode-confirm-backdrop.open {
    opacity: 1;
    pointer-events: auto;
  }
  .cinema-mode-confirm-sheet {
    position: fixed;
    left: 50%;
    top: 50%;
    z-index: 13060;
    width: min(600px, 92vw);
    max-width: 100%;
    margin: 0;
    padding: 0;
    border: 1px solid rgba(255, 255, 255, 0.14);
    border-radius: 28px;
    background: color-mix(in srgb, rgba(36, 38, 44, 0.88) 92%, transparent);
    -webkit-backdrop-filter: blur(40px) saturate(180%);
    backdrop-filter: blur(40px) saturate(180%);
    color: var(--cast-sheet-text);
    box-shadow:
      0 0 0 0.5px rgba(255, 255, 255, 0.06) inset,
      0 22px 70px rgba(0, 0, 0, 0.48);
    transform: translate(-50%, -50%) scale(0.94);
    opacity: 0;
    pointer-events: none;
    transition:
      transform 320ms cubic-bezier(0.22, 1, 0.36, 1),
      opacity 200ms ease;
    box-sizing: border-box;
    overflow: hidden;
  }
  .cinema-mode-confirm-sheet.open {
    transform: translate(-50%, -50%) scale(1);
    opacity: 1;
    pointer-events: auto;
  }
  body.cinema-mode-confirm-open {
    overflow: hidden;
  }
  .cinema-mode-confirm-content {
    padding: 40px 36px 28px;
    text-align: center;
  }
  .cinema-mode-confirm-title {
    margin: 0;
    font: 600 34px/1.25 -apple-system, "PingFang SC", sans-serif;
    letter-spacing: -0.02em;
    color: var(--cast-sheet-title);
  }
  .cinema-mode-confirm-body {
    margin: 16px 0 0;
    font: 400 26px/1.45 -apple-system, "PingFang SC", sans-serif;
    letter-spacing: -0.01em;
    color: color-mix(in srgb, var(--cast-sheet-text) 78%, transparent);
  }
  .cinema-mode-confirm-actions {
    display: flex;
    border-top: 1px solid rgba(255, 255, 255, 0.12);
  }
  .cinema-mode-confirm-btn {
    flex: 1 1 0;
    min-height: 88px;
    margin: 0;
    padding: 20px 16px;
    border: 0;
    border-radius: 0;
    background: transparent;
    color: var(--cast-sheet-accent);
    font: 400 34px/1.2 -apple-system, "PingFang SC", sans-serif;
    cursor: pointer;
    -webkit-tap-highlight-color: transparent;
    transition: background 100ms ease-out, opacity 100ms ease-out;
  }
  .cinema-mode-confirm-btn + .cinema-mode-confirm-btn {
    border-left: 1px solid rgba(255, 255, 255, 0.12);
  }
  .cinema-mode-confirm-btn--primary {
    font-weight: 600;
  }
  .cinema-mode-confirm-btn:active {
    background: rgba(255, 255, 255, 0.08);
  }
  .cinema-mode-confirm-btn:focus-visible {
    outline: 4px solid var(--cast-sheet-accent);
    outline-offset: -4px;
  }
  @media (prefers-reduced-motion: reduce) {
    .cinema-mode-confirm-backdrop,
    .cinema-mode-confirm-sheet {
      transition: none;
    }
    .cinema-mode-confirm-sheet.open {
      transform: translate(-50%, -50%);
    }
  }
  .cast-desktop-main {
    position: relative;
    z-index: 1;
    flex: 1 1 auto;
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: 0;
    padding: 24px 16px 8px;
    box-sizing: border-box;
    will-change: transform, opacity;
  }
  #castDesktop.hidden {
    opacity: 0;
    visibility: hidden;
    pointer-events: none;
  }
  #castDesktop.cast-desktop-leaving {
    pointer-events: none;
  }
  body.cast-desktop-active #priPane,
  body.cast-desktop-active #secPane,
  body.cast-desktop-active #dualSplitHandle {
    visibility: hidden;
  }
  body.cast-desktop-active #dockFab,
  body.cast-desktop-active #dockPanel,
  body.cast-desktop-active #dockFabPreview {
    opacity: 0 !important;
    visibility: hidden !important;
    pointer-events: none !important;
    transform: translateY(100%) !important;
  }
  body.cast-desktop-active #stage {
    bottom: 0 !important;
  }
  body.cast-desktop-active #appToast {
    top: calc(12px + env(safe-area-inset-top, 0px));
    bottom: auto;
  }
  .cast-task-island {
    --task-island-icon: 56px;
    --task-island-height: 74px;
    --task-island-border: var(--dock-border);
    flex: 0 0 auto;
    align-self: center;
    width: auto;
    max-width: 92vw;
    margin-bottom: max(24px, env(safe-area-inset-bottom, 0px));
    padding: 0 16px;
    box-sizing: border-box;
    z-index: 2;
    opacity: 0;
    pointer-events: none;
    will-change: transform, opacity;
  }
  .cast-task-island.is-shown {
    opacity: 1;
    pointer-events: auto;
  }
  .cast-task-island.hidden {
    display: none;
  }
  .cast-desktop-merge-bridge {
    position: absolute;
    z-index: 4;
    height: 0;
    border-top: 2px dashed var(--desktop-skin-merge-bridge);
    transform-origin: 0 50%;
    pointer-events: none;
    opacity: 0;
    transition: opacity 0.12s ease;
  }
  .cast-desktop-merge-bridge.hidden {
    display: none;
  }
  .cast-desktop-flip-overlay {
    position: absolute;
    inset: 0;
    z-index: 5;
    pointer-events: none;
    transition: opacity 0.18s ease;
  }
  .cast-desktop-flip-overlay.is-fading-out {
    opacity: 0;
  }
  .cast-desktop-merge-fly-icon {
    position: absolute;
    width: var(--desktop-dual-icon-size);
    height: var(--desktop-dual-icon-size);
    border-radius: var(--desktop-dual-icon-radius);
    object-fit: cover;
    transform: translate(-50%, -50%);
    box-shadow: 0 2px 10px rgba(0, 0, 0, 0.28);
    pointer-events: none;
  }
  .cast-desktop-flip-dual {
    position: absolute;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 0;
    width: var(--desktop-grid-unit);
    height: var(--desktop-grid-unit);
    transform: translate(-50%, -50%);
    border-radius: var(--desktop-slot-radius);
    border: none;
    background: transparent;
    box-shadow: none;
    box-sizing: border-box;
    overflow: visible;
    padding: 0 var(--desktop-dual-icons-padding-x);
  }
  .cast-desktop-flip-dual .cast-desktop-dual-icons {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: var(--desktop-dual-icons-gap);
    width: 100%;
    pointer-events: none;
  }
  .cast-desktop-flip-dual.is-splitting {
    overflow: hidden;
  }
  .cast-desktop-flip-dual img {
    width: var(--desktop-dual-icon-size);
    height: var(--desktop-dual-icon-size);
    border-radius: var(--desktop-dual-icon-radius);
    object-fit: cover;
    flex-shrink: 0;
    box-shadow: 0 2px 10px rgba(0, 0, 0, 0.28);
  }
  .cast-desktop-slot.is-merge-hidden {
    display: none !important;
    visibility: hidden !important;
    pointer-events: none !important;
    opacity: 0 !important;
  }
  .cast-desktop-grid.is-merge-layout-active .cast-desktop-slot.is-merge-hidden {
    transition: opacity 0.16s ease;
  }
  .cast-desktop-slot.is-merge-placeholder {
    pointer-events: none;
    border: 2px dashed rgba(255, 255, 255, 0.28) !important;
    border-style: dashed !important;
    border-color: rgba(255, 255, 255, 0.28) !important;
    background: transparent !important;
    box-shadow: none !important;
  }
  .cast-desktop-slot.is-merge-placeholder.dual {
    grid-column: span 2;
    width: calc(2 * var(--desktop-grid-unit) + var(--desktop-grid-gap));
  }
  .cast-desktop-slot.is-merge-placeholder > * {
    visibility: hidden;
  }
  .cast-task-island-inner {
    position: relative;
    display: flex;
    align-items: center;
    gap: 10px;
    min-height: var(--task-island-height);
    padding: 10px 14px;
    border-radius: 28px;
    border: 1px solid var(--task-island-border);
    border-top: 1px solid var(--task-island-border-top);
    background: var(--task-island-bg);
    backdrop-filter: blur(24px) saturate(180%);
    -webkit-backdrop-filter: blur(24px) saturate(180%);
    box-shadow:
      0 10px 40px rgba(0, 0, 0, 0.5),
      0 2px 8px rgba(0, 0, 0, 0.25),
      inset 0 0 0 1px rgba(255, 255, 255, 0.08);
    box-sizing: border-box;
    transition:
      border-color 0.16s ease,
      background 0.16s ease,
      box-shadow 0.16s ease;
  }
  .cast-task-island-inner.is-dismiss-ready {
    border-color: rgba(255, 120, 120, 0.42);
    background: rgba(48, 24, 28, 0.72);
    box-shadow:
      0 10px 40px rgba(0, 0, 0, 0.5),
      0 2px 8px rgba(0, 0, 0, 0.25),
      inset 0 0 0 1px rgba(255, 140, 140, 0.18);
  }
  .cast-task-island-badge {
    flex: 0 0 auto;
    display: flex;
    align-items: center;
    padding: 0 4px 0 2px;
  }
  .cast-task-island-pulse {
    width: 11px;
    height: 11px;
    border-radius: 50%;
    background: var(--task-island-pulse-bg);
    box-shadow: 0 0 8px var(--task-island-pulse-shadow);
    opacity: 0.75;
    transform: scale(1);
  }
  .cast-task-island-pulse.pulse-once {
    animation: castTaskIslandPulseOnce 0.9s ease-out forwards;
  }
  @keyframes castTaskIslandPulseOnce {
    0% { opacity: 0.45; transform: scale(0.85); }
    40% { opacity: 1; transform: scale(1.15); }
    100% { opacity: 0.75; transform: scale(1); }
  }
  .cast-task-island-apps {
    flex: 0 0 auto;
    display: flex;
    align-items: center;
    gap: 12px;
    min-width: 0;
    padding: 0 2px;
  }
  .cast-task-app {
    margin: 0;
    padding: 3px;
    border: none;
    border-radius: 14px;
    background: transparent;
    cursor: pointer;
    -webkit-tap-highlight-color: transparent;
    flex: 0 0 auto;
    touch-action: none;
    transition: transform 80ms ease-out, opacity 80ms ease-out;
  }
  .cast-task-app.is-pressed,
  .cast-task-app:active {
    opacity: var(--dock-press-opacity);
    transform: scale(0.94);
  }
  .cast-task-app.is-drag-source {
    opacity: 0.42;
    transform: scale(0.92);
  }
  .cast-task-app.is-closing {
    opacity: 0.32;
    transform: scale(0.9);
    pointer-events: none;
  }
  .cast-task-app img {
    display: block;
    width: var(--task-island-icon);
    height: var(--task-island-icon);
    border-radius: 12px;
    object-fit: cover;
    box-shadow: 0 2px 8px rgba(0, 0, 0, 0.32);
  }
  .cast-task-island-close {
    margin: 0;
    margin-left: 2px;
    padding: 0 2px;
    box-sizing: border-box;
    width: var(--task-island-icon);
    min-width: var(--task-island-icon);
    height: var(--task-island-icon);
    border: none;
    border-radius: 0;
    background: transparent;
    cursor: pointer;
    flex-shrink: 0;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    transition: opacity var(--dock-transition), transform 80ms ease-out;
  }
  .cast-task-island-close .dock-glyph {
    width: calc(var(--task-island-icon) * 0.52);
    height: calc(var(--task-island-icon) * 0.52);
    opacity: 0.85;
  }
  .cast-task-island-close.hide {
    display: none;
  }
  .cast-task-island-close.is-pressed,
  .cast-task-island-close:active {
    opacity: var(--dock-press-opacity);
    transform: scale(0.94);
  }
  .cast-task-drag-ghost {
    position: fixed;
    left: 0;
    top: 0;
    z-index: 220;
    pointer-events: none;
    opacity: 0;
    transition: opacity 80ms ease-out;
  }
  .cast-task-drag-ghost.is-visible {
    opacity: 1;
  }
  .cast-task-drag-ghost img {
    display: block;
    width: 100%;
    height: 100%;
    border-radius: 12px;
    object-fit: cover;
  }
  body.cast-task-app-dragging {
    user-select: none;
    -webkit-user-select: none;
  }
  body.cast-task-app-dragging .cast-task-app {
    touch-action: none;
  }
  .cast-task-island.has-closing-app .cast-task-app:not(.is-closing) {
    pointer-events: none;
  }
  .cast-task-island-divider {
    flex: 0 0 auto;
    width: 0.5px;
    height: 34px;
    margin: 0 2px;
    background: rgba(255, 255, 255, 0.14);
  }
  .cast-task-island-resume {
    flex: 0 0 auto;
    display: flex;
    align-items: center;
    gap: 4px;
    margin: 0;
    margin-left: 4px;
    padding: 0 14px 0 10px;
    min-height: 46px;
    border: none;
    border-left: 1px solid rgba(255, 255, 255, 0.12);
    border-radius: 0 16px 16px 0;
    background: transparent;
    color: var(--dock-text-active);
    font: 600 15px/1 -apple-system, "PingFang SC", sans-serif;
    cursor: pointer;
    -webkit-tap-highlight-color: transparent;
    white-space: nowrap;
    transition: transform 80ms ease-out, background 80ms ease-out, opacity 80ms ease-out;
  }
  .cast-task-island-resume.is-pressed,
  .cast-task-island-resume:active {
    background: rgba(255, 255, 255, 0.08);
    opacity: var(--dock-press-opacity);
    transform: scale(0.97);
  }
  .cast-task-island-resume-chevron {
    display: inline-block;
    flex: 0 0 auto;
    width: 0;
    height: 0;
    margin-left: 2px;
    border-style: solid;
    border-width: 5px 0 5px 7px;
    border-color: transparent transparent transparent currentColor;
    opacity: 0.55;
  }
  @media (max-width: 799px) {
    .cast-task-island { --task-island-icon: 50px; --task-island-height: 68px; }
  }
  .cast-desktop-grid {
    --desktop-grid-columns: 8;
    /* 桌面图标（全视口统一小档，不再随 min-width:1200 放大） */
    --desktop-grid-unit: 96px;
    --desktop-grid-gap: 32px;
    --desktop-icon-size: 80px;
    --desktop-dual-icon-size: 74px;
    --desktop-icon-radius: 19px;
    --desktop-dual-icon-radius: 16px;
    --desktop-slot-radius: 21px;
    --desktop-dual-icons-padding-x: 12px;
    --desktop-dual-icons-gap: 22px;
    --desktop-slot-plus-size: 37px;
    display: grid;
    grid-template-columns: repeat(auto-fill, var(--desktop-grid-unit));
    justify-content: center;
    align-content: center;
    gap: var(--desktop-grid-gap);
    width: 100%;
    max-width: min(
      var(--desktop-grid-max-width, 92vw),
      var(
        --desktop-grid-column-cap,
        calc(
          var(--desktop-grid-columns) * var(--desktop-grid-unit) +
          (var(--desktop-grid-columns) - 1) * var(--desktop-grid-gap) +
          32px
        )
      )
    );
    max-height: 100%;
    overflow-y: auto;
    -webkit-overflow-scrolling: touch;
    padding: 8px 16px 16px;
    box-sizing: border-box;
    will-change: transform;
  }
  .cast-desktop-grid.is-empty-state {
    min-height: min(42vh, 280px);
    justify-content: center;
    align-content: center;
  }
  .cast-desktop-slot {
    margin: 0;
    padding: 0;
    width: var(--desktop-grid-unit);
    height: var(--desktop-grid-unit);
    border: 2px dashed var(--desktop-skin-slot-empty-border);
    border-radius: var(--desktop-slot-radius);
    background: transparent;
    display: flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
    -webkit-tap-highlight-color: transparent;
    -webkit-touch-callout: none;
    user-select: none;
    -webkit-user-select: none;
    touch-action: none;
    box-sizing: border-box;
    transition: transform 80ms ease-out, border-color 80ms ease-out, background 80ms ease-out, box-shadow 80ms ease-out, width 0.2s ease, height 0.2s ease;
  }
  .cast-desktop-slot.filled {
    border-style: solid;
    border-color: transparent;
    background: transparent;
  }
  .cast-desktop-slot.is-pressed,
  .cast-desktop-slot.filled.is-pressing {
    transform: scale(0.94);
  }
  .cast-desktop-slot.is-long-press-ready {
    transform: scale(1.04);
    box-shadow: var(--desktop-skin-slot-shadow);
  }
  .cast-desktop-slot.is-tap-pending {
    transform: scale(0.97);
  }
  .cast-desktop-slot.dual {
    position: relative;
    grid-column: span 2;
    width: calc(2 * var(--desktop-grid-unit) + var(--desktop-grid-gap));
    height: var(--desktop-grid-unit);
    padding: 0 var(--desktop-dual-icons-padding-x);
    border-style: solid;
    border-color: var(--desktop-skin-slot-dual-border);
    background: var(--desktop-skin-slot-dual-bg);
  }
  .desktop-dual-mode-cancel {
    display: block;
    width: 100%;
    margin-top: 10px;
    min-height: var(--cast-sheet-btn-min-h);
    padding: 10px 14px;
    border-radius: 12px;
    border: 1px solid rgba(255, 255, 255, 0.1);
    background: rgba(255, 255, 255, 0.06);
    color: var(--cast-sheet-text);
    font: var(--cast-sheet-font-secondary);
    cursor: pointer;
  }
  #castDesktop.dual-manage-open .cast-desktop-main,
  #castDesktop.app-manage-open .cast-desktop-main {
    pointer-events: none;
  }
  .cast-desktop-slot.dual.is-dual-manage-target,
  .cast-desktop-slot.app-slot.is-app-manage-target {
    box-shadow: none;
    filter: brightness(1.15);
  }
  .cast-desktop-slot.dual.is-dual-manage-target {
    border-color: var(--desktop-skin-slot-dual-border);
    background: var(--desktop-skin-slot-dual-bg);
  }
  #desktopDualManageBackdrop,
  #desktopAppManageBackdrop {
    position: absolute;
    inset: 0;
    z-index: 26;
    background: rgba(0, 0, 0, 0.35);
    opacity: 0;
    pointer-events: none;
    transition: opacity .22s ease;
  }
  #desktopDualManageBackdrop.open,
  #desktopAppManageBackdrop.open {
    opacity: 1;
    pointer-events: none;
  }
  #desktopDualManageBackdrop.open.is-interactive,
  #desktopAppManageBackdrop.open.is-interactive {
    pointer-events: auto;
  }
  #desktopDualManageSheet,
  #desktopAppManageSheet {
    position: absolute;
    left: 50%;
    bottom: calc(16px + env(safe-area-inset-bottom, 0px));
    z-index: 27;
    width: var(--cast-sheet-width);
    transform: translate(-50%, 120%);
    transition: transform .24s ease;
    padding: var(--cast-sheet-padding);
    border-radius: var(--cast-sheet-radius);
    border: 1px solid rgba(255, 255, 255, 0.12);
    background: rgba(28, 32, 40, 0.72);
    backdrop-filter: blur(24px) saturate(180%);
    -webkit-backdrop-filter: blur(24px) saturate(180%);
    box-shadow: 0 12px 40px rgba(0, 0, 0, 0.32);
    color: #fff;
    pointer-events: none;
  }
  #desktopDualManageSheet.open,
  #desktopAppManageSheet.open {
    transform: translate(-50%, 0);
    pointer-events: auto;
  }
  #desktopDualManageTitle,
  #desktopAppManageTitle {
    margin: 0 0 10px;
    font: var(--cast-sheet-font-title);
    text-align: center;
    color: var(--cast-sheet-title);
  }
  .desktop-dual-manage-options {
    display: flex;
    flex-direction: column;
    gap: 0;
    border-radius: 14px;
    overflow: hidden;
    border: 1px solid rgba(255, 255, 255, 0.1);
    background: rgba(255, 255, 255, 0.06);
  }
  .desktop-dual-manage-option {
    display: flex;
    align-items: center;
    gap: 10px;
    width: 100%;
    min-height: var(--cast-sheet-option-min-h);
    padding: 14px 16px;
    border: 0;
    border-bottom: 1px solid rgba(255, 255, 255, 0.08);
    background: transparent;
    color: var(--cast-sheet-text-strong);
    font: var(--cast-sheet-font-body);
    text-align: left;
    cursor: pointer;
    transition: background 80ms ease-out;
  }
  .desktop-dual-manage-option:last-child {
    border-bottom: none;
  }
  .desktop-dual-manage-option .dock-glyph {
    width: var(--cast-sheet-glyph-size);
    height: var(--cast-sheet-glyph-size);
    opacity: 0.9;
    flex-shrink: 0;
  }
  .desktop-dual-manage-option:active {
    background: rgba(255, 255, 255, 0.08);
  }
  .desktop-dual-manage-option.is-current {
    opacity: 0.45;
    pointer-events: none;
  }
  #desktopDualManageUnmerge {
    color: #ff8f8f;
  }
  #desktopDualManageDelete,
  .desktop-dual-manage-delete {
    color: #ff6b6b;
  }
  .cast-desktop-delete-zone {
    position: absolute;
    left: 0;
    right: 0;
    bottom: 0;
    z-index: 5;
    width: 100%;
    box-sizing: border-box;
    min-height: calc(88px + env(safe-area-inset-bottom, 0px));
    padding-bottom: env(safe-area-inset-bottom, 0px);
    transform: translateY(100%);
    opacity: 0;
    pointer-events: none;
    visibility: hidden;
    transition: transform 0.24s ease, opacity 0.2s ease, visibility 0s linear 0.24s;
  }
  .cast-desktop-delete-zone.is-visible {
    opacity: 1;
    transform: translateY(0);
    visibility: visible;
    transition: transform 0.24s ease, opacity 0.2s ease, visibility 0s;
  }
  .cast-desktop-delete-zone-inner {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 10px;
    width: 100%;
    min-height: 88px;
    padding: 16px 20px;
    box-sizing: border-box;
    border-radius: 20px 20px 0 0;
    border: 1px solid rgba(255, 120, 120, 0.22);
    border-bottom: none;
    background: linear-gradient(
      180deg,
      rgba(56, 18, 24, 0.82) 0%,
      rgba(88, 24, 32, 0.92) 100%
    );
    backdrop-filter: blur(20px) saturate(160%);
    -webkit-backdrop-filter: blur(20px) saturate(160%);
    box-shadow: 0 -8px 32px rgba(0, 0, 0, 0.35);
    transition: background 0.16s ease, border-color 0.16s ease;
  }
  .cast-desktop-delete-zone.is-drop-target .cast-desktop-delete-zone-inner {
    background: linear-gradient(
      180deg,
      rgba(180, 40, 48, 0.88) 0%,
      rgba(210, 50, 58, 0.95) 100%
    );
    border-color: rgba(255, 140, 140, 0.55);
  }
  .cast-desktop-delete-zone-icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 28px;
    height: 28px;
    border-radius: 50%;
    background: rgba(255, 100, 100, 0.22);
    color: #ffb4b4;
    font: 700 20px/1 -apple-system, "PingFang SC", sans-serif;
    flex-shrink: 0;
  }
  .cast-desktop-delete-zone-label {
    font: 600 15px/1.2 -apple-system, "PingFang SC", sans-serif;
    color: rgba(255, 220, 220, 0.94);
    white-space: nowrap;
  }
  #castDesktop.is-delete-mode .cast-task-island.is-shown {
    opacity: 0 !important;
    pointer-events: none !important;
    transform: translateY(20px) !important;
    transition: opacity 0.2s ease, transform 0.2s ease;
  }
  .cast-desktop-dual-icons {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: var(--desktop-dual-icons-gap);
    width: 100%;
    pointer-events: none;
  }
  .cast-desktop-slot.dual .cast-desktop-dual-icons > img {
    width: var(--desktop-dual-icon-size);
    height: var(--desktop-dual-icon-size);
    border-radius: var(--desktop-dual-icon-radius);
    box-shadow: 0 2px 10px rgba(0, 0, 0, 0.28);
  }
  .cast-desktop-slot.app-slot img {
    width: var(--desktop-icon-size);
    height: var(--desktop-icon-size);
    border-radius: var(--desktop-icon-radius);
    box-shadow: 0 4px 14px rgba(0, 0, 0, 0.32);
  }
  .cast-desktop-slot.is-drag-source {
    opacity: 0.45;
  }
  .cast-desktop-slot.is-drag-collapsed {
    display: none !important;
  }
  .cast-desktop-slot.is-drop-gap {
    pointer-events: none;
    border: 2px dashed rgba(120, 190, 255, 0.92);
    border-style: dashed;
    background: rgba(120, 190, 255, 0.16);
    box-shadow:
      inset 0 0 0 1px rgba(160, 210, 255, 0.28),
      0 0 18px rgba(96, 176, 255, 0.28);
  }
  .cast-desktop-slot.is-drop-gap.dual {
    grid-column: span 2;
    width: calc(2 * var(--desktop-grid-unit) + var(--desktop-grid-gap));
    height: var(--desktop-grid-unit);
  }
  .cast-desktop-grid.is-insert-shoving .cast-desktop-slot.is-shove-animating {
    will-change: transform;
  }
  .cast-desktop-slot.merge-target {
    box-shadow: var(--desktop-skin-slot-shadow);
  }
  body.cast-desktop-dragging {
    user-select: none;
    -webkit-user-select: none;
  }
  .cast-desktop-slot-plus {
    font: 500 var(--desktop-slot-plus-size)/1 -apple-system, "PingFang SC", sans-serif;
    color: rgba(255, 255, 255, 0.45);
    pointer-events: none;
    user-select: none;
  }
  .cast-desktop-slot.empty.is-pressed {
    border-color: rgba(255, 255, 255, 0.42);
    background: rgba(255, 255, 255, 0.06);
    transform: scale(0.94);
  }
  .cast-desktop-slot:disabled {
    opacity: 0.5;
    pointer-events: none;
  }
  .cast-desktop-grid.is-catalog-loading .cast-desktop-slot.skeleton {
    opacity: 1;
    border-color: rgba(255, 255, 255, 0.08);
    background: linear-gradient(
      110deg,
      rgba(255, 255, 255, 0.04) 8%,
      rgba(255, 255, 255, 0.12) 18%,
      rgba(255, 255, 255, 0.04) 33%
    );
    background-size: 200% 100%;
    animation: cast-desktop-skeleton-shimmer 1.2s ease-in-out infinite;
  }
  @keyframes cast-desktop-skeleton-shimmer {
    to { background-position-x: -200%; }
  }
  .cast-desktop-slot.app-slot > img {
    width: var(--desktop-icon-size);
    height: var(--desktop-icon-size);
    border-radius: var(--desktop-icon-radius);
    object-fit: cover;
    display: block;
    pointer-events: none;
  }
  @media (prefers-reduced-motion: reduce) {
    .cast-desktop-main,
    .cast-task-island,
    #castDesktop,
    #paneRow,
    .cast-desktop-backplate,
    .cast-desktop-lift,
    .cast-desktop-accent-glow,
    .cast-desktop-settings-btn,
    .cast-desktop-settings-sheet,
    #desktopDualManageSheet,
    #desktopAppManageSheet {
      transition: opacity 200ms ease !important;
      animation: none !important;
    }
    #desktopDualManageSheet:not(.open),
    #desktopAppManageSheet:not(.open) {
      transform: translate(-50%, 120%) !important;
    }
    #desktopDualManageSheet.open,
    #desktopAppManageSheet.open {
      transform: translate(-50%, 0) !important;
    }
    body.cast-desktop-dragging .cast-desktop-slot,
    .cast-desktop-slot.is-pressed,
    .cast-desktop-slot.is-long-press-ready,
    .cast-desktop-slot.merge-target,
    .cast-desktop-slot.is-drop-gap {
      transform: none !important;
    }
    .cast-task-island-pulse.pulse-once {
      animation: none !important;
    }
  }
  @media (prefers-reduced-transparency: reduce) {
    #castDesktop {
      backdrop-filter: none;
      -webkit-backdrop-filter: none;
      background: var(--desktop-skin-canvas-opaque);
    }
    .stage-shell {
      background: var(--desktop-skin-canvas-opaque);
    }
    body.fill-ambient:not(.cast-desktop-active):not(.dual-app) #ambient,
    body.fill-ambient:not(.cast-desktop-active):not(.dual-app) #ambientDim {
      opacity: 0;
    }
    body.cast-desktop-active.fill-ambient #ambient,
    body.cast-desktop-active.fill-ambient #ambientDim {
      opacity: 0;
    }
    body.cast-desktop-active #brandField {
      opacity: 0;
    }
    .cast-task-island-inner {
      backdrop-filter: none;
      -webkit-backdrop-filter: none;
      background: var(--task-island-bg);
    }
    .cast-desktop-settings-btn {
      backdrop-filter: none;
      -webkit-backdrop-filter: none;
      background: transparent;
    }
    body.dual-app #priPane,
    body.dual-app #secPane {
      background: rgba(10, 10, 12, 0.96);
    }
    .cast-desktop-settings-sheet {
      backdrop-filter: none;
      -webkit-backdrop-filter: none;
      background: var(--cast-sheet-bg-opaque);
    }
    #dockPanel {
      background: transparent;
      box-shadow: none;
    }
  }
  