/* AUTO-GENERATED by script/gen_design.py — 请勿直接编辑。源: resource/design/tokens.json + shared.css */
:root {
    --glass-elevation-container: inset 0 1px 0 var(--glass-highlight-edge), inset 0 -1px 0 rgba(0, 0, 0, 0.06), inset 1px 0 0 rgba(255, 255, 255, 0.1), inset -1px 0 0 rgba(255, 255, 255, 0.1), 0 2px 6px var(--glass-shadow), 0 8px 24px rgba(0, 0, 0, 0.06), 0 20px 48px rgba(0, 0, 0, 0.04);
    --glass-elevation-card: inset 0 1px 0 var(--glass-highlight-edge), inset 0 -1px 0 rgba(0, 0, 0, 0.06), 0 4px 12px var(--glass-shadow), 0 16px 40px rgba(0, 0, 0, 0.1);
    --btn-text: #FFFFFF;
    --nav-text-color: #FFFFFF;
    --spring-bounce: cubic-bezier(0.34, 1.56, 0.64, 1);
    --spring-smooth: cubic-bezier(0.25, 0.1, 0.25, 1);
    --spring-interactive: cubic-bezier(0.2, 0.8, 0.2, 1.2);
    --spring-bouncy: cubic-bezier(0.34, 1.8, 0.64, 1);
    --radius-window: 28px;
    --radius-card: 20px;
    --radius-group: 12px;
    --radius-control: 14px;
    --radius-pill: 999px;
    --text-primary: #000000;
    --text-secondary: rgba(60, 60, 67, 0.6);
    --text-tertiary: rgba(60, 60, 67, 0.3);
    --text-placeholder: rgba(60, 60, 67, 0.2);
    --list-bg: rgba(0, 0, 0, 0.03);
    --list-border: rgba(0, 0, 0, 0.08);
    --list-press-bg: rgba(0, 0, 0, 0.15);
    --glass-bg: rgba(255, 255, 255, 0.72);
    --glass-bg-elevated: rgba(255, 255, 255, 0.82);
    --glass-border: rgba(255, 255, 255, 0.6);
    --glass-highlight: rgba(255, 255, 255, 0.9);
    --glass-highlight-edge: rgba(255, 255, 255, 0.4);
    --glass-shadow: rgba(0, 0, 0, 0.06);
    --glass-glow: rgba(255, 255, 255, 0.3);
    --skeleton-bg: rgba(0, 0, 0, 0.06);
    --skeleton-shine: rgba(255, 255, 255, 0.5);
    --photo-border: rgba(0, 0, 0, 0.08);
    --no-photo-bg: rgba(0, 0, 0, 0.02);
    --card-bg: rgba(255, 255, 255, 0.72);
    --card-border: rgba(255, 255, 255, 0.6);
    --tint-blue-weak: rgba(0, 122, 255, 0.06);
    --tint-blue: rgba(0, 122, 255, 0.1);
    --tint-blue-border: rgba(0, 122, 255, 0.12);
    --tint-red: rgba(255, 59, 48, 0.1);
    --tint-red-weak: rgba(255, 59, 48, 0.08);
    --tint-orange: rgba(255, 149, 0, 0.12);
    --tint-orange-border: rgba(255, 149, 0, 0.25);
    --tint-green: rgba(52, 199, 89, 0.15);
    --sheet-bg: rgba(242, 242, 247, 0.94);
    --sheet-border: rgba(60, 60, 67, 0.18);
    --picker-highlight: rgba(118, 118, 128, 0.12);
    --ios-secondary-fill: rgba(120, 120, 128, 0.12);
    --ios-blue: #007AFF;
    --ios-red: #FF3B30;
    --ios-green: #34C759;
    --ios-orange: #FF9500;
    --ios-purple: #AF52DE;
    --ios-pink: #FF2D55;
    --ios-yellow: #FFCC00;
}

