:root{--accent:#0E7490}
@media (prefers-color-scheme:dark){:root{--accent:#22D3EE;--accent-ink:#062a33}}
.counter{display:grid;grid-template-columns:minmax(0,1.7fr) minmax(0,1fr);gap:20px;align-items:start}
@media (max-width:860px){.counter{grid-template-columns:minmax(0,1fr)}}
.ed-head{display:flex;justify-content:space-between;align-items:baseline;gap:12px}
.ed-head label{margin:0}
#saved{font-size:13px;color:var(--muted)}
#editor,#io{min-height:340px;font-size:16px;line-height:1.7;background:var(--surface);margin-top:8px}
@media (max-width:600px){#editor,#io{min-height:240px}}
.toolbar{margin-top:12px;gap:8px}
.toolbar .grow{flex:1}
.filebtn{position:relative;overflow:hidden;margin:0;display:inline-flex}
.filebtn input{position:absolute;inset:0;opacity:0;cursor:pointer}
.stats{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.stat{background:var(--surface-2);border-radius:var(--r-ctl);padding:10px 12px;min-width:0}
.stat span{display:block;font-size:13px;color:var(--muted);line-height:1.3}
.stat b{display:block;font-size:20px;font-variant-numeric:tabular-nums;letter-spacing:-.02em;line-height:1.35}
.stat.hi{background:var(--accent-soft)}
.stat.hi b{color:var(--accent);font-size:28px}
.goal{margin-top:18px;padding-top:16px;border-top:1px solid var(--line)}
.goal-in{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px}
.goal .chips{margin-top:8px}
.bar{height:8px;border-radius:999px;background:var(--surface-2);overflow:hidden;margin-top:12px}
#goal-bar{height:100%;width:0;background:var(--accent);transition:width .25s cubic-bezier(.16,1,.3,1)}
#goal-bar.over{background:#dc2626}
#goal-text{font-size:14px;color:var(--muted);margin:6px 0 0;font-variant-numeric:tabular-nums;min-height:1.4em}
.rate{margin-top:14px}
.rate input{max-width:120px}
details.fr{margin-top:14px;border-top:1px solid var(--line);padding-top:12px}
details.fr summary{cursor:pointer;font-weight:700;font-size:15px}
.fr-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr) auto;gap:8px;align-items:end;margin-top:10px}
@media (max-width:600px){.fr-grid{grid-template-columns:minmax(0,1fr)}}
.fr-grid .field{margin:0}
.check{display:flex;align-items:center;gap:8px;font-weight:500;font-size:14px;margin:0}
.check input{width:18px;height:18px;accent-color:var(--accent)}
.below{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:20px;margin-top:20px}
@media (max-width:860px){.below{grid-template-columns:minmax(0,1fr)}}
.below h2{margin-top:0;font-size:18px}
#kw{list-style:none;margin:0;padding:0;display:grid;gap:4px}
#kw li{display:flex;justify-content:space-between;gap:12px;padding:6px 0;border-bottom:1px dashed var(--line);font-size:15px}
#kw li b{font-weight:600;color:var(--muted);font-variant-numeric:tabular-nums;white-space:nowrap}
#kw li.muted{color:var(--muted);border:0}
#longest{color:var(--muted);font-size:14px;margin:10px 0 0}
.tools{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:10px;margin:0;padding:0;list-style:none}
.tools a{display:block;text-decoration:none;padding:14px 16px;border:1px solid var(--line);border-radius:var(--r-ctl);background:var(--surface);transition:border-color .15s,transform .15s cubic-bezier(.16,1,.3,1)}
.tools a:hover{border-color:var(--accent);transform:translateY(-1px)}
.tools b{display:block}
.tools span{display:block;font-size:13px;color:var(--muted);margin-top:2px}
/* 변환 도구 */
.opsets{display:grid;gap:14px;margin-top:14px}
.opset h3{font-size:14px;color:var(--muted);margin:0 0 8px;font-weight:600}
.ops{display:flex;flex-wrap:wrap;gap:6px}
.ops button{font:inherit;font-size:14px;font-weight:600;padding:8px 12px;border-radius:var(--r-ctl);border:1px solid var(--line);background:var(--surface-2);color:var(--text);cursor:pointer;transition:border-color .15s,background .15s}
.ops button:hover{border-color:var(--accent);background:var(--accent-soft)}
.ops .inline{display:inline-flex;gap:6px;align-items:center}
.ops .inline input{width:110px;min-height:38px;padding:6px 10px}
#io-err{min-height:1.2em}
#undo{margin-left:auto}
/* 비밀번호 */
.pw-top{display:flex;flex-wrap:wrap;justify-content:space-between;gap:12px;align-items:center;margin-bottom:16px}
.rangehead{display:flex;justify-content:space-between;align-items:baseline}
.rangehead output{font-weight:800;font-size:20px;color:var(--accent);font-variant-numeric:tabular-nums}
input[type=range]{width:100%;accent-color:var(--accent)}
.checks{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-bottom:16px}
@media (max-width:480px){.checks{grid-template-columns:minmax(0,1fr)}}
.plist{list-style:none;margin:16px 0 0;padding:0;display:grid;gap:8px}
.plist li{display:flex;align-items:center;gap:10px;justify-content:space-between;background:var(--surface-2);border-radius:var(--r-ctl);padding:10px 12px}
.plist code{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:17px;overflow-wrap:anywhere;word-break:break-all}
.plist li div{min-width:0}
.plist li div b{display:block;font-size:19px}
.plist li div span{display:block;font-size:13px;color:var(--muted)}
#pw-strength{margin:12px 0 0;font-weight:600}
#roman-syl{color:var(--muted);font-size:14px;margin-top:12px}
.mono{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace}
