.tn-sha-page {
  --sha-paper:#faf6ee; --sha-surface:#fffcf5; --sha-wash:#f5efdf; --sha-ink:#1a1208;
  --sha-muted:#5a4a30; --sha-line:#b8a888; --sha-soft:#ddd4be; --sha-button:#ede6d4;
  --sha-hover:#dfd4bb; --sha-accent:#c44a00; --sha-primary:#56311a;
  --sha-primary-hover:#714020; --sha-primary-text:#fff6e7;
  width:calc(100% - 10px); max-width:1180px; margin-inline:auto;
  color:var(--sha-ink); -webkit-text-fill-color:var(--sha-ink);
}
.tn-sha-page *, .tn-sha-page *::before, .tn-sha-page *::after { box-sizing:border-box; }
.tn-sha-page .sha-tool {
  border:1px solid var(--sha-line); border-top:3px double var(--sha-line);
  background:var(--sha-paper); color:var(--sha-ink); -webkit-text-fill-color:var(--sha-ink);
  font-family:-apple-system,BlinkMacSystemFont,"Apple SD Gothic Neo","Malgun Gothic",sans-serif;
  -webkit-font-smoothing:antialiased; font-variant-numeric:lining-nums tabular-nums;
}
.tn-sha-page .sha-tool [hidden] { display:none!important; }
.tn-sha-page .sha-tool :is(p,h2,h3) { margin:0; color:inherit; -webkit-text-fill-color:inherit; }
.tn-sha-page .sha-tool :is(button,input,textarea) { box-shadow:none; border-radius:0; }
.tn-sha-page .sha-tool button {
  display:inline-flex; align-items:center; justify-content:center; gap:7px;
  min-width:44px; min-height:44px; height:44px; margin:0; padding:0 16px;
  border:1px solid var(--sha-line); background:var(--sha-button);
  color:var(--sha-ink); -webkit-text-fill-color:var(--sha-ink);
  font-family:"Courier New",monospace; font-size:13px; font-weight:900; line-height:1;
  letter-spacing:0; text-transform:none; text-align:center; cursor:pointer;
  transition:background-color .16s ease,border-color .16s ease,transform .12s ease;
}
.tn-sha-page .sha-tool button:not(:disabled):hover { background:var(--sha-hover); border-color:var(--sha-muted); }
.tn-sha-page .sha-tool button:not(:disabled):active { transform:scale(.96); }
.tn-sha-page .sha-tool button:disabled { opacity:.45; cursor:not-allowed; }
.tn-sha-page .sha-tool :is(button,input,textarea):focus-visible { outline:2px solid var(--sha-accent); outline-offset:2px; }
.tn-sha-page .sha-mode-row { display:flex; align-items:center; flex-wrap:wrap; gap:8px; padding:16px 24px; border-bottom:1px solid var(--sha-line); }
.tn-sha-page .sha-tool :is(#shaTextMode,#shaFileMode) { background:transparent; border-color:transparent; padding-inline:16px; }
.tn-sha-page .sha-tool :is(#shaTextMode,#shaFileMode)[aria-pressed="true"] { background:var(--sha-button); border-color:var(--sha-line); box-shadow:inset 0 -2px var(--sha-accent); }
.tn-sha-page .sha-mode-row > :is(p,span,small) { margin-left:auto; font-size:12px; color:var(--sha-muted); -webkit-text-fill-color:var(--sha-muted); }
.tn-sha-page .sha-workspace { display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1fr); }
.tn-sha-page :is(.sha-source,.sha-result) { display:flex; flex-direction:column; min-width:0; padding:24px; }
.tn-sha-page .sha-source { border-right:1px solid var(--sha-line); }
.tn-sha-page .sha-result { background:var(--sha-wash); }
.tn-sha-page .sha-panel-head { display:flex; align-items:center; flex-wrap:wrap; gap:8px 12px; padding-bottom:14px; margin-bottom:20px; border-bottom:1px solid var(--sha-soft); }
.tn-sha-page .sha-panel-head strong { font-size:15px; font-weight:800; line-height:1.5; }
.tn-sha-page .sha-step { font:700 11px/1.5 "Courier New",monospace; letter-spacing:.06em; color:var(--sha-muted); -webkit-text-fill-color:var(--sha-muted); }
.tn-sha-page .sha-field-label { display:block; margin:0 0 5px; font-size:15px; font-weight:800; line-height:1.5; }
.tn-sha-page .sha-tool :is(textarea,input[type="text"]) {
  display:block; width:100%; max-width:100%; min-width:0; margin:0; padding:14px;
  border:1px solid var(--sha-line); background:var(--sha-surface);
  color:var(--sha-ink); -webkit-text-fill-color:var(--sha-ink);
  font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace; font-size:14px; line-height:1.75;
  transition:border-color .16s ease,background-color .16s ease;
}
.tn-sha-page .sha-tool :is(textarea,input)::placeholder { color:var(--sha-muted); -webkit-text-fill-color:var(--sha-muted); opacity:.7; font-weight:400; }
.tn-sha-page #shaText { min-height:208px; resize:vertical; white-space:pre-wrap; overflow-wrap:anywhere; }
.tn-sha-page .sha-nfc-option { display:flex; align-items:center; gap:9px; min-height:44px; margin:8px 0 0; font-size:13px; line-height:1.65; cursor:pointer; }
.tn-sha-page #shaNfc { flex:0 0 auto; width:17px; height:17px; margin:3px 0 0; accent-color:var(--sha-accent); }
.tn-sha-page :is(.sha-hint,#shaFileSummary,#shaMeta,#shaStatus) { font-size:12px; line-height:1.75; color:var(--sha-muted); -webkit-text-fill-color:var(--sha-muted); overflow-wrap:anywhere; text-wrap:pretty; }
.tn-sha-page .sha-tool .sha-hint { margin-top:8px; }
.tn-sha-page .sha-actions { display:flex; align-items:center; flex-wrap:wrap; gap:8px; margin-top:20px; }
.tn-sha-page .sha-tool #shaRun { background:var(--sha-primary); border-color:var(--sha-primary); color:var(--sha-primary-text); -webkit-text-fill-color:var(--sha-primary-text); }
.tn-sha-page .sha-tool #shaRun:not(:disabled):hover { background:var(--sha-primary-hover); border-color:var(--sha-primary-hover); }
.tn-sha-page #shaStatus { min-height:45px; margin:0; padding:12px 24px; border-top:1px solid var(--sha-line); }
.tn-sha-page .sha-tool noscript p { padding:12px 24px; }
.tn-sha-page #shaStatus[data-state="error"] { color:var(--sha-accent); -webkit-text-fill-color:var(--sha-accent); font-weight:700; }
.tn-sha-page #shaDropzone { position:relative; display:flex; flex-direction:column; justify-content:center; align-items:center; gap:12px; min-height:208px; padding:24px; border:1px dashed var(--sha-line); background:var(--sha-surface); text-align:center; transition:border-color .16s ease,background-color .16s ease; }
.tn-sha-page #shaDropzone:is(.is-dragging,:focus-within) { background:var(--sha-button); border-color:var(--sha-accent); }
.tn-sha-page .sha-drop-title { font-size:17px; font-weight:800; line-height:1.6; }
.tn-sha-page .sha-drop-icon { font:400 32px/1 sans-serif; color:var(--sha-muted); -webkit-text-fill-color:var(--sha-muted); }
.tn-sha-page #shaDropzone > span:not(.sha-drop-icon) { font-size:12px; line-height:1.7; color:var(--sha-muted); -webkit-text-fill-color:var(--sha-muted); }
.tn-sha-page #shaFile { display:block; max-width:100%; min-width:0; color:var(--sha-muted); -webkit-text-fill-color:var(--sha-muted); font:12px/1.5 -apple-system,BlinkMacSystemFont,sans-serif; }
.tn-sha-page #shaFile::file-selector-button { min-height:44px; margin-right:10px; padding:0 14px; border:1px solid var(--sha-line); border-radius:0; background:var(--sha-button); color:var(--sha-ink); font:900 13px/1 "Courier New",monospace; cursor:pointer; }
.tn-sha-page #shaFileSummary { margin-top:12px; }
.tn-sha-page .sha-result-head { display:flex; align-items:center; justify-content:space-between; gap:12px; margin-bottom:16px; }
.tn-sha-page .sha-result-head :is(h2,h3) { font-size:15px; font-weight:800; line-height:1.5; }
.tn-sha-page .sha-result-head > span { font-size:12px; line-height:1.6; color:var(--sha-muted); -webkit-text-fill-color:var(--sha-muted); }
.tn-sha-page #shaDigest { display:block; min-height:112px; margin:0 0 12px; padding:18px; border:1px solid var(--sha-line); border-radius:0; background:var(--sha-surface); color:var(--sha-ink); -webkit-text-fill-color:var(--sha-ink); font:600 18px/1.8 ui-monospace,SFMono-Regular,Menlo,Consolas,monospace; letter-spacing:.03em; overflow-wrap:anywhere; word-break:break-all; white-space:normal; user-select:all; }
.tn-sha-page #shaDigest[data-empty="true"] { font-family:inherit; font-size:14px; font-weight:400; letter-spacing:0; word-break:keep-all; color:var(--sha-muted); -webkit-text-fill-color:var(--sha-muted); user-select:auto; }
.tn-sha-page #shaMeta { margin-bottom:22px; }
.tn-sha-page .sha-compare { padding-top:20px; border-top:1px solid var(--sha-soft); }
.tn-sha-page #shaExpected { font-size:13px; }
.tn-sha-page #shaExpected[aria-invalid="true"] { border-color:var(--sha-accent); }
.tn-sha-page #shaVerdict { margin-top:12px; padding:12px 14px; border:1px solid var(--sha-soft); background:var(--sha-paper); font-size:13px; line-height:1.7; overflow-wrap:anywhere; }
.tn-sha-page #shaVerdict[data-state="match"] { border-color:var(--sha-ink); font-weight:800; }
.tn-sha-page #shaVerdict:is([data-state="invalid"],[data-state="mismatch"]) { border-color:var(--sha-accent); color:var(--sha-accent); -webkit-text-fill-color:var(--sha-accent); }
body:is([data-scheme="dark"],[data-scheme="inverse"],[data-scheme="auto"][data-l="dark"],[data-scheme="auto"][data-d="dark"]) .tn-sha-page,
html[data-scheme="dark"] body:not([data-scheme="light"]) .tn-sha-page {
  --sha-paper:#241d12; --sha-surface:#322a1a; --sha-wash:#2c2517; --sha-ink:#f7ead1;
  --sha-muted:#c3b492; --sha-line:#826744; --sha-soft:#574a37; --sha-button:#2f2115;
  --sha-hover:#3a2a1b; --sha-accent:#e8823f; --sha-primary:#6a3b1f; --sha-primary-hover:#824826; --sha-primary-text:#f7ead1; color-scheme:dark;
}
@media (prefers-color-scheme:dark) {
  body[data-scheme="auto"] .tn-sha-page {
    --sha-paper:#241d12; --sha-surface:#322a1a; --sha-wash:#2c2517; --sha-ink:#f7ead1;
    --sha-muted:#c3b492; --sha-line:#826744; --sha-soft:#574a37; --sha-button:#2f2115;
    --sha-hover:#3a2a1b; --sha-accent:#e8823f; --sha-primary:#6a3b1f; --sha-primary-hover:#824826; --sha-primary-text:#f7ead1; color-scheme:dark;
  }
}
@media (max-width:760px) {
  .tn-sha-page .sha-workspace { grid-template-columns:minmax(0,1fr); }
  .tn-sha-page .sha-mode-row { padding:12px 16px; gap:6px; }
  .tn-sha-page .sha-mode-row > :is(p,span,small) { flex-basis:100%; margin-left:0; }
  .tn-sha-page :is(.sha-source,.sha-result) { padding:16px; }
  .tn-sha-page #shaStatus, .tn-sha-page .sha-tool noscript p { padding:12px 16px; }
  .tn-sha-page .sha-panel-head { margin-bottom:16px; padding-bottom:12px; }
  .tn-sha-page .sha-source { border-right:0; border-bottom:1px solid var(--sha-line); }
  .tn-sha-page #shaText { min-height:176px; }
  .tn-sha-page #shaDropzone { min-height:184px; padding:16px; }
  .tn-sha-page .sha-tool :is(textarea,input[type="text"]) { font-size:16px; padding:12px; }
  .tn-sha-page #shaDigest { min-height:0; padding:14px; font-size:16px; }
  .tn-sha-page .sha-actions { margin-top:16px; }
}
@media (prefers-reduced-motion:reduce) {
  .tn-sha-page .sha-tool :is(button,input,textarea,#shaDropzone) { transition:none; }
  .tn-sha-page .sha-tool button:not(:disabled):active { transform:none; }
}
