/* ════════════════════════════════════════════════════════════════
   星露谷皮肤 (Cat Valley / Stardew pixel theme)
   用法：html[data-theme="sdv"] 时生效。素材全部来自 web/assets/sdv/，
   像素字体来自 web/fonts/（缝合像素 Fusion Pixel, OFL 许可）。
   框用 border-image 九宫格拉伸，角上的花纹不会被拉变形。
   ════════════════════════════════════════════════════════════════ */

@font-face{
  font-family: "FusionPixel";
  src: url("fonts/fusion-pixel-zh.woff2") format("woff2");
  font-display: swap;
  /* 限定生效区间：符号/emoji（✦ ✧ ☕ 🌿 等）不包含在内，
     让这些字符落到系统 emoji/符号字体，避免像素字体的空字形豆腐块 */
  unicode-range: U+0000-00FF, U+2000-206F, U+3000-303F, U+3400-4DBF, U+4E00-9FFF, U+F900-FAFF, U+FF00-FFEF;
}

html[data-theme="sdv"]{

  /* ── 色板（取自素材：奶油纸 / 深棕 / 藏蓝 / 钢蓝 / 玫瑰粉） ── */
  --cream:      #f8f3ed;
  --cream-deep: #efe4d6;
  --ink:        #3a2b22;
  --ink-soft:   #6b5346;
  --ink-faint:  #9a7f6e;
  --line-brown: #5b3f3f;
  --navy:       #2c3a4b;
  --steel:      #53819c;
  --rose:       #c2587c;
  --rose-deep:  #9e4462;
  --gold:       #d4a017;

  --bg: var(--cream);
  --text: var(--ink);
  --text-soft: var(--ink-soft);
  --text-faint: var(--ink-faint);
  --hairline: rgba(91,63,63,.28);

  --wall-default: url("assets/sdv/bg_title.png");
  --menu-wall-default: url("assets/sdv/bg_title.png");
  /* 奶油色薄纱盖在壁纸上，保证可读又透出像素风景 */
  --scrim: linear-gradient(180deg, rgba(248,243,237,.30) 0%, rgba(248,243,237,.18) 30%, rgba(248,243,237,.22) 68%, rgba(248,243,237,.42) 100%);

  --bubble-ai-fg: var(--ink);
  --bubble-human-fg: var(--ink);
  --accent: var(--rose);
  --send-bg: var(--rose);
  --tick: var(--steel);
  --accent-fg: #fff8ee;
  --think-label: var(--rose);
  --think-body: var(--ink-soft);
  --think-flourish: rgba(194,88,124,.45);
  --field-bg: var(--cream);
  --field-line: var(--line-brown);
  --card-bg: var(--cream);
  --card-line: rgba(91,63,63,.30);
  --card-shadow: 4px 4px 0 rgba(60,42,32,.16);
  --seg-track: rgba(91,63,63,.12);
  --seg-thumb: rgba(194,88,124,.30);
  --row-press: rgba(91,63,63,.08);
  --info-ring: rgba(194,88,124,.30);
  --danger: #b8433a;
  --shadow: 6px 6px 0 rgba(60,42,32,.18);
  --soft-shadow: 4px 4px 0 rgba(60,42,32,.12);
  --bubble-radius: 6px;

  /* 全套像素字体 */
  --font-en: "FusionPixel", "Noto Sans SC", monospace;
  --font-cn: "FusionPixel", "Noto Sans SC", monospace;
}

/* 像素素材全部关闭平滑缩放 */
html[data-theme="sdv"] .wall,
html[data-theme="sdv"] .login,
html[data-theme="sdv"] .menu-page,
html[data-theme="sdv"] .login .orb,
html[data-theme="sdv"] .msg-avatar::after,
html[data-theme="sdv"] .bubble::after{
  image-rendering: pixelated;
}

html[data-theme="sdv"] body{
  font-family: var(--font-cn);
  letter-spacing: 0;
}

