/* ============================================
   主题变量系统 - 深色模式（默认）
   ============================================ */
:root {
    /* 基础颜色 */
    --bg-color: #1e1e1e;
    --editor-bg: #111;
    --key-bg: #333;
    --key-active: #555;
    --key-shift-active: #004080;
    --key-ctrl-active: var(--accent); /* t63②：旧蓝收编 */
    --text-color: #d4d4d4;
    --dim-color: #666;
    --accent-color: var(--accent); /* t63②：旧蓝收编 */
    --border-color: #111;
    
    /* 菜单栏 */
    --menu-bg: #333333;
    --menu-hover: #444444;
    --menu-text: #cccccc;
    
    /* 下拉菜单 */
    --dropdown-bg: #333333;
    --dropdown-border: #444444;
    --dropdown-item-hover: #444444;
    
    /* 侧边栏 */
    --sidebar-bg: #252526;
    --sidebar-border: #333333;
    --sidebar-btn-bg: #333333;
    
    /* 面板 */
    --panel-header-bg: #333333;
    --panel-border: #444444;
    --panel-hover: #444444;
    
    /* 模态框 */
    --modal-overlay: rgba(0, 0, 0, 0.7);
    --modal-bg: #252526;
    --modal-border: #444;
    --modal-header-bg: #333;
    --modal-shadow: rgba(0,0,0,0.5);
    
    /* 终端 */
    --terminal-bg: #0d0d0d;
    --terminal-header-bg: #1e1e1e;
    --terminal-border-color: var(--accent); /* t63② */
    --terminal-tab-hover: #2a2a2a;
    
    /* 插件 */
    --plugin-bg: #2d2d30;
    --plugin-border: #444;
    --plugin-header-color: #ffffff;
    
    /* 按钮 */
    --btn-primary: var(--accent); /* t63② */
    --btn-primary-hover: var(--accent-hover); /* t63② */
    --btn-secondary: #3e3e42;
    --btn-danger: #c53030;
    
    /* 输入框 */
    --input-bg: #1e1e1e;
    --input-border: #3c3c3c;
    --input-text: #d4d4d4;
    
    /* 代码高亮 */
    --hl-kw: #569cd6;
    --hl-str: #ce9178;
    --hl-com: #6a9955;
    --hl-dir: #c586c0;
    --hl-num: #b5cea8;
    
    /* 其他 */
    --link-color: #4daafc;
    --terminal-text: #ccc;

    /* ===== t53 设计系统终稿 token（dark）===== */
    --g0: #161616;  --g1: #1f1f1f;  --g2: #262626;  --g3: #333333;  --g4: #404040;
    --tx1: #e8e8e8; --tx2: #9d9d9d; --tx3: #6e6e6e;
    --line: #2e2e2e;
    --accent: #4daafc;      --accent-hover: #6dbbff;
    --danger: #f48771;      --warn: #cca700;        --ok: #6a9955;
    --r-s: 4px;             --r-m: 8px;             --r-l: 12px;
    --shadow-float: 0 8px 24px rgba(0, 0, 0, 0.45);
    --shadow-blur: 0 8px 32px rgba(0, 0, 0, 0.55);
    /* UI 技能精华：强 ease-out 入场曲线，禁 ease-in；动效 <300ms */
    --tr-fast: 120ms cubic-bezier(0.23, 1, 0.32, 1);
    --tr: 200ms cubic-bezier(0.23, 1, 0.32, 1);
    --ease-out-soft: cubic-bezier(0.23, 1, 0.32, 1);
    --ease-inout-hard: cubic-bezier(0.77, 0, 0.175, 1);
    /* 别名：对齐 v3 组件文件(theme-v3 等)的引用名 */
    --ease-out: var(--ease-out-soft);
    --ease-inout: var(--ease-inout-hard);
    --blur: 12px; /* t63：毛玻璃单源（theme-v3 消费） */
    --font-ui: system-ui, -apple-system, "Segoe UI", Roboto, "PingFang SC", "Microsoft YaHei", sans-serif;
}

/* ============================================
   浅色模式变量
   ============================================ */
[data-theme="light"] {
    /* 基础颜色 */
    --bg-color: #ffffff;
    --editor-bg: #f5f5f5;
    --key-bg: #e0e0e0;
    --key-active: #c0c0c0;
    --key-shift-active: #0078d4;
    --key-ctrl-active: var(--accent); /* t63仲裁① */
    --text-color: #333333;
    --dim-color: #6e6e6e;
    --accent-color: var(--accent); /* t63仲裁① */
    --border-color: #e0e0e0;
    
    /* 菜单栏 */
    --menu-bg: #f0f0f0;
    --menu-hover: #e0e0e0;
    --menu-text: #333333;
    
    /* 下拉菜单 */
    --dropdown-bg: #f0f0f0;
    --dropdown-border: #d0d0d0;
    --dropdown-item-hover: #e0e0e0;
    
    /* 侧边栏 */
    --sidebar-bg: #f3f3f3;
    --sidebar-border: #e0e0e0;
    --sidebar-btn-bg: #e0e0e0;
    
    /* 面板 */
    --panel-header-bg: #f0f0f0;
    --panel-border: #e0e0e0;
    --panel-hover: #e0e0e0;
    
    /* 模态框 */
    --modal-overlay: rgba(0, 0, 0, 0.3);
    --modal-bg: #ffffff;
    --modal-border: #d0d0d0;
    --modal-header-bg: #f0f0f0;
    --modal-shadow: rgba(0,0,0,0.2);
    
    /* 终端 */
    --terminal-bg: #f9f9f9;
    --terminal-header-bg: #f0f0f0;
    --terminal-border-color: var(--accent); /* t63仲裁① */
    --terminal-tab-hover: #e8e8e8;
    
    /* 插件 */
    --plugin-bg: #fafafa;
    --plugin-border: #d0d0d0;
    --plugin-header-color: #333333;
    
    /* 按钮 */
    --btn-primary: var(--accent); /* t63仲裁① */
    --btn-primary-hover: var(--accent-hover); /* t63仲裁① */
    --btn-secondary: #e0e0e0;
    --btn-danger: #d13438;
    
    /* 输入框 */
    --input-bg: #ffffff;
    --input-border: #d0d0d0;
    --input-text: #333333;
    
    /* 代码高亮 - 浅色版 */
    --hl-kw: #0000ff;
    --hl-str: #a31515;
    --hl-com: #008000;
    --hl-dir: #af00db;
    --hl-num: #098658;
    
    /* 其他 */
    --link-color: #0066cc;
    --terminal-text: #333;
    
    /* 图标按钮在浅色模式下使用深色图标 */

    /* ===== t53 设计系统终稿 token（light，与 dark 同名同数量成对）===== */
    --g0: #f5f5f5;  --g1: #ffffff;  --g2: #ffffff;  --g3: #e0e0e0;  --g4: #d0d0d0;
    --tx1: #1f1f1f; --tx2: #616161; --tx3: #9e9e9e;
    --line: #e0e0e0;
    --accent: #0078d4;      --accent-hover: #106ebe;
    --danger: #d13438;      --warn: #9d6b00;        --ok: #107c10;
    --r-s: 4px;             --r-m: 8px;             --r-l: 12px;
    --shadow-float: 0 8px 24px rgba(0, 0, 0, 0.12);
    --shadow-blur: 0 8px 32px rgba(0, 0, 0, 0.16);
    --tr-fast: 120ms cubic-bezier(0.23, 1, 0.32, 1);
    --tr: 200ms cubic-bezier(0.23, 1, 0.32, 1);
    --ease-out-soft: cubic-bezier(0.23, 1, 0.32, 1);
    --ease-inout-hard: cubic-bezier(0.77, 0, 0.175, 1);
    /* 别名：对齐 v3 组件文件(theme-v3 等)的引用名 */
    --ease-out: var(--ease-out-soft);
    --ease-inout: var(--ease-inout-hard);
    --blur: 12px; /* t63：毛玻璃单源（theme-v3 消费） */
    --font-ui: system-ui, -apple-system, "Segoe UI", Roboto, "PingFang SC", "Microsoft YaHei", sans-serif;
}

