/* Generated by scripts/build-css-variants.py — do not edit. Source: src/styles/player.css */
  html, body { margin: 0; padding: 0; height: 100%; background: #000; overflow: hidden; }
  :root {
    --dock-panel-height: 0px;
    --carlife-dock-height: 0px;
    --dock-height: 64px;
    --dock-radius: 12px;
    --dock-seg-radius: 10px;
    --dock-gap: 8px;
    --dock-tile: 52px;
    --dock-tile-lg: 64px;
    --dock-icon: 26px;
    --dock-icon-sm: 24px;
    --dock-app-img: 32px;
    --dock-r-group: 16px;
    --dock-r-tile: 12px;
    --dock-r-app: 8px;
    --app-sheet-cell: 72px;
    --app-sheet-icon: 52px;
    --app-sheet-icon-radius: 14px;
    --dock-border: rgba(255,255,255,.10);
    --dock-border-group: rgba(255,255,255,.08);
    --dock-border-tile: rgba(255,255,255,.10);
    --dock-border-tile-on: rgba(255,255,255,.22);
    --dock-text: rgba(255,255,255,.55);
    --dock-text-active: #fff;
    --dock-bg-group: rgba(255,255,255,.04);
    --dock-bg-tile: rgba(255,255,255,.06);
    --dock-bg-tile-on: rgba(255,255,255,.16);
    --dock-fill: var(--dock-bg-group);
    --dock-fill-active: var(--dock-bg-tile-on);
    --dock-action-fill: var(--dock-bg-tile);
    --dock-press-opacity: .85;
    --dock-transition: 160ms cubic-bezier(.22,.61,.36,1);
    --dock-minimize-bar: rgba(255, 255, 255, 0.78);
    --dock-minimize-bar-h: 4px;
    --dock-minimize-bar-w: 68%;
    --dual-pane-gap: 0px;
    --dual-pane-inset-x: 0px;
    --dual-pane-inset-y: 0px;
    /* stage 内容与 dock 面板顶缘的留白（0 = 仅依赖 #dockPanel padding-top） */
    --dock-content-gap: 0px;
    --dual-pane-radius: 0px;
    --dual-pane-border: none;
    --dual-pane-bg: transparent;
    --shell-bg: #0a0a0c;
    --dual-pane-shadow: none;
    --dual-split-handle-w: 10px;
    --dual-split-handle-w-active: 12px;
    --dual-split-handle-h: 64px;
    --dual-split-handle-hit: 52px;
    --dual-split-handle-hit-h: 112px;
    --dual-split-handle-bar-w: 3px;
    --dual-split-handle-bar-h: 34px;
    --dual-split-handle-radius: 99px;
    --dual-split-handle-glass: rgba(58, 58, 62, 0.68);
    --dual-split-handle-glass-active: rgba(72, 72, 78, 0.82);
    --dual-split-handle-glass-collapse: rgba(200, 64, 48, 0.78);
    --dual-split-handle-edge: rgba(255, 255, 255, 0.48);
    --dual-split-handle-edge-active: rgba(255, 255, 255, 0.62);
    --dual-split-handle-bar: rgba(255, 255, 255, 0.96);
    --dual-split-handle-idle-opacity: 1;
    --dual-split-handle-dim-opacity: 0.4;
    --dual-split-handle-dim-bar-opacity: 0.55;
    --float-pane-radius: 0px;
    --float-pane-border: none;
    --float-pane-border-top: none;
    --float-pane-shadow: none;
    --float-pane-shadow-active: none;
    --float-chrome-bg: rgba(28, 32, 40, 0.62);
    --float-chrome-blur: blur(20px) saturate(180%);
    --pane-canvas-inset: 0px;
  }
  /* 特斯拉浏览器 dpr 视觉补偿（html zoom）；首版不同步 cast-viewport WS */
  body.tesla-dpr-zoom {
    /* marker for diagnostics / future overrides */
  }
  /* carDprZoom：层内 counter-zoom，抵消 html zoom 导致的缩小（依赖 --abyss-fluid-compensate-scale） */
  body.tesla-dpr-zoom #appDrawer,
  body.tesla-dpr-zoom #dualEntrySheet,
  body.tesla-dpr-zoom #castDesktopSettingsSheet,
  body.tesla-dpr-zoom #castDesktopInitConfirmSheet,
  body.tesla-dpr-zoom #desktopDualManageSheet,
  body.tesla-dpr-zoom #desktopAppManageSheet {
    zoom: var(--abyss-fluid-compensate-scale, 1);
  }

  /* 分屏：仅保留 pane 间 gap，四边 inset 与圆角归零 */
  body.dual-app:not(.float-overlay) {
    --dual-pane-inset-x: 0;
    --dual-pane-inset-y: 0;
    --dual-pane-radius: 0;
  }
  body {
    font-family: -apple-system, "PingFang SC", sans-serif;
    -webkit-tap-highlight-color: transparent;
    color: #fff;
  }
  #stage {
    position: absolute; top: 0; left: 0; right: 0;
    bottom: 0;
    display: flex;
    justify-content: center; align-items: center;
    background: transparent;
    transition: bottom .28s ease, filter .35s, padding-bottom .28s ease;
    overflow: hidden;
    box-sizing: border-box;
  }
  body.dock-animating #stage {
    transition: filter .35s;
  }
  body.dock-expanded #stage {
    bottom: 0;
    padding-bottom: var(--dock-panel-height, 0px);
  }
  body.dock-layout-settling #stage {
    transition: filter .35s;
  }
  .stage-shell {
    position: fixed;
    inset: 0;
    z-index: 0;
    pointer-events: none;
    overflow: hidden;
    background: var(--desktop-skin-canvas);
    transition: background 500ms ease, opacity 500ms ease;
  }
  .stage-shell-backplate {
    position: absolute;
    inset: 0;
    background: var(--desktop-skin-backplate);
    transition: background 500ms ease;
  }
  .stage-shell-backplate::before,
  .stage-shell-backplate::after {
    content: none;
    position: absolute;
    pointer-events: none;
    z-index: 0;
  }
  .stage-shell-sky {
    position: absolute;
    inset: 0;
    background: var(--desktop-skin-sky);
    transition: background 500ms ease;
    overflow: hidden;
  }
  .abyss-fluid-layer {
    display: none;
    position: absolute;
    inset: 0;
    overflow: hidden;
    background: #020617;
    pointer-events: none;
  }
  body[data-cast-skin="abyss"] .abyss-fluid-layer {
    display: block;
  }
  /* carDprZoom：层内反缩放，深海三球视觉尺寸/漂移动画与 zoom=1 一致 */
  body.tesla-dpr-zoom .abyss-fluid-layer {
    inset: auto;
    left: 0;
    top: 0;
    width: calc(100% * var(--car-html-zoom, 1));
    height: calc(100% * var(--car-html-zoom, 1));
    transform: scale(var(--abyss-fluid-compensate-scale, 1));
    transform-origin: 0 0;
  }
  body[data-cast-skin="abyss"] .stage-shell-sky,
  body[data-cast-skin="abyss"] .cast-desktop-sky,
  body[data-cast-skin="abyss"] .boot-sky {
    background: transparent;
  }
  .abyss-fluid-blob {
    position: absolute;
    width: 65vw;
    height: 65vw;
    pointer-events: none;
    will-change: transform;
    transform: translate3d(0, 0, 0);
  }
  .abyss-fluid-blob::before {
    content: "";
    position: absolute;
    inset: 0;
    border-radius: 50%;
    filter: blur(95px);
    opacity: 0.7;
    mix-blend-mode: screen;
  }
  body[data-cast-skin="abyss"] {
    --abyss-drift-duration-1: 5s;
    --abyss-drift-duration-2: 6s;
    --abyss-drift-duration-3: 5.5s;
  }
  body[data-cast-skin="abyss"].car-perf {
    --abyss-drift-duration-1: 7s;
    --abyss-drift-duration-2: 8s;
    --abyss-drift-duration-3: 7.5s;
  }
  .abyss-fluid-blob--1 {
    top: -10%;
    right: -10%;
    animation: abyss-drift-1 var(--abyss-drift-duration-1, 5s) ease-in-out infinite;
  }
  .abyss-fluid-blob--1::before {
    background: linear-gradient(135deg, #1e3a8a, #3b82f6);
  }
  .abyss-fluid-blob--2 {
    bottom: -10%;
    left: -10%;
    animation: abyss-drift-2 var(--abyss-drift-duration-2, 6s) ease-in-out infinite;
  }
  .abyss-fluid-blob--2::before {
    background: linear-gradient(135deg, #065f46, #10b981);
  }
  .abyss-fluid-blob--3 {
    top: 30%;
    left: 20%;
    animation: abyss-drift-3 var(--abyss-drift-duration-3, 5.5s) ease-in-out infinite;
  }
  .abyss-fluid-blob--3::before {
    background: linear-gradient(135deg, #7c3aed, #4f46e5);
  }
  @keyframes abyss-drift-1 {
    0%, 100% { transform: translate3d(0, 0, 0) scale(1); }
    25% { transform: translate3d(-14vw, 10vw, 0) scale(1.2); }
    50% { transform: translate3d(6vw, -8vw, 0) scale(0.88); }
    75% { transform: translate3d(10vw, 5vw, 0) scale(1.1); }
  }
  @keyframes abyss-drift-2 {
    0%, 100% { transform: translate3d(0, 0, 0) scale(1); }
    30% { transform: translate3d(12vw, -10vw, 0) scale(1.24); }
    55% { transform: translate3d(-11vw, 8vw, 0) scale(0.84); }
    80% { transform: translate3d(5vw, 6vw, 0) scale(1.08); }
  }
  @keyframes abyss-drift-3 {
    0%, 100% { transform: translate3d(0, 0, 0) scale(1); }
    28% { transform: translate3d(-10vw, 8vw, 0) scale(1.14); }
    52% { transform: translate3d(12vw, -7vw, 0) scale(0.92); }
    78% { transform: translate3d(-6vw, -5vw, 0) scale(1.06); }
  }
  body.car-perf .abyss-fluid-blob::before {
    filter: blur(62px);
    opacity: 0.62;
  }
  body[data-cast-skin="abyss"] .abyss-fluid-blob--1 {
    animation: abyss-drift-1 var(--abyss-drift-duration-1, 5s) ease-in-out infinite;
    animation-play-state: running !important;
  }
  body[data-cast-skin="abyss"] .abyss-fluid-blob--2 {
    animation: abyss-drift-2 var(--abyss-drift-duration-2, 6s) ease-in-out infinite;
    animation-play-state: running !important;
  }
  body[data-cast-skin="abyss"] .abyss-fluid-blob--3 {
    animation: abyss-drift-3 var(--abyss-drift-duration-3, 5.5s) ease-in-out infinite;
    animation-play-state: running !important;
  }
  @media (prefers-reduced-motion: reduce) {
    body[data-cast-skin="abyss"] .abyss-fluid-blob--1 {
      animation: abyss-drift-1 var(--abyss-drift-duration-1, 5s) ease-in-out infinite !important;
    }
    body[data-cast-skin="abyss"] .abyss-fluid-blob--2 {
      animation: abyss-drift-2 var(--abyss-drift-duration-2, 6s) ease-in-out infinite !important;
    }
    body[data-cast-skin="abyss"] .abyss-fluid-blob--3 {
      animation: abyss-drift-3 var(--abyss-drift-duration-3, 5.5s) ease-in-out infinite !important;
    }
  }
  .nebula-fluid-layer {
    display: none;
    position: absolute;
    inset: 0;
    overflow: hidden;
    background: #0a0612;
    pointer-events: none;
  }
  body[data-cast-skin="nebula"] .nebula-fluid-layer {
    display: block;
  }
  body[data-cast-skin="nebula"] .stage-shell-sky,
  body[data-cast-skin="nebula"] .cast-desktop-sky,
  body[data-cast-skin="nebula"] .boot-sky {
    background: transparent;
  }
  .nebula-fluid-canvas {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    display: block;
    pointer-events: none;
    /* 内部分辨率低于 CSS 盒；默认双线性放大，星云柔边更吃这个 */
    image-rendering: auto;
  }
  .stage-shell-lift {
    position: absolute;
    inset: 0;
    z-index: 1;
    background: var(--desktop-skin-lift);
    transition: background 500ms ease;
  }
  
  body.reconnecting #stage { filter: brightness(.7); }
  #stage.align-edge.content-portrait { justify-content: flex-start; align-items: center; }
  #stage.align-edge.content-landscape { justify-content: center; align-items: flex-start; }
  #stage.align-center { justify-content: center; align-items: center; }
  /* 手机镜像：paneRow 铺满 stage，贴边需在 paneRow 内对齐 canvas */
  body.mirror-cast #stage.align-edge.content-portrait #paneRow {
    justify-content: flex-start;
    align-items: center;
  }
  body.mirror-cast #stage.align-edge.content-landscape #paneRow {
    justify-content: center;
    align-items: flex-start;
  }
  body.mirror-cast #stage.align-center #paneRow {
    justify-content: center;
    align-items: center;
  }
  /* 镜像全屏：压过 single-app / fill-ambient 卡片与 32% 氛围区 */
  body.mirror-cast #paneRow,
  body.mirror-cast #priPane,
  body.mirror-cast #priPane .paneViewport {
    width: 100% !important;
    height: 100% !important;
    max-width: none !important;
    flex: 1 1 auto !important;
    padding: 0 !important;
  }
  body.mirror-cast #priPane,
  body.mirror-cast #secPane {
    border: none !important;
    box-shadow: none !important;
    border-radius: 0 !important;
  }
  body.mirror-cast #priPane .paneViewport,
  body.mirror-cast #secPane .paneViewport {
    border-radius: 0 !important;
  }
  body.mirror-cast.single-app #priPane,
  body.mirror-cast.single-portrait #priPane {
    flex: 1 1 auto !important;
    width: 100% !important;
    max-width: none !important;
  }
  body.mirror-cast #ambient,
  body.mirror-cast #ambientDim {
    opacity: 0 !important;
    pointer-events: none !important;
  }
  /*
   * 手机镜像：priPane 已 100% 铺满，靠边/居中须在 .paneViewport 内对齐 canvas（非 paneRow 移盒子）。
   * 排除 CarLife / 双应用投屏，避免影响其它模式。
   */
  body.mirror-cast:not(.carlife-active):not(.dual-app) #priPane .paneViewport {
    display: flex !important;
    box-sizing: border-box;
  }
  body.mirror-cast:not(.carlife-active):not(.dual-app) #priPane .paneViewport > #c {
    flex: 0 0 auto;
  }
  body.mirror-cast:not(.carlife-active):not(.dual-app) #stage.align-center #priPane .paneViewport {
    justify-content: center;
    align-items: center;
  }
  body.mirror-cast:not(.carlife-active):not(.dual-app) #stage.align-edge.content-portrait #priPane .paneViewport {
    justify-content: flex-start;
    align-items: center;
  }
  body.mirror-cast:not(.carlife-active):not(.dual-app) #stage.align-edge.content-landscape #priPane .paneViewport {
    justify-content: center;
    align-items: flex-start;
  }
  /* A：氛围镜面（叠在 .stage-shell 皮肤底图之上） */
  #ambient {
    position: absolute; inset: 0;
    width: 100%; height: 100%;
    z-index: 1; pointer-events: none;
    transition: opacity .35s;
  }
  #ambientDim {
    position: absolute; inset: 0; z-index: 2;
    background: var(--desktop-skin-ambient-dim, rgba(0, 0, 0, 0.48));
    pointer-events: none;
    transition: opacity .35s, background 500ms ease;
  }
  body.fill-fit #ambient, body.fill-fit #ambientDim,
  body.fill-fill #ambient, body.fill-fill #ambientDim,
  body.fill-stretch #ambient, body.fill-stretch #ambientDim { opacity: 0; }
  body.dual-app #ambient, body.dual-app #ambientDim { opacity: 0; }
  body.fill-ambient #ambient,
  body.fill-ambient #ambientDim { opacity: 1; }
  body.fill-ambient:not(.cast-desktop-active):not(.dual-app) #ambient {
    opacity: var(--desktop-skin-ambient-opacity, 0.38);
  }
  body:not(.cast-desktop-active):not(.dual-app) #brandField {
    opacity: 0;
  }
  body.car-perf:not(.fill-ambient) #ambient,
  body.car-perf:not(.fill-ambient) #ambientDim,
  body.car-perf:not(.fill-ambient) #brandField { opacity: 0 !important; }
  body.car-perf #c,
  body.car-perf #c2 {
    image-rendering: auto;
  }
  /* E：品牌场域（网格 + live 呼吸光；字标挂 LIVE 行） */
  #brandField {
    position: absolute; inset: 0; z-index: 2;
    pointer-events: none; overflow: hidden;
    transition: opacity .35s;
  }
  body.fill-fill #brandField { opacity: 0; }
  body.fill-stretch #brandField { opacity: 0; }
  #brandGrid {
    position: absolute; inset: -20%;
    opacity: 0.045;
    background-image:
      repeating-linear-gradient(
        -28deg,
        transparent 0,
        transparent 47px,
        rgba(255,255,255,.55) 47px,
        rgba(255,255,255,.55) 48px
      ),
      repeating-linear-gradient(
        28deg,
        transparent 0,
        transparent 47px,
        rgba(255,255,255,.28) 47px,
        rgba(255,255,255,.28) 48px
      );
  }
  #brandGlow {
    position: absolute; inset: 0;
    box-shadow: inset 0 0 0 1px rgba(240,180,41,0);
    transition: box-shadow .6s;
  }
  body.live #brandGlow {
    animation: brandBreath 3.6s ease-in-out infinite;
  }
  @keyframes brandBreath {
    0%, 100% { box-shadow: inset 0 0 48px 0 rgba(240,180,41,.0), inset 0 0 0 1px rgba(240,180,41,.0); }
    50% { box-shadow: inset 0 0 72px 0 rgba(240,180,41,.07), inset 0 0 0 1px rgba(240,180,41,.12); }
  }
  #paneRow {
    position: relative; z-index: 3;
    display: flex; flex-direction: row;
    align-items: center; justify-content: center;
    max-width: 100%; max-height: 100%;
    transform-origin: center center;
  }
  /* 三指手势屏障 + 方案3：对侧渐变幕（进度跟手） */
  #castTouchShield.cast-touch-shield {
    display: none;
    position: absolute;
    inset: 0;
    z-index: 18;
    pointer-events: none;
    background: transparent;
    touch-action: none;
    -webkit-tap-highlight-color: transparent;
    overflow: hidden;
    --tf-pull: 0;
  }
  body.three-finger-shield #castTouchShield.cast-touch-shield {
    display: block !important;
    pointer-events: auto;
  }
  #castTouchShield .tf-pull-veil {
    position: absolute;
    pointer-events: none;
    opacity: 0;
    will-change: width, height, opacity;
  }
  /* 右滑 → 从左边拉出：左实右虚（冷白雾） */
  #castTouchShield[data-pull="right"] .tf-pull-veil {
    top: 0;
    bottom: 0;
    left: 0;
    height: 100%;
    background: linear-gradient(
      to right,
      rgba(248, 252, 255, 0.72) 0%,
      rgba(236, 244, 252, 0.38) 38%,
      rgba(220, 232, 245, 0.12) 68%,
      transparent 100%
    );
  }
  /* 左滑 → 从右边拉出：右实左虚（冷白雾） */
  #castTouchShield[data-pull="left"] .tf-pull-veil {
    top: 0;
    bottom: 0;
    right: 0;
    height: 100%;
    background: linear-gradient(
      to left,
      rgba(248, 252, 255, 0.72) 0%,
      rgba(236, 244, 252, 0.38) 38%,
      rgba(220, 232, 245, 0.12) 68%,
      transparent 100%
    );
  }
  /* 桌面三指：shield 挂到 body，全屏冷白雾盖住桌面 */
  body.three-finger-shield-desktop #castTouchShield.cast-touch-shield,
  body.cast-desktop-active.three-finger-shield #castTouchShield.cast-touch-shield {
    position: fixed !important;
    inset: 0 !important;
    z-index: 400 !important;
    display: block !important;
  }
  /* 上推 → 从底边拉出：下实上虚（冷白雾） */
  #castTouchShield[data-pull="up"] .tf-pull-veil {
    left: 0;
    right: 0;
    bottom: 0;
    width: 100%;
    background: linear-gradient(
      to top,
      rgba(248, 252, 255, 0.72) 0%,
      rgba(236, 244, 252, 0.38) 38%,
      rgba(220, 232, 245, 0.12) 68%,
      transparent 100%
    );
  }
  /* 下拉 → 从顶边拉出：上实下虚（冷白雾） */
  #castTouchShield[data-pull="down"] .tf-pull-veil {
    left: 0;
    right: 0;
    top: 0;
    width: 100%;
    background: linear-gradient(
      to bottom,
      rgba(248, 252, 255, 0.72) 0%,
      rgba(236, 244, 252, 0.38) 38%,
      rgba(220, 232, 245, 0.12) 68%,
      transparent 100%
    );
  }
  body.app-cast-touch.single-app #paneRow,
  body.app-cast-touch.single-app-secondary #paneRow,
  body.app-cast-touch.float-overlay.dual-app #paneRow {
    width: 100%;
    height: 100%;
    align-items: stretch;
    justify-content: flex-start;
  }
  body.single-app #paneRow,
  body.single-app-secondary #paneRow,
  body.float-overlay.dual-app #paneRow {
    position: relative;
    width: 100%;
    height: 100%;
    align-items: stretch;
    justify-content: flex-start;
    padding: 0 var(--dual-pane-inset-x) var(--dual-pane-inset-y);
    box-sizing: border-box;
  }
  body.single-app #stage,
  body.single-app-secondary #stage,
  body.float-overlay.dual-app #stage {
    align-items: stretch;
    justify-content: flex-start;
  }
  

  /*
   * 皮肤 token 放在 base：Boot/stage 在 player-base.css 就引用 --desktop-skin-* / --boot-*，
   * 避免刷新首帧落到 #050506 再等 player-app.css。
   */
  body[data-cast-skin="dusk"] {
    --desktop-skin-canvas:
      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.14) 0%, transparent 65%),
      linear-gradient(175deg, rgb(20, 18, 24) 0%, rgb(26, 20, 35) 45%, rgb(14, 12, 20) 100%);
    --desktop-skin-canvas-opaque:
      radial-gradient(ellipse 88% 58% at 50% 24%, rgb(38, 28, 56) 0%, transparent 72%),
      radial-gradient(ellipse 90% 40% at 50% 100%, rgba(232, 145, 90, 0.16) 0%, transparent 65%),
      linear-gradient(175deg, rgb(20, 18, 24) 0%, rgb(26, 20, 35) 45%, rgb(14, 12, 20) 100%);
    --desktop-skin-canvas-blur: rgba(20, 18, 24, 0.22);
    --desktop-skin-backplate:
      radial-gradient(ellipse 110% 85% at 50% 40%, transparent 48%, rgba(10, 6, 12, 0.44) 100%),
      radial-gradient(ellipse 85% 45% at 50% 100%, rgba(232, 145, 90, 0.08) 0%, transparent 74%);
    --desktop-skin-sky:
      radial-gradient(ellipse 125% 58% at 50% 0%, rgba(196, 123, 138, 0.12) 0%, rgba(196, 123, 138, 0.04) 42%, transparent 68%);
    --desktop-skin-sky-accent-fallback: rgba(196, 123, 138, 0.06);
    --desktop-skin-lift:
      radial-gradient(ellipse 72% 52% at 50% 40%, rgba(240, 230, 220, 0.06) 0%, rgba(240, 230, 220, 0.015) 38%, transparent 72%);
    --desktop-skin-slot-empty-border: rgba(240, 230, 220, 0.28);
    --desktop-skin-slot-dual-bg: rgba(255, 255, 255, 0.06);
    --desktop-skin-slot-dual-border: rgba(240, 230, 220, 0.14);
    --desktop-skin-slot-shadow: 0 8px 24px rgba(10, 6, 12, 0.38);
    --desktop-skin-merge-bridge: rgba(240, 230, 220, 0.28);
    --desktop-skin-picker-bg: rgba(20, 18, 24, 0.72);
    --desktop-skin-picker-border: rgba(232, 145, 90, 0.18);
    --desktop-skin-picker-text: rgba(240, 230, 220, 0.72);
    --desktop-skin-picker-active: #e8915a;
    --desktop-skin-picker-hover: rgba(232, 145, 90, 0.1);
    --task-island-bg: rgba(20, 18, 24, 0.58);
    --task-island-border-top: rgba(240, 230, 220, 0.1);
    --task-island-pulse-bg: #5bd27a;
    --task-island-pulse-shadow: rgba(91, 210, 122, 0.45);
    --desktop-skin-ambient-opacity: 0.34;
    --desktop-skin-ambient-dim: rgba(14, 10, 18, 0.28);
    --desktop-skin-ambient-dim-desktop: rgba(14, 10, 18, 0.2);
    --boot-title: rgba(255, 248, 242, 0.94);
    --boot-label: rgba(240, 230, 220, 0.72);
    --boot-muted: rgba(240, 230, 220, 0.48);
    --boot-title-glow: rgba(232, 145, 90, 0.28);
    --boot-glass-bg: rgba(28, 22, 28, 0.46);
    --boot-glass-bg-solid: rgba(24, 18, 24, 0.94);
    --boot-glass-border: rgba(240, 230, 220, 0.1);
  }
  body[data-cast-skin="carbon"] {
    --desktop-skin-canvas:
      radial-gradient(ellipse 55% 40% at 48% 42%, rgba(58, 58, 72, 0.35) 0%, transparent 65%),
      linear-gradient(180deg, #0e0e10 0%, #141418 50%, #0e0e10 100%);
    --desktop-skin-canvas-opaque:
      radial-gradient(ellipse 55% 40% at 48% 42%, rgba(58, 58, 72, 0.4) 0%, transparent 65%),
      linear-gradient(180deg, #0e0e10 0%, #141418 50%, #0e0e10 100%);
    --desktop-skin-canvas-blur: rgba(14, 14, 16, 0.35);
    --desktop-skin-backplate:
      radial-gradient(ellipse 110% 85% at 50% 40%, transparent 48%, rgba(0, 0, 0, 0.5) 100%),
      radial-gradient(ellipse 85% 45% at 50% 100%, rgba(0, 0, 0, 0.38) 0%, transparent 74%);
    --desktop-skin-sky: none;
    --desktop-skin-sky-accent-fallback: rgba(212, 160, 84, 0.05);
    --desktop-skin-lift:
      radial-gradient(ellipse 72% 52% at 50% 40%, rgba(200, 200, 208, 0.03) 0%, transparent 72%);
    --desktop-skin-slot-empty-border: rgba(200, 200, 208, 0.22);
    --desktop-skin-slot-dual-bg: rgba(255, 255, 255, 0.04);
    --desktop-skin-slot-dual-border: rgba(200, 200, 208, 0.12);
    --desktop-skin-slot-shadow: 0 8px 24px rgba(0, 0, 0, 0.45);
    --desktop-skin-merge-bridge: rgba(200, 200, 208, 0.22);
    --desktop-skin-picker-bg: rgba(14, 14, 16, 0.82);
    --desktop-skin-picker-border: rgba(212, 160, 84, 0.15);
    --desktop-skin-picker-text: rgba(200, 200, 208, 0.55);
    --desktop-skin-picker-active: #d4a054;
    --desktop-skin-picker-hover: rgba(212, 160, 84, 0.1);
    --task-island-bg: rgba(14, 14, 16, 0.75);
    --task-island-border-top: rgba(212, 160, 84, 0.08);
    --task-island-pulse-bg: #d4a054;
    --task-island-pulse-shadow: rgba(212, 160, 84, 0.45);
    --desktop-skin-ambient-opacity: 0.32;
    --desktop-skin-ambient-dim: rgba(0, 0, 0, 0.34);
    --desktop-skin-ambient-dim-desktop: rgba(0, 0, 0, 0.24);
    --boot-title: rgba(240, 240, 245, 0.94);
    --boot-label: rgba(200, 200, 208, 0.72);
    --boot-muted: rgba(200, 200, 208, 0.48);
    --boot-title-glow: rgba(212, 160, 84, 0.28);
    --boot-glass-bg: rgba(20, 20, 24, 0.52);
    --boot-glass-bg-solid: rgba(14, 14, 16, 0.96);
    --boot-glass-border: rgba(200, 200, 208, 0.1);
  }
  body[data-cast-skin="abyss"] {
    --desktop-skin-canvas:
      radial-gradient(ellipse 88% 58% at 50% 24%, rgb(15, 23, 42) 0%, transparent 72%),
      radial-gradient(ellipse 78% 52% at 50% 100%, rgb(2, 6, 23) 0%, transparent 68%),
      linear-gradient(175deg, #020617 0%, #0f172a 50%, #020617 100%);
    --desktop-skin-canvas-opaque:
      radial-gradient(ellipse 88% 58% at 50% 24%, rgb(15, 23, 42) 0%, transparent 72%),
      linear-gradient(175deg, #020617 0%, #0f172a 50%, #020617 100%);
    --desktop-skin-canvas-blur: rgba(2, 6, 23, 0.28);
    --desktop-skin-backplate:
      radial-gradient(ellipse 110% 85% at 50% 40%, transparent 48%, rgba(2, 6, 23, 0.5) 100%),
      radial-gradient(ellipse 85% 45% at 50% 100%, rgba(6, 95, 70, 0.08) 0%, transparent 74%);
    --desktop-skin-sky: transparent;
    --desktop-skin-sky-accent-fallback: rgba(59, 130, 246, 0.06);
    --desktop-skin-lift:
      radial-gradient(ellipse 72% 52% at 50% 40%, rgba(59, 130, 246, 0.04) 0%, transparent 72%),
      radial-gradient(ellipse 110% 85% at 50% 100%, rgba(2, 6, 23, 0.42) 0%, transparent 70%);
    --desktop-skin-slot-empty-border: rgba(147, 197, 253, 0.28);
    --desktop-skin-slot-dual-bg: rgba(59, 130, 246, 0.06);
    --desktop-skin-slot-dual-border: rgba(16, 185, 129, 0.16);
    --desktop-skin-slot-shadow: 0 8px 24px rgba(2, 6, 23, 0.45);
    --desktop-skin-merge-bridge: rgba(147, 197, 253, 0.24);
    --desktop-skin-picker-bg: rgba(2, 6, 23, 0.82);
    --desktop-skin-picker-border: rgba(59, 130, 246, 0.18);
    --desktop-skin-picker-text: rgba(191, 219, 254, 0.62);
    --desktop-skin-picker-active: #3b82f6;
    --desktop-skin-picker-hover: rgba(59, 130, 246, 0.1);
    --task-island-bg: rgba(2, 6, 23, 0.72);
    --task-island-border-top: rgba(16, 185, 129, 0.1);
    --task-island-pulse-bg: #10b981;
    --task-island-pulse-shadow: rgba(16, 185, 129, 0.45);
    --desktop-skin-ambient-opacity: 0.36;
    --desktop-skin-ambient-dim: rgba(2, 8, 24, 0.32);
    --desktop-skin-ambient-dim-desktop: rgba(2, 8, 24, 0.22);
    --boot-title: rgba(224, 242, 254, 0.94);
    --boot-label: rgba(191, 219, 254, 0.72);
    --boot-muted: rgba(148, 163, 184, 0.55);
    --boot-title-glow: rgba(59, 130, 246, 0.28);
    --boot-glass-bg: rgba(15, 23, 42, 0.48);
    --boot-glass-bg-solid: rgba(2, 6, 23, 0.96);
    --boot-glass-border: rgba(147, 197, 253, 0.1);
  }
  body[data-cast-skin="nebula"] {
    --desktop-skin-canvas:
      radial-gradient(ellipse 88% 58% at 50% 24%, rgb(42, 22, 58) 0%, transparent 72%),
      radial-gradient(ellipse 78% 52% at 50% 100%, rgb(10, 6, 18) 0%, transparent 68%),
      linear-gradient(175deg, #0a0612 0%, #1a0f2e 50%, #0a0612 100%);
    --desktop-skin-canvas-opaque:
      radial-gradient(ellipse 88% 58% at 50% 24%, rgb(42, 22, 58) 0%, transparent 72%),
      linear-gradient(175deg, #0a0612 0%, #1a0f2e 50%, #0a0612 100%);
    --desktop-skin-canvas-blur: rgba(10, 6, 18, 0.3);
    --desktop-skin-backplate:
      radial-gradient(ellipse 110% 85% at 50% 40%, transparent 48%, rgba(10, 6, 18, 0.5) 100%),
      radial-gradient(ellipse 85% 45% at 50% 100%, rgba(236, 72, 153, 0.08) 0%, transparent 74%);
    --desktop-skin-sky: transparent;
    --desktop-skin-sky-accent-fallback: rgba(236, 72, 153, 0.06);
    --desktop-skin-lift:
      radial-gradient(ellipse 72% 52% at 50% 40%, rgba(139, 92, 246, 0.05) 0%, transparent 72%),
      radial-gradient(ellipse 110% 85% at 50% 100%, rgba(10, 6, 18, 0.4) 0%, transparent 70%);
    --desktop-skin-slot-empty-border: rgba(244, 114, 182, 0.3);
    --desktop-skin-slot-dual-bg: rgba(139, 92, 246, 0.07);
    --desktop-skin-slot-dual-border: rgba(6, 182, 212, 0.16);
    --desktop-skin-slot-shadow: 0 8px 24px rgba(10, 6, 18, 0.45);
    --desktop-skin-merge-bridge: rgba(244, 114, 182, 0.24);
    --desktop-skin-picker-bg: rgba(10, 6, 18, 0.84);
    --desktop-skin-picker-border: rgba(236, 72, 153, 0.2);
    --desktop-skin-picker-text: rgba(251, 207, 232, 0.65);
    --desktop-skin-picker-active: #ec4899;
    --desktop-skin-picker-hover: rgba(236, 72, 153, 0.12);
    --task-island-bg: rgba(10, 6, 18, 0.74);
    --task-island-border-top: rgba(139, 92, 246, 0.12);
    --task-island-pulse-bg: #8b5cf6;
    --task-island-pulse-shadow: rgba(139, 92, 246, 0.45);
    --desktop-skin-ambient-opacity: 0.36;
    --desktop-skin-ambient-dim: rgba(10, 6, 18, 0.34);
    --desktop-skin-ambient-dim-desktop: rgba(10, 6, 18, 0.24);
    --boot-title: rgba(253, 244, 255, 0.94);
    --boot-label: rgba(251, 207, 232, 0.72);
    --boot-muted: rgba(192, 132, 252, 0.55);
    --boot-title-glow: rgba(236, 72, 153, 0.3);
    --boot-glass-bg: rgba(26, 15, 46, 0.5);
    --boot-glass-bg-solid: rgba(10, 6, 18, 0.96);
    --boot-glass-border: rgba(244, 114, 182, 0.12);
  }

  /* α 仪表上电：金线展开 → TPlayer 亮起 → 收束到 LIVE 铭牌 */
  #boot {
    position: fixed; inset: 0; z-index: 30;
    display: flex; flex-direction: column;
    align-items: center; justify-content: center;
    background: var(--desktop-skin-canvas, #050506);
    pointer-events: auto;
    transition: opacity .4s ease, visibility .4s;
    padding-top: 4vh;
  }
  #boot.hide {
    opacity: 0; visibility: hidden; pointer-events: none;
  }
  body.boot-settle #boot {
    pointer-events: none;
    background: transparent !important;
    background-color: transparent;
  }
  body.boot-settle .boot-backplate {
    display: none !important;
  }
  body.boot-settle .boot-glass-card {
    padding: 0 !important;
    background: transparent !important;
    border: none !important;
    box-shadow: none !important;
    backdrop-filter: none !important;
    -webkit-backdrop-filter: none !important;
  }
  body.boot-settle .boot-status-row {
    display: none !important;
  }
  #bootStage {
    display: flex; flex-direction: column;
    align-items: center; justify-content: center;
  }
  #bootLine {
    width: 0;
    height: 2px;
    max-width: min(420px, 55vw);
    background: rgba(255,255,255,.08);
    border-radius: 2px;
    position: relative;
    overflow: hidden;
    transition: width .55s cubic-bezier(.22,.61,.36,1);
  }
  body.boot-power #bootLine { width: min(420px, 55vw); }
  #bootLineCore {
    position: absolute; left: 50%; top: 0;
    width: 42%; height: 100%;
    transform: translateX(-50%);
    background: linear-gradient(90deg, transparent, #f0b429, transparent);
    box-shadow: 0 0 14px rgba(240,180,41,.5);
  }
  #bootTitle {
    margin-top: 26px;
    font: 1000 clamp(36px, 8vw, 64px)/1 -apple-system, "PingFang SC", sans-serif;
    letter-spacing: 0.16em;
    color: rgba(255,255,255,0);
    filter: blur(10px);
    transform: scale(1.1);
    opacity: 1;
    transition:
      color .55s ease,
      filter .55s ease,
      transform .55s cubic-bezier(.22,.61,.36,1),
      text-shadow .55s ease,
      opacity .45s ease;
    user-select: none;
  }
  body.boot-power #bootTitle {
    color: var(--boot-title, rgba(255, 255, 255, 0.94));
    filter: blur(0);
    transform: scale(1);
    text-shadow: 0 0 28px var(--boot-title-glow, rgba(240, 180, 41, 0.28));
  }
  body.boot-settle #bootTitle {
    opacity: 0;
    filter: blur(2px);
    transform: scale(0.28) translate(38vw, 34vh);
  }
  body.boot-settle.driver-right #bootTitle {
    transform: scale(0.28) translate(-38vw, 34vh);
  }
  #bootLabel {
    margin-top: 18px;
    font: 500 15px/1.2 -apple-system, "PingFang SC", sans-serif;
    color: rgba(255,255,255,0);
    letter-spacing: 0.04em;
    transition: color .45s ease .15s, opacity .35s ease;
  }
  body.boot-power #bootLabel { color: var(--boot-label, rgba(255, 255, 255, 0.5)); }
  body.boot-settle #bootLabel { opacity: 0; }
  /* SPA route: mirror 模式隐藏应用投屏专属控件（session 就绪前） */
  body.route-mirror #appQuickSwitch,
  body.route-mirror #appSwitchBtn,
  body.route-mirror #orientPrimary,
  body.route-mirror #orientSecondary,
  body.route-mirror #dualPaneSwapBtn,
  body.route-mirror #appLayoutBtn,
  body.route-mirror #appDrawer,
  body.route-mirror #appDrawerBackdrop,
  body.route-mirror #dualEntryBackdrop,
  body.route-mirror #dualEntrySheet,
  body.route-mirror #closeSplitBackdrop,
  body.route-mirror #closeSplitSheet,
  body.route-mirror #secPane { display: none !important; }
  /* 镜像 / CarLife：无底栏，功能进右上角设置 */
  body.route-mirror #dockPanel,
  body.route-mirror #dockFab,
  body.route-mirror #dockFabPreview,
  body.route-carlife #dockPanel,
  body.route-carlife #dockFab,
  body.route-carlife #dockFabPreview,
  body.carlife-active #dockPanel,
  body.carlife-active #dockFab,
  body.carlife-active #dockFabPreview,
  body.mirror-cast #dockPanel,
  body.mirror-cast #dockFab,
  body.mirror-cast #dockFabPreview {
    display: none !important;
    opacity: 0 !important;
    visibility: hidden !important;
    pointer-events: none !important;
  }
  body.route-mirror,
  body.route-carlife,
  body.carlife-active,
  body.mirror-cast {
    --dock-panel-height: 0px;
    --carlife-dock-height: 0px;
  }
  body.route-mirror #dualPaneSwapBtn,
  body.route-mirror #orientPrimary,
  body.route-mirror #orientSecondary,
  body.route-carlife #dualPaneSwapBtn,
  body.route-carlife #orientPrimary,
  body.route-carlife #orientSecondary {
    display: none !important;
  }
  body.route-app.cast-desktop-dock-visible #mirrorAlignGroup {
    display: none !important;
  }
  body.route-app.cast-desktop-dock-visible.dock-expanded #appLayoutBtn:not(.hide) {
    display: inline-flex !important;
  }
  body.route-app #castDesktopDockBtn:not(.hide) {
    display: inline-flex !important;
  }
  body.route-app #appSwitchBtn {
    min-width: 88px;
  }
  /* 车机互联：无 VPN，隐藏应用投屏控件 */
  body.carlife-active #appDrawer,
  body.carlife-active #appDrawerBackdrop,
  body.carlife-active #appSwitchBtn,
  body.carlife-active #appQuickSwitch,
  body.carlife-active #orientPrimary,
  body.carlife-active #orientSecondary { display: none !important; }
  body.carlife-active.app-cast-touch #v { pointer-events: auto; }
  /* @cast-css-carlife-begin */
  body.carlife-active #carlifeFitGroup button {
    font-size: 16px;
    padding: 0 12px;
  }
  body.carlife-active.carlife-fit-contain #v {
    object-fit: contain;
    object-position: center center;
  }
  body.carlife-active.carlife-fit-stretch #v {
    object-fit: fill;
    object-position: center center;
  }
  /* CarLife 铺满：pane 链路撑满 stage（CarLife 无 single-app，须单独补） */
  body.carlife-active.carlife-fit-stretch #stage,
  body.carlife-active.carlife-fit-stretch.mirror-cast #stage.align-center,
  body.carlife-active.carlife-fit-stretch.mirror-cast #stage.align-edge,
  body.carlife-active.carlife-fit-stretch.mirror-cast #stage.align-edge.content-portrait,
  body.carlife-active.carlife-fit-stretch.mirror-cast #stage.align-edge.content-landscape {
    align-items: stretch;
    justify-content: stretch;
  }
  body.carlife-active.carlife-fit-stretch #paneRow,
  body.carlife-active.carlife-fit-stretch.mirror-cast #stage.align-center #paneRow,
  body.carlife-active.carlife-fit-stretch.mirror-cast #stage.align-edge #paneRow,
  body.carlife-active.carlife-fit-stretch.mirror-cast #stage.align-edge.content-portrait #paneRow,
  body.carlife-active.carlife-fit-stretch.mirror-cast #stage.align-edge.content-landscape #paneRow {
    width: 100%;
    height: 100%;
    max-width: none;
    max-height: none;
    align-items: stretch;
    justify-content: stretch;
    padding: 0;
    box-sizing: border-box;
  }
  body.carlife-active.carlife-fit-stretch #priPane {
    display: flex;
    align-items: stretch;
    justify-content: stretch;
    position: relative;
    flex: 1 1 auto;
    width: 100%;
    height: 100%;
    min-width: 0;
    min-height: 0;
    overflow: hidden;
    box-sizing: border-box;
    border-radius: 0;
    border: none;
    background: transparent;
    box-shadow: none;
  }
  body.carlife-active.carlife-fit-stretch .paneViewport {
    position: relative;
    flex: 1 1 auto;
    width: 100%;
    height: 100%;
    min-width: 0;
    min-height: 0;
    overflow: hidden;
    border-radius: 0;
    background: transparent;
  }
  /* CarLife wire 解码画在 #c；铺满/默认须与 #v 一致，避免像素宽高 + contain 周期性跳变 */
  body.carlife-active.carlife-fit-contain .paneViewport > #c {
    object-fit: contain;
    object-position: center center;
  }
  body.carlife-active.carlife-fit-cover .paneViewport > #c {
    object-fit: cover;
    object-position: center center;
  }
  body.carlife-active.carlife-fit-stretch .paneViewport > #c {
    object-fit: fill;
    object-position: center center;
  }
  body.app-cast-touch #carlifeGuideSheet,
  body.app-cast-touch #carlifeGuideBackdrop.open {
    touch-action: manipulation;
  }
  #carlifeGuideBackdrop {
    position: fixed; inset: 0; z-index: 140;
    background: rgba(0,0,0,.45);
    opacity: 0; pointer-events: none;
    transition: opacity .2s ease;
  }
  #carlifeGuideBackdrop.open { opacity: 1; pointer-events: auto; }
  #carlifeGuideSheet {
    position: fixed;
    left: 50%;
    top: 50%;
    z-index: 141;
    width: min(520px, 90vw);
    max-height: min(78vh, 640px);
    overflow: auto;
    -webkit-overflow-scrolling: touch;
    box-sizing: border-box;
    transform: translate(-50%, -50%) scale(0.96);
    opacity: 0;
    transition: transform .22s ease, opacity .22s ease;
    background: rgba(28, 28, 30, 0.96);
    border: 1px solid rgba(255, 255, 255, 0.12);
    border-radius: 18px;
    padding: 22px 20px 20px;
    color: #fff;
    box-shadow: 0 16px 48px rgba(0, 0, 0, 0.4);
    pointer-events: none;
  }
  #carlifeGuideSheet.open {
    transform: translate(-50%, -50%) scale(1);
    opacity: 1;
    pointer-events: auto;
  }
  #carlifeGuideSheet h3 {
    margin: 0 0 16px;
    font: 600 23px/1.3 -apple-system, "PingFang SC", sans-serif;
    color: rgba(255, 255, 255, 0.96);
    text-align: center;
  }
  .carlifeGuideBody { display: flex; flex-direction: column; gap: 18px; }
  .carlifeGuideStep strong {
    display: block;
    margin-bottom: 6px;
    font: 600 18px/1.35 -apple-system, "PingFang SC", sans-serif;
    color: rgba(255, 255, 255, 0.94);
  }
  .carlifeGuideStep span {
    display: block;
    font: 400 16px/1.5 -apple-system, "PingFang SC", sans-serif;
    color: rgba(255, 255, 255, 0.82);
  }
  #carlifeGuideClose {
    margin-top: 20px;
    width: 100%;
    min-height: 52px;
    border: 1px solid rgba(255, 255, 255, 0.14);
    border-radius: 12px;
    background: rgba(255, 255, 255, 0.1);
    color: #fff;
    font: 600 17px/1.2 -apple-system, "PingFang SC", sans-serif;
    cursor: pointer;
  }
  /* 镜像 / CarLife 右上角设置：复用桌面 sheet token + 组件类 */
  .live-cast-settings-btn {
    position: fixed;
    top: max(8px, env(safe-area-inset-top, 0px));
    right: max(12px, env(safe-area-inset-right, 0px));
    z-index: 40;
    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;
  }
  .live-cast-settings-btn.hide {
    display: none !important;
  }
  .live-cast-settings-btn:hover,
  .live-cast-settings-btn:active {
    transform: scale(1.04);
  }
  .live-cast-settings-btn:focus-visible {
    outline: 2px solid rgba(255, 255, 255, 0.72);
    outline-offset: 3px;
    border-radius: 16px;
  }
  .live-cast-settings-icon {
    display: block;
    width: 40px;
    height: 40px;
    object-fit: contain;
    filter: brightness(0) invert(1);
    opacity: 0.92;
    transition: opacity 400ms ease;
  }
  .live-cast-settings-btn.settings-dimmed .live-cast-settings-icon {
    opacity: 0.38;
  }
  #liveCastSettingsBackdrop.live-cast-settings-layer {
    position: fixed;
    inset: 0;
    z-index: 41;
  }
  #liveCastSettingsSheet.live-cast-settings-layer {
    position: fixed;
    left: 50%;
    bottom: calc(16px + env(safe-area-inset-bottom, 0px));
    z-index: 42;
    width: var(--cast-sheet-width, min(420px, 92vw));
    max-height: min(78vh, 720px);
    overflow: auto;
    -webkit-overflow-scrolling: touch;
    --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-accent: #88b4ff;
    --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-caption: 500 14px/1.45 -apple-system, "PingFang SC", sans-serif;
    --cast-sheet-width: min(420px, 92vw);
    --cast-sheet-padding: 20px 20px 16px;
    --cast-sheet-btn-min-h: 52px;
    --cast-sheet-radius: 18px;
  }
  #liveCastSettingsSheet .cast-desktop-settings-section.hide {
    display: none !important;
  }
  #liveCastSettingsSheet .live-cast-settings-guide-btn {
    margin-top: 12px;
  }
  /* @cast-css-carlife-end */
  /* Boot 接入/待机/结束：复用桌面皮肤 token */
  .boot-backplate {
    position: absolute;
    inset: 0;
    z-index: 0;
    pointer-events: none;
    display: none;
    background: var(--desktop-skin-backplate);
  }
  body.boot-power:not(.boot-settle) #boot .boot-backplate {
    display: block;
  }
  .boot-sky {
    position: absolute;
    inset: 0;
    pointer-events: none;
    overflow: hidden;
    background: var(--desktop-skin-sky, var(--desktop-skin-sky-accent-fallback, none));
  }
  .boot-lift {
    position: absolute;
    inset: 0;
    pointer-events: none;
    background: var(--desktop-skin-lift);
  }
  body.boot-power:not(.boot-settle) #boot {
    background: var(--desktop-skin-canvas);
  }
  body.boot-cast-ended .boot-sky {
    opacity: 0.7;
  }
  body.boot-cast-ended .boot-lift {
    opacity: 0.55;
  }
  /* B1：内容叠在皮肤背景上（无玻璃卡片外壳） */
  .boot-glass-card {
    position: relative;
    display: flex;
    flex-direction: column;
    align-items: center;
    width: 100%;
    max-width: min(480px, 88vw);
    box-sizing: border-box;
    will-change: transform, opacity;
  }
  body.boot-power:not(.boot-settle) .boot-glass-card {
    padding: 0;
    border-radius: 0;
    background: transparent;
    backdrop-filter: none;
    -webkit-backdrop-filter: none;
    border: none;
    box-shadow: none;
    max-width: none;
    width: 100%;
  }
  .boot-status-row {
    display: none;
    align-items: center;
    justify-content: center;
    gap: 8px;
    margin-bottom: clamp(16px, 3vh, 24px);
  }
  body.boot-power:not(.boot-settle) .boot-status-row {
    display: flex;
  }
  .boot-status-dot {
    width: 10px;
    height: 10px;
    border-radius: 50%;
    flex-shrink: 0;
  }
  .boot-status-dot.is-listening {
    background: #4cd964;
    animation: bootPulseCool 1.6s ease-in-out infinite;
  }
  .boot-status-dot.is-ended {
    background: transparent;
    border: 2px solid var(--boot-muted, rgba(255, 255, 255, 0.42));
    box-sizing: border-box;
    animation: none;
  }
  .boot-status-text {
    font: 500 clamp(16px, 2.4vw, 20px)/1.25 -apple-system, "PingFang SC", "Apple SD Gothic Neo", "Noto Sans KR", sans-serif;
    letter-spacing: 0.12em;
    color: var(--boot-muted, rgba(255, 255, 255, 0.45));
    font-optical-sizing: auto;
  }
  /* 待机中/英/韩轮播：E · 字距呼吸 */
  .boot-lang-slot {
    display: grid;
    place-items: center;
    justify-items: center;
  }
  .boot-lang-layer {
    grid-area: 1 / 1;
    will-change: opacity, filter, letter-spacing;
    transition:
      opacity 0.7s ease,
      filter 0.7s ease,
      letter-spacing 0.7s cubic-bezier(.22, .61, .36, 1);
  }
  .boot-lang-layer.is-out {
    opacity: 0;
    filter: blur(3px);
    letter-spacing: 0.28em;
  }
  .boot-lang-layer.is-in {
    opacity: 1;
    filter: blur(0);
  }
  #bootStatusText .boot-lang-layer.is-in {
    letter-spacing: 0.12em;
  }
  #bootTitle .boot-lang-layer.is-in {
    letter-spacing: 0.12em;
  }
  #bootLabel .boot-lang-layer.is-in {
    letter-spacing: 0.04em;
  }
  body.boot-lang-cycling #bootTitle,
  body.boot-lang-cycling #bootLabel,
  body.boot-lang-cycling #bootStatusText {
    letter-spacing: 0;
    text-indent: 0;
  }
  body.boot-lang-cycling #bootTitle .boot-lang-layer.is-in {
    text-indent: 0.12em;
  }
  @keyframes bootPulseCool {
    0%, 100% { opacity: 1; transform: scale(1); }
    50% { opacity: 0.55; transform: scale(0.88); }
  }
  /* 手机未投屏：统一等待态（对齐镜像投屏） */
  body.boot-idle-wait #boot {
    pointer-events: none;
  }
  /* stay-live 刷屏：轻量接入遮罩（无断连清单） */
  body.boot-joining #boot {
    pointer-events: none;
  }
  body.boot-power:not(.boot-settle) #bootStage {
    position: relative;
    z-index: 1;
    width: 100%;
    max-width: none;
    padding: 0 24px;
    box-sizing: border-box;
  }
  body.boot-idle-wait #dockFab,
  body.boot-idle-wait #dockPanel,
  body.boot-idle-wait #dockFabPreview,
  body.boot-joining #dockFab,
  body.boot-joining #dockPanel,
  body.boot-joining #dockFabPreview {
    opacity: 0 !important;
    pointer-events: none !important;
    visibility: hidden !important;
    transform: none !important;
  }
  body.boot-idle-wait #stage,
  body.boot-idle-wait #ambient,
  body.boot-idle-wait #ambientDim,
  body.boot-idle-wait #brandField,
  body.boot-idle-wait #c,
  body.boot-idle-wait #c2,
  body.boot-idle-wait #paneRow,
  body.boot-idle-wait #v,
  body.boot-joining #stage,
  body.boot-joining #ambient,
  body.boot-joining #ambientDim,
  body.boot-joining #brandField,
  body.boot-joining #c,
  body.boot-joining #c2,
  body.boot-joining #paneRow,
  body.boot-joining #v {
    opacity: 0 !important;
    visibility: hidden;
  }
  body.boot-power:not(.boot-settle) #bootLine {
    display: none !important;
  }
  body.boot-power:not(.boot-settle) #bootTitle {
    margin-top: 0;
    font: 1000 clamp(42px, 9.5vw, 64px)/1.05 -apple-system, "PingFang SC", "Apple SD Gothic Neo", "Noto Sans KR", sans-serif;
    letter-spacing: 0.12em;
    text-indent: 0.12em;
    color: var(--boot-title, rgba(255, 255, 255, 0.94));
    filter: none;
    transform: none;
    opacity: 1;
    text-align: center;
    font-optical-sizing: auto;
    text-shadow: 0 0 40px var(--boot-title-glow, rgba(88, 132, 204, 0.22));
  }
  #bootIdleCopy {
    display: contents;
  }
  body.boot-power:not(.boot-settle) #bootIdleCopy {
    display: flex;
    flex-direction: column;
    align-items: center;
    width: 100%;
    margin-top: clamp(20px, 3.5vh, 32px);
  }
  body.boot-power:not(.boot-settle) #bootLabel {
    margin-top: 0;
    font: 600 clamp(28px, 5.5vw, 40px)/1.35 -apple-system, "PingFang SC", "Apple SD Gothic Neo", "Noto Sans KR", sans-serif;
    color: var(--boot-label, rgba(255, 255, 255, 0.94));
    opacity: 1;
    letter-spacing: 0.04em;
    text-align: center;
    max-width: none;
    white-space: nowrap;
    text-wrap: nowrap;
    font-optical-sizing: auto;
  }
  #bootSubLabel {
    display: none;
    margin-top: clamp(14px, 2.5vh, 20px);
    font: 400 clamp(14px, 1.9vw, 16px)/1.5 -apple-system, "PingFang SC", sans-serif;
    color: rgba(255, 255, 255, 0.58);
    letter-spacing: 0.02em;
    text-align: center;
    max-width: min(380px, 82vw);
    text-wrap: balance;
    transition: opacity 400ms ease;
    font-optical-sizing: auto;
  }
  #bootSubLabel.is-fading {
    opacity: 0;
  }
  body.boot-idle-wait #bootSubLabel,
  body.boot-cast-ended #bootSubLabel {
    display: none;
  }

  /* 投屏已结束 */
  body.boot-cast-ended #boot {
    pointer-events: none;
  }
  body.boot-cast-ended #dockFab,
  body.boot-cast-ended #dockPanel,
  body.boot-cast-ended #dockFabPreview {
    opacity: 0 !important;
    pointer-events: none !important;
    visibility: hidden !important;
    transform: none !important;
  }
  body.boot-cast-ended #stage,
  body.boot-cast-ended #ambient,
  body.boot-cast-ended #ambientDim,
  body.boot-cast-ended #brandField,
  body.boot-cast-ended #c,
  body.boot-cast-ended #c2,
  body.boot-cast-ended #paneRow,
  body.boot-cast-ended #v,
  body.boot-cast-ended #castDesktop {
    opacity: 0 !important;
    visibility: hidden;
  }
  body.boot-cast-ended #bootLine,
  body.boot-cast-ended #bootEyebrow,
  body.boot-cast-ended #bootSubLabel[aria-hidden="true"] {
    display: none !important;
  }
  #bootEyebrow {
    display: none;
    margin: 0 0 clamp(12px, 2vh, 18px);
    font: 500 clamp(12px, 1.7vw, 15px)/1.3 -apple-system, "PingFang SC", sans-serif;
    letter-spacing: 0.12em;
    color: rgba(255, 255, 255, 0.42);
  }
  body.boot-cast-ended #bootLabel {
    animation: castEndedFadeIn 0.55s cubic-bezier(.22,.61,.36,1) both;
  }
  @keyframes castEndedFadeIn {
    from { opacity: 0; }
    to { opacity: 1; }
  }

  @keyframes idleWaitSweep {
    0% { transform: translateX(-110%); }
    100% { transform: translateX(290%); }
  }
  @media (prefers-reduced-motion: reduce) {
    #bootLine, #bootTitle, #bootLabel { transition-duration: .01ms !important; }
    body.boot-settle #bootTitle { transform: none; filter: none; }
    body.boot-power #bootLineCore { animation: none; left: 50%; width: 42%; transform: translateX(-50%); }
    body.boot-cast-ended #bootLabel { animation: none; }
    .boot-status-dot.is-listening { animation: none !important; }
    .boot-lang-layer {
      transition-duration: .01ms !important;
      filter: none !important;
    }
    body.boot-power .boot-glass-card {
      transition: opacity 200ms ease !important;
      transform: none !important;
    }
  }
  @media (prefers-reduced-transparency: reduce) {
    body.boot-power:not(.boot-settle) #boot {
      background: var(--desktop-skin-canvas-opaque, var(--desktop-skin-canvas));
    }
    body.boot-power #boot .boot-sky,
    body.boot-power #boot .boot-lift {
      opacity: 0;
    }
    body.boot-power:not(.boot-settle) .boot-glass-card {
      background: transparent;
      backdrop-filter: none;
      -webkit-backdrop-filter: none;
      border: none;
      box-shadow: none;
    }
  }
  body.car-perf.boot-power:not(.boot-settle) .boot-glass-card {
    backdrop-filter: none;
    -webkit-backdrop-filter: none;
    background: transparent;
    border: none;
    box-shadow: none;
  }
  @media (prefers-contrast: more) {
    body.boot-power:not(.boot-settle) .boot-glass-card {
      border: none;
      background: transparent;
      box-shadow: none;
    }
  }

  /* 链路/热点断线：顶部悬浮材质条（Apple material + critically damped enter） */
  #castLinkAlert {
    --cast-link-alert-ease: cubic-bezier(0.32, 0.72, 0, 1);
    position: fixed;
    top: calc(12px + env(safe-area-inset-top, 0px));
    left: 50%;
    z-index: 125;
    box-sizing: border-box;
    width: min(1100px, calc(100% - 48px));
    margin: 0;
    padding: 0;
    border: none;
    background: transparent;
    color: rgba(255, 255, 255, 0.96);
    opacity: 0;
    visibility: hidden;
    pointer-events: none;
    transform: translate3d(-50%, -12px, 0) scale(0.96);
    transform-origin: 50% 0%;
    will-change: transform, opacity;
    transition:
      opacity 0.36s var(--cast-link-alert-ease),
      transform 0.4s var(--cast-link-alert-ease),
      visibility 0s linear 0.4s;
  }
  #castLinkAlert.show {
    opacity: 1;
    visibility: visible;
    pointer-events: auto;
    transform: translate3d(-50%, 0, 0) scale(1);
    transition:
      opacity 0.36s var(--cast-link-alert-ease),
      transform 0.4s var(--cast-link-alert-ease),
      visibility 0s;
  }
  #castLinkAlert.dismissing {
    opacity: 0;
    visibility: hidden;
    pointer-events: none;
    transform: translate3d(-50%, -36px, 0) scale(0.96);
    transition:
      opacity 0.22s var(--cast-link-alert-ease),
      transform 0.28s var(--cast-link-alert-ease),
      visibility 0s linear 0.28s;
  }
  .cast-link-alert-inner {
    position: relative;
    display: flex;
    align-items: flex-start;
    gap: 22px;
    box-sizing: border-box;
    width: 100%;
    padding: 28px 72px 28px 32px;
    border-radius: 28px;
    border: 1px solid rgba(255, 255, 255, 0.14);
    border-top-color: rgba(255, 255, 255, 0.28);
    background: rgba(28, 28, 30, 0.62);
    backdrop-filter: blur(28px) saturate(180%);
    -webkit-backdrop-filter: blur(28px) saturate(180%);
    box-shadow:
      0 1px 0 rgba(255, 255, 255, 0.06) inset,
      0 10px 28px rgba(0, 0, 0, 0.28),
      0 2px 8px rgba(0, 0, 0, 0.18);
    touch-action: none;
  }
  .cast-link-alert-mark {
    flex: 0 0 auto;
    width: 22px;
    height: 22px;
    margin-top: 16px;
    border-radius: 50%;
    background: #ff9f0a;
    box-shadow:
      0 0 0 7px rgba(255, 159, 10, 0.18),
      0 0 22px rgba(255, 159, 10, 0.4);
  }
  .cast-link-alert-copy {
    min-width: 0;
    display: flex;
    flex-direction: column;
    gap: 10px;
    text-align: left;
  }
  .cast-link-alert-close {
    position: absolute;
    top: 14px;
    right: 14px;
    z-index: 2;
    box-sizing: border-box;
    width: 52px;
    height: 52px;
    margin: 0;
    padding: 0;
    border: none;
    border-radius: 50%;
    background: rgba(255, 255, 255, 0.12);
    color: rgba(255, 255, 255, 0.92);
    font: 400 36px/1 -apple-system, BlinkMacSystemFont, "SF Pro Text", "PingFang SC", sans-serif;
    cursor: pointer;
    -webkit-tap-highlight-color: transparent;
    display: flex;
    align-items: center;
    justify-content: center;
  }
  .cast-link-alert-close:active {
    background: rgba(255, 255, 255, 0.22);
  }
  .cast-link-alert-close span {
    display: block;
    margin-top: -2px;
  }
  #castLinkAlertTitle {
    font: 700 48px/1.12 -apple-system, BlinkMacSystemFont, "SF Pro Text", "PingFang SC", sans-serif;
    letter-spacing: -0.035em;
    font-optical-sizing: auto;
    color: rgba(255, 255, 255, 0.98);
    text-shadow: 0 1px 2px rgba(0, 0, 0, 0.35);
  }
  #castLinkAlertBody {
    font: 500 32px/1.3 -apple-system, BlinkMacSystemFont, "SF Pro Text", "PingFang SC", sans-serif;
    letter-spacing: -0.02em;
    color: rgba(235, 235, 245, 0.88);
  }
  @media (prefers-reduced-transparency: reduce) {
    .cast-link-alert-inner {
      background: rgba(28, 28, 30, 0.96);
      backdrop-filter: none;
      -webkit-backdrop-filter: none;
    }
  }
  @media (prefers-contrast: more) {
    .cast-link-alert-inner {
      background: rgba(22, 22, 24, 0.98);
      border-color: rgba(255, 255, 255, 0.42);
    }
    #castLinkAlertBody {
      color: rgba(255, 255, 255, 0.88);
    }
  }
  @media (prefers-reduced-motion: reduce) {
    #castLinkAlert,
    #castLinkAlert.show {
      transform: translate3d(-50%, 0, 0);
      transition: opacity 0.2s ease, visibility 0s linear 0.2s;
    }
    #castLinkAlert.show {
      transition: opacity 0.2s ease, visibility 0s;
    }
  }

  #carImeDismissBtn {
    position: fixed;
    left: 0;
    top: 0;
    z-index: 27;
    box-sizing: border-box;
    display: none;
    align-items: center;
    justify-content: center;
    gap: 12px;
    margin: 0;
    padding: 14px 24px;
    border: 1px solid rgba(255, 255, 255, 0.2);
    border-radius: 999px;
    background: rgba(22, 26, 34, 0.88);
    backdrop-filter: blur(18px) saturate(160%);
    -webkit-backdrop-filter: blur(18px) saturate(160%);
    box-shadow: 0 4px 18px rgba(0, 0, 0, 0.35);
    color: rgba(255, 255, 255, 0.92);
    font: 600 22px/1 -apple-system, "PingFang SC", sans-serif;
    cursor: pointer;
    touch-action: none;
    pointer-events: none;
    opacity: 0;
    transform: translateY(-6px);
    transition: opacity 0.22s ease, transform 0.22s ease, box-shadow 0.18s ease;
    -webkit-tap-highlight-color: transparent;
    user-select: none;
    -webkit-user-select: none;
  }
  #carImeDismissBtn .car-ime-dismiss-icon {
    display: block;
    width: 30px;
    height: 30px;
    flex-shrink: 0;
    color: inherit;
    pointer-events: none;
  }
  #carImeDismissBtn .car-ime-dismiss-label {
    display: block;
    line-height: 1;
  }
  #carImeDismissBtn.show {
    display: inline-flex;
    pointer-events: auto;
    opacity: 1;
    transform: translateY(0);
  }
  #carImeDismissBtn.is-dragging {
    cursor: grabbing;
    transform: scale(1.04);
    box-shadow: 0 8px 28px rgba(0, 0, 0, 0.48);
    transition: transform 80ms ease-out, box-shadow 80ms ease-out;
  }
  #carImeDismissBtn:active:not(.is-dragging) {
    transform: scale(0.96);
    background: rgba(32, 38, 48, 0.95);
  }

  
  
