/* Character and word counter. Needs /assets/css/modern-tool-cards.css (tokens + .cat-website accent). */
.cc, .cc *, .cc *::before, .cc *::after { box-sizing: border-box; }
.cc { display: grid; gap: 1.25rem; }
.cc-panel { background: var(--tc-bg); border: 1px solid var(--tc-border); border-radius: 20px; box-shadow: var(--tc-shadow); overflow: hidden; }
.cc-panel[hidden] { display: none; }
.cc-panel__head { display: flex; align-items: center; gap: .6rem; padding: .9rem 1.25rem; background: var(--tc-surface); border-bottom: 1px solid var(--tc-border); }
.cc-panel__head h3 { margin: 0; font-size: .8rem; font-weight: 700; letter-spacing: .06em; text-transform: uppercase; color: var(--tc-muted); }
.cc-panel__head h3 label { margin: 0; font: inherit; letter-spacing: inherit; text-transform: inherit; color: inherit; }
.cc-panel__head > i { color: var(--accent); font-size: 1.1rem; }
.cc-link { margin-left: auto; padding: 0; font-size: .82rem; font-weight: 600; color: var(--accent); background: none; border: 0; cursor: pointer; }
.cc-link:hover { text-decoration: underline; }
.cc-link:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; border-radius: 4px; }
.cc-text { display: block; width: 100%; min-height: 14rem; padding: 1.1rem 1.25rem; resize: vertical; font: 1rem/1.65 inherit; color: var(--tc-text); background: var(--tc-bg); border: 0; border-radius: 0; }
.cc-text:focus-visible { outline: 2px solid var(--accent); outline-offset: -2px; }

.cc-stats { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: .75rem; }
.cc-stat { display: grid; grid-template-columns: auto 1fr; grid-template-areas: "i v" "i l"; column-gap: .75rem; align-items: center; padding: .9rem 1rem; background: var(--tc-bg); border: 1px solid var(--tc-border); border-radius: 16px; box-shadow: var(--tc-shadow); }
.cc-stat i { grid-area: i; display: grid; place-items: center; width: 2.4rem; height: 2.4rem; font-size: 1.2rem; color: var(--accent); background: rgba(var(--accent-rgb), .1); border-radius: 12px; }
.cc-stat__v { grid-area: v; font-size: 1.4rem; font-weight: 700; line-height: 1.2; color: var(--tc-text); font-variant-numeric: tabular-nums; overflow-wrap: anywhere; }
.cc-stat__l { grid-area: l; font-size: .76rem; font-weight: 600; color: var(--tc-muted); }