* { box-sizing: border-box; touch-action: none; }
/* 只对特定元素禁用选择，保留其他元素可选择 */
.key, .tool-btn, .line-number, .line-view, .line-wrapper, .row, .modal-header, .output-header { user-select: none; -webkit-user-select: none; }
body { margin: 0; padding: 0; background-color: var(--bg-color); height: 100vh; width: 100vw; display: flex; flex-direction: column; overflow: hidden; font-family: var(--font-ui); }

/* VS Code 风格顶部菜单栏 */
/* ===== v3 重构·顶部菜单栏：融入画布的扁平条，菜单项胶囊化 ===== */
#top-menu-bar {
    height: 36px;
    min-height: 36px;
    background-color: var(--g0);
    display: flex;
    align-items: center;
    justify-content: space-between;
    border-bottom: 1px solid var(--line);
    z-index: 50;
    padding: 0 10px;
}

#menu-bar-left {
    display: flex;
    align-items: center;
    gap: 12px;
}

#logo {
    height: 20px;
    margin-right: 12px;
}

.menu-item {
    color: var(--tx2);
    font-size: 13px;
    padding: 4px 10px;
    cursor: pointer;
    border-radius: var(--r-s);
    user-select: none;
}

.menu-item:hover {
    background-color: var(--g2);
    color: var(--tx1);
}

#menu-bar-right {
    display: flex;
    align-items: center;
    gap: 8px;
}

#menu-bar-center {
    display: flex;
    align-items: center;
    justify-content: center;
    flex: 1;
    color: var(--menu-text);
    font-size: 14px;
    margin: 0 10px;
}

.current-file {
    color: var(--tx1);
    font-size: 13px;
    background-color: var(--g2);
    border-radius: var(--r-s);
    padding: 2px 12px;
    text-align: center;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    max-width: 200px;
}

.tool-btn {
    background-color: transparent;
    color: var(--tx2);
    border: none;
    border-radius: var(--r-s);
    width: 32px;
    height: 24px;
    display: flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
    font-size: 14px;
    padding: 0;
}

.tool-btn:hover {
    background-color: var(--g2);
}

.tool-btn img {
    width: 16px;
    height: 16px;
    max-width: 100%;
    max-height: 100%;
}

#run-btn {
    background: none;
    border: none;
    padding: 0;
    width: auto;
    height: auto;
}

#run-btn img {
    width: 20px;
    height: 20px;
}

#luogu-btn {
    background: none;
    border: none;
    padding: 0;
    width: auto;
    height: auto;
}

#luogu-btn img {
    width: 20px;
    height: 20px;
}

/* 下拉菜单样式 */
.dropdown-menu {
    position: absolute;
    top: 36px;
    left: 0;
    background-color: var(--g2);
    border: 1px solid var(--line);
    border-radius: var(--r-m);
    box-shadow: var(--shadow-float);
    -webkit-backdrop-filter: blur(8px);
    backdrop-filter: blur(8px);
    min-width: 180px;
    z-index: 100;
}

.dropdown-item {
    padding: 6px 12px;
    color: var(--menu-text);
    cursor: pointer;
    user-select: none;
    font-size: 14px;
}

.dropdown-item:hover {
    background-color: var(--dropdown-item-hover);
}

.dropdown-divider {
    height: 1px;
    background-color: var(--dropdown-border);
    margin: 4px 0;
}

/* 左侧边栏 */
#left-sidebar {
    position: fixed;
    top: 36px;
    left: 0;
    width: 48px;
    height: calc(100vh - 36px);
    background-color: transparent;
    display: flex;
    flex-direction: column;
    align-items: center;
    padding-top: 10px;
    gap: 6px;
    z-index: 40;
    border-right: none;
}

.sidebar-button {
    width: 36px;
    height: 36px;
    background-color: transparent;
    color: var(--tx2);
    border: none;
    border-radius: var(--r-m);
    font-size: 16px;
    display: flex;
    justify-content: center;
    align-items: center;
    cursor: pointer;
    margin-bottom: 0;
    user-select: none;
}

.sidebar-button:hover {
    background-color: var(--g2);
}

/* [t11#③] .sidebar-button.active 单源基座：桌面 g2 底 + inset accent 左条。
   原 :1219 的纯 accent 背景重复定义（靠源序覆盖本条）已删除 */
.sidebar-button.active {
    background-color: var(--g2);
    box-shadow: inset 3px 0 0 var(--accent);
}

/* ===== v3 重构·浮层面板：VFS/插件中心/CPH 统一为圆角悬浮卡片 ===== */
.vfs-panel {
    position: fixed;
    top: 44px;
    left: 56px;
    bottom: 12px;
    height: auto;
    width: 276px;
    background-color: var(--g1);
    border: 1px solid var(--line);
    border-radius: var(--r-l);
    box-shadow: var(--shadow-blur);
    z-index: 30;
    display: none;
    flex-direction: column;
    overflow: hidden;
}

.vfs-header {
    height: 40px;
    min-height: 40px;
    background-color: transparent;
    display: flex;
    align-items: center;
    padding: 0 12px;
    border-bottom: 1px solid var(--line);
    font-size: 12px;
    font-weight: 600;
    letter-spacing: 0.04em;
    color: var(--tx2);
}

.vfs-close-btn {
    margin-left: auto;
    background: none;
    border: none;
    color: var(--menu-text);
    font-size: 16px;
    cursor: pointer;
    width: 20px;
    height: 20px;
    display: flex;
    justify-content: center;
    align-items: center;
}

.vfs-content {
    flex: 1;
    overflow-y: auto;
    padding: 8px;
}

.vfs-root {
    margin-bottom: 8px;
}

.vfs-folder, .vfs-file {
    padding: 4px 8px;
    margin: 2px 0;
    border-radius: 2px;
    cursor: pointer;
    user-select: none;
    font-size: 14px;
    display: flex;
    align-items: center;
    gap: 6px;
    color: var(--text-color);
}

.vfs-folder:hover, .vfs-file:hover {
    background-color: var(--panel-hover);
}

.vfs-folder::before {
    content: "📁";
    font-size: 14px;
}

.vfs-file::before {
    content: "📄";
    font-size: 14px;
}

/* 3行预览区 (Flex列布局，内部包含行号+文本) */
#lines-container {
    height: 80px;
    min-height: 80px;
    background-color: var(--editor-bg);
    display: flex;
    flex-direction: column;
    justify-content: center;
    overflow: hidden;
    padding: 4px 0; /* t53批5：4px 网格 */
    border-bottom: 2px solid var(--panel-border);
    margin-left: 48px; /* v3：48px 侧栏轨道 */
}

.line-wrapper {
    display: flex;
    flex-direction: row;
    align-items: center;
    height: 22px;
}
.line-wrapper.current {
    height: 26px;
    background-color: rgba(255,255,255,0.05);
}