@media (prefers-color-scheme: dark) {
:root {
    --text-primary: #FFFFFF;
    --text-secondary: rgba(235, 235, 245, 0.6);
    --text-tertiary: rgba(235, 235, 245, 0.3);
    --text-placeholder: rgba(235, 235, 245, 0.2);
    --list-bg: rgba(255, 255, 255, 0.05);
    --list-border: rgba(255, 255, 255, 0.08);
    --list-press-bg: rgba(255, 255, 255, 0.08);
    --glass-bg: rgba(40, 40, 42, 0.72);
    --glass-bg-elevated: rgba(50, 50, 52, 0.82);
    --glass-border: rgba(255, 255, 255, 0.1);
    --glass-highlight: rgba(255, 255, 255, 0.08);
    --glass-highlight-edge: rgba(255, 255, 255, 0.06);
    --glass-shadow: rgba(0, 0, 0, 0.2);
    --glass-glow: rgba(255, 255, 255, 0.08);
    --photo-border: rgba(255, 255, 255, 0.08);
    --no-photo-bg: rgba(255, 255, 255, 0.04);
    --card-bg: rgba(40, 40, 42, 0.72);
    --card-border: rgba(255, 255, 255, 0.1);
    --tint-blue-weak: rgba(10, 132, 255, 0.12);
    --tint-blue: rgba(10, 132, 255, 0.16);
    --tint-blue-border: rgba(10, 132, 255, 0.24);
    --tint-red: rgba(255, 69, 58, 0.16);
    --tint-red-weak: rgba(255, 69, 58, 0.12);
    --tint-orange: rgba(255, 159, 10, 0.18);
    --tint-orange-border: rgba(255, 159, 10, 0.3);
    --tint-green: rgba(48, 209, 88, 0.2);
    --sheet-bg: rgba(28, 28, 30, 0.94);
    --sheet-border: rgba(84, 84, 88, 0.36);
    --picker-highlight: rgba(118, 118, 128, 0.24);
    --ios-secondary-fill: rgba(120, 120, 128, 0.24);
    --skeleton-bg: rgba(255, 255, 255, 0.08);
    --skeleton-shine: rgba(255, 255, 255, 0.18);
    --ios-blue: #0A84FF;
    --ios-red: #FF453A;
    --ios-green: #30D158;
    --ios-orange: #FF9F0A;
    --ios-purple: #BF5AF2;
    --ios-pink: #FF375F;
    --ios-yellow: #FFD60A;
}
}

/* ================= 共享动画关键帧 + 全局无障碍（web / 小程序一致） =================
   唯一事实源：resource/design/shared.css
   由 script/gen_design.py 复制进两端产物，请勿直接编辑生成文件。 */

@keyframes fade-in {
    from { opacity: 0; transform: translateY(6px); }
    to { opacity: 1; transform: translateY(0); }
}

/* iOS 26 Liquid Glass materialization: 从微缩放 + 透镜折射效果 */
@keyframes scale-in {
    from {
        opacity: 0;
        transform: scale(0.92) translateY(8px);
    }
    to {
        opacity: 1;
        transform: scale(1) translateY(0);
    }
}

/* iOS 26 Liquid Glass slide-up: 从下方浮入 */
@keyframes slide-up {
    from {
        opacity: 0;
        transform: translateY(16px) scale(0.98);
    }
    to {
        opacity: 1;
        transform: translateY(0) scale(1);
    }
}

@keyframes spin {
    100% { transform: rotate(360deg); }
}

@keyframes ios-shake {
    0%, 100% { transform: translate3d(0, 0, 0) scale(1); }
    20% { transform: translate3d(-6px, 0, 0) scale(1); }
    40% { transform: translate3d(6px, 0, 0) scale(1); }
    60% { transform: translate3d(-4px, 0, 0) scale(1); }
    80% { transform: translate3d(4px, 0, 0) scale(1); }
}

@keyframes pulse-urgent {
    0%, 100% { opacity: 1; }
    50% { opacity: 0.6; }
}

/* 骨架屏 shimmer */
@keyframes skeleton-shimmer {
    0% { background-position: -200% 0; }
    100% { background-position: 200% 0; }
}

/* 倒计时秒级跳动（numericText 精神：数字变化轻弹，不做硬切） */
@keyframes countdown-tick {
    0% { opacity: 0.3; transform: translateY(2px); }
    100% { opacity: 1; transform: translateY(0); }
}


/* iOS 无障碍：减少动画模式（HIG Reduce Motion） */
@media (prefers-reduced-motion: reduce) {
    *, *::before, *::after {
        animation-duration: 0.01ms !important;
        animation-iteration-count: 1 !important;
        transition-duration: 0.01ms !important;
    }
}

/* iOS 无障碍：减少透明度（HIG Reduce Transparency） */
@media (prefers-reduced-transparency: reduce) {
    .container, .message-card, .alert-card, .modal-card, .picker-panel, .glass-panel {
        -webkit-backdrop-filter: none !important;
        backdrop-filter: none !important;
    }
}

