:root {
  --font-ui: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Microsoft YaHei", sans-serif;
  --font-code: ui-monospace, "SFMono-Regular", Menlo, Consolas, monospace;
  --ink: #344054;
  --muted: #7b8492;
  --line: #e8ebef;
  --accent: #5a66cf;
  font-family: var(--font-ui);
  font-size: 13px;
  line-height: 1.45;
  color: var(--ink);
  background: #fff;
  font-synthesis: none;
}
* { box-sizing: border-box; }
body { margin: 0; -webkit-font-smoothing: antialiased; }
button, input, select, summary { font: inherit; }
button { border: 0; background: none; color: inherit; cursor: pointer; }
button:disabled { opacity: .45; cursor: not-allowed; }
a { color: var(--accent); }
button, a, input, select { -webkit-tap-highlight-color: transparent; }
button:focus-visible, a:focus-visible, input:focus-visible, select:focus-visible, summary:focus-visible {
  outline: 2px solid #929ae8; outline-offset: 2px;
}
.icon { display: block; width: 15px; height: 15px; flex: none; stroke-width: 1.8; }
button > [data-icon] { display: inline-flex; }
.app-header { border-bottom: 1px solid var(--line); }
.header-inner { max-width: 1440px; padding: 12px 24px; margin: auto; display: flex; align-items: center; gap: 12px; }
.header-inner h1 { margin: 0; display: flex; align-items: center; gap: 8px; font-size: 18px; font-weight: 600; color: #273344; white-space: nowrap; }
.app-mark { display: inline-flex; color: #6872d7; }
.app-mark .icon { width: 21px; height: 21px; }
.scan-state { color: #5b9b7f; font-size: 11px; }
.header-actions { display: flex; gap: 8px; margin-left: auto; align-items: center; }
.button { display: inline-flex; align-items: center; justify-content: center; gap: 5px; min-height: 29px; padding: 4px 10px; font-size: 12px; border-radius: 3px; white-space: nowrap; }
.button .icon { width: 13px; height: 13px; }
.button.primary { color: #fff; background: #626ed1; border: 1px solid #626ed1; }
.button.primary:hover { background: #515dbf; }
.button.secondary { color: #61718a; background: #fff; border: 1px solid #dce1e9; }
.button.secondary:hover { background: #f7f8fc; }
.button.text-button { padding: 4px 5px; color: #818a98; }
main { max-width: 1440px; margin: auto; padding: 0 24px 24px; }
.scan-summary { padding: 10px 0; display: flex; flex-wrap: wrap; gap: 12px; align-items: center; color: var(--muted); font-size: 11px; }
.environment-chips, .status-chips { display: flex; flex-wrap: wrap; align-items: center; gap: 12px; }
.env-chip, .stat-chip { display: inline-flex; align-items: center; gap: 5px; white-space: nowrap; }
.env-chip .icon, .stat-chip .icon { width: 12px; height: 12px; }
.browser-chip { color: #7481c6; }
.platform-chip { color: #9b7cbc; }
.read-chip { color: #629b7f; }
.ask-chip { color: #bc9751; }
.unavailable-chip { color: #98a0ad; }
.stat-chip b { font-weight: 500; font-variant-numeric: tabular-nums; }
.scan-summary time { margin-left: auto; font-size: 10px; color: #9aa2b0; }
.workspace-tabs { display: flex; align-items: center; gap: 23px; border-bottom: 1px solid var(--line); margin-bottom: 12px; }
.tab { position: relative; display: flex; align-items: center; justify-content: center; gap: 5px; padding: 7px 0 9px; font-size: 12px; line-height: 18px; color: #8690a0; white-space: nowrap; }
.tab .icon { width: 13px; height: 13px; }
.tab.active { color: #5e6bce; font-weight: 500; }
.tab.active::after { content: ""; position: absolute; left: 0; right: 0; bottom: -1px; height: 2px; background: #6874d7; }
#tab-explore > [data-icon] { color: #c29e5c; }
#tab-compare > [data-icon] { color: #63a6a1; }
#tab-raw > [data-icon] { color: #a18bbe; }
#tab-total { font-size: 10px; font-weight: 400; color: #929bb5; margin-left: 1px; }
.toolbar { display: flex; align-items: center; gap: 10px; margin-bottom: 9px; }
.category-field { flex: none; }
.category-field select { height: 29px; min-width: 166px; max-width: 100%; padding: 0 24px 0 8px; border: 1px solid #dfe3eb; border-radius: 3px; background: #fff; color: #6a778c; font-size: 11px; }
.search-field { display: flex; align-items: center; gap: 6px; height: 29px; padding: 0 8px; border: 1px solid #dfe3eb; border-radius: 3px; flex: 1; min-width: 100px; max-width: 400px; }
.search-field > .icon { color: #a0a9ba; width: 13px; height: 13px; }
.search-field input { font-size: 11px; border: 0; outline: none; color: #52617a; background: transparent; min-width: 0; width: 100%; }
.search-field input::placeholder { color: #a5adbb; }
.search-field kbd { color: #b0b7c4; font: 10px var(--font-ui); white-space: nowrap; }
.search-field:focus-within { border-color: #929cdb; }
.status-filter { margin-left: auto; display: flex; align-items: center; gap: 4px; }
.status-filter button { display: flex; align-items: center; gap: 5px; padding: 4px 7px; font-size: 11px; color: #9aa3b1; white-space: nowrap; border-radius: 2px; }
.status-filter button.active { color: #6774c4; background: #f0f2fc; }
.filter-dot { height: 4px; width: 4px; border-radius: 50%; background: #a1aac4; }
[data-filter="ok"] .filter-dot { background: #77b49a; }
[data-filter="ask"] .filter-dot { background: #d1b175; }
[data-filter="unavailable"] .filter-dot { background: #bbc1cb; }
.results-meta { display: flex; align-items: center; gap: 9px; margin-bottom: 9px; font-size: 10px; color: #a5aebd; }
.results-meta h2 { margin: 0; font-size: 11px; font-weight: 500; color: #8c98ad; }
.row-hint { margin-left: auto; color: #adb5c2; }
.signals-grid { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 18px 24px; align-items: start; }
.signal-card, .explore-card { --cat: #6576d7; --cat-bg: #f2f4fc; --cat-hover: #fafbfe; min-width: 0; }
[data-tone="browser"] { --cat: #6277db; --cat-bg: #f1f3fd; }
[data-tone="hardware"] { --cat: #9a73cb; --cat-bg: #f7f3fb; }
[data-tone="display"] { --cat: #449bc2; --cat-bg: #f0f8fb; }
[data-tone="locale"] { --cat: #c89b50; --cat-bg: #fcf7ef; }
[data-tone="graphics"] { --cat: #cc78a3; --cat-bg: #fcf3f7; }
[data-tone="fonts"] { --cat: #9479c4; --cat-bg: #f6f3fb; }
[data-tone="audio"] { --cat: #d08a83; --cat-bg: #fcf5f3; }
[data-tone="network"] { --cat: #55a6a4; --cat-bg: #f0f9f8; }
[data-tone="storage"] { --cat: #7395d1; --cat-bg: #f2f6fc; }
[data-tone="privacy"] { --cat: #68a58a; --cat-bg: #f1f8f4; }
[data-tone="runtime"] { --cat: #c39872; --cat-bg: #fcf7f1; }
[data-tone="capabilities"] { --cat: #9a85bd; --cat-bg: #f7f4fa; }
.signal-card { display: block; margin: 0; border: 0; background: #fff; }
.card-heading { display: flex; align-items: center; gap: 7px; height: 33px; padding: 5px 8px; border-top: 2px solid var(--cat); border-bottom: 1px solid #e9edf3; background: var(--cat-bg); }
.category-icon { display: inline-flex; flex: none; color: var(--cat); }
.category-icon .icon { width: 16px; height: 16px; }
.card-heading h3 { font-size: 13px; line-height: 18px; font-weight: 600; color: #56637a; margin: 0; }
.card-count { margin-left: auto; font-size: 10px; line-height: 18px; color: var(--cat); }
.signal-rows { display: block; }
.signal-row { display: grid; grid-template-columns: 154px minmax(0,1fr) 13px; column-gap: 10px; align-items: center; width: 100%; height: 30px; min-height: 0; padding: 5px 8px; border-bottom: 1px solid #f0f2f6; text-align: left; background: #fff; }
.signal-row:hover { background: var(--cat-bg); }
.signal-label { display: flex; align-items: center; gap: 6px; min-width: 0; }
.signal-label strong { font-size: 13px; line-height: 19px; font-weight: 400; color: #7c8798; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.row-icon { display: inline-flex; flex: none; color: var(--cat); opacity: .8; }
.row-icon .icon { width: 12px; height: 12px; }
.signal-value { display: block; min-width: 0; font-size: 13px; line-height: 19px; font-weight: 400; color: #465772; text-align: left; font-variant-numeric: tabular-nums; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.signal-value.faded { font-size: 11px; color: #a4adbc; }
.row-status { display: inline-flex; align-items: center; }
.row-status > span:last-child { display: none; }
.row-state, .row-status .icon { display: inline-flex; width: 12px; height: 12px; color: #85b59f; }
.row-state.ask, .row-state.ask .icon { color: #cfb177; }
.row-state.pending, .row-state.pending .icon { color: #a29dc5; }
.row-state.unsupported, .row-state.unsupported .icon, .row-state.blocked, .row-state.blocked .icon, .row-state.error, .row-state.error .icon { color: #c0c6d1; }
.card-more { width: 100%; display: flex; align-items: center; gap: 4px; height: 26px; padding: 4px 8px; color: var(--cat); font-size: 10px; line-height: 18px; }
.card-more .icon { width: 11px; height: 11px; }
.card-more:hover { background: var(--cat-bg); }
.signals-grid:has(>.signal-card:only-child) { grid-template-columns: minmax(0,1fr); }
.empty-state { padding: 25px; text-align: center; color: #9aa3b2; border-top: 1px solid var(--line); }
.empty-state p { margin: 0 0 10px; }
.view[hidden], .empty-state[hidden] { display: none; }
.section-heading { display: flex; align-items: center; justify-content: space-between; gap: 10px; margin-bottom: 6px; }
.section-heading h2 { margin: 0; font-size: 15px; font-weight: 600; }
.view-note { font-size: 12px; color: #8e99ac; margin: 0 0 12px; }
.explore-grid { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: 16px 24px; align-items: start; }
.explore-card { border-top: 2px solid var(--cat); padding: 8px 0 0; display: flex; flex-direction: column; gap: 8px; }
.explore-heading { display: flex; align-items: center; gap: 7px; }
.explore-heading h3 { margin: 0; font-size: 12px; font-weight: 600; color: #68758c; }
.explore-heading .badge { margin-left: auto; }
.explore-card p { font-size: 12px; line-height: 1.55; color: #8f9aac; margin: 0; }
.explore-card > .button { align-self: flex-start; color: var(--cat); border-color: #e1e5ed; min-height: 26px; font-size: 11px; }
.explore-result { font-size: 11px; color: var(--cat); overflow-wrap: anywhere; }
.explore-result:empty { display: none; }
.explore-result.error { color: #b28d59; }
.explore-result .button { margin-top: 6px; }
.small-muted, .badge { font-size: 10px; color: #a9b1c0; }
.badge.green { color: #8b98cb; }
.profile-details { padding: 8px 0; margin-bottom: 9px; border-bottom: 1px solid var(--line); color: #8896af; font-size: 12px; }
.profile-details summary { cursor: pointer; }
.profile-value { display: flex; align-items: center; gap: 10px; padding: 9px 0 0; flex-wrap: wrap; }
.profile-value code { font: 11px var(--font-code); overflow-wrap: anywhere; }
.profile-details p { margin: 7px 0 0; color: #a6aebe; font-size: 11px; }
.raw-panel { margin: 0; padding: 12px; background: #fafbfd; border: 1px solid #edf0f5; border-radius: 3px; max-height: 75vh; overflow: auto; font: 11px/1.65 var(--font-code); color: #7b8aa3; white-space: pre; }
.snapshot-empty { padding: 30px 10px; text-align: center; border-top: 1px solid var(--line); }
.snapshot-empty h3 { font-size: 13px; font-weight: 500; margin: 0 0 6px; color: #8a96ae; }
.snapshot-empty p { font-size: 12px; color: #a2acbd; margin: 0; }
.snapshot-bar { display: flex; align-items: center; justify-content: space-between; gap: 15px; padding: 10px 0; border-bottom: 1px solid var(--line); }
.snapshot-bar strong { font-size: 12px; font-weight: 500; color: #8190aa; }
.snapshot-bar p { margin: 4px 0 0; font-size: 11px; color: #a2adbf; }
.snapshot-stats { display: flex; gap: 18px; font-size: 11px; color: #9aa7bf; margin: 10px 0; }
.snapshot-stats b { color: #8f9bd0; font-weight: 500; }
.info-banner { color: #a7b1c5; font-size: 11px; margin: 8px 0 13px; }
.info-banner p { margin: 0; }
.diff-row { display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 12px; padding: 8px 0; border-bottom: 1px solid var(--line); font-size: 12px; overflow-wrap: anywhere; }
.diff-row > span { min-width: 0; max-height: 110px; overflow: auto; color: #8da0b5; font-size: 11px; }
.diff-row > span.old { color: #b1a08b; }
.diff-row strong { font-weight: 500; }
.diff-row:first-child { font-size: 11px; color: #a3aec3; }
.dialog { background: #fff; border: 1px solid #e4e8f0; border-radius: 5px; padding: 20px; max-width: 540px; width: calc(100% - 32px); max-height: 85vh; overflow: auto; color: #67758d; box-shadow: 0 12px 50px #35405b20; }
.dialog.wide { max-width: 650px; }
.dialog::backdrop { background: #35415b55; }
.dialog-top { display: flex; align-items: center; justify-content: space-between; margin-bottom: 10px; }
.dialog-kicker { font-size: 11px; color: #a2aec3; }
.icon-button { display: inline-grid; place-items: center; width: 27px; height: 27px; color: #a1aec4; border-radius: 3px; }
.icon-button:hover { background: #f4f6fa; }
.dialog h2 { font-size: 18px; font-weight: 600; color: #65748e; margin: 0 0 10px; }
.dialog h3 { font-size: 12px; font-weight: 500; color: #96a3bc; margin: 0 0 5px; }
.dialog p { font-size: 12px; line-height: 1.65; color: #8b99b0; }
.detail-value { font: 12px/1.65 var(--font-ui); padding: 10px; background: #f7f9fc; border: 1px solid #edf0f6; border-radius: 3px; max-height: 260px; overflow: auto; white-space: pre-wrap; overflow-wrap: anywhere; color: #8091ad; }
.detail-status { font-size: 10px; color: #b0bbce; margin-top: 7px; }
.detail-block { margin-top: 15px; }
.detail-api { padding: 8px; background: #f7f9fc; border-radius: 3px; font: 11px/1.6 var(--font-code); color: #9caac2; white-space: pre-wrap; overflow-wrap: anywhere; }
.detail-link { font-size: 12px; color: #9ba9ce; text-underline-offset: 3px; }
.about-block { border-top: 1px solid var(--line); margin-top: 13px; padding-top: 13px; }
.about-block p { margin: 0; }
.reference-links { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 17px; font-size: 11px; }
.dialog-actions { display: flex; justify-content: flex-end; gap: 8px; margin-top: 18px; }
.export-option { display: flex; align-items: flex-start; gap: 8px; padding-top: 12px; margin-top: 12px; border-top: 1px solid var(--line); font-size: 12px; color: #93a1b9; }
.export-option input { accent-color: var(--accent); margin-top: 3px; }
.export-option small { display: block; font-size: 10px; color: #b4bdce; margin-top: 4px; }
.toast { position: fixed; left: 50%; bottom: 22px; transform: translate(-50%,10px); background: #727ec0; color: #fff; padding: 8px 13px; font-size: 12px; line-height: 1.5; border-radius: 3px; opacity: 0; pointer-events: none; transition: opacity .15s,transform .15s; z-index: 100; max-width: calc(100% - 30px); text-align: center; }
.toast.show { opacity: 1; transform: translate(-50%,0); }
.sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0,0,0,0); white-space: nowrap; border: 0; }
.noscript { position: fixed; inset: 0; padding: 50px; background: #fff; z-index: 200; }
.spin .icon { animation: spin 1s linear infinite; }
@keyframes spin { to { transform: rotate(360deg); } }
@media (max-width: 1050px) {
  .toolbar { flex-wrap: wrap; }
  .search-field { max-width: none; }
  .status-filter { margin-left: 0; }
  .signal-row { grid-template-columns: 132px minmax(0,1fr) 13px; column-gap: 7px; }
  .explore-grid { grid-template-columns: repeat(2,minmax(0,1fr)); }
  .scan-summary { gap: 8px 12px; }
}
@media (max-width: 700px) {
  .header-inner { padding: 10px 14px; gap: 8px; }
  .header-inner h1 { font-size: 16px; gap: 6px; }
  .app-mark .icon { width: 19px; height: 19px; }
  .scan-state { display: none; }
  .header-actions { gap: 6px; }
  .header-actions .button { padding: 5px; min-width: 27px; min-height: 27px; }
  .header-actions .button-label { display: none; }
  main { padding: 0 14px 20px; }
  .scan-summary { padding: 8px 0; gap: 6px 11px; font-size: 10px; }
  .environment-chips, .status-chips { gap: 9px; }
  .env-chip, .stat-chip { gap: 4px; }
  .env-chip .icon, .stat-chip .icon { width: 11px; height: 11px; }
  .scan-summary time { display: none; }
  .workspace-tabs { display: grid; grid-template-columns: repeat(4,minmax(0,1fr)); gap: 4px; margin-bottom: 10px; }
  .tab { gap: 3px; padding: 6px 0 8px; font-size: 10px; }
  .tab .icon { width: 12px; height: 12px; }
  #tab-total { display: none; }
  .toolbar { gap: 7px; margin-bottom: 7px; }
  .category-field { width: 132px; }
  .category-field select { min-width: 0; width: 100%; padding-left: 7px; padding-right: 17px; height: 28px; font-size: 10px; }
  .search-field { height: 28px; min-width: 90px; padding: 0 7px; gap: 5px; }
  .search-field input { font-size: 10px; }
  .search-field kbd { display: none; }
  .status-filter { width: 100%; gap: 6px; }
  .status-filter button { padding: 3px 6px; font-size: 10px; }
  .results-meta { margin-bottom: 7px; font-size: 10px; }
  .results-meta h2 { font-size: 10px; }
  .row-hint { display: none; }
  .signals-grid { grid-template-columns: minmax(0,1fr); gap: 14px; }
  .signal-row { height: 32px; grid-template-columns: 126px minmax(0,1fr) 12px; gap: 7px; padding: 6px 6px; }
  .signal-label { gap: 5px; }
  .signal-label strong, .signal-value { font-size: 12px; line-height: 19px; }
  .row-icon .icon { width: 11px; height: 11px; }
  .row-state, .row-status .icon { width: 11px; height: 11px; }
  .card-heading { padding-left: 6px; padding-right: 6px; }
  .card-more { padding-left: 6px; }
  .explore-grid { grid-template-columns: minmax(0,1fr); gap: 14px; }
  .dialog { padding: 16px; }
  .dialog h2 { font-size: 17px; }
  .dialog-actions .button { flex: 1; }
  .raw-panel { font-size: 10px; padding: 9px; }
  .snapshot-bar { align-items: flex-start; }
  .snapshot-bar .button { font-size: 10px; padding: 4px 6px; }
}
@media (max-width: 370px) {
  .header-inner, main { padding-left: 12px; padding-right: 12px; }
  .category-field { width: 118px; }
  .environment-chips, .status-chips { gap: 7px; }
  .signal-row { grid-template-columns: 116px minmax(0,1fr) 11px; gap: 6px; }
  .signal-label strong, .signal-value { font-size: 11px; }
  .tab { font-size: 10px; gap: 2px; }
  .tab .icon { width: 11px; height: 11px; }
}
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation: none !important; transition: none !important; scroll-behavior: auto !important; }
}