/* 键盘模式下的行号 */
.line-number {
    width: 40px; min-width: 40px;
    text-align: right; padding-right: 10px;
    color: #555; font-size: 12px; font-family: Consolas, monospace;
    user-select: none; border-right: 1px solid var(--border-color); margin-right: 8px;
    background-color: var(--bg-color); height: 100%; line-height: 22px;
}
.line-wrapper.current .line-number {
    color: var(--text-color); font-weight: bold; font-size: 14px; line-height: 26px;
}

.line-view {
    flex: 1; white-space: pre; overflow: hidden; font-size: 14px; color: var(--dim-color); line-height: 22px; tab-size: 4;
}
.line-view.current {
    color: var(--text-color); font-size: 16px; line-height: 26px; font-weight: bold; overflow-x: auto; scrollbar-width: none;
}
.line-view.current::-webkit-scrollbar { display: none; }

.line-view .cursor { display: inline-block; width: 2px; height: 18px; background-color: #0f0; animation: blink 1s step-end infinite; vertical-align: text-bottom; margin-bottom: 3px; } /* [P0-B] 收窄：仅作用于手机三行预览光标，勿命中 monaco caret */
@keyframes blink { 50% { opacity: 0; } }

/* 编辑器区域 */
#editor-area {
    flex: 1 1 auto; /* t75：显式 grow+shrink，防 flex 链退化 */
    min-height: 0;  /* t75：解除 flex 默认 min-height:auto 对拉伸/收缩的干扰 */
    display: flex;
    overflow: hidden;
    position: relative;
    margin-left: 48px; /* v3：48px 侧栏轨道 */
}

#editor-container {
    flex: 1 1 auto; /* t75：同上，保证 monaco 容器吃满 editor-area */
    min-height: 0;
    height: 100%;
}

/* t76：monaco 根节点强制跟随容器——无论内部测量的像素值是否陈旧
   （安卓 WebView ResizeObserver/初始时序失真场景），视觉尺寸恒等于容器 */
#editor-container > .monaco-editor,
#editor-container > div {
    width: 100% !important;
    height: 100% !important;
}

/* 模态框 */
#input-modal { display: none; position: fixed; top: 0; left: 0; width: 100%; height: 100%; background-color: var(--modal-overlay); z-index: 300; justify-content: center; align-items: center; -webkit-backdrop-filter: blur(2px); backdrop-filter: blur(2px); }
.modal-content { background-color: var(--modal-bg); width: 85%; max-width: 400px; border: 1px solid var(--modal-border); border-radius: var(--r-s); /* t63⑧ */ padding: 15px; display: flex; flex-direction: column; box-shadow: 0 10px 25px var(--modal-shadow); }
.modal-header { color: var(--text-color); font-weight: bold; margin-bottom: 10px; font-size: 14px; }
#modal-textarea { background-color: var(--input-bg); color: var(--input-text); border: 1px solid var(--input-border); border-radius: 4px; padding: 8px; font-family: Consolas, monospace; font-size: 14px; height: 150px; resize: none; outline: none; user-select: text; -webkit-user-select: text; }
.modal-footer { display: flex; justify-content: flex-end; margin-top: 15px; gap: 10px; }
.modal-btn { padding: 8px 16px; border: none; border-radius: 3px; font-size: 14px; cursor: pointer; color: var(--text-color); }
#modal-cancel { background-color: var(--btn-secondary); }
#modal-run { background-color: var(--btn-primary); }

/* 快速设置弹窗样式优化 */
#preferences-setup-modal .modal-content {
    max-width: 500px;
    max-height: 90vh;
    overflow-y: auto;
    -webkit-overflow-scrolling: touch;
    touch-action: pan-y;
}

/* t53 批2：向导/教程淡入（物理感：scale(.95)+opacity 起步，强 ease-out，200ms<300ms） */
@keyframes phoi-fade-up {
    from { opacity: 0; transform: translateY(8px) scale(0.95); }
    to { opacity: 1; transform: none; }
}
#preferences-setup-modal .modal-content,
#tutorial-modal .modal-content {
    animation: phoi-fade-up 200ms var(--ease-out-soft);
}

#preferences-setup-modal .modal-body {
    max-height: 70vh;
    overflow-y: auto;
    overflow-x: hidden;
    padding: 20px;
    -webkit-overflow-scrolling: touch;
    touch-action: pan-y;
    overscroll-behavior: contain;
}

#preferences-setup-modal .modal-footer {
    display: flex;
    justify-content: space-between;
    gap: 10px;
    margin-top: 15px;
    flex-shrink: 0;
}

#preferences-setup-modal .modal-footer .modal-btn {
    flex: 1;
    padding: 10px 16px;
}

/* 快速设置内容区域优化 */
#prefs-setup-content {
    -webkit-overflow-scrolling: touch;
    touch-action: pan-y;
}

/* 设备类型和主题按钮优化 */
#prefs-setup-content button {
    -webkit-tap-highlight-color: transparent;
    touch-action: manipulation;
}

/* 输出面板 - 已废弃，使用终端面板替代 */
/* #output-panel { ... } */

/* 统一终端面板 - GDB 终端风格 */
#terminal-panel {
    position: absolute;
    bottom: 0;
    left: 0;
    width: 100%;
    height: 30%;
    min-height: 150px;
    background-color: var(--g0);
    border-top: 1px solid var(--line);
    z-index: 200;
    display: none;
    flex-direction: column;
    box-shadow: var(--shadow-float);
    transition: height 0.1s ease;
}

#terminal-header {
    height: 35px;
    background-color: var(--g1);
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 0 10px;
    border-bottom: 1px solid var(--line);
    color: var(--text-color);
    font-size: 14px;
    cursor: ns-resize;
    user-select: none;
}

#terminal-header-left {
    display: flex;
    align-items: center;
    gap: 10px;
}

#terminal-header-right {
    display: flex;
    align-items: center;
    gap: 5px;
}

/* 终端标签页 */
.terminal-tabs {
    display: flex;
    gap: 0;
}

.terminal-tab {
    background: transparent;
    border: none;
    color: #969696;
    padding: 8px 16px;
    cursor: pointer;
    font-size: 13px;
    border-bottom: 2px solid transparent;
    transition: background-color var(--tr-fast), border-color var(--tr-fast), color var(--tr-fast);
}

.terminal-tab:hover {
    color: var(--text-color);
    background-color: var(--terminal-tab-hover);
}

.terminal-tab.active {
    color: var(--tx1);
    border-bottom-color: var(--accent);
    background-color: var(--g0);
}

#terminal-container {
    flex: 1;
    overflow: hidden;
    position: relative;
}

.terminal-content {
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    overflow: hidden;
}

.terminal-content-body {
    height: 100%;
    padding: 10px;
    overflow-y: auto;
    font-family: Consolas, monospace;
    font-size: 13px;
    white-space: pre-wrap;
    color: var(--terminal-text);
    user-select: text;
    -webkit-user-select: text;
    cursor: text;
}

/* 终端面板调整大小手柄 */
#terminal-resizer {
    height: 3px;
    background: var(--terminal-border-color);
    cursor: ns-resize;
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    border-bottom: 1px solid var(--panel-border);
    z-index: 10;
}

/* 调试输入行 */
#debug-input-line {
    background: var(--terminal-header-bg) !important;
    border-top-color: var(--panel-border) !important;
}

/* 最小化状态 */
#terminal-panel.minimized #terminal-container,
#terminal-panel.minimized #debug-input-line {
    display: none;
}

