/* ============================================================
   GBFR Patch Tool — 设计令牌单一事实源（原子化重构）
   两层：① primitive 原始调色板（仅此处出裸值）② semantic 语义角色（组件只引用这层）。
   禁止任何组件/后代选择器（.app-window 等）重定义这些变量。
   浅色羊皮纸单主题，无暗色分支。
   ============================================================ */
@font-face {
  font-family: "GBFR UI Latin";
  src: url("./assets/fonts/atkinson-hyperlegible-next-variable.woff2") format("woff2");
  font-style: normal;
  font-weight: 400 800;
  font-display: swap;
}

:root {
  color-scheme: light;
  font-synthesis: none;
  text-rendering: optimizeLegibility;

  --font-ui: "GBFR UI Latin", "Microsoft YaHei UI", "Microsoft YaHei", "Noto Sans SC", "Segoe UI", sans-serif;
  --font-display: "GBFR UI Latin", "Microsoft YaHei UI", "Microsoft YaHei", "Noto Sans SC", sans-serif;
  --font-data: "GBFR UI Latin", "Segoe UI", "Microsoft YaHei UI", "Microsoft YaHei", sans-serif;

  /* ── PRIMITIVE 原始调色板 ── */
  /* 羊皮纸面：浅→深 */
  --p-paper-100:#fffdf7; --p-paper-200:#fbf6e9; --p-paper-300:#f4ead6;
  --p-paper-400:#eadcc1; --p-paper-500:#dfd1b6; --p-app-bg:#e9dfcc;
  /* 胡桃木/黄铜：品牌主色阶（选中/主按钮/描边） */
  --p-brass-050:#f5ead2; --p-brass-100:#ead7ad; --p-brass-300:#c9a25e;
  --p-brass-500:#98703a; --p-brass-600:#896331; --p-brass-650:#7f5d31;
  --p-brass-700:#6e4e28; --p-brass-800:#5d4020;
  /* 墨：文字阶 */
  --p-ink-900:#3f3932; --p-ink-700:#655b50; --p-ink-500:#63594e; --p-ink-on-brass:#fffaf0;
  /* 线 */
  --p-line-22:rgba(105,76,37,.26); --p-line-15:rgba(105,76,37,.16); --p-line-gold:rgba(126,89,40,.42);
  /* 功能状态（真值，不再被污染） */
  --p-success:#4c9c76; --p-success-ink:#2b6547; --p-success-bg:#dcebdd; --p-success-bar:#4a7658;
  --p-warning:#b78237; --p-warning-ink:#8e682d; --p-warning-bg:#efdfb9;
  --p-danger:#bd625e;  --p-danger-ink:#a24b47;  --p-danger-bg:#f6ded9;
  --p-info:#2e8f98;    --p-info-ink:#246a70;    --p-info-bg:#dcebed; /* 静音青，仅信息/当前值/合法，永不用于选中 */
  --p-focus-outline:rgba(154,116,64,.55); --p-focus-ring:rgba(214,182,111,.30);

  /* ── SEMANTIC 语义角色（组件唯一可引用层） ── */
  --surface-app:var(--p-app-bg); --surface-card:var(--p-paper-200); --surface-card-pop:var(--p-paper-100);
  --surface-field:var(--p-paper-300); --surface-field-hover:var(--p-paper-100);
  --surface-row:var(--p-paper-400); --surface-row-hover:#f2e4c5; --surface-sunken:var(--p-paper-500);
  --text-primary:var(--p-ink-900); --text-secondary:var(--p-ink-700); --text-muted:var(--p-ink-500);
  --text-on-accent:var(--p-ink-on-brass); --text-link:var(--p-info-ink);
  --border-default:var(--p-line-22); --border-soft:var(--p-line-15); --border-strong:var(--p-line-gold); --border-accent:var(--p-brass-800);
  --accent:var(--p-brass-650); --accent-hover:var(--p-brass-700); --accent-border:var(--p-brass-800); --accent-soft:var(--p-brass-100);
  /* 选中态：全应用唯一画法=棕金实心 */
  --selected-bg:var(--p-brass-650); --selected-fg:var(--p-ink-on-brass); --selected-border:var(--p-brass-800); --selected-bar:var(--p-brass-600);
  --state-hover:rgba(105,76,37,.07); --state-active:rgba(105,76,37,.13); --state-disabled-opacity:.5;
  --focus-outline:2px solid var(--p-focus-outline); --focus-offset:2px; --focus-ring:0 0 0 3px var(--p-focus-ring);
  --success:var(--p-success); --success-ink:var(--p-success-ink); --success-bg:var(--p-success-bg); --success-bar:var(--p-success-bar);
  --warning:var(--p-warning); --warning-ink:var(--p-warning-ink); --warning-bg:var(--p-warning-bg);
  --danger:var(--p-danger); --danger-ink:var(--p-danger-ink); --danger-bg:var(--p-danger-bg);
  --info:var(--p-info); --info-ink:var(--p-info-ink); --info-bg:var(--p-info-bg);

  /* 间距 / 圆角 / 阴影 / 字号 / 字重 / 层级 / 动效 */
  --space-1:4px; --space-2:6px; --space-3:8px; --space-4:10px; --space-5:12px; --space-6:16px; --space-7:20px; --space-8:24px; --space-9:32px; --space-10:40px;
  --radius-sm:6px; --radius-md:9px; --radius-lg:13px; --radius-pill:999px;
  --shadow-1:0 1px 2px rgba(72,50,22,.06),0 6px 16px rgba(72,50,22,.06);
  --shadow-2:0 2px 5px rgba(72,50,22,.08),0 14px 32px rgba(72,50,22,.10);
  --shadow-3:0 22px 56px rgba(52,36,15,.28);
  --fs-2xs:11px; --fs-xs:11px; --fs-sm:12px; --fs-md:13px; --fs-base:14px; --fs-lg:17px; --fs-xl:22px;
  --fw-normal:400; --fw-medium:500; --fw-semibold:600; --fw-bold:700;
  --lh-tight:1.3; --lh-normal:1.55; --lh-relaxed:1.7;
  --control-height-sm:30px; --control-height:36px; --control-height-lg:42px;
  --content-gutter:clamp(12px,2vw,24px);
  --page-measure:900px; --page-measure-wide:1120px;
  --z-dropdown:100; --z-drawer:500; --z-dialog:1000; --z-toast:1200;
  --dur-fast:120ms; --dur-base:180ms; --ease-out:cubic-bezier(.2,.8,.2,1);
  --transition-control:background-color var(--dur-base) var(--ease-out),border-color var(--dur-base) var(--ease-out),color var(--dur-base) var(--ease-out),box-shadow var(--dur-base) var(--ease-out),opacity var(--dur-base) var(--ease-out);

  /* ── 兼容旧令牌名（迁移期别名；逐步替换后删除）。关键：--cyan/--green 恢复真值，不再是 #48c9df ── */
  --gold:var(--p-brass-500); --gold-soft:var(--p-brass-300);
  --cyan:var(--p-info); --cyan-bright:var(--p-info); --green:var(--p-success); --amber:var(--p-warning); --red:var(--p-danger);
  --line:var(--p-line-22); --line-soft:var(--p-line-15); --line-gold:var(--p-line-gold);
  --panel:var(--p-paper-100); --panel-solid:var(--p-paper-100);
  --sky-1000:var(--p-paper-500); --sky-950:#f3ead3; --sky-900:#f8f1dc; --sky-850:var(--p-paper-100); --sky-700:var(--p-info);
}

* { box-sizing: border-box; }

html, body, #app {
  width: 100%;
  height: 100%;
  margin: 0;
  padding: 0;
  overflow: hidden;
}

body {
  background: var(--sky-1000);
  color: var(--text-primary);
  font-family: var(--font-ui);
  font-size: var(--fs-base);
  font-weight: var(--fw-normal);
  line-height: var(--lh-normal);
  font-optical-sizing: auto;
  font-variant-numeric: lining-nums;
}

button, input, select, textarea {
  font-family: var(--font-ui);
  font-optical-sizing: auto;
  font-variant-numeric: lining-nums;
}
button { -webkit-tap-highlight-color: transparent; }

input[type="number"] { appearance:textfield; -moz-appearance:textfield; }
input[type="number"]::-webkit-inner-spin-button,
input[type="number"]::-webkit-outer-spin-button { margin:0; -webkit-appearance:none; }

* {
  scrollbar-width: thin;
  scrollbar-color: rgba(126, 89, 40, .42) transparent;
}

*::-webkit-scrollbar { width: 8px; height: 8px; }
*::-webkit-scrollbar-track { background: transparent; }
*::-webkit-scrollbar-thumb {
  border: 2px solid transparent;
  border-radius: 8px;
  background: rgba(126, 89, 40, .42);
  background-clip: content-box;
}
*::-webkit-scrollbar-thumb:hover { background-color: rgba(110, 78, 40, .62); }
*::-webkit-scrollbar-corner { background: transparent; }

/*
 * Numeric controls use a wider, heavier face with stable tabular figures.
 * These selectors intentionally cover both native controls and the project's
 * recurring data labels without forcing ordinary prose into a monospace face.
 */
:where(input[type="number"], input[inputmode="numeric"], input[inputmode="decimal"], code,
  .number-input, .count, .pid, .memory-bytes, .currency-meta, .burst-timer,
  .ed-current-lv, .ed-level,
  .ed-level-hint, .row-name-lv, .row-chip-lv, .tab-count, .slot, .rank,
  .id, .level, .value, .version-label, .build-chip) {
  font-family: var(--font-data) !important;
  font-weight: 680 !important;
  font-variant-numeric: tabular-nums lining-nums;
  letter-spacing: 0;
}

:where(input[type="number"], input[inputmode="numeric"], input[inputmode="decimal"]) {
  font-size: max(1em, 13px);
}

:where(.count, .ed-current-lv, .ed-level, .row-name-lv, .row-chip-lv) {
  font-weight: 720 !important;
}

#app { text-align: left; }

button, input, select, textarea { transition:var(--transition-control); }
button:focus-visible, input:focus-visible, select:focus-visible, textarea:focus-visible { outline:var(--focus-outline); outline-offset:var(--focus-offset); box-shadow:var(--focus-ring); }

/* 文本选中一律走羊皮纸色，不用浏览器默认的蓝底白字 */
::selection { background:rgba(154,116,64,.28); color:#40382e; }
/* 按钮/标签这类点击区反复点会拖选出文本高亮，直接禁掉；输入框仍可正常选中 */
button, .chara-chip, [role="tab"] { user-select:none; -webkit-user-select:none; }

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    scroll-behavior:auto!important;
    animation-duration:.01ms!important;
    animation-iteration-count:1!important;
    transition-duration:.01ms!important;
  }
}