/* ════════════ 登录页 ════════════ */
html[data-theme="sdv"] .login::before{
  background: linear-gradient(180deg, rgba(248,243,237,.05) 0%, rgba(248,243,237,.10) 55%, rgba(44,58,75,.28) 100%);
}
html[data-theme="sdv"] .login-card{
  background: none;
  -webkit-backdrop-filter: none; backdrop-filter: none;
  /* 猫咪符纹框(839x477):细符纹边 + 右下角趴猫,猫留在不拉伸的角区 */
  border: 8px 100px 62px 8px solid transparent;
  border-image: url("assets/sdv/frame_cat.png") 20 356 213 20 fill / 8px 100px 62px 8px stretch;
  border-radius: 0;
  box-shadow: none;
  padding: 18px 14px 16px;
}
html[data-theme="sdv"] .login-brand{ color: var(--rose); letter-spacing: .3em; }
html[data-theme="sdv"] .login .orb{
  width: 84px; height: 84px; border-radius: 0;
  background-image: url("assets/sdv/icon_cat.png");
  background-size: contain; background-repeat: no-repeat; background-position: center;
  box-shadow: none;
  animation: none;
}
html[data-theme="sdv"] .login h1{ color: var(--ink); text-shadow: 2px 2px 0 rgba(91,63,63,.18); }
html[data-theme="sdv"] .login .sub{ color: var(--ink-soft); }
html[data-theme="sdv"] .login .login-label{ color: var(--ink-soft); }
html[data-theme="sdv"] .login input{
  /* 长条木框素材(顶木条+奶油纸面+底影,整张铺,不九宫格);
     左右内边距按素材比例留白:左侧木条约 9%,右侧像素装饰约 15% */
  background: url("assets/sdv/bar_input.png") center / 100% 100% no-repeat;
  border: none;
  border-radius: 3px;
  box-shadow: none;
  -webkit-backdrop-filter: none; backdrop-filter: none;
  padding: 12px 15% 12px 9%;
  color: var(--ink);
  font-family: var(--font-cn);
}
html[data-theme="sdv"] .login input:focus{
  filter: brightness(1.04);
  outline: none;
}
html[data-theme="sdv"] .login button{
  margin-top: 4px;
  padding: 12px 16px;
  background: var(--rose);
  color: var(--accent-fg);
  border: 3px solid var(--line-brown);
  border-radius: 6px;
  box-shadow: 0 4px 0 var(--line-brown);
  font-family: var(--font-cn); font-weight: 600; letter-spacing: .12em;
}
html[data-theme="sdv"] .login button:active{
  transform: translateY(3px);
  box-shadow: 0 1px 0 var(--line-brown);
}
html[data-theme="sdv"] .login .err{ color: var(--danger); }

/* ════════════ 聊天页 ════════════ */
/* 顶栏名字区:不套盒子(盒子比顶栏高,上半截会被屏幕裁掉,看着像悬浮小框);
   像素字直接压在壁纸上,加奶油色阴影保证可读 */
html[data-theme="sdv"] .peerpill{
  background: none;
  border: none;
  box-shadow: none;
  padding: 0;
  -webkit-backdrop-filter: none; backdrop-filter: none;
}
html[data-theme="sdv"] .peerpill .name{ color: var(--ink); text-shadow: 1px 1px 0 rgba(248,243,237,.85), 2px 2px 0 rgba(91,63,63,.18); }
html[data-theme="sdv"] .peerpill .status{ color: var(--ink-faint); text-shadow: 1px 1px 0 rgba(248,243,237,.85); }
html[data-theme="sdv"] .backbtn,
html[data-theme="sdv"] .topbtn{
  background: var(--cream);
  border: 3px solid var(--line-brown);
  border-radius: 10px;
  color: var(--ink);
  box-shadow: 3px 3px 0 rgba(60,42,32,.20);
  -webkit-backdrop-filter: none; backdrop-filter: none;
}
html[data-theme="sdv"] .topbtn.terminal.active{ color: var(--rose); }

/* 空会话提示 */
html[data-theme="sdv"] #empty p{
  background: var(--cream);
  border: 3px solid var(--line-brown);
  border-radius: 10px;
  color: var(--ink-soft);
  -webkit-backdrop-filter: none; backdrop-filter: none;
}

/* 日期分隔 */
html[data-theme="sdv"] .day{
  color: var(--ink-soft);
  background: rgba(248,243,237,.92);
  border: 2px solid var(--line-brown);
  border-radius: 999px;
  padding: 2px 12px;
  box-shadow: 2px 2px 0 rgba(60,42,32,.15);
}
html[data-theme="sdv"] .new-divider{ color: var(--rose); }
html[data-theme="sdv"] .new-divider::before,
html[data-theme="sdv"] .new-divider::after{ background: rgba(194,88,124,.4); }

