:root{--ftd-canvas: #f5f4f0;--ftd-panel: #ffffff;--ftd-panel-2: #faf9f6;--ftd-line: #d8d4c9;--ftd-line-2: #ebe8e0;--ftd-ink: #1c1a16;--ftd-ink-2: #46423a;--ftd-dim: #75706a;--ftd-accent: #3a49c4;--ftd-accent-dark: #2d3a9e;--ftd-accent-soft: #eceefb;--ftd-ok: #17703f;--ftd-ok-soft: #e8f4ec;--ftd-ok-line: #b8dfc6;--ftd-warn: #8a5800;--ftd-warn-soft: #fcf4e1;--ftd-warn-line: #ecd6a2;--ftd-bad: #b3261e;--ftd-bad-soft: #fcecea;--ftd-bad-line: #f0bfbb;--ftd-mono: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, "Liberation Mono", monospace;--primary: var(--ftd-accent);--primary-dark: var(--ftd-accent-dark);--border: var(--ftd-line-2);--surface: var(--ftd-panel);--surface-muted: var(--ftd-panel-2);--shadow-soft: 0 1px 2px rgba(28, 26, 22, 0.06);--text-main: var(--ftd-ink);--text-muted: var(--ftd-dim);}
.ftd-shell [hidden]{display: none !important;}
.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;}
.ftd-shell{background: var(--ftd-canvas);border: 1px solid var(--ftd-line);border-radius: 0.5rem;padding: 1rem;margin-bottom: 2.5rem;}
.ftd-top{display: flex;flex-wrap: wrap;align-items: center;justify-content: space-between;gap: 0.4rem 1rem;padding-bottom: 0.75rem;margin-bottom: 1rem;border-bottom: 1px solid var(--ftd-line);font-size: 0.82rem;color: var(--ftd-dim);}
.ftd-byline{display: flex;flex-wrap: wrap;align-items: center;gap: 0.3rem 0.9rem;}
.ftd-byline-author{font-weight: 600;color: var(--ftd-ink-2);}
.ftd-byline-author a,.ftd-byline-author .author-link{color: var(--ftd-accent);text-decoration: none;}
.ftd-byline-author a:hover{text-decoration: underline;}
.ftd-scope{font-family: var(--ftd-mono);font-size: 0.76rem;}
.ftd-drop{display: flex;align-items: center;gap: 1.1rem;padding: 1.4rem 1.3rem;margin: 0;background: var(--ftd-panel);border: 2px dashed var(--ftd-line);border-radius: 0.5rem;cursor: pointer;transition: border-color 0.15s, background 0.15s;}
.ftd-drop:hover,.ftd-drop.is-over{border-color: var(--ftd-accent);background: var(--ftd-accent-soft);}
.ftd-drop:focus-within{outline: 2px solid var(--ftd-accent);outline-offset: 2px;}
.ftd-drop-glyph{flex: 0 0 auto;font-family: var(--ftd-mono);font-size: 0.78rem;line-height: 1.35;color: var(--ftd-accent);background: var(--ftd-accent-soft);border: 1px solid #cfd4f5;border-radius: 0.35rem;padding: 0.45rem 0.6rem;letter-spacing: 0.05em;}
.ftd-drop-text{display: flex;flex-direction: column;gap: 0.25rem;}
.ftd-drop-title{font-size: 1.05rem;font-weight: 650;color: var(--ftd-ink);}
.ftd-drop-hint{font-size: 0.86rem;color: var(--ftd-dim);}
.ftd-input-file{position: absolute;width: 1px;height: 1px;opacity: 0;pointer-events: none;}
.ftd-bar{display: flex;flex-wrap: wrap;align-items: center;gap: 0.5rem;margin: 0.9rem 0;}
.ftd-btn{font: inherit;font-size: 0.86rem;font-weight: 600;padding: 0.45rem 0.85rem;border-radius: 0.35rem;border: 1px solid var(--ftd-line);background: var(--ftd-panel);color: var(--ftd-ink-2);cursor: pointer;}
.ftd-btn:hover{border-color: var(--ftd-accent);color: var(--ftd-accent);}
.ftd-btn:focus-visible{outline: 2px solid var(--ftd-accent);outline-offset: 2px;}
.ftd-btn.is-primary{background: var(--ftd-accent);border-color: var(--ftd-accent);color: #fff;}
.ftd-btn.is-primary:hover{background: var(--ftd-accent-dark);color: #fff;}
.ftd-btn.is-quiet{background: transparent;border-color: transparent;color: var(--ftd-dim);}
.ftd-tally{margin: 0 0 0 auto;font-size: 0.84rem;color: var(--ftd-ink-2);}
.ftd-empty{padding: 1.4rem 1rem;text-align: center;font-size: 0.9rem;color: var(--ftd-dim);border: 1px solid var(--ftd-line-2);border-radius: 0.4rem;background: var(--ftd-panel-2);}
.ftd-results{list-style: none;margin: 0;padding: 0;display: grid;gap: 0.8rem;}
.ftd-card{--ftd-tone: var(--ftd-dim);--ftd-tone-soft: var(--ftd-panel-2);--ftd-tone-line: var(--ftd-line);background: var(--ftd-panel);border: 1px solid var(--ftd-line-2);border-left: 4px solid var(--ftd-tone);border-radius: 0.4rem;padding: 0.85rem 1rem;}
.ftd-card.is-match{--ftd-tone: var(--ftd-ok);--ftd-tone-soft: var(--ftd-ok-soft);--ftd-tone-line: var(--ftd-ok-line);}
.ftd-card.is-related{--ftd-tone: var(--ftd-accent);--ftd-tone-soft: var(--ftd-accent-soft);--ftd-tone-line: #cfd4f5;}
.ftd-card.is-mismatch,.ftd-card.is-noext{--ftd-tone: var(--ftd-warn);--ftd-tone-soft: var(--ftd-warn-soft);--ftd-tone-line: var(--ftd-warn-line);}
.ftd-card.is-disguised,.ftd-card.is-error{--ftd-tone: var(--ftd-bad);--ftd-tone-soft: var(--ftd-bad-soft);--ftd-tone-line: var(--ftd-bad-line);}
.ftd-card.is-disguised{background: linear-gradient(var(--ftd-bad-soft), var(--ftd-panel) 3.2rem);}
.ftd-card-head{display: flex;flex-wrap: wrap;align-items: baseline;gap: 0.3rem 0.75rem;}
.ftd-fname{font-family: var(--ftd-mono);font-size: 0.95rem;font-weight: 600;color: var(--ftd-ink);word-break: break-all;}
.ftd-fsize{font-size: 0.8rem;color: var(--ftd-dim);}
.ftd-verdict{margin-left: auto;font-size: 0.76rem;font-weight: 700;text-transform: uppercase;letter-spacing: 0.04em;color: var(--ftd-tone);background: var(--ftd-tone-soft);border: 1px solid var(--ftd-tone-line);border-radius: 999px;padding: 0.15rem 0.6rem;white-space: nowrap;}
.ftd-claim{display: grid;grid-template-columns: 1fr 1fr;margin: 0.75rem 0 0.6rem;border: 1px solid var(--ftd-line-2);border-radius: 0.35rem;overflow: hidden;}
.ftd-side{display: flex;flex-direction: column;gap: 0.15rem;padding: 0.6rem 0.8rem;background: var(--ftd-panel-2);min-width: 0;}
.ftd-side.is-bytes{background: var(--ftd-tone-soft);border-left: 1px solid var(--ftd-line-2);}
.ftd-k{font-size: 0.7rem;font-weight: 700;text-transform: uppercase;letter-spacing: 0.06em;color: var(--ftd-dim);}
.ftd-v{font-size: 1rem;font-weight: 650;color: var(--ftd-ink);word-break: break-word;}
.ftd-side.is-bytes .ftd-v{color: var(--ftd-tone);}
.ftd-sub{font-family: var(--ftd-mono);font-size: 0.76rem;color: var(--ftd-ink-2);word-break: break-all;}
.ftd-why{margin: 0 0 0.4rem;font-size: 0.88rem;line-height: 1.55;color: var(--ftd-ink-2);}
.ftd-strength{display: inline-block;margin-right: 0.35rem;font-size: 0.7rem;font-weight: 700;text-transform: uppercase;letter-spacing: 0.04em;padding: 0.05rem 0.4rem;border-radius: 0.25rem;border: 1px solid var(--ftd-line);color: var(--ftd-dim);vertical-align: 1px;}
.ftd-strength.is-structure{border-color: var(--ftd-ok-line);color: var(--ftd-ok);}
.ftd-strength.is-signature{border-color: #cfd4f5;color: var(--ftd-accent);}
.ftd-strength.is-heuristic{border-color: var(--ftd-warn-line);color: var(--ftd-warn);}
.ftd-note{margin: 0 0 0.5rem;font-size: 0.86rem;font-weight: 600;color: var(--ftd-tone);}
.ftd-facts{display: grid;grid-template-columns: repeat(auto-fill, minmax(12rem, 1fr));gap: 0.35rem 1rem;margin: 0.5rem 0 0.4rem;font-size: 0.82rem;}
.ftd-facts div{min-width: 0;}
.ftd-facts dt{font-weight: 600;color: var(--ftd-dim);font-size: 0.74rem;}
.ftd-facts dd{margin: 0;color: var(--ftd-ink);word-break: break-word;}
.ftd-hex{margin-top: 0.4rem;}
.ftd-hex summary{cursor: pointer;font-size: 0.8rem;font-weight: 600;color: var(--ftd-accent);}
.ftd-hex pre{margin: 0.5rem 0 0;padding: 0.7rem 0.8rem;background: #1d1c22;color: #d4d2dc;border-radius: 0.35rem;font-family: var(--ftd-mono);font-size: 0.76rem;line-height: 1.6;overflow-x: auto;white-space: pre;}
.ftd-hex pre b{color: #1d1c22;background: #ffd27a;font-weight: 700;border-radius: 2px;}
.ftd-off{color: #8c89a0;}
.ftd-gap{color: #8c89a0;}
.ftd-article{margin: 0 auto 2.5rem;color: var(--ftd-ink-2);font-size: 1rem;line-height: 1.7;}
.ftd-article h2{font-size: 1.4rem;font-weight: 700;color: var(--ftd-ink);margin: 2.2rem 0 0.8rem;line-height: 1.3;}
.ftd-article h2:first-child{margin-top: 0;}
.ftd-article p{margin: 0 0 1rem;}
.ftd-article code{font-family: var(--ftd-mono);font-size: 0.86em;background: var(--ftd-line-2);color: var(--ftd-ink);padding: 0.08rem 0.3rem;border-radius: 0.2rem;}
.ftd-article a{color: var(--ftd-accent);}
.ftd-lede{font-size: 1.08rem;color: var(--ftd-ink);}
.ftd-callout{background: var(--ftd-accent-soft);border: 1px solid #cfd4f5;border-radius: 0.45rem;padding: 1rem 1.15rem;margin: 1.4rem 0;}
.ftd-callout p{margin: 0;}
.ftd-callout-title{display: block;font-weight: 700;color: var(--ftd-accent-dark);margin-bottom: 0.35rem;}
.ftd-figure{margin: 1.3rem 0 1.6rem;border: 1px solid var(--ftd-line);border-radius: 0.45rem;overflow: hidden;background: var(--ftd-panel);}
.ftd-figure-title{padding: 0.6rem 0.9rem;font-size: 0.85rem;font-weight: 700;color: var(--ftd-ink);background: var(--ftd-panel-2);border-bottom: 1px solid var(--ftd-line-2);}
.ftd-grid-wrap{overflow-x: auto;}
.ftd-grid{width: 100%;border-collapse: collapse;font-size: 0.86rem;}
.ftd-grid th,.ftd-grid td{text-align: left;padding: 0.5rem 0.9rem;border-bottom: 1px solid var(--ftd-line-2);vertical-align: top;}
.ftd-grid th{font-size: 0.74rem;text-transform: uppercase;letter-spacing: 0.05em;color: var(--ftd-dim);}
.ftd-grid td:nth-child(2){font-family: var(--ftd-mono);text-align: right;white-space: nowrap;}
.ftd-grid td code{white-space: nowrap;background: transparent;padding: 0;}
.ftd-grid tbody tr:last-child td{border-bottom: 0;}
.ftd-figure-note{margin: 0;padding: 0.7rem 0.9rem;font-size: 0.86rem;background: var(--ftd-panel-2);border-top: 1px solid var(--ftd-line-2);}
.ftd-families,.ftd-legend,.ftd-limits{list-style: none;padding: 0;margin: 0 0 1.2rem;}
.ftd-families li{padding: 0.8rem 0;border-bottom: 1px solid var(--ftd-line-2);}
.ftd-families li:last-child{border-bottom: 0;}
.ftd-family-head{display: block;font-family: var(--ftd-mono);font-size: 0.86rem;font-weight: 700;color: var(--ftd-accent-dark);margin-bottom: 0.2rem;}
.ftd-steps{padding-left: 1.3rem;margin: 0 0 1.2rem;}
.ftd-steps li{margin-bottom: 0.6rem;padding-left: 0.2rem;}
.ftd-legend li{display: flex;gap: 0.7rem;align-items: baseline;padding: 0.45rem 0;}
.ftd-dot{flex: 0 0 auto;width: 0.7rem;height: 0.7rem;border-radius: 50%;background: var(--ftd-dim);transform: translateY(0.05rem);}
.ftd-dot.is-match{background: var(--ftd-ok);}
.ftd-dot.is-related{background: var(--ftd-accent);}
.ftd-dot.is-mismatch,.ftd-dot.is-noext{background: #d39a1a;}
.ftd-dot.is-disguised{background: var(--ftd-bad);}
.ftd-code{background: #1d1c22;color: #e2e0ea;border-radius: 0.4rem;padding: 0.9rem 1rem;margin: 0 0 1.1rem;font-family: var(--ftd-mono);font-size: 0.84rem;line-height: 1.6;overflow-x: auto;}
.ftd-code code{background: transparent;color: inherit;padding: 0;font-size: inherit;}
.ftd-limits li{display: flex;gap: 0.8rem;align-items: baseline;padding: 0.6rem 0;border-bottom: 1px solid var(--ftd-line-2);}
.ftd-limits li:last-child{border-bottom: 0;}
.ftd-limit-tag{flex: 0 0 6.2rem;font-size: 0.7rem;font-weight: 700;text-transform: uppercase;letter-spacing: 0.05em;text-align: center;padding: 0.15rem 0.3rem;border-radius: 0.25rem;}
.ftd-limit-tag.is-no{color: var(--ftd-bad);background: var(--ftd-bad-soft);}
.ftd-limit-tag.is-yes{color: var(--ftd-ok);background: var(--ftd-ok-soft);}
@media (max-width: 640px){.ftd-shell{padding: 0.75rem;}.ftd-drop{flex-direction: column;align-items: flex-start;padding: 1.1rem;}.ftd-claim{grid-template-columns: 1fr;}.ftd-side.is-bytes{border-left: 0;border-top: 1px solid var(--ftd-line-2);}.ftd-verdict{margin-left: 0;}.ftd-tally{margin-left: 0;width: 100%;}.ftd-limits li{flex-direction: column;gap: 0.3rem;}.ftd-limit-tag{flex-basis: auto;}}