/*
 * 模块价值：以常规纵向文件菜单和单一导出表单减少操作负担，桌面与窄屏均可读、可关闭。
 * 职责：拥有菜单行、分隔、原生导出弹窗及未写确认布局；输入为语义类和定位尺寸，输出紧凑操作层次。
 * 依赖：现有语义 tokens、原生 menu/dialog 控件与 file-menu 定位；无文件、认证或保存副作用。
 * 限制：菜单最大高度由触发器定位补充；长项目和目录名自然换行，保留页头外置语言/主题/账号和旧确认类。
 */
.file-trigger { flex: none; min-height: 36px; padding: 6px 10px; }
.file-panel { position: fixed; z-index: 46; box-sizing: border-box; width: min(248px,calc(100vw - 24px)); max-height: calc(100dvh - 80px); overflow-y: auto; overscroll-behavior: contain; scroll-padding: 6px; padding: 6px; border: 1px solid var(--control-line); border-radius: 8px; background: var(--surface); color: var(--ink); }
.file-panel[hidden] { display: none; }
/* 文件操作使用同一行式控件；菜单行不借用主操作的绿色填充，快捷键只作弱提示。 */
.file-panel .file-menu-item { display: flex; align-items: center; justify-content: space-between; gap: 16px; width: 100%; min-height: 40px; padding: 8px 12px; border: 0; border-radius: 4px; background: transparent; color: var(--ink); font: inherit; font-size: .86rem; line-height: 1.5; text-align: left; }
.file-command-label { min-width: 0; overflow-wrap: anywhere; }
.file-shortcut { flex: none; color: var(--muted); font: inherit; font-size: .75rem; white-space: nowrap; }
.file-panel .file-menu-item:hover,.file-panel .file-menu-item:focus-visible { background: var(--soft); color: var(--ink); }
.file-panel .file-menu-item:active { background: var(--soft); color: var(--accent); }
.file-panel .file-menu-item:disabled { cursor: not-allowed; opacity: .5; }
.file-menu-separator { height: 0; border: 0; border-top: 1px solid var(--line); margin: 4px 6px; }
.file-menu-more { margin-top: 4px; }
.file-menu-more > summary { min-height: 40px; padding: 8px 12px; color: var(--muted); border-radius: 4px; font-size: .83rem; line-height: 1.5; list-style-position: inside; cursor: pointer; }
.file-menu-more > summary:hover,.file-menu-more > summary:focus-visible { color: var(--ink); background: var(--soft); }
.file-menu-note { margin: 8px 12px; color: var(--muted); line-height: 1.6; font-size: .75rem; overflow-wrap: anywhere; }