#terminal-panel.minimized {
    height: 36px !important;
    min-height: 36px !important;
}
.out-section { margin-bottom: 10px; }
.out-title { color: var(--hl-kw); font-weight: bold; margin-bottom: 4px; display: block; }
.out-err { color: var(--danger); } .out-warn { color: var(--warn); } .out-res { color: var(--tx1); } .out-stat { color: var(--ok); font-size: 12px; font-style: italic; border-top: 1px solid var(--line); margin-top: 5px; padding-top: 5px;}

/* 高亮 */
.hl-kw { color: var(--hl-kw); font-weight: bold; } .hl-str { color: var(--hl-str); } .hl-com { color: var(--hl-com); } .hl-dir { color: var(--hl-dir); } .hl-num { color: var(--hl-num); }

/* 回车键默认样式 */
.key.highlight {
    background-color: var(--accent-color);
    color: #fff;
}

/* 键盘 */
#keyboard-container {
    position: fixed;
    bottom: 0;
    left: 48px; /* v3：从侧边栏右边开始 */
    right: 0;
    height: var(--phoi-kb-height, 220px); /* t75追加 200→220；[t22·P2] 改消费 --phoi-kb-height 单源 */
    display: flex;
    flex-direction: column;
    padding: 4px; /* t53批5：4px 网格对齐 */
    justify-content: space-between;
    background-color: var(--bg-color);
    border-top: 1px solid var(--panel-border);
    z-index: 100;
    margin-left: 0; /* 重置可能的左边距 */
}
.row { display: flex; width: 100%; height: 20%; gap: 4px; } /* t53批5：margin-bottom→gap */
.key { background-color: var(--key-bg); color: var(--text-color); border: 1px solid var(--border-color); border-radius: var(--r-s); margin: 0; display: flex; justify-content: center; align-items: center; font-size: 14px; font-weight: bold; flex-grow: 1; position: relative; }
/* t53批5·扁平化：拟物影与位移删除，按压反馈仅背景色瞬变（零 transition） */
.key:active, .key.active { background-color: var(--key-active); }
.key.shift-hold { background-color: var(--key-shift-active); border-color: var(--accent-color); }
.key.ctrl-hold { background-color: var(--key-ctrl-active); border-color: #0f0; }
.key-content { display: flex; flex-direction: column; align-items: center; line-height: 1; pointer-events: none; } /* [t11#②] alignItems→align-items（原为无效属性） */
.sup { font-size: 9px; color: #888; margin-bottom: 2px; } .main { font-size: 14px; }
.shifted .sup { color: var(--text-color); font-size: 14px; } .shifted .main { color: #666; font-size: 9px; } .alpha-key .sup { display: none; }
.w-1 { flex: 1; } .w-1-5 { flex: 1.5; } .w-2 { flex: 2; } .w-2-25 { flex: 2.25; } .w-space { flex: 6; }
.spacer { flex: 1; visibility: hidden; } .spacer-1-5 { flex: 1.5; visibility: hidden; } .spacer-sm { flex: 0.2; visibility: hidden; }
.mod { background-color: var(--key-bg); font-size: 11px; } .nav-key { background-color: var(--sidebar-bg); } .hide-keyboard { display: none !important; }
/* 图标按钮样式 */
.icon-btn {
    width: 20px;
    height: 20px;
    display: flex;
    align-items: center;
    justify-content: center;
    max-width: 100%;
    max-height: 100%;
}

.sidebar-button img {
    width: 20px;
    height: 20px;
    pointer-events: none; /* 防止图片影响点击事件 */
    transition: transform 0.2s ease; /* 添加过渡效果 */
}

.sidebar-button.vfs-open img {
    transform: rotate(180deg); /* 当面板打开时旋转图标 */
}

.sidebar-button.plugin-center-open img {
    transform: rotate(180deg); /* 当插件中心面板打开时旋转图标 */
}

.sidebar-button.cph-open img {
    transform: rotate(180deg); /* 当CPH面板打开时旋转图标 */
}

/* 插件中心样式 */
.plugin-item {
    margin-bottom: 15px;
    padding: 10px;
    border: 1px solid var(--plugin-border);
    border-radius: 4px;
    background-color: var(--plugin-bg);
}

.plugin-header {
    font-weight: bold;
    color: var(--plugin-header-color);
    margin-bottom: 8px;
    font-size: 14px;
}

.plugin-settings {
    padding-left: 10px;
}

/* [t21#t19④] 删除 .plugin-actions 死规则（无 DOM 生产者） */

.plugin-btn {
    padding: 6px 12px;
    background-color: var(--btn-primary);
    color: #fff;
    border: none;
    border-radius: 3px;
    font-size: 13px;
    cursor: pointer;
    text-align: center;
}

.plugin-btn:hover {
    background-color: var(--btn-primary-hover);
}

.setting-item {
    margin: 8px 0;
    display: flex;
    align-items: center;
    gap: 8px;
}

.setting-item label {
    display: flex;
    align-items: center;
    gap: 4px;
    color: var(--menu-text);
    font-size: 13px;
}

.setting-item input[type="number"] {
    width: 80px;
    padding: 3px 6px;
    background-color: var(--input-bg);
    color: var(--input-text);
    border: 1px solid var(--input-border);
    border-radius: 3px;
    font-size: 12px;
}

@media screen and (orientation: portrait) { .key { font-size: 11px; } .sup { font-size: 8px; } .main { font-size: 11px; } }

/* 关于弹窗样式 */
.modal-overlay {
    display: none;
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background-color: var(--modal-overlay);
    -webkit-backdrop-filter: blur(4px);
    backdrop-filter: blur(4px);
    z-index: 1000;
    justify-content: center;
    align-items: center;
}

.about-modal, .preferences-modal {
    width: 80%;
    max-width: 600px;
    max-height: 80vh;
    background-color: var(--modal-bg);
    border: 1px solid var(--line);
    border-radius: var(--r-l);
    box-shadow: var(--shadow-float);
    overflow-y: auto;
}

.modal-header {
    position: sticky;
    top: 0;
    z-index: 1;
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 15px 20px;
    border-bottom: 1px solid var(--modal-border);
    background-color: var(--modal-header-bg);
}

.modal-header h2 {
    margin: 0;
    color: var(--text-color);
    font-size: 18px;
}

.close-btn {
    font-size: 24px;
    color: var(--text-color);
    cursor: pointer;
    width: 30px;
    height: 30px;
    display: flex;
    align-items: center;
    justify-content: center;
    border-radius: 50%;
}

.close-btn:hover {
    background-color: var(--menu-hover);
}

.modal-body {
    padding: 20px;
    color: var(--text-color);
    line-height: 1.6;
}

.modal-body p {
    margin: 10px 0;
}

.modal-body a {
    color: var(--link-color);
    text-decoration: none;
}

.modal-body a:hover {
    text-decoration: underline;
}

/* 首选项弹窗特殊样式 */
.preferences-modal .modal-body {
    touch-action: pan-y;
}



.preferences-modal .setting-item {
    margin-bottom: 15px;
}

.preferences-modal .setting-item label {
    display: block;
    margin-bottom: 5px;
    font-weight: bold;
    color: var(--text-color);
}

.preferences-modal textarea#default-code-editor {
    width: 100%;
    height: 200px;
    background-color: var(--input-bg);
    color: var(--input-text);
    border: 1px solid var(--input-border);
    border-radius: 4px;
    padding: 8px;
    font-family: Consolas, monospace;
    font-size: 14px;
    resize: vertical;
    box-sizing: border-box;
}

/* 首选项弹窗按钮样式 */
.preferences-modal .modal-footer .modal-btn {
    color: var(--text-color); /* 使用主题变量 */
}

.preferences-modal .modal-footer #reset-default-code {
    background-color: var(--g3); /* 次级按钮 */
}

.preferences-modal .modal-footer #cancel-preferences {
    background-color: var(--g3); /* 次级按钮 */
}

