  :root {
    --primary: #E85D04;
    --primary-dark: #9D0208;
    --accent: #F48C06;
    --accent-light: #FFBA08;
    --bg: #FFF8F0;
    --card: #FFFEF7;
    --text: #4A2C0F;
    --text-light: #8B5A2B;
    --border: #F0D9B5;
    --tag-jiachang: #E07856;
    --tag-chuan: #C9302C;
    --tag-yue: #6B8E23;
    --tag-mian: #D4A017;
    --difficulty-easy: #7E9B6B;
    --difficulty-mid: #C49A52;
    --difficulty-hard: #B05548;
  }

  * { box-sizing: border-box; margin: 0; padding: 0; }
  /* iOS Safari 双击放大 —— 全局禁用,保留双指 pinch zoom */
  button, a, .meal-stepper, .meal-stepper button, .stepper-btn, .lucky-card, .home-card, [onclick] {
    touch-action: manipulation;
  }

  body {
    font-family: -apple-system, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", sans-serif;
    background: var(--bg);
    color: var(--text);
    line-height: 1.6;
  }

  /* 顶部 Hero 区 */
  .hero {
    background: linear-gradient(135deg, #E85D04 0%, #9D0208 100%);
    color: white;
    padding: 24px 24px 44px;
    text-align: center;
    position: relative;
    overflow: hidden;
  }

  .hero::before {
    content: "";
    position: absolute;
    top: -50%; left: -50%;
    width: 200%; height: 200%;
    background:
      radial-gradient(circle at 20% 30%, rgba(255,186,8,.15) 0%, transparent 40%),
      radial-gradient(circle at 80% 70%, rgba(255,255,255,.1) 0%, transparent 40%);
    pointer-events: none;
  }

  .hero-inner {
    max-width: 800px;
    margin: 0 auto;
    position: relative;
  }

  .hero h1 {
    font-size: clamp(28px, 5.5vw, 44px);
    font-weight: 700;
    margin-bottom: 10px;
    letter-spacing: 3px;
    font-family: "STKaiti", "KaiTi", "楷体", serif;
  }

  .hero .subtitle {
    font-size: clamp(14px, 2vw, 17px);
    opacity: 0.92;
    margin-bottom: 8px;
  }

  .hero .tagline {
    font-size: clamp(12px, 1.8vw, 14px);
    opacity: 0.75;
    font-style: italic;
  }

  .hero .slogan {
    display: inline-block;
    margin: 4px 0 2px;
    font-size: clamp(13px, 2vw, 16px);
    font-weight: 700;
    color: white;
    padding: 5px 16px;
    background: rgba(255,255,255,0.18);
    border: 1px solid rgba(255,255,255,0.3);
    border-radius: 24px;
    letter-spacing: 2px;
    font-family: "STKaiti", "KaiTi", "楷体", serif;
  }

  .hero-stats {
    display: flex;
    justify-content: center;
    gap: 32px;
    margin-top: 24px;
    flex-wrap: wrap;
  }

  .hero-stats div {
    font-size: 14px;
    opacity: 0.9;
  }

  .hero-stats strong {
    display: block;
    font-size: 24px;
    font-weight: 700;
    color: var(--accent-light);
  }

  /* 主体容器 */
  .container {
    max-width: 1400px;
    margin: -40px auto 0;
    padding: 0 24px 60px;
    position: relative;
  }

  /* 筛选条 */
  .filters {
    background: var(--card);
    border: 1px solid var(--border);
    border-radius: 16px;
    padding: 24px;
    box-shadow: 0 10px 30px rgba(232, 93, 4, 0.08);
    margin-bottom: 32px;
  }

  .filter-row {
    display: flex;
    gap: 16px;
    align-items: center;
    flex-wrap: wrap;
    margin-bottom: 16px;
  }

  .filter-row:last-child { margin-bottom: 0; }

  .filter-label {
    font-weight: 600;
    color: var(--text-light);
    font-size: 14px;
    min-width: 64px;
  }

  .filter-btn {
    padding: 7px 16px;
    border: 1.5px solid var(--border);
    background: white;
    border-radius: 20px;
    cursor: pointer;
    font-size: 14px;
    color: var(--text);
    transition: all 0.2s;
    font-family: inherit;
  }

  .filter-btn:hover {
    border-color: var(--primary);
    color: var(--primary);
  }

  .filter-btn.active {
    background: var(--primary);
    color: white;
    border-color: var(--primary);
  }

  /* 主题筛选:和上面几行对齐(同样的 flex 排布) */
  .theme-grid {
    display: flex;
    gap: 16px;
    flex-wrap: wrap;
  }

  .search-box {
    flex: 1;
    min-width: 200px;
    padding: 8px 16px;
    border: 1.5px solid var(--border);
    border-radius: 20px;
    font-size: 14px;
    outline: none;
    font-family: inherit;
    transition: border-color 0.2s;
  }

  .search-box:focus { border-color: var(--primary); }

  .result-count {
    font-size: 13px;
    color: var(--text-light);
    margin-left: auto;
  }

  /* 菜谱卡片网格 */
  .grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
    gap: 20px;
  }

  .card {
    background: var(--card);
    border-radius: 16px;
    overflow: hidden;
    border: 1px solid var(--border);
    transition: transform 0.2s, box-shadow 0.2s;
    cursor: pointer;
    display: flex;
    flex-direction: column;
  }

  .card:hover {
    transform: translateY(-4px);
    box-shadow: 0 10px 24px rgba(74, 44, 15, 0.10);
  }

  .card-cover {
    height: 160px;
    display: flex;
    align-items: center;
    justify-content: center;
    flex-direction: column;
    position: relative;
    color: white;
    text-shadow: 0 2px 8px rgba(0,0,0,0.25);
  }

  .card-cover img {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
  }

  .card-cover .icon {
    font-size: 56px;
    line-height: 1;
    margin-bottom: 8px;
    filter: drop-shadow(0 2px 6px rgba(0,0,0,0.2));
    position: relative;
  }

  .card-cover .name {
    font-size: 18px;
    font-weight: 700;
    letter-spacing: 1px;
    position: relative;
    z-index: 1;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    max-width: calc(100% - 24px);
    text-align: center;
  }
  @media (max-width: 640px) {
    .card-cover .name { font-size: 15px; letter-spacing: 0; max-width: calc(100% - 16px); }
  }

  .card-cover .category-badge {
    position: absolute;
    top: 10px; left: 10px;
    font-size: 11px;
    padding: 3px 10px;
    border-radius: 10px;
    background: rgba(255,255,255,0.92);
    color: var(--text);
    z-index: 2;
    font-weight: 500;
  }

  .card-cover .meals-badge {
    position: absolute;
    top: 10px; right: 10px;
    font-size: 14px;
    padding: 2px 8px;
    border-radius: 10px;
    background: rgba(0,0,0,0.25);
    backdrop-filter: blur(4px);
    z-index: 2;
    display: inline-flex;
    gap: 2px;
  }

  .card-body {
    padding: 14px 18px 18px;
    flex: 1;
    display: flex;
    flex-direction: column;
  }

  .card-meta {
    display: flex;
    gap: 14px;
    margin-bottom: 10px;
    font-size: 13px;
    color: var(--text-light);
    flex-wrap: wrap;
  }

  .card-meta span { display: inline-flex; align-items: center; gap: 4px; }

  .difficulty-pill {
    display: inline-block;
    padding: 2px 8px;
    border-radius: 8px;
    color: white;
    font-size: 11px;
    font-weight: 600;
  }

  .diff-新手 { background: var(--difficulty-easy); }
  .diff-简单 { background: var(--difficulty-mid); }
  .diff-进阶 { background: var(--difficulty-hard); }
  /* 在菜谱详情里 .meta-pill.diff-* 双类组合时,确保难度色不被 .meta-pill 的白底覆盖 */
  .meta-pill.diff-新手 { background: var(--difficulty-easy) !important; }
  .meta-pill.diff-简单 { background: var(--difficulty-mid)  !important; }
  .meta-pill.diff-进阶 { background: var(--difficulty-hard) !important; }

  .card-desc {
    font-size: 13px;
    color: var(--text-light);
    line-height: 1.5;
    margin-top: auto;
  }

  /* 详情弹窗 */
  .modal-overlay {
    position: fixed;
    inset: 0;
    background: rgba(74, 44, 15, 0.65);
    display: none;
    align-items: flex-start;
    justify-content: center;
    z-index: 100;
    overflow-y: auto;
    padding: 40px 16px;
  }

  .modal-overlay.show { display: flex; }

  .modal {
    background: var(--bg);
    border-radius: 20px;
    width: 100%;
    max-width: 720px;
    overflow: hidden;
    box-shadow: 0 20px 60px rgba(0,0,0,0.3);
    animation: slideUp 0.3s ease;
  }

  @keyframes slideUp {
    from { opacity: 0; transform: translateY(20px); }
    to { opacity: 1; transform: translateY(0); }
  }

  .modal-cover {
    height: 200px;
    display: flex;
    align-items: center;
    justify-content: center;
    flex-direction: column;
    color: white;
    text-shadow: 0 2px 12px rgba(0,0,0,0.3);
    position: relative;
  }

  /* ❤️ 收藏按钮(modal-cover 右上,close 左边) */
  .modal-fav-btn {
    position: absolute;
    top: 12px;
    right: 56px;
    width: 36px;
    height: 36px;
    border-radius: 50%;
    border: none;
    background: rgba(255,255,255,0.85);
    cursor: pointer;
    font-size: 18px;
    line-height: 1;
    z-index: 3;
    box-shadow: 0 2px 8px rgba(0,0,0,0.15);
    transition: transform 0.15s, background 0.15s;
    font-family: inherit;
  }
  .modal-fav-btn:active { transform: scale(0.92); }
  .modal-fav-btn.is-fav { background: white; animation: favPop 0.4s ease; }
  @keyframes favPop {
    0% { transform: scale(1); }
    40% { transform: scale(1.3); }
    100% { transform: scale(1); }
  }

  .modal-cover img {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
  }

  .modal-cover .icon {
    font-size: 80px;
    line-height: 1;
    margin-bottom: 12px;
    filter: drop-shadow(0 4px 10px rgba(0,0,0,0.3));
    position: relative;
  }

  .modal-cover .name {
    font-size: 28px;
    font-weight: 700;
    letter-spacing: 2px;
    position: relative;
    z-index: 1;
  }

  .modal-close {
    position: absolute;
    top: 14px; right: 14px;
    width: 36px; height: 36px;
    border-radius: 50%;
    background: rgba(255,255,255,0.92);
    border: none;
    font-size: 22px;
    cursor: pointer;
    color: var(--text);
    z-index: 3;
    display: flex;
    align-items: center;
    justify-content: center;
    line-height: 1;
  }

  .modal-content {
    padding: 24px 28px 32px;
  }

  .modal-meta {
    display: flex;
    gap: 12px;
    margin-bottom: 24px;
    flex-wrap: wrap;
  }

  .meta-pill {
    background: white;
    border: 1px solid var(--border);
    padding: 8px 14px;
    border-radius: 12px;
    font-size: 13px;
    color: var(--text);
    display: inline-flex;
    align-items: center;
    gap: 6px;
  }

  .meta-pill strong { color: var(--primary); font-weight: 700; }

  .modal-section {
    margin-bottom: 24px;
  }

  .modal-section h3 {
    font-size: 16px;
    color: var(--primary-dark);
    margin-bottom: 12px;
    padding-bottom: 8px;
    border-bottom: 2px solid var(--border);
    display: flex;
    align-items: center;
    gap: 8px;
  }

  .ingredients-list {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
    gap: 10px;
    list-style: none;
  }

  .ingredients-list li {
    background: white;
    padding: 10px 14px;
    border-radius: 8px;
    font-size: 14px;
    border-left: 3px solid var(--accent);
  }

  .ing-name {
    font-weight: 600;
    color: var(--text);
    display: block;
  }

  .ing-note {
    display: block;
    margin-top: 4px;
    font-size: 12px;
    color: var(--text-light);
    line-height: 1.5;
  }

  .ing-en {
    color: var(--primary);
    font-weight: 500;
  }

  .ing-tag {
    display: inline-block;
    font-size: 10px;
    padding: 1px 6px;
    border-radius: 6px;
    margin-left: 4px;
    font-weight: 600;
    vertical-align: 1px;
  }

  .tag-mainstream { background: #E8F5E9; color: #2E7D32; }
  .tag-chinese { background: #FFEBEE; color: #C62828; }
  .tag-online { background: #E3F2FD; color: #1565C0; }
  .tag-optional { background: #F5F5F5; color: #757575; }

  .steps-list {
    counter-reset: step;
    list-style: none;
  }

  .steps-list li {
    counter-increment: step;
    padding: 12px 12px 12px 48px;
    margin-bottom: 8px;
    background: white;
    border-radius: 10px;
    position: relative;
    font-size: 14px;
    line-height: 1.7;
  }

  .steps-list li::before {
    content: counter(step);
    position: absolute;
    left: 12px;
    top: 12px;
    width: 26px; height: 26px;
    background: var(--primary);
    color: white;
    border-radius: 50%;
    font-size: 13px;
    font-weight: 700;
    display: flex;
    align-items: center;
    justify-content: center;
  }

  .tips-box {
    background: linear-gradient(135deg, #FFF3D6 0%, #FFE5B4 100%);
    border-left: 4px solid var(--accent);
    padding: 14px 16px;
    border-radius: 8px;
    font-size: 14px;
    line-height: 1.7;
    color: var(--text);
  }

  .tips-box strong { color: var(--primary-dark); }

  /* 盲盒「加到日历」按钮 */
  .add-to-plan-btn {
    margin-top: 8px;
    width: 100%;
    background: rgba(13, 71, 161, 0.08);
    border: 1px dashed rgba(13, 71, 161, 0.4);
    color: #0D47A1;
    padding: 5px 10px;
    border-radius: 8px;
    font-size: 11px;
    font-weight: 600;
    cursor: pointer;
    font-family: inherit;
    transition: all 0.15s;
  }
  .add-to-plan-btn:hover {
    background: #1976D2;
    border-color: #1976D2;
    color: white;
  }

  .day-picker {
    margin-top: 6px;
    display: flex;
    gap: 3px;
    flex-wrap: wrap;
    animation: dropIn 0.2s ease;
  }
  .day-picker-chip {
    padding: 4px 8px;
    background: white;
    border: 1.5px solid #BBDEFB;
    border-radius: 12px;
    font-size: 10px;
    cursor: pointer;
    font-family: inherit;
    color: #0D47A1;
    font-weight: 600;
    transition: all 0.15s;
  }
  .day-picker-chip:hover {
    background: #1976D2;
    color: white;
    border-color: #1976D2;
  }
  .day-picker-chip.today {
    background: #FFE0B2;
    border-color: #FF6F00;
    color: #BF360C;
  }

  /* 分工 chip */
  .planner-roles {
    display: flex;
    align-items: center;
    gap: 8px;
    flex-wrap: wrap;
    font-size: 12px;
    color: #0D47A1;
    margin-bottom: 12px;
    padding: 8px 12px;
    background: rgba(255,255,255,0.6);
    border-radius: 10px;
  }
  .role-badge {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    padding: 2px 8px;
    border-radius: 10px;
    font-size: 12px;
    font-weight: 600;
  }
  .role-badge.role-A { background: #BBDEFB; color: #0D47A1; }
  .role-badge.role-B { background: #F8BBD0; color: #880E4F; }
  .role-badge.role-both { background: #E1BEE7; color: #4A148C; }
  .role-edit-btn {
    background: none;
    border: 1px dashed #1976D2;
    color: #1976D2;
    padding: 2px 8px;
    border-radius: 8px;
    font-size: 11px;
    cursor: pointer;
    font-family: inherit;
  }

  .day-assign-chip {
    display: block;
    margin: 3px auto 0;
    padding: 2px 6px;
    border-radius: 8px;
    font-size: 10px;
    font-weight: 700;
    cursor: pointer;
    border: 1px solid transparent;
    transition: all 0.15s;
    width: fit-content;
  }
  .day-assign-chip.assign-A { background: #BBDEFB; color: #0D47A1; }
  .day-assign-chip.assign-B { background: #F8BBD0; color: #880E4F; }
  .day-assign-chip.assign-both { background: #E1BEE7; color: #4A148C; }
  .day-assign-chip.assign-none { background: rgba(255,255,255,0.7); color: #999; border-color: #ddd; }
  .day-assign-chip:hover { transform: scale(1.05); }

  /* 清单的人员过滤 chip */
  .shop-person-filter {
    margin-top: 8px;
    display: flex;
    gap: 6px;
    flex-wrap: wrap;
    font-size: 12px;
    color: var(--text-light);
    align-items: center;
  }
  .person-chip {
    padding: 4px 10px;
    border: 1px solid var(--border);
    background: white;
    border-radius: 12px;
    cursor: pointer;
    font-family: inherit;
    font-size: 11px;
    transition: all 0.15s;
  }
  .person-chip.active { background: var(--primary); color: white; border-color: var(--primary); }

  /* 本周菜单规划器 */
  .planner-box {
    background: linear-gradient(135deg, #E3F2FD 0%, #BBDEFB 100%);
    border-radius: 20px;
    padding: 18px 20px;
    margin-bottom: 24px;
    border: 2px dashed #1976D2;
    position: relative;
    overflow: hidden;
  }
  .planner-box::before {
    content: "📅";
    position: absolute;
    top: -20px; right: -10px;
    font-size: 140px;
    opacity: 0.1;
    transform: rotate(15deg);
    pointer-events: none;
  }
  .planner-header {
    display: flex;
    justify-content: space-between;
    align-items: flex-start;
    flex-wrap: wrap;
    gap: 12px;
    margin-bottom: 16px;
    position: relative;
  }
  .planner-header h2 {
    font-size: 22px;
    color: #0D47A1;
    font-family: "STKaiti", "KaiTi", "楷体", serif;
    letter-spacing: 2px;
    margin-bottom: 4px;
  }
  .planner-header p {
    font-size: 13px;
    color: #1565C0;
  }
  .planner-actions {
    display: flex;
    gap: 8px;
    flex-wrap: wrap;
  }
  .planner-btn {
    padding: 9px 16px;
    background: white;
    border: 1.5px solid #1976D2;
    border-radius: 10px;
    color: #1976D2;
    font-family: inherit;
    font-size: 14px;
    font-weight: 600;
    cursor: pointer;
    transition: all 0.2s;
  }
  .planner-btn:hover { background: #1976D2; color: white; }
  .planner-btn.primary {
    background: linear-gradient(135deg, #1976D2 0%, #0D47A1 100%);
    color: white;
    border-color: #0D47A1;
  }
  .planner-btn.primary:hover { transform: translateY(-1px); box-shadow: 0 4px 12px rgba(13, 71, 161, 0.4); }
  .planner-btn.danger {
    border-color: #C62828;
    color: #C62828;
  }
  .planner-btn.danger:hover {
    background: #C62828;
    color: white;
    box-shadow: 0 4px 12px rgba(198, 40, 40, 0.3);
  }
  /* 🎲 智能配整周:最显眼的 CTA(品牌红渐变 + 放大 + 呼吸光晕)*/
  .planner-btn.cta {
    background: linear-gradient(135deg, #E25438 0%, #B11D1D 100%);
    color: white;
    border: 1.5px solid #B11D1D;
    padding: 11px 22px;
    font-size: 15px;
    font-weight: 700;
    letter-spacing: 1px;
    box-shadow: 0 4px 16px rgba(157, 2, 8, 0.28);
    position: relative;
    animation: ctaPulse 2.4s ease-in-out infinite;
  }
  .planner-btn.cta:hover {
    background: linear-gradient(135deg, #D04428 0%, #9A1818 100%);
    color: white;
    transform: translateY(-2px);
    box-shadow: 0 8px 22px rgba(157, 2, 8, 0.42);
    animation: none;
  }
  @keyframes ctaPulse {
    0%, 100% { box-shadow: 0 4px 16px rgba(157, 2, 8, 0.28); }
    50%      { box-shadow: 0 6px 22px rgba(226, 84, 56, 0.55), 0 0 0 4px rgba(226, 84, 56, 0.10); }
  }

  .week-grid {
    display: grid;
    grid-template-columns: 56px repeat(7, 1fr);
    /* 行高按餐分档锁死:首行表头 auto / 早餐 88px(2 道)/ 午 132px / 晚 132px(3 道) */
    grid-template-rows: auto 88px 132px 132px;
    grid-auto-flow: row;       /* 默认也是 row,显式写防御 */
    direction: ltr;            /* 强制 LTR,防外层 rtl 污染 */
    gap: 3px;
    background: rgba(255,255,255,0.4);
    padding: 6px;
    border-radius: 12px;
    overflow-x: auto;
  }
  .week-grid > * { min-width: 0; min-height: 0; }
  /* 每个 cell 锁死 100% 行高,内容再多也不能撑大 */
  .week-grid > .week-slot,
  .week-grid > .week-row-label,
  .week-grid > .week-cell-header {
    height: 100%;
    box-sizing: border-box;
    overflow: hidden;
  }
  .week-cell-header {
    text-align: center;
    font-size: 14px;
    font-weight: 700;
    color: #0D47A1;
    padding: 6px 3px;
    background: rgba(255,255,255,0.7);
    border-radius: 6px;
  }
  /* 每日表头的复制/粘贴/清空 mini 按钮 */
  .day-mini-actions {
    display: inline-flex;
    gap: 3px;
    margin-left: 4px;
    vertical-align: middle;
  }
  .day-mini-btn {
    background: rgba(255,255,255,0.7);
    border: 1px solid var(--border);
    border-radius: 6px;
    padding: 1px 5px;
    font-size: 12px;
    line-height: 1.2;
    cursor: pointer;
    font-family: inherit;
    transition: background 0.15s, transform 0.1s;
  }
  .day-mini-btn:hover { background: rgba(157,2,8,0.10); transform: scale(1.1); }
  .day-mini-btn.paste { border-color: var(--primary); background: rgba(157,2,8,0.10); }
  .day-mini-btn.danger:hover { background: rgba(198,40,40,0.15); border-color: #C62828; }

  .week-cell-header .date {
    display: block;
    font-size: 11px;
    color: #1565C0;
    font-weight: 400;
    margin-top: 1px;
  }
  .week-row-label {
    text-align: center;
    font-size: 16px;
    color: #0D47A1;
    padding: 6px 3px;
    background: rgba(255,255,255,0.7);
    border-radius: 6px;
    display: flex;
    align-items: center;
    justify-content: center;
    font-weight: 700;
    line-height: 1.3;
  }
  .week-slot {
    /* 高度由父级 grid-template-rows 决定,这里不设 min-height,避免内容把行撑高 */
    background: rgba(255,255,255,0.85);
    border: 2px dashed rgba(13, 71, 161, 0.2);
    border-radius: 8px;
    padding: 4px;
    display: flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
    transition: all 0.15s;
    font-size: 13px;
    color: #999;
    text-align: center;
    position: relative;
    overflow: hidden;
  }
  .week-slot:hover {
    border-color: #1976D2;
    background: rgba(255,255,255,1);
  }
  .week-slot.empty {
    border: 1px dashed rgba(13, 71, 161, 0.18);
    background: rgba(255,255,255,0.5);
  }
  /* ===== 🧽 谁洗碗 mini-game(放在盲盒下,视觉和盲盒对齐)===== */
  .dish-duty-box {
    margin-top: 24px;
    padding: 28px;
    background: #FCF3E1;
    border: 1px solid var(--border);
    border-radius: 20px;
    position: relative;
    overflow: hidden;
  }
  .dish-duty-box::before {
    content: "🧽";
    position: absolute;
    top: -20px; right: -10px;
    font-size: 140px;
    opacity: 0.06;
    transform: rotate(-15deg);
    pointer-events: none;
  }
  .dish-duty-head {
    margin-bottom: 18px;
    cursor: pointer;
    user-select: none;
  }
  /* 折叠态:藏掉除 head 之外的内容,head 自身也压扁,标题上下间距对称 */
  section.dish-duty-box.dd-collapsed > *:not(.dish-duty-head) { display: none; }
  section.dish-duty-box.dd-collapsed .dish-duty-head { margin-bottom: 0; }
  section.dish-duty-box.dd-collapsed .dish-duty-head p { display: none; }
  section.dish-duty-box.dd-collapsed { padding: 14px 20px !important; }
  section.dish-duty-box.dd-collapsed .dish-duty-head h2 { margin-bottom: 0 !important; }
  /* ▸ / ▾ 箭头:折叠时朝右,展开时朝下 */
  .dd-chevron {
    display: inline-block;
    font-size: 14px;
    margin-left: 8px;
    color: var(--text-light);
    transition: transform 0.15s;
  }
  section.dish-duty-box:not(.dd-collapsed) .dd-chevron { transform: rotate(90deg); }
  .dish-duty-head h2 {
    font-size: 22px;
    color: var(--primary-dark);
    font-family: "STKaiti","KaiTi",serif;
    letter-spacing: 2px;
    margin-bottom: 4px;
  }
  .dish-duty-head p { font-size: 13px; color: var(--text-light); }
  .dish-duty-members {
    display: flex; gap: 8px; flex-wrap: wrap;
    margin: 12px 0;
  }
  .dd-member {
    padding: 7px 14px;
    border-radius: 12px;
    background: rgba(255,255,255,0.75);
    border: 1.5px solid var(--border);
    font-size: 14px;
    font-weight: 600;
    cursor: pointer;
    transition: all 0.15s;
    color: var(--text);
    font-family: inherit;
    display: inline-flex; align-items: center; gap: 5px;
  }
  .dd-member.in {
    background: rgba(157,2,8,0.08);
    border-color: rgba(157,2,8,0.35);
    color: var(--primary-dark);
  }
  .dd-member.out { opacity: 0.4; text-decoration: line-through; }
  .dd-member.dd-add {
    background: rgba(255,255,255,0.5);
    border: 1.5px dashed rgba(157,2,8,0.35);
    color: var(--primary-dark);
    font-weight: 700;
  }
  .dd-member.dd-add:hover { background: rgba(157,2,8,0.06); }
  .dd-hint { font-size: 12px; color: var(--text-light); align-self: center; margin-left: 4px; }
  /* 成员标签 + 删除按钮的容器 */
  .dd-member-wrap { position: relative; display: inline-flex; align-items: stretch; }
  .dd-del {
    background: rgba(157,2,8,0.85);
    color: white;
    border: 1.5px solid white;
    width: 18px; height: 18px;
    border-radius: 50%;
    font-size: 11px;
    line-height: 1;
    cursor: pointer;
    padding: 0;
    position: absolute;
    top: -6px;
    right: -6px;
    z-index: 2;
    display: flex;
    align-items: center;
    justify-content: center;
    box-shadow: 0 1px 4px rgba(0,0,0,0.2);
    font-family: inherit;
    font-weight: 700;
  }
  .dd-del:hover { background: rgba(157,2,8,1); transform: scale(1.1); }
  .dd-member.dd-edit {
    background: rgba(255,255,255,0.6);
    border: 1.5px dashed rgba(99,99,99,0.4);
    color: var(--text-light);
    font-weight: 600;
  }
  .dd-member.dd-edit.on {
    background: rgba(157,2,8,0.12);
    border-color: rgba(157,2,8,0.5);
    color: var(--primary-dark);
  }
  /* 加人 / 管理 比常规人名标签略小一些(辅助性按钮) */
  .dd-member.dd-add,
  .dd-member.dd-edit {
    padding: 5px 10px;
    font-size: 12px;
  }
  /* 大按钮:照搬 .lucky-main-btn 的样式 */
  .dish-duty-btn {
    width: 100%;
    background: #FFFFFF;
    color: var(--primary-dark);
    border: 1px solid var(--border);
    padding: 22px 28px;
    border-radius: 16px;
    font-size: 20px;
    font-weight: 700;
    cursor: pointer;
    font-family: inherit;
    letter-spacing: 2px;
    transition: background 0.2s, box-shadow 0.2s, transform 0.15s;
    box-shadow: 0 2px 10px rgba(74, 44, 15, 0.08);
    position: relative;
  }
  .dish-duty-btn:hover { transform: translateY(-2px); background: #FFFBF3; box-shadow: 0 6px 18px rgba(74, 44, 15, 0.14); }
  .dish-duty-btn.spinning { animation: shake 0.15s ease-in-out infinite; pointer-events: none; }
  .dish-duty-result {
    margin-top: 16px;
    min-height: 36px;
    text-align: center;
    font-size: 20px;
    font-weight: 700;
    color: var(--primary-dark);
    letter-spacing: 1px;
  }
  .dish-duty-result.spin { font-size: 16px; opacity: 0.7; }
  .dish-duty-result .ddr-winner { font-size: 28px; }
  .dish-duty-stats {
    margin-top: 12px;
    font-size: 12px;
    color: var(--text-light);
    display: flex; gap: 16px; justify-content: center; flex-wrap: wrap;
  }
  .dish-duty-stats .dd-stat-clear {
    background: none; border: none; color: var(--text-light);
    font-size: 12px; cursor: pointer; text-decoration: underline; font-family: inherit;
  }

  /* 早午晚三餐统一格子大小,不再矮一档(避免行高跳变看着乱)*/
  .week-slot.empty:hover {
    border-color: rgba(13, 71, 161, 0.5);
    background: rgba(255,255,255,1);
  }
  .slot-plus {
    font-size: 26px;
    color: rgba(13, 71, 161, 0.35);
    font-weight: 300;
    line-height: 1;
    transition: color 0.15s, transform 0.15s;
  }
  .week-slot.empty:hover .slot-plus {
    color: #1976D2;
    transform: scale(1.15);
  }
  .week-slot.drag-over {
    border-color: #1976D2;
    background: #BBDEFB;
    border-style: solid;
  }
  .week-slot.filled {
    border-style: solid;
    border-color: transparent;
    padding: 0;
    overflow: hidden;
  }
  .slot-recipe {
    width: 100%;
    height: 100%;
    min-height: 112px;
    padding: 14px 10px;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    text-align: center;
    color: var(--text);
    cursor: grab;
    position: relative;
  }
  .slot-recipe:active { cursor: grabbing; }
  .slot-recipe .icon {
    font-size: 40px;
    line-height: 1;
    margin-bottom: 7px;
  }
  .slot-recipe .name {
    font-size: 14px;
    font-weight: 700;
    line-height: 1.3;
    word-break: break-word;
  }
  .slot-remove {
    position: absolute;
    top: 2px; right: 4px;
    background: rgba(0,0,0,0.4);
    border: none;
    color: white;
    width: 18px; height: 18px;
    border-radius: 50%;
    font-size: 11px;
    line-height: 1;
    cursor: pointer;
    display: none;
  }
  .week-slot.filled:hover .slot-remove { display: block; }

  /* 一餐多道菜 */
  .week-slot.filled-multi {
    padding: 4px;
    background: rgba(255,255,255,0.95);
    align-items: stretch;
    border-style: solid;
    border-color: rgba(13, 71, 161, 0.15);
  }

  /* 用 CSS Grid 固定子槽位置 —— 加菜 / 减菜不会再让已有的菜变高变矮 */
  .slot-stack {
    width: 100%;
    height: 100%;
    display: grid;
    gap: 3px;
  }
  /* 早餐永远 2 个固定子槽位 */
  .week-slot.meal-breakfast .slot-stack {
    grid-template-rows: 1fr 1fr;
  }
  /* 午晚永远 3 个固定子槽位 */
  .week-slot.meal-lunch .slot-stack,
  .week-slot.meal-dinner .slot-stack {
    grid-template-rows: 1fr 1fr 1fr;
  }
  /* 让菜片在自己的 grid row 内填满,不再用 min-height 撑行高 */
  .slot-recipe-mini {
    padding: 0 6px;
    border-radius: 5px;
    color: var(--text);
    cursor: grab;
    display: flex;
    align-items: center;
    gap: 5px;
    position: relative;
    min-width: 0;            /* ❗ 关键:让自身能被父 grid 列宽限制住 */
    min-height: 0;
    align-self: stretch;
    overflow: hidden;
  }

  .slot-recipe-mini:active { cursor: grabbing; }

  .slot-recipe-mini .mini-icon {
    /* 字号跟 plannerZoom 同比缩放(1x=13 / 2x=26 / 4x=52) */
    font-size: calc(13px * var(--planner-scale, 1));
    line-height: 1;
    flex-shrink: 0;
  }

  .slot-recipe-mini .mini-name {
    font-size: calc(11px * var(--planner-scale, 1));
    font-weight: 700;
    line-height: 1.1;
    flex: 1 1 auto;
    min-width: 0;            /* ❗ flex 子项要明确允许 shrink 才能省略号 */
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
  }
  /* 早餐 chip 跟午晚 chip 同尺寸(33px 高,字 11px,通用规则覆盖) */

  .mini-remove {
    background: rgba(0,0,0,0.35);
    border: none;
    color: white;
    width: 14px; height: 14px;
    border-radius: 50%;
    font-size: 9px;
    line-height: 1;
    cursor: pointer;
    flex-shrink: 0;
    padding: 0;
    display: none;
  }
  .slot-recipe-mini:hover .mini-remove { display: block; }

  /* 格子里没装满时的「+ 加菜」细横条 —— 高度 22px 由父 grid 锁死,横向铺满 */
  .slot-add-row {
    width: 100%;
    box-sizing: border-box;
    background: rgba(255,255,255,0.5);
    border: 1px dashed rgba(157, 2, 8, 0.3);
    border-radius: 5px;
    color: var(--primary-dark);
    font-size: 11px;
    font-weight: 600;
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: 0;
    padding: 0 8px;
    line-height: 1;
    transition: background 0.15s, border-color 0.15s;
    align-self: stretch;
    justify-self: stretch;
  }
  .slot-add-row:hover { background: rgba(157, 2, 8, 0.10); border-color: var(--primary); }

  .slot-add-more {
    background: rgba(13, 71, 161, 0.08);
    border: 1px dashed rgba(13, 71, 161, 0.3);
    color: #1976D2;
    border-radius: 6px;
    padding: 2px;
    font-size: 12px;
    font-weight: 700;
    cursor: pointer;
    font-family: inherit;
    min-height: 18px;
    line-height: 1;
  }
  .slot-add-more:hover { background: #1976D2; color: white; border-color: #1976D2; }

  /* 菜单池(顶部可滚动横向) */
  .recipe-pool {
    background: rgba(255,255,255,0.7);
    border-radius: 12px;
    padding: 12px;
    margin-bottom: 14px;
  }
  .pool-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 10px;
    flex-wrap: wrap;
    gap: 8px;
  }
  .pool-search {
    padding: 6px 12px;
    border: 1.5px solid #BBDEFB;
    border-radius: 16px;
    font-family: inherit;
    font-size: 13px;
    outline: none;
    width: 180px;
    background: white;
  }
  .pool-search:focus { border-color: #1976D2; }
  .pool-scroll {
    display: flex;
    gap: 8px;
    overflow-x: auto;
    padding: 4px 2px 10px;
    scroll-behavior: smooth;
  }
  .pool-card {
    flex: 0 0 110px;
    height: 90px;
    border-radius: 10px;
    overflow: hidden;
    cursor: grab;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    color: white;
    text-shadow: 0 1px 3px rgba(0,0,0,0.4);
    text-align: center;
    padding: 6px 4px;
    user-select: none;
    transition: transform 0.15s;
  }
  .pool-card:hover { transform: scale(1.05); }
  .pool-card:active { cursor: grabbing; opacity: 0.7; }
  .pool-card.dragging { opacity: 0.4; }
  .pool-card .icon { font-size: 26px; line-height: 1; margin-bottom: 5px; }
  .pool-card .name { font-size: 12px; font-weight: 700; line-height: 1.2; word-break: break-word; }

  /* 选菜 modal */
  .picker-modal {
    background: var(--bg);
    border-radius: 20px;
    width: 100%;
    max-width: 600px;
    max-height: 80vh;
    overflow: hidden;
    display: flex;
    flex-direction: column;
    animation: slideUp 0.3s ease;
  }
  .picker-header {
    padding: 18px 22px;
    background: linear-gradient(135deg, #1976D2 0%, #0D47A1 100%);
    color: white;
    position: relative;
  }
  .picker-header h3 { font-size: 18px; margin-bottom: 4px; }
  .picker-header p { font-size: 12px; opacity: 0.9; }
  .picker-search {
    width: calc(100% - 30px);
    padding: 8px 14px;
    margin: 10px 15px 0;
    border: none;
    border-radius: 8px;
    font-family: inherit;
    font-size: 14px;
    outline: none;
  }
  .picker-body {
    flex: 1;
    overflow-y: auto;
    padding: 12px;
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(120px, 1fr));
    gap: 8px;
  }
  .picker-card {
    background: white;
    border-radius: 10px;
    cursor: pointer;
    padding: 12px 8px;
    text-align: center;
    transition: transform 0.15s, box-shadow 0.15s;
    border: 1.5px solid var(--border);
  }
  .picker-card:hover {
    transform: translateY(-2px);
    box-shadow: 0 4px 12px rgba(25, 118, 210, 0.2);
    border-color: #1976D2;
  }
  .picker-card .icon { font-size: 28px; display: block; margin-bottom: 4px; }
  .picker-card .name { font-size: 12px; font-weight: 600; color: var(--text); }
  .picker-card .cat { font-size: 10px; color: var(--text-light); margin-top: 2px; }

  /* 采购清单弹窗 */
  .shopping-btn {
    margin-top: 12px;
    width: 100%;
    background: #FFFFFF;
    color: var(--primary-dark);
    border: 1px solid var(--border);
    padding: 12px 20px;
    border-radius: 12px;
    font-size: 15px;
    font-weight: 600;
    cursor: pointer;
    font-family: inherit;
    letter-spacing: 1px;
    transition: transform 0.15s, background 0.2s, box-shadow 0.2s;
    box-shadow: 0 2px 10px rgba(74, 44, 15, 0.08);
  }
  .shopping-btn:hover { transform: translateY(-2px); background: #FFFBF3; box-shadow: 0 6px 18px rgba(74, 44, 15, 0.14); }
  /* 套餐塞日历按钮:更次一级 —— 不带阴影,只描边 */
  .shopping-btn.secondary { background: white; color: var(--primary-dark); border: 1px solid var(--border); box-shadow: none; }
  .shopping-btn.secondary:hover { background: #FBF3E4; box-shadow: none; }

  .shopping-modal {
    background: var(--bg);
    border-radius: 20px;
    max-width: 720px;
    width: 100%;
    overflow: hidden;
    box-shadow: 0 20px 60px rgba(0,0,0,0.3);
    animation: slideUp 0.3s ease;
  }

  .shopping-header {
    padding: 24px 28px;
    background: linear-gradient(135deg, #1976D2 0%, #0D47A1 100%);
    color: white;
    position: relative;
  }
  .shopping-header h2 {
    font-size: 22px;
    font-family: "STKaiti", "KaiTi", "楷体", serif;
    letter-spacing: 2px;
    margin-bottom: 4px;
  }
  .shopping-header p { font-size: 13px; opacity: 0.9; }

  .shopping-body {
    padding: 24px 28px;
    max-height: 60vh;
    overflow-y: auto;
  }

  .shopping-group {
    margin-bottom: 20px;
  }

  .shopping-group-title {
    font-size: 14px;
    font-weight: 700;
    color: var(--text);
    margin-bottom: 0;
    padding: 8px 12px;
    border-radius: 8px;
    display: flex;
    align-items: center;
    gap: 6px;
    width: 100%;
    border: none;
    cursor: pointer;
    font-family: inherit;
    text-align: left;
  }
  .shopping-group-title .sg-arrow { margin-left: auto; font-size: 11px; opacity: 0.6; }
  .shopping-group-items { padding-top: 6px; }

  .group-mainstream { background: #E8F5E9; color: #2E7D32; }
  .group-chinese { background: #FFEBEE; color: #C62828; }
  .group-online { background: #E3F2FD; color: #1565C0; }
  .group-other { background: #F5F5F5; color: #616161; }

  /* 按天过滤 chips */
  .shop-day-chips { display: flex; gap: 6px; flex-wrap: wrap; padding: 10px 0 4px; }
  .shop-day-chip { padding: 4px 12px; border-radius: 16px; border: 1.5px solid var(--border); background: white; font-size: 12px; font-weight: 600; font-family: inherit; cursor: pointer; color: var(--text-light); }
  .shop-day-chip.active { border-color: var(--rs-red); background: var(--rs-red); color: white; }

  .shopping-item {
    display: flex;
    align-items: flex-start;
    gap: 10px;
    padding: 10px 12px;
    background: white;
    border-radius: 8px;
    margin-bottom: 6px;
    border-left: 3px solid var(--border);
    transition: opacity 0.2s;
  }

  .shopping-item.checked {
    opacity: 0.5;
    text-decoration: line-through;
  }

  .shopping-item .checkbox {
    margin-top: 3px;
    cursor: pointer;
    accent-color: var(--primary);
    width: 18px; height: 18px;
    flex-shrink: 0;
  }

  .shopping-item-content {
    flex: 1;
    min-width: 0;
  }

  .shopping-item-name {
    font-size: 14px;
    color: var(--text);
    font-weight: 500;
    display: block;
  }

  .shopping-item-source {
    font-size: 11px;
    color: var(--text-light);
    display: block;
    margin-top: 2px;
  }

  .shopping-item-en {
    font-size: 11px;
    color: var(--primary);
    margin-left: 4px;
  }

  .shopping-item-remove {
    background: none;
    border: none;
    color: var(--text-light);
    cursor: pointer;
    padding: 0 6px;
    font-size: 16px;
    line-height: 1;
    flex-shrink: 0;
  }
  .shopping-item-remove:hover { color: #C62828; }

  .shop-links {
    display: flex;
    gap: 4px;
    flex-wrap: wrap;
    margin-top: 6px;
  }

  .shop-link {
    display: inline-flex;
    align-items: center;
    gap: 3px;
    padding: 3px 9px;
    border-radius: 6px;
    font-size: 11px;
    font-weight: 600;
    text-decoration: none;
    color: white;
    transition: transform 0.1s, box-shadow 0.15s;
    border: none;
    cursor: pointer;
    font-family: inherit;
  }

  .shop-link:hover {
    transform: translateY(-1px);
    box-shadow: 0 3px 8px rgba(0,0,0,0.15);
  }

  .shop-link.tesco { background: #EE2722; }
  .shop-link.sainsburys { background: #FF8200; }
  .shop-link.asda { background: #7DC242; }
  .shop-link.morrisons { background: #00833D; }
  .shop-link.amazon { background: #FF9900; color: #000; }
  .shop-link.starrymart { background: #C62828; }
  .shop-link.loonfung { background: #B71C1C; }
  .shop-link.wingyip { background: #B53931; }
  .shop-link.orientalmart { background: #8B0000; }
  .shop-link.seewoo { background: #C2185B; }
  .shop-link.yamibuy { background: #6A1B9A; }
  .shop-link.trolley { background: #2E7D32; }

  .shopping-footer {
    padding: 16px 28px;
    background: white;
    border-top: 1px solid var(--border);
    display: flex;
    gap: 10px;
    flex-wrap: wrap;
    justify-content: space-between;
    align-items: center;
  }

  .shopping-stats {
    font-size: 13px;
    color: var(--text-light);
  }
  .shopping-stats strong { color: var(--primary-dark); }

  .shopping-actions {
    display: flex;
    gap: 8px;
  }

  .shopping-action-btn {
    background: white;
    border: 1.5px solid var(--border);
    padding: 8px 14px;
    border-radius: 8px;
    cursor: pointer;
    font-size: 13px;
    font-family: inherit;
    color: var(--text);
    transition: all 0.2s;
  }
  .shopping-action-btn:hover {
    border-color: var(--primary);
    color: var(--primary);
  }
  .shopping-action-btn.primary {
    background: var(--primary);
    color: white;
    border-color: var(--primary);
  }
  .shopping-action-btn.primary:hover {
    background: var(--primary-dark);
    color: white;
  }

  @media print {
    body * { visibility: hidden; }
    .shopping-modal, .shopping-modal * { visibility: visible; }
    .shopping-modal { position: absolute; left: 0; top: 0; box-shadow: none; }
    .shopping-footer, .modal-close, .shop-selector, .open-all-btn { display: none !important; }
  }

  .shop-selector {
    background: white;
    padding: 14px 16px;
    border-radius: 10px;
    margin-bottom: 16px;
    border: 1.5px solid var(--border);
  }

  .shop-selector-label {
    font-size: 13px;
    color: var(--text-light);
    margin-bottom: 8px;
    font-weight: 600;
  }

  .shop-chips {
    display: flex;
    gap: 6px;
    flex-wrap: wrap;
  }

  .shop-chip {
    padding: 6px 12px;
    border: 1.5px solid var(--border);
    background: white;
    border-radius: 18px;
    font-size: 12px;
    cursor: pointer;
    font-family: inherit;
    transition: all 0.2s;
    color: var(--text);
    display: inline-flex;
    align-items: center;
    gap: 4px;
    font-weight: 500;
  }

  .shop-chip:hover { border-color: var(--primary); color: var(--primary); }
  .shop-chip.active {
    background: var(--primary);
    color: white;
    border-color: var(--primary);
    box-shadow: 0 2px 8px rgba(232, 93, 4, 0.25);
  }
  .shop-chip.active.tesco-active { background: #EE2722; border-color: #EE2722; }
  .shop-chip.active.sainsburys-active { background: #FF8200; border-color: #FF8200; }
  .shop-chip.active.amazon-active { background: #FF9900; border-color: #FF9900; color: #000; }

  .open-all-btn {
    display: block;
    width: 100%;
    margin-top: 10px;
    padding: 10px;
    background: linear-gradient(135deg, #1976D2 0%, #0D47A1 100%);
    color: white;
    border: none;
    border-radius: 8px;
    font-size: 13px;
    font-weight: 600;
    cursor: pointer;
    font-family: inherit;
  }
  .open-all-btn:hover { transform: translateY(-1px); box-shadow: 0 4px 12px rgba(25, 118, 210, 0.3); }

  /* 小用量调料折叠区 */
  .minor-section {
    margin-top: 16px;
    border: 1.5px dashed var(--border);
    border-radius: 10px;
    background: rgba(244, 140, 6, 0.05);
    overflow: hidden;
  }

  .minor-toggle {
    width: 100%;
    padding: 10px 14px;
    background: transparent;
    border: none;
    font-family: inherit;
    cursor: pointer;
    font-size: 13px;
    color: var(--text);
    text-align: left;
    display: flex;
    justify-content: space-between;
    align-items: center;
    font-weight: 600;
  }

  .minor-toggle:hover { background: rgba(244, 140, 6, 0.1); }

  .minor-content {
    padding: 0 14px 14px;
    display: none;
  }

  .minor-section.expanded .minor-content { display: block; }
  .minor-section.expanded .toggle-arrow { transform: rotate(180deg); }

  .toggle-arrow { transition: transform 0.2s; }

  /* 我的厨房笔记 */
  .notes-section {
    margin-top: 24px;
    padding-top: 20px;
    border-top: 2px dashed var(--border);
  }

  .notes-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-bottom: 14px;
    gap: 12px;
  }

  .notes-header h3 {
    font-size: 16px;
    color: var(--primary-dark);
    border: none;
    padding: 0;
    margin: 0;
  }

  .notes-count {
    background: var(--accent);
    color: white;
    font-size: 11px;
    padding: 2px 8px;
    border-radius: 10px;
    font-weight: 600;
  }

  .notes-list {
    display: flex;
    flex-direction: column;
    gap: 10px;
    margin-bottom: 18px;
  }

  .notes-empty {
    text-align: center;
    color: var(--text-light);
    font-size: 13px;
    padding: 18px;
    background: rgba(255, 243, 214, 0.5);
    border-radius: 10px;
    border: 1px dashed var(--border);
  }

  .note-card {
    background: white;
    border-radius: 10px;
    padding: 12px 14px;
    border-left: 3px solid var(--accent);
    position: relative;
  }

  .note-card-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-bottom: 8px;
    flex-wrap: wrap;
    gap: 8px;
  }

  .note-stars {
    font-size: 15px;
    letter-spacing: 1px;
  }

  .note-stars .filled { color: #FFB300; }
  .note-stars .empty { color: #DDD; }

  .note-date {
    font-size: 11px;
    color: var(--text-light);
  }

  .note-delete {
    background: none;
    border: none;
    color: var(--text-light);
    cursor: pointer;
    font-size: 16px;
    padding: 0 4px;
    line-height: 1;
    transition: color 0.2s;
  }

  .note-delete:hover { color: var(--primary-dark); }

  .note-like-btn {
    background: rgba(255,255,255,0.7);
    border: 1.5px solid var(--border);
    color: var(--text);
    cursor: pointer;
    font-size: 13px;
    padding: 3px 10px;
    border-radius: 12px;
    font-family: inherit;
    transition: all 0.2s;
    display: inline-flex;
    align-items: center;
    gap: 4px;
  }

  .note-like-btn:hover {
    border-color: #e91e63;
    color: #e91e63;
  }

  .note-like-btn.liked {
    background: #FCE4EC;
    border-color: #e91e63;
    color: #e91e63;
  }

  .note-like-btn.liked .heart { animation: heartBeat 0.4s ease; }

  @keyframes heartBeat {
    0%, 100% { transform: scale(1); }
    25% { transform: scale(1.4); }
    50% { transform: scale(0.95); }
    75% { transform: scale(1.2); }
  }

  .cover-credit {
    position: absolute;
    bottom: 8px; left: 8px;
    background: rgba(0,0,0,0.55);
    color: white;
    font-size: 10px;
    padding: 2px 8px;
    border-radius: 10px;
    z-index: 2;
    display: inline-flex;
    align-items: center;
    gap: 3px;
    backdrop-filter: blur(4px);
  }

  .note-comment {
    font-size: 14px;
    line-height: 1.6;
    color: var(--text);
    white-space: pre-wrap;
    word-break: break-word;
  }

  .note-photo {
    margin-top: 8px;
    max-width: 100%;
    max-height: 240px;
    border-radius: 8px;
    cursor: pointer;
    transition: transform 0.2s;
    display: block;
  }

  .note-photo:hover { transform: scale(1.02); }

  /* 添加笔记表单 */
  .note-form {
    background: rgba(255, 243, 214, 0.45);
    border-radius: 12px;
    padding: 14px 16px;
    border: 1.5px dashed var(--accent);
  }

  .note-form h4 {
    font-size: 14px;
    color: var(--primary-dark);
    margin-bottom: 10px;
  }

  .rating-input {
    display: flex;
    align-items: center;
    gap: 10px;
    margin-bottom: 10px;
  }

  .rating-input .label-text {
    font-size: 13px;
    color: var(--text-light);
  }

  .star-picker {
    display: inline-flex;
    gap: 3px;
    font-size: 22px;
    line-height: 1;
    cursor: pointer;
    user-select: none;
  }

  .star-picker .star {
    color: #DDD;
    transition: color 0.1s, transform 0.1s;
  }

  .star-picker .star.active { color: #FFB300; }
  .star-picker .star:hover { transform: scale(1.2); }

  .rating-input .rating-text {
    font-size: 12px;
    color: var(--text-light);
    margin-left: 6px;
  }

  .note-textarea {
    width: 100%;
    min-height: 60px;
    padding: 8px 12px;
    border: 1.5px solid var(--border);
    border-radius: 8px;
    font-family: inherit;
    font-size: 14px;
    resize: vertical;
    outline: none;
    background: white;
    margin-bottom: 10px;
  }

  .note-textarea:focus { border-color: var(--primary); }

  .photo-input-row {
    display: flex;
    align-items: center;
    gap: 10px;
    margin-bottom: 10px;
    flex-wrap: wrap;
  }

  .photo-input-label {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    background: white;
    padding: 6px 12px;
    border-radius: 8px;
    cursor: pointer;
    font-size: 13px;
    border: 1.5px solid var(--border);
    transition: all 0.2s;
  }

  .photo-input-label:hover { border-color: var(--primary); color: var(--primary); }
  .photo-input-label input { display: none; }

  /* 新版:文字 + 菜照在同一个框里编辑 */
  .note-input-box {
    border: 1.5px solid var(--border);
    border-radius: 10px;
    background: white;
    overflow: hidden;
    transition: border-color 0.15s;
  }
  .note-input-box:focus-within { border-color: var(--primary); }
  .note-textarea-flush {
    width: 100%;
    min-height: 80px;
    padding: 10px 12px;
    border: none !important;
    border-radius: 0 !important;
    margin-bottom: 0 !important;
    background: transparent !important;
    resize: vertical;
    outline: none;
    font-family: inherit;
    font-size: 14px;
    box-sizing: border-box;
  }
  .note-photo-zone {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 8px 12px;
    border-top: 1px dashed var(--border);
    background: #FBF8F2;
    flex-wrap: wrap;
  }
  .note-photo-preview { display: inline-flex; align-items: center; }
  .note-photo-preview img {
    width: 56px; height: 56px; object-fit: cover; border-radius: 6px;
    border: 1px solid var(--border);
  }
  .note-photo-btn {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    padding: 5px 10px;
    border-radius: 6px;
    border: 1px solid var(--border);
    background: white;
    cursor: pointer;
    font-size: 12px;
    color: var(--text);
    transition: all 0.15s;
  }
  .note-photo-btn:hover { border-color: var(--primary); color: var(--primary); }
  .note-photo-btn input { display: none; }
  .note-photo-hint { font-size: 11px; color: var(--text-light); }

  .photo-preview {
    display: inline-block;
    position: relative;
  }

  .photo-preview img {
    max-height: 60px;
    max-width: 80px;
    border-radius: 6px;
    object-fit: cover;
  }

  .photo-preview .remove {
    position: absolute;
    top: -6px; right: -6px;
    background: var(--primary-dark);
    color: white;
    border: none;
    width: 18px; height: 18px;
    border-radius: 50%;
    font-size: 11px;
    cursor: pointer;
    line-height: 1;
  }

  .note-submit {
    background: var(--primary);
    color: white;
    border: none;
    padding: 8px 18px;
    border-radius: 8px;
    cursor: pointer;
    font-size: 14px;
    font-weight: 600;
    font-family: inherit;
    transition: background 0.2s;
  }

  .note-submit:hover { background: var(--primary-dark); }
  .note-submit:disabled { background: #ccc; cursor: not-allowed; }

  /* 卡片上的笔记标记 */
  .notes-indicator {
    position: absolute;
    bottom: 8px; right: 8px;
    background: rgba(255,255,255,0.92);
    border-radius: 10px;
    padding: 2px 7px;
    font-size: 11px;
    z-index: 2;
    color: var(--primary-dark);
    font-weight: 600;
    display: inline-flex;
    align-items: center;
    gap: 3px;
  }

  /* 我的厨房(个人页) */
  .profile-hero {
    background: linear-gradient(135deg, #E85D04 0%, #9D0208 100%);
    border-radius: 16px;
    padding: 16px 20px;
    color: white;
    text-align: center;
    margin-bottom: 16px;
  }
  .profile-level-icon { font-size: 36px; line-height: 1; }
  .profile-level-name { font-size: 18px; font-weight: 800; letter-spacing: 1.5px; margin: 3px 0 1px; font-family: "STKaiti","KaiTi",serif; }
  .profile-count { font-size: 12px; opacity: 0.92; }
  .profile-progress { height: 6px; background: rgba(255,255,255,0.25); border-radius: 3px; margin: 10px 0 4px; overflow: hidden; }
  .profile-progress-bar { height: 100%; background: linear-gradient(90deg, #FFE259, #FFA751); border-radius: 3px; transition: width 0.6s; }
  .profile-next { font-size: 11px; opacity: 0.9; }

  .profile-stats-row { display: flex; gap: 10px; margin-bottom: 20px; }
  .profile-stat { flex: 1; background: white; border: 1px solid var(--border); border-radius: 14px; padding: 14px 8px; text-align: center; }
  .profile-stat .num { font-size: 26px; font-weight: 800; color: var(--primary); }
  .profile-stat .lbl { font-size: 12px; color: var(--text-light); margin-top: 2px; }

  .profile-section-title { font-size: 16px; font-weight: 700; color: var(--primary-dark); margin: 18px 0 10px; }
  .badge-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); gap: 10px; }
  .badge {
    border-radius: 12px; padding: 12px; text-align: center;
    border: 1px solid var(--border); background: white;
  }
  .badge.locked { opacity: 0.4; filter: grayscale(1); }
  .badge .b-icon { font-size: 28px; }
  .badge .b-name { font-size: 13px; font-weight: 700; color: var(--text); margin-top: 4px; }
  .badge .b-desc { font-size: 11px; color: var(--text-light); margin-top: 2px; }

  .photo-wall { display: grid; grid-template-columns: repeat(auto-fill, minmax(110px, 1fr)); gap: 8px; }
  .photo-wall-item { border-radius: 10px; overflow: hidden; position: relative; cursor: pointer; aspect-ratio: 1; }
  .photo-wall-item img { width: 100%; height: 100%; object-fit: cover; }
  .photo-wall-item .pw-name { position: absolute; bottom: 0; left: 0; right: 0; background: rgba(0,0,0,0.55); color: white; font-size: 11px; padding: 3px 5px; text-align: center; }
  .photo-wall-empty { grid-column: 1/-1; text-align: center; padding: 30px; color: var(--text-light); font-size: 13px; background: rgba(255,243,214,0.5); border-radius: 12px; }

  /* ❤️ 收藏夹网格 */
  .fav-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(96px, 1fr));
    gap: 10px;
  }
  .fav-card {
    background: white;
    border: 1px solid var(--border);
    border-radius: 12px;
    overflow: hidden;
    cursor: pointer;
    transition: transform 0.15s, box-shadow 0.15s;
  }
  .fav-card:hover { transform: translateY(-2px); box-shadow: 0 4px 12px rgba(74,44,15,0.10); }
  .fav-cover {
    height: 70px;
    display: flex;
    align-items: center;
    justify-content: center;
  }
  .fav-cover .fav-icon { font-size: 32px; line-height: 1; filter: drop-shadow(0 1px 3px rgba(0,0,0,0.18)); }
  .fav-name { padding: 6px 6px 8px; font-size: 12px; font-weight: 700; color: var(--text); text-align: center; line-height: 1.25; }

  /* 冰箱「再补一两样」可点提示 */
  .fridge-nearby-hint {
    background: rgba(255,243,214,0.7);
    border: 1px dashed #F0D9B5;
    border-radius: 12px;
    padding: 12px 16px;
    margin-top: 14px;
    text-align: center;
    font-size: 13px;
    color: var(--text);
    cursor: pointer;
    transition: background 0.15s;
  }
  .fridge-nearby-hint:hover { background: rgba(255,243,214,1); }
  .fridge-nearby-hint strong { color: var(--primary-dark); }

  /* 菜友:照片墙演示卡 + 交流区 */
  .pw-demo { width: 100%; height: 100%; display: flex; align-items: center; justify-content: center; font-size: 38px; }
  .pw-demo-tag { display: inline-block; margin-left: 4px; background: rgba(255,255,255,0.25); border-radius: 6px; padding: 0 4px; font-size: 9px; }
  .community-note { margin-top: 12px; font-size: 12px; color: var(--text-light); line-height: 1.5; background: rgba(255,243,214,0.6); border-radius: 10px; padding: 10px 12px; }
  .board-form { background: #FFF8F0; border: 1px solid var(--border); border-radius: 12px; padding: 14px; margin-bottom: 16px; }
  .board-form-row { display: flex; gap: 8px; align-items: center; margin-top: 8px; }
  .board-form-row .wish-input { flex: 1; max-width: 180px; }
  .board-form-row .wish-submit { margin-left: auto; }
  .board-list { display: flex; flex-direction: column; gap: 10px; }
  .board-msg { background: white; border: 1px solid var(--border); border-radius: 12px; padding: 12px 14px; position: relative; }
  .board-msg-head { display: flex; align-items: center; gap: 8px; margin-bottom: 5px; }
  .board-msg-avatar { width: 28px; height: 28px; border-radius: 50%; background: linear-gradient(135deg,#E85D04,#9D0208); color: white; display: flex; align-items: center; justify-content: center; font-size: 13px; font-weight: 700; flex: 0 0 auto; }
  .board-msg-name { font-weight: 600; font-size: 13px; color: var(--text); }
  .board-msg-time { font-size: 11px; color: var(--text-light); margin-left: auto; }
  .board-msg-text { font-size: 14px; line-height: 1.6; color: var(--text); white-space: pre-wrap; word-break: break-word; }
  .board-msg-del { position: absolute; top: 8px; right: 10px; background: none; border: none; color: #ccc; cursor: pointer; font-size: 14px; }
  .board-msg-del:hover { color: #e74c3c; }

  /* ===== 意见反馈 modal ===== */
  .feedback-modal { background: var(--rs-paper); border-radius: 16px 16px 0 0; padding: 24px 20px 32px; max-height: 85vh; overflow-y: auto; width: 100%; max-width: 560px; margin: 0 auto; }
  .feedback-type-row { display: flex; gap: 8px; flex-wrap: wrap; margin-bottom: 12px; }
  .feedback-type-btn { flex: 1; min-width: 80px; padding: 7px 10px; border: 1.5px solid var(--border); border-radius: 20px; background: white; font-size: 13px; font-family: inherit; cursor: pointer; text-align: center; transition: all 0.15s; }
  .feedback-type-btn.selected { border-color: var(--rs-red); background: var(--rs-red); color: white; font-weight: 600; }
  .feedback-textarea { width: 100%; min-height: 90px; padding: 10px 12px; border: 1.5px solid var(--border); border-radius: 10px; font-size: 14px; font-family: inherit; resize: vertical; box-sizing: border-box; }
  .feedback-textarea:focus { outline: none; border-color: var(--rs-red); }
  .feedback-list { display: flex; flex-direction: column; gap: 10px; margin-top: 16px; }
  .feedback-type-tag { font-size: 11px; padding: 2px 8px; border-radius: 10px; color: white; font-weight: 600; flex-shrink: 0; }

  /* ===== 单日收藏菜单 modal ===== */
  .day-fav-modal { background: var(--rs-paper); border-radius: 16px 16px 0 0; padding: 20px 16px 32px; max-height: 80vh; overflow-y: auto; width: 100%; max-width: 560px; margin: 0 auto; }
  .fav-day-card { display: flex; align-items: center; gap: 12px; padding: 12px 14px; background: white; border: 1px solid var(--border); border-radius: 12px; margin-bottom: 8px; }
  .fdc-info { flex: 1; min-width: 0; }
  .fdc-name { font-weight: 700; font-size: 14px; color: var(--text); margin-bottom: 2px; }
  .fdc-preview { font-size: 12px; color: var(--text-light); line-height: 1.4; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
  .fdc-date { font-size: 11px; color: var(--text-light); margin-top: 2px; }
  .fdc-actions { display: flex; flex-direction: column; gap: 4px; flex-shrink: 0; }
  .fdc-apply { background: var(--rs-red); color: white; border: none; padding: 5px 12px; border-radius: 8px; font-size: 12px; font-weight: 600; font-family: inherit; cursor: pointer; }
  .fdc-del { background: none; border: 1px solid #ddd; color: #999; padding: 4px 8px; border-radius: 8px; font-size: 12px; cursor: pointer; }

  /* 周日规划提醒 banner */
  .sunday-banner {
    background: linear-gradient(135deg, #FFF3D6, #FFE0B2);
    border: 1.5px solid var(--accent);
    border-radius: 14px;
    padding: 14px 16px;
    margin-bottom: 18px;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    flex-wrap: wrap;
  }
  .sunday-banner .sb-text { font-size: 14px; color: var(--primary-dark); font-weight: 600; }
  .sunday-banner .sb-btns { display: flex; gap: 8px; }
  .sunday-banner button { border: none; border-radius: 8px; padding: 8px 16px; font-family: inherit; font-size: 13px; font-weight: 600; cursor: pointer; }
  .sunday-banner .sb-go { background: var(--primary); color: white; }
  .sunday-banner .sb-skip { background: white; color: var(--text-light); border: 1px solid var(--border); }

  /* 顶部分视图导航(已弃用 — HTML 已删,这里保留兼容空规则)*/
  .view-nav { display: none !important; }

  /* ===== 「← 回首页」按钮(固定在屏幕左上角)===== */
  .back-home-btn {
    position: fixed;
    top: 18px;
    left: 20px;
    z-index: 200;
    background: white;
    color: var(--primary-dark);
    border: 1.5px solid var(--primary);
    padding: 10px 18px;
    border-radius: 22px;
    font-family: "STKaiti", "KaiTi", "楷体", serif;
    font-size: 15px;
    font-weight: 700;
    letter-spacing: 1px;
    cursor: pointer;
    box-shadow: 0 4px 14px rgba(157,2,8,0.18);
    display: inline-flex;
    align-items: center;
    transition: background 0.15s, transform 0.15s;
  }
  .back-home-btn.hidden { display: none; }
  .back-home-btn:hover {
    background: var(--primary-dark);
    color: white;
    transform: translateX(-2px);
  }

  /* ===== 左侧固定边栏(永远显示)===== */
  .side-nav {
    position: fixed;
    left: 20px;
    top: 50%;
    transform: translateY(-50%);
    z-index: 80;
    display: flex;
    flex-direction: column;
    gap: 8px;
    background: white;
    border: 1px solid var(--border);
    border-radius: 22px;
    padding: 14px 10px;
    box-shadow: 0 8px 28px rgba(74,44,15,0.14);
  }
  .side-nav.hidden { display: none; }
  .side-item {
    background: transparent;
    border: none;
    padding: 12px 14px;
    border-radius: 14px;
    cursor: pointer;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 4px;
    color: var(--text-light);
    font-family: inherit;
    min-width: 70px;
    transition: background 0.15s, color 0.15s, transform 0.15s;
  }
  .side-item:hover { background: rgba(157,2,8,0.08); color: var(--primary-dark); transform: translateX(2px); }
  .side-item.active {
    background: linear-gradient(135deg, #E85D04 0%, #9D0208 100%);
    color: white;
    box-shadow: 0 4px 14px rgba(157,2,8,0.30);
  }
  .side-item .si-emoji { font-size: 24px; line-height: 1; }
  .side-item .si-label { font-size: 12px; font-weight: 600; letter-spacing: 1.5px; }

  /* 内容区右挪让位给边栏(避免被遮)*/
  @media (min-width: 641px) {
    .container { padding-left: 124px; }
    .hero h1 { /* hero 内容居中不受影响 */ }
  }
  .view-nav button {
    flex: 1;
    padding: 16px 10px;
    border: 1.5px solid var(--border);
    border-radius: 14px;
    background: white;
    font-family: inherit;
    font-size: 17px;
    font-weight: 700;
    cursor: pointer;
    color: var(--text-light);
    transition: all 0.2s;
  }
  .view-nav button:hover { border-color: var(--primary); color: var(--primary); }
  .view-nav button.active {
    background: linear-gradient(135deg, #E85D04, #9D0208);
    color: white;
    border-color: transparent;
    box-shadow: 0 4px 12px rgba(232, 93, 4, 0.25);
  }
  @media (max-width: 640px) {
    .view-nav { gap: 4px; }
    .view-nav button { font-size: 13px; padding: 13px 3px; border-radius: 12px; letter-spacing: -0.3px; }
  }

  /* 场景入口卡 */
  .entry-cards {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 14px;
    margin-bottom: 28px;
  }
  .entry-card {
    border: none;
    border-radius: 16px;
    padding: 22px 14px;
    cursor: pointer;
    font-family: inherit;
    color: white;
    text-align: center;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 6px;
    transition: transform 0.2s, box-shadow 0.2s;
    box-shadow: 0 6px 18px rgba(0,0,0,0.12);
  }
  .entry-card:hover { transform: translateY(-4px); box-shadow: 0 12px 28px rgba(0,0,0,0.2); }
  .entry-card .ec-icon { font-size: 40px; line-height: 1; }
  .entry-card .ec-title { font-size: 17px; font-weight: 700; letter-spacing: 1px; }
  .entry-card .ec-sub { font-size: 12px; opacity: 0.9; }
  .ec-roll { background: linear-gradient(135deg, #E85D04, #9D0208); }
  .ec-week { background: linear-gradient(135deg, #1976D2, #0D47A1); }
  .ec-fridge { background: linear-gradient(135deg, #00838F, #006064); }
  .ec-browse { background: linear-gradient(135deg, #F48C06, #E85D04); }

  @media (max-width: 640px) {
    .entry-cards { grid-template-columns: 1fr 1fr; gap: 10px; }
    .entry-card { padding: 18px 10px; }
    .entry-card .ec-icon { font-size: 32px; }
    .entry-card .ec-title { font-size: 15px; }
  }

  /* 可折叠工具板块 */
  .collapsible { display: none; }
  .collapsible.open { display: block; animation: dropIn 0.3s ease; }

  /* 分享 modal */
  .share-modal {
    background: var(--bg);
    border-radius: 20px;
    width: 100%;
    max-width: 500px;
    overflow: hidden;
    box-shadow: 0 20px 60px rgba(0,0,0,0.3);
    animation: slideUp 0.3s ease;
  }
  .share-header {
    padding: 22px 24px;
    background: linear-gradient(135deg, #E85D04 0%, #9D0208 100%);
    color: white;
    position: relative;
  }
  .share-header h2 {
    font-size: 20px;
    font-family: "STKaiti","KaiTi","楷体",serif;
    letter-spacing: 2px;
  }
  .share-header p { font-size: 13px; opacity: 0.9; margin-top: 4px; }
  .share-body { padding: 24px; }
  .share-qr-wrapper {
    background: white;
    border-radius: 12px;
    padding: 16px;
    display: flex;
    align-items: center;
    gap: 14px;
    margin-bottom: 16px;
    border: 1.5px solid var(--border);
  }
  .share-qr-img {
    width: 130px;
    height: 130px;
    flex-shrink: 0;
    background: white;
    border-radius: 8px;
  }
  .share-qr-info {
    flex: 1;
    font-size: 13px;
    color: var(--text-light);
    line-height: 1.6;
  }
  .share-qr-info strong { color: var(--primary-dark); font-size: 15px; }
  .share-url-box {
    background: white;
    border: 1.5px solid var(--border);
    border-radius: 10px;
    padding: 10px 14px;
    margin-bottom: 14px;
    display: flex;
    gap: 8px;
    align-items: center;
  }
  .share-url-text {
    flex: 1;
    font-size: 12px;
    color: var(--text-light);
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    font-family: monospace;
  }
  .share-copy-btn {
    background: var(--primary);
    color: white;
    border: none;
    padding: 6px 14px;
    border-radius: 6px;
    cursor: pointer;
    font-size: 12px;
    font-weight: 600;
    font-family: inherit;
    flex-shrink: 0;
  }
  .share-copy-btn:hover { background: var(--primary-dark); }
  .share-card-actions {
    display: flex;
    gap: 8px;
    flex-wrap: wrap;
  }
  .share-action-btn {
    flex: 1;
    min-width: 120px;
    padding: 12px;
    border: none;
    border-radius: 10px;
    cursor: pointer;
    font-family: inherit;
    font-size: 13px;
    font-weight: 600;
    transition: transform 0.15s;
  }
  .share-action-btn.primary {
    background: linear-gradient(135deg, #E85D04 0%, #9D0208 100%);
    color: white;
  }
  .share-action-btn.secondary {
    background: white;
    color: var(--text);
    border: 1.5px solid var(--border);
  }
  .share-action-btn:hover { transform: translateY(-2px); }

  /* 卡片图预览容器 */
  .share-card-canvas {
    display: block;
    max-width: 100%;
    border-radius: 12px;
    margin: 14px 0;
    box-shadow: 0 4px 16px rgba(0,0,0,0.15);
  }

  /* 导入提示横幅 */
  .import-banner {
    background: linear-gradient(90deg, #FFF3D6, #FFE0B2);
    border: 1.5px solid #FF6F00;
    padding: 12px 16px;
    border-radius: 10px;
    margin: 16px 0;
    display: flex;
    justify-content: space-between;
    align-items: center;
    flex-wrap: wrap;
    gap: 10px;
  }
  .import-banner-text { font-size: 14px; color: #BF360C; }
  .import-banner-text strong { font-weight: 700; }
  .import-banner-btn {
    background: #E85D04;
    color: white;
    border: none;
    padding: 8px 16px;
    border-radius: 8px;
    font-family: inherit;
    font-size: 13px;
    font-weight: 600;
    cursor: pointer;
  }
  .import-banner-btn.ghost { background: white; color: #BF360C; border: 1.5px solid #E85D04; }

  /* 冰箱筛选(暖奶米色调,跟整站统一)*/
  /* 🧊 冰箱页:统一暖橙红色调(跟「⭐ 一键勾选常见的」chip 同色系) */
  .fridge-box {
    background: linear-gradient(180deg, #FFF8EC 0%, #FFF3D6 100%);
    border-radius: 20px;
    padding: 18px 20px;
    margin-bottom: 24px;
    border: 1.5px solid #F4C58A;
    position: relative;
    overflow: hidden;
  }
  /* 整页标题 / 段落标签都用品牌深红 */
  .fridge-box .fridge-header h2 { color: var(--primary-dark); }
  .fridge-box .fridge-selected-label,
  .fridge-box .fridge-selected-label strong { color: var(--primary-dark); }
  .fridge-box .fridge-cat-title { color: #8E4A36; }
  .fridge-box .fridge-chips-section { background: rgba(255,255,255,0.85); border: 1px solid #F4C58A; }
  /* 搜索栏:暖橙 focus */
  .fridge-box .fridge-search-row { border-color: #F4C58A; }
  .fridge-box .fridge-search-row:focus-within {
    border-color: #E85D04;
    box-shadow: 0 0 0 3px rgba(232, 93, 4, 0.10);
  }
  .fridge-box .fridge-search-clear:hover { background: rgba(232, 93, 4, 0.10); color: var(--primary-dark); }
  /* chip 默认/hover/active:暖橙红 → 跟 ⭐ 那个按钮一脉相承 */
  .fridge-box .fridge-chip { border-color: #F4C58A; }
  .fridge-box .fridge-chip:hover { border-color: #E85D04; color: #E85D04; }
  .fridge-box .fridge-chip.active {
    background: linear-gradient(135deg, #FFB463 0%, #E85D04 100%);
    color: white;
    border-color: #C24A00;
    box-shadow: 0 2px 10px rgba(232, 93, 4, 0.28);
  }
  /* 结果区(已选食材 + 推荐的菜) */
  .fridge-box .fridge-results { background: rgba(255,255,255,0.85); }
  .fridge-box .fridge-result-title { color: var(--primary-dark); }
  .fridge-box .fridge-recipe-card.perfect { border-color: #E85D04; }
  .fridge-box::before {
    content: "🧊";
    position: absolute;
    top: -20px; right: -10px;
    font-size: 140px;
    opacity: 0.06;
    transform: rotate(15deg);
    pointer-events: none;
  }
  .fridge-header h2 {
    font-size: 22px;
    color: var(--primary-dark);
    font-family: "STKaiti", "KaiTi", "楷体", serif;
    letter-spacing: 2px;
    margin-bottom: 4px;
  }
  .fridge-header p {
    font-size: 13px;
    color: var(--text-light);
    margin-bottom: 12px;
  }
  .fridge-chips-section {
    background: rgba(255,255,255,0.7);
    border-radius: 12px;
    padding: 12px 14px;
    margin-bottom: 14px;
  }
  .fridge-cat-title {
    font-size: 12px;
    font-weight: 700;
    color: #8E4A36;
    margin: 8px 0 6px;
    display: block;
  }
  .fridge-chips {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(92px, 1fr));
    gap: 6px;
  }
  .fridge-chip {
    padding: 6px 10px;
    background: white;
    border: 1.5px solid var(--border);
    border-radius: 16px;
    font-family: inherit;
    font-size: 13px;
    cursor: pointer;
    color: var(--text);
    transition: all 0.15s;
    display: flex;
    align-items: center;
    justify-content: flex-start;
    gap: 4px;
    text-align: left;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
  }
  /* 操作行(一键勾选 / 清空)里的按钮回到内容自适应宽度 */
  .fridge-actions .fridge-chip { display: inline-flex; justify-content: center; }

  /* 「已选」「搜索结果」段落小标题 */
  .fridge-selected-label {
    font-size: 12px;
    font-weight: 700;
    color: var(--primary-dark);
    margin: 4px 0 8px;
    letter-spacing: 0.5px;
  }
  .fridge-selected-label strong { color: var(--primary-dark); }

  /* 4维度筛选 */
  .filter-dim-tabs { display: flex; gap: 8px; flex-wrap: wrap; margin-top: 12px; }
  .dim-tab {
    padding: 8px 18px;
    border: 1.5px solid var(--border);
    border-radius: 20px;
    font-size: 14px;
    font-weight: 500;
    cursor: pointer;
    background: white;
    color: var(--text);
    font-family: inherit;
    transition: border-color 0.15s, background 0.15s, color 0.15s;
    user-select: none;
  }
  .dim-tab:hover { border-color: var(--primary); color: var(--primary); }
  .dim-tab.active { background: var(--primary); color: white; border-color: var(--primary); }
  .dim-chip-row {
    display: flex;
    flex-wrap: wrap;
    gap: 6px;
    margin-top: 8px;
    padding-top: 8px;
    border-top: 1px solid var(--border);
    animation: fadeInDown 0.15s ease;
  }
  @keyframes fadeInDown { from { opacity:0; transform:translateY(-4px); } to { opacity:1; transform:none; } }
  .dim-chip {
    padding: 5px 13px;
    border: 1.5px solid var(--border);
    border-radius: 16px;
    font-size: 13px;
    cursor: pointer;
    background: white;
    color: var(--text);
    font-family: inherit;
    transition: border-color 0.15s, background 0.15s, color 0.15s;
    user-select: none;
  }
  .dim-chip:hover { border-color: var(--primary); color: var(--primary); }
  .dim-chip.active { background: #fef2f2; color: var(--primary); border-color: var(--primary); font-weight: 600; }
  @media (max-width: 640px) {
    .dim-tab { font-size: 13px; padding: 7px 14px; }
    .dim-chip { font-size: 12px; padding: 4px 10px; }
  }

  /* 冰箱搜索栏 */
  .fridge-search-row {
    display: flex;
    align-items: center;
    gap: 8px;
    background: white;
    border: 1.5px solid var(--border);
    border-radius: 14px;
    padding: 4px 12px;
    margin-bottom: 14px;
    transition: border-color 0.15s, box-shadow 0.15s;
  }
  .fridge-search-row:focus-within {
    border-color: var(--primary);
    box-shadow: 0 0 0 3px rgba(157,2,8,0.08);
  }
  .fridge-search-icon { font-size: 16px; color: var(--text-light); flex-shrink: 0; }
  .fridge-search-input {
    flex: 1;
    background: transparent;
    border: none;
    outline: none;
    padding: 10px 0;
    font-family: inherit;
    font-size: 14px;
    color: var(--text);
  }
  .fridge-search-input::placeholder { color: var(--text-light); font-size: 13px; }
  .fridge-search-clear {
    background: rgba(0,0,0,0.06);
    border: none;
    width: 22px; height: 22px;
    border-radius: 50%;
    color: var(--text-light);
    font-size: 14px;
    line-height: 1;
    cursor: pointer;
    flex-shrink: 0;
    font-family: inherit;
  }
  .fridge-search-clear:hover { background: rgba(157,2,8,0.10); color: var(--primary-dark); }

  /* 盲盒主食提示 */
  .staple-note {
    margin-top: 10px;
    padding: 10px 14px;
    background: rgba(255, 243, 214, 0.6);
    border: 1px solid var(--border);
    border-radius: 12px;
    font-size: 13px;
    color: var(--text);
    line-height: 1.6;
    text-align: center;
  }
  .staple-note strong { color: var(--primary-dark); }
  .fridge-chip:hover { border-color: #D94531; color: #D94531; }
  .fridge-chip.active {
    background: linear-gradient(135deg, #FF8E4F 0%, #D94531 100%);
    color: white;
    border-color: #D94531;
    box-shadow: 0 2px 10px rgba(217, 69, 49, 0.25);
  }
  .fridge-actions {
    display: flex;
    gap: 8px;
    margin-top: 10px;
    align-items: center;
    flex-wrap: wrap;
  }
  .fridge-clear-btn {
    padding: 5px 12px;
    background: white;
    border: 1.5px solid #C62828;
    border-radius: 16px;
    color: #C62828;
    font-family: inherit;
    font-size: 12px;
    cursor: pointer;
  }
  .fridge-clear-btn:hover { background: #C62828; color: white; }

  .fridge-results {
    background: rgba(255,255,255,0.7);
    border-radius: 12px;
    padding: 14px;
  }
  .fridge-result-section {
    margin-bottom: 14px;
  }
  .fridge-result-title {
    font-size: 14px;
    font-weight: 700;
    color: var(--primary-dark);
    margin-bottom: 8px;
    display: flex;
    align-items: center;
    gap: 6px;
  }
  .fridge-recipes-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(160px, 1fr));
    gap: 8px;
  }
  .fridge-recipe-card {
    background: white;
    border-radius: 10px;
    overflow: hidden;
    cursor: pointer;
    border: 1.5px solid transparent;
    transition: all 0.15s;
    display: flex;
    flex-direction: column;
  }
  .fridge-recipe-card:hover {
    transform: translateY(-2px);
    box-shadow: 0 4px 12px rgba(74, 44, 15, 0.12);
  }
  .fridge-recipe-card.perfect { border-color: #7A9479; }
  .fridge-recipe-card .cover {
    height: 65px;
    display: flex;
    align-items: center;
    justify-content: center;
    flex-direction: column;
    color: white;
    /* 番茄红/辣椒红渐变 —— 经典「红烧/麻辣」食欲色,不再棕褐 */
    background: linear-gradient(135deg, #FF8E4F 0%, #D94531 100%);
    text-shadow: 0 1px 2px rgba(0,0,0,0.22);
    text-align: center;
    padding: 4px;
  }
  .fridge-recipe-card .cover .ic { font-size: 22px; line-height: 1; }
  .fridge-recipe-card .cover .nm { font-size: 12px; font-weight: 700; margin-top: 3px; color: white; }
  .fridge-recipe-card .info {
    padding: 6px 8px;
    font-size: 11px;
    color: var(--text-light);
  }
  .fridge-recipe-card .info .miss {
    color: #C62828;
    font-size: 10px;
    margin-top: 2px;
    line-height: 1.3;
  }

  /* 菜友许愿池 */
  .wishlist-box {
    background: linear-gradient(135deg, #FFF8F0 0%, #FFE8D6 100%);
    border-radius: 20px;
    padding: 28px;
    margin-top: 40px;
    border: 1px solid var(--border);
    box-shadow: 0 6px 20px rgba(232, 93, 4, 0.08);
    position: relative;
    overflow: hidden;
  }

  .wishlist-box::before {
    content: "🙏";
    position: absolute;
    top: -20px; right: -10px;
    font-size: 140px;
    opacity: 0.06;
    transform: rotate(15deg);
    pointer-events: none;
  }

  .wishlist-header {
    margin-bottom: 18px;
    position: relative;
  }

  .wishlist-header h2 {
    font-size: 22px;
    color: var(--primary-dark);
    font-family: "STKaiti", "KaiTi", "楷体", serif;
    letter-spacing: 2px;
    margin-bottom: 4px;
  }

  .wishlist-header p {
    font-size: 13px;
    color: var(--text-light);
    opacity: 0.95;
  }

  .wish-form {
    background: rgba(255,255,255,0.6);
    border-radius: 14px;
    padding: 16px 18px;
    margin-bottom: 20px;
  }

  .wish-form h4 {
    font-size: 14px;
    color: var(--primary-dark);
    margin-bottom: 10px;
  }

  .wish-form-row {
    display: grid;
    grid-template-columns: 1fr 140px;
    gap: 10px;
    margin-bottom: 10px;
  }

  .wish-input, .wish-select, .wish-textarea {
    padding: 8px 12px;
    border: 1.5px solid #CE93D8;
    border-radius: 8px;
    font-family: inherit;
    font-size: 14px;
    outline: none;
    background: white;
    width: 100%;
    box-sizing: border-box;
  }

  .wish-input:focus, .wish-select:focus, .wish-textarea:focus { border-color: var(--primary); }

  .wish-textarea {
    min-height: 50px;
    resize: vertical;
    margin-bottom: 10px;
  }

  .wish-submit {
    background: linear-gradient(135deg, #E85D04 0%, #9D0208 100%);
    color: white;
    border: none;
    padding: 10px 22px;
    border-radius: 10px;
    font-size: 14px;
    font-weight: 600;
    font-family: inherit;
    cursor: pointer;
    transition: transform 0.15s, box-shadow 0.2s;
    box-shadow: 0 4px 12px rgba(232, 93, 4, 0.3);
  }

  .wish-submit:hover {
    transform: translateY(-2px);
    box-shadow: 0 6px 18px rgba(232, 93, 4, 0.4);
  }

  .wishlist-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
    gap: 12px;
  }

  .wish-card {
    background: white;
    border-radius: 12px;
    padding: 14px 16px;
    border-left: 3px solid var(--accent);
    position: relative;
    animation: dropIn 0.4s ease;
  }

  .wish-card-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-bottom: 6px;
    flex-wrap: wrap;
    gap: 6px;
  }

  .wish-name {
    font-weight: 700;
    font-size: 16px;
    color: var(--primary-dark);
  }

  .wish-category-tag {
    font-size: 10px;
    padding: 2px 8px;
    border-radius: 10px;
    background: #FFE8D6;
    color: var(--primary-dark);
    font-weight: 600;
  }

  .wish-desc {
    font-size: 13px;
    color: var(--text-light);
    line-height: 1.5;
    margin: 8px 0;
    white-space: pre-wrap;
  }

  .wish-footer {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-top: 10px;
    padding-top: 10px;
    border-top: 1px solid var(--border);
  }

  .wish-date {
    font-size: 11px;
    color: var(--text-light);
  }

  .wish-actions {
    display: inline-flex;
    gap: 6px;
  }

  .wish-like-btn {
    background: rgba(232, 93, 4, 0.08);
    border: 1.5px solid var(--border);
    color: var(--primary-dark);
    cursor: pointer;
    font-size: 13px;
    padding: 3px 10px;
    border-radius: 12px;
    font-family: inherit;
    transition: all 0.2s;
    display: inline-flex;
    align-items: center;
    gap: 4px;
  }

  .wish-like-btn:hover {
    background: rgba(232, 93, 4, 0.15);
    border-color: var(--primary);
  }

  .wish-like-btn.liked {
    background: var(--primary);
    border-color: var(--primary);
    color: white;
  }

  .wish-like-btn.liked .heart { animation: heartBeat 0.4s ease; }

  .wish-delete {
    background: none;
    border: none;
    color: var(--text-light);
    cursor: pointer;
    font-size: 14px;
    padding: 0 4px;
    transition: color 0.2s;
  }

  .wish-delete:hover { color: #C62828; }

  .wishlist-empty {
    text-align: center;
    padding: 30px 20px;
    color: var(--primary-dark);
    font-size: 14px;
    background: rgba(255,255,255,0.6);
    border-radius: 10px;
    grid-column: 1/-1;
  }

  .wishlist-stats {
    text-align: center;
    margin-top: 14px;
    font-size: 12px;
    color: var(--text-light);
    opacity: 0.9;
  }

  /* 图片放大查看 */
  .photo-lightbox {
    position: fixed;
    inset: 0;
    background: rgba(0,0,0,0.85);
    display: none;
    align-items: center;
    justify-content: center;
    z-index: 200;
    cursor: pointer;
    padding: 20px;
  }
  .photo-lightbox.show { display: flex; }
  .photo-lightbox img {
    max-width: 100%;
    max-height: 100%;
    border-radius: 8px;
  }

  /* 章节标题 */
  .section-header {
    margin: 40px 0 20px;
    display: flex;
    align-items: center;
    gap: 12px;
  }

  .section-header h2 {
    font-size: 22px;
    color: var(--primary-dark);
    font-family: "STKaiti", "KaiTi", "楷体", serif;
    letter-spacing: 2px;
  }

  .section-header .line {
    flex: 1;
    height: 2px;
    background: linear-gradient(90deg, var(--accent) 0%, transparent 100%);
  }

  /* 采购清单(顶部抽屉) */
  .pantry-link {
    display: inline-block;
    margin-top: 10px;
    color: white;
    background: rgba(255,255,255,0.18);
    padding: 8px 18px;
    border-radius: 20px;
    text-decoration: none;
    font-size: 14px;
    border: 1px solid rgba(255,255,255,0.3);
    transition: background 0.2s;
    font-family: "STKaiti", "KaiTi", "楷体", serif;
    letter-spacing: 1.5px;
  }

  .pantry-link:hover { background: rgba(255,255,255,0.28); }

  /* 菜谱页里的食材中英对照表按钮 */
  .recipes-glossary-btn {
    background: #FBF3E4;
    border: 1px solid var(--border);
    color: var(--primary-dark);
    padding: 7px 14px;
    border-radius: 14px;
    font-size: 13px;
    font-weight: 600;
    cursor: pointer;
    font-family: "STKaiti", "KaiTi", "楷体", serif;
    letter-spacing: 1.2px;
    transition: background 0.15s, transform 0.15s;
  }
  .recipes-glossary-btn:hover { background: #F5E8D4; transform: translateY(-1px); }

  /* ===== 右上角头像 (登陆/我的入口) ===== */
  .hero-avatar {
    position: absolute;
    top: 16px;
    right: 18px;
    width: 44px;
    height: 44px;
    border-radius: 50%;
    background: rgba(255,255,255,0.22);
    border: 1.5px solid rgba(255,255,255,0.4);
    color: white;
    cursor: pointer;
    font-size: 22px;
    line-height: 1;
    display: flex;
    align-items: center;
    justify-content: center;
    overflow: hidden;
    z-index: 5;
    transition: transform 0.15s, background 0.15s;
    font-family: inherit;
    padding: 0;
  }
  .hero-avatar:hover { background: rgba(255,255,255,0.34); transform: scale(1.05); }
  .hero-avatar img { width: 100%; height: 100%; object-fit: cover; }

  /* ===== 🏠 首页:3 个红色大入口卡 vertically 居中 viewport ===== */
  .home-section {
    /* 撑到接近整屏(扣掉 hero 顶部约 200px + footer 约 80px)*/
    min-height: calc(100vh - 260px);
    padding: 0;
    display: flex;
    flex-direction: column;
    justify-content: center;     /* 关键:垂直居中卡片 */
    align-items: center;
  }
  .home-greeting {
    font-size: 22px;
    color: var(--primary-dark);
    font-family: "STKaiti","KaiTi",serif;
    letter-spacing: 3px;
    text-align: center;
    margin-bottom: 36px;
  }
  .home-cards {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 28px;
    max-width: 1180px;
    margin: 0 auto;
    width: 100%;
  }
  .home-card {
    /* 鲜亮食欲红 —— 更通透,接近"红椒"色,但仍带渐变层次 */
    background:
      radial-gradient(ellipse at 20% 0%, rgba(255,230,200,0.24) 0%, transparent 55%),
      linear-gradient(150deg, #E04E3A 0%, #B82C22 55%, #8A1A14 100%);
    /* 香槟金细描边 —— 比鲜亮金更内敛,接近古铜 */
    border: 1.5px solid #C4A777;
    border-radius: 32px;
    padding: 60px 28px 52px;
    cursor: pointer;
    font-family: inherit;
    text-align: center;
    color: white;
    box-shadow:
      0 16px 38px rgba(80, 14, 12, 0.30),
      inset 0 1px 0 rgba(255,255,255,0.16);
    transition: transform 0.2s, box-shadow 0.2s;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 22px;
    min-height: 420px;
    justify-content: center;
    position: relative;
    overflow: hidden;
  }
  /* 卡片右上角微弱光晕(瓷釉反光)*/
  .home-card::after {
    content: "";
    position: absolute;
    top: -45%; right: -35%;
    width: 75%; height: 95%;
    background: radial-gradient(circle, rgba(255,200,150,0.14) 0%, transparent 60%);
    pointer-events: none;
  }
  .home-card:hover, .home-card:active {
    transform: translateY(-6px);
    border-color: #D9BC8C;
    box-shadow:
      0 22px 48px rgba(80, 14, 12, 0.40),
      inset 0 1px 0 rgba(255,255,255,0.22);
  }
  .home-card .hc-icon {
    width: 110px; height: 110px;
    border-radius: 28px;
    background: rgba(255,255,255,0.24);
    border: 1.5px solid rgba(255,255,255,0.36);
    display: flex; align-items: center; justify-content: center;
    font-size: 60px; line-height: 1;
    z-index: 1;
  }
  .home-card .hc-title {
    font-size: 34px;
    font-weight: 700;
    color: white;
    font-family: "STKaiti","KaiTi",serif;
    letter-spacing: 6px;
    z-index: 1;
    padding-bottom: 12px;
    border-bottom: 1.5px solid rgba(255,255,255,0.4);
    margin: 4px auto 0;
  }
  .home-card .hc-desc {
    font-size: 16px;
    color: rgba(255,255,255,0.95);
    line-height: 1.9;
    max-width: 260px;
    z-index: 1;
    letter-spacing: 1px;
    font-weight: 500;
  }
  .home-card .hc-desc span { white-space: nowrap; }

  /* 📅 周计划 CTA(放盲盒页底部)—— 白底,跟盲盒/谁洗碗 那种深红 banner 拉开 */
  .weekplan-cta {
    margin-top: 28px;
    background: #FFFFFF;
    border: 1px solid #F0D9B5;
    border-radius: 18px;
    padding: 18px 22px;
    display: flex;
    align-items: center;
    gap: 16px;
    cursor: pointer;
    transition: transform 0.18s, box-shadow 0.18s;
    box-shadow: 0 4px 14px rgba(74, 44, 15, 0.06);
  }
  .weekplan-cta:hover, .weekplan-cta:active {
    transform: translateY(-2px);
    box-shadow: 0 8px 22px rgba(74, 44, 15, 0.14);
  }
  .wp-cta-left .wp-cta-icon {
    width: 56px; height: 56px; border-radius: 14px;
    background: linear-gradient(135deg, #E85D04, #9D0208);
    color: white;
    display: flex; align-items: center; justify-content: center;
    font-size: 28px; line-height: 1;
    flex-shrink: 0;
  }
  .wp-cta-mid { flex: 1; min-width: 0; }
  .wp-cta-title {
    font-family: "STKaiti","KaiTi",serif;
    font-size: 18px;
    font-weight: 700;
    color: var(--primary-dark);
    letter-spacing: 2px;
    margin-bottom: 4px;
  }
  .wp-cta-desc {
    font-size: 12px;
    color: var(--text-light);
    line-height: 1.5;
  }
  .wp-cta-arrow {
    font-size: 22px;
    color: var(--primary-dark);
    font-weight: 700;
    flex-shrink: 0;
  }

  /* 底部 */
  .footer {
    text-align: center;
    padding: 40px 24px;
    color: var(--text-light);
    font-size: 13px;
    border-top: 1px solid var(--border);
    margin-top: 40px;
    background: white;
  }

  .footer p { margin: 4px 0; }

  /* 🎲 三餐盲盒 + 谁做饭 + 谁洗碗:统一暖奶米橙调(跟冰箱页同款) */
  .lucky-box,
  section.dish-duty-box {
    background: linear-gradient(180deg, #FFF8EC 0%, #FFF3D6 100%);
    border-radius: 20px;
    padding: 18px 22px;
    margin-bottom: 24px;
    border: 1.5px solid #F4C58A;
    position: relative;
    overflow: hidden;
    box-shadow: 0 4px 14px rgba(74, 44, 15, 0.06);
  }
  /* header 区维持原暖色字体(深红),不再当 banner */
  .lucky-box .lucky-header,
  section.dish-duty-box .dish-duty-head {
    background: transparent;
    padding: 0 0 14px;
    margin: 0;
    color: var(--primary-dark);
    border-radius: 0;
  }
  .lucky-box .lucky-header h2,
  .lucky-box .lucky-title h2,
  section.dish-duty-box .dish-duty-head h2 {
    color: var(--primary-dark);
    text-shadow: none;
  }
  .lucky-box .lucky-header p,
  .lucky-box .lucky-title p,
  section.dish-duty-box .dish-duty-head p {
    color: var(--text-light);
  }
  /* options 里的小 chip(🚫 不要进阶 / 🔊):白底奶米边 */
  .lucky-box .lucky-options label {
    background: rgba(255,255,255,0.85);
    border: 1px solid #F4C58A;
    color: var(--text);
  }
  .lucky-box .lucky-options input[type="checkbox"] {
    accent-color: var(--primary);
  }
  /* meal tag / summary / stepper / lucky-card 等内层:维持白底奶米边 */
  .lucky-box .lucky-meal-tag {
    background: linear-gradient(135deg, #FFF3D6 0%, #FFCC80 100%);
    color: var(--primary-dark);
  }
  .lucky-box .lucky-summary {
    background: rgba(255,255,255,0.85);
    border: 1px solid #F4C58A;
  }
  .lucky-box .meal-stepper {
    background: rgba(255,255,255,0.85);
    border: 1px solid #F4C58A;
  }

  .lucky-box::before {
    content: "🎲";
    position: absolute;
    top: -20px; right: -10px;
    font-size: 140px;
    opacity: 0.08;
    transform: rotate(15deg);
    pointer-events: none;
  }

  .lucky-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    flex-wrap: wrap;
    gap: 12px;
    margin-bottom: 18px;
  }

  .lucky-title h2 {
    font-size: 22px;
    color: var(--primary-dark);
    font-family: "STKaiti", "KaiTi", "楷体", serif;
    letter-spacing: 2px;
    margin-bottom: 4px;
  }

  .lucky-title p {
    font-size: 13px;
    color: var(--text-light);
  }

  .lucky-options {
    display: flex;
    gap: 10px;
    font-size: 13px;
    color: var(--text);
    flex-wrap: nowrap;
    align-items: center;
    margin-left: auto; /* 即便 .lucky-header 换行,也把这组贴到最右 */
    justify-content: flex-end;
  }

  .lucky-options label {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    cursor: pointer;
    background: rgba(255,255,255,0.7);
    padding: 4px 10px;
    border-radius: 12px;
  }

  .lucky-options input[type="checkbox"] {
    accent-color: var(--primary);
  }
  .lucky-easy-chip {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    cursor: pointer;
    background: rgba(255,255,255,0.7);
    padding: 5px 11px;
    border-radius: 12px;
    font-size: 12px;
    color: var(--text);
    margin-top: 8px;
  }
  .lucky-easy-chip input[type="checkbox"] { accent-color: var(--primary); }

  .meal-steppers {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(140px, 1fr));
    gap: 8px;
    margin: 12px 0;
  }

  .meal-stepper {
    background: rgba(255,255,255,0.75);
    border-radius: 12px;
    padding: 8px 10px;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 6px;
  }

  .meal-stepper .label {
    font-size: 14px;
    font-weight: 600;
    color: var(--text);
  }

  .meal-stepper .controls {
    display: inline-flex;
    align-items: center;
    gap: 6px;
  }

  .meal-stepper button {
    width: 26px; height: 26px;
    border: none;
    background: var(--primary);
    color: white;
    border-radius: 50%;
    cursor: pointer;
    font-size: 14px;
    font-weight: 700;
    font-family: inherit;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    transition: background 0.15s, transform 0.1s;
  }

  .meal-stepper button:hover:not(:disabled) {
    background: var(--primary-dark);
    transform: scale(1.1);
  }

  .meal-stepper button:disabled {
    background: #ddd;
    color: #999;
    cursor: not-allowed;
  }

  .meal-stepper .count {
    min-width: 20px;
    text-align: center;
    font-size: 16px;
    font-weight: 700;
    color: var(--primary-dark);
  }

  .lucky-main-btn {
    width: 100%;
    background: #FFFFFF;
    color: var(--primary-dark);
    border: 1px solid var(--border);
    padding: 22px 28px;
    border-radius: 16px;
    font-size: 20px;
    font-weight: 700;
    cursor: pointer;
    font-family: inherit;
    letter-spacing: 2px;
    transition: background 0.2s, box-shadow 0.2s, transform 0.15s;
    box-shadow: 0 2px 10px rgba(74, 44, 15, 0.08);
    position: relative;
  }

  .lucky-main-btn:hover {
    transform: translateY(-2px);
    background: #FFFBF3;
    box-shadow: 0 6px 18px rgba(74, 44, 15, 0.14);
  }

  .lucky-main-btn:active { transform: translateY(0); }

  .lucky-main-btn.rolling {
    animation: shake 0.15s ease-in-out infinite;
    pointer-events: none;
  }

  @keyframes shake {
    0%, 100% { transform: translate(0, 0) rotate(0); }
    25% { transform: translate(-2px, 0) rotate(-1deg); }
    75% { transform: translate(2px, 0) rotate(1deg); }
  }

  .lucky-results {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
    gap: 14px;
    margin-top: 18px;
  }
  @media (max-width: 640px) {
    .lucky-results { gap: 8px; margin-top: 12px; align-items: stretch; }
    /* 卡片本身全部走 flex 列,内部块按固定顺序填,避免高度不一导致视觉错位 */
    .lucky-results .lucky-card {
      display: flex !important;
      flex-direction: column !important;
      align-self: stretch;
    }
    .lucky-results .lucky-card .lucky-meal-tag {
      flex: 0 0 auto !important;
      padding: 0 10px !important;
      font-size: 13px !important;
      height: 36px !important;
      box-sizing: border-box !important;
      overflow: hidden;
    }
    .lucky-results .lucky-card .lucky-meal-tag > span {
      white-space: nowrap;
      overflow: hidden;
      text-overflow: ellipsis;
      min-width: 0;
    }
    .lucky-results .lucky-card .lucky-reroll {
      width: 24px !important; height: 24px !important; font-size: 13px !important; flex-shrink: 0;
    }
    .lucky-results .lucky-card .lucky-cover { flex: 0 0 auto; }
    .lucky-results .lucky-card .lucky-body { flex: 1 1 auto; }
    /* ≤3 道:flex 一排平分 */
    .lucky-results.lr-row { display: flex !important; flex-wrap: nowrap !important; align-items: stretch !important; }
    .lucky-results.lr-row .lucky-card { flex: 1 1 0; min-width: 0; }
    /* 4 道:四宫格 2×2 */
    .lucky-results.lr-grid-2x2 {
      display: grid !important;
      grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
      align-items: stretch !important;
    }
    .lucky-results.lr-grid-2x2 .lucky-card { min-width: 0; }
    /* ≥5 道:每排 3 个,溢出自动换行 */
    .lucky-results.lr-grid-2 {
      display: grid !important;
      grid-template-columns: repeat(3, minmax(0, 1fr)) !important;
      align-items: stretch !important;
    }
    .lucky-results.lr-grid-2 .lucky-card { min-width: 0; }
    .lucky-cover { height: 88px !important; }
    .lucky-cover .icon { font-size: 36px !important; margin-bottom: 4px !important; }
    .lucky-cover .name { font-size: 14px !important; letter-spacing: 1px !important; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; max-width: calc(100% - 8px); }
    .lucky-body { padding: 9px 10px 11px !important; }
    .lucky-meta { font-size: 12px !important; gap: 5px !important; }
    .lucky-meta .difficulty-pill { font-size: 11px !important; padding: 1px 6px !important; }
  }

  .lucky-card {
    background: white;
    border-radius: 14px;
    overflow: hidden;
    box-shadow: 0 4px 16px rgba(74, 44, 15, 0.1);
    cursor: pointer;
    transition: transform 0.2s;
    position: relative;
  }

  /* dropIn 只给真正变化的卡片用,避免「单抽一道全部都翻」的错觉 */
  .lucky-card.reroll-anim {
    animation: dropIn 0.5s ease;
  }

  @keyframes dropIn {
    from { opacity: 0; transform: translateY(-20px) scale(0.95); }
    to { opacity: 1; transform: translateY(0) scale(1); }
  }

  .lucky-card:hover {
    transform: translateY(-3px);
  }

  .lucky-card.rolling {
    animation: flip 0.4s ease-in-out infinite;
  }

  @keyframes flip {
    0%, 100% { transform: rotateY(0deg); }
    50% { transform: rotateY(180deg); }
  }

  .lucky-meal-tag {
    background: #F5E8D4;
    color: var(--primary-dark);
    padding: 8px 14px;
    font-size: 14px;
    font-weight: 600;
    letter-spacing: 1px;
    display: flex;
    align-items: center;
    justify-content: space-between;
  }

  .lucky-reroll {
    background: rgba(157,2,8,0.08);
    border: none;
    color: var(--primary-dark);
    width: 24px; height: 24px;
    border-radius: 50%;
    cursor: pointer;
    font-size: 13px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    transition: background 0.2s, transform 0.2s;
  }

  .lucky-reroll:hover {
    background: rgba(157,2,8,0.16);
    transform: rotate(180deg);
  }

  .lucky-cover {
    height: 90px;
    display: flex;
    align-items: center;
    justify-content: center;
    flex-direction: column;
    color: white;
    text-shadow: 0 2px 6px rgba(0,0,0,0.2);
    position: relative;
  }

  .lucky-cover .icon {
    font-size: 38px;
    line-height: 1;
    margin-bottom: 4px;
  }

  .lucky-cover .name {
    font-size: 16px;
    font-weight: 700;
  }

  .lucky-body {
    padding: 10px 14px 14px;
  }

  .lucky-meta {
    display: flex;
    gap: 8px;
    flex-wrap: wrap;
    font-size: 12px;
    color: var(--text-light);
  }

  .lucky-meta .difficulty-pill {
    font-size: 10px;
    padding: 1px 6px;
  }

  .lucky-summary {
    margin-top: 14px;
    padding: 12px 16px;
    background: rgba(255,255,255,0.7);
    border-radius: 10px;
    font-size: 13px;
    color: var(--text);
    text-align: center;
  }

  .lucky-summary strong { color: var(--primary-dark); font-size: inherit; }

  .lucky-empty {
    text-align: center;
    padding: 20px;
    color: var(--text-light);
    font-size: 14px;
  }

  /* 食材对照表 */
  .glossary-header {
    padding: 24px 28px;
    background: linear-gradient(135deg, #E85D04 0%, #9D0208 100%);
    color: white;
    position: relative;
  }
  .glossary-header h2 {
    font-size: 22px;
    font-family: "STKaiti", "KaiTi", "楷体", serif;
    letter-spacing: 2px;
    margin-bottom: 6px;
  }
  .glossary-header p { font-size: 13px; opacity: 0.9; }

  .glossary-body {
    padding: 24px 28px 32px;
    max-height: 70vh;
    overflow-y: auto;
  }

  .gloss-section { margin-bottom: 28px; }
  .gloss-section h3 {
    font-size: 16px;
    color: var(--primary-dark);
    margin-bottom: 12px;
    padding-bottom: 6px;
    border-bottom: 2px solid var(--border);
  }

  .gloss-table {
    width: 100%;
    border-collapse: collapse;
    font-size: 13px;
  }
  .gloss-table thead {
    background: #FFF3D6;
  }
  .gloss-table th {
    text-align: left;
    padding: 8px 12px;
    color: var(--text);
    font-weight: 600;
    font-size: 12px;
  }
  .gloss-table td {
    padding: 10px 12px;
    border-top: 1px solid var(--border);
    vertical-align: top;
    background: white;
  }
  .gloss-table tr:hover td { background: #FFFBF0; }
  .gloss-cn { font-weight: 600; color: var(--text); white-space: nowrap; }
  .gloss-en { color: var(--primary); font-weight: 500; }
  .gloss-brand { color: var(--text-light); font-size: 12px; display: block; margin-top: 3px; }
  .gloss-note { color: var(--text-light); font-size: 12px; }

  /* 没结果 */
  .empty {
    text-align: center;
    padding: 60px 20px;
    color: var(--text-light);
    grid-column: 1 / -1;
  }
  .empty .big-icon { font-size: 60px; margin-bottom: 16px; opacity: 0.5; }

  /* 移动端 */
  @media (max-width: 640px) {
    /* ===== 手机端整体 ===== */
    .hero { padding: 18px 20px 36px; }
    .container { padding: 0 14px 40px; margin-top: -26px; }
    /* 子页面取消负 margin,避免 top-nav-row 覆盖精简版 hero */
    body:not([data-view="home"]) .container { margin-top: 12px !important; }
    .filters { padding: 10px 12px; border-radius: 12px; margin-top: 6px; margin-bottom: 14px; }
    .filters .filter-row { gap: 8px; margin-bottom: 8px; }
    .filters .search-box { padding: 8px 12px; font-size: 13px; }

    /* ===== 手机端边栏:改成顶部横向 sticky bar ===== */
    .side-nav {
      position: sticky;
      top: 0;
      left: 0; right: 0;
      transform: none;
      flex-direction: row;
      justify-content: space-around;
      gap: 2px;
      border-radius: 0 0 16px 16px;
      padding: 6px 8px calc(6px + env(safe-area-inset-top, 0));
      margin: -14px -14px 12px;
      border-left: none;
      border-right: none;
      border-top: none;
    }
    .side-item { padding: 8px 4px; min-width: 0; flex: 1; gap: 2px; border-radius: 10px; }
    .side-item .si-emoji { font-size: 18px; }
    .side-item .si-label { font-size: 10px; letter-spacing: 0.5px; }

    /* ===== 手机端首页:3 卡更高,占满中央 ===== */
    .home-card { padding: 36px 10px 30px; min-height: 290px; gap: 16px; border-radius: 24px; }
    .home-card .hc-icon { width: 80px; height: 80px; font-size: 42px; border-radius: 20px; }
    .home-card .hc-title { font-size: 22px; letter-spacing: 4px; padding-bottom: 8px; }
    .home-card .hc-desc { font-size: 13px; line-height: 1.75; max-width: none; letter-spacing: 0.5px; }
    .home-cards { gap: 12px; }
    /* 周计划 CTA 手机端 */
    .weekplan-cta { padding: 14px 16px; gap: 12px; }
    .wp-cta-left .wp-cta-icon { width: 48px; height: 48px; font-size: 24px; border-radius: 12px; }
    .wp-cta-title { font-size: 16px; letter-spacing: 1.5px; }
    .wp-cta-desc { font-size: 11px; }

    /* ===== 菜谱网格:3 列小卡片(收紧字号 / 减少噪音)===== */
    .grid { grid-template-columns: repeat(3, 1fr); gap: 6px; }
    .card { border-radius: 8px; box-shadow: 0 2px 8px rgba(74, 44, 15, 0.06); }
    .card-cover { height: 78px !important; }
    .card-cover .icon { font-size: 16px !important; margin-bottom: 2px !important; }
    /* 菜名:加大到能看清 + 深色描边对抗彩色封面 */
    .card-cover .name {
      font-size: 11px !important;
      line-height: 1.2 !important;
      padding: 2px 4px !important;
      font-weight: 700 !important;
      letter-spacing: 0 !important;
      color: #fff !important;
      text-shadow:
        0 1px 0 rgba(0,0,0,0.8),
        0 2px 6px rgba(0,0,0,0.7) !important;
      max-width: calc(100% - 8px) !important;
    }
    .card-cover .category-badge { display: none; }
    .card-cover .meals-badge { display: none; }
    .card-body { padding: 3px 5px 4px !important; }
    .card-meta { font-size: 9px !important; gap: 3px !important; margin-bottom: 0; align-items: center; }
    .card-meta .difficulty-pill { font-size: 8px !important; padding: 0 4px !important; }
    .card-meta span { font-size: 9px !important; letter-spacing: 0 !important; }
    /* 卡片信息:难度 + 时长 + 价格 全显;描述段完整显示,不截断 */
    .card-desc {
      display: block !important;
      overflow: visible !important;
      font-size: 11px !important;
      line-height: 1.4 !important;
      margin-top: 4px !important;
    }
    .notes-indicator { font-size: 8px !important; padding: 0 4px !important; bottom: 3px !important; right: 3px !important; }

    .modal-content { padding: 18px 16px; }
    .modal-cover { height: 160px; }
    .modal-cover .icon { font-size: 60px; }
    .modal-cover .name { font-size: 22px; }
    .ingredients-list { grid-template-columns: 1fr; }

    /* 弹窗(采购/分享/选菜)手机端铺满、不溢出 */
    .modal-overlay { padding: 12px 8px; }
    .shopping-modal, .share-modal, .picker-modal, .modal { max-width: 100%; }
    .shopping-body, .picker-body { padding: 14px; }
    .shopping-footer { padding: 12px 14px; flex-direction: column; gap: 10px; align-items: stretch; }
    .shopping-actions { justify-content: space-between; }

    /* 本周菜单:手机端改成「按天纵向卡片」(代替挤成一团的 7 列网格) */
    .planner-box { padding: 12px 10px; }
    /* 分工区:横向滚动一排,不换行 */
    .planner-roles { flex-wrap: nowrap !important; overflow-x: auto; -webkit-overflow-scrolling: touch; scrollbar-width: none; font-size: 10px !important; padding: 6px 10px !important; gap: 5px !important; }
    .planner-roles::-webkit-scrollbar { display: none; }
    .planner-roles .role-badge { font-size: 10px !important; padding: 1px 6px !important; flex: 0 0 auto; white-space: nowrap; }
    .planner-roles .role-edit-btn { font-size: 10px !important; padding: 1px 6px !important; flex: 0 0 auto; white-space: nowrap; }
    .planner-roles > * { flex: 0 0 auto; white-space: nowrap; }
    /* 顶部说明 + 按钮:全部压缩到一行(不用 !important,避免覆盖 setup 时的 display:none) */
    .planner-header { flex-direction: column; gap: 6px; margin-bottom: 8px; }
    .planner-header > div:first-child { width: 100%; }
    .planner-header h2 { font-size: 16px !important; letter-spacing: 2px !important; margin-bottom: 2px !important; }
    .planner-header p {
      font-size: 11px !important;
      letter-spacing: 0 !important;
      white-space: nowrap !important;
      overflow: hidden !important;
      text-overflow: ellipsis !important;
      margin: 0 !important;
    }
    .planner-actions { width: 100%; margin: 0 !important; }
    .planner-actions > div { gap: 4px !important; flex-wrap: nowrap !important; overflow-x: auto; -webkit-overflow-scrolling: touch; scrollbar-width: none; justify-content: flex-start !important; }
    .planner-actions > div::-webkit-scrollbar { display: none; }
    .planner-actions .planner-btn { font-size: 10px !important; padding: 4px 8px !important; white-space: nowrap; flex: 0 0 auto; }
    .recipe-pool .pool-search { width: 100%; }
    #weekGrid.mobile-week { display: block; overflow: visible; background: transparent; padding: 0; gap: 0; }
    .day-card { background: rgba(255,255,255,0.95); border-radius: 12px; padding: 10px 12px; margin-bottom: 8px; }
    .day-card.today { box-shadow: 0 0 0 2px #FF6F00; }
    .day-card-header { display: flex; align-items: center; gap: 4px; flex-wrap: nowrap; font-weight: 700; color: #0D47A1; font-size: 13px; margin-bottom: 4px; white-space: nowrap; overflow-x: auto; scrollbar-width: none; }
    .day-card-header::-webkit-scrollbar { display: none; }
    .day-card-header .dm-btn { font-size: 10px !important; padding: 3px 7px !important; flex: 0 0 auto; }
    .day-card-header .dm-day-action { background: #fff; color: #666; border: 1px solid #ddd; }
    .day-card-header .dm-day-action.danger { color: #c00; border-color: #f3c6c6; }
    .day-card-header .dch-left { display: inline-flex; align-items: center; gap: 4px; flex: 0 0 auto; }
    .day-card-header .dch-right { display: inline-flex; align-items: center; gap: 4px; margin-left: auto; flex: 0 0 auto; }
    .day-meal-row { display: flex; align-items: flex-start; gap: 8px; padding: 7px 0; border-top: 1px solid #eef2f7; }
    .dm-label { font-size: 11px; font-weight: 600; min-width: 28px; padding-top: 5px; color: #666; letter-spacing: 0; }
    .dm-dish { font-size: 11px !important; padding: 4px 6px !important; gap: 3px !important; letter-spacing: 0 !important; }
    .dm-dish .x { width: 14px !important; height: 14px !important; font-size: 9px !important; }
    .dm-btn.add { font-size: 10px !important; padding: 3px 8px !important; }
    .dm-items { flex: 1; display: flex; flex-wrap: wrap; gap: 5px; min-width: 0; }
    /* ≤3 道菜:一排显示;若 emoji+菜名 太长就横向滚动,不压缩字符 */
    .dm-items.wrap-1 {
      flex-wrap: nowrap;
      overflow-x: auto;
      overflow-y: hidden;
      -webkit-overflow-scrolling: touch;
      scrollbar-width: none;
    }
    .dm-items.wrap-1::-webkit-scrollbar { display: none; }
    .dm-items.wrap-1 .dm-dish { flex: 0 0 auto; white-space: nowrap; min-width: 0; }
    .dm-items.wrap-1 .dm-btn.add { flex: 0 0 auto; }
    /* 正好 4 道:2×2 四宫格 */
    .dm-items.wrap-2x2 {
      display: grid !important;
      grid-template-columns: repeat(2, minmax(0, 1fr));
      gap: 5px;
    }
    .dm-items.wrap-2x2 .dm-dish { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; min-width: 0; }
    .dm-items.wrap-2x2 .dm-btn.add { grid-column: 1 / -1; }
    /* ≥5 道菜:固定每排 3 个,自动换行 */
    .dm-items.wrap-3col {
      display: grid !important;
      grid-template-columns: repeat(3, minmax(0, 1fr));
      gap: 5px;
    }
    .dm-items.wrap-3col .dm-dish { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; min-width: 0; }
    .dm-items.wrap-3col .dm-btn.add { grid-column: 1 / -1; }
    .dm-dish { padding: 6px 9px; border-radius: 8px; color: var(--text); font-size: 13px; font-weight: 600; display: inline-flex; align-items: center; gap: 4px; cursor: pointer; }
    .dm-dish .x { background: rgba(0,0,0,0.3); border: none; color: white; width: 16px; height: 16px; border-radius: 50%; font-size: 10px; cursor: pointer; line-height: 1; padding: 0; }
    .dm-btn { padding: 6px 10px; border-radius: 8px; font-size: 12px; cursor: pointer; font-family: inherit; background: white; font-weight: 600; }
    .dm-btn.add { border: 1px dashed #1976D2; color: #1976D2; }
    .dm-btn.left { border: 1px dashed #999; color: #666; }

    /* 入口卡 2 列 */
    .entry-cards { grid-template-columns: 1fr 1fr; gap: 10px; }

    /* 笔记打卡区:表单元素竖直堆叠不挤 */
    .note-card-header { gap: 6px; }
    .note-form { padding: 12px; }
    .rating-input { flex-wrap: wrap; }
    .photo-input-row { flex-direction: column; align-items: flex-start; }

    /* 冰箱推荐结果手机端 2 列 */
    .fridge-recipes-grid { grid-template-columns: 1fr 1fr; }
    .fridge-box { padding: 14px 12px; }

    /* 筛选条:每行横向滑动,整齐不换行 */
    .filter-row { flex-wrap: nowrap; overflow-x: auto; -webkit-overflow-scrolling: touch; padding-bottom: 4px; align-items: center; }
    .filter-row::-webkit-scrollbar { display: none; }
    .filter-row { scrollbar-width: none; }
    .filter-label { flex: 0 0 auto; min-width: 40px; font-size: 13px; }
    .filter-btn { flex: 0 0 auto; white-space: nowrap; padding: 6px 12px; font-size: 13px; }
    .search-box { flex: 1 0 140px; min-width: 140px; }
    .result-count { flex: 0 0 auto; white-space: nowrap; }
    /* 手机端主题恢复 flex 横滑(不用桌面的 6 列网格)*/
    .theme-grid { display: flex; gap: 6px; }
    .theme-grid .filter-btn { flex: 0 0 auto; }
  }

/* ============================================================
   HOMEPAGE REDESIGN 2026-05-30 · 老食堂招牌 / Rescue Station
   末尾覆盖,赢优先级
============================================================ */
:root {
  --rs-red:        #8E1B1B;
  --rs-red-deep:   #5C0E0E;
  --rs-red-bright: #B82C22;
  --rs-gold:       #C9A24B;
  --rs-gold-bright:#E0B85C;
  --rs-paper:      #F4ECD8;
  --rs-paper-deep: #E5D7B8;
  --rs-ink:        #1A1410;
  --rs-ink-soft:   #3A2E1E;
}

body {
  font-family: "Noto Sans SC", -apple-system, "PingFang SC", "Hiragino Sans GB", sans-serif;
}

/* ---------- Hero(全站) ---------- */
.hero {
  background:
    radial-gradient(circle at 92% 88%, rgba(212,162,75,0.10), transparent 18%),
    url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='40' height='40' viewBox='0 0 40 40'><g fill='none' stroke='%23D4A24B' stroke-width='0.6' opacity='0.08'><rect x='6' y='6' width='28' height='28'/><rect x='12' y='12' width='16' height='16'/><line x1='20' y1='12' x2='20' y2='6'/><line x1='20' y1='34' x2='20' y2='28'/><line x1='12' y1='20' x2='6' y2='20'/><line x1='34' y1='20' x2='28' y2='20'/></g></svg>"),
    linear-gradient(180deg, #8E1B1B 0%, #5C0E0E 100%) !important;
  padding: 32px 24px 48px !important;
  border-bottom: 3px double var(--rs-gold) !important;
}
.hero::before { display: none !important; }

.hero-corner-cn {
  font-family: "Noto Serif SC", serif;
  font-weight: 900;
  font-size: clamp(18px, 2.6vw, 24px);
  letter-spacing: 8px;
  color: var(--rs-gold-bright);
  margin-bottom: 4px;
  line-height: 1;
}
.hero-corner-en {
  font-family: "Playfair Display", serif;
  font-weight: 500;
  font-style: italic;
  font-size: clamp(11px, 1.4vw, 13px);
  letter-spacing: 6px;
  color: rgba(224,184,92,0.7);
  margin-bottom: 18px;
}
.hero h1 {
  font-family: "Noto Serif SC", serif !important;
  font-weight: 900 !important;
  font-size: clamp(36px, 6vw, 56px) !important;
  letter-spacing: 16px !important;
  color: #F4ECD8 !important;
  text-shadow:
    2px 2px 0 var(--rs-red-deep),
    4px 4px 0 rgba(0,0,0,0.3);
  margin-bottom: 18px !important;
  margin-right: -16px;
  padding-left: 16px;
}
.hero-meta {
  font-family: "Playfair Display", serif;
  font-weight: 500;
  font-size: clamp(10px, 1.3vw, 12px);
  letter-spacing: 4px;
  color: rgba(224,184,92,0.75);
  margin-bottom: 22px;
}
.slogan-wrap {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  position: relative;
  padding: 12px 26px;
  background: rgba(244,236,216,0.06);
  border: 1px solid rgba(212,162,75,0.4);
  border-radius: 4px;
}
.slogan-bracket {
  font-family: "Noto Serif SC", serif;
  font-size: clamp(22px, 3vw, 30px);
  color: var(--rs-gold-bright);
  font-weight: 700;
  line-height: 1;
}
.slogan-wrap .slogan {
  display: inline !important;
  background: none !important;
  border: none !important;
  border-radius: 0 !important;
  padding: 0 !important;
  margin: 0 !important;
  font-family: "Ma Shan Zheng", "Noto Serif SC", serif !important;
  font-weight: 400 !important;
  font-size: clamp(22px, 3.4vw, 32px) !important;
  letter-spacing: 4px !important;
  color: #F4ECD8 !important;
}
.slogan-stamp {
  position: absolute;
  right: -38px;
  top: -14px;
  transform: rotate(8deg);
  padding: 5px 10px;
  border: 2px solid #FF5050;
  color: #FF5050;
  font-family: "Playfair Display", serif;
  font-style: italic;
  font-weight: 700;
  font-size: 13px;
  letter-spacing: 1.5px;
  background: rgba(255,80,80,0.06);
  box-shadow: 0 0 0 1px rgba(255,80,80,0.2);
  opacity: 0.92;
  white-space: nowrap;
}
.hero .subtitle, .hero .tagline, .hero-stats { display: none !important; }

/* ---------- 首页主区 ---------- */
.home-section {
  background:
    url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='6' height='6'><circle cx='1' cy='1' r='0.4' fill='%238E1B1B' opacity='0.06'/></svg>"),
    var(--rs-paper) !important;
  padding: 36px 24px 60px !important;
  margin-top: -8px;
  justify-content: flex-start !important;
}
.home-banner {
  text-align: center;
  margin-bottom: 28px;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 14px;
}
.hb-dash {
  font-family: "Noto Serif SC", serif;
  font-size: 18px;
  letter-spacing: -2px;
  color: var(--rs-ink-soft);
  opacity: 0.45;
}
.hb-text {
  font-family: "Noto Serif SC", serif;
  font-weight: 700;
  font-size: clamp(13px, 1.8vw, 16px);
  letter-spacing: 3px;
  color: var(--rs-ink-soft);
}
.home-cards {
  grid-template-columns: repeat(3, 1fr) !important;
  gap: 24px !important;
  max-width: 1180px !important;
}
.home-card {
  background:
    url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='120' height='120'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2'/><feColorMatrix values='0 0 0 0 0.15  0 0 0 0 0.10  0 0 0 0 0.06  0 0 0 0.35 0'/></filter><rect width='120' height='120' filter='url(%23n)'/></svg>"),
    linear-gradient(180deg, #FAF4E2 0%, #F0E5C9 100%) !important;
  background-blend-mode: multiply, normal !important;
  border: 1px solid var(--rs-gold) !important;
  border-radius: 4px !important;
  padding: 38px 24px 26px !important;
  min-height: 360px !important;
  color: var(--rs-ink) !important;
  box-shadow:
    0 0 0 1px rgba(201,162,75,0.25),
    0 12px 32px rgba(92,14,14,0.18),
    inset 0 0 0 6px var(--rs-paper) !important;
  gap: 8px !important;
  justify-content: flex-start !important;
  align-items: center !important;
  position: relative;
  overflow: hidden;
  text-align: center;
  transition: transform 0.25s, box-shadow 0.25s;
  animation: rsCardIn 0.65s ease both;
}
.home-card.card-recipes  { animation-delay: 0s; }
.home-card.card-blindbox { animation-delay: 0.12s; }
.home-card.card-fridge   { animation-delay: 0.24s; }
@keyframes rsCardIn {
  from { opacity: 0; transform: translateY(22px); }
  to   { opacity: 1; transform: translateY(0); }
}
.home-card::after { display: none !important; }
.home-card:hover, .home-card:active {
  transform: translateY(-4px) !important;
  border-color: var(--rs-gold-bright) !important;
  box-shadow:
    0 0 0 1px rgba(232,184,92,0.45),
    0 20px 48px rgba(92,14,14,0.28),
    inset 0 0 0 6px var(--rs-paper) !important;
}
.hc-num {
  position: absolute;
  top: 14px; left: 18px;
  font-family: "Playfair Display", serif;
  font-style: italic;
  font-size: 16px;
  font-weight: 500;
  color: var(--rs-gold);
  letter-spacing: 1px;
}
.hc-num sup { font-size: 0.7em; vertical-align: super; }
.hc-watermark {
  position: absolute;
  right: -18px; bottom: -28px;
  font-family: "Noto Serif SC", serif;
  font-weight: 900;
  font-size: 200px;
  line-height: 1;
  color: var(--rs-red);
  opacity: 0.07;
  pointer-events: none;
  user-select: none;
}
.hc-bigtitle {
  font-family: "Noto Serif SC", serif;
  font-weight: 900;
  font-size: 38px;
  letter-spacing: 6px;
  color: var(--rs-red);
  margin-top: 18px;
  margin-left: 3px;
  z-index: 1;
}
.hc-subtitle {
  font-family: "Ma Shan Zheng", "Noto Serif SC", serif;
  font-size: 18px;
  letter-spacing: 6px;
  color: var(--rs-ink-soft);
  opacity: 0.7;
  z-index: 1;
  margin-top: -4px;
}
.hc-rule {
  width: 60px;
  height: 1px;
  background: var(--rs-gold);
  margin: 8px 0 10px;
  position: relative;
  z-index: 1;
}
.hc-rule::before, .hc-rule::after {
  content: "";
  position: absolute;
  top: 50%;
  width: 6px; height: 6px;
  border: 1px solid var(--rs-gold);
  transform: translateY(-50%) rotate(45deg);
  background: var(--rs-paper);
}
.hc-rule::before { left: -14px; }
.hc-rule::after  { right: -14px; }
.hc-pain {
  font-family: "Noto Sans SC", sans-serif;
  font-size: 14px;
  color: var(--rs-ink-soft);
  font-weight: 500;
  letter-spacing: 1px;
  z-index: 1;
}
.hc-value {
  font-family: "Noto Sans SC", sans-serif;
  font-size: 13px;
  color: var(--rs-ink-soft);
  opacity: 0.85;
  z-index: 1;
  margin-bottom: 14px;
}
.hc-value span { white-space: nowrap; }
.hc-cta {
  font-family: "Noto Serif SC", serif;
  font-weight: 700;
  font-size: 15px;
  letter-spacing: 4px;
  color: var(--rs-red);
  padding: 8px 22px;
  border: 1.5px solid var(--rs-red);
  border-radius: 2px;
  background: rgba(244,236,216,0.4);
  margin-top: auto;
  z-index: 1;
  transition: background 0.2s, color 0.2s;
}
/* 红色 CTA 只在「跟焦中」或「真鼠标 hover」时出现;触屏 :hover 会粘住,不参与 */
.home-card.hc-focused .hc-cta {
  background: var(--rs-red);
  color: var(--rs-paper);
  border-color: var(--rs-red);
  box-shadow: 0 4px 14px rgba(157,2,8,0.35);
}
@media (hover: hover) and (pointer: fine) {
  .home-card:hover .hc-cta {
    background: var(--rs-red);
    color: var(--rs-paper);
    border-color: var(--rs-red);
    box-shadow: 0 4px 14px rgba(157,2,8,0.35);
  }
}
.home-card .hc-icon, .home-card .hc-title, .home-card .hc-desc { display: none !important; }

/* ---------- side-nav 配色统一 ---------- */
.side-item.active {
  background: linear-gradient(180deg, var(--rs-red) 0%, var(--rs-red-deep) 100%) !important;
  box-shadow: 0 4px 14px rgba(92,14,14,0.35) !important;
  color: var(--rs-paper) !important;
}

/* ---------- 手机端 ---------- */
@media (max-width: 640px) {
  /* 首页 hero 恢复正常尺寸(之前太小了) */
  .hero { padding: 24px 16px 36px !important; }
  .hero h1 { font-size: 32px !important; letter-spacing: 10px !important; margin-bottom: 14px !important; }
  .hero-corner-cn { font-size: 16px; letter-spacing: 5px; }
  .hero-corner-en { font-size: 10px; letter-spacing: 4px; margin-bottom: 14px; }
  .hero-meta { font-size: 10px; letter-spacing: 2px; margin-bottom: 16px; }
  .slogan-wrap .slogan { font-size: 18px !important; letter-spacing: 2px !important; }
  .slogan-bracket { font-size: 18px; }
  .slogan-stamp { font-size: 10px; padding: 3px 5px; right: -14px; top: -9px; }
  /* === 子页面(非首页)hero 只剩「英国留子食堂」+ 右上「我的」头像 === */
  body:not([data-view="home"]) .hero { padding: 10px 14px !important; border-bottom-width: 1px !important; }
  body:not([data-view="home"]) .hero h1 { font-size: 16px !important; letter-spacing: 4px !important; margin-bottom: 0 !important; text-shadow: 1px 1px 0 var(--rs-red-deep) !important; }
  body:not([data-view="home"]) .hero-corner-cn,
  body:not([data-view="home"]) .hero-corner-en,
  body:not([data-view="home"]) .hero-meta,
  body:not([data-view="home"]) .slogan-wrap { display: none !important; }
  body:not([data-view="home"]) .hero-avatar { width: 32px !important; height: 32px !important; font-size: 16px !important; top: 8px !important; right: 12px !important; }
  /* 首页区:3 张卡占满屏 · 卡片明显变大 */
  .home-section { padding: 10px 14px 14px !important; min-height: calc(100vh - 220px) !important; display: flex; flex-direction: column; justify-content: stretch; }
  .home-banner { gap: 6px; margin-bottom: 8px; flex: 0 0 auto; }
  .hb-text { font-size: 11px; letter-spacing: 1px; }
  .home-cards {
    grid-template-columns: 1fr !important;
    gap: 10px !important;
    max-width: 100% !important;
    flex: 1 1 auto;
    align-content: stretch;
  }
  .home-card {
    min-height: 0 !important;
    padding: 24px 18px !important;
    display: flex !important;
    flex-direction: column;
    justify-content: center;
    align-items: center;
    gap: 6px;
  }
  .hc-bigtitle { font-size: 28px !important; letter-spacing: 5px !important; margin: 0 !important; }
  .hc-subtitle { font-size: 13px !important; letter-spacing: 4px !important; margin: 0 !important; }
  .hc-watermark { font-size: 120px !important; right: -8px !important; bottom: -16px !important; opacity: 0.1 !important; }
  .hc-cta { font-size: 13px !important; padding: 6px 18px !important; letter-spacing: 3px !important; margin-top: 4px; }
  .hc-num { font-size: 11px !important; }
}

/* ============================================================
   盲盒页配色统一(2026-05-30)
============================================================ */
.lucky-box,
section.dish-duty-box {
  background:
    url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='120' height='120'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2'/><feColorMatrix values='0 0 0 0 0.15  0 0 0 0 0.10  0 0 0 0 0.06  0 0 0 0.3 0'/></filter><rect width='120' height='120' filter='url(%23n)'/></svg>"),
    linear-gradient(180deg, #FAF4E2 0%, #F0E5C9 100%) !important;
  background-blend-mode: multiply, normal !important;
  border: 1px solid var(--rs-gold) !important;
  border-radius: 4px !important;
  box-shadow:
    0 0 0 1px rgba(201,162,75,0.25),
    0 8px 22px rgba(92,14,14,0.12),
    inset 0 0 0 5px var(--rs-paper) !important;
  padding: 28px 26px !important;
}

/* 大水印「🎲」→「签」汉字 */
.lucky-box::before {
  content: "签" !important;
  font-family: "Noto Serif SC", serif !important;
  font-weight: 900 !important;
  font-size: 200px !important;
  color: var(--rs-red) !important;
  opacity: 0.07 !important;
  right: -20px !important;
  top: -30px !important;
  transform: rotate(8deg) !important;
}

/* 标题 */
.lucky-box .lucky-title h2,
.lucky-box .lucky-header h2,
section.dish-duty-box .dish-duty-head h2 {
  font-family: "Noto Serif SC", serif !important;
  font-weight: 900 !important;
  color: var(--rs-red) !important;
  letter-spacing: 4px !important;
}
.lucky-box .lucky-title p,
.lucky-box .lucky-header p,
section.dish-duty-box .dish-duty-head p {
  font-family: "Noto Sans SC", sans-serif !important;
  color: var(--rs-ink-soft) !important;
}

/* options chip */
.lucky-box .lucky-options label {
  background: rgba(244,236,216,0.5) !important;
  border: 1px solid var(--rs-gold) !important;
  color: var(--rs-ink) !important;
}

/* meal-tag(每张卡顶):color/border 由这里定,background 留给 inline 跟 session 色一致 */
.lucky-box .lucky-meal-tag {
  color: var(--rs-paper) !important;
  border: none !important;
  text-shadow: 0 1px 2px rgba(0,0,0,0.2);
  font-family: "Noto Serif SC", serif !important;
  letter-spacing: 2px !important;
  font-weight: 700 !important;
}

/* 内层 summary / stepper */
.lucky-box .lucky-summary,
.lucky-box .meal-stepper {
  background: rgba(244,236,216,0.5) !important;
  border: 1px solid var(--rs-gold) !important;
}

/* stepper +/- 圆按钮 */
.meal-stepper button {
  background: var(--rs-red) !important;
  color: var(--rs-paper) !important;
}
.meal-stepper button:hover:not(:disabled) {
  background: var(--rs-red-deep) !important;
}
.meal-stepper .count { color: var(--rs-ink) !important; }

/* 几人食 5 个按钮:等宽 + 上下对齐(桌面 5 列 / 手机 3 列) */
.ps-people-grid {
  display: grid;
  grid-template-columns: repeat(5, 1fr);
  gap: 10px;
  max-width: 540px;
  margin: 0 auto;
}
.ps-people-btn {
  font-size: 15px !important;
  padding: 12px 8px !important;
  letter-spacing: 1px !important;
  text-align: center;
  white-space: nowrap;
}
@media (max-width: 640px) {
  .ps-people-grid { grid-template-columns: repeat(3, 1fr); gap: 8px; max-width: 100%; }
  .ps-people-btn { font-size: 13px !important; padding: 10px 4px !important; letter-spacing: 0 !important; }
}

/* 主按钮:🎲 帮我决定 */
.lucky-main-btn {
  background: var(--rs-red) !important;
  color: var(--rs-paper) !important;
  border: 2px solid var(--rs-gold) !important;
  border-radius: 4px !important;
  font-family: "Noto Serif SC", serif !important;
  font-weight: 700 !important;
  letter-spacing: 6px !important;
  box-shadow:
    0 0 0 1px rgba(201,162,75,0.3),
    0 6px 18px rgba(92,14,14,0.25) !important;
}
.lucky-main-btn:hover {
  background: var(--rs-red-deep) !important;
  box-shadow:
    0 0 0 1px var(--rs-gold-bright),
    0 10px 28px rgba(92,14,14,0.35) !important;
}
/* 手机端:几人吃 stepper + 主按钮缩小 */
@media (max-width: 640px) {
  .meal-steppers { margin: 12px 0 20px !important; }
  .meal-steppers .meal-stepper { padding: 8px 12px !important; gap: 10px !important; }
  .meal-steppers .meal-stepper .label { font-size: 13px !important; letter-spacing: 2px !important; }
  .meal-steppers .meal-stepper .count { font-size: 18px !important; min-width: 22px !important; }
  .meal-stepper button { width: 30px !important; height: 30px !important; font-size: 16px !important; }
  .lucky-main-btn {
    width: 100% !important;
    font-size: 16px !important;
    letter-spacing: 3px !important;
    padding: 18px 20px !important;
    margin-top: 6px !important;
  }
  .lucky-summary { font-size: 12px !important; line-height: 1.6 !important; padding: 8px 10px !important; }
}

/* dish-duty 子按钮 */
.dish-duty-btn {
  background: var(--rs-red) !important;
  color: var(--rs-paper) !important;
  border: 2px solid var(--rs-gold) !important;
  border-radius: 4px !important;
  font-family: "Noto Serif SC", serif !important;
  font-weight: 700 !important;
  letter-spacing: 3px !important;
  box-shadow:
    0 0 0 1px rgba(201,162,75,0.3),
    0 6px 18px rgba(92,14,14,0.25) !important;
}
.dish-duty-btn:hover {
  background: var(--rs-red-deep) !important;
  color: var(--rs-paper) !important;
  box-shadow:
    0 0 0 1px rgba(201,162,75,0.5),
    0 8px 22px rgba(92,14,14,0.32) !important;
}

/* weekplan-cta */
.weekplan-cta {
  background: linear-gradient(180deg, #FAF4E2 0%, #F0E5C9 100%) !important;
  border: 1px solid var(--rs-gold) !important;
  border-radius: 4px !important;
  box-shadow:
    0 0 0 1px rgba(201,162,75,0.25),
    0 6px 18px rgba(92,14,14,0.12) !important;
}
.wp-cta-left .wp-cta-icon {
  background: var(--rs-red) !important;
  color: var(--rs-paper) !important;
  border-radius: 4px !important;
}
.wp-cta-title {
  font-family: "Noto Serif SC", serif !important;
  color: var(--rs-red) !important;
  font-weight: 700 !important;
}
.wp-cta-desc { color: var(--rs-ink-soft) !important; }
.wp-cta-arrow { color: var(--rs-gold) !important; }

/* 盲盒页背景(整页 wrap 用 paper 色,跟主页一致) */
section[data-view="blindbox"] {
  background: transparent;
}

/* ============================================================
   全站色调统一(2026-05-30)
   重定向 :root 变量 → 老食堂调色板
============================================================ */
body {
  background: var(--rs-paper) !important;
}

/* :root 变量重定向(让所有 var(--primary)等自动跟随)*/
html {
  --primary: #8E1B1B;
  --primary-dark: #5C0E0E;
  --accent: #C9A24B;
  --accent-light: #E0B85C;
  --border: #C9A24B;
}

/* ========== 菜谱页 ========== */
.filters {
  background: linear-gradient(180deg, #FAF4E2 0%, #F0E5C9 100%) !important;
  border: 1px solid var(--rs-gold) !important;
  border-radius: 4px !important;
  box-shadow:
    0 0 0 1px rgba(201,162,75,0.25),
    0 6px 18px rgba(92,14,14,0.10) !important;
}
.card {
  background: #FAF4E2 !important;
  border: 1px solid var(--rs-gold) !important;
  border-radius: 4px !important;
  box-shadow:
    0 0 0 1px rgba(201,162,75,0.2),
    0 6px 16px rgba(92,14,14,0.10) !important;
}
.card:hover {
  border-color: var(--rs-gold-bright) !important;
  box-shadow:
    0 0 0 1px rgba(232,184,92,0.4),
    0 10px 24px rgba(92,14,14,0.18) !important;
}

/* ========== 冰箱页 ========== */
.fridge-box {
  background:
    url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='120' height='120'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2'/><feColorMatrix values='0 0 0 0 0.15  0 0 0 0 0.10  0 0 0 0 0.06  0 0 0 0.3 0'/></filter><rect width='120' height='120' filter='url(%23n)'/></svg>"),
    linear-gradient(180deg, #FAF4E2 0%, #F0E5C9 100%) !important;
  background-blend-mode: multiply, normal !important;
  border: 1px solid var(--rs-gold) !important;
  border-radius: 4px !important;
  box-shadow:
    0 0 0 1px rgba(201,162,75,0.25),
    0 8px 22px rgba(92,14,14,0.12),
    inset 0 0 0 5px var(--rs-paper) !important;
  padding: 28px 26px !important;
}
.fridge-box::before {
  content: "鲜" !important;
  font-family: "Noto Serif SC", serif !important;
  font-weight: 900 !important;
  font-size: 200px !important;
  color: var(--rs-red) !important;
  opacity: 0.07 !important;
  right: -20px !important;
  top: -30px !important;
  transform: rotate(8deg) !important;
}
.fridge-box .fridge-header h2,
.fridge-box .fridge-selected-label,
.fridge-box .fridge-selected-label strong,
.fridge-box .fridge-result-title {
  font-family: "Noto Serif SC", serif !important;
  color: var(--rs-red) !important;
}
.fridge-box .fridge-cat-title {
  color: var(--rs-ink-soft) !important;
  font-family: "Noto Serif SC", serif !important;
}
.fridge-box .fridge-chips-section,
.fridge-box .fridge-results {
  background: rgba(244,236,216,0.55) !important;
  border: 1px solid var(--rs-gold) !important;
  border-radius: 4px !important;
}
.fridge-box .fridge-search-row {
  border-color: var(--rs-gold) !important;
  border-radius: 4px !important;
}
.fridge-box .fridge-search-row:focus-within {
  border-color: var(--rs-red) !important;
  box-shadow: 0 0 0 2px rgba(142,27,27,0.15) !important;
}
.fridge-box .fridge-chip {
  border-color: var(--rs-gold) !important;
  background: var(--rs-paper) !important;
  color: var(--rs-ink) !important;
}
.fridge-box .fridge-chip:hover {
  border-color: var(--rs-red) !important;
  color: var(--rs-red) !important;
}
.fridge-box .fridge-chip.active {
  background: var(--rs-red) !important;
  border-color: var(--rs-red) !important;
  color: var(--rs-paper) !important;
}
.fridge-box .fridge-recipe-card.perfect {
  border-color: var(--rs-red) !important;
}

/* fridge-nearby-hint 提示条 */
.fridge-nearby-hint {
  background: rgba(244,236,216,0.5) !important;
  border-color: var(--rs-gold) !important;
}
.fridge-nearby-hint strong {
  color: var(--rs-red) !important;
  display: inline-block;
  margin-top: 6px;
  padding: 3px 12px;
  border: 1px solid var(--rs-red);
  border-radius: 10px;
  font-size: 12px;
}

/* ========== 通用按钮(shopping-btn 等) ========== */
.shopping-btn {
  background: var(--rs-red) !important;
  color: var(--rs-paper) !important;
  border: 2px solid var(--rs-gold) !important;
  border-radius: 4px !important;
  font-family: "Noto Serif SC", serif !important;
  letter-spacing: 4px !important;
}
.shopping-btn:hover {
  background: var(--rs-red-deep) !important;
}
.shopping-btn.secondary {
  background: var(--rs-paper) !important;
  color: var(--rs-red) !important;
  border: 1.5px solid var(--rs-red) !important;
}

/* 回首页 / 头像按钮也跟着调 */
.back-home-btn {
  background: var(--rs-paper) !important;
  color: var(--rs-red) !important;
  border: 1.5px solid var(--rs-red) !important;
  border-radius: 4px !important;
  font-family: "Noto Serif SC", serif !important;
  letter-spacing: 2px !important;
}

/* 子页顶部导航条:sticky · 深红高对比 · 任何位置都能跳页 */
.top-nav-row {
  display: flex;
  align-items: center;
  gap: 10px;
  flex-wrap: wrap;
  position: sticky;
  top: 0;
  z-index: 90;
  margin: 0 -20px 16px;
  padding: 10px 20px;
  background: linear-gradient(180deg, var(--rs-red) 0%, var(--rs-red-deep) 100%);
  border-bottom: 2px solid var(--rs-gold);
  box-shadow: 0 6px 14px rgba(92,14,14,0.25);
}
.top-nav-row.hidden { display: none !important; }
.top-nav-row .back-home-btn {
  background: rgba(244,236,216,0.15) !important;
  color: var(--rs-paper) !important;
  border: 1px solid var(--rs-gold) !important;
  padding: 5px 12px !important;
  font-size: 13px !important;
  letter-spacing: 1px !important;
}
.top-nav-row .back-home-btn:hover {
  background: var(--rs-paper) !important;
  color: var(--rs-red) !important;
}
.top-nav-jumps {
  display: flex;
  gap: 6px;
  flex-wrap: wrap;
  align-items: center;
}
@media (max-width: 640px) {
  .top-nav-jumps {
    flex-wrap: nowrap;
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
    scrollbar-width: none;
    gap: 5px;
  }
  .top-nav-jumps::-webkit-scrollbar { display: none; }
  .top-nav-jumps .tn-btn { flex: 0 0 auto; white-space: nowrap; }
}
.tn-btn {
  background: rgba(244,236,216,0.12);
  color: var(--rs-paper);
  border: 1px solid var(--rs-gold);
  border-radius: 4px;
  padding: 5px 11px;
  font-family: "Noto Sans SC", sans-serif;
  font-size: 13px;
  font-weight: 600;
  cursor: pointer;
  transition: all 0.15s;
  letter-spacing: 1px;
}
.tn-btn:hover:not(:disabled) {
  background: var(--rs-paper);
  color: var(--rs-red);
}
.tn-btn.active {
  background: var(--rs-paper);
  color: var(--rs-red);
  border-color: var(--rs-gold-bright);
  cursor: default;
}
@media (max-width: 640px) {
  /* 手机端:取消 sticky,让 nav 跟着滚动,避免在初次加载时覆盖紧贴 hero */
  .top-nav-row { position: static !important; margin: 0 -14px 14px; padding: 8px 14px; gap: 6px; }
  .tn-btn { font-size: 11px; padding: 4px 8px; letter-spacing: 0; }
  .top-nav-row .back-home-btn { font-size: 11px !important; padding: 4px 8px !important; }
}

/* sidebar 隐藏:顶部 nav 已经覆盖跳转功能,不再重复 */
.side-nav { display: none !important; }
.container { padding-left: 14px !important; }

/* sidebar 强化(2026-05-30)
   背景用深红 + 烫金边,从 paper 主页里跳出来,
   让用户清楚看到「这是导航栏,随时点」*/
.side-nav {
  background: linear-gradient(180deg, var(--rs-red) 0%, var(--rs-red-deep) 100%) !important;
  border: 2px solid var(--rs-gold) !important;
  border-radius: 4px !important;
  box-shadow:
    0 0 0 1px rgba(201,162,75,0.4),
    0 12px 28px rgba(92,14,14,0.25) !important;
  padding: 16px 12px !important;
  gap: 10px !important;
}
.side-item {
  color: var(--rs-paper) !important;
  background: transparent !important;
  border-radius: 4px !important;
  padding: 14px 12px !important;
}
.side-item .si-label {
  color: var(--rs-paper) !important;
  font-family: "Noto Serif SC", serif !important;
  font-weight: 700 !important;
}
.side-item:hover {
  background: rgba(244,236,216,0.18) !important;
  transform: translateX(3px) !important;
}
.side-item.active {
  background: var(--rs-paper) !important;
  color: var(--rs-red) !important;
  box-shadow: 0 4px 14px rgba(0,0,0,0.25) !important;
}
.side-item.active .si-label {
  color: var(--rs-red) !important;
}

/* 兜底:sidebar 一定要显示(避免任何隐藏 class 干扰)*/
.side-nav.hidden { display: flex !important; }
@media (max-width: 640px) {
  /* 手机端横向 bar 也保持深红 */
  .side-nav { padding: 8px 8px !important; }
}

/* ============================================================
   菜卡封面纸感版(2026-05-30)
   .card-cover 从彩色 gradient → 老菜单纸感
============================================================ */
.card-cover {
  background:
    url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='120' height='120'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2'/><feColorMatrix values='0 0 0 0 0.15  0 0 0 0 0.10  0 0 0 0 0.06  0 0 0 0.35 0'/></filter><rect width='120' height='120' filter='url(%23n)'/></svg>"),
    linear-gradient(180deg, #FAF4E2 0%, #F0E5C9 100%) !important;
  background-blend-mode: multiply, normal !important;
  color: var(--rs-red) !important;
  text-shadow: none !important;
  border-bottom: 1px solid var(--rs-gold) !important;
}
.card-cover .icon {
  filter: none !important;
  font-size: 52px !important;
  opacity: 0.88;
}
.card-cover .name {
  font-family: "Noto Serif SC", serif !important;
  font-weight: 900 !important;
  font-size: 19px !important;
  color: var(--rs-red) !important;
  letter-spacing: 3px !important;
  text-shadow: none !important;
}
/* 手机端再压一档 —— 必须放在「菜卡封面纸感版」之后,否则被 19px / 52px 覆盖 */
@media (max-width: 640px) {
  .card-cover { height: 78px !important; }
  .card-cover .icon { font-size: 16px !important; opacity: 0.85; margin-bottom: 2px !important; }
  .card-cover .name {
    font-size: 11px !important;
    letter-spacing: 0 !important;
    line-height: 1.2 !important;
    padding: 2px 4px !important;
    color: var(--rs-red) !important;
    text-shadow: 0 1px 0 rgba(255,253,247,0.8) !important;
  }
}
.card-cover .category-badge {
  font-family: "Playfair Display", "Noto Serif SC", serif !important;
  background: var(--rs-paper) !important;
  color: var(--rs-red) !important;
  border: 1px solid var(--rs-gold) !important;
  font-style: italic;
  font-weight: 600 !important;
  letter-spacing: 1px !important;
  border-radius: 2px !important;
  padding: 3px 8px !important;
}
.card-cover .meals-badge {
  background: rgba(142,27,27,0.15) !important;
  color: var(--rs-red) !important;
  backdrop-filter: none !important;
  border: 1px solid rgba(201,162,75,0.5) !important;
  border-radius: 2px !important;
  padding: 2px 6px !important;
}
.card-cover img {
  border-bottom: 1px solid var(--rs-gold);
}

/* card-body 文字颜色 */
.card-body {
  background: var(--rs-paper) !important;
}
.card-meta { color: var(--rs-ink-soft) !important; }

/* 难度药丸保持原 3 色(易/中/难 区分需要)*/

/* 菜卡 hover 效果(承袭 .card 的 hover,但配色统一)*/
.card:hover .card-cover {
  background:
    url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='120' height='120'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2'/><feColorMatrix values='0 0 0 0 0.15  0 0 0 0 0.10  0 0 0 0 0.06  0 0 0 0.3 0'/></filter><rect width='120' height='120' filter='url(%23n)'/></svg>"),
    linear-gradient(180deg, #F7EFD8 0%, #ECDFC0 100%) !important;
  background-blend-mode: multiply, normal !important;
}

/* ============================================================
   一桌饭盲盒新流程(2026-05-30)
   几人吃 stepper + 配菜提示
============================================================ */
.alloc-hint {
  background: rgba(244,236,216,0.6);
  border: 1px dashed var(--rs-gold);
  border-radius: 4px;
  padding: 10px 14px;
  text-align: center;
  font-family: "Noto Sans SC", sans-serif;
  font-size: 14px;
  color: var(--rs-ink-soft);
  margin-top: 8px;
}
.alloc-hint strong {
  color: var(--rs-red);
  font-family: "Noto Serif SC", serif;
  font-weight: 900;
  font-size: 16px;
  margin: 0 2px;
}
.alloc-chip {
  display: inline-block;
  background: var(--rs-paper);
  border: 1px solid var(--rs-gold);
  color: var(--rs-red);
  font-family: "Noto Serif SC", serif;
  font-weight: 700;
  padding: 2px 10px;
  border-radius: 2px;
  margin: 0 3px;
  font-size: 13px;
  letter-spacing: 1px;
}
/* 几人吃 stepper 让它独占一行 + 居中 */
.meal-steppers {
  grid-template-columns: 1fr !important;
}
.meal-steppers .meal-stepper {
  justify-content: center;
  gap: 16px;
  padding: 14px 18px;
}
.meal-steppers .meal-stepper .label {
  font-family: "Noto Serif SC", serif;
  font-weight: 700;
  font-size: 16px;
  letter-spacing: 3px;
  color: var(--rs-red);
}
.meal-steppers .meal-stepper .count {
  font-size: 22px !important;
  font-family: "Noto Serif SC", serif !important;
  font-weight: 900;
  color: var(--rs-red);
  min-width: 30px !important;
}

/* 「今天谁做饭」+ 「今天谁洗碗」并排两栏 */
.duty-row {
  display: grid;        /* 没有 !important —— 让 showView 的 display:none 仍能赢 */
  grid-template-columns: 1fr 1fr;
  gap: 16px;
  margin-bottom: 24px;
}
.duty-row > .dish-duty-box {
  margin-bottom: 0 !important;
}
/* 手机端:展开态紧凑,消掉底部多余留白 */
@media (max-width: 640px) {
  .dish-duty-box { padding: 16px 14px !important; margin-top: 12px !important; }
  .dish-duty-head { margin-bottom: 8px !important; }
  .dish-duty-head h2 { font-size: 20px !important; margin-bottom: 4px !important; letter-spacing: 2px !important; font-family: "STKaiti","KaiTi","楷体",serif !important; }
  .dish-duty-head p { font-size: 13px !important; }
  .dish-duty-members { margin: 8px 0 16px !important; gap: 5px !important; }
  .dd-member { padding: 5px 10px !important; font-size: 12px !important; border-radius: 8px !important; }
  .dd-hint { display: none !important; }
  .dish-duty-btn { padding: 12px 14px !important; font-size: 14px !important; border-radius: 10px !important; letter-spacing: 1px !important; }
  /* 没结果时不要占 36px,有结果时再撑开 */
  .dish-duty-result { min-height: 0 !important; margin-top: 16px !important; font-size: 14px !important; }
  .dish-duty-result:empty { display: none !important; margin: 0 !important; }
  /* stats 区为空时不要 margin,有内容才撑开 */
  .dish-duty-stats { margin-top: 8px !important; font-size: 11px !important; gap: 10px !important; }
  .dish-duty-stats:empty { display: none !important; margin: 0 !important; }
}
@media (max-width: 640px) {
  .duty-row {
    grid-template-columns: 1fr;
    gap: 12px;
  }
}

/* ============================================================
   本周菜单(planner)页全套色调统一(2026-05-30)
============================================================ */
.planner-box {
  background:
    url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='120' height='120'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2'/><feColorMatrix values='0 0 0 0 0.15  0 0 0 0 0.10  0 0 0 0 0.06  0 0 0 0.3 0'/></filter><rect width='120' height='120' filter='url(%23n)'/></svg>"),
    linear-gradient(180deg, #FAF4E2 0%, #F0E5C9 100%) !important;
  background-blend-mode: multiply, normal !important;
  border: 1px solid var(--rs-gold) !important;
  border-radius: 4px !important;
  box-shadow:
    0 0 0 1px rgba(201,162,75,0.25),
    0 8px 22px rgba(92,14,14,0.12),
    inset 0 0 0 5px var(--rs-paper) !important;
  padding: 28px 26px !important;
}
.planner-box::before {
  content: "周" !important;
  font-family: "Noto Serif SC", serif !important;
  font-weight: 900 !important;
  font-size: 200px !important;
  color: var(--rs-red) !important;
  opacity: 0.07 !important;
  right: -20px !important;
  top: -30px !important;
  transform: rotate(8deg) !important;
}

.planner-header h2 {
  font-family: "Noto Serif SC", serif !important;
  font-weight: 900 !important;
  color: var(--rs-red) !important;
  letter-spacing: 4px !important;
}
.planner-header p {
  font-family: "Noto Sans SC", sans-serif !important;
  color: var(--rs-ink-soft) !important;
}

/* planner 全套按钮 */
.planner-btn {
  background: var(--rs-paper) !important;
  color: var(--rs-red) !important;
  border: 1.5px solid var(--rs-red) !important;
  border-radius: 4px !important;
  font-family: "Noto Serif SC", serif !important;
  letter-spacing: 2px !important;
}
.planner-btn:hover {
  background: var(--rs-red) !important;
  color: var(--rs-paper) !important;
}
.planner-btn.primary {
  background: var(--rs-red) !important;
  color: var(--rs-paper) !important;
  border: 2px solid var(--rs-gold) !important;
}
.planner-btn.primary:hover {
  background: var(--rs-red-deep) !important;
}
.planner-btn.danger {
  background: transparent !important;
  color: var(--rs-red) !important;
  border: 1px solid var(--rs-red) !important;
}
.planner-btn.cta {
  background: var(--rs-red) !important;
  color: var(--rs-paper) !important;
  border: 2px solid var(--rs-gold) !important;
}
.planner-btn.cta:hover {
  background: var(--rs-red-deep) !important;
}

/* week 表头 + 行标签 + 单元格 */
.week-cell-header {
  background: rgba(244,236,216,0.7) !important;
  color: var(--rs-red) !important;
  font-family: "Noto Serif SC", serif !important;
  font-weight: 700 !important;
  border: 1px solid rgba(201,162,75,0.4) !important;
  border-radius: 4px !important;
}
.week-row-label {
  background: rgba(244,236,216,0.55) !important;
  color: var(--rs-red) !important;
  font-family: "Noto Serif SC", serif !important;
  font-weight: 700 !important;
  border: 1px solid rgba(201,162,75,0.4) !important;
  border-radius: 4px !important;
}
.week-slot {
  background: rgba(255,255,255,0.85) !important;
  border: 1.5px dashed rgba(201,162,75,0.45) !important;
  border-radius: 4px !important;
  color: var(--rs-ink-soft) !important;
}
.week-slot:hover {
  border-color: var(--rs-red) !important;
  background: rgba(255,255,255,1) !important;
}
.week-slot.empty {
  border: 1px dashed rgba(201,162,75,0.35) !important;
  background: rgba(244,236,216,0.45) !important;
}
.week-slot.drag-over {
  border-color: var(--rs-red) !important;
  background: rgba(232,184,92,0.18) !important;
}

/* 角色 + 编辑按钮 */
.planner-roles {
  background: rgba(244,236,216,0.55) !important;
  color: var(--rs-ink-soft) !important;
  border: 1px solid rgba(201,162,75,0.4) !important;
  border-radius: 4px !important;
}
.role-edit-btn {
  border: 1px dashed var(--rs-red) !important;
  color: var(--rs-red) !important;
  border-radius: 4px !important;
}

/* mini-btn 在每日 header */
.day-mini-btn {
  background: rgba(244,236,216,0.7) !important;
  color: var(--rs-red) !important;
  border: 1px solid var(--rs-gold) !important;
  border-radius: 2px !important;
}

/* day-picker-chip */
.day-picker-chip {
  background: var(--rs-paper) !important;
  color: var(--rs-red) !important;
  border: 1px solid var(--rs-gold) !important;
  border-radius: 2px !important;
  font-family: "Noto Serif SC", serif !important;
}
.day-picker-chip.today {
  background: var(--rs-red) !important;
  color: var(--rs-paper) !important;
}
.day-picker-chip:hover {
  background: var(--rs-red) !important;
  color: var(--rs-paper) !important;
}

/* planner setup wizard 容器(inline style 兜底 override)*/
#plannerSetup {
  background:
    url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='120' height='120'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2'/><feColorMatrix values='0 0 0 0 0.15  0 0 0 0 0.10  0 0 0 0 0.06  0 0 0 0.3 0'/></filter><rect width='120' height='120' filter='url(%23n)'/></svg>"),
    linear-gradient(180deg, #FAF4E2 0%, #F0E5C9 100%) !important;
  background-blend-mode: multiply, normal !important;
  border: 1px solid var(--rs-gold) !important;
  border-radius: 4px !important;
  box-shadow:
    0 0 0 1px rgba(201,162,75,0.25),
    0 12px 32px rgba(92,14,14,0.18),
    inset 0 0 0 6px var(--rs-paper) !important;
}

/* ============================================================
   抽中菜的 lucky-card 质感版(2026-05-30)
   外壳:paper + 烫金边 + 阴影;cover 保留 session 色;name 用宋体
============================================================ */
.lucky-card {
  background:
    url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='120' height='120'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2'/><feColorMatrix values='0 0 0 0 0.15  0 0 0 0 0.10  0 0 0 0 0.06  0 0 0 0.3 0'/></filter><rect width='120' height='120' filter='url(%23n)'/></svg>"),
    linear-gradient(180deg, #FAF4E2 0%, #F0E5C9 100%) !important;
  background-blend-mode: multiply, normal !important;
  border: 1px solid var(--rs-gold) !important;
  border-radius: 4px !important;
  box-shadow:
    0 0 0 1px rgba(201,162,75,0.3),
    0 8px 22px rgba(92,14,14,0.15) !important;
}
.lucky-card:hover {
  transform: translateY(-3px);
  box-shadow:
    0 0 0 1px rgba(232,184,92,0.5),
    0 14px 30px rgba(92,14,14,0.22) !important;
}

/* cover 保持 inline session 色,但加细金线分隔 + 内嵌阴影 */
.lucky-cover {
  border-bottom: 1px solid var(--rs-gold);
  box-shadow: inset 0 -2px 6px rgba(0,0,0,0.15);
}
.lucky-cover .name {
  font-family: "Noto Serif SC", serif !important;
  font-weight: 900 !important;
  font-size: 17px !important;
  letter-spacing: 3px !important;
  text-shadow: 0 2px 6px rgba(0,0,0,0.3) !important;
}
.lucky-cover .icon {
  filter: drop-shadow(0 2px 4px rgba(0,0,0,0.25));
}
/* 手机端再压一档 —— 必须放在「lucky 质感版」之后,否则被 17px / 38px 覆盖 */
@media (max-width: 640px) {
  .lucky-cover { height: 56px !important; }
  .lucky-cover .icon { font-size: 18px !important; opacity: 0.85; margin-bottom: 1px !important; }
  .lucky-cover .name {
    font-size: 10px !important;
    letter-spacing: 0 !important;
    line-height: 1.15 !important;
    padding: 0 4px !important;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    max-width: calc(100% - 8px) !important;
    text-shadow: 0 1px 2px rgba(0,0,0,0.5) !important;
  }
  .lucky-body { padding: 4px 6px 6px !important; }
  .lucky-meta { font-size: 9px !important; gap: 3px !important; }
  .lucky-meta .difficulty-pill { font-size: 8px !important; padding: 0 4px !important; }
  .lucky-meta span { font-size: 9px !important; letter-spacing: 0 !important; }
  .lucky-meal-tag { font-size: 10px !important; padding: 3px 6px !important; }
  .lucky-reroll { width: 18px !important; height: 18px !important; font-size: 10px !important; }
}

/* body 走 paper(其实因为 .lucky-card 已经是 paper,这里只需透明) */
.lucky-body {
  background: transparent !important;
}
.lucky-meta {
  color: var(--rs-ink-soft) !important;
  font-family: "Noto Sans SC", sans-serif !important;
}

/* ============================================================
   我的本周菜单(profile 页快照卡)
============================================================ */
.my-week-card {
  background:
    url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='120' height='120'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2'/><feColorMatrix values='0 0 0 0 0.15  0 0 0 0 0.10  0 0 0 0 0.06  0 0 0 0.3 0'/></filter><rect width='120' height='120' filter='url(%23n)'/></svg>"),
    linear-gradient(180deg, #FAF4E2 0%, #F0E5C9 100%);
  background-blend-mode: multiply, normal;
  border: 1px solid var(--rs-gold);
  border-radius: 4px;
  box-shadow:
    0 0 0 1px rgba(201,162,75,0.25),
    0 8px 22px rgba(92,14,14,0.12);
  padding: 18px 20px;
  margin: 16px 0;
}
.my-week-card-head {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  margin-bottom: 12px;
}
.mw-title {
  font-family: "Noto Serif SC", serif;
  font-weight: 900;
  font-size: 16px;
  color: var(--rs-red);
  letter-spacing: 3px;
}
.mw-savedat {
  font-family: "Playfair Display", serif;
  font-style: italic;
  font-size: 12px;
  color: var(--rs-ink-soft);
}
.mw-empty-hint {
  font-size: 13px;
  color: var(--rs-ink-soft);
  line-height: 1.6;
}
.my-week-grid {
  display: grid;
  grid-template-columns: repeat(7, 1fr);
  gap: 6px;
}
.mw-day {
  background: rgba(244,236,216,0.55);
  border: 1px solid rgba(201,162,75,0.4);
  border-radius: 4px;
  padding: 8px 6px;
  min-height: 90px;
}
.mw-day-label {
  font-family: "Noto Serif SC", serif;
  font-weight: 700;
  color: var(--rs-red);
  font-size: 12px;
  text-align: center;
  padding-bottom: 4px;
  border-bottom: 1px solid rgba(201,162,75,0.5);
  margin-bottom: 4px;
}
.mw-meal {
  font-size: 11px;
  color: var(--rs-ink);
  line-height: 1.5;
  margin: 3px 0;
}
.mw-meal-tag {
  display: inline-block;
  width: 14px;
  text-align: center;
  color: var(--rs-red);
  font-weight: 700;
  font-family: "Noto Serif SC", serif;
  margin-right: 3px;
}
.mw-empty {
  color: var(--rs-ink-soft);
  opacity: 0.4;
  text-align: center;
  font-size: 11px;
  font-style: italic;
}
.my-week-actions {
  display: flex;
  gap: 8px;
  margin-top: 14px;
  flex-wrap: wrap;
}
@media (max-width: 640px) {
  .my-week-grid { grid-template-columns: repeat(2, 1fr); }
  .mw-day { min-height: 70px; }
}

/* ============================================================
   冰箱浏览折叠下拉
============================================================ */
.fridge-browse-details {
  margin-top: 14px;
  background: rgba(244,236,216,0.45);
  border: 1px dashed var(--rs-gold);
  border-radius: 4px;
  padding: 0;
}
.fridge-browse-details[open] {
  padding-bottom: 14px;
}
.fridge-browse-summary {
  cursor: pointer;
  padding: 12px 14px;
  font-family: "Noto Serif SC", serif;
  font-weight: 700;
  color: var(--rs-red);
  font-size: 13px;
  letter-spacing: 1px;
  list-style: none;
  user-select: none;
}
.fridge-browse-summary::-webkit-details-marker { display: none; }
.fridge-browse-summary::before { content: "▸ "; color: var(--rs-gold); }
.fridge-browse-details[open] .fridge-browse-summary::before { content: "▾ "; }
.fridge-browse-details .fridge-cat-title:first-child { margin-top: 4px !important; }

/* 每个分类(蔬菜 / 蛋肉海鲜 / ...)再做成可折叠 */
.fridge-cat-fold {
  margin: 8px 14px 0;
  background: #fffdf7;
  border: 1px solid var(--rs-gold);
  border-radius: 4px;
  padding: 0;
}
.fridge-cat-fold[open] { padding-bottom: 10px; }
.fridge-cat-fold-summary {
  list-style: none;
  cursor: pointer;
  user-select: none;
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 10px 12px;
  font-family: "Noto Serif SC", serif;
  font-weight: 700;
  color: var(--rs-red);
  font-size: 13px;
  letter-spacing: 1px;
}
.fridge-cat-fold-summary::-webkit-details-marker { display: none; }
.fridge-cat-fold-summary .fcf-title { flex: 1; min-width: 0; }
.fridge-cat-fold-summary .fcf-count {
  background: rgba(157,2,8,0.10);
  color: var(--rs-red);
  font-size: 11px;
  padding: 1px 8px;
  border-radius: 10px;
  font-family: inherit;
  font-weight: 700;
  letter-spacing: 0;
}
.fridge-cat-fold-summary .fcf-caret {
  color: var(--rs-gold);
  font-size: 12px;
  transition: transform 0.15s;
}
.fridge-cat-fold[open] .fcf-caret { transform: rotate(90deg); }
.fridge-cat-fold .fridge-chips { padding: 0 12px; }

/* 大类可展开 → popover 模式(横向 sub-chips,屏蔽下层)*/
.fridge-chip-expandable {
  border-style: dashed !important;
  position: relative;
}
.fcg-arrow {
  font-size: 11px;
  opacity: 0.55;
  margin-left: 2px;
}
.fridge-chip-expandable:hover .fcg-arrow {
  opacity: 1;
}

/* popover 容器:替换 chips 显示,横向 sub-chips */
.fridge-popover {
  background:
    url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='120' height='120'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2'/><feColorMatrix values='0 0 0 0 0.15  0 0 0 0 0.10  0 0 0 0 0.06  0 0 0 0.3 0'/></filter><rect width='120' height='120' filter='url(%23n)'/></svg>"),
    linear-gradient(180deg, #FAF4E2 0%, #F0E5C9 100%);
  background-blend-mode: multiply, normal;
  border: 2px solid var(--rs-red);
  border-radius: 4px;
  padding: 16px 18px;
  margin: 14px 0;
  box-shadow:
    0 0 0 1px rgba(201,162,75,0.4),
    0 12px 28px rgba(92,14,14,0.25);
  animation: fpIn 0.18s ease-out;
}
@keyframes fpIn {
  from { opacity: 0; transform: translateY(-6px); }
  to { opacity: 1; transform: translateY(0); }
}
.fp-head {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-bottom: 14px;
  padding-bottom: 10px;
  border-bottom: 1px dashed var(--rs-gold);
}
.fp-title {
  font-family: "Noto Sans SC", sans-serif;
  font-size: 14px;
  color: var(--rs-ink);
}
.fp-title strong {
  font-family: "Noto Serif SC", serif;
  font-weight: 900;
  color: var(--rs-red);
  font-size: 18px;
  letter-spacing: 2px;
  margin: 0 4px;
}
.fp-close {
  background: var(--rs-paper);
  color: var(--rs-red);
  border: 1px solid var(--rs-red);
  border-radius: 4px;
  padding: 4px 12px;
  cursor: pointer;
  font-family: "Noto Sans SC", sans-serif;
  font-size: 12px;
}
.fp-close:hover {
  background: var(--rs-red);
  color: var(--rs-paper);
}
.fp-chips {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  align-items: center;
}
.fridge-chip-broad {
  background: transparent !important;
  border: 1px dashed var(--rs-ink-soft) !important;
  color: var(--rs-ink-soft) !important;
  font-style: italic;
}
.fridge-chip-broad:hover {
  border-color: var(--rs-red) !important;
  color: var(--rs-red) !important;
}

/* 菜谱页标题强制可见(防止 :root override 让文字隐身)*/
.section-header h2 {
  color: var(--rs-red) !important;
  background: transparent !important;
  font-family: "Noto Serif SC", serif !important;
  text-shadow: none !important;
  font-weight: 900 !important;
  letter-spacing: 3px !important;
}
.section-header .line {
  background: linear-gradient(90deg, var(--rs-gold) 0%, transparent 100%) !important;
}
.fridge-chip-broad {
  background: transparent !important;
  border: 1px dashed var(--rs-ink-soft) !important;
  color: var(--rs-ink-soft) !important;
  font-size: 11px !important;
  font-style: italic;
}
.fridge-chip-broad:hover {
  border-color: var(--rs-red) !important;
  color: var(--rs-red) !important;
}

/* ============================================================
   我的本周菜单 · 日历布局(7×3)
============================================================ */
.mw-calendar {
  display: grid;
  grid-template-columns: 32px repeat(7, 1fr);
  gap: 3px;
  background: rgba(201,162,75,0.20);
  padding: 4px;
  border-radius: 4px;
  margin-bottom: 14px;
}
.mw-cal-corner {
  background: transparent;
}
.mw-cal-day-head {
  background: var(--rs-red);
  color: var(--rs-paper);
  font-family: "Noto Serif SC", serif;
  font-weight: 700;
  font-size: 11px;
  padding: 6px 2px;
  text-align: center;
  border-radius: 3px;
  letter-spacing: 1px;
}
.mw-cal-row-label {
  background: var(--rs-red);
  color: var(--rs-paper);
  font-family: "Noto Serif SC", serif;
  font-weight: 900;
  font-size: 14px;
  display: flex;
  align-items: center;
  justify-content: center;
  border-radius: 3px;
}
.mw-cal-cell {
  background: var(--rs-paper);
  padding: 5px 4px;
  min-height: 56px;
  display: flex;
  flex-direction: column;
  gap: 3px;
  border-radius: 3px;
}
.mw-cal-cell.empty {
  align-items: center;
  justify-content: center;
  color: var(--rs-ink-soft);
  opacity: 0.35;
  font-size: 12px;
}
.mw-cal-dish {
  background: rgba(244,236,216,0.75);
  border: 1px solid rgba(201,162,75,0.45);
  padding: 3px 5px;
  border-radius: 2px;
  font-size: 10px;
  line-height: 1.3;
  color: var(--rs-ink);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  cursor: pointer;
  transition: background 0.15s;
}
.mw-cal-dish:hover {
  background: rgba(232,184,92,0.4);
  border-color: var(--rs-red);
}
@media (max-width: 640px) {
  /* 让 my-week-card 在手机上不再被各层 padding 卡死,给 mw-calendar 留够 7 天的位置 */
  .my-week-card { padding: 10px 8px !important; margin: 8px 0 !important; }
  .profile-fold > .pf-body { padding: 10px 8px !important; }
  .mw-calendar {
    grid-template-columns: 22px repeat(7, minmax(0, 1fr));
    gap: 2px !important;
    padding: 3px !important;
    font-size: 9px;
  }
  .mw-cal-corner { padding: 0; }
  .mw-cal-day-head { font-size: 9px; padding: 4px 0; letter-spacing: 0; min-width: 0; }
  .mw-cal-row-label { font-size: 11px; }
  .mw-cal-cell { padding: 2px 1px; min-height: 40px; min-width: 0; overflow: hidden; }
  .mw-cal-dish { font-size: 8px; padding: 2px 2px; letter-spacing: 0; min-width: 0; max-width: 100%; }
}

/* ============================================================
   我的(profile)页色调统一 → 老食堂调色板
============================================================ */
.profile-hero {
  background:
    radial-gradient(circle at 92% 88%, rgba(212,162,75,0.10), transparent 18%),
    url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='40' height='40' viewBox='0 0 40 40'><g fill='none' stroke='%23D4A24B' stroke-width='0.6' opacity='0.08'><rect x='6' y='6' width='28' height='28'/><rect x='12' y='12' width='16' height='16'/></g></svg>"),
    linear-gradient(180deg, #8E1B1B 0%, #5C0E0E 100%) !important;
  border: 2px solid var(--rs-gold) !important;
  border-radius: 4px !important;
  box-shadow:
    0 0 0 1px rgba(201,162,75,0.4),
    0 12px 28px rgba(92,14,14,0.2) !important;
  color: var(--rs-paper) !important;
}
.profile-level-name {
  font-family: "Noto Serif SC", serif !important;
  color: var(--rs-paper) !important;
  letter-spacing: 4px !important;
}
.profile-progress {
  background: rgba(244,236,216,0.25) !important;
}
.profile-progress-bar {
  background: linear-gradient(90deg, var(--rs-gold-bright), var(--rs-gold)) !important;
}

/* ============================================================
   菜友圈 · Coming Soon(waitlist 卡)
============================================================ */
.coming-soon-box {
  background:
    url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='120' height='120'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2'/><feColorMatrix values='0 0 0 0 0.15  0 0 0 0 0.10  0 0 0 0 0.06  0 0 0 0.3 0'/></filter><rect width='120' height='120' filter='url(%23n)'/></svg>"),
    linear-gradient(180deg, #FAF4E2 0%, #F0E5C9 100%) !important;
  background-blend-mode: multiply, normal !important;
  border: 1px solid var(--rs-gold) !important;
  border-radius: 4px !important;
  box-shadow:
    0 0 0 1px rgba(201,162,75,0.25),
    0 12px 32px rgba(92,14,14,0.18),
    inset 0 0 0 6px var(--rs-paper) !important;
  padding: 36px 32px !important;
  margin: 0 auto 24px !important;
  max-width: 640px !important;
}
.cs-hero { text-align: center; margin-bottom: 28px; }
.cs-icon { font-size: 48px; margin-bottom: 8px; }
.cs-title {
  font-family: "Noto Serif SC", serif;
  font-weight: 900;
  color: var(--rs-red);
  font-size: 24px;
  letter-spacing: 5px;
  margin-bottom: 10px;
}
.cs-tagline {
  color: var(--rs-ink-soft);
  font-size: 14px;
  margin-bottom: 16px;
}
/* ① 痛点 hook */
.cs-hook {
  background: rgba(244,236,216,0.55);
  border: 1px dashed var(--rs-gold);
  border-radius: 4px;
  padding: 18px 22px;
  margin-bottom: 20px;
  max-width: 520px;
  margin-left: auto;
  margin-right: auto;
}
.cs-hook-lead {
  font-family: "Noto Serif SC", serif;
  font-weight: 700;
  color: var(--rs-red);
  font-size: 14px;
  letter-spacing: 2px;
  margin-bottom: 12px;
  text-align: center;
}
.cs-pains {
  list-style: none;
  padding: 0;
  margin: 0;
}
.cs-pains li {
  display: flex;
  align-items: flex-start;
  gap: 10px;
  padding: 7px 0;
  font-size: 13.5px;
  color: var(--rs-ink);
  line-height: 1.55;
  border-bottom: 1px dashed rgba(201,162,75,0.25);
}
.cs-pains li:last-child { border-bottom: none; }
.cp-icon { flex-shrink: 0; font-size: 16px; }
.cp-text { flex: 1; }

/* ② 解法愿景 */
.cs-promise {
  text-align: center;
  font-size: 14px;
  color: var(--rs-ink);
  line-height: 1.75;
  padding: 16px 22px;
  margin-bottom: 22px;
  border-top: 2px dotted var(--rs-gold);
  border-bottom: 2px dotted var(--rs-gold);
  max-width: 520px;
  margin-left: auto;
  margin-right: auto;
}
.cs-promise strong {
  font-family: "Noto Serif SC", serif;
  font-weight: 900;
  color: var(--rs-red);
  font-size: 16px;
  letter-spacing: 3px;
}

/* ③ CTA 点赞表态 */
.cs-cta { text-align: center; }
.cs-want-btn {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  background: var(--rs-red);
  color: var(--rs-paper);
  border: 2px solid var(--rs-gold);
  border-radius: 4px;
  padding: 14px 32px;
  font-family: "Noto Serif SC", serif;
  font-weight: 700;
  font-size: 16px;
  letter-spacing: 4px;
  cursor: pointer;
  box-shadow:
    0 0 0 1px rgba(201,162,75,0.4),
    0 8px 22px rgba(92,14,14,0.25);
  transition: all 0.15s;
}
.cs-want-btn:hover:not(:disabled) {
  background: var(--rs-red-deep);
  transform: translateY(-2px);
  box-shadow:
    0 0 0 1px var(--rs-gold-bright),
    0 12px 28px rgba(92,14,14,0.35);
}
.cs-want-btn:disabled {
  cursor: default;
  background: var(--rs-paper);
  color: var(--rs-red);
  opacity: 0.85;
}
.cs-want-btn .cwb-icon { font-size: 20px; }

.cs-want-count {
  margin-top: 16px;
  max-width: 360px;
  margin-left: auto;
  margin-right: auto;
}
.cwc-num {
  font-size: 14px;
  color: var(--rs-ink-soft);
  margin-bottom: 8px;
}
.cwc-num strong {
  font-family: "Noto Serif SC", serif;
  font-weight: 900;
  color: var(--rs-red);
  font-size: 22px;
  margin: 0 4px;
}
.cwc-progress {
  height: 6px;
  background: rgba(201,162,75,0.25);
  border-radius: 3px;
  overflow: hidden;
  margin-bottom: 6px;
}
.cwc-progress-bar {
  height: 100%;
  background: linear-gradient(90deg, var(--rs-gold-bright), var(--rs-red));
  transition: width 0.5s ease;
}
.cwc-target {
  font-size: 12px;
  color: var(--rs-ink-soft);
}
.cwc-target strong {
  color: var(--rs-red);
  font-family: "Noto Serif SC", serif;
}

.cs-disclaimer {
  font-size: 10px;
  color: var(--rs-ink-soft);
  opacity: 0.6;
  margin-top: 14px;
  letter-spacing: 1px;
}

@media (max-width: 640px) {
  /* 整盒往上移、padding 缩 */
  .coming-soon-box { padding: 14px 14px 22px !important; margin: 0 auto 16px !important; }
  /* 头像往上移、间距收紧 */
  .cs-hero { margin-bottom: 14px !important; margin-top: -6px !important; }
  .cs-icon { font-size: 34px !important; margin-bottom: 4px !important; line-height: 1 !important; }
  .cs-title { font-size: 17px !important; letter-spacing: 3px !important; margin-bottom: 0 !important; }
  /* 痛点框 */
  .cs-hook { padding: 12px 14px !important; margin-bottom: 14px !important; max-width: 100% !important; }
  .cs-hook-lead { font-size: 12px !important; letter-spacing: 1px !important; margin-bottom: 8px !important; }
  .cs-pains li { font-size: 12px !important; line-height: 1.5 !important; padding: 6px 0 !important; gap: 6px !important; }
  .cp-icon { font-size: 13px !important; }
  /* 愿景区 */
  .cs-promise { font-size: 12.5px !important; line-height: 1.7 !important; padding: 12px 12px !important; margin-bottom: 16px !important; max-width: 100% !important; }
  .cs-promise strong { font-size: 14px !important; letter-spacing: 2px !important; }
  /* CTA */
  .cs-want-btn { padding: 10px 22px !important; font-size: 13px !important; letter-spacing: 2px !important; }
  .cs-want-btn .cwb-icon { font-size: 16px !important; }
  .cs-want-count { margin-top: 12px !important; max-width: 100% !important; }
  .cwc-num { font-size: 12px !important; }
  .cwc-num strong { font-size: 18px !important; }
  .cwc-target { font-size: 11px !important; }
  .cs-disclaimer { font-size: 9px !important; margin-top: 10px !important; letter-spacing: 0.5px !important; }
}

/* wishlist-box 公用容器(交流区 + 照片墙)*/
.wishlist-box {
  background:
    url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='120' height='120'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2'/><feColorMatrix values='0 0 0 0 0.15  0 0 0 0 0.10  0 0 0 0 0.06  0 0 0 0.3 0'/></filter><rect width='120' height='120' filter='url(%23n)'/></svg>"),
    linear-gradient(180deg, #FAF4E2 0%, #F0E5C9 100%) !important;
  background-blend-mode: multiply, normal !important;
  border: 1px solid var(--rs-gold) !important;
  border-radius: 4px !important;
  box-shadow:
    0 0 0 1px rgba(201,162,75,0.25),
    0 8px 22px rgba(92,14,14,0.12),
    inset 0 0 0 5px var(--rs-paper) !important;
  padding: 22px 24px !important;
  margin-bottom: 16px !important;
}
.wishlist-box .wishlist-header h2 {
  font-family: "Noto Serif SC", serif !important;
  font-weight: 900 !important;
  color: var(--rs-red) !important;
  letter-spacing: 3px !important;
}
.wishlist-box .wishlist-header p {
  color: var(--rs-ink-soft) !important;
}
.community-note {
  background: rgba(244,236,216,0.5) !important;
  color: var(--rs-ink-soft) !important;
  border: 1px dashed var(--rs-gold) !important;
  border-radius: 4px !important;
  padding: 10px 12px !important;
}

/* 交流区:发布表单 */
.board-form {
  background: rgba(244,236,216,0.55) !important;
  border: 1px solid var(--rs-gold) !important;
  border-radius: 4px !important;
}
.wish-textarea, .wish-input {
  border: 1.5px solid var(--rs-gold) !important;
  border-radius: 4px !important;
  background: var(--rs-paper) !important;
  font-family: "Noto Sans SC", sans-serif !important;
  color: var(--rs-ink) !important;
}
.wish-textarea:focus, .wish-input:focus {
  border-color: var(--rs-red) !important;
  outline: none !important;
}
.wish-submit {
  background: var(--rs-red) !important;
  color: var(--rs-paper) !important;
  border: 2px solid var(--rs-gold) !important;
  border-radius: 4px !important;
  font-family: "Noto Serif SC", serif !important;
  letter-spacing: 3px !important;
}
.wish-submit:hover {
  background: var(--rs-red-deep) !important;
}

/* 交流区:消息卡 */
.board-msg {
  background: rgba(244,236,216,0.55) !important;
  border: 1px solid var(--rs-gold) !important;
  border-radius: 4px !important;
}
.board-msg-avatar {
  background: linear-gradient(135deg, var(--rs-red), var(--rs-red-deep)) !important;
  border: 1px solid var(--rs-gold) !important;
}
.board-msg-name {
  font-family: "Noto Serif SC", serif !important;
  color: var(--rs-red) !important;
}
.board-msg-time, .board-msg-text {
  color: var(--rs-ink) !important;
}

/* 打卡入口提示(在统计栏下方)*/
.profile-checkin-hint {
  background: rgba(244,236,216,0.55);
  border: 1px dashed var(--rs-gold);
  border-radius: 4px;
  padding: 10px 14px;
  margin: 0 0 16px;
  font-size: 12.5px;
  color: var(--rs-ink-soft);
  line-height: 1.6;
  text-align: center;
}
.profile-checkin-hint a {
  color: var(--rs-red);
  text-decoration: underline;
  font-family: "Noto Serif SC", serif;
  font-weight: 700;
}

/* profile 自我介绍卡:纸感 + 烫金边,跟整页统一 */
.profile-intro-card {
  background:
    url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='120' height='120'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2'/><feColorMatrix values='0 0 0 0 0.15  0 0 0 0 0.10  0 0 0 0 0.06  0 0 0 0.3 0'/></filter><rect width='120' height='120' filter='url(%23n)'/></svg>"),
    linear-gradient(180deg, #FAF4E2 0%, #F0E5C9 100%) !important;
  background-blend-mode: multiply, normal !important;
  border: 1px solid var(--rs-gold) !important;
  border-radius: 4px !important;
  box-shadow:
    0 0 0 1px rgba(201,162,75,0.25),
    0 8px 22px rgba(92,14,14,0.12) !important;
}

/* profile-hero · 等级在中,徽章绝对定位到右上角 */
.profile-hero {
  position: relative !important;
  text-align: center !important;
  padding: 20px 24px !important;
}
.profile-hero .ph-left {
  text-align: center;
}
.profile-hero .ph-right {
  position: absolute !important;
  top: 10px;
  right: 12px;
}
.ph-badges-grid {
  display: flex;
  gap: 4px;
}
.badge-mini {
  width: 24px;
  height: 24px;
  border-radius: 3px;
  background: rgba(244,236,216,0.12);
  border: 1px solid rgba(212,162,75,0.6);
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 13px;
  cursor: help;
  transition: transform 0.15s, background 0.15s;
}
.badge-mini:hover {
  transform: scale(1.25);
  background: rgba(244,236,216,0.3);
}
.badge-mini.locked {
  opacity: 0.32;
  filter: grayscale(1);
}
@media (max-width: 640px) {
  .profile-hero .ph-right {
    top: 6px;
    right: 8px;
  }
  .badge-mini {
    width: 20px;
    height: 20px;
    font-size: 11px;
  }
}
.profile-stat {
  background:
    url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='120' height='120'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2'/><feColorMatrix values='0 0 0 0 0.15  0 0 0 0 0.10  0 0 0 0 0.06  0 0 0 0.3 0'/></filter><rect width='120' height='120' filter='url(%23n)'/></svg>"),
    linear-gradient(180deg, #FAF4E2 0%, #F0E5C9 100%) !important;
  background-blend-mode: multiply, normal !important;
  border: 1px solid var(--rs-gold) !important;
  border-radius: 4px !important;
}
.profile-stat .num {
  color: var(--rs-red) !important;
  font-family: "Noto Serif SC", serif !important;
}
.profile-stat .lbl {
  color: var(--rs-ink-soft) !important;
}
.profile-section-title {
  font-family: "Noto Serif SC", serif !important;
  color: var(--rs-red) !important;
  letter-spacing: 3px !important;
}
.badge {
  background: rgba(244,236,216,0.65) !important;
  border: 1px solid var(--rs-gold) !important;
  border-radius: 4px !important;
}
.badge .b-name {
  font-family: "Noto Serif SC", serif !important;
  color: var(--rs-red) !important;
}
.badge .b-desc {
  color: var(--rs-ink-soft) !important;
}
.photo-wall-item {
  border: 1px solid var(--rs-gold) !important;
  border-radius: 4px !important;
}
.photo-wall-empty {
  background: rgba(244,236,216,0.5) !important;
  border: 1px dashed var(--rs-gold) !important;
  border-radius: 4px !important;
  color: var(--rs-ink-soft) !important;
  padding: 24px 16px !important;
  text-align: center !important;
}

/* ============================================================
   📔 厨房日记时间线(我的页 · 按月份聚合做过的菜)
============================================================ */
.diary-section { margin: 18px 0 22px; }
.diary-empty {
  background: rgba(244,236,216,0.5); border: 1px dashed var(--rs-gold);
  border-radius: 8px; padding: 24px 16px; text-align: center;
  color: var(--rs-ink-soft); font-size: 13px; line-height: 1.6;
}
.diary-month { margin-bottom: 14px; border-left: 2px solid var(--rs-gold); padding-left: 14px; }
.diary-month-wrap {
  margin-bottom: 10px; border-left: 2px solid var(--rs-gold);
  padding: 6px 0 6px 14px;
}
.diary-month-wrap > summary {
  list-style: none; cursor: pointer; user-select: none;
  font-family: 'Noto Serif SC', serif; color: var(--rs-red);
  font-size: 14px; letter-spacing: 2px;
  display: flex; align-items: baseline; gap: 6px;
  padding: 4px 0;
}
.diary-month-wrap > summary::-webkit-details-marker { display: none; }
.diary-month-wrap .dm-caret {
  display: inline-block; font-size: 11px; color: var(--rs-gold);
  transition: transform 0.15s; transform: rotate(0deg); width: 12px;
}
.diary-month-wrap[open] > summary .dm-caret { transform: rotate(90deg); }
.diary-month-wrap .dm-count { font-size: 11px; color: var(--rs-ink-soft); letter-spacing: 1px; }
.diary-month-wrap .dm-current {
  font-size: 10px; color: white; background: var(--rs-red);
  padding: 1px 8px; border-radius: 8px; letter-spacing: 1px; margin-left: 4px;
}
.diary-month-head {
  font-family: 'Noto Serif SC', serif; color: var(--rs-red);
  font-size: 15px; letter-spacing: 2px; margin: 0 0 10px;
  display: flex; align-items: baseline; gap: 8px;
}
.diary-month-head .dm-count { font-size: 11px; color: var(--rs-ink-soft); letter-spacing: 1px; }
.diary-entries { display: flex; flex-direction: column; gap: 10px; }
.diary-entry {
  display: flex; gap: 12px; align-items: flex-start;
  background: #fffdf7; border: 1px solid var(--rs-gold);
  border-radius: 6px; padding: 10px 12px; cursor: pointer;
  transition: background 0.15s;
}
.diary-entry:hover { background: rgba(245,236,213,0.7); }
.diary-entry-date {
  flex: 0 0 auto; font-family: 'Playfair Display', serif;
  color: var(--rs-red); font-size: 13px; line-height: 1.2;
  text-align: center; min-width: 36px; padding-top: 2px;
}
.diary-entry-date strong { display: block; font-size: 20px; font-weight: 900; }
.diary-entry-body { flex: 1; min-width: 0; }
.diary-entry-name {
  font-family: 'Noto Serif SC', serif; color: var(--rs-ink);
  font-size: 14px; font-weight: 700; margin: 0 0 4px;
}
.diary-entry-name .de-rating { color: var(--rs-gold); font-size: 12px; margin-left: 6px; }
.diary-entry-comment {
  color: var(--rs-ink-soft); font-size: 12px; line-height: 1.5;
  display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical;
  overflow: hidden;
}
.diary-entry-photo {
  flex: 0 0 auto; width: 56px; height: 56px; border-radius: 4px;
  overflow: hidden; border: 1px solid var(--rs-gold);
}
.diary-entry-photo img { width: 100%; height: 100%; object-fit: cover; }

/* 我的页 · 统一可折叠区块(本周菜单 / 日记 / 收藏 / 菜照墙) */
.profile-fold {
  background: rgba(255,253,247,0.55);
  border: 1px solid var(--rs-gold);
  border-radius: 6px;
  margin: 0 0 12px;
  overflow: hidden;
}
.profile-fold > summary {
  list-style: none; cursor: pointer; user-select: none;
  padding: 12px 16px;
  display: flex; align-items: center; gap: 8px;
  font-family: 'Noto Serif SC', serif; color: var(--rs-red);
  font-size: 15px; letter-spacing: 2px;
  background: linear-gradient(180deg, rgba(245,236,213,0.7), rgba(245,236,213,0.3));
}
.profile-fold > summary::-webkit-details-marker { display: none; }
.profile-fold .pf-caret {
  display: inline-block; font-size: 12px; color: var(--rs-gold);
  transition: transform 0.18s; width: 14px;
}
.profile-fold[open] > summary .pf-caret { transform: rotate(90deg); }
.profile-fold .pf-meta {
  margin-left: auto; font-size: 11px; color: var(--rs-ink-soft);
  letter-spacing: 1px; font-family: 'Noto Sans SC', sans-serif;
}
.profile-fold > .pf-body {
  padding: 14px 16px 16px;
  border-top: 1px dashed var(--rs-gold);
  background: #fffdf7;
}

/* 分享菜单的链接 modal */
.share-link-box {
  background: #fffdf7; border: 1px solid var(--rs-gold);
  border-radius: 6px; padding: 10px 12px; margin-top: 10px;
  display: flex; gap: 8px; align-items: center;
}
.share-link-box input {
  flex: 1; min-width: 0; border: none; background: transparent;
  font-family: 'Playfair Display', serif; font-size: 12px;
  color: var(--rs-ink); outline: none;
}
.share-link-box button {
  flex: 0 0 auto; font-size: 12px; padding: 4px 12px;
  background: var(--rs-red); border: none; color: white;
  border-radius: 4px; cursor: pointer; font-family: 'Noto Serif SC', serif;
}

/* ============================================================
   ☐ 甜品 / ☐ 饮品 勾选(盲盒结果下方)
============================================================ */
.extra-courses {
  display: flex;
  align-items: center;
  gap: 10px;
  margin-top: 10px;
  flex-wrap: wrap;
}
.ec-label {
  font-family: "Noto Serif SC", serif;
  font-weight: 700;
  color: var(--rs-red);
  font-size: 13px;
  letter-spacing: 1px;
}
.ec-chip {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  padding: 5px 12px;
  border: 1.5px solid var(--rs-gold);
  border-radius: 4px;
  background: var(--rs-paper);
  color: var(--rs-ink);
  font-size: 13px;
  cursor: pointer;
  transition: all 0.15s;
  font-family: "Noto Sans SC", sans-serif;
}
.ec-chip:hover {
  border-color: var(--rs-red);
}
.ec-chip.on {
  background: var(--rs-red);
  color: var(--rs-paper);
  border-color: var(--rs-red);
}
.ec-chip input {
  accent-color: var(--rs-red);
  cursor: pointer;
}

/* ============================================================
   今天谁做饭 / 谁洗碗 成员标签配色统一
============================================================ */
.dd-member {
  background: var(--rs-paper) !important;
  border: 1.5px solid var(--rs-gold) !important;
  border-radius: 4px !important;
  color: var(--rs-ink) !important;
  font-family: "Noto Sans SC", sans-serif !important;
}
.dd-member.in {
  background: rgba(142,27,27,0.10) !important;
  border-color: var(--rs-red) !important;
  color: var(--rs-red) !important;
}
.dd-member.dd-add {
  background: var(--rs-paper) !important;
  border: 1.5px dashed var(--rs-red) !important;
  color: var(--rs-red) !important;
}
.dd-member.dd-add:hover {
  background: rgba(142,27,27,0.08) !important;
}
.dd-hint {
  color: var(--rs-ink-soft) !important;
}

/* ===== 盲盒页:进入时让主按钮亮一下,提示「点这里抽」===== */
@keyframes roll-btn-attention {
  0%   { transform: scale(1);     box-shadow: 0 6px 18px rgba(157,2,8,0.25); filter: brightness(1); }
  25%  { transform: scale(1.04);  box-shadow: 0 12px 32px rgba(212,160,23,0.55), 0 0 0 6px rgba(212,160,23,0.28); filter: brightness(1.12); }
  75%  { transform: scale(1.04);  box-shadow: 0 12px 32px rgba(212,160,23,0.55), 0 0 0 6px rgba(212,160,23,0.28); filter: brightness(1.12); }
  100% { transform: scale(1);     box-shadow: 0 6px 18px rgba(157,2,8,0.25); filter: brightness(1); }
}
.lucky-main-btn.btn-hinting {
  animation: roll-btn-attention 2s ease-in-out;
}

/* 「今天谁做饭 / 谁洗碗」下拉展开时,主按钮亮一下放大 2 秒 */
.dish-duty-btn.btn-hinting {
  animation: roll-btn-attention 2s ease-in-out;
}

/* ===== 菜谱页:搜索框首次进入时高亮提示「搜一搜」===== */
@keyframes search-pulse {
  0%   { box-shadow: 0 0 0 0 rgba(212,160,23,0); border-color: var(--border, #ddd); transform: scale(1); }
  25%  { box-shadow: 0 0 0 8px rgba(212,160,23,0.18), 0 6px 18px rgba(212,160,23,0.35); border-color: rgba(212,160,23,0.85); transform: scale(1.02); }
  75%  { box-shadow: 0 0 0 8px rgba(212,160,23,0.18), 0 6px 18px rgba(212,160,23,0.35); border-color: rgba(212,160,23,0.85); transform: scale(1.02); }
  100% { box-shadow: 0 0 0 0 rgba(212,160,23,0); border-color: var(--border, #ddd); transform: scale(1); }
}
.search-box.search-hinting {
  animation: search-pulse 1.8s ease-in-out;
}
.fridge-search-row.search-hinting {
  animation: search-pulse 1.8s ease-in-out;
}

/* ===== 首页 3 卡引导:依次放大 + 加亮 2 秒 ===== */
@keyframes hc-attention {
  0%   { transform: scale(1);     box-shadow: 0 6px 22px rgba(142,27,27,0.18); filter: brightness(1); }
  20%  { transform: scale(1.06);  box-shadow: 0 14px 38px rgba(212,160,23,0.55), 0 0 0 4px rgba(212,160,23,0.35); filter: brightness(1.12); }
  80%  { transform: scale(1.06);  box-shadow: 0 14px 38px rgba(212,160,23,0.55), 0 0 0 4px rgba(212,160,23,0.35); filter: brightness(1.12); }
  100% { transform: scale(1);     box-shadow: 0 6px 22px rgba(142,27,27,0.18); filter: brightness(1); }
}
.home-card.hc-pulsing {
  animation: hc-attention 2s ease-in-out;
  z-index: 5;
  position: relative;
}

/* 介绍动画结束后:跟着滚动视觉中心放大那张卡 */
.home-card {
  transition: transform 0.35s cubic-bezier(.2,.7,.2,1), box-shadow 0.35s ease, filter 0.35s ease;
}
.home-card.hc-focused {
  transform: scale(1.08);
  box-shadow: 0 22px 54px rgba(157,2,8,0.38), 0 0 0 4px rgba(212,160,23,0.42);
  filter: brightness(1.08);
  z-index: 3;
  position: relative;
}

/* 我的页跟焦功能已移除(按用户要求) */

/* 菜谱详情步骤跟焦:手机端读到哪一步,哪一步放大 + 高亮 */
@media (max-width: 640px) {
  .steps-list li {
    transition: transform 0.3s cubic-bezier(.2,.7,.2,1), box-shadow 0.3s ease, background-color 0.3s ease;
    transform-origin: center center;
    will-change: transform;
  }
  .steps-list li.step-focused {
    transform: scale(1.04);
    box-shadow: 0 10px 26px rgba(157,2,8,0.20), 0 0 0 2px rgba(212,160,23,0.45);
    background-color: #FFF8E8;
    z-index: 2;
  }
}

/* ===== 手机端:阻止 iOS Safari 聚焦 input 时自动放大 =====
   原理:iOS 在 input/textarea 字号 < 16px 时会自动放大页面让你看清,然后失焦也不缩回去。
   只针对会触发放大的 text 类输入控件,不包含 select(下拉不会触发放大,16px 会撑爆筛选框)。 */
@media (max-width: 640px) {
  input:not([type]), textarea,
  input[type="text"], input[type="search"], input[type="email"],
  input[type="password"], input[type="number"], input[type="tel"],
  input[type="url"] {
    font-size: 16px !important;
  }
}
