:root{--long: #d97706;--long-bg: rgba(253, 230, 138, .45);--stacked: #7c3aed;--stacked-bg: rgba(221, 214, 254, .5);--passive: #2563eb;--passive-bg: rgba(191, 219, 254, .55);--acronym: #dc2626;--acronym-bg: rgba(254, 202, 202, .6);--filler: #059669;--filler-bg: rgba(167, 243, 208, .55);--ink: #1f2430;--muted: #6b7280;--border: #e3e5ea;--bg: #fafafa;--editor-font: 15px/1.6 ui-monospace, SFMono-Regular, Menlo, Consolas, monospace}*{box-sizing:border-box}body{margin:0;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;color:var(--ink);background:var(--bg)}.app{max-width:1080px;margin:0 auto;padding:24px 16px 40px}header h1{margin:0;font-size:1.7rem;letter-spacing:-.02em}.subtitle{margin:4px 0 0;color:var(--muted);font-size:.95rem}.subtitle a{color:var(--passive)}main{display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:20px;margin-top:20px}@media(max-width:820px){main{grid-template-columns:minmax(0,1fr)}}.toolbar{display:flex;gap:8px;margin-bottom:8px}button{font:inherit;cursor:pointer}.toolbar button{padding:6px 14px;border:1px solid var(--border);border-radius:6px;background:#fff;font-size:.9rem}.toolbar button:hover:not(:disabled){border-color:#c6c9d0;background:#f4f5f7}.toolbar button:disabled{opacity:.5;cursor:default}.editor-wrap{position:relative;height:min(62vh,560px);border:1px solid var(--border);border-radius:8px;background:#fff;overflow:hidden}.highlights,.editor-wrap textarea{font:var(--editor-font);padding:14px;white-space:pre-wrap;overflow-wrap:break-word}.highlights{position:absolute;top:0;right:0;bottom:0;left:0;overflow:hidden;color:transparent;pointer-events:none}.editor-wrap textarea{position:relative;width:100%;height:100%;margin:0;border:0;resize:none;background:transparent;color:var(--ink);caret-color:var(--ink);outline:none}.highlights mark{color:transparent;background:transparent;border-radius:2px}.hl-long{background:var(--long-bg)}.hl-stacked{background:var(--stacked-bg)}.hl-long.hl-stacked{background:linear-gradient(var(--long-bg),var(--stacked-bg))}.hl-passive{background:var(--passive-bg);box-shadow:inset 0 -2px var(--passive)}.hl-acronym{background:var(--acronym-bg);box-shadow:inset 0 -2px var(--acronym)}.hl-filler{background:var(--filler-bg);box-shadow:inset 0 -2px var(--filler)}.panel{min-width:0}.score-card{display:flex;align-items:center;gap:14px;padding:14px;border:1px solid var(--border);border-radius:8px;background:#fff}.score-value{font-size:2.4rem;font-weight:700;font-variant-numeric:tabular-nums}.score-label{font-size:.8rem;text-transform:uppercase;letter-spacing:.06em;color:var(--muted)}.score-sub{font-size:.9rem;color:var(--muted)}.formula{margin:8px 0 16px;font-size:.78rem;color:var(--muted)}.counts{list-style:none;margin:0 0 16px;padding:0;border:1px solid var(--border);border-radius:8px;background:#fff;overflow:hidden}.counts li{display:flex;align-items:center;gap:8px;padding:7px 12px;font-size:.9rem}.counts li+li{border-top:1px solid var(--border)}.swatch{width:12px;height:12px;border-radius:3px;flex:none}.swatch-long{background:var(--long)}.swatch-stacked{background:var(--stacked)}.swatch-passive{background:var(--passive)}.swatch-acronym{background:var(--acronym)}.swatch-filler{background:var(--filler)}.count-label{flex:1}.count-value{font-variant-numeric:tabular-nums;color:var(--muted)}.panel h2{margin:0 0 8px;font-size:1rem}.empty{color:var(--muted);font-size:.9rem}.flag-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px;max-height:46vh;overflow-y:auto}.flag-item{display:block;width:100%;text-align:left;padding:8px 10px;border:1px solid var(--border);border-radius:8px;background:#fff;font-size:.85rem;line-height:1.4}.flag-item:hover{border-color:#c6c9d0;background:#f4f5f7}.badge{display:inline-block;margin-right:6px;padding:1px 7px;border-radius:99px;font-size:.72rem;font-weight:600;color:#fff}.badge-long{background:var(--long)}.badge-stacked{background:var(--stacked)}.badge-passive{background:var(--passive)}.badge-acronym{background:var(--acronym)}.badge-filler{background:var(--filler)}.flag-reason{color:var(--ink)}footer{margin-top:28px;padding-top:14px;border-top:1px solid var(--border);color:var(--muted);font-size:.82rem}