.preferences-modal .modal-footer #save-preferences {
    background-color: var(--accent); /* 主按钮 */
    color: #ffffff;
}

/* 移动端代码补全样式
   [t22#⑧·P1] 基础规则包 @media(pointer:coarse)：桌面宽度不再产生
   「固定键盘+编辑器上方小条」错误布局；显示与否另由 mobile-autocomplete.ts
   adjustVisibility 的 coarse 门控（桌面直接不实例化）。 */
@media (pointer: coarse) {
    #mobile-autocomplete-container {
        display: flex;
        background-color: var(--input-bg);
        color: var(--input-text);
        height: 40px;
        align-items: center;
        padding: 0 10px;
        overflow-x: auto;
        overflow-y: hidden;
        white-space: nowrap;
        border-top: 1px solid var(--panel-border);
        z-index: 99;
        position: fixed;
        bottom: var(--phoi-kb-height, 220px); /* [t22·P2] 220px 直写改单源变量 */
        left: 48px;     /* v3：从侧边栏右边开始 */
        right: 0;
    }
}

/* 当键盘被隐藏时，补全框也应该隐藏 */
#keyboard-container.hide-keyboard ~ #mobile-autocomplete-container {
    display: none !important;
}

.mobile-autocomplete-item {
    color: #d4d4d4;
    margin: 0 8px;
    cursor: pointer;
    user-select: none;
}

.mobile-autocomplete-item:hover {
    text-decoration: underline;
}

/* 移动端滚动按钮样式 */
.up-btn-mobile, .down-btn-mobile {
    position: fixed;
    width: 40px;
    height: 40px;
    background-color: rgba(14, 99, 156, 0.8);
    color: white;
    display: flex;
    align-items: center;
    justify-content: center;
    border-radius: 50%;
    cursor: pointer;
    z-index: 102;
    font-size: 20px;
    box-shadow: 0 2px 10px rgba(0,0,0,0.3);
    user-select: none;
}

.up-btn-mobile {
    top: 60px;
    right: 20px;
}

.down-btn-mobile {
    bottom: 80px;
    right: 20px;
}

/* CPH插件样式 */
.cph-controls {
    padding: 10px;
    border-bottom: 1px solid var(--line);
}

/* [t11#⑥] 删除 .cph-problem-set 族死样式（style.css+theme-v3 共计）——全库无 DOM 生产者 */

.cph-test-cases-container {
    padding: 8px;
}

.cph-test-case {
    margin-bottom: 10px;
    border: 1px solid var(--line);
    border-radius: 4px;
    background-color: var(--g1);
}

.cph-test-case-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 6px 8px;
    background-color: var(--panel-header-bg);
    border-bottom: 1px solid var(--panel-border);
}

.cph-test-case-name {
    font-weight: bold;
    color: var(--text-color);
}

.cph-test-case-actions {
    display: flex;
    gap: 5px;
}

.cph-test-case-content {
    padding: 8px;
}

.cph-test-case-input, .cph-test-case-output {
    margin-bottom: 8px;
}

.cph-test-case-input label, .cph-test-case-output label {
    display: block;
    margin-bottom: 4px;
    color: var(--dim-color);
    font-size: 13px;
}

.cph-test-case-textarea {
    width: 100%;
    height: 60px;
    background-color: var(--input-bg);
    color: var(--input-text);
    border: 1px solid var(--input-border);
    border-radius: 3px;
    padding: 6px;
    font-family: Consolas, monospace;
    font-size: 12px;
    resize: vertical;
    box-sizing: border-box;
}

/* [t9#④] .btn-small 三处定义归一：
   本块 = 结构基座（尺寸/字级/光标），视觉皮肤单一权威在 theme-v3(:325，加载序最后)。
   浅色作用域内原 .btn-small 背景覆盖已删除（被 theme-v3 无条件同特异性后置覆盖，属死规则）。 */
.btn-small {
    padding: 4px 8px;
    background-color: var(--btn-primary);
    color: #fff;
    border: none;
    border-radius: 3px;
    font-size: 12px;
    cursor: pointer;
}

.btn-small:hover {
    background-color: var(--btn-primary-hover);
}

.cph-empty-state {
    padding: 10px;
    color: var(--dim-color);
    font-style: italic;
    text-align: center;
}

/* [t11#③] 原 .sidebar-button.active{background:var(--accent)} 已删：
   与 :402 单源基座冲突且靠源序覆盖，属重复权威 */

.plugin-description {
    color: #aaaaaa;
    font-size: 13px;
    margin-bottom: 8px;
}

/* CPH管理所有题目样式 */
.cph-all-files-container {
    margin-top: 10px;
    padding: 10px;
    border-top: 1px solid var(--line);
}

.cph-all-files-container h3 {
    margin: 0 0 10px 0;
    color: var(--text-color);
    font-size: 14px;
}

.cph-all-files-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 10px;
}

.cph-file-item {
    margin-bottom: 8px;
    padding: 8px;
    border: 1px solid #444;
    border-radius: 4px;
    background-color: #252526;
}

.cph-file-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 4px;
}

.cph-file-name {
    font-weight: bold;
    color: var(--text-color);
}

.cph-file-actions {
    display: flex;
    gap: 5px;
}

.cph-file-info {
    font-size: 12px;
    color: #888888;
    padding-left: 20px;
}

/* 调试功能样式 - 已废弃，使用终端面板替代 */
/* #debug-panel { ... } */
/* #debug-resizer { ... } */
/* #debug-terminal-container { ... } */
/* #debug-command-input { ... } */
/* #debug-panel.minimized { ... } */

/* 终端面板调试按钮样式 */
.debug-header-btn {
    background: transparent;
    border: none;
    color: var(--text-color);
    font-size: 18px;
    cursor: pointer;
    width: 28px;
    height: 28px;
    display: flex;
    align-items: center;
    justify-content: center;
    border-radius: 3px;
}

.debug-header-btn:hover {
    background-color: var(--menu-hover);
}

#terminal-close-btn:hover {
    background-color: #c42b1c;
}

/* 调试状态提示框 */
#debug-status-message {
    line-height: 1.6;
}

/* 调试按钮激活状态 */
.sidebar-button.debug-active {
    background-color: var(--accent);
}

/* GDB 输出颜色 */
.debug-output-info {
    color: var(--accent);
}

.debug-output-warning {
    color: #cca700;
}

.debug-output-error {
    color: #f48771;
}

.debug-output-success {
    color: #6a9955;
}

/* ========== 断点功能样式 ========== */

/* 断点 - 在行号前显示（无断点时悬停显示淡红色背景） */
.breakpoints {
    width: 10px !important;
    height: 10px !important;
    left: 5px !important;
    top: 5px;
    border-radius: 50%;
    display: inline-block;
    cursor: pointer;
}

.breakpoints:hover {
    background-color: rgba(255, 0, 0, 0.5);
}

/* 断点激活状态（红色圆点） */
.breakpoints-active {
    width: 10px !important;
    height: 10px !important;
    left: 5px !important;
    top: 5px;
    background-color: #e51400;
    border-radius: 50%;
    display: inline-block;
    cursor: pointer;
    z-index: 5;
}

.breakpoints-active:hover {
    background-color: #ff6b6b;
}

