Spaces:
Paused
Paused
| /* Unified mobile refactor layer: loaded after page styles */ | |
| :root { | |
| --m-font: "Manrope", "Noto Sans SC", "PingFang SC", "Segoe UI", sans-serif; | |
| --m-title-font: "Sora", "Manrope", "Noto Sans SC", sans-serif; | |
| --m-surface: rgba(255, 255, 255, 0.95); | |
| --m-surface-soft: rgba(255, 255, 255, 0.88); | |
| --m-border: rgba(17, 24, 39, 0.09); | |
| --m-shadow: 0 12px 30px rgba(22, 34, 54, 0.14); | |
| --m-shadow-soft: 0 8px 18px rgba(22, 34, 54, 0.1); | |
| --m-radius-xl: 22px; | |
| --m-radius-lg: 16px; | |
| --m-radius-md: 12px; | |
| --nav-height: 96px; | |
| --nav-offset: 104px; | |
| } | |
| html[data-theme="dark"] { | |
| --m-surface: rgba(14, 23, 39, 0.94); | |
| --m-surface-soft: rgba(20, 31, 52, 0.88); | |
| --m-border: rgba(146, 166, 207, 0.24); | |
| --m-shadow: 0 14px 30px rgba(0, 0, 0, 0.45); | |
| --m-shadow-soft: 0 8px 18px rgba(0, 0, 0, 0.32); | |
| } | |
| @media (max-width: 900px) { | |
| body { | |
| font-family: var(--m-font); | |
| background-attachment: scroll ; | |
| padding-bottom: calc(env(safe-area-inset-bottom) + 14px); | |
| } | |
| body::before { | |
| content: ""; | |
| position: fixed; | |
| inset: -16vh -12vw auto; | |
| height: 50vh; | |
| pointer-events: none; | |
| z-index: -1; | |
| background: | |
| radial-gradient(45% 55% at 22% 30%, rgba(26, 187, 156, 0.18), transparent 70%), | |
| radial-gradient(40% 50% at 78% 25%, rgba(255, 146, 87, 0.2), transparent 72%); | |
| } | |
| body.has-bg-image::before { | |
| display: none; | |
| } | |
| html[data-theme="dark"] body::before { | |
| background: | |
| radial-gradient(45% 55% at 22% 30%, rgba(75, 143, 255, 0.22), transparent 70%), | |
| radial-gradient(40% 50% at 78% 25%, rgba(100, 211, 189, 0.18), transparent 72%); | |
| } | |
| .header, | |
| .toolbar, | |
| .card, | |
| .preview-card, | |
| .login-card, | |
| .header-content, | |
| .batch-toolbar, | |
| .status-panel { | |
| border-radius: var(--m-radius-lg) ; | |
| border: 1px solid var(--m-border) ; | |
| box-shadow: var(--m-shadow-soft) ; | |
| } | |
| .header, | |
| .toolbar, | |
| .card, | |
| .preview-card, | |
| .login-card, | |
| .header-content { | |
| backdrop-filter: none ; | |
| -webkit-backdrop-filter: none ; | |
| background: var(--m-surface) ; | |
| } | |
| .header-title, | |
| .title { | |
| font-family: var(--m-title-font); | |
| letter-spacing: 0.01em; | |
| } | |
| .nav-links, | |
| .header-actions, | |
| .header-content .actions { | |
| overflow: visible; | |
| } | |
| .nav-links a, | |
| .nav-btn, | |
| .btn, | |
| .method-btn, | |
| .storage-btn, | |
| .batch-btn, | |
| .login-btn, | |
| .action-btn { | |
| min-height: 40px; | |
| border-radius: var(--m-radius-md) ; | |
| font-weight: 600 ; | |
| } | |
| .upload-zone:hover, | |
| .image-card:hover, | |
| .video-card:hover, | |
| .audio-card:hover, | |
| .file-card:hover, | |
| .nav-links a:hover, | |
| .nav-btn:hover, | |
| .btn:hover { | |
| transform: none ; | |
| } | |
| } | |
| @media (max-width: 768px) { | |
| #app, | |
| .container { | |
| padding: 12px ; | |
| } | |
| .header { | |
| position: relative ; | |
| top: auto ; | |
| padding: 14px ; | |
| margin-bottom: 14px ; | |
| gap: 10px ; | |
| } | |
| .header-title { | |
| width: 100%; | |
| justify-content: flex-start; | |
| padding-right: 92px; | |
| font-size: 1.08rem ; | |
| } | |
| .nav-links { | |
| width: 100%; | |
| display: grid ; | |
| grid-template-columns: repeat(2, minmax(0, 1fr)); | |
| justify-content: stretch ; | |
| align-items: stretch; | |
| gap: 8px ; | |
| position: relative; | |
| padding-bottom: 0; | |
| } | |
| .nav-links a { | |
| min-width: 0; | |
| width: 100%; | |
| justify-content: center; | |
| } | |
| .nav-links .theme-toggle-btn { | |
| position: absolute; | |
| top: -42px; | |
| right: 0; | |
| min-height: 34px; | |
| padding: 6px 10px; | |
| margin: 0; | |
| border-radius: 999px ; | |
| white-space: nowrap; | |
| z-index: 3; | |
| } | |
| .header .header-theme-toggle { | |
| position: absolute ; | |
| top: 10px ; | |
| right: 10px ; | |
| min-height: 34px; | |
| padding: 6px 10px; | |
| margin: 0 ; | |
| border-radius: 999px ; | |
| white-space: nowrap; | |
| z-index: 4; | |
| } | |
| .header-actions > * { | |
| flex: 1 1 auto; | |
| min-width: 0; | |
| } | |
| .main-container { | |
| gap: 14px ; | |
| } | |
| .card { | |
| padding: 16px ; | |
| } | |
| .card-header { | |
| margin-bottom: 14px ; | |
| } | |
| .upload-zone { | |
| padding: 24px 16px ; | |
| border-width: 2px ; | |
| } | |
| .upload-icon { | |
| font-size: 2.65em ; | |
| margin-bottom: 12px ; | |
| } | |
| .upload-text { | |
| font-size: 1em ; | |
| } | |
| .upload-hint { | |
| font-size: 0.82em ; | |
| line-height: 1.45 ; | |
| } | |
| .storage-switcher { | |
| align-items: stretch ; | |
| gap: 10px ; | |
| padding: 12px ; | |
| border-radius: var(--m-radius-md) ; | |
| } | |
| .storage-options { | |
| width: 100%; | |
| display: grid ; | |
| grid-template-columns: repeat(2, minmax(0, 1fr)); | |
| gap: 8px ; | |
| } | |
| .storage-btn { | |
| justify-content: center ; | |
| padding: 10px 8px ; | |
| font-size: 0.82rem ; | |
| } | |
| .upload-methods { | |
| display: grid ; | |
| grid-template-columns: repeat(2, minmax(0, 1fr)); | |
| gap: 8px ; | |
| } | |
| .method-btn { | |
| justify-content: center ; | |
| padding: 10px 8px ; | |
| font-size: 0.84rem ; | |
| gap: 6px ; | |
| } | |
| .upload-item, | |
| .result-item { | |
| align-items: flex-start ; | |
| padding: 10px ; | |
| } | |
| .result-item-actions { | |
| display: grid ; | |
| grid-template-columns: repeat(3, minmax(0, 1fr)); | |
| width: 100%; | |
| gap: 6px ; | |
| } | |
| .result-item-actions .action-btn { | |
| width: 100% ; | |
| justify-content: center; | |
| } | |
| .stats-bar { | |
| grid-template-columns: 1fr ; | |
| gap: 8px ; | |
| padding: 10px ; | |
| } | |
| .history-list, | |
| .result-list { | |
| max-height: 320px ; | |
| } | |
| .toolbar { | |
| padding: 12px ; | |
| gap: 10px ; | |
| } | |
| .toolbar-left, | |
| .toolbar-right { | |
| width: 100%; | |
| justify-content: flex-start ; | |
| } | |
| .image-grid { | |
| grid-template-columns: repeat(2, minmax(0, 1fr)) ; | |
| gap: 10px ; | |
| } | |
| .image-card { | |
| border-radius: 14px ; | |
| } | |
| .image-card-overlay { | |
| opacity: 1 ; | |
| } | |
| .image-card-name { | |
| font-size: 0.75rem ; | |
| } | |
| .card-btn { | |
| width: 32px ; | |
| height: 32px ; | |
| } | |
| .batch-bar, | |
| .batch-toolbar { | |
| left: 10px ; | |
| right: 10px ; | |
| width: auto ; | |
| max-width: none ; | |
| transform: none ; | |
| border-radius: var(--m-radius-lg) ; | |
| } | |
| .batch-toolbar { | |
| cursor: default ; | |
| } | |
| .header-actions { | |
| width: 100%; | |
| display: grid ; | |
| grid-template-columns: repeat(3, minmax(0, 1fr)); | |
| gap: 8px ; | |
| } | |
| .btn { | |
| justify-content: center ; | |
| padding: 10px 8px ; | |
| font-size: 0.82rem ; | |
| } | |
| .preview-card { | |
| padding: 16px ; | |
| } | |
| .file-info { | |
| flex-direction: row ; | |
| align-items: flex-start ; | |
| text-align: left ; | |
| gap: 12px ; | |
| } | |
| .file-details h2 { | |
| font-size: 0.98rem ; | |
| line-height: 1.35 ; | |
| } | |
| .file-meta { | |
| justify-content: flex-start ; | |
| font-size: 0.75rem ; | |
| } | |
| .preview-area { | |
| min-height: 240px ; | |
| } | |
| .preview-text { | |
| font-size: 12px ; | |
| line-height: 1.5 ; | |
| height: 42vh ; | |
| padding: 12px ; | |
| } | |
| .preview-pdf, | |
| .preview-office, | |
| .iframe-preview-container { | |
| height: 52vh ; | |
| } | |
| .settings-panel { | |
| margin-top: 14px ; | |
| padding: 12px ; | |
| } | |
| .setting-item { | |
| display: flex ; | |
| align-items: center ; | |
| justify-content: space-between ; | |
| gap: 10px ; | |
| } | |
| .setting-label { | |
| flex: 1; | |
| min-width: 0; | |
| font-size: 0.84rem ; | |
| } | |
| .login-card { | |
| padding: 28px 22px ; | |
| border-radius: var(--m-radius-xl) ; | |
| } | |
| .form-input { | |
| min-height: 44px; | |
| padding: 10px 12px 10px 40px ; | |
| border-radius: 11px ; | |
| } | |
| .form-input.has-toggle { | |
| padding-right: 50px ; | |
| } | |
| .input-wrapper i { | |
| left: 12px ; | |
| } | |
| .password-toggle { | |
| right: 16px ; | |
| } | |
| .login-btn { | |
| min-height: 46px; | |
| } | |
| .header-content { | |
| top: 8px ; | |
| left: 8px ; | |
| right: 8px ; | |
| height: auto ; | |
| min-height: 54px; | |
| padding: 10px 12px ; | |
| gap: 8px ; | |
| flex-wrap: wrap ; | |
| } | |
| .title { | |
| font-size: 1rem ; | |
| } | |
| .stats { | |
| margin-left: auto ; | |
| margin-right: 0 ; | |
| min-height: 36px; | |
| padding: 4px 10px ; | |
| } | |
| .stats-text { | |
| display: none ; | |
| } | |
| .header-content .search-card { | |
| order: 3; | |
| width: 100%; | |
| margin: 0 ; | |
| } | |
| .header-content .search-card .el-input__inner { | |
| width: 100% ; | |
| height: 38px ; | |
| font-size: 0.92rem ; | |
| } | |
| .header-content .actions { | |
| order: 4; | |
| width: 100%; | |
| display: flex; | |
| align-items: flex-start; | |
| justify-content: flex-start ; | |
| flex-wrap: wrap ; | |
| gap: 6px ; | |
| row-gap: 8px ; | |
| margin-top: 2px ; | |
| padding-bottom: 0; | |
| } | |
| .header-content .actions > * { | |
| flex: 0 0 auto; | |
| } | |
| .header-content .actions > .status-panel { | |
| order: 120 ; | |
| flex: 0 0 100% ; | |
| width: 100% ; | |
| display: grid; | |
| grid-template-columns: repeat(3, minmax(0, 1fr)); | |
| gap: 6px 4px; | |
| margin: 4px 0 0 ; | |
| padding: 8px 10px ; | |
| border-radius: 12px ; | |
| background: rgba(138, 75, 255, 0.08); | |
| } | |
| .header-content .actions > .status-panel .status-item { | |
| justify-content: center; | |
| gap: 5px; | |
| min-width: 0; | |
| } | |
| .header-content .actions > .status-panel .status-item i { | |
| width: auto; | |
| height: auto; | |
| background: transparent ; | |
| border-radius: 0; | |
| font-size: 8px ; | |
| } | |
| .header-content .actions > .status-panel .status-item span { | |
| display: inline ; | |
| font-size: 0.68rem; | |
| letter-spacing: 0.02em; | |
| } | |
| .header-content .actions > i, | |
| .header-content .actions > .el-dropdown > .el-dropdown-link, | |
| .header-content .actions > .theme-admin-toggle { | |
| width: 36px; | |
| height: 36px; | |
| margin: 0 ; | |
| border-radius: 10px; | |
| display: inline-flex; | |
| align-items: center; | |
| justify-content: center; | |
| background: rgba(138, 75, 255, 0.08); | |
| } | |
| .header-content .actions > .theme-admin-toggle { | |
| border-radius: 10px ; | |
| } | |
| html[data-theme="dark"] .header-content .actions > i, | |
| html[data-theme="dark"] .header-content .actions > .el-dropdown > .el-dropdown-link, | |
| html[data-theme="dark"] .header-content .actions > .theme-admin-toggle { | |
| background: rgba(154, 169, 255, 0.18); | |
| } | |
| html[data-theme="dark"] .header-content .actions > .status-panel { | |
| background: rgba(154, 169, 255, 0.16); | |
| } | |
| .el-main.main-container { | |
| margin-top: 196px ; | |
| padding: 10px ; | |
| } | |
| .content { | |
| grid-template-columns: repeat(2, minmax(0, 1fr)) ; | |
| gap: 10px ; | |
| padding: 0 ; | |
| } | |
| .el-card__body { | |
| padding: 0 ; | |
| } | |
| .image-card { | |
| aspect-ratio: 1 / 1 ; | |
| } | |
| .video-content, | |
| .audio-content, | |
| .file-content { | |
| min-height: 180px ; | |
| padding: 10px ; | |
| } | |
| .audio-avatar, | |
| .file-avatar { | |
| width: 36px; | |
| height: 36px; | |
| margin-right: 8px ; | |
| } | |
| .video-controls, | |
| .audio-controls, | |
| .file-controls { | |
| gap: 6px ; | |
| margin-top: 8px ; | |
| } | |
| .control-btn { | |
| width: 32px ; | |
| height: 32px ; | |
| } | |
| .preview-modal { | |
| padding: 12px ; | |
| } | |
| .preview-modal img, | |
| .preview-modal .iframe-container { | |
| width: 100% ; | |
| max-width: 100% ; | |
| height: 60vh ; | |
| } | |
| .preview-close { | |
| top: 8px ; | |
| right: 8px ; | |
| width: 40px ; | |
| height: 40px ; | |
| font-size: 1.2rem ; | |
| } | |
| .preview-toolbar { | |
| width: 100%; | |
| flex-direction: column; | |
| align-items: stretch; | |
| gap: 8px ; | |
| } | |
| .preview-filename { | |
| max-width: 100% ; | |
| } | |
| body > .container:not(#app) { | |
| width: 100%; | |
| max-width: 560px; | |
| padding: 28px 20px ; | |
| border-radius: 20px ; | |
| } | |
| body > .container:not(#app) .icon { | |
| width: 64px; | |
| height: 64px; | |
| margin-bottom: 16px; | |
| font-size: 2rem ; | |
| } | |
| body > .container:not(#app) .title { | |
| font-size: 1.26rem ; | |
| } | |
| body > .container:not(#app) .message { | |
| font-size: 0.92rem ; | |
| line-height: 1.65 ; | |
| margin-bottom: 16px ; | |
| } | |
| body > .container:not(#app) .back-btn { | |
| width: 100%; | |
| justify-content: center; | |
| margin-bottom: 16px ; | |
| } | |
| } | |
| @media (max-width: 560px) { | |
| .storage-options, | |
| .upload-methods, | |
| .content, | |
| .image-grid { | |
| grid-template-columns: 1fr ; | |
| } | |
| .result-item { | |
| flex-wrap: wrap ; | |
| } | |
| .result-item-preview { | |
| width: 52px ; | |
| height: 52px ; | |
| } | |
| .header-content .actions > .status-panel { | |
| grid-template-columns: repeat(2, minmax(0, 1fr)); | |
| } | |
| .el-main.main-container { | |
| margin-top: 214px ; | |
| } | |
| .header-actions { | |
| grid-template-columns: repeat(2, minmax(0, 1fr)) ; | |
| } | |
| .header-actions .btn:last-child { | |
| grid-column: span 2; | |
| } | |
| } | |
| @media (max-width: 480px) { | |
| .header, | |
| .toolbar, | |
| .card, | |
| .preview-card, | |
| .login-card, | |
| .header-content { | |
| border-radius: 14px ; | |
| } | |
| .header-title, | |
| .title, | |
| .card-title { | |
| font-size: 1rem ; | |
| } | |
| .nav-links a, | |
| .nav-btn, | |
| .btn, | |
| .method-btn, | |
| .storage-btn { | |
| font-size: 0.8rem ; | |
| padding: 8px 10px ; | |
| gap: 6px ; | |
| } | |
| .nav-links .theme-toggle-btn [data-theme-label], | |
| .gallery-theme-toggle [data-theme-label] { | |
| display: inline ; | |
| } | |
| .batch-bar, | |
| .batch-toolbar { | |
| bottom: 10px ; | |
| } | |
| .header-content .actions > i, | |
| .header-content .actions > .el-dropdown > .el-dropdown-link, | |
| .header-content .actions > .theme-admin-toggle { | |
| width: 34px; | |
| height: 34px; | |
| } | |
| .el-main.main-container { | |
| margin-top: 208px ; | |
| } | |
| } | |
| @media (max-width: 360px) { | |
| .header-title { | |
| padding-right: 92px; | |
| } | |
| .nav-links { | |
| grid-template-columns: 1fr ; | |
| } | |
| .header-content .actions > .status-panel { | |
| grid-template-columns: repeat(2, minmax(0, 1fr)); | |
| } | |
| .header-actions { | |
| grid-template-columns: 1fr ; | |
| } | |
| .header-actions .btn:last-child { | |
| grid-column: auto; | |
| } | |
| } | |
| @media (max-width: 900px) { | |
| .header .header-theme-toggle { | |
| position: absolute ; | |
| top: 10px ; | |
| right: 10px ; | |
| z-index: 4; | |
| } | |
| .header-content .actions { | |
| align-items: flex-start ; | |
| flex-wrap: wrap ; | |
| } | |
| .header-content .actions > .status-panel { | |
| order: 120 ; | |
| flex: 0 0 100% ; | |
| width: 100% ; | |
| margin-top: 6px ; | |
| margin-left: 0 ; | |
| margin-right: 0 ; | |
| } | |
| /* 管理后台移动端:顶部胶囊随页面滚动,不吸顶 */ | |
| .el-header { | |
| height: auto ; | |
| min-height: 0 ; | |
| padding: 0 ; | |
| overflow: visible ; | |
| } | |
| .header-content { | |
| position: static ; | |
| top: auto ; | |
| left: auto ; | |
| right: auto ; | |
| margin: 0 ; | |
| z-index: auto ; | |
| } | |
| .el-main.main-container { | |
| margin-top: 12px ; | |
| } | |
| .disk-layout { | |
| margin-top: 12px ; | |
| row-gap: 14px ; | |
| } | |
| .folder-current, | |
| .folder-breadcrumb { | |
| position: static ; | |
| z-index: 1; | |
| } | |
| .folder-breadcrumb { | |
| margin-top: 12px ; | |
| margin-bottom: 12px ; | |
| } | |
| /* 移动端批量工具栏:固定底部单行,防止滚动时异常放大 */ | |
| .batch-toolbar { | |
| left: 8px ; | |
| right: 8px ; | |
| bottom: calc(env(safe-area-inset-bottom) + 10px) ; | |
| width: auto ; | |
| max-width: none ; | |
| height: 52px ; | |
| min-height: 52px ; | |
| max-height: 52px ; | |
| padding: 8px 10px ; | |
| border-radius: 14px ; | |
| box-sizing: border-box ; | |
| display: flex ; | |
| align-items: center ; | |
| white-space: nowrap ; | |
| flex-wrap: nowrap ; | |
| overflow-x: auto ; | |
| overflow-y: hidden ; | |
| -webkit-overflow-scrolling: touch; | |
| } | |
| .batch-toolbar .batch-actions { | |
| display: inline-flex ; | |
| flex-wrap: nowrap ; | |
| } | |
| .batch-toolbar .batch-btn, | |
| .batch-toolbar .batch-count { | |
| flex: 0 0 auto; | |
| } | |
| .batch-toolbar .batch-shortcuts { | |
| display: none ; | |
| } | |
| } | |
| @media (pointer: coarse) { | |
| .card:hover, | |
| .image-card:hover, | |
| .video-card:hover, | |
| .audio-card:hover, | |
| .file-card:hover { | |
| box-shadow: var(--m-shadow-soft) ; | |
| } | |
| } | |
| @media (prefers-reduced-motion: reduce) { | |
| *, | |
| *::before, | |
| *::after { | |
| animation-duration: 0.01ms ; | |
| animation-iteration-count: 1 ; | |
| transition-duration: 0.01ms ; | |
| } | |
| } | |