
    /* Version 3.0 - 修复响应式布局媒体查询 */
    * {
      margin: 0;
      padding: 0;
      box-sizing: border-box;
    }

    body {
      font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Helvetica Neue', Arial, sans-serif;
      background: #ffffff;
      min-height: 100vh;
      padding: 0;
    }

    :root {
      --brand-red: #8B1A1A;
      --date-bar-height: 0px;
    }

    /* 餐厅头部 */
    .restaurant-header {
      background: white;
      color: #8B1A1A;
      padding: 1.5rem 0;
      box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
      border-bottom: 3px solid #8B1A1A;
    }

    .header-content {
      max-width: 100%;
      margin: 0 auto;
      padding: 0 0.5rem;
      display: grid;
      grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr);
      align-items: center;
      gap: 1rem;
    }

    /* 左侧：营业信息 - 靠左对齐 */
    .header-left {
      display: flex;
      flex-direction: column;
      gap: 0.5rem;
      justify-content: center;
      align-items: flex-start;
      min-width: 0;
      max-width: 100%;
    }

    .info-item {
      display: flex;
      align-items: center;
      gap: 0.5rem;
      color: #8B1A1A;
      min-width: 0;
      width: 100%;
    }

    .info-icon {
      font-size: 1.2rem;
      flex-shrink: 0;
    }

    .info-text {
      font-size: 0.9rem;
      font-weight: 500;
      line-height: 1.3;
      white-space: normal;
      overflow-wrap: anywhere;
      word-break: break-word;
      min-width: 0;
    }

    .info-link {
      color: #8B1A1A;
      text-decoration: none;
      transition: opacity 0.2s;
      min-width: 0;
    }

    .info-link:hover {
      opacity: 0.7;
    }

    /* 中间：Logo */
    .header-center {
      display: flex;
      align-items: center;
      justify-content: center;
    }

    .restaurant-logo {
      width: 100px;
      height: 100px;
      display: flex;
      align-items: center;
      justify-content: center;
    }

    .restaurant-logo img {
      width: 100%;
      height: 100%;
      object-fit: contain;
    }

    /* 右侧：微信二维码 - 靠右对齐 */
    .header-right {
      display: flex;
      justify-content: flex-end;
      align-items: center;
    }

    .qr-code {
      width: 100px;
      height: 100px;
      display: flex;
      align-items: center;
      justify-content: center;
    }

    .qr-code img {
      width: 100%;
      height: 100%;
      object-fit: contain;
    }

    /* 移动端适配 (小于641px) - 保持水平三栏布局 */
    @media (max-width: 640px) {
      .restaurant-header {
        padding: 0.8rem 0;
      }

      .header-content {
        grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr);
        gap: 0.3rem;
        padding: 0 0.5rem;
      }

      .header-left {
        gap: 0.3rem;
      }

      .restaurant-logo {
        width: 56px;
        height: 56px;
      }

      .info-icon {
        font-size: 0.75rem;
      }

      .info-text {
        font-size: 0.65rem;
        line-height: 1.25;
      }

      .qr-code {
        width: 56px;
        height: 56px;
      }

      .menu-date-bar {
        font-size: 1rem;
        padding: 0.8rem 0.5rem;
      }
    }

    .main {
      max-width: 100%;
      margin: 0 auto;
      padding: 0.5rem;
    }

    .loading {
      text-align: center;
      padding: 3rem;
      color: #6b7280;
    }

    .spinner {
      border: 3px solid #f3f4f6;
      border-top: 3px solid #c41e3a;
      border-radius: 50%;
      width: 40px;
      height: 40px;
      animation: spin 1s linear infinite;
      margin: 0 auto 1rem;
    }

    @keyframes spin {
      0% {
        transform: rotate(0deg);
      }

      100% {
        transform: rotate(360deg);
      }
    }

    .error {
      background: #fef2f2;
      border: 1px solid #fecaca;
      border-radius: 0.5rem;
      padding: 1.5rem;
      margin: 2rem 1rem;
      color: #991b1b;
    }

    .website-notices {
      padding: 0.8rem 0.7rem 0.5rem;
      display: flex;
      flex-direction: column;
      align-items: center;
      gap: 0.7rem;
      background: #ffffff;
      border-bottom: 1px solid #f1f1f1;
    }

    .notice-box {
      position: relative;
      width: min(980px, 100%);
      border-radius: 12px;
      padding: 0.9rem 0.95rem 0.95rem 1rem;
      line-height: 1.35;
      border: 1px solid rgba(139, 26, 26, 0.14);
      box-shadow: none;
      overflow: hidden;
    }

    /* 滚动公告跑马灯样式 */
    .marquee-container {
      width: min(980px, 100%);
      background: #fdf2f2;
      border: 1px solid rgba(139, 26, 26, 0.14);
      border-radius: 12px;
      padding: 0.6rem 1rem;
      display: flex;
      align-items: center;
      gap: 0.7rem;
      overflow: hidden;
      box-shadow: 0 2px 4px rgba(139, 26, 26, 0.03);
    }

    .marquee-content-wrapper {
      overflow: hidden;
      position: relative;
      width: 100%;
      height: 1.3rem;
      display: flex;
      align-items: center;
      /* 性能优化：创建独立的合成层 */
      transform: translateZ(0);
      -webkit-transform: translateZ(0);
    }

    .marquee-label {
      display: none;
    }

    .marquee-content {
      display: inline-flex;
      white-space: nowrap;
      /* 性能优化：启用硬件加速和合成层 */
      will-change: transform;
      transform: translateZ(0);
      -webkit-transform: translateZ(0);
      backface-visibility: hidden;
      -webkit-backface-visibility: hidden;
      /* 动画：匀速滚动 */
      animation: marquee-scroll 20s linear infinite;
      font-size: 0.92rem;
      font-weight: 700;
      color: #8B1A1A;
    }

    /* 跑马灯文字项 - 每个 span 之间添加间距 */
    .marquee-content span {
      display: inline-block;
      padding-right: 5rem; /* 控制两段文字之间的间距 */
      /* 性能优化：防止子像素渲染导致的模糊 */
      transform: translateZ(0);
      -webkit-font-smoothing: antialiased;
      -moz-osx-font-smoothing: grayscale;
    }

    /* 无缝循环跑马灯动画 - 从容器右侧完全移动到左侧 */
    @keyframes marquee-scroll {
      from { 
        transform: translate3d(0, 0, 0); 
      }
      to { 
        transform: translate3d(-50%, 0, 0); 
      }
    }

    /* 防止动画重置时的闪烁 */
    @media (prefers-reduced-motion: no-preference) {
      .marquee-content {
        animation-timing-function: linear;
      }
    }

    .notice-box::before {
      content: '';
      position: absolute;
      left: 0;
      top: 0;
      bottom: 0;
      width: 5px;
      border-radius: 5px;
      background: currentColor;
      opacity: 1;
    }

    .notice-title {
      font-size: 1.42rem;
      font-weight: 800;
      line-height: 1.2;
      letter-spacing: 0.2px;
      text-align: center;
      margin-bottom: 0.22rem;
      color: var(--brand-red);
    }

    .notice-content {
      font-size: 1.28rem;
      font-weight: 700;
      white-space: pre-wrap;
      word-break: break-word;
      text-align: center;
      color: var(--brand-red);
    }

    .notice-closed {
      background: linear-gradient(135deg, #fff1f1 0%, #f9e4e4 100%);
      color: var(--brand-red);
      text-align: center;
      border-color: rgba(139, 26, 26, 0.24);
    }

    .notice-closed::before {
      background: #8B1A1A;
    }

    .notice-announcement {
      background: #e8effc;
      color: var(--brand-red);
    }

    .notice-promotion {
      background: #e8f5ef;
      color: var(--brand-red);
    }

    .notice-closure {
      background: linear-gradient(135deg, #fff7ed 0%, #f8efe4 100%);
      color: var(--brand-red);
      border-color: rgba(139, 26, 26, 0.22);
    }

    @media (max-width: 640px) {
      .website-notices {
        padding: 0.6rem 0.5rem 0.35rem;
      }

      .notice-box {
        border-radius: 10px;
        padding: 0.75rem 0.78rem 0.8rem 0.85rem;
      }

      .notice-title {
        font-size: 1.2rem;
      }

      .notice-content {
        font-size: 1.08rem;
      }
    }

    /* 菜单日期横条 - 固定在顶部，滚动时始终可见 */
    .menu-date-bar {
      background: #8B1A1A;
      color: white;
      text-align: center;
      padding: 0.9rem 1rem;
      font-size: 1.15rem;
      font-weight: 700;
      position: sticky;
      top: 0;
      z-index: 30;
      box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);
      letter-spacing: 1px;
      border-bottom: 3px solid #6B0F0F;
      margin-bottom: 0.3rem;
    }

    /* 菜单类型选择器 - 正常流式布局，不固定 */
    .menu-type-selector {
      display: flex;
      gap: 0.5rem;
      padding: 0.8rem 0.5rem;
      overflow-x: auto;
      flex-wrap: nowrap;
      background: #f9fafb;
      border-bottom: 1px solid #e5e7eb;
      box-shadow: none;
      scroll-behavior: smooth;
      cursor: grab;
      user-select: none;
      -webkit-user-select: none;
      -webkit-overflow-scrolling: touch;
    }

    .menu-type-selector:active {
      cursor: grabbing;
    }

    /* 菜单类型选择器按钮样式 */
    .menu-type-selector .category-filter-btn {
      padding: 0.5rem 1.2rem;
      border: 2px solid #8B1A1A;
      background: white;
      color: #8B1A1A;
      border-radius: 0.5rem;
      font-weight: 700;
      font-size: 1rem;
      transition: all 0.2s;
    }

    .menu-type-selector .category-filter-btn:hover {
      background: #f3f4f6;
      transform: translateY(-1px);
    }

    .menu-type-selector .category-filter-btn.active {
      background: #8B1A1A;
      color: white;
      box-shadow: 0 2px 6px rgba(139, 26, 26, 0.3);
    }

    /* 分类筛选标签 - 粘性悬浮固定置顶，支持单行横向滑动 */
    .category-filter {
      display: flex;
      gap: 0.6rem;
      padding: 0.7rem 0.6rem;
      overflow-x: auto;
      flex-wrap: nowrap;
      -webkit-overflow-scrolling: touch;
      background: rgba(255, 255, 255, 0.95);
      backdrop-filter: blur(10px);
      border-bottom: 1px solid #e5e7eb;
      position: sticky;
      top: var(--date-bar-height, 2.8rem);
      /* 配合移动端日期栏高度 */
      z-index: 25;
      box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.05);
      scrollbar-width: none;
      /* 隐藏滚动条 (Firefox) */
      scroll-behavior: smooth;
      cursor: grab;
      user-select: none;
      -webkit-user-select: none;
    }

    .category-filter:active {
      cursor: grabbing;
    }

    .category-filter::-webkit-scrollbar {
      display: none; /* 隐藏滚动条 (Chrome/Safari) */
    }

    @media (min-width: 641px) {
      .category-filter {
        top: var(--date-bar-height, 3.1rem); /* 配合平板端日期栏高度 */
      }
    }

    @media (min-width: 1025px) {
      .category-filter {
        top: 3.4rem; /* 配合PC端日期栏高度 */
      }
    }

    /* 现代胶囊分类按钮样式 */
    .category-filter-btn {
      padding: 0.5rem 1.2rem;
      border: 2px solid #8B1A1A;
      background: white;
      color: #8B1A1A;
      border-radius: 0.5rem;
      cursor: pointer;
      font-size: 1rem;
      font-weight: 700;
      white-space: nowrap;
      transition: all 0.2s;
    }

    .category-filter-btn:hover {
      background: #f3f4f6;
      color: #8B1A1A;
      transform: translateY(-1px);
    }

    .category-filter-btn.active {
      background: #8B1A1A;
      color: white;
      border-color: #8B1A1A;
      box-shadow: 0 2px 6px rgba(139, 26, 26, 0.3);
      transform: none;
    }

    /* 分类区域 */
    .category-section {
      margin: 1.5rem 0;
    }

    /* 分类横条 - 完全匹配图片样式 */
    .category-banner {
      background: #8B1A1A;
      text-align: center;
      margin-bottom: 0.5rem;
      padding: 0.6rem 0;
    }

    .category-banner-text {
      color: white;
      font-size: 0.95rem;
      font-weight: 600;
      line-height: 1.2;
    }

    /* 九宫格布局 - 移动优先，默认3列 */
    .grid {
      display: grid;
      grid-template-columns: repeat(3, 1fr);
      gap: 0.5rem;
      margin: 0 auto;
      width: 100%;
    }

    /* 菜品卡片 - 添加平滑交互动效 */
    .card {
      position: relative;
      display: flex;
      flex-direction: column;
      background: white;
      width: 100%;
      transition: transform 0.2s cubic-bezier(0.4, 0, 0.2, 1), box-shadow 0.2s cubic-bezier(0.4, 0, 0.2, 1);
    }

    .card:hover {
      transform: translateY(-2px);
      box-shadow: 0 6px 14px rgba(0, 0, 0, 0.08);
    }

    /* 详情弹窗样式 */
    .modal-overlay {
      position: fixed;
      top: 0;
      left: 0;
      right: 0;
      bottom: 0;
      background: rgba(0, 0, 0, 0.5);
      backdrop-filter: blur(6px);
      z-index: 1000;
      display: flex;
      align-items: center;
      justify-content: center;
      opacity: 0;
      pointer-events: none;
      transition: opacity 0.25s ease;
    }

    .modal-overlay.open {
      opacity: 1;
      pointer-events: auto;
    }

    .modal-content {
      background: white;
      width: min(440px, 90%);
      border-radius: 20px;
      overflow: hidden;
      box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.15), 0 10px 10px -5px rgba(0, 0, 0, 0.04);
      position: relative;
      transform: scale(0.95);
      transition: transform 0.25s cubic-bezier(0.34, 1.56, 0.64, 1);
    }

    .modal-overlay.open .modal-content {
      transform: scale(1);
    }

    /* 左右切换按钮 */
    .modal-nav-btn {
      position: absolute;
      top: 50%;
      transform: translateY(-50%);
      width: 48px;
      height: 48px;
      border-radius: 50%;
      background: rgba(255, 255, 255, 0.95);
      border: 1px solid rgba(0, 0, 0, 0.1);
      box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
      display: flex;
      align-items: center;
      justify-content: center;
      cursor: pointer;
      z-index: 10;
      transition: all 0.2s ease;
      color: #374151;
    }

    .modal-nav-btn:hover:not(.disabled) {
      background: white;
      box-shadow: 0 6px 12px rgba(0, 0, 0, 0.15);
      transform: translateY(-50%) scale(1.1);
    }

    .modal-nav-btn:active:not(.disabled) {
      transform: translateY(-50%) scale(0.95);
    }

    .modal-nav-btn.disabled {
      opacity: 0.3;
      cursor: not-allowed;
      pointer-events: none;
    }

    .modal-nav-prev {
      left: -60px;
    }

    .modal-nav-next {
      right: -60px;
    }

    /* 移动端：按钮放在弹窗内部 */
    @media (max-width: 640px) {
      .modal-nav-prev {
        left: 8px;
      }

      .modal-nav-next {
        right: 8px;
      }

      .modal-nav-btn {
        width: 40px;
        height: 40px;
        background: rgba(255, 255, 255, 0.9);
      }
    }

    /* 菜品计数器 */
    .modal-counter {
      position: absolute;
      top: 16px;
      left: 50%;
      transform: translateX(-50%);
      background: rgba(0, 0, 0, 0.7);
      color: white;
      padding: 6px 14px;
      border-radius: 20px;
      font-size: 0.875rem;
      font-weight: 600;
      z-index: 10;
      backdrop-filter: blur(8px);
    }

    .closure-modal-overlay {
      background: rgba(31, 41, 55, 0.46);
      backdrop-filter: blur(4px);
    }

    .closure-modal-card {
      width: min(430px, calc(100% - 2rem));
      border-radius: 14px;
      border: 1px solid rgba(139, 26, 26, 0.28);
      background: #fffafa;
      overflow: hidden;
    }

    .closure-modal-accent {
      height: 6px;
      background: #8B1A1A;
    }

    .closure-modal-body {
      padding: 1.65rem 1.35rem 1.3rem;
      text-align: center;
    }

    .closure-modal-icon {
      width: 56px;
      height: 56px;
      margin: 0 auto 0.85rem;
      border-radius: 14px;
      background: #8B1A1A;
      color: white;
      display: flex;
      align-items: center;
      justify-content: center;
      font-size: 1.9rem;
      line-height: 1;
      box-shadow: 0 8px 18px rgba(139, 26, 26, 0.22);
    }

    .closure-modal-title {
      font-size: 1.35rem;
      font-weight: 800;
      line-height: 1.2;
      color: #8B1A1A;
      margin-bottom: 0.65rem;
    }

    .closure-modal-content {
      font-size: 1rem;
      line-height: 1.55;
      color: #4b5563;
      white-space: pre-wrap;
      word-break: break-word;
      text-align: center;
      margin-bottom: 1.15rem;
    }

    .closure-modal-actions {
      display: flex;
      justify-content: center;
      gap: 0.6rem;
    }

    .closure-modal-button {
      border: 2px solid #8B1A1A;
      background: #8B1A1A;
      color: white;
      border-radius: 0.5rem;
      padding: 0.55rem 1.1rem;
      font-size: 0.95rem;
      font-weight: 800;
      cursor: pointer;
      transition: all 0.2s;
    }

    .closure-modal-button:hover {
      background: #6B0F0F;
      border-color: #6B0F0F;
      transform: translateY(-1px);
    }

    .closure-modal-close {
      position: absolute;
      top: 12px;
      right: 12px;
      width: 32px;
      height: 32px;
      border: 1px solid rgba(139, 26, 26, 0.18);
      border-radius: 50%;
      background: white;
      color: #8B1A1A;
      display: flex;
      align-items: center;
      justify-content: center;
      font-size: 1.3rem;
      line-height: 1;
      cursor: pointer;
      transition: all 0.2s;
    }

    .closure-modal-close:hover {
      background: #fdf2f2;
      transform: scale(1.05);
    }

    .modal-close {
      position: absolute;
      top: 12px;
      right: 15px;
      font-size: 1.62rem;
      color: white;
      background: rgba(0, 0, 0, 0.4);
      backdrop-filter: blur(4px);
      width: 32px;
      height: 32px;
      border-radius: 50%;
      display: flex;
      align-items: center;
      justify-content: center;
      line-height: 1;
      padding-bottom: 3px;
      cursor: pointer;
      z-index: 10;
      transition: all 0.2s;
    }

    .modal-close:hover {
      background: rgba(0, 0, 0, 0.7);
      transform: scale(1.05) rotate(90deg);
    }

    .modal-image-wrapper {
      position: relative;
      width: 100%;
      aspect-ratio: 1 / 1;
      background: #8B1A1A;
      padding: 3px;
    }

    .modal-image-wrapper img {
      width: 100%;
      height: 100%;
      object-fit: cover;
      display: block;
    }

    .modal-dish-number {
      position: absolute;
      top: 10px;
      left: 10px;
      background: #8B1A1A;
      color: white;
      padding: 0.25rem 0.65rem;
      font-size: 0.9rem;
      font-weight: bold;
      border-radius: 4px;
      box-shadow: 0 2px 4px rgba(0,0,0,0.15);
    }

    .modal-info {
      padding: 1.25rem 1.4rem;
    }

    .modal-title-row {
      display: flex;
      justify-content: space-between;
      align-items: center;
      gap: 1rem;
      margin-bottom: 0.4rem;
    }

    .modal-title-cn {
      font-size: 1.35rem;
      font-weight: 800;
      color: #8B1A1A;
      line-height: 1.2;
    }

    .modal-badge-category {
      background: #fdf2f2;
      color: #8B1A1A;
      border: 1px solid rgba(139, 26, 26, 0.16);
      padding: 0.2rem 0.7rem;
      font-size: 0.75rem;
      font-weight: 700;
      border-radius: 9999px;
      white-space: nowrap;
    }

    .modal-title-mm {
      font-size: 1.15rem;
      color: #4b5563;
      font-weight: 600;
      line-height: 1.3;
    }

    /* 图片容器 - 深红色边框，精确匹配图片 */
    .card-image-wrapper {
      position: relative;
      width: 100%;
      aspect-ratio: 1 / 1;
      background: #8B1A1A;
      padding: 3px;
    }

    .card-image {
      width: 100%;
      height: 100%;
      object-fit: cover;
      background: #f3f4f6;
      display: block;
    }

    /* 编号 - 左上角深红色矩形，精确匹配图片 */
    .card-number {
      position: absolute;
      top: 3px;
      left: 3px;
      background: #8B1A1A;
      color: white;
      padding: 0.25rem 0.6rem;
      font-size: 0.85rem;
      font-weight: bold;
      z-index: 2;
      line-height: 1.2;
      text-align: center;
    }

    /* 标签区域 - 精确间距 */
    .card-labels {
      display: flex;
      flex-direction: column;
      gap: 0.25rem;
      margin-top: 0.25rem;
    }

    /* 中文标签 - 深红色背景，精确匹配图片 */
    .card-label-cn {
      background: #8B1A1A;
      color: white;
      padding: 0.5rem 0.3rem;
      text-align: center;
      font-size: 0.85rem;
      font-weight: 600;
      line-height: 1.2;
    }

    /* 缅文标签 - 白色/浅灰背景，精确匹配图片 */
    .card-label-mm {
      background: #F5F5F5;
      color: #333;
      padding: 0.5rem 0.3rem;
      text-align: center;
      font-size: 0.8rem;
      line-height: 1.2;
    }

    /* 平板适配 (641px以上) - 5列 */
    @media (min-width: 641px) {
      .main {
        padding: 1rem;
      }

      .header-content {
        padding: 0 1rem;
      }

      .restaurant-header {
        padding: 2rem 0;
      }

      .restaurant-logo {
        width: 140px;
        height: 140px;
      }

      .info-icon {
        font-size: 1.3rem;
      }

      .info-text {
        font-size: 1rem;
      }

      .qr-code {
        width: 120px;
        height: 120px;
      }

      .menu-date-bar {
        font-size: 1.3rem;
        padding: 1.1rem 1rem;
      }

      .category-section {
        margin: 2rem 0;
      }

      .grid {
        grid-template-columns: repeat(5, 1fr);
        gap: 0.8rem;
      }
    }

    /* PC端适配 (1025px以上) - 6列 */
    @media (min-width: 1025px) {
      .main {
        padding: 1.5rem;
      }

      .header-content {
        padding: 0 1.5rem;
      }

      .restaurant-header {
        padding: 2.5rem 0;
      }

      .restaurant-logo {
        width: 140px;
        height: 140px;
      }

      .info-icon {
        font-size: 1.4rem;
      }

      .info-text {
        font-size: 1.1rem;
      }

      .qr-code {
        width: 140px;
        height: 140px;
      }

      .menu-date-bar {
        font-size: 1.4rem;
        padding: 1.2rem 1rem;
      }

      .menu-type-selector {
        top: 3.8rem;
      }

      .category-filter {
        top: var(--date-bar-height, 7rem);
      }

      .category-section {
        margin: 2.5rem 0;
      }

      .grid {
        grid-template-columns: repeat(6, 1fr);
        gap: 1rem;
      }
    }

    /* ==========================================
       [新功能] 极简菜品模糊搜索栏 CSS
       ========================================== */
    .search-container {
      width: min(980px, 100%);
      margin: 0.5rem auto 0.8rem;
      padding: 0 0.5rem;
    }
    .search-box-wrapper {
      position: relative;
      display: flex;
      align-items: center;
      background: #f3f4f6;
      border: 1px solid rgba(139, 26, 26, 0.08);
      border-radius: 12px;
      padding: 0.6rem 0.9rem;
      transition: all 0.3s;
    }
    .search-box-wrapper:focus-within {
      background: white;
      border-color: #8B1A1A;
      box-shadow: 0 4px 12px rgba(139, 26, 26, 0.08);
    }
    .search-icon {
      font-size: 1.1rem;
      color: #9ca3af;
      margin-right: 0.6rem;
      flex-shrink: 0;
    }
    #menuSearchInput {
      border: none;
      background: transparent;
      outline: none;
      width: 100%;
      font-size: 0.95rem;
      font-weight: 600;
      color: #1f2937;
    }
    #menuSearchInput::placeholder {
      color: #9ca3af;
      font-weight: 500;
    }
    .search-clear-btn {
      font-size: 1.3rem;
      color: #9ca3af;
      cursor: pointer;
      display: none;
      padding: 0 0.2rem;
      line-height: 1;
      flex-shrink: 0;
    }
    .search-clear-btn:hover {
      color: #8B1A1A;
    }

    /* ==========================================
       [新功能] 关店整站置灰 & 骨架屏闪烁 CSS
       ========================================== */
    .store-closed {
      filter: grayscale(90%);
      opacity: 0.65;
      pointer-events: none;
      user-select: none;
    }
    
    @keyframes shimmer {
      0% { background-position: -200% 0; }
      100% { background-position: 200% 0; }
    }
    .image-loading-placeholder {
      background: linear-gradient(90deg, #f3f4f6 25%, #e5e7eb 50%, #f3f4f6 75%);
      background-size: 200% 100%;
      animation: shimmer 1.5s infinite linear;
    }

    /* ==========================================
       [性能优化] 局部 DOM 显示隐藏控制，防止闪烁
       ========================================== */
    .category-section.hidden-section {
      display: none !important;
    }
    .card.hidden-card {
      display: none !important;
    }

    /* ==========================================
       [新功能] 高级暗黑模式 CSS
       ========================================== */
    .theme-toggle-fab {
      position: fixed;
      right: 20px;
      bottom: 20px;
      width: 48px;
      height: 48px;
      border-radius: 50%;
      background: white;
      border: 1px solid rgba(139, 26, 26, 0.15);
      box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
      cursor: pointer;
      display: flex;
      align-items: center;
      justify-content: center;
      z-index: 99;
      transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
    }
    .theme-toggle-fab:hover {
      transform: scale(1.08) rotate(15deg);
    }
    .theme-icon {
      font-size: 1.4rem;
    }
     body.dark-theme {
      background: #121212;
      color: #e5e7eb;
    }
    body.dark-theme .restaurant-header {
      background: #1e1e1e;
      border-bottom-color: #8B1A1A;
      box-shadow: 0 2px 8px rgba(0, 0, 0, 0.5);
    }
    body.dark-theme .header-left, 
    body.dark-theme .info-item, 
    body.dark-theme .info-link {
      color: #ff6b6b;
    }
    body.dark-theme .info-link:hover {
      opacity: 0.8;
    }
    body.dark-theme .menu-date-bar {
      background: #3a0000;
      border-bottom-color: #220000;
    }
    body.dark-theme .category-filter {
      background: rgba(18, 18, 18, 0.95);
      border-bottom-color: #2d2d2d;
    }
    body.dark-theme .category-filter-btn {
      background: #2d2d2d;
      color: #9ca3af;
      border-color: #3d3d3d;
    }
    body.dark-theme .category-filter-btn:hover {
      background: #3d3d3d;
      color: #f3f4f6;
    }
    body.dark-theme .category-filter-btn.active {
      background: #8B1A1A;
      color: white;
      border-color: #8B1A1A;
    }
    body.dark-theme .card {
      background: #1e1e1e;
      border: 1px solid #2d2d2d;
    }
    body.dark-theme .card-label-mm {
      background: #2d2d2d;
      color: #d1d5db;
    }
    body.dark-theme .modal-content {
      background: #1e1e1e;
      color: #e5e7eb;
    }
    body.dark-theme .modal-title-mm {
      color: #9ca3af;
    }
    body.dark-theme .modal-badge-category {
      background: #3a0000;
      color: #ff6b6b;
      border-color: #5a0000;
    }
    body.dark-theme .closure-modal-card {
      background: #1e1e1e;
      border-color: #5a0000;
    }
    body.dark-theme .closure-modal-close {
      background: #2d2d2d;
      color: #ff6b6b;
      border-color: #3d3d3d;
    }
    body.dark-theme .closure-modal-content {
      color: #d1d5db;
    }
    body.dark-theme .theme-toggle-fab {
      background: #1e1e1e;
      border-color: #3d3d3d;
      color: white;
    }
    body.dark-theme .search-box-wrapper {
      background: #2d2d2d;
      border-color: #3d3d3d;
    }
    body.dark-theme #menuSearchInput {
      color: #f3f4f6;
    }
    body.dark-theme .marquee-container {
      background: #2d1212;
      border-color: rgba(255, 107, 107, 0.15);
    }
    body.dark-theme .marquee-content {
      color: #ff8b8b;
    }
    body.dark-theme .image-loading-placeholder {
      background: linear-gradient(90deg, #1e1e1e 25%, #2d2d2d 50%, #1e1e1e 75%);
      background-size: 200% 100%;
    }
    body.dark-theme .website-notices {
      background: #121212;
      border-bottom-color: #1e1e1e;
    }
    body.dark-theme .menu-type-selector {
      background: #121212;
      border-bottom-color: #2d2d2d;
    }
    body.dark-theme .menu-type-selector .category-filter-btn {
      background: #2d2d2d;
      color: #9ca3af;
      border-color: #3d3d3d;
    }
    body.dark-theme .menu-type-selector .category-filter-btn:hover {
      background: #3d3d3d;
      color: #f3f4f6;
    }
    body.dark-theme .menu-type-selector .category-filter-btn.active {
      background: #8B1A1A;
      color: white;
      border-color: #8B1A1A;
    }

    /* 全局 Toast 提示样式 */
    .global-toast {
      position: fixed;
      bottom: 2rem;
      left: 50%;
      transform: translate(-50%, 1rem);
      background: rgba(0, 0, 0, 0.8);
      color: white;
      padding: 0.55rem 1.2rem;
      border-radius: 50px;
      font-size: 0.85rem;
      font-weight: 600;
      z-index: 9999;
      opacity: 0;
      pointer-events: none;
      transition: opacity 0.25s cubic-bezier(0.4, 0, 0.2, 1), transform 0.25s cubic-bezier(0.4, 0, 0.2, 1);
      backdrop-filter: blur(5px);
      box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
      letter-spacing: 0.5px;
    }
    .global-toast.show {
      opacity: 1;
      transform: translate(-50%, 0);
    }

    /* 微信二维码详情极简条目 */
    .qr-details-container {
      margin-bottom: 1.2rem;
      text-align: left;
    }
    .qr-detail-item {
      display: flex;
      justify-content: space-between;
      align-items: center;
      padding: 0.6rem 0.2rem;
      font-size: 0.9rem;
      cursor: pointer;
      border-radius: 6px;
      transition: background-color 0.2s;
    }
    .qr-detail-item:hover {
      background-color: #f9fafb;
    }
    .qr-detail-item:hover .qr-copy-icon {
      color: #8B1A1A !important;
    }
    .qr-detail-item + .qr-detail-item {
      border-top: 1px solid #f3f4f6;
    }
    .qr-detail-label {
      font-weight: 600;
      color: #4b5563;
    }
    .qr-detail-value {
      font-family: monospace;
      font-weight: 700;
      color: #111827;
    }
    .qr-copy-icon {
      color: #9ca3af;
      transition: color 0.2s;
      flex-shrink: 0;
    }

    /* 菜名复制条目 hover 变亮效果 */
    .modal-title-row div:hover .copy-indicator-icon,
    .modal-info div:hover .copy-indicator-icon {
      color: #8B1A1A !important;
    }

    /* 暗黑模式适配 */
    body.dark-theme .global-toast {
      background: rgba(255, 255, 255, 0.9);
      color: #121212;
    }
    body.dark-theme .qr-detail-item:hover {
      background-color: #242424;
    }
    body.dark-theme .qr-detail-item:hover .qr-copy-icon {
      color: #ff6b6b !important;
    }
    body.dark-theme .qr-detail-item + .qr-detail-item {
      border-top-color: #2d2d2d;
    }
    body.dark-theme .qr-detail-label {
      color: #9ca3af;
    }
    body.dark-theme .qr-detail-value {
      color: #e5e7eb;
    }
  