/* texttoolsbase shared forms CSS: inputs, buttons, controls, upload/drop-zone controls. */

.tbtn{font-family:var(--mono);font-size:.72rem;color:var(--muted);background:transparent;border:1px solid transparent;border-radius:5px;padding:.32rem .6rem;cursor:pointer;letter-spacing:.04em;transition:all .14s}

.tbtn:hover{color:var(--accent);border-color:var(--line);background:var(--panel)}

.tbtn:active{transform:translateY(1px)}

textarea{flex:1;width:100%;resize:vertical;border:0;outline:0;background:transparent;color:var(--ink);font-family:var(--sans);font-size:1.05rem;line-height:1.75;padding:1.4rem;min-height:360px}

textarea::placeholder{color:var(--faint)}

.tctl select{border:1px solid var(--line);border-radius:6px;background:var(--panel-2);color:var(--ink);font:inherit;font-size:.8rem;padding:.4rem .5rem}

.passage{position:relative;background:var(--panel);border:1px solid var(--line);border-radius:var(--r);padding:1.3rem 1.4rem;font-family:var(--mono);font-size:1.15rem;line-height:2;cursor:text;user-select:none;min-height:140px}

button:focus-visible,textarea:focus-visible,select:focus-visible,input:focus-visible,a:focus-visible{box-shadow:0 0 0 3px var(--accent-soft);outline:none}

a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{box-shadow:0 0 0 3px var(--accent-soft)}

.ctl{display:flex;flex-direction:column;gap:.3rem}

.ctl>span{font-family:var(--mono);font-size:.64rem;text-transform:uppercase;letter-spacing:.1em;color:var(--faint)}

.ctl input[type=text],.ctl input[type=number],.ctl select{font-family:var(--sans);font-size:.9rem;padding:.5rem .65rem;border:1px solid var(--line);border-radius:6px;background:var(--panel);color:var(--ink);min-width:130px}

.ctl input:focus,.ctl select:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}

.wgin .ctl{flex:1;min-width:220px}

.wgin input[type=text]{font-family:var(--mono);font-size:1.15rem;letter-spacing:.08em}

.solvebtn{font-family:var(--display);font-weight:600;font-size:.95rem;color:#fff;background:var(--accent);border:0;border-radius:8px;padding:.62rem 1.6rem;cursor:pointer;box-shadow:0 1px 0 var(--accent-ink)}

.solvebtn:hover{background:var(--accent-ink)}

button:focus-visible,textarea:focus-visible,select:focus-visible,input:focus-visible,a:focus-visible{box-shadow:0 0 0 3px var(--accent-soft)}

.io textarea,.io pre{flex:1;width:100%;border:0;outline:0;background:transparent;color:var(--ink);font-family:var(--sans);font-size:1.02rem;line-height:1.7;padding:1.2rem;min-height:330px;margin:0}

.io textarea{resize:vertical}

.ctl.chk{flex-direction:row;align-items:center;gap:.45rem;padding-bottom:.55rem}

.ctl.chk input{width:16px;height:16px;accent-color:var(--accent)}

.ctl.chk>span{font-size:.78rem;text-transform:none;letter-spacing:0;color:var(--muted)}

a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:2px solid var(--accent);outline-offset:2px}

.tbtn:focus-visible{outline:2px solid var(--accent);outline-offset:2px}

.t18opts .ctl{display:flex;align-items:center;gap:.4rem;font-size:.92rem;color:var(--muted)}

.t18opts .ctl.chk{cursor:pointer}

.t18opts select{font:inherit;padding:.2rem .5rem;border:1px solid var(--line);border-radius:.5rem;background:var(--panel);color:var(--ink)}

.field{display:flex;flex-direction:column;gap:.3rem}

.field>span{font-family:var(--mono);font-size:.64rem;text-transform:uppercase;letter-spacing:.1em;color:var(--faint)}

.field input,.field select,.field textarea{border:1px solid var(--line);border-radius:6px;background:var(--panel-2);color:var(--ink);font:inherit;font-size:.92rem;padding:.55rem .7rem;outline:0}

.field textarea{min-height:86px;resize:vertical;line-height:1.5}

.field input:focus,.field select:focus,.field textarea:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}

.ctl.wide{flex:1;min-width:280px}

.ctl.wide textarea{font-family:var(--mono);font-size:.85rem;padding:.55rem .7rem;border:1px solid var(--line);border-radius:6px;background:var(--panel);color:var(--ink);resize:vertical;min-height:74px}

.ctl.wide textarea:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}

