*{box-sizing:border-box}:root{--ink: #1c1c28;--ink-soft: #5b5b6b;--paper: #fafaf7;--card: #ffffff;--line: #e4e4dd;--accent: #b33a1f}body{margin:0;background:var(--paper);color:var(--ink);font-family:ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,sans-serif;line-height:1.55}#app{max-width:780px;margin:0 auto;padding:40px 20px 80px}header h1{font-size:1.9rem;line-height:1.2;margin:0 0 12px}header h1 em{color:var(--accent);font-style:italic}.intro{color:var(--ink-soft);margin:0 0 28px;max-width:60ch}.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}.presets{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:12px}.chip{border:1px solid var(--line);background:var(--card);border-radius:999px;padding:6px 14px;font-size:.85rem;cursor:pointer;color:var(--ink)}.chip:hover{border-color:var(--accent);color:var(--accent)}textarea{width:100%;border:1px solid var(--line);border-radius:10px;background:var(--card);padding:12px 14px;font:inherit;resize:vertical}textarea:focus{outline:2px solid #c9c9ff;border-color:transparent}.controls-row{display:flex;justify-content:space-between;align-items:center;margin-top:8px}.char-count{color:var(--ink-soft);font-size:.8rem}button#analyze{background:var(--ink);color:#fff;border:none;border-radius:8px;padding:9px 22px;font:inherit;font-weight:600;cursor:pointer}button#analyze:disabled{background:#b9b9c0;cursor:default}.status{margin-top:14px}.status-text{font-size:.85rem;color:var(--ink-soft);margin-bottom:6px}.progress{height:6px;background:var(--line);border-radius:3px;overflow:hidden}.progress-fill{height:100%;width:0%;background:var(--accent);transition:width .2s}.hidden{display:none!important}.results{margin-top:36px}.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:12px;margin-bottom:24px}.card{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:16px}.card-big{font-size:1.5rem;font-weight:700;margin-bottom:6px;overflow-wrap:anywhere}.card-sub{font-size:.82rem;color:var(--ink-soft)}.compare{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:16px;margin:30px 0 24px}.compare:empty{display:none}.compare h2{font-size:1.15rem;margin:0 0 6px}.compare-caption{font-size:.82rem;color:var(--ink-soft);margin:0 0 14px;max-width:70ch}.compare-row{margin-bottom:10px}.compare-label{font-size:.85rem;font-weight:600}.compare-sub{font-weight:400;font-size:.78rem;color:var(--ink-soft)}.compare-line{display:flex;align-items:center;gap:10px;margin-top:3px}.compare-track{flex:1}.compare-bar{height:12px;border-radius:4px;background:#a3a3b0;min-width:2px}.compare-bar.accent{background:var(--accent)}.compare-bar.estimate{background:repeating-linear-gradient(-45deg,#a3a3b0 0 4px,transparent 4px 8px);outline:1px dashed #a3a3b0;outline-offset:-1px}.compare-bits{flex:0 0 6.5em;font-size:.8rem;font-variant-numeric:tabular-nums;white-space:nowrap}.compare .footnote{margin:12px 0 0}.legend{display:flex;align-items:center;gap:10px;font-size:.75rem;color:var(--ink-soft);margin-bottom:10px}.legend span:last-child{text-align:right}.legend-bar{flex:1;height:10px;border-radius:5px;background:linear-gradient(to right,#f4d82526,#f48c2573,#f44125bf)}.heatmap-wrap{position:relative}.heatmap{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:22px 24px;font-size:1.15rem;line-height:2;white-space:pre-wrap}.word{border-radius:4px;padding:1px 2px;margin:-1px -2px;cursor:pointer;transition:opacity .15s}.word:hover,.word.focus{outline:1.5px solid var(--ink)}.word:focus-visible{outline:2px solid var(--accent);outline-offset:1px}.word.dim{opacity:.18}.word.end-mark{font-size:.7em;padding:2px 9px;margin:0;border:1px dashed #b5b5a8;border-radius:999px;color:var(--ink-soft);white-space:nowrap;vertical-align:1px}.hint{font-size:.8rem;color:var(--ink-soft);margin:10px 2px 0}.stream{margin-top:30px}.stream h2{font-size:1.15rem;margin:0 0 8px}.stream-caption{font-size:.85rem;color:var(--ink-soft);margin:0 0 12px;max-width:70ch}.bitgrid{display:flex;flex-wrap:wrap;gap:3px;background:var(--card);border:1px solid var(--line);border-radius:12px;padding:14px}.bit{width:11px;height:11px;border-radius:2.5px;transition:opacity .15s,background-color .15s}.bit.one{background:var(--ink)}.bit.zero{background:#ddddd3}.bit.lit.one{background:var(--accent)}.bit.lit.zero{background:#eebfae;outline:1px solid var(--accent)}.bit.dim{opacity:.15}.bit.active{outline:1.5px solid var(--ink);outline-offset:1px}.bitgrid:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.bit-meaning{min-height:2.7em;font-size:.85rem;color:var(--ink-soft);margin:10px 2px 0;max-width:72ch}.bit-meaning strong{color:var(--ink)}.bit-meaning .divergent{color:var(--accent)}.bit-meaning .bend{color:var(--ink-soft)}.bit-demo{display:inline-block;width:9px;height:9px;border-radius:2px;vertical-align:-1px}.bit-demo.one{background:var(--ink)}.bit-demo.zero{background:#ddddd3}.tooltip{position:absolute;z-index:10;width:260px;max-width:calc(100vw - 48px);background:var(--ink);color:#f4f4f0;border-radius:10px;padding:12px 14px;font-size:.8rem;line-height:1.45;box-shadow:0 6px 24px #00000040;pointer-events:none}.tt-head{display:flex;justify-content:space-between;align-items:baseline;gap:8px;font-size:.9rem;margin-bottom:4px}.tt-bits{color:#ffb38a;font-weight:700;white-space:nowrap}.tt-verdict{margin-bottom:8px}.tt-context{color:#c9c9d4;margin-bottom:6px}.tt-parts{color:#c9c9d4;margin-top:8px}.tt-stream{color:#c9c9d4;margin-top:8px;padding-top:8px;border-top:1px solid rgba(255,255,255,.12)}.tt-bars{display:grid;gap:3px}.tt-row{display:grid;grid-template-columns:76px 1fr 46px;align-items:center;gap:8px}.tt-row code{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tt-row span{text-align:right;white-space:nowrap;color:#c9c9d4}.tt-bar{height:8px;background:#ffffff1a;border-radius:4px;overflow:hidden}.tt-bar div{height:100%;background:#9a9ab8;border-radius:4px}.tt-actual code{color:#8ee2a8}.tt-actual .tt-bar div{background:#4cbf77}.tt-actual span{color:#8ee2a8;font-weight:700}.tooltip code{background:#ffffff1f;border-radius:3px;padding:0 4px}.footnote{font-size:.8rem;color:var(--ink-soft);margin-top:18px;max-width:70ch}@media(max-width:520px){header h1{font-size:1.5rem}.heatmap{font-size:1rem;padding:16px}}@media(pointer:coarse){.bit{width:16px;height:16px;border-radius:3.5px}.bitgrid{gap:4px}.chip{padding:9px 16px}}
