149 lines
4.0 KiB
CSS
Executable File
149 lines
4.0 KiB
CSS
Executable File
@import "tailwindcss";
|
|
@source "./index.html";
|
|
@source "./index.tsx";
|
|
@source "./os/**/*.{ts,tsx}";
|
|
@source "./apps/**/*.{ts,tsx}";
|
|
/* Exclude directories/files with zero Tailwind classes to speed up dev scan */
|
|
@source not "./apps/**/res/**";
|
|
@source "./apps/**/res/colors.ts";
|
|
@source not "./apps/**/data/**";
|
|
@source "./apps/**/data/defaults.json";
|
|
@source not "./apps/**/hooks/**";
|
|
@source not "./apps/**/*.declaration.ts";
|
|
|
|
@theme inline {
|
|
--color-app-primary: var(--app-primary, #000000);
|
|
--color-app-primary-dark: var(--app-primary-dark, var(--app-primary, #000000));
|
|
--color-app-on-primary: var(--app-on-primary, #ffffff);
|
|
--color-app-secondary: var(--app-secondary, #666666);
|
|
--color-app-accent: var(--app-accent, var(--app-primary, #000000));
|
|
--color-app-bg: var(--app-bg, #ffffff);
|
|
--color-app-surface: var(--app-surface, #f5f5f5);
|
|
--color-app-on-surface: var(--app-on-surface, var(--app-text, #000000));
|
|
--color-app-text: var(--app-text, #000000);
|
|
--color-app-text-muted: var(--app-text-muted, #666666);
|
|
--color-app-border: var(--app-border, #e5e7eb);
|
|
--color-app-tab-bar-bg: var(--app-tab-bar-bg, var(--app-surface, #ffffff));
|
|
}
|
|
|
|
* {
|
|
-webkit-tap-highlight-color: transparent;
|
|
-webkit-touch-callout: none;
|
|
user-select: none;
|
|
/* 全局隐藏滚动条,模拟真实手机悬浮叠加型滚动条行为 */
|
|
-ms-overflow-style: none;
|
|
scrollbar-width: none;
|
|
}
|
|
|
|
*::-webkit-scrollbar {
|
|
display: none;
|
|
}
|
|
|
|
input, textarea, [contenteditable="true"] {
|
|
user-select: text;
|
|
}
|
|
|
|
/* Explicit opt-in: allow system-style text selection in non-editable areas */
|
|
[data-os-clipboard="true"] {
|
|
user-select: text;
|
|
-webkit-user-select: text;
|
|
}
|
|
|
|
html {
|
|
font-size: 16px;
|
|
}
|
|
|
|
body {
|
|
background-color: #000;
|
|
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto,
|
|
"PingFang SC", "Hiragino Sans GB",
|
|
"Microsoft YaHei", "WenQuanYi Micro Hei",
|
|
"Noto Sans SC", "Noto Sans CJK SC",
|
|
Helvetica, Arial, sans-serif;
|
|
overflow: hidden;
|
|
margin: 0;
|
|
padding: 0;
|
|
}
|
|
|
|
/* 隐藏滚动条但保留功能 */
|
|
.no-scrollbar::-webkit-scrollbar {
|
|
display: none;
|
|
}
|
|
.no-scrollbar {
|
|
-ms-overflow-style: none;
|
|
scrollbar-width: none;
|
|
}
|
|
|
|
/* 对整个子树隐藏滚动条(用于模拟 Android 原生无滚动条体验) */
|
|
.hide-all-scrollbars *::-webkit-scrollbar {
|
|
display: none;
|
|
}
|
|
.hide-all-scrollbars * {
|
|
-ms-overflow-style: none;
|
|
scrollbar-width: none;
|
|
}
|
|
|
|
/* Allow touch panning inside declared scroll containers (important for DevTools touch emulation / Pointer Events). */
|
|
[data-scroll-container][data-scroll-direction="vertical"] {
|
|
touch-action: pan-y;
|
|
}
|
|
[data-scroll-container][data-scroll-direction="horizontal"] {
|
|
touch-action: pan-x;
|
|
}
|
|
|
|
/* 固定手机模拟器尺寸 360×800,等比缩放适配视口 */
|
|
#root {
|
|
width: 360px;
|
|
height: 800px;
|
|
margin: auto;
|
|
position: absolute;
|
|
inset: 0;
|
|
overflow: hidden;
|
|
transform: translateZ(0) scale(var(--sim-scale, 1));
|
|
transition: filter 180ms ease;
|
|
}
|
|
|
|
/* 当 skin 激活时,对 App 子树内图片资产应用滤镜(不影响 OS UI) */
|
|
[data-skin-filter] img:not([data-no-filter]),
|
|
[data-skin-filter] svg.asset-icon:not([data-no-filter]) {
|
|
filter: var(--skin-image-filter, none);
|
|
}
|
|
|
|
/* Hide elements marked data-hide-on-keyboard when keyboard is active (adjustResize) */
|
|
[data-keyboard-active] [data-hide-on-keyboard] {
|
|
display: none !important;
|
|
}
|
|
|
|
/* Slide-up animation (e.g. for modals/sheets) */
|
|
@keyframes slide-up {
|
|
from { transform: translateY(100%); }
|
|
to { transform: translateY(0); }
|
|
}
|
|
.animate-slide-up {
|
|
animation: slide-up 0.25s ease-out forwards;
|
|
}
|
|
|
|
@keyframes slide-down {
|
|
from { transform: translateY(-100%); }
|
|
to { transform: translateY(0); }
|
|
}
|
|
.animate-slide-down {
|
|
animation: slide-down 0.2s ease-out forwards;
|
|
}
|
|
|
|
@keyframes fade-in {
|
|
from { opacity: 0; }
|
|
to { opacity: 1; }
|
|
}
|
|
.animate-fade-in {
|
|
animation: fade-in 0.3s ease-out forwards;
|
|
}
|
|
|
|
@keyframes slide-in-left {
|
|
from { transform: translateX(-100%); }
|
|
to { transform: translateX(0); }
|
|
}
|
|
.animate-slide-in-left {
|
|
animation: slide-in-left 0.25s ease-out forwards;
|
|
}
|