:root{--fhc-canvas: #f2f5f4;--fhc-panel: #ffffff;--fhc-panel-2: #f7faf9;--fhc-line: #c6d2d0;--fhc-line-2: #e0e8e7;--fhc-ink: #10201e;--fhc-ink-2: #33504c;--fhc-dim: #6b8280;--fhc-accent: #0f766e;--fhc-accent-dark: #115e59;--fhc-accent-soft: #e3f2f0;--fhc-ok: #0f7a45;--fhc-ok-soft: #e9f6ee;--fhc-ok-line: #b6e2c8;--fhc-bad: #b62a44;--fhc-bad-soft: #fdedf0;--fhc-bad-line: #f1c0ca;--fhc-warn: #8a5a00;--fhc-warn-soft: #fdf7e7;--fhc-warn-line: #ecd9a8;--fhc-mono: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, "Liberation Mono", monospace;--primary: var(--fhc-accent);--primary-dark: var(--fhc-accent-dark);--border: var(--fhc-line-2);--surface: var(--fhc-panel);--surface-muted: var(--fhc-panel-2);--shadow-soft: 0 1px 2px rgba(16, 32, 30, 0.06);--text-main: var(--fhc-ink);--text-muted: var(--fhc-dim);}
.fhc-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;}
.fhc-shell{background: var(--fhc-canvas);border: 1px solid var(--fhc-line);border-radius: 0.4rem;padding: 0.9rem;margin-bottom: 2.5rem;}
.fhc-head{display: flex;flex-wrap: wrap;align-items: center;justify-content: space-between;gap: 0.4rem 1rem;padding-bottom: 0.7rem;margin-bottom: 0.9rem;border-bottom: 1px solid var(--fhc-line);font-size: 0.82rem;color: var(--fhc-dim);}
.fhc-byline{display: flex;flex-wrap: wrap;align-items: center;gap: 0.3rem 0.9rem;}
.fhc-byline-author{font-weight: 600;color: var(--fhc-ink-2);}
.fhc-byline-updated{color: var(--fhc-dim);}
.fhc-byline .author-link{color: var(--fhc-accent-dark);text-decoration: none;font-weight: 600;}
.fhc-byline .author-link:hover,.fhc-byline .author-link:focus-visible{text-decoration: underline;}
.fhc-modes{display: inline-flex;border: 1px solid var(--fhc-line);border-radius: 0.3rem;overflow: hidden;background: var(--fhc-panel);}
.fhc-mode-btn{appearance: none;border: 0;background: transparent;padding: 0.32rem 0.85rem;font-size: 0.84rem;font-weight: 600;color: var(--fhc-ink-2);cursor: pointer;}
.fhc-mode-btn + .fhc-mode-btn{border-left: 1px solid var(--fhc-line);}
.fhc-mode-btn.is-active{background: var(--fhc-accent);color: #ffffff;}
.fhc-mode-btn:focus-visible{outline: 2px solid var(--fhc-accent-dark);outline-offset: -2px;}
.fhc-algo-row{display: flex;flex-wrap: wrap;align-items: center;gap: 0.5rem 0.8rem;margin-bottom: 0.9rem;}
.fhc-algo-label{font-size: 0.8rem;font-weight: 600;color: var(--fhc-ink-2);text-transform: uppercase;letter-spacing: 0.05em;}
.fhc-algo-strip{display: flex;flex-wrap: wrap;gap: 0.35rem;}
.fhc-algo-btn{appearance: none;border: 1px solid var(--fhc-line);background: var(--fhc-panel);border-radius: 0.25rem;padding: 0.28rem 0.7rem;font-family: var(--fhc-mono);font-size: 0.8rem;font-weight: 600;color: var(--fhc-ink-2);cursor: pointer;}
.fhc-algo-btn:hover{border-color: var(--fhc-accent);color: var(--fhc-accent-dark);}
.fhc-algo-btn.is-active{background: var(--fhc-accent-soft);border-color: var(--fhc-accent);color: var(--fhc-accent-dark);}
.fhc-algo-btn:focus-visible{outline: 2px solid var(--fhc-accent-dark);outline-offset: 1px;}
.fhc-manifest-panel{margin-bottom: 0.9rem;}
.fhc-manifest-label{display: block;font-size: 0.8rem;font-weight: 600;color: var(--fhc-ink-2);margin-bottom: 0.35rem;}
.fhc-manifest{width: 100%;min-height: 7.5rem;resize: vertical;border: 1px solid var(--fhc-line);border-radius: 0.3rem;background: var(--fhc-panel);padding: 0.6rem 0.7rem;font-family: var(--fhc-mono);font-size: 0.8rem;line-height: 1.55;color: var(--fhc-ink);}
.fhc-manifest:focus{outline: none;border-color: var(--fhc-accent);box-shadow: 0 0 0 3px var(--fhc-accent-soft);}
.fhc-note{margin: 0.4rem 0 0;font-size: 0.79rem;color: var(--fhc-dim);}
.fhc-note.is-ok{color: var(--fhc-ok);font-weight: 600;}
.fhc-note.is-warn{color: var(--fhc-warn);font-weight: 600;}
.fhc-drop{display: flex;flex-direction: column;align-items: center;justify-content: center;gap: 0.3rem;text-align: center;border: 1px dashed var(--fhc-line);border-radius: 0.35rem;background: var(--fhc-panel);padding: 1.5rem 1rem;cursor: pointer;margin-bottom: 0.9rem;}
.fhc-drop:hover,.fhc-drop.is-over{border-color: var(--fhc-accent);background: var(--fhc-accent-soft);}
.fhc-drop-icon{width: 2rem;height: 2rem;color: var(--fhc-accent);}
.fhc-drop-icon svg{width: 100%;height: 100%;}
.fhc-drop-title{font-size: 0.98rem;font-weight: 600;color: var(--fhc-ink);}
.fhc-drop-hint{font-size: 0.82rem;color: var(--fhc-dim);max-width: 34rem;}
.fhc-input-file{position: absolute;width: 1px;height: 1px;opacity: 0;pointer-events: none;}
.fhc-table-wrap{border: 1px solid var(--fhc-line);border-radius: 0.3rem;background: var(--fhc-panel);overflow-x: auto;}
.fhc-table{width: 100%;border-collapse: collapse;font-size: 0.84rem;}
.fhc-table th{text-align: left;font-size: 0.74rem;text-transform: uppercase;letter-spacing: 0.06em;color: var(--fhc-dim);font-weight: 700;padding: 0.5rem 0.7rem;background: var(--fhc-panel-2);border-bottom: 1px solid var(--fhc-line);white-space: nowrap;}
.fhc-table td{padding: 0.55rem 0.7rem;border-bottom: 1px solid var(--fhc-line-2);vertical-align: middle;color: var(--fhc-ink-2);}
.fhc-table tr:last-child td{border-bottom: 0;}
.fhc-table tr.is-ok td{background: var(--fhc-ok-soft);}
.fhc-table tr.is-failed td{background: var(--fhc-bad-soft);}
.fhc-table tr.is-missing td,.fhc-table tr.is-extra td{background: var(--fhc-warn-soft);}
.fhc-name{font-weight: 600;color: var(--fhc-ink);word-break: break-all;min-width: 9rem;}
.fhc-tagline{display: block;font-size: 0.72rem;font-weight: 500;color: var(--fhc-dim);text-transform: uppercase;letter-spacing: 0.05em;margin-top: 0.1rem;}
.fhc-num{font-family: var(--fhc-mono);font-size: 0.79rem;white-space: nowrap;color: var(--fhc-dim);}
.fhc-digest{font-family: var(--fhc-mono);font-size: 0.79rem;word-break: break-all;color: var(--fhc-ink);}
.fhc-digest.is-quiet{color: var(--fhc-dim);}
.fhc-wait{font-size: 0.79rem;color: var(--fhc-dim);font-style: italic;}
.fhc-err{font-size: 0.79rem;color: var(--fhc-bad);font-weight: 600;}
.fhc-track{height: 0.4rem;min-width: 6rem;border-radius: 999px;background: var(--fhc-line-2);overflow: hidden;}
.fhc-fill{height: 100%;width: 0;background: var(--fhc-accent);transition: width 0.15s linear;}
.fhc-pill{display: inline-block;padding: 0.15rem 0.5rem;border-radius: 999px;font-size: 0.74rem;font-weight: 700;letter-spacing: 0.02em;border: 1px solid var(--fhc-line);background: var(--fhc-panel);color: var(--fhc-ink-2);white-space: nowrap;}
.fhc-pill.is-ok{background: var(--fhc-ok-soft);border-color: var(--fhc-ok-line);color: var(--fhc-ok);}
.fhc-pill.is-failed,.fhc-pill.is-error{background: var(--fhc-bad-soft);border-color: var(--fhc-bad-line);color: var(--fhc-bad);}
.fhc-pill.is-missing,.fhc-pill.is-extra{background: var(--fhc-warn-soft);border-color: var(--fhc-warn-line);color: var(--fhc-warn);}
.fhc-empty{border: 1px solid var(--fhc-line-2);border-radius: 0.3rem;background: var(--fhc-panel);padding: 1.1rem;font-size: 0.86rem;color: var(--fhc-dim);text-align: center;}
.fhc-run{display: flex;flex-wrap: wrap;align-items: center;gap: 0.5rem 0.8rem;margin-top: 0.75rem;}
.fhc-run-track{flex: 1 1 12rem;height: 0.45rem;border-radius: 999px;background: var(--fhc-line-2);overflow: hidden;}
.fhc-run-fill{height: 100%;width: 0;background: var(--fhc-accent);transition: width 0.15s linear;}
.fhc-run-text{font-size: 0.8rem;color: var(--fhc-ink-2);font-weight: 600;}
.fhc-stop{appearance: none;border: 1px solid var(--fhc-line);background: var(--fhc-panel);border-radius: 0.25rem;padding: 0.25rem 0.7rem;font-size: 0.8rem;font-weight: 600;color: var(--fhc-bad);cursor: pointer;}
.fhc-stop:disabled{opacity: 0.5;cursor: default;}
.fhc-summary{margin: 0.75rem 0 0;font-size: 0.85rem;font-weight: 600;color: var(--fhc-ink-2);}
.fhc-summary.is-good{color: var(--fhc-ok);}
.fhc-summary.is-bad{color: var(--fhc-bad);}
.fhc-export{display: flex;flex-wrap: wrap;gap: 0.4rem;margin-top: 0.85rem;}
.fhc-export[data-mode="verify"] .fhc-hash-only{display: none;}
.fhc-export[data-mode="hash"] .fhc-verify-only{display: none;}
.fhc-actions{display: flex;flex-wrap: wrap;gap: 0.4rem;margin-top: 0.85rem;}
.fhc-btn{appearance: none;border: 1px solid var(--fhc-line);background: var(--fhc-panel);border-radius: 0.25rem;padding: 0.34rem 0.8rem;font-size: 0.82rem;font-weight: 600;color: var(--fhc-ink-2);cursor: pointer;}
.fhc-btn:hover{border-color: var(--fhc-accent);color: var(--fhc-accent-dark);}
.fhc-btn:focus-visible{outline: 2px solid var(--fhc-accent-dark);outline-offset: 1px;}
.fhc-btn.is-primary{background: var(--fhc-accent);border-color: var(--fhc-accent);color: #ffffff;}
.fhc-btn.is-primary:hover{background: var(--fhc-accent-dark);border-color: var(--fhc-accent-dark);color: #ffffff;}
.fhc-btn.is-quiet{color: var(--fhc-dim);}
.fhc-article{margin: 0 auto 2.5rem;color: var(--fhc-ink-2);line-height: 1.7;}
.fhc-article h2{font-size: 1.5rem;font-weight: 700;color: var(--fhc-ink);margin: 2.2rem 0 0.8rem;line-height: 1.3;}
.fhc-article h2:first-child{margin-top: 0;}
.fhc-article h3{font-size: 1.14rem;font-weight: 700;color: var(--fhc-ink);margin: 1.7rem 0 0.6rem;}
.fhc-article p{margin: 0 0 0.95rem;}
.fhc-article a{color: var(--fhc-accent-dark);font-weight: 600;}
.fhc-article code{font-family: var(--fhc-mono);font-size: 0.86em;background: var(--fhc-accent-soft);color: var(--fhc-accent-dark);padding: 0.08em 0.32em;border-radius: 0.2rem;}
.fhc-article ul{margin: 0 0 1.1rem;padding-left: 1.2rem;}
.fhc-article li{margin-bottom: 0.45rem;}
.fhc-lede{font-size: 1.05rem;color: var(--fhc-ink);}
.fhc-callout{border-left: 3px solid var(--fhc-accent);background: var(--fhc-panel-2);border-radius: 0 0.3rem 0.3rem 0;padding: 0.9rem 1.1rem;margin: 1.4rem 0;}
.fhc-callout p:last-child{margin-bottom: 0;}
.fhc-callout-title{display: block;font-size: 0.76rem;font-weight: 700;text-transform: uppercase;letter-spacing: 0.07em;color: var(--fhc-accent-dark);margin-bottom: 0.4rem;}
.fhc-figure{margin: 1.5rem 0;}
.fhc-figure-title{font-size: 0.95rem;font-weight: 700;color: var(--fhc-ink);margin-bottom: 0.55rem;}
.fhc-grid-wrap{border: 1px solid var(--fhc-line);border-radius: 0.3rem;overflow-x: auto;background: var(--fhc-panel);}
.fhc-grid{width: 100%;border-collapse: collapse;font-size: 0.86rem;}
.fhc-grid th{text-align: left;padding: 0.6rem 0.75rem;background: var(--fhc-panel-2);border-bottom: 1px solid var(--fhc-line);font-size: 0.76rem;text-transform: uppercase;letter-spacing: 0.05em;color: var(--fhc-dim);white-space: nowrap;}
.fhc-grid td{padding: 0.6rem 0.75rem;border-bottom: 1px solid var(--fhc-line-2);vertical-align: top;}
.fhc-grid tr:last-child td{border-bottom: 0;}
.fhc-grid td:first-child{font-family: var(--fhc-mono);font-weight: 700;color: var(--fhc-ink);white-space: nowrap;}
.fhc-figure-note{font-size: 0.82rem;color: var(--fhc-dim);margin: 0.5rem 0 0;}
.fhc-steps{list-style: none;counter-reset: fhcstep;margin: 0 0 1.3rem;padding: 0;}
.fhc-steps li{counter-increment: fhcstep;position: relative;padding-left: 2.2rem;margin-bottom: 0.75rem;}
.fhc-steps li::before{content: counter(fhcstep);position: absolute;left: 0;top: 0.1rem;width: 1.55rem;height: 1.55rem;border-radius: 999px;background: var(--fhc-accent-soft);color: var(--fhc-accent-dark);font-family: var(--fhc-mono);font-size: 0.82rem;font-weight: 700;display: flex;align-items: center;justify-content: center;}
.fhc-mistakes{list-style: none;margin: 0 0 1.3rem;padding: 0;}
.fhc-mistakes li{border: 1px solid var(--fhc-line-2);border-left: 3px solid var(--fhc-bad-line);border-radius: 0 0.3rem 0.3rem 0;background: var(--fhc-panel);padding: 0.75rem 0.9rem;margin-bottom: 0.65rem;}
.fhc-mistake-head{display: block;font-weight: 700;color: var(--fhc-ink);margin-bottom: 0.25rem;}
.fhc-verdict{display: flex;flex-wrap: wrap;gap: 0.55rem;list-style: none;margin: 0 0 1.3rem;padding: 0;}
.fhc-verdict li{flex: 1 1 15rem;border: 1px solid var(--fhc-line-2);border-radius: 0.3rem;background: var(--fhc-panel);padding: 0.75rem 0.9rem;}
.fhc-verdict-tag{display: inline-block;font-size: 0.72rem;font-weight: 700;text-transform: uppercase;letter-spacing: 0.06em;padding: 0.1rem 0.45rem;border-radius: 999px;margin-bottom: 0.35rem;}
.fhc-verdict-tag.is-yes{background: var(--fhc-ok-soft);color: var(--fhc-ok);}
.fhc-verdict-tag.is-no{background: var(--fhc-bad-soft);color: var(--fhc-bad);}
.fhc-pre{font-family: var(--fhc-mono);font-size: 0.8rem;line-height: 1.6;background: var(--fhc-panel);border: 1px solid var(--fhc-line);border-radius: 0.3rem;padding: 0.75rem 0.9rem;overflow-x: auto;color: var(--fhc-ink);margin: 0 0 1.1rem;}
@media (max-width: 640px){
.fhc-shell{padding: 0.7rem;}
.fhc-head{font-size: 0.78rem;}
.fhc-table th,.fhc-table td{padding: 0.45rem 0.5rem;}
.fhc-article h2{font-size: 1.3rem;}
}
