/* UBS unified UI kit. Self-hosted; no external fonts or CDNs. Spec: docs/ui/design-system.md */
:root {
  /* color */
  --k-bg: #f4f6fa;
  --k-surface: #ffffff;
  --k-surface-2: #f8fafc;
  --k-ink: #0f172a;
  --k-ink-2: #334155;
  --k-muted: #64748b;
  --k-faint: #94a3b8;
  --k-line: #e2e8f0;
  --k-line-2: #eef2f7;
  --k-primary: #2563eb;
  --k-primary-ink: #1d4ed8;
  --k-primary-soft: #eff4ff;
  --k-success: #059669;
  --k-success-soft: #ecfdf5;
  --k-warning: #b45309;
  --k-warning-soft: #fffbeb;
  --k-danger: #dc2626;
  --k-danger-soft: #fef2f2;
  --k-info: #0284c7;
  --k-info-soft: #f0f9ff;
  --k-nav-bg: #0f172a;
  --k-nav-ink: #cbd5e1;
  --k-nav-muted: #64748b;
  --k-nav-active: #1e293b;
  /* type */
  --k-font: -apple-system, BlinkMacSystemFont, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Noto Sans CJK SC", "Segoe UI", Roboto, sans-serif;
  --k-mono: "SF Mono", Menlo, Consolas, "Liberation Mono", monospace;
  --k-fs-xs: 12px;
  --k-fs-sm: 13px;
  --k-fs-md: 14px;
  --k-fs-lg: 16px;
  --k-fs-xl: 20px;
  --k-fs-2xl: 26px;
  /* spacing (4px grid) */
  --k-s1: 4px; --k-s2: 8px; --k-s3: 12px; --k-s4: 16px; --k-s5: 20px; --k-s6: 24px; --k-s8: 32px;
  /* radius & shadow */
  --k-r-sm: 6px; --k-r-md: 10px; --k-r-lg: 14px; --k-r-pill: 999px;
  --k-shadow-1: 0 1px 2px rgba(15, 23, 42, .06), 0 1px 3px rgba(15, 23, 42, .04);
  --k-shadow-2: 0 10px 30px rgba(15, 23, 42, .12);
  --k-sidebar: 232px;
  --k-topbar: 56px;
}
*, *::before, *::after { box-sizing: border-box; }
html, body { margin: 0; padding: 0; }
body.k { font-family: var(--k-font); font-size: var(--k-fs-md); line-height: 1.55; color: var(--k-ink); background: var(--k-bg); -webkit-font-smoothing: antialiased; }
.k a { color: var(--k-primary); text-decoration: none; }
.k a:hover { color: var(--k-primary-ink); text-decoration: underline; }
.k :focus-visible { outline: 2px solid var(--k-primary); outline-offset: 2px; border-radius: 4px; }
.k h1, .k h2, .k h3, .k h4 { margin: 0; font-weight: 600; color: var(--k-ink); }
.k-sr { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
.k-num { font-variant-numeric: tabular-nums; }
.k-mono { font-family: var(--k-mono); font-size: var(--k-fs-sm); }
.k-muted { color: var(--k-muted); }

/* ---------- app shell ---------- */
.k-app { display: grid; grid-template-columns: var(--k-sidebar) minmax(0, 1fr); min-height: 100vh; }
.k-sidebar { position: sticky; top: 0; height: 100vh; overflow-y: auto; background: var(--k-nav-bg); color: var(--k-nav-ink); display: flex; flex-direction: column; }
.k-brand { display: flex; align-items: center; gap: 10px; height: var(--k-topbar); padding: 0 var(--k-s5); color: #fff !important; font-weight: 700; font-size: var(--k-fs-lg); letter-spacing: .3px; border-bottom: 1px solid rgba(255,255,255,.06); text-decoration: none !important; }
.k-brand-mark { width: 28px; height: 28px; border-radius: 8px; background: linear-gradient(135deg, #3b82f6, #6366f1); display: grid; place-items: center; font-size: 13px; color: #fff; }
.k-nav { padding: var(--k-s3) var(--k-s2) var(--k-s6); }
.k-nav-label { padding: var(--k-s3) var(--k-s3) var(--k-s1); font-size: var(--k-fs-xs); color: var(--k-nav-muted); letter-spacing: .5px; }
.k-nav a, .k-nav summary { display: flex; align-items: center; gap: 8px; padding: 8px var(--k-s3); border-radius: var(--k-r-sm); color: var(--k-nav-ink); font-size: var(--k-fs-md); cursor: pointer; text-decoration: none !important; list-style: none; }
.k-nav summary::-webkit-details-marker { display: none; }
.k-nav summary::after { content: ""; margin-left: auto; width: 6px; height: 6px; border-right: 1.5px solid currentColor; border-bottom: 1.5px solid currentColor; transform: rotate(-45deg); transition: transform .15s; opacity: .6; }
.k-nav details[open] > summary::after { transform: rotate(45deg); }
.k-nav a:hover, .k-nav summary:hover { background: var(--k-nav-active); color: #fff; }
.k-nav details > div { padding: 2px 0 6px; }
.k-nav details a { padding-left: 30px; font-size: var(--k-fs-sm); }
.k-nav a[aria-current="page"] { background: var(--k-primary); color: #fff; }
.k-main { min-width: 0; display: flex; flex-direction: column; }
.k-topbar { position: sticky; top: 0; z-index: 20; height: var(--k-topbar); display: flex; align-items: center; gap: var(--k-s4); padding: 0 var(--k-s6); background: rgba(255,255,255,.92); backdrop-filter: blur(6px); border-bottom: 1px solid var(--k-line); }
.k-menu-btn { display: none; border: 0; background: transparent; padding: 6px; border-radius: var(--k-r-sm); cursor: pointer; color: var(--k-ink-2); }
.k-crumbs { display: flex; flex-wrap: wrap; gap: 6px; font-size: var(--k-fs-sm); color: var(--k-muted); margin: 0; padding: 0; list-style: none; }
.k-crumbs li + li::before { content: "/"; margin-right: 6px; color: var(--k-faint); }
.k-crumbs a { color: var(--k-muted); }
.k-topbar-end { margin-left: auto; display: flex; align-items: center; gap: var(--k-s3); }
.k-user { position: relative; }
.k-user > summary { list-style: none; display: flex; align-items: center; gap: 8px; cursor: pointer; padding: 4px 8px; border-radius: var(--k-r-pill); }
.k-user > summary::-webkit-details-marker { display: none; }
.k-user > summary:hover { background: var(--k-line-2); }
.k-avatar { width: 30px; height: 30px; border-radius: 50%; background: var(--k-primary-soft); color: var(--k-primary-ink); display: grid; place-items: center; font-weight: 600; font-size: var(--k-fs-sm); }
.k-user-meta { display: flex; flex-direction: column; line-height: 1.2; }
.k-user-meta b { font-size: var(--k-fs-sm); font-weight: 600; }
.k-user-meta small { font-size: var(--k-fs-xs); color: var(--k-muted); }
.k-user-menu { position: absolute; right: 0; top: calc(100% + 6px); min-width: 180px; background: var(--k-surface); border: 1px solid var(--k-line); border-radius: var(--k-r-md); box-shadow: var(--k-shadow-2); padding: 6px; z-index: 30; }
.k-user-menu a { display: block; padding: 8px 10px; border-radius: var(--k-r-sm); color: var(--k-ink-2); font-size: var(--k-fs-sm); }
.k-user-menu a:hover { background: var(--k-line-2); text-decoration: none; }
.k-user-menu hr { border: 0; border-top: 1px solid var(--k-line); margin: 4px 0; }
.k-content { padding: var(--k-s6); display: flex; flex-direction: column; gap: var(--k-s5); }
.k-page-head { display: flex; align-items: flex-end; gap: var(--k-s4); flex-wrap: wrap; }
.k-page-head h1 { font-size: var(--k-fs-xl); }
.k-page-head p { margin: 2px 0 0; color: var(--k-muted); font-size: var(--k-fs-sm); }
.k-page-actions { margin-left: auto; display: flex; gap: var(--k-s2); flex-wrap: wrap; }
.k-footer { margin-top: auto; padding: var(--k-s4) var(--k-s6); color: var(--k-faint); font-size: var(--k-fs-xs); }

/* merchant realm: top navigation instead of a sidebar */
.k-app.is-merchant { display: block; }
.k-mtop { background: var(--k-nav-bg); color: #fff; }
.k-mtop-inner { display: flex; align-items: center; gap: var(--k-s4); height: var(--k-topbar); padding: 0 var(--k-s6); max-width: 1440px; margin: 0 auto; }
.k-mnav { display: flex; gap: 2px; flex-wrap: wrap; padding: 0 var(--k-s4); max-width: 1440px; margin: 0 auto; }
.k-mnav > a, .k-mnav > details > summary { display: block; padding: 10px 14px; color: var(--k-nav-ink); font-size: var(--k-fs-md); border-bottom: 2px solid transparent; cursor: pointer; list-style: none; text-decoration: none !important; }
.k-mnav > details > summary::-webkit-details-marker { display: none; }
.k-mnav > a:hover, .k-mnav > details > summary:hover, .k-mnav > details[open] > summary { color: #fff; }
.k-mnav > a[aria-current="page"], .k-mnav > details.is-active > summary { color: #fff; border-bottom-color: #60a5fa; }
.k-mnav > details { position: relative; }
.k-mnav > details > div { position: absolute; top: 100%; left: 0; z-index: 30; min-width: 190px; background: var(--k-surface); border: 1px solid var(--k-line); border-radius: var(--k-r-md); box-shadow: var(--k-shadow-2); padding: 6px; }
.k-mnav > details > div a { display: block; padding: 8px 10px; color: var(--k-ink-2); border-radius: var(--k-r-sm); font-size: var(--k-fs-sm); }
.k-mnav > details > div a:hover { background: var(--k-line-2); text-decoration: none; }
.k-mnav > details > div a[aria-current="page"] { color: var(--k-primary-ink); background: var(--k-primary-soft); }
.k-mtop .k-user > summary:hover { background: rgba(255,255,255,.08); }
.k-mtop .k-user-meta small { color: var(--k-nav-ink); }
.is-merchant .k-content { max-width: 1440px; margin: 0 auto; width: 100%; }

/* ---------- surfaces ---------- */
.k-card { background: var(--k-surface); border: 1px solid var(--k-line); border-radius: var(--k-r-lg); box-shadow: var(--k-shadow-1); }
.k-card-head { display: flex; align-items: center; gap: var(--k-s3); padding: var(--k-s4) var(--k-s5); border-bottom: 1px solid var(--k-line-2); }
.k-card-head h2 { font-size: var(--k-fs-lg); }
.k-card-head .k-page-actions { margin-left: auto; }
.k-card-body { padding: var(--k-s5); }
.k-card-body.is-flush { padding: 0; }
.k-grid { display: grid; gap: var(--k-s4); }
.k-grid.cols-4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.k-grid.cols-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.k-grid.cols-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }

/* stat cards */
.k-stat { position: relative; padding: var(--k-s4) var(--k-s5); display: flex; flex-direction: column; gap: 6px; min-height: 112px; }
.k-stat-label { display: flex; align-items: center; gap: 8px; color: var(--k-muted); font-size: var(--k-fs-sm); }
.k-stat-dot { width: 8px; height: 8px; border-radius: 50%; background: var(--k-primary); }
.k-stat.is-success .k-stat-dot { background: var(--k-success); }
.k-stat.is-warning .k-stat-dot { background: #f59e0b; }
.k-stat.is-danger .k-stat-dot { background: var(--k-danger); }
.k-stat.is-info .k-stat-dot { background: var(--k-info); }
.k-stat-value { font-size: var(--k-fs-2xl); font-weight: 650; letter-spacing: -.5px; font-variant-numeric: tabular-nums; color: var(--k-ink); word-break: break-all; }
.k-stat-value.is-empty { color: var(--k-faint); }
.k-stat-unit { font-size: var(--k-fs-sm); color: var(--k-muted); font-weight: 500; margin-left: 4px; }
.k-stat-foot { margin-top: auto; display: flex; align-items: center; gap: 8px; font-size: var(--k-fs-xs); color: var(--k-faint); }
.k-stat-foot a { margin-left: auto; font-size: var(--k-fs-xs); }
.k-kv { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--k-s3); }
.k-kv > div { padding: var(--k-s3); background: var(--k-surface-2); border-radius: var(--k-r-md); }
.k-kv dt { font-size: var(--k-fs-xs); color: var(--k-muted); }
.k-kv dd { margin: 4px 0 0; font-size: var(--k-fs-xl); font-weight: 600; font-variant-numeric: tabular-nums; word-break: break-all; }
.k-list { margin: 0; padding: 0; list-style: none; }
.k-list li { display: flex; gap: var(--k-s3); align-items: center; padding: 10px 0; border-bottom: 1px solid var(--k-line-2); }
.k-list li:last-child { border-bottom: 0; }

/* charts (server-rendered SVG) */
.k-chart { width: 100%; height: auto; display: block; }
.k-chart .grid { stroke: var(--k-line); stroke-width: 1; }
.k-chart .axis { fill: var(--k-muted); font-size: 11px; font-family: var(--k-font); }
.k-chart .bar { fill: var(--k-primary); }
.k-chart .bar.s1 { fill: #f59e0b; }
.k-chart .bar.s2 { fill: var(--k-success); }
.k-chart .area { fill: rgba(37, 99, 235, .14); stroke: var(--k-primary); stroke-width: 2; }
.k-chart .dot { fill: var(--k-primary); }
.k-chart-meta { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); text-align: center; margin-bottom: var(--k-s4); }
.k-chart-meta > div + div { border-left: 1px solid var(--k-line-2); }
.k-chart-meta small { color: var(--k-muted); font-size: var(--k-fs-xs); }
.k-chart-meta b { display: block; font-size: var(--k-fs-lg); font-variant-numeric: tabular-nums; }

/* ---------- buttons ---------- */
.k-btn { display: inline-flex; align-items: center; justify-content: center; gap: 6px; height: 34px; padding: 0 14px; border-radius: var(--k-r-sm); border: 1px solid var(--k-line); background: var(--k-surface); color: var(--k-ink-2); font: inherit; font-size: var(--k-fs-sm); font-weight: 500; cursor: pointer; white-space: nowrap; text-decoration: none !important; }
.k-btn:hover { background: var(--k-surface-2); border-color: #cbd5e1; color: var(--k-ink); }
.k-btn.is-primary { background: var(--k-primary); border-color: var(--k-primary); color: #fff; }
.k-btn.is-primary:hover { background: var(--k-primary-ink); }
.k-btn.is-danger { color: var(--k-danger); border-color: #fecaca; }
.k-btn.is-danger:hover { background: var(--k-danger-soft); }
.k-btn.is-ghost { border-color: transparent; background: transparent; color: var(--k-primary); }
.k-btn.is-ghost:hover { background: var(--k-primary-soft); }
.k-btn.is-sm { height: 28px; padding: 0 10px; font-size: var(--k-fs-xs); }
.k-btn[disabled] { opacity: .5; cursor: not-allowed; }
.k-btn-group { display: inline-flex; flex-wrap: wrap; gap: 4px; }

/* ---------- forms & filter bar ---------- */
.k-filters { display: flex; flex-wrap: wrap; gap: var(--k-s3); align-items: flex-end; padding: var(--k-s4) var(--k-s5); border-bottom: 1px solid var(--k-line-2); background: var(--k-surface-2); border-radius: var(--k-r-lg) var(--k-r-lg) 0 0; }
.k-field { display: flex; flex-direction: column; gap: 4px; min-width: 160px; }
.k-field > span { font-size: var(--k-fs-xs); color: var(--k-muted); }
.k-input, .k-select { height: 34px; padding: 0 10px; border: 1px solid var(--k-line); border-radius: var(--k-r-sm); background: var(--k-surface); color: var(--k-ink); font: inherit; font-size: var(--k-fs-sm); min-width: 0; }
.k-input:focus, .k-select:focus { outline: none; border-color: var(--k-primary); box-shadow: 0 0 0 3px rgba(37,99,235,.15); }
.k-range { display: flex; align-items: center; gap: 4px; }
.k-range .k-input { width: 190px; }
.k-filters-actions { display: flex; gap: var(--k-s2); flex-wrap: wrap; }
.k-toolbar { display: flex; gap: var(--k-s2); flex-wrap: wrap; padding: var(--k-s3) var(--k-s5); border-bottom: 1px solid var(--k-line-2); }
.k-form { display: grid; gap: var(--k-s4); max-width: 640px; }
.k-form .k-field { min-width: 0; }

/* summary strip */
.k-summary { display: flex; flex-wrap: wrap; gap: var(--k-s2) var(--k-s5); padding: var(--k-s3) var(--k-s5); border-bottom: 1px solid var(--k-line-2); font-size: var(--k-fs-sm); color: var(--k-muted); }
.k-summary b { color: var(--k-ink); font-variant-numeric: tabular-nums; margin-left: 4px; font-weight: 600; }

/* ---------- table ---------- */
.k-table-wrap { overflow: auto; max-height: calc(100vh - 260px); }
.k-table { width: 100%; border-collapse: separate; border-spacing: 0; font-size: var(--k-fs-sm); }
.k-table th { position: sticky; top: 0; z-index: 2; background: var(--k-surface-2); color: var(--k-muted); font-weight: 600; font-size: var(--k-fs-xs); text-align: left; padding: 10px 12px; border-bottom: 1px solid var(--k-line); white-space: nowrap; }
.k-table td { padding: 10px 12px; border-bottom: 1px solid var(--k-line-2); vertical-align: middle; color: var(--k-ink-2); }
.k-table tbody tr:hover td { background: #fafcff; }
.k-table td.is-num, .k-table th.is-num { text-align: right; font-variant-numeric: tabular-nums; }
.k-table td.is-nowrap { white-space: nowrap; }
.k-empty { padding: var(--k-s8) var(--k-s4); text-align: center; color: var(--k-muted); }
.k-empty::before { content: ""; display: block; width: 40px; height: 40px; margin: 0 auto var(--k-s3); border-radius: 50%; background: var(--k-line-2); }
.k-alert { padding: var(--k-s3) var(--k-s4); border-radius: var(--k-r-md); font-size: var(--k-fs-sm); border: 1px solid; }
.k-alert.is-danger { background: var(--k-danger-soft); border-color: #fecaca; color: #991b1b; }
.k-alert.is-info { background: var(--k-info-soft); border-color: #bae6fd; color: #075985; }

/* badges */
.k-badge { display: inline-flex; align-items: center; gap: 4px; padding: 2px 8px; border-radius: var(--k-r-pill); font-size: var(--k-fs-xs); font-weight: 500; background: var(--k-line-2); color: var(--k-ink-2); white-space: nowrap; }
.k-badge.is-success { background: var(--k-success-soft); color: var(--k-success); }
.k-badge.is-warning { background: var(--k-warning-soft); color: var(--k-warning); }
.k-badge.is-danger { background: var(--k-danger-soft); color: var(--k-danger); }
.k-badge.is-info { background: var(--k-info-soft); color: var(--k-info); }
.k-badge.is-primary { background: var(--k-primary-soft); color: var(--k-primary-ink); }
button.k-badge { border: 0; cursor: pointer; font: inherit; font-size: var(--k-fs-xs); }

/* switch */
.k-switch { position: relative; display: inline-flex; align-items: center; gap: 6px; cursor: pointer; font-size: var(--k-fs-xs); color: var(--k-muted); }
.k-switch input { appearance: none; -webkit-appearance: none; width: 34px; height: 20px; border-radius: 999px; background: #cbd5e1; position: relative; cursor: pointer; transition: background .15s; margin: 0; }
.k-switch input::after { content: ""; position: absolute; top: 2px; left: 2px; width: 16px; height: 16px; border-radius: 50%; background: #fff; box-shadow: 0 1px 2px rgba(0,0,0,.2); transition: transform .15s; }
.k-switch input:checked { background: var(--k-success); }
.k-switch input:checked::after { transform: translateX(14px); }

/* masked secret */
.k-mask { display: inline-flex; align-items: center; gap: 6px; font-family: var(--k-mono); font-size: var(--k-fs-sm); background: var(--k-surface-2); border: 1px dashed var(--k-line); border-radius: var(--k-r-sm); padding: 2px 8px; }

/* pager */
.k-pager { display: flex; align-items: center; flex-wrap: wrap; gap: var(--k-s3); padding: var(--k-s3) var(--k-s5); font-size: var(--k-fs-sm); color: var(--k-muted); }
.k-pager-links { display: flex; gap: 4px; flex-wrap: wrap; }
.k-pager-links a, .k-pager-links span { min-width: 32px; height: 32px; padding: 0 10px; display: inline-flex; align-items: center; justify-content: center; border-radius: var(--k-r-sm); border: 1px solid var(--k-line); background: var(--k-surface); color: var(--k-ink-2); text-decoration: none !important; }
.k-pager-links a:hover { border-color: var(--k-primary); color: var(--k-primary); }
.k-pager-links span[aria-current] { background: var(--k-primary); border-color: var(--k-primary); color: #fff; }
.k-pager form { margin-left: auto; display: flex; align-items: center; gap: 6px; }

/* modal (replaces layer.open iframes) & toast */
.k-modal { border: 0; padding: 0; border-radius: var(--k-r-lg); box-shadow: var(--k-shadow-2); width: min(720px, 94vw); max-height: 90vh; display: flex; flex-direction: column; }
.k-modal:not([open]) { display: none; }
.k-modal::backdrop { background: rgba(15, 23, 42, .45); }
.k-modal-head { display: flex; align-items: center; padding: var(--k-s3) var(--k-s4); border-bottom: 1px solid var(--k-line); }
.k-modal-head h2 { font-size: var(--k-fs-lg); }
.k-modal-close { margin-left: auto; border: 0; background: transparent; font-size: 22px; line-height: 1; cursor: pointer; color: var(--k-muted); padding: 4px 8px; border-radius: var(--k-r-sm); }
.k-modal-close:hover { background: var(--k-line-2); }
.k-modal iframe { border: 0; width: 100%; height: 70vh; display: block; }
.k-modal-body { padding: var(--k-s5); overflow: auto; }
.k-toasts { position: fixed; top: 16px; right: 16px; z-index: 1000; display: flex; flex-direction: column; gap: 8px; }
.k-toast { min-width: 240px; max-width: 420px; padding: 10px 14px; border-radius: var(--k-r-md); background: var(--k-ink); color: #fff; box-shadow: var(--k-shadow-2); font-size: var(--k-fs-sm); }
.k-toast.is-success { background: #065f46; }
.k-toast.is-danger { background: #991b1b; }
.k-loading { opacity: .6; pointer-events: none; }

/* splash (Index/index transition pages) */
.k-splash { min-height: 100vh; display: grid; place-items: center; padding: var(--k-s6); background: radial-gradient(1200px 600px at 20% 0%, #e0e7ff 0%, transparent 60%), var(--k-bg); }
.k-splash .k-card { width: min(520px, 100%); padding: var(--k-s8); text-align: center; }
.k-splash h1 { font-size: var(--k-fs-2xl); margin-bottom: var(--k-s2); }
.k-splash p { color: var(--k-muted); margin: 6px 0; }
.k-splash .k-btn { margin-top: var(--k-s5); }
.k-count { font-size: 40px; font-weight: 700; color: var(--k-primary); font-variant-numeric: tabular-nums; }

/* ---------- responsive ---------- */
@media (max-width: 1360px) { .k-grid.cols-4 { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 1024px) {
  .k-app { grid-template-columns: 1fr; }
  .k-sidebar { position: fixed; left: 0; top: 0; z-index: 50; width: var(--k-sidebar); transform: translateX(-100%); transition: transform .2s; }
  .k-app.is-nav-open .k-sidebar { transform: none; box-shadow: var(--k-shadow-2); }
  .k-menu-btn { display: inline-flex; }
  .k-grid.cols-3, .k-grid.cols-2 { grid-template-columns: 1fr; }
}
@media (max-width: 640px) {
  .k-content { padding: var(--k-s3); }
  .k-grid.cols-4 { grid-template-columns: 1fr; }
  .k-kv { grid-template-columns: 1fr; }
  .k-mtop-inner, .k-topbar { padding: 0 var(--k-s3); }
  .k-user-meta { display: none; }
  .k-field { min-width: 100%; }
  .k-range .k-input { width: 100%; }
  .k-mnav { overflow-x: auto; flex-wrap: nowrap; }
  .k-mnav > details > div { position: fixed; left: 8px; right: 8px; top: auto; }
}
@media print { .k-sidebar, .k-topbar, .k-mnav { display: none; } .k-app { display: block; } }
.k-sep { border: 0; border-top: 1px solid var(--k-line-2); margin: var(--k-s4) 0; }
/* tables keep one line per cell; long free text opts in with .is-wrap */
.k-table th, .k-table td { white-space: nowrap; }
.k-table td.is-wrap { white-space: normal; min-width: 160px; max-width: 320px; }
.k-table .k-btn-group { flex-wrap: nowrap; }
@media (min-width: 1025px) { .k-app:not(.is-merchant) { background: linear-gradient(to right, var(--k-nav-bg) var(--k-sidebar), transparent var(--k-sidebar)); } }
/* description rows: label left, value right (narrow cards) */
.k-dl { margin: 0; display: flex; flex-direction: column; }
.k-dl > div { display: flex; align-items: baseline; justify-content: space-between; gap: var(--k-s3); padding: 12px 0; border-bottom: 1px solid var(--k-line-2); }
.k-dl > div:last-child { border-bottom: 0; }
.k-dl dt { color: var(--k-muted); font-size: var(--k-fs-sm); white-space: nowrap; }
.k-dl dd { margin: 0; font-size: var(--k-fs-lg); font-weight: 600; font-variant-numeric: tabular-nums; text-align: right; word-break: break-all; }
.k-dl.is-sm dd { font-size: var(--k-fs-md); font-weight: 500; }
.is-merchant .k-brand { border-bottom: 0; padding-left: 0; }
.k-mnav { padding: 0 calc(var(--k-s6) - 14px); }
.k-mnav > a, .k-mnav > details > summary { white-space: nowrap; }
/* tables never clip: horizontal scroll inside the card, first column pinned */
.k-table-wrap { overflow-x: auto; overscroll-behavior-x: contain; scrollbar-gutter: stable; }
.k-table th:first-child, .k-table td:first-child { position: sticky; left: 0; z-index: 1; background: var(--k-surface); box-shadow: 1px 0 0 var(--k-line-2); }
.k-table th:first-child { z-index: 3; background: var(--k-surface-2); }
.k-table tbody tr:hover td:first-child { background: #fafcff; }
/* compact row actions: a 3-column grid of small buttons (two rows for six) */
.k-table .k-btn-group.is-compact { display: grid; grid-template-columns: repeat(3, auto); gap: 4px; justify-content: start; }
.k-stack { display: flex; flex-direction: column; align-items: flex-start; gap: 2px; }
.k-table .k-stack .k-btn.is-sm { height: 24px; padding: 0 6px; }
.k-table th, .k-table td { padding-left: 10px; padding-right: 10px; }
.k-table th.is-wrap { white-space: normal; min-width: 150px; max-width: 190px; }
.k-textarea { height: auto; min-height: 72px; padding: 8px 10px; resize: vertical; }
/* denser rows for wide operational tables */
.k-table th, .k-table td { padding: 8px 8px; }
.k-table td.is-wrap { min-width: 120px; }
.k-table .k-btn-group.is-compact .k-btn.is-sm { height: 24px; padding: 0 7px; }
.k-table .k-stack .k-btn.is-sm { height: auto; min-height: 22px; flex-wrap: wrap; justify-content: flex-start; text-align: left; line-height: 1.3; }
.k-stack-label { display: block; width: 100%; color: var(--k-muted); font-size: 11px; font-weight: 400; }
/* scroll affordance: edge shadows appear only when the table overflows */
.k-table-wrap { background: linear-gradient(to right, var(--k-surface) 30%, rgba(255,255,255,0)) left center / 40px 100% no-repeat local, linear-gradient(to left, var(--k-surface) 30%, rgba(255,255,255,0)) right center / 40px 100% no-repeat local, radial-gradient(farthest-side at 100% 50%, rgba(15,23,42,.14), transparent) right center / 12px 100% no-repeat scroll; }
.k-table th.is-wrap { min-width: 110px; max-width: 130px; }
.k-table td.is-wrap { min-width: 96px; }
/* date + time stacked on two lines in narrow time columns */
.k-table td.is-time { white-space: normal; width: 72px; min-width: 72px; line-height: 1.35; }
.k-table th.is-time { white-space: normal; width: 72px; min-width: 72px; }
.k-table th, .k-table td { padding-left: 7px; padding-right: 7px; }

/* ---- batch 2 (orders / reports) ---- */
.k-text-danger { color: var(--k-danger); }
.k-text-success { color: var(--k-success); }
.k-text-primary { color: var(--k-primary); }
.k-table tr.is-total td { background: var(--k-surface-2); font-weight: 600; }
.k-table tr.is-total:hover td { background: var(--k-surface-2); }
.k-btn[data-kit-autorefresh][aria-pressed="true"] { background: var(--k-warning-soft); border-color: var(--k-warning); color: var(--k-warning); }
.k-report-note { margin: 0 0 var(--k-s3); }
.k-filters .k-textarea.is-inline { min-height: 0; height: 34px; padding-top: 6px; padding-bottom: 6px; }
.k-table td.is-datetime, .k-table th.is-datetime { white-space: nowrap; font-variant-numeric: tabular-nums; font-size: 12px; }
.k-table td.is-url { white-space: normal; word-break: break-all; min-width: 120px; max-width: 180px; font-size: 12px; }
.k-report-chart svg { display: block; width: 100%; max-height: 280px; }
.k-report-table th { white-space: normal; min-width: 48px; line-height: 1.3; }
/* ===== batch 5: merchant site (w16-merchant) ===== */
/* amount tones (PHP red/green spans) */
.k-tone-danger, .k-table td.k-tone-danger, .k-summary b.k-tone-danger { color: var(--k-danger); }
.k-tone-success, .k-table td.k-tone-success, .k-summary b.k-tone-success { color: var(--k-success); }
.k-tone-info, .k-table td.k-tone-info, .k-summary b.k-tone-info { color: var(--k-info); }
.k-tone-muted, .k-table td.k-tone-muted { color: var(--k-muted); }
/* merchant lists have room: date-times stay on one line */
.is-merchant .k-table td.is-time, .is-merchant .k-table th.is-time { white-space: nowrap; width: auto; min-width: 0; }
/* forms: hints under fields, radio rows, read-only values, captcha */
.k-hint { font-size: var(--k-fs-xs); color: var(--k-muted); line-height: 1.5; }
.k-hint.is-danger { color: var(--k-danger); }
.k-radios { display: flex; flex-wrap: wrap; gap: var(--k-s4); align-items: center; min-height: 34px; font-size: var(--k-fs-sm); }
.k-radios label { display: inline-flex; align-items: center; gap: 6px; cursor: pointer; }
.k-input[readonly], .k-input:disabled, .k-select:disabled { background: var(--k-surface-2); color: var(--k-muted); }
.k-form .k-filters-actions { padding-top: var(--k-s2); }
.k-captcha { display: inline-flex; align-items: center; gap: var(--k-s2); }
.k-captcha img { height: 38px; border: 1px solid var(--k-line); border-radius: var(--k-r-sm); cursor: pointer; background: #fff; }
.k-inline { display: flex; gap: var(--k-s2); align-items: center; flex-wrap: wrap; }
.k-secret { font-family: var(--k-mono); font-size: var(--k-fs-sm); word-break: break-all; }
.k-secret[hidden] { display: none; }
.k-reveal { display: grid; gap: var(--k-s3); max-width: 520px; margin-top: var(--k-s3); padding: var(--k-s4); border: 1px solid var(--k-line); border-radius: var(--k-r-md); background: var(--k-surface-2); }
.k-reveal[hidden] { display: none; }
.k-kv.is-info dd { font-size: var(--k-fs-lg); }
.k-kv.is-info { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.k-notes { margin: 0; padding-left: 18px; font-size: var(--k-fs-sm); color: var(--k-ink-2); line-height: 1.8; }
.k-auth { min-height: 100vh; display: grid; place-items: center; padding: var(--k-s5); background: var(--k-bg); }
.k-auth .k-card { width: min(440px, 100%); }
.k-auth h1 { font-size: var(--k-fs-xl); text-align: center; margin: 0; }
.k-auth .k-form { max-width: none; }
.k-auth .k-btn.is-primary { width: 100%; height: 40px; }
.k-center { text-align: center; }
@media (max-width: 1024px) { .k-kv.is-info { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
/* phone: list tables become stacked cards (td[data-label] supplies the column name) */
@media (max-width: 640px) {
  .k-table.is-cards thead { display: none; }
  .k-table.is-cards, .k-table.is-cards tbody, .k-table.is-cards tr, .k-table.is-cards td { display: block; width: 100%; }
  .k-table.is-cards tr { padding: var(--k-s2) var(--k-s3); border-bottom: 6px solid var(--k-bg); }
  .k-table.is-cards td, .k-table.is-cards td.is-time, .k-table.is-cards td.is-wrap { display: flex; justify-content: space-between; align-items: baseline; gap: var(--k-s3); padding: 6px 0; border-bottom: 1px dashed var(--k-line-2); white-space: normal; text-align: right; word-break: break-all; width: auto; min-width: 0; max-width: none; position: static; box-shadow: none; }
  .k-table.is-cards td:last-child { border-bottom: 0; }
  .k-table.is-cards td::before { content: attr(data-label); flex: none; color: var(--k-muted); font-size: var(--k-fs-xs); text-align: left; }
  .k-table.is-cards td[colspan] { display: block; }
  .k-table.is-cards td[colspan]::before { content: none; }
  .k-table.is-cards tbody tr:hover td { background: transparent; }
  .k-kv.is-info { grid-template-columns: 1fr 1fr; }
  .k-summary { gap: var(--k-s2) var(--k-s4); }
  .k-filters .k-filters-actions { width: 100%; }
  .k-filters .k-filters-actions .k-btn { flex: 1; }
  .k-pager { flex-wrap: wrap; }
}
/* label/value rows with left-aligned values (API 接入信息) */
.k-dl.is-left > div { display: grid; grid-template-columns: 160px minmax(0, 1fr); align-items: start; }
.k-dl.is-left dd { text-align: left; }
.k-dl.is-left .k-reveal { margin-top: var(--k-s3); }
@media (max-width: 640px) { .k-dl.is-left > div { grid-template-columns: 1fr; gap: 4px; } }
@media (max-width: 640px) {
  .is-merchant .k-table-wrap { max-height: none; }
  .is-merchant .k-range { flex-direction: column; align-items: stretch; }
  .is-merchant .k-range .k-muted { display: none; }
}
/* ==== batch 3 (merchant management modals) ==== */
.k [hidden] { display: none !important; }
.k-choices { display: flex; flex-wrap: wrap; gap: var(--k-s2) var(--k-s4); align-items: center; min-height: 34px; }
.k-choices label { display: inline-flex; align-items: center; gap: 6px; font-size: var(--k-fs-sm); color: var(--k-ink); cursor: pointer; }
.k-help { font-size: var(--k-fs-xs); color: var(--k-muted); line-height: 1.5; }
.k-form .k-form-actions { display: flex; gap: var(--k-s2); flex-wrap: wrap; padding-top: var(--k-s2); }
.k-form.is-wide { max-width: none; }
.k-form .k-grid { gap: var(--k-s3) var(--k-s4); }
.k-input[readonly], .k-input:disabled, .k-select:disabled { background: var(--k-surface-2); color: var(--k-muted); }
.k-table .k-input, .k-table .k-select { height: 30px; }
.k-table .k-input.is-rate { width: 110px; }
.k-table .k-input.is-weight { width: 72px; }
.k-subtable { width: 100%; border-collapse: collapse; margin-top: var(--k-s2); font-size: var(--k-fs-xs); }
.k-subtable th, .k-subtable td { padding: 4px 6px; border-bottom: 1px solid var(--k-line-2); text-align: left; }
.k-subtable th { color: var(--k-muted); font-weight: 500; }
.k-secret { display: flex; flex-wrap: wrap; gap: var(--k-s2); align-items: center; }
.k-secret output { font-family: var(--k-mono); word-break: break-all; background: var(--k-warning-soft, #fff7ed); padding: 2px 6px; border-radius: var(--k-r-sm); }
.k-modal-body .k-summary { margin-bottom: var(--k-s4); }
.k-modal-body .k-toolbar { margin: 0 0 var(--k-s3); }
.k-num.is-neg { color: var(--k-danger); }
.k-num.is-pos { color: var(--k-success); }
.k-thumb { width: 50px; height: 50px; object-fit: cover; border-radius: var(--k-r-sm); border: 1px solid var(--k-line); }
.k-grant-product { font-weight: 500; white-space: nowrap; }
.k-table td .k-choices { min-height: 0; margin-bottom: 4px; }
/* popups: one scroll (the iframe), no nested table scroll; long values wrap */
.k-modal-body .k-table-wrap { max-height: none; }
.k-table th.is-check, .k-table td.is-check { width: 1%; white-space: nowrap; }
.k-subtable .k-input.is-weight { width: 56px; }
.k-dl.is-rows > div { display: grid; grid-template-columns: minmax(6.5em, auto) 1fr; justify-content: initial; }
.k-dl.is-rows dd { text-align: left; overflow-wrap: anywhere; word-break: normal; }
/* ==== batch 3 funds ==== */
.k-modal-body .k-btn-group + .k-btn-group { margin-top: var(--k-s2); }

/* ---- batch 1 (payout/withdrawal admin) additions ---- (danger/success/info tones: batch 2 section) */
.k-tone-primary { color: var(--k-primary); }
.k-strong { font-weight: 700; }
.k-sub { display: block; font-size: var(--k-fs-xs, 12px); color: var(--k-muted); }
.k-select.is-sm { padding-block: 2px; min-width: 7em; }
.k-copyable { cursor: copy; }
.k-qr-grid { display: flex; flex-wrap: wrap; gap: var(--k-s4, 16px); justify-content: center; margin-top: var(--k-s4, 16px); }
.k-qr-grid img { width: 200px; height: auto; border: 1px solid var(--k-line); border-radius: var(--k-r-sm, 6px); background: #fff; }
.k-paycard { max-width: 640px; margin: 0 auto; text-align: center; }
.k-paycard .k-dl { text-align: left; }
.k-paycard-warn { font-size: 28px; font-weight: 700; line-height: 1.3; }
.k-table td.k-col-tight, .k-table th.k-col-tight { white-space: normal; min-width: 6.5em; max-width: 7.5em; line-height: 1.35; }
.k-table td.k-col-tight .k-sub { white-space: normal; }
.k-table td.k-col-memo { white-space: normal; min-width: 6em; max-width: 9em; line-height: 1.35; }
.k-table td.k-col-ts { white-space: nowrap; font-size: var(--k-fs-xs); line-height: 1.5; }
.k-table th.k-th-wrap { white-space: normal; min-width: 5em; max-width: 7em; }
.k-table td.k-col-ts .k-mono { font-size: var(--k-fs-xs); }
.k-table td.k-col-pad { padding-inline: 8px; }

/* ---- batch4 channel ---- */
/* modal forms of the Channel/BlackBank/GuoJiType popups (productconfig kit_channel_forms.go) */
.ch-form { max-width: none; gap: var(--k-s3); }
.ch-fieldset { margin: 0; padding: var(--k-s3) var(--k-s4) var(--k-s4); border: 1px solid var(--k-line); border-radius: var(--k-r-md); display: grid; gap: var(--k-s3); }
.ch-fieldset legend { padding: 0 6px; font-size: var(--k-fs-sm); font-weight: 600; color: var(--k-ink-2); }
.ch-hint { color: var(--k-muted); font-size: var(--k-fs-xs); }
.ch-note { margin: 0; }
.ch-radios { display: flex; flex-wrap: wrap; gap: var(--k-s2) var(--k-s4); min-height: 34px; align-items: center; }
.ch-radios label { display: inline-flex; align-items: center; gap: 6px; font-size: var(--k-fs-sm); color: var(--k-ink-2); cursor: pointer; }
.ch-radios input { accent-color: var(--k-primary); width: 16px; height: 16px; margin: 0; }
.ch-inline { display: flex; align-items: center; gap: var(--k-s2); }
.ch-inline .k-select { flex: 1; }
.ch-group { display: grid; gap: var(--k-s3); }
.ch-group[hidden] { display: none; }
.ch-form-actions { position: sticky; bottom: 0; padding: var(--k-s3) 0; background: var(--k-bg); border-top: 1px solid var(--k-line-2); }
.ch-form input[type="checkbox"] { accent-color: var(--k-primary); width: 16px; height: 16px; }
.ch-weight { width: 72px; }
.ch-polling-single, .ch-polling-weights { margin-top: var(--k-s2); }
.ch-polling-weights { max-height: 320px; border: 1px solid var(--k-line-2); border-radius: var(--k-r-md); }
/* PHP's radio-driven show/hide groups, live without script */
.ch-account-form:has(input[name="pa[is_defined]"][value="0"]:checked) .ch-defined,
.ch-control-form:has(input[name="data[is_defined]"][value="0"]:checked) .ch-defined,
.ch-rate-form:has(input[name="pa[custom_rate]"][value="0"]:checked) .ch-custom-rate,
.ch-product-form:has(input[name="pd[polling]"][value="1"]:checked) .ch-polling-single,
.ch-product-form:has(input[name="pd[polling]"][value="0"]:checked) .ch-polling-weights { display: none; }
/* masked credentials + audited reveal */
.ch-reveal { margin-top: var(--k-s5); border: 1px solid var(--k-line); border-radius: var(--k-r-md); padding: var(--k-s3) var(--k-s4); background: var(--k-surface-2); }
.ch-reveal summary { cursor: pointer; font-weight: 600; font-size: var(--k-fs-sm); color: var(--k-ink-2); }
.ch-reveal-row { display: flex; flex-wrap: wrap; align-items: center; gap: var(--k-s2); padding: var(--k-s2) 0; border-top: 1px solid var(--k-line-2); }
.ch-reveal-row .k-mono { min-width: 80px; color: var(--k-muted); }
.ch-reveal-row .k-input { width: 150px; }
.ch-reveal-out { display: block; margin-top: var(--k-s2); font-family: var(--k-mono); font-size: var(--k-fs-sm); word-break: break-all; }
/* Channel/showEven tree rows */
.ch-modal-table { max-height: none; }
.ch-tree { color: var(--k-faint); margin-right: 4px; font-family: var(--k-mono); }
.ch-tree.is-sub { margin-left: 14px; }
@media (max-width: 640px) { .ch-head { flex-wrap: wrap; } .ch-head .k-page-actions { margin-left: 0; } }
/* ---- batch4 system ---- */
/* System/base & co: label column + control (systemconfig kit_pages.go) */
.sys-form { max-width: 920px; gap: 0; }
.sys-row { display: grid; grid-template-columns: 180px minmax(0, 1fr); gap: var(--k-s4); align-items: start; padding: 10px 0; border-bottom: 1px solid var(--k-line-2); }
.sys-row:last-child { border-bottom: 0; }
.sys-label { padding-top: 7px; font-size: var(--k-fs-sm); color: var(--k-ink-2); font-weight: 500; }
.sys-control { display: flex; flex-direction: column; gap: 4px; min-width: 0; }
.sys-control > .k-input { max-width: 520px; }
.sys-control > .k-textarea { max-width: 640px; min-height: 120px; }
.sys-radios { display: flex; flex-wrap: wrap; gap: var(--k-s2) var(--k-s5); min-height: 34px; align-items: center; }
.sys-radio { display: inline-flex; align-items: center; gap: 6px; font-size: var(--k-fs-sm); cursor: pointer; }
.sys-radio input { accent-color: var(--k-primary); width: 16px; height: 16px; margin: 0; }
.sys-logo { display: flex; align-items: center; gap: var(--k-s3); flex-wrap: wrap; }
.sys-logo img { max-height: 56px; max-width: 220px; border: 1px solid var(--k-line); border-radius: var(--k-r-sm); padding: 4px; background: var(--k-surface); }
.k-req { color: var(--k-danger); margin-left: 2px; font-weight: 600; }
.k-card-head > .k-muted { font-size: var(--k-fs-xs); }
.k-card-body > .k-form { max-width: 520px; }
.k-card-body > .k-form.sys-form { max-width: 920px; }
/* Auth/ruleGroup three-level tree (data-kit-tree) */
.sa-rules { max-width: none; }
.sa-tree { display: grid; gap: var(--k-s2); }
.sa-node { border: 1px solid var(--k-line-2); border-radius: var(--k-r-md); padding: var(--k-s2) var(--k-s3); }
.sa-node.is-two { border: 0; border-left: 2px solid var(--k-line); border-radius: 0; margin: 6px 0 0 var(--k-s4); padding: 2px 0 2px var(--k-s3); }
.sa-check { display: inline-flex; align-items: center; gap: 6px; font-size: var(--k-fs-sm); cursor: pointer; margin: 2px var(--k-s4) 2px 0; }
.sa-check.is-one { font-weight: 600; color: var(--k-ink); }
.sa-check input { accent-color: var(--k-primary); width: 16px; height: 16px; margin: 0; }
.sa-leaves { display: flex; flex-wrap: wrap; margin: 2px 0 0 var(--k-s5); }
/* Auth/google */
.ag-card { text-align: left; }
.ag-card h1 { text-align: center; }
.ag-form { max-width: none; justify-items: stretch; }
.ag-form > p { text-align: center; margin: 0; }
.ag-qr { justify-self: center; border: 1px solid var(--k-line); border-radius: var(--k-r-md); padding: 8px; background: #fff; }
.ag-secret { text-align: center; font-size: var(--k-fs-sm); }
.ag-secret summary { cursor: pointer; color: var(--k-primary); }
.ag-secret code { display: inline-block; margin-top: var(--k-s2); font-family: var(--k-mono); background: var(--k-surface-2); border: 1px dashed var(--k-line); border-radius: var(--k-r-sm); padding: 4px 10px; word-break: break-all; }
@media (max-width: 640px) { .sys-row { grid-template-columns: 1fr; gap: 4px; } .sys-label { padding-top: 0; } }
.sys-control.k-btn-group { flex-direction: row; }
/* ===== w17 polish: compact row actions that stay in view ===== */
/* two-column variant of the compact action grid (2 rows for 4 buttons) */
.k-table .k-btn-group.is-compact.is-2col { grid-template-columns: repeat(2, auto); }
.k-table .k-btn-group.is-compact .k-btn.is-sm { justify-content: center; }
/* 操作 column pinned to the right edge when the table scrolls horizontally */
.k-table th.k-col-actions, .k-table td.k-col-actions { position: sticky; right: 0; z-index: 1; background: var(--k-surface); box-shadow: -1px 0 0 var(--k-line-2); }
.k-table th.k-col-actions { z-index: 3; background: var(--k-surface-2); }
.k-table tbody tr:hover td.k-col-actions { background: #fafcff; }
/* short names (通道, 接卡者) wrap instead of widening the table */
.k-table td.k-col-name { white-space: normal; min-width: 5em; max-width: 8.5em; line-height: 1.35; }
.k-table td.k-col-memo { max-width: 8em; }
.k-table td .k-select.is-sm { max-width: 8em; }
.k-table td.k-col-tight, .k-table th.k-col-tight { min-width: 5.5em; max-width: 6.5em; }
/* ===== w17 content: 公告管理 / 短信模板 / 邮箱设置 ===== */
.k-fieldset { border: 0; margin: 0; padding: 0; min-width: 0; display: grid; gap: var(--k-s4); }
.k-fieldset[disabled] .k-input, .k-fieldset[disabled] .k-select { background: var(--k-surface-2); color: var(--k-muted); }
.k-card-note { margin: var(--k-s3) var(--k-s5) 0; }
.ct-form { max-width: none; }
.ct-content { min-height: 220px; font-family: var(--k-mono); font-size: var(--k-fs-sm); }
.ct-article h2 { font-size: var(--k-fs-xl); margin-bottom: var(--k-s1); }
.ct-body { margin-top: var(--k-s4); line-height: 1.8; color: var(--k-ink-2); overflow-wrap: anywhere; }
.ct-body img { max-width: 100%; height: auto; }
.ct-body table { border-collapse: collapse; }
.ct-body td, .ct-body th { border: 1px solid var(--k-line); padding: 4px 8px; }
.k-fieldset[disabled] .k-btn { opacity: .5; cursor: not-allowed; }
/* ===== w17 ops ===== */
.ops-section { margin-top: var(--k-s5); }
.k-form.ops-section { margin-top: var(--k-s4); }
.k-table td.ops-id { max-width: 11em; overflow: hidden; text-overflow: ellipsis; font-size: var(--k-fs-xs); }
.ops-resolve { display: flex; flex-wrap: wrap; gap: 4px; align-items: center; min-width: 300px; max-width: 460px; }
.ops-resolve .k-input.is-sm, .ops-resolve .k-select.is-sm { height: 28px; font-size: var(--k-fs-xs); width: auto; flex: 1 1 120px; }
.ops-resolve .k-select.is-sm { flex: 0 0 auto; min-width: 11.5em; }
/* phones: the pinned first column is enough; actions scroll with the row */
@media (max-width: 640px) { .k-table th.k-col-actions, .k-table td.k-col-actions { position: static; box-shadow: none; } }
/* notice pages (logout confirmation, retired actions, refusals) */
.k-notice h1 { font-size: var(--k-fs-xl); }
.k-notice .k-notice-actions { justify-content: center; margin-top: var(--k-s4); }
.k-notice .k-notice-actions .k-btn { margin-top: 0; }

/* ===== read-only acceptance preview (body[data-kit-readonly]) ===== */
.k-readonly-banner { position: sticky; top: 0; z-index: 900; padding: 8px 16px; background: var(--k-warning-soft, #fef3c7); color: var(--k-warning, #b45309); border-bottom: 1px solid #fcd34d; font-size: var(--k-fs-sm); font-weight: 600; text-align: center; }
.is-readonly-off { opacity: .45; cursor: not-allowed; }
label.k-switch:has(.is-readonly-off) { opacity: .45; cursor: not-allowed; }

/* ===== w19 merchant: top-right 消息 button (Frame.NoticeHref) ===== */
.k-mtop .k-notice-btn { color: var(--k-nav-ink); }
.k-mtop .k-notice-btn:hover { color: #fff; background: rgba(255,255,255,.08); }
/* ===== w19 members: searchable select (select[data-kit-search]) ===== */
.k-select-filter { display: block; width: 100%; max-width: 14em; margin-bottom: 4px; height: 30px; font-size: var(--k-fs-xs); }
/* ===== w19-frame: kit.copy execCommand buffer (off-screen, PHP copyText opacity 0) ===== */
.k-copy-buffer { position: fixed; top: 0; left: -9999px; width: 1px; height: 1px; opacity: 0; }