/* 导出是一个原生表单：格式和位置各占一行，不按格式添加卡片或重复按钮。 */
.file-export-dialog { box-sizing: border-box; width: min(440px,calc(100vw - 32px)); max-height: calc(100dvh - 32px); margin: auto; padding: 24px; overflow-y: auto; overscroll-behavior: contain; border: 1px solid var(--control-line); border-radius: 12px; background: var(--surface); color: var(--ink); }
.file-export-dialog::backdrop { background: #10241966; }
.file-export-heading { display: flex; align-items: center; justify-content: space-between; gap: 12px; }
.file-export-heading h2 { min-width: 0; margin: 0; font-size: 1.08rem; font-weight: 650; line-height: 1.5; overflow-wrap: anywhere; }
.file-export-heading > button { flex: none; min-width: 36px; min-height: 36px; padding: 6px; }
.file-export-context { margin: 4px 0 24px; color: var(--muted); font-size: .83rem; line-height: 1.6; overflow-wrap: anywhere; }
.file-export-field,.file-export-destination { display: grid; gap: 8px; }
.file-export-field > label,.file-export-destination > label { font-size: .85rem; font-weight: 550; line-height: 1.5; }
.file-export-field select,.file-export-location select { width: 100%; min-width: 0; min-height: 44px; font-size: .86rem; }
.file-export-description { margin: 0; color: var(--muted); font-size: .78rem; line-height: 1.6; overflow-wrap: anywhere; }
.file-export-destination { margin-top: 20px; }
.file-export-location { display: flex; align-items: center; gap: 8px; min-width: 0; }
.file-export-location select { flex: 1; }
.file-export-location > button { flex: none; min-height: 44px; font-size: .83rem; }
#file-export-folder-name { margin: 0; min-width: 0; color: var(--muted); font-size: .78rem; line-height: 1.6; overflow-wrap: anywhere; }
.file-export-more { margin-top: 20px; padding-top: 12px; border-top: 1px solid var(--line); }
.file-export-more > summary { min-height: 36px; padding-block: 6px; color: var(--muted); font-size: .8rem; line-height: 1.5; cursor: pointer; }
.file-export-more > summary:hover { color: var(--ink); }
.file-export-more button { width: 100%; min-height: 36px; margin-top: 4px; justify-content: flex-start; text-align: left; font-size: .8rem; }
.file-operation-message { margin: 16px 0 0; color: var(--muted); line-height: 1.65; font-size: .8rem; overflow-wrap: anywhere; }
.file-operation-message[hidden] { display: none; }
.file-export-actions { display: flex; align-items: center; justify-content: flex-end; flex-wrap: wrap; gap: 8px; margin-top: 24px; padding-top: 16px; border-top: 1px solid var(--line); }
.file-export-actions > button { min-width: 84px; min-height: 44px; }
@media (max-width:720px), (pointer:coarse) {
 .file-panel .file-menu-item,.file-menu-more > summary { min-height: 44px; }
 .file-export-heading > button { min-width: 44px; min-height: 44px; }
 .file-export-more > summary,.file-export-more button { min-height: 44px; }
}
@media (max-width:720px) {
 .file-export-dialog { padding: 20px; }
}
/* 未写入确认属于页面短时顶层；原生dialog约束焦点，按钮可换行且保留44px目标，不改文件事实。 */
.file-switch-confirm { width: min(440px,calc(100vw - 32px)); max-height: calc(100dvh - 32px); margin: auto; padding: 20px; overflow: auto; border: 1px solid var(--control-line); border-radius: 12px; background: var(--surface); color: var(--ink); }
.file-switch-confirm::backdrop { background: #10241966; }
.file-switch-confirm h2 { margin: 0 0 8px; font-size: 1.05rem; line-height: 1.5; overflow-wrap: anywhere; }
.file-switch-confirm p { margin: 0; color: var(--muted); font-size: .87rem; line-height: 1.7; overflow-wrap: anywhere; }
.file-switch-actions { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 16px; }
.file-switch-actions .button { flex: 1 1 10rem; min-height: 44px; }
.file-switch-continue { color: var(--warning); border-color: var(--control-line); }
@media (max-width:1000px) and (min-width:721px) {
 .app-header:has(.file-trigger) { grid-template-columns: auto 1fr; }
 .app-header:has(.file-trigger) .header-options { grid-column: 2; grid-row: 1; }
 .app-header:has(.file-trigger) .core-nav { grid-column: 1 / -1; grid-row: 2; }
}
@media (max-width:720px) {
 .file-panel { padding: 6px; }
 .file-panel button,.file-trigger { min-height: 44px; }
 .app-header:has(.file-trigger) { grid-template-columns: minmax(0,1fr) auto auto; }
 .app-header:has(.file-trigger) .file-trigger { grid-column: 2; grid-row: 1; }
 .app-header:has(.file-trigger) .account-trigger { grid-column: 3; grid-row: 1; }
 .app-header:has(.file-trigger) #product-save { grid-column: 1; grid-row: 2; }
 .app-header:has(.file-trigger) .ui-preferences { grid-column: 1 / -1; grid-row: 3; justify-self: end; }
 .app-header:has(.file-trigger) .core-nav { grid-row: 4; }
 .app-header:has(#product-save[hidden]) .ui-preferences { grid-row: 2; }
 .app-header:has(#product-save[hidden]) .core-nav { grid-row: 3; }
 .canvas-fullscreen .app-header:has(.file-trigger) { padding: 6px 16px 0; }
 .canvas-fullscreen .app-header:has(.file-trigger) .ui-preferences { grid-column: 1; grid-row: 2; }
 .canvas-fullscreen .app-header:has(.file-trigger) .file-trigger { grid-column: 2; grid-row: 1; }
}