.cc-limit__body { display: flex; flex-wrap: wrap; align-items: center; gap: .75rem 1rem; padding: 1rem 1.25rem; }
.cc select, .cc input[type=text], .cc input[type=number] { height: 2.8rem; padding: 0 .8rem; font: inherit; font-size: .9rem; color: var(--tc-text); background: var(--tc-bg); border: 1px solid var(--tc-border); border-radius: 12px; }
.cc select:focus-visible, .cc input:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }
.cc input[hidden] { display: none; }
.cc input[type=number] { width: 9rem; }
.cc-limit__out { display: flex; flex: 1 1 18rem; align-items: center; gap: .8rem; font-size: .88rem; font-weight: 600; color: var(--tc-text); }
.cc-limit__out[hidden] { display: none; }
.cc-meter { flex: 1 1 8rem; height: .6rem; background: var(--tc-border); border-radius: 999px; overflow: hidden; }
.cc-meter span { display: block; height: 100%; width: 0; background: var(--accent); border-radius: inherit; transition: width .15s; }
.cc-limit__out.is-over { color: #dc2626; }
.cc-limit__out.is-over .cc-meter span { background: #dc2626; }

.cc-kws { margin: 0; padding: .5rem 1.25rem 1rem; list-style: none; }
.cc-kw { position: relative; display: grid; grid-template-columns: minmax(0, 1fr) 4rem 5rem; gap: .5rem; padding: .5rem .6rem; font-size: .92rem; border-bottom: 1px solid var(--tc-border); }
.cc-kw:last-child { border-bottom: 0; }
.cc-kw__bar { position: absolute; inset: 0 auto 0 0; background: rgba(var(--accent-rgb), .1); border-radius: 8px; margin:4px 0; }
.cc-kw > span:not(.cc-kw__bar) { position: relative; }
.cc-kw__word { font-weight: 600; color: var(--tc-text); overflow-wrap: anywhere; }
.cc-kw__count, .cc-kw__pct { text-align: right; color: var(--tc-muted); font-variant-numeric: tabular-nums; }

.cc-stop { background: var(--tc-bg); border: 1px solid var(--tc-border); border-radius: 20px; box-shadow: var(--tc-shadow); overflow: hidden; }
.cc-stop summary { display: flex; align-items: center; gap: .6rem; padding: .9rem 1.25rem; font-size: .9rem; font-weight: 700; color: var(--tc-text); cursor: pointer; list-style: none; }
.cc-stop summary::-webkit-details-marker { display: none; }
.cc-stop summary:focus-visible { outline: 2px solid var(--accent); outline-offset: -2px; }
.cc-stop summary > i:first-child { color: var(--accent); font-size: 1.1rem; }
.cc-stop__n { font-weight: 500; color: var(--tc-muted); }
.cc-stop__caret { margin-left: auto; color: var(--tc-muted); transition: transform .15s; }
.cc-stop[open] .cc-stop__caret { transform: rotate(180deg); }
.cc-stop__body { display: grid; gap: .9rem; padding: 0 1.25rem 1.25rem; }
.cc-stop__help { margin: 0; font-size: .85rem; color: var(--tc-muted); }
.cc-stop__add { display: flex; flex-wrap: wrap; gap: .6rem; }
.cc-stop__add input { flex: 1 1 14rem; }
.cc-btn { display: inline-flex; align-items: center; justify-content: center; height: 2.8rem; padding: 0 1.1rem; font-size: .9rem; font-weight: 600; color: var(--tc-text); background: var(--tc-bg); border: 1px solid var(--tc-border); border-radius: 12px; cursor: pointer; }
.cc-btn:hover { border-color: var(--accent); color: var(--accent); }
.cc-btn:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }
.cc-btn--primary { color: #fff; background: var(--accent); border-color: var(--accent); }
.cc-btn--primary:hover { color: #fff; filter: brightness(1.08); }
.cc-chips { display: flex; flex-wrap: wrap; gap: .4rem; max-height: 14rem; overflow-y: auto; padding: .25rem; }
.cc-chip { display: inline-flex; align-items: center; gap: .25rem; padding: .2rem .3rem .2rem .7rem; font-size: .82rem; color: var(--tc-text); background: var(--tc-surface); border: 1px solid var(--tc-border); border-radius: 999px; }
.cc-chip__x { width: 1.4rem; height: 1.4rem; padding: 0; font-size: 1rem; line-height: 1; color: var(--tc-muted); background: none; border: 0; border-radius: 50%; cursor: pointer; }
.cc-chip__x:hover { color: #dc2626; background: rgba(220, 38, 38, .1); }
.cc-chip__x:focus-visible { outline: 2px solid var(--accent); }

.cc-note { margin: 0; padding: .75rem 1rem; font-size: .78rem; color: var(--tc-muted); background: var(--tc-surface); border: 1px solid var(--tc-border); border-radius: 12px; }
.cc-note i { margin-right: .3rem; color: var(--accent); }
@media (max-width: 900px) { .cc-stats { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 480px) { .cc-stat { padding: .7rem; column-gap: .55rem; } .cc-stat__v { font-size: 1.15rem; } .cc-kw { grid-template-columns: minmax(0, 1fr) 3rem 4.4rem; } }
@media (prefers-reduced-motion: reduce) { .cc-meter span, .cc-stop__caret { transition: none; } }