/* 气泡：奶油底 + 棕描边（九宫格），小尾巴用 ::after */
html[data-theme="sdv"] .row.ai .bubble,
html[data-theme="sdv"] .row.human .bubble{
  background: none;
  border-radius: 0;
  box-shadow: 4px 4px 0 rgba(60,42,32,.14);
  color: var(--ink);
  border: 8px solid transparent;
  padding: 6px 10px 7px;
  image-rendering: pixelated;
}
html[data-theme="sdv"] .row.ai .bubble{
  border-image: url("assets/sdv/bubble_b.png") 6 fill / 6px / 2px stretch;
}
html[data-theme="sdv"] .row.human .bubble{
  border-image: url("assets/sdv/bubble_b_r.png") 6 fill / 6px / 2px stretch;
}
html[data-theme="sdv"] .row.tail .bubble::after{
  content:""; position:absolute; bottom: -12px;
  width: 18px; height: 14px;
  background: url("assets/sdv/bubble_tail.png") center / contain no-repeat;
  image-rendering: pixelated;
  pointer-events:none;
}
html[data-theme="sdv"] .row.ai.tail .bubble::after{ left: 12px; }
html[data-theme="sdv"] .row.human.tail .bubble::after{ right: 12px; transform: scaleX(-1); }
html[data-theme="sdv"] .row.ai.tail .bubble,
html[data-theme="sdv"] .row.human.tail .bubble{ border-bottom-left-radius: 0; border-bottom-right-radius: 0; }
html[data-theme="sdv"] .bubble .txt code{
  background: var(--cream-deep);
  border: 1px solid rgba(91,63,63,.3);
  border-radius: 4px;
  color: var(--rose-deep);
}
html[data-theme="sdv"] .meta{
  color: var(--ink-soft);
  text-shadow: 0 1px 0 rgba(248,243,237,.9), 1px 0 0 rgba(248,243,237,.9), -1px 0 0 rgba(248,243,237,.9);
}
html[data-theme="sdv"] .meta .tick{ color: var(--steel); }

/* AI 头像：不套相框(找到合适的素材再加回来) */

/* 思考/工具卡 */
html[data-theme="sdv"] .meta-card{
  background: var(--cream);
  border: 3px solid var(--line-brown);
  border-radius: 10px;
  box-shadow: 3px 3px 0 rgba(60,42,32,.14);
}
html[data-theme="sdv"] .meta-card-label{ color: var(--ink); }
html[data-theme="sdv"] .meta-card-hint{ color: var(--ink-faint); }
html[data-theme="sdv"] .think-caption, html[data-theme="sdv"] .act-label{
  color: var(--ink);
  text-shadow: 0 1px 0 rgba(248,243,237,1), 1px 0 0 rgba(248,243,237,1), -1px 0 0 rgba(248,243,237,1), 0 -1px 0 rgba(248,243,237,1);
}
html[data-theme="sdv"] .think-state, html[data-theme="sdv"] .act-state{ color: var(--rose); }

/* 底部输入区:长条木框素材整张铺满(不九宫格,保花朵装饰完整);
   min-width:0 让 flex 正常收缩,发送键不被顶出屏 */