/* 当前执行行高亮（黄色背景） */
.debug-execution-line {
    background-color: rgba(255, 255, 0, 0.2) !important;
}

.debug-execution-line-text {
    font-weight: bold;
}

/* 断点命中高亮（橙色闪烁） */
/* ========== 调试 UI 控制区样式 ========== */

/* 调试控制按钮 */
.debug-control-btn {
    background-color: var(--sidebar-btn-bg);
    border: 1px solid var(--input-border);
    color: var(--menu-text);
    padding: 8px 5px;
    border-radius: 4px;
    cursor: pointer;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    transition: background-color var(--tr-fast), border-color var(--tr-fast), color var(--tr-fast);
    font-size: 12px;
}

.debug-control-btn:hover {
    background-color: var(--menu-hover);
    border-color: var(--accent-color);
    color: var(--text-color);
}

.debug-control-btn:active {
    background-color: var(--accent-color);
}

.debug-control-btn:disabled {
    opacity: 0.5;
    cursor: not-allowed;
}

/* 调试小按钮（添加/移除变量） */
.debug-small-btn {
    background-color: var(--sidebar-btn-bg);
    border: 1px solid var(--input-border);
    color: var(--menu-text);
    width: 24px;
    height: 24px;
    border-radius: 3px;
    cursor: pointer;
    font-size: 14px;
    display: flex;
    align-items: center;
    justify-content: center;
    transition: background-color var(--tr-fast), border-color var(--tr-fast), color var(--tr-fast);
}

.debug-small-btn:hover {
    background-color: var(--menu-hover);
    border-color: var(--accent-color);
    color: var(--text-color);
}

.debug-small-btn:active {
    background-color: var(--accent-color);
}

/* 变量列表项 */
.debug-variable-item {
    display: flex;
    align-items: flex-start;
    padding: 4px 6px;
    margin-bottom: 2px;
    border-radius: 3px;
    cursor: pointer;
    font-family: Consolas, monospace;
    font-size: 12px;
    white-space: nowrap;
    color: var(--text-color);
}

.debug-variable-item:hover {
    background-color: rgba(255, 255, 255, 0.05);
}

.debug-variable-item.selected {
    background-color: rgba(0, 122, 204, 0.3);
}

.debug-variable-item.expanded {
    white-space: pre-wrap;
    word-break: break-all;
    min-height: auto;
    max-height: 300px;
    overflow-y: auto;
}

.debug-var-name {
    color: #9cdcfe;
    margin-right: 8px;
    flex-shrink: 0;
}

.debug-var-value {
    color: #ce9178;
    word-break: break-all;
    flex: 1;
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
}

.debug-variable-item.expanded .debug-var-value {
    white-space: pre-wrap;
    overflow: visible;
    text-overflow: clip;
}

.debug-var-type {
    color: #4ec9b0;
    font-size: 11px;
    margin-left: 8px;
    white-space: nowrap;
}

/* 变量列表容器 */
#debug-variables-list {
    overflow-y: auto;
    max-height: none;
}

/* [t11#⑥] 删除死样式 .debug-add-var-dialog 族——全库无该 class 的 DOM 生产者（仅 debug-add-var-btn 按钮） */

/* [t11#④] 删除 aidebug 死样式族（原 :1536-1891 约 356 行）：aidebug.js 已于 t15 git rm 停用，
   全库无 .aidebug-*/#aidebug-* DOM 生产者；debug.js（保留）不消费这些选择器。 */

/* ============================================
   浅色模式全面覆盖样式
   [t11#①] 原生 CSS 嵌套已全部展平为 [data-theme="light"] 前缀平铺
   （android-lite 旧内核不支持原生嵌套；对照 :2458 写法），逐条保语义
   ============================================ */
[data-theme="light"] .tool-btn {
    background-color: #e0e0e0;
    color: var(--text-color);
}

[data-theme="light"] #run-btn {
    background: none;
}

/* 3行预览区 */
[data-theme="light"] #lines-container {
    background-color: #f0f0f0;
    border-bottom: 2px solid #ccc;
}

[data-theme="light"] .line-wrapper.current {
    background-color: #e8e8e8;
}

[data-theme="light"] .line-number {
    color: #888;
    background-color: #f0f0f0;
    border-right: 1px solid #ddd;
}

[data-theme="light"] .line-wrapper.current .line-number {
    color: var(--text-color);
}

[data-theme="light"] .line-view {
    color: var(--dim-color);
}

[data-theme="light"] .line-view.current {
    color: var(--text-color);
}

[data-theme="light"] .line-view .cursor {
    background-color: var(--accent-color);
}

/* 编辑器区域 */
[data-theme="light"] #editor-area {
    background-color: #ffffff;
}

/* 终端面板 */
[data-theme="light"] #terminal-panel {
    background-color: #f5f5f5;
    border-top-color: var(--accent);
}

[data-theme="light"] #terminal-header {
    background-color: #f0f0f0;
    border-bottom-color: #ddd;
    color: var(--text-color);
}

[data-theme="light"] .terminal-tab {
    color: var(--dim-color);
}

[data-theme="light"] .terminal-tab:hover {
    color: var(--text-color);
    background-color: #e8e8e8;
}

[data-theme="light"] .terminal-tab.active {
    color: var(--text-color);
    border-bottom-color: var(--accent);
    background-color: #f5f5f5;
}

[data-theme="light"] .terminal-content-body {
    color: var(--text-color);
}

/* 输出样式 */
[data-theme="light"] .out-title {
    color: #0000ff;
}

[data-theme="light"] .out-err {
    color: #d13438;
}

[data-theme="light"] .out-warn {
    color: #9d6b00;
}

[data-theme="light"] .out-res {
    color: var(--text-color);
}

[data-theme="light"] .out-stat {
    color: #107c10;
    border-top-color: #ddd;
}

/* 键盘样式 */
[data-theme="light"] #keyboard-container {
    background-color: #f0f0f0;
    border-top: 1px solid #ddd;
}

[data-theme="light"] .row {
    gap: 4px;
}

[data-theme="light"] .key {
    background-color: #e0e0e0;
    color: var(--text-color);
    border: 1px solid #ccc;
}

[data-theme="light"] .key:active,
[data-theme="light"] .key.active {
    background-color: #c0c0c0;
}

[data-theme="light"] .key.shift-hold {
    background-color: var(--accent-color);
    border-color: var(--key-shift-active);
}

[data-theme="light"] .key.ctrl-hold {
    background-color: var(--accent-color);
    border-color: var(--key-shift-active);
}

[data-theme="light"] .sup {
    color: var(--dim-color);
}

[data-theme="light"] .shifted .sup {
    color: var(--text-color);
}

[data-theme="light"] .shifted .main {
    color: var(--dim-color);
}

[data-theme="light"] .mod {
    background-color: #d0d0d0;
}

[data-theme="light"] .nav-key {
    background-color: #d8d8d8;
}

/* 侧边栏按钮 */
[data-theme="light"] .sidebar-button {
    background-color: #e0e0e0;
    color: var(--text-color);
}

[data-theme="light"] .sidebar-button:hover {
    background-color: #d0d0d0;
}

[data-theme="light"] .sidebar-button.active {
    background-color: var(--accent-color);
    color: #fff;
}

[data-theme="light"] .sidebar-button.debug-active {
    background-color: var(--accent); /* t63仲裁②：调试激活态统一语义为「活跃」，danger 红仅保留给终止类动作 */
    color: #fff;
}