.gobar .go{font-family:var(--display);font-weight:600;font-size:.95rem;color:#fff;background:var(--accent);border:0;border-radius:9px;padding:.6rem 1.5rem;cursor:pointer;box-shadow:0 1px 0 var(--accent-ink)}

.gobar .go:hover{background:var(--accent-ink)}

.tbtn:focus-visible,.go:focus-visible{outline:2px solid var(--accent);outline-offset:2px}

.t17opts .ctl{display:flex;align-items:center;gap:.4rem;font-size:.92rem;color:var(--muted)}

.t17opts .ctl.chk{cursor:pointer}

.t17opts select{font:inherit;padding:.2rem .5rem;border:1px solid var(--line);border-radius:.5rem;background:var(--panel);color:var(--ink)}

.rwbtns .go{font-family:var(--display);font-weight:600;font-size:.95rem;color:#fff;background:var(--accent);border:0;border-radius:9px;padding:.65rem 1.6rem;cursor:pointer;box-shadow:0 1px 0 var(--accent-ink)}

.rwbtns .go:hover{background:var(--accent-ink)}

.rwbtns .go:disabled{opacity:.55;cursor:not-allowed}

.tbtn:focus-visible,.go:focus-visible,.load:focus-visible{outline:2px solid var(--accent);outline-offset:2px}

.t14opts .ctl{display:flex;align-items:center;gap:.4rem;font-size:.92rem;color:var(--muted)}

.t14opts select{font:inherit;padding:.22rem .5rem;border:1px solid var(--line);border-radius:.5rem;background:var(--panel);color:var(--ink)}

.tbtn:focus-visible,.mode:focus-visible{outline:2px solid var(--accent);outline-offset:2px}

.titlemin input{accent-color:var(--accent)}

.optrow .ctl{display:flex;align-items:center;gap:.4rem;font-size:.92rem;color:var(--muted)}

.optrow .ctl.chk{cursor:pointer}

.optrow select{font:inherit;padding:.22rem .5rem;border:1px solid var(--line);border-radius:.5rem;background:var(--panel);color:var(--ink)}

.tbtn:focus-visible,textarea:focus-visible,select:focus-visible,a:focus-visible,input:focus-visible,.tchip:focus-visible{box-shadow:0 0 0 3px var(--accent-soft)}

.trayin input{flex:1;border:0;outline:0;background:transparent;font-family:var(--sans);font-size:1.15rem;color:var(--ink);min-width:0}

.sym{font-size:1.35rem;line-height:1;width:2.4rem;height:2.4rem;display:flex;align-items:center;justify-content:center;background:var(--panel);border:1px solid var(--line);border-radius:7px;cursor:pointer;transition:all .12s;user-select:none}

.voicewrap textarea{width:100%;min-height:170px;resize:vertical;border:1px solid var(--line);border-radius:var(--r);background:var(--panel);color:var(--ink);font-family:var(--sans);font-size:1.02rem;line-height:1.6;padding:1rem 1.1rem;outline:0}

.voicewrap textarea:focus{border-color:var(--accent)}

.tbtn:focus-visible,textarea:focus-visible,select:focus-visible,a:focus-visible,input:focus-visible{box-shadow:0 0 0 3px var(--accent-soft)}

.fin textarea{width:100%;border:0;outline:0;background:transparent;color:var(--ink);font-family:var(--sans);font-size:1.1rem;line-height:1.6;padding:1.1rem 1.2rem;min-height:90px;resize:vertical}

.tbtn:focus-visible,.scopy:focus-visible{outline:2px solid var(--accent);outline-offset:2px}

.t19opts .ctl{display:flex;align-items:center;gap:.4rem;font-size:.92rem;color:var(--muted)}

.t19opts select{font:inherit;padding:.2rem .5rem;border:1px solid var(--line);border-radius:.5rem;background:var(--panel);color:var(--ink)}

.wpmcalc .ctl{flex:1 1 130px}

.wpmcalc input[type=number]{width:100%}

.wpmpaste textarea{width:100%;min-height:90px}

.diffin textarea{width:100%;min-height:230px;resize:vertical;border:0;outline:0;background:transparent;color:var(--ink);font-family:var(--mono);font-size:.9rem;line-height:1.6;padding:1rem}

.dl .ln{color:var(--faint);min-width:2.6em;text-align:right;margin-right:.55rem;font-family:var(--mono);font-size:.82em;-webkit-user-select:none;user-select:none}

.ctl{display:flex;align-items:center;gap:.4rem;font-size:.92rem;color:var(--muted)}

.ctl.chk{cursor:pointer}

.ctl select{font:inherit;padding:.22rem .5rem;border:1px solid var(--line);border-radius:.5rem;background:var(--panel);color:var(--ink)}

.files input[type=file]{font:inherit;font-size:.84rem;color:var(--muted);max-width:100%}

a.tbtn.on,button.tbtn.on,.tbtn.on{color:var(--accent);border-color:var(--accent);background:var(--accent-soft)}

.chkwrap textarea{flex:1;width:100%;resize:vertical;border:0;background:transparent;color:var(--ink);font-family:var(--sans);font-size:1rem;line-height:1.7;padding:.9rem;outline:0;min-height:240px}

.tbtn:focus-visible,.fixbtn:focus-visible{outline:2px solid var(--accent);outline-offset:2px}

.t16opts .ctl{display:flex;align-items:center;gap:.4rem;font-size:.92rem;color:var(--muted)}

.t16opts .ctl.chk{cursor:pointer}

.t16opts select{font:inherit;padding:.2rem .5rem;border:1px solid var(--line);border-radius:.5rem;background:var(--panel);color:var(--ink)}

.filerow input[type=file]{font-family:var(--sans);font-size:.82rem;color:var(--ink)}

.filerow input[type=file]::file-selector-button{font-family:var(--mono);font-size:.72rem;color:var(--muted);background:var(--panel);border:1px solid var(--line);border-radius:5px;padding:.34rem .7rem;cursor:pointer;margin-right:.6rem}

.filerow input[type=file]::file-selector-button:hover{color:var(--accent);border-color:var(--accent)}

.edopts .ctl{display:flex;align-items:center;gap:.4rem}

.edopts .ctl.chk{cursor:pointer}

.edopts select,.edopts input[type=text]{font:inherit;padding:.2rem .45rem;border:1px solid var(--line);border-radius:.45rem;background:var(--panel);color:var(--ink)}

.gutter{flex:0 0 auto;min-width:2.6em;padding:1rem .55rem 1rem 0;margin:0;text-align:right;font-family:var(--mono);font-size:.95rem;line-height:1.7;color:var(--faint);background:var(--panel-2);white-space:pre;overflow:hidden;-webkit-user-select:none;user-select:none}

.ctl-file input[type=file]{font-family:var(--sans);font-size:.82rem;color:var(--ink);max-width:230px}

.field input,.field textarea{border:1px solid var(--line);border-radius:6px;background:var(--panel-2);color:var(--ink);font:inherit;font-size:.92rem;padding:.55rem .7rem;outline:0}

.field input:focus,.field textarea:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}

.search input{width:100%;border:1px solid var(--line);border-radius:11px;background:var(--panel);padding:.85rem 1.1rem;font-family:var(--sans);font-size:1.02rem;color:var(--ink);outline:0}

.search input:focus{border-color:var(--accent);box-shadow:0 0 0 4px var(--accent-soft)}

.genwrap .io textarea{min-height:120px}

.io textarea{flex:1;width:100%;border:0;outline:0;background:transparent;color:var(--ink);font-family:var(--sans);font-size:1.02rem;line-height:1.7;padding:1.2rem;min-height:200px;resize:vertical}

.ctl.chk{flex-direction:row;align-items:center;gap:.5rem}

.filezone input[type=file]{font-family:var(--mono);font-size:.85rem;color:var(--ink);max-width:100%}

.filezone input[type=file]::file-selector-button{font-family:var(--mono);font-size:.78rem;padding:.55rem .85rem;margin-right:.75rem;border:1px solid var(--line);border-radius:6px;background:var(--panel-2);color:var(--ink);cursor:pointer;transition:all .14s}

.filezone input[type=file]::file-selector-button:hover{border-color:var(--accent);color:var(--accent)}

.vrange input[type=range]{accent-color:var(--accent)}

.t14opts .ctl.chk{cursor:pointer}

.t15opts .ctl{display:flex;align-items:center;gap:.4rem;font-size:.92rem;color:var(--muted)}

.t15opts select{font:inherit;padding:.22rem .5rem;border:1px solid var(--line);border-radius:.5rem;background:var(--panel);color:var(--ink)}

.sumctl input[type=range]{accent-color:var(--accent);width:160px}

/* Pass 4 form safety */
input,select,textarea,button{max-width:100%}
button,input[type=button],input[type=submit],input[type=reset]{font:inherit}
/* Pass 7: mobile-safe control row (TTS voice/speed/pitch etc.) — prevent horizontal overflow */
@media(max-width:560px){
  .ctrls{flex-wrap:wrap}
  .ctl,.ctl.wide{min-width:0;flex:1 1 140px}
  .ctl input[type=text],.ctl input[type=number],.ctl select,select#voice{min-width:0;max-width:100%;box-sizing:border-box}
}