html[data-theme="sdv"] .composer{
  background: linear-gradient(to top, rgba(248,243,237,.96) 0%, rgba(248,243,237,.78) 55%, transparent 100%);
}
html[data-theme="sdv"] .composer .field{
  min-width: 0;
  /* 同登录框:整张长条木框素材铺满,不九宫格;
     内边距按素材宽度比例留白(木条/顶底边随高度变厚,% 随宽度自适应),
     多行时光标和文字也不会贴到框上 */
  background: url("assets/sdv/bar_input.png") center / 100% 100% no-repeat;
  border: none;
  border-radius: 3px;
  box-shadow: none;
  -webkit-backdrop-filter: none; backdrop-filter: none;
  padding: 6% 15% 6% 9%;
}
html[data-theme="sdv"] .composer textarea{
  min-width: 0;
  color: var(--ink);
  font-family: var(--font-cn);
}
html[data-theme="sdv"] .composer textarea::placeholder{ color: var(--ink-faint); }
html[data-theme="sdv"] .emojibtn{ color: var(--ink-soft); }
html[data-theme="sdv"] .floatbtn.send,
html[data-theme="sdv"] .floatbtn.stop{
  background: var(--rose);
  color: var(--accent-fg);
  border: 3px solid var(--line-brown);
  border-radius: 10px;
  box-shadow: 0 3px 0 var(--line-brown);
}
html[data-theme="sdv"] .floatbtn.send:active,
html[data-theme="sdv"] .floatbtn.stop:active{
  transform: translateY(2px);
  box-shadow: 0 1px 0 var(--line-brown);
}
html[data-theme="sdv"] .newmsg-pill,
html[data-theme="sdv"] .scroll-jump{
  background: var(--cream);
  border: 3px solid var(--line-brown);
  border-radius: 999px;
  color: var(--ink);
  box-shadow: 3px 3px 0 rgba(60,42,32,.20);
  -webkit-backdrop-filter: none; backdrop-filter: none;
}

/* 会话抽屉 */
html[data-theme="sdv"] .session-pop{
  background: var(--cream);
  border: 3px solid var(--line-brown);
  border-radius: 12px;
  box-shadow: 6px 6px 0 rgba(60,42,32,.22);
  -webkit-backdrop-filter: none; backdrop-filter: none;
}
html[data-theme="sdv"] .session-title{ color: var(--ink-faint); }
html[data-theme="sdv"] .session-item{ color: var(--ink); border-radius: 8px; }
html[data-theme="sdv"] .session-item.active{ background: rgba(194,88,124,.14); }
html[data-theme="sdv"] .session-meta{ color: var(--ink-faint); }
html[data-theme="sdv"] .session-new{
  background: var(--rose); color: var(--accent-fg);
  border: 2px solid var(--line-brown); border-radius: 8px;
}

/* 长按菜单 / 编辑浮层 */
html[data-theme="sdv"] .ctx-actions,
html[data-theme="sdv"] .edit-card{
  background: var(--cream) !important;
  border: 3px solid var(--line-brown) !important;
  border-radius: 12px !important;
  box-shadow: 6px 6px 0 rgba(60,42,32,.22) !important;
  -webkit-backdrop-filter: none !important; backdrop-filter: none !important;
  color: var(--ink);
}

