/* Audio-effect free tools (432Hz, 8D, bass, reverse, volume, noise).
   Layered on top of /freetools/convert/convert.css, which supplies the
   .cvt- card system and the light toolfoot. */

.fx-opts { display:none; grid-template-columns:repeat(auto-fit, minmax(190px, 1fr)); gap:14px; margin-top:16px; }
.fx-opts .cvt-opt select { cursor:pointer; }

.fx-result { display:none; margin-top:16px; }
.fx-result audio { width:100%; display:block; }
.fx-result-h { font-family:'Space Mono',monospace; font-size:11px; letter-spacing:.12em; text-transform:uppercase; color:var(--text-mute); margin:0 0 8px; }
.fx-note { display:none; margin:10px 0 0; font:500 13px/1.55 'Inter',sans-serif; color:var(--text-dim); background:var(--bg-card); border:1px solid var(--border); border-radius:10px; padding:10px 14px; }

.fx-hint { margin:14px 0 0; font:500 12.5px/1.55 'Inter',sans-serif; color:var(--text-mute); text-align:center; }

.fx-copy ul { margin:0 0 12px; padding-left:20px; color:var(--text-dim); font-size:15px; line-height:1.65; }
.fx-copy li { margin-bottom:6px; }
.fx-howto ol { margin:0 0 12px; padding-left:20px; color:var(--text-dim); font-size:15px; line-height:1.65; }
.fx-howto li { margin-bottom:6px; }

/* Post-download offer. The download always fires FIRST; this never gates
   the file, it only follows it. Mirrors the text to speech page. */
.fx-modal { position:fixed; inset:0; z-index:200; display:none; align-items:center; justify-content:center; padding:20px;
  background:rgba(24,18,40,.55); backdrop-filter:blur(6px); -webkit-backdrop-filter:blur(6px); }
.fx-modal.open { display:flex; }
.fx-modal-card { position:relative; width:100%; max-width:460px; border-radius:22px; padding:1px;
  background:linear-gradient(135deg, rgba(111,91,211,.85), rgba(193,58,239,.6));
  box-shadow:0 40px 90px -30px rgba(24,18,40,.6); animation:fxPop .28s cubic-bezier(.22,1,.36,1); }
@keyframes fxPop { from { opacity:0; transform:translateY(14px) scale(.97); } to { opacity:1; transform:none; } }
.fx-modal-in { border-radius:21px; background:var(--bg-elev); padding:30px 28px 26px; text-align:center; max-height:calc(100vh - 40px); overflow-y:auto; box-sizing:border-box; }
.fx-modal-x { position:absolute; top:10px; right:10px; width:32px; height:32px; border-radius:50%; border:none; cursor:pointer;
  background:rgba(0,0,0,.06); color:var(--text-dim); font:600 15px 'Inter',sans-serif; line-height:1; z-index:2; }
.fx-modal-x:hover { background:rgba(0,0,0,.12); color:var(--text); }
html[data-theme="dark"] .fx-modal-x { background:rgba(255,255,255,.1); }
.fx-modal-tag { display:inline-block; font:700 10.5px 'Inter',sans-serif; letter-spacing:.14em; text-transform:uppercase;
  color:var(--accent); border:1px solid rgba(163,50,255,.3); border-radius:999px; padding:5px 12px; margin-bottom:14px; }
.fx-modal-in h3 { font-family:var(--font-display); font-size:25px; font-weight:600; color:var(--text); margin:0 0 10px; line-height:1.2; }
.fx-modal-in h3 em { font-style:italic; color:var(--accent); }
.fx-modal-in p { font:400 14px/1.62 'Inter',sans-serif; color:var(--text-dim); margin:0 0 18px; }
.fx-modal-list { text-align:left; margin:0 0 20px; padding:0; list-style:none; display:flex; flex-direction:column; gap:9px; }
.fx-modal-list li { display:flex; gap:9px; align-items:flex-start; font:500 13.5px/1.45 'Inter',sans-serif; color:var(--text); }
.fx-modal-list li b { color:var(--accent); flex:none; font-weight:700; }
.fx-modal-buy { display:block; width:100%; box-sizing:border-box; text-align:center; text-decoration:none;
  background:linear-gradient(135deg,#6F5BD3,#A332FF); color:#fff; font:700 15px 'Inter',sans-serif;
  border-radius:999px; padding:15px 24px; box-shadow:0 12px 30px -14px rgba(111,91,211,.8); transition:transform .15s ease; }
.fx-modal-buy:hover { transform:translateY(-2px); }
.fx-modal-sub { font:600 12.5px 'Inter',sans-serif; color:var(--text-dim); margin:12px 0 0; }
.fx-modal-sub a { color:var(--accent); text-decoration:none; }
.fx-optin { margin-top:18px; padding-top:16px; border-top:1px solid var(--border-soft); }
.fx-optin-h { font:500 12.5px 'Inter',sans-serif; color:var(--text-dim); margin:0 0 10px; }
.fx-optin-h strong { color:var(--text); }
.fx-optin-form { display:flex; gap:8px; }
.fx-optin-form input { flex:1; min-width:0; box-sizing:border-box; border-radius:999px; border:1px solid var(--card-border);
  background:var(--bg); color:var(--text); font:400 13px 'Inter',sans-serif; padding:11px 16px; outline:none; }
.fx-optin-form input:focus { border-color:var(--accent); }
.fx-optin-form button { flex:none; cursor:pointer; border-radius:999px; padding:11px 18px;
  font:700 13px 'Inter',sans-serif; background:var(--bg-card-hov); color:var(--text); border:1px solid var(--card-border); }
.fx-optin-form button:hover { border-color:var(--accent); color:var(--accent); }
.fx-optin-form button:disabled { opacity:.6; cursor:not-allowed; }
.fx-optin-msg { font:500 12px 'Inter',sans-serif; margin:9px 0 0; min-height:16px; color:var(--text-mute); }
.fx-optin-msg.ok { color:#16A34A; }
.fx-optin-msg.err { color:#C13AEF; }
.fx-modal-later { display:inline-block; margin-top:14px; background:none; border:none; cursor:pointer;
  font:500 12.5px 'Inter',sans-serif; color:var(--text-mute); text-decoration:underline; }

@media (max-width:640px){ .fx-opts{grid-template-columns:1fr;} .fx-modal-in{padding:26px 20px 22px;} }