/* 移动端补全 */
[data-theme="light"] #mobile-autocomplete-container {
    background-color: #ffffff;
    color: var(--text-color);
    border-top-color: #ddd;
}

[data-theme="light"] .mobile-autocomplete-item {
    color: var(--text-color);
}

/* VFS 文件项 */
[data-theme="light"] .vfs-folder, [data-theme="light"] .vfs-file {
    color: var(--text-color);
}

[data-theme="light"] .vfs-folder[data-path="/"] {
    color: var(--text-color);
}

[data-theme="light"] .vfs-file::before {
    color: var(--text-color);
}

[data-theme="light"] .vfs-folder:hover,
[data-theme="light"] .vfs-file:hover {
    background-color: #e0e0e0;
}

/* 插件项 */
[data-theme="light"] .plugin-item {
    background-color: #fafafa;
    border-color: #ddd;
}

[data-theme="light"] .plugin-description {
    color: var(--dim-color);
}

[data-theme="light"] .plugin-header {
    color: var(--text-color);
}

/* 设置项 */
[data-theme="light"] .setting-item input[type="number"] {
    background-color: #ffffff;
    color: var(--text-color);
    border-color: #ddd;
}

/* 调试控制 */
[data-theme="light"] #debug-controls {
    background-color: #f5f5f5;
    border-bottom-color: #ddd;
}

[data-theme="light"] #debug-variables-panel {
    background-color: #f5f5f5;
    border-bottom-color: #ddd;
}

[data-theme="light"] #debug-input-line {
    background: #f5f5f5 !important;
    border-top-color: #ddd !important;
}

/* 调试状态弹窗 */
[data-theme="light"] #debug-status-modal .modal-content {
    background-color: #ffffff;
}

/* 教程弹窗 */
[data-theme="light"] #tutorial-modal .modal-content {
    background-color: #ffffff;
}

/* 快速设置弹窗 - 手机横屏优化 */
[data-theme="light"] #preferences-setup-modal .modal-content {
    max-width: 95vw;
    max-height: 90vh;
    overflow-y: auto;
    -webkit-overflow-scrolling: touch;
    touch-action: pan-y;
}

[data-theme="light"] #preferences-setup-modal .modal-body {
    max-height: 70vh;
    overflow-y: auto;
    overflow-x: hidden;
    padding: 15px;
    -webkit-overflow-scrolling: touch;
    touch-action: pan-y;
    overscroll-behavior: contain;
}

[data-theme="light"] #preferences-setup-modal .modal-footer .modal-btn {
    padding: 12px 16px;
    font-size: 14px;
}

/* 手机横屏下优化按钮布局 */
[data-theme="light"] #prefs-setup-content button {
    padding: 12px !important;
    margin-bottom: 8px !important;
}

[data-theme="light"] #prefs-setup-content .device-options,
[data-theme="light"] #prefs-setup-content .theme-options {
    display: flex;
    flex-direction: column;
    gap: 8px;
}

/* 关于弹窗 */
[data-theme="light"] .about-modal,
[data-theme="light"] .preferences-modal {
    background-color: #ffffff;
    border-color: #ddd;
}

[data-theme="light"] .modal-header {
    background-color: #f0f0f0;
    border-bottom-color: #ddd;
}

[data-theme="light"] .modal-header h2 {
    color: var(--text-color);
}

[data-theme="light"] .close-btn {
    color: var(--text-color);
}

[data-theme="light"] .close-btn:hover {
    background-color: #e0e0e0;
}

[data-theme="light"] .modal-body {
    color: var(--text-color);
}

/* 首选项按钮 */
[data-theme="light"] .preferences-modal .modal-footer #reset-default-code {
    background-color: #e0e0e0;
    color: var(--text-color);
}

[data-theme="light"] .preferences-modal .modal-footer #cancel-preferences {
    background-color: #e0e0e0;
    color: var(--text-color);
}

/* 代码高亮覆盖 */
[data-theme="light"] .hl-kw {
    color: #0000ff !important;
}

[data-theme="light"] .hl-str {
    color: #a31515 !important;
}

[data-theme="light"] .hl-com {
    color: #008000 !important;
}

[data-theme="light"] .hl-dir {
    color: #af00db !important;
}

[data-theme="light"] .hl-num {
    color: #098658 !important;
}

/* 调试变量颜色 */
[data-theme="light"] .debug-var-name {
    color: #001080;
}

[data-theme="light"] .debug-var-value {
    color: #a31515;
}

[data-theme="light"] .debug-var-type {
    color: #0451a5;
}

/* [t22·P3] 浅色块重复残留已删：.out-err/.out-warn（:1543 组已有）与
   .line-view .cursor（:1503 已有）的第二次逐字定义。 */

/* 回车键浅色模式适配（t63④：原双重限定选择器已修正——本块已在 light 作用域内） */
[data-theme="light"] .key.highlight {
    background-color: var(--accent-color) !important;
    color: #fff !important;
}

/* 文件管理器强制文字颜色 */
[data-theme="light"] .vfs-file, [data-theme="light"] .vfs-folder {
    color: #333333 !important;
}

/* 滚动条（嵌套裸 ::pseudo 等价 &:: 复合，平铺保持同语义） */
[data-theme="light"]::-webkit-scrollbar {
    width: 10px;
    height: 10px;
}

[data-theme="light"]::-webkit-scrollbar-track {
    background: #f0f0f0;
}

[data-theme="light"]::-webkit-scrollbar-thumb {
    background: #c0c0c0;
    border-radius: var(--r-s); /* t63⑧ */
}

[data-theme="light"]::-webkit-scrollbar-thumb:hover {
    background: #a0a0a0;
}

/* CPH 相关 */
[data-theme="light"] .cph-test-case {
    background-color: #f9f9f9;
    border-color: #ddd;
}

[data-theme="light"] .cph-test-case-header {
    background-color: #f0f0f0;
    border-bottom-color: #ddd;
}

[data-theme="light"] .cph-test-case-name {
    color: var(--text-color);
}

[data-theme="light"] .cph-test-case-textarea {
    background-color: #ffffff;
    color: var(--text-color);
    border-color: #ddd;
}

[data-theme="light"] .cph-empty-state {
    color: var(--dim-color);
}

/* [t9#④] 原 .btn-small/.btn-small:hover 浅色背景覆盖已删——theme-v3 单一皮肤权威，
   本作用域规则从未生效（同特异性后置覆盖） */
/* B0(t53)：补上 [data-theme="light"] 块缺失的收括号——此前本行之后的所有规则
   （clangd 下载进度弹窗/教程覆盖等）都被错误嵌套进浅色块，深色模式下失效。 */

/* [t21#t19④] 删除 clangd-download-progress 全族死样式（style.css 基座+子元素+状态类、
   theme-v3 材质段）：script.js 构建弹窗仅设 id 从不设 className（:299），类选择器永不命中；
   子元素样式全部内联。 */

/* [t11#④] 删除 aidebug 浅色补丁与 btn-primary 覆盖（死样式族，生产者已停用） */

/* ============================================
   t53 批1：全局交互层（统一 :active 反馈 / focus-visible 环 / 过渡归 token）
   ============================================ */
button,
.modal-btn,
.dropdown-item,
.tool-btn,
.sidebar-button,
.plugin-btn,
.btn-small,
.debug-control-btn,
.debug-small-btn {
    transition: background-color var(--tr-fast), border-color var(--tr-fast),
        color var(--tr-fast), box-shadow var(--tr-fast);
}