/* ════════════ 主页（菜单/springboard） ════════════ */
html[data-theme="sdv"] .menu-page{
  background-image: var(--menu-wall-default);
  background-size: cover; background-position: center;
  image-rendering: pixelated;
}
html[data-theme="sdv"] .menu-page::before{
  background: linear-gradient(180deg, rgba(248,243,237,.12) 0%, rgba(248,243,237,.06) 40%, rgba(44,58,75,.20) 100%);
}
/* 图标瓷砖:像素图标直接落地(去奶油盒,SVG 只在 tide 主题用) */
html[data-theme="sdv"] .app-tile .app-icon{
  background: transparent center / contain no-repeat;
  border: none;
  border-radius: 0;
  box-shadow: none;
  -webkit-backdrop-filter: none; backdrop-filter: none;
  image-rendering: pixelated;
  filter: drop-shadow(2px 2px 0 rgba(44,35,28,.25));
}
html[data-theme="sdv"] .app-tile .app-icon svg{ display: none; }
html[data-theme="sdv"] .app-tile[data-menu="chat"]     .app-icon{ background-image: url("assets/sdv/icon_chat.png"); }
html[data-theme="sdv"] .app-tile[data-menu="room"]     .app-icon{ background-image: url("assets/sdv/icon_room.png"); }
html[data-theme="sdv"] .app-tile[data-menu="period"]   .app-icon{ background-image: url("assets/sdv/icon_period.png"); }
html[data-theme="sdv"] .app-tile[data-menu="cat"]      .app-icon{ background-image: url("assets/sdv/icon_cat.png"); }
html[data-theme="sdv"] .app-tile[data-menu="fridge"]   .app-icon{ background-image: url("assets/sdv/icon_fridge.png"); }
html[data-theme="sdv"] .app-tile[data-menu="memory"]   .app-icon{ background-image: url("assets/sdv/icon_memory.png"); }
html[data-theme="sdv"] .app-tile[data-menu="state"]    .app-icon{ background-image: url("assets/sdv/icon_state.png"); }
html[data-theme="sdv"] .app-tile[data-menu="settings"] .app-icon{ background-image: url("assets/sdv/icon_settings.png"); }
html[data-theme="sdv"] .app-tile:active .app-icon{
  transform: translateY(3px);
  filter: drop-shadow(1px 1px 0 rgba(44,35,28,.25));
}
html[data-theme="sdv"] .app-tile .app-label{
  color: var(--ink);
  background: rgba(248,243,237,.92);
  border: 2px solid var(--line-brown);
  border-radius: 999px;
  padding: 2px 10px;
  box-shadow: 2px 2px 0 rgba(60,42,32,.18);
  text-shadow: none;
}
/* 小部件：木框素材(已裁掉外围纸边,边框即图内 130px;投影用 CSS 补) */
html[data-theme="sdv"] .widget-anniversary,
html[data-theme="sdv"] .widget-board{
  border: 14px solid transparent;
  border-image: url("assets/sdv/frame_wood.png") 128 fill / 14px / 0 stretch;
  border-radius: 0;
  box-shadow: 5px 5px 0 rgba(44,35,28,.22);
  background: none;
  -webkit-backdrop-filter: none; backdrop-filter: none;
  color: var(--ink);
  image-rendering: pixelated;
}
/* 照片 widget:风景照 + 花卉相框叠层(中心透明,四角花藤搭在照片上) */
html[data-theme="sdv"] .widget-photo{
  border: none; box-shadow: none; background: none;
  -webkit-backdrop-filter: none; backdrop-filter: none;
  border-radius: 0;
}
html[data-theme="sdv"] .widget-photo__bg{
  background-image: url("assets/sdv/photo_scene.png");
  background-size: cover; background-position: center;
}
html[data-theme="sdv"] .widget-photo::after{
  content:""; position:absolute; inset:0; z-index:1;
  background: url("assets/sdv/frame_photo.png") center / 100% 100% no-repeat;
  pointer-events:none;
}
html[data-theme="sdv"] .widget-photo__scrim{ display:none; }
/* 写字板:木框奶油底 + 横线纸纹(字写在横线上,信纸横版太小不合适,已撤) */
html[data-theme="sdv"] .widget-board{ position:relative; }
html[data-theme="sdv"] .widget-board::before{
  content:""; position:absolute; inset:14px;
  background: repeating-linear-gradient(180deg, transparent 0 21px, rgba(91,63,63,.20) 21px 22px);
  pointer-events:none;
}
html[data-theme="sdv"] .widget-board__code{ position:relative; z-index:1; }
/* 纪念日:角落趴一块小蛋糕 */
html[data-theme="sdv"] .widget-anniversary::after{
  content:""; position:absolute; right:6px; top:4px; width:40px; height:40px;
  background: url("assets/sdv/deco_cake.png") center / contain no-repeat;
  pointer-events:none;
}
html[data-theme="sdv"] .widget-anniversary__label{ color: var(--ink-soft); }
html[data-theme="sdv"] .widget-anniversary__num{ color: var(--rose-deep); }
html[data-theme="sdv"] .widget-anniversary__unit,
html[data-theme="sdv"] .widget-anniversary__date{ color: var(--ink-faint); }
html[data-theme="sdv"] .widget-board__code{ color: var(--ink); }

/* ════════════ 设置 / 个人资料 / 房间页 ════════════ */
html[data-theme="sdv"] .profile-page,
html[data-theme="sdv"] .room-page{
  background-color: var(--cream);
  background-image: var(--wall-default);
  background-size: cover;
  background-position: center;
}
/* 薄纱恢复显示:壁纸上面盖奶油 scrim,可读又透出像素风景 */
html[data-theme="sdv"] .profile-page::before,
html[data-theme="sdv"] .room-page::before{ background: var(--scrim); }
html[data-theme="sdv"] .profile-topbar h2,
html[data-theme="sdv"] .room-topbar h2{ color: var(--ink); }
html[data-theme="sdv"] .profile-back,
html[data-theme="sdv"] .room-back{
  background: var(--cream);
  border: 3px solid var(--line-brown);
  border-radius: 10px;
  color: var(--ink);
  box-shadow: 3px 3px 0 rgba(60,42,32,.20);
}

/* 设置分组：木框素材(已裁外围纸边;收紧 padding 给内容留宽,防 seg 溢出) */
html[data-theme="sdv"] .setting-group,
html[data-theme="sdv"] .settings-card{
  background: none;
  border: 18px solid transparent;
  border-image: url("assets/sdv/frame_wood.png") 128 fill / 18px / 0 stretch;
  border-radius: 0;
  box-shadow: 4px 4px 0 rgba(60,42,32,.16);
  -webkit-backdrop-filter: none; backdrop-filter: none;
  image-rendering: pixelated;
  padding: 10px;
}
/* 4 键场景 seg 在窄内容区不换行必溢出框外:允许收缩 + 允许两字换行 */
html[data-theme="sdv"] .segmented{ grid-auto-columns: minmax(0, 1fr); }
html[data-theme="sdv"] .segmented button{
  min-width: 0;
  white-space: normal;
  line-height: 1.3;
  font-size: 11px;
  padding: 7px 2px;
}
html[data-theme="sdv"] .setting-row + .setting-row{ border-top: 2px solid rgba(91,63,63,.22); }
html[data-theme="sdv"] .setting-label{ color: var(--ink); }
html[data-theme="sdv"] .setting-sub{ color: var(--ink-faint); }
html[data-theme="sdv"] .setting-value{ color: var(--ink-soft); }
html[data-theme="sdv"] .setting-chevron{ color: var(--ink-faint); }
html[data-theme="sdv"] .setting-icon{
  background: rgba(194,88,124,.16);
  border: 2px solid rgba(91,63,63,.35);
  border-radius: 8px;
  color: var(--rose-deep);
}
html[data-theme="sdv"] .setting-group-hint{ color: var(--ink-faint); }
html[data-theme="sdv"] .profile-name-row h3,
html[data-theme="sdv"] .profile-name-row input{ color: var(--ink); }
html[data-theme="sdv"] .profile-handle{ color: var(--ink-faint); }
html[data-theme="sdv"] .profile-bio{ color: var(--ink-soft); }
/* 资料页头像：同聊天头像,不套相框 */

/* 输入框 / 文本域 / 调试框 */
html[data-theme="sdv"] .config-fields input,
html[data-theme="sdv"] .config-textarea,
html[data-theme="sdv"] .debug-output{
  background: var(--cream);
  border: 3px solid var(--line-brown);
  border-radius: 8px;
  color: var(--ink);
  font-family: var(--font-cn);
}
html[data-theme="sdv"] .config-fields input:focus,
html[data-theme="sdv"] .config-textarea:focus{
  border-color: var(--rose);
  box-shadow: 0 0 0 3px rgba(194,88,124,.22);
}
html[data-theme="sdv"] .config-field-label{ color: var(--ink-faint); }

/* 像素按钮（确认/数据管理等） */
html[data-theme="sdv"] .config-action,
html[data-theme="sdv"] .clear-btn,
html[data-theme="sdv"] .session-new,
html[data-theme="sdv"] .edit-save{
  background: var(--rose);
  color: var(--accent-fg);
  border: 3px solid var(--line-brown);
  border-radius: 8px;
  box-shadow: 0 3px 0 var(--line-brown);
  font-family: var(--font-cn);
}
html[data-theme="sdv"] .config-action:active,
html[data-theme="sdv"] .clear-btn:active{
  transform: translateY(2px);
  box-shadow: 0 1px 0 var(--line-brown);
}
html[data-theme="sdv"] .config-action.ghost{
  background: var(--cream);
  color: var(--ink);
}
html[data-theme="sdv"] .setting-row.destructive .setting-label{ color: var(--danger); }

/* 分段开关/滑块等控件配色 */
html[data-theme="sdv"] .seg{ background: var(--seg-track); border-radius: 10px; }
html[data-theme="sdv"] .seg-thumb{ background: var(--cream); border: 2px solid var(--line-brown); box-shadow: 2px 2px 0 rgba(60,42,32,.2); }
html[data-theme="sdv"] input[type="range"]{ accent-color: var(--rose); }
html[data-theme="sdv"] .switch input:checked + i{ background: var(--rose); }