button:active,
.modal-btn:active,
.dropdown-item:active,
.tool-btn:active,
.sidebar-button:active,
.plugin-btn:active,
.btn-small:active,
.debug-control-btn:active,
.debug-small-btn:active {
    transform: scale(0.97);
}

:focus-visible {
    outline: 2px solid var(--accent);
    outline-offset: 1px;
}

/* ============================================
   t53 批5：移动端适配（M1-M8）
   ============================================ */
/* t63⑤ F3 险情修复：env() 安全区仅在触屏设备生效，避免桌面端误改键盘/补全框定位 */
@media (pointer: coarse) {
    #keyboard-container {
        padding-bottom: env(safe-area-inset-bottom, 0);
    }
    #mobile-autocomplete-container {
        bottom: env(safe-area-inset-bottom, 0);
    }
}
/* M3/M5：触控目标 ≥44px（视觉尺寸不变，扩展命中区） */
.sidebar-button::after,
.close-btn::after {
    content: '';
    position: absolute;
    inset: -6px;
}
.sidebar-button, .close-btn { position: relative; }
/* M6：补全项按压反馈 */
.mobile-autocomplete-item:active {
    background-color: var(--g3);
}
/* M8：横屏矮视口压缩键盘 */
@media (orientation: landscape) and (max-height: 500px) {
    /* [t9#②] 单源化：直写 170px 改消费 --phoi-kb-height。
       [t21#F3 注记] 本块不带 safe-b 且无 coarse 守卫，正常情况下被后加载的
       mobile-v3 M1（coarse 内 calc(kb+safe-b)）覆盖——仅作 mobile-v3 未加载时兜底，
       勿在此追加安全区逻辑。 */
    #keyboard-container { height: var(--phoi-kb-height, 170px); }
}

/* ============================================
   t53 批6：装饰收敛
   ============================================ */
/* [P0-B] 收窄：仅覆盖三行预览光标颜色，勿命中 monaco caret。
   [t22#①] 删除 .cursors-layer>.cursor 的 CSS blink 动画——monaco 自身
   cursorBlinking:'blink'（script.js:638）已管理原生光标闪烁，CSS 叠加
   第二层 step-end 动画即『急速频闪』根因之一。@keyframes cursor-blink 随之无用删除。 */
.line-view .cursor { background-color: var(--accent); }
/* 批5补遗(android-auditor)：键盘已扁平化——拟物影/位移删除，按压仅背景瞬变（见 .key 主规则） */

/* ============================================
   v3 重构·骨架层：下拉项 / 行号 chrome / 面板关闭钮
   （类名与 id 全部保持原状，仅视觉语言切换）
   ============================================ */
.dropdown-item {
    padding: 8px 14px;
    margin: 2px 4px;
    border-radius: var(--r-s);
    color: var(--tx1);
    font-size: 13px;
}
.dropdown-item:hover {
    background-color: var(--g3);
}

.line-number {
    color: var(--tx3);
    border-right: none;
}

#lines-container {
    border-bottom: 1px solid var(--line);
}

.vfs-close-btn {
    width: 24px;
    height: 24px;
    border-radius: var(--r-s);
}
.vfs-close-btn:hover {
    background-color: var(--g3);
}

/* ============================================
   UI 技能精华·动效规则层（Emil/Apple 方法论采纳）
   ============================================ */
/* 下拉菜单：入场 stagger（30ms 步进，短促 150ms，可中断由 display 重置实现） */
.dropdown-menu .dropdown-item {
    animation: phoi-item-in 150ms var(--ease-out-soft) both;
}
.dropdown-menu .dropdown-item:nth-child(1) { animation-delay: 0ms; }
.dropdown-menu .dropdown-item:nth-child(2) { animation-delay: 30ms; }
.dropdown-menu .dropdown-item:nth-child(3) { animation-delay: 60ms; }
.dropdown-menu .dropdown-item:nth-child(n+4) { animation-delay: 80ms; }
@keyframes phoi-item-in {
    from { opacity: 0; transform: translateX(-4px); }
    to { opacity: 1; transform: none; }
}

/* hover 动效仅在精确指针设备生效，防触屏误触粘连 */
@media (hover: none), (pointer: coarse) {
    .menu-item:hover,
    .tool-btn:hover,
    .sidebar-button:hover,
    .dropdown-item:hover,
    .vfs-close-btn:hover {
        background-color: transparent;
    }
    /* [t11#③] 触屏微调：active 底色与桌面单源一致（g2），accent 内嵌条继承自
       :402 基座不在此重写——仅收敛触屏下的视觉强度 */
    .sidebar-button.active {
        background-color: var(--g2);
    }
}

/* prefers-reduced-motion：去位移/缩放，保留透明度与颜色过渡 */
@media (prefers-reduced-motion: reduce) {
    *,
    *::before,
    *::after {
        animation-duration: 0.01ms !important;
        transition-duration: 0.01ms !important;
    }
    /* [t22#②] 光标豁免：0.01ms×infinite 会把 blink 变成每秒数百次频闪
       （省电模式/系统"移除动画"下必现）。两类光标改常亮。 */
    .line-view .cursor,
    .cursors-layer>.cursor {
        animation: none !important;
        opacity: 1 !important;
    }
}

/* 高频动作豁免：键盘按键零动画（快捷操作/每日百次级），不设任何 transition */

/* ============================================
   t71：安卓拖动（滚动）失效修复
   根因：:207 全局 `* { touch-action: none }` 禁掉一切触摸手势，
   仅靠历史上零散的 pan-y 补丁（向导/首选项/aidebug）放行——
   VFS/插件中心/CPH 面板、终端、下拉等滚动区从未获得许可。
   方案：为全部内容滚动容器统一发放 pan-y 许可 + overscroll 收敛；
   长期应把全局 none 收敛到键盘/画布等真正需禁手势的选择器（另行任务）。
   ============================================ */
.vfs-content,
#plugin-center-content,
#debug-variables-list,
.cph-all-files-container,
.cph-test-cases-container,
.cph-test-case,
.cph-file-item,
.terminal-content-body,
.modal-body,
.dropdown-menu {
    touch-action: pan-y;
    overscroll-behavior: contain;
}
/* 输入类元素允许原生文本手势（选择/光标定位） */
input, textarea, #modal-textarea, .cph-test-case-textarea {
    touch-action: auto;
}

/* ============================================
   t73：①弹窗触屏滚动补齐（t71 白名单遗漏的容器）
   ============================================ */
#luogu-modal .modal-content,
#phoi-dialog,
#debug-status-modal .modal-content {
    touch-action: pan-y;
    overscroll-behavior: contain;
}

/* ============================================
   t73：②移动端溢出收敛（保守：只治"显示不下"，不重排）
   ============================================ */
.modal-body,
#tutorial-content,
#debug-status-message,
#phoi-dialog {
    overflow-wrap: anywhere;   /* 长 URL/无空格串强制换行 */
    word-wrap: break-word;
}
.modal-body img,
#tutorial-content img {
    max-width: 100%;           /* 图片不撑破弹窗 */
    height: auto;
}
.modal-body pre {
    max-width: 100%;
}
@media (max-width: 480px) {
    /* 窄屏：弹窗宽度让位视口，避免 85%+padding 组合溢出 */
    .modal-content,
    #phoi-dialog {
        width: min(92vw, 400px);
        max-height: 85vh;
    }
}
/* B0(t53)：文件末原有一个孤立的浅色块收括号写在了错误位置，已移至上方正确位置；
   本区域(aidebug 浅色补丁)自此不再被嵌套进 [data-theme="light"]。 */
