/* ─────────────────────────────────────────────────────────────
   SE Tax Calculator — v1.4.0 stylesheet
   Loaded once via wp_enqueue_style (called inside shortcode render),
   ensuring styles load regardless of where the shortcode is placed.
   All selectors are scoped to avoid conflicts with themes/other plugins.
───────────────────────────────────────────────────────────── */

/* ── Reset: only affects .ftc-wrap and children ──────────── */
.ftc-wrap *,.ftc-wrap *::before,.ftc-wrap *::after{box-sizing:border-box}

/* ── CSS custom properties — override via theme vars ─────── */
.ftc-wrap{
  --ftc-accent:var(--accent,#1a5c3a);
  --ftc-text:var(--contrast,#222222);
  --ftc-text-2:var(--contrast-2,#575760);
  --ftc-text-3:var(--contrast-3,#b2b2be);
  --ftc-bg:var(--base-2,#f7f8f9);
  --ftc-bg-card:var(--base-3,#ffffff);
  --ftc-bg-input:var(--base,#f0f0f0);
  --ftc-border:rgba(0,0,0,0.09);
  --ftc-accent-pale:rgba(26,92,58,0.10);
  --ftc-warn:#92400e;
  --ftc-warn-bg:#fef3c7;
  --ftc-r:6px;
  --ftc-font:var(--body-font-family,system-ui,sans-serif);
  font-family:var(--ftc-font);
  color:var(--ftc-text);
  line-height:1.6;
  padding:0
}

/* ── Utility ──────────────────────────────────────────────── */
.ftc-section-label{font-size:.7rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--ftc-text-3);margin:0 0 16px}
.ftc-mt-sm{margin-top:12px}
.ftc-badge{display:inline-block;background:var(--ftc-accent-pale);color:var(--ftc-accent);font-size:.72rem;font-weight:700;letter-spacing:.07em;text-transform:uppercase;padding:3px 10px;border-radius:100px;margin-bottom:12px}

/* ── Rate pills — scoped to .ftc-wrap (calculator widget) ── */
.ftc-wrap .ftc-rate-row{display:flex;flex-wrap:wrap;gap:10px;margin:20px 0}
.ftc-wrap .ftc-rate-pill{flex:1;min-width:110px;background:var(--ftc-bg-card);border:1px solid var(--ftc-border);border-radius:var(--ftc-r);padding:14px 16px}
.ftc-wrap .ftc-rate-pill-val{font-size:1.5rem;font-weight:700;color:var(--ftc-accent);line-height:1;margin-bottom:4px}
.ftc-wrap .ftc-rate-pill-lbl{font-size:.75rem;color:var(--ftc-text-2);line-height:1.35}

/* ── Card / grid ──────────────────────────────────────────── */
.ftc-card{background:var(--ftc-bg-card);border:1px solid var(--ftc-border);border-radius:var(--ftc-r);padding:24px;margin-bottom:20px}
.ftc-grid{display:grid;grid-template-columns:1fr 1fr 1fr;gap:16px;margin-bottom:20px}
@media(max-width:680px){.ftc-grid{grid-template-columns:1fr 1fr}}
@media(max-width:460px){.ftc-grid{grid-template-columns:1fr}}
.ftc-field{display:flex;flex-direction:column;gap:6px}

/* ── Labels & inputs ─────────────────────────────────────── */
.ftc-label{font-size:.82rem;font-weight:600;color:var(--ftc-text);display:flex;align-items:center;gap:6px}
.ftc-label-hint{font-weight:400;color:var(--ftc-text-3);font-size:.75rem}
.ftc-input-wrap{position:relative}
.ftc-prefix{position:absolute;left:12px;top:50%;transform:translateY(-50%);font-size:.88rem;color:var(--ftc-text-3);pointer-events:none;font-weight:500}
.ftc-input{width:100%;padding:9px 12px 9px 30px;background:var(--ftc-bg-input);border:1.5px solid transparent;border-radius:var(--ftc-r);font-family:var(--ftc-font);font-size:.9rem;color:var(--ftc-text);outline:none;transition:border-color .18s,background .18s;-moz-appearance:textfield}
.ftc-input::-webkit-outer-spin-button,.ftc-input::-webkit-inner-spin-button{-webkit-appearance:none}
.ftc-input:focus{border-color:var(--ftc-accent);background:var(--ftc-bg-card)}
.ftc-input.ftc-no-prefix{padding-left:12px}
.ftc-input.ftc-error{border-color:#dc2626}
.ftc-select{width:100%;padding:9px 12px;background:var(--ftc-bg-input);border:1.5px solid transparent;border-radius:var(--ftc-r);font-family:var(--ftc-font);font-size:.9rem;color:var(--ftc-text);outline:none;cursor:pointer;transition:border-color .18s}
.ftc-select:focus{border-color:var(--ftc-accent);background:var(--ftc-bg-card)}

/* ── Retirement type buttons ──────────────────────────────── */
.ftc-ret-type{display:flex;gap:8px}
.ftc-ret-btn{flex:1;padding:7px;background:var(--ftc-bg-input);border:1.5px solid transparent;border-radius:var(--ftc-r);font-family:var(--ftc-font);font-size:.78rem;font-weight:600;color:var(--ftc-text-2);cursor:pointer;transition:all .18s}
.ftc-ret-btn.active{background:var(--ftc-accent-pale);border-color:var(--ftc-accent);color:var(--ftc-accent)}

/* ── Collapsible toggle ───────────────────────────────────── */
.ftc-toggle-row{display:flex;align-items:center;justify-content:space-between;padding:12px 0;border-top:1px solid var(--ftc-border);margin-top:8px;cursor:pointer;user-select:none}
.ftc-toggle-row-label{font-size:.82rem;font-weight:600;color:var(--ftc-text-2);display:flex;align-items:center;gap:6px}
.ftc-toggle-icon{width:16px;height:16px;color:var(--ftc-text-3);transition:transform .22s;flex-shrink:0}
.ftc-toggle-row.open .ftc-toggle-icon{transform:rotate(180deg)}
.ftc-collapsible{overflow:hidden;max-height:0;transition:max-height .3s cubic-bezier(.4,0,.2,1)}
.ftc-collapsible.open{max-height:1200px}
.ftc-collapsible-inner{padding:12px 0 4px}

/* ── Buttons ──────────────────────────────────────────────── */
.ftc-btn{width:100%;padding:12px 20px;background:var(--ftc-accent);color:#fff;border:none;border-radius:var(--ftc-r);font-family:var(--ftc-font);font-size:.92rem;font-weight:700;cursor:pointer;transition:opacity .18s,transform .1s;letter-spacing:.01em}
.ftc-btn:hover{opacity:.88}
.ftc-btn:active{transform:scale(.99)}
.ftc-btn-row{display:flex;gap:10px;margin-top:20px}
.ftc-btn-secondary{padding:12px 20px;background:var(--ftc-bg-input);color:var(--ftc-text-2);border:none;border-radius:var(--ftc-r);font-family:var(--ftc-font);font-size:.88rem;font-weight:600;cursor:pointer;transition:background .18s;white-space:nowrap}
.ftc-btn-secondary:hover{background:var(--ftc-border)}

/* ── Results panel ───────────────────────────────────────── */
.ftc-results{display:none}
.ftc-results.visible{display:block;animation:ftcFadeUp .35s ease forwards}
@keyframes ftcFadeUp{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}

/* ── Summary grid ─────────────────────────────────────────── */
.ftc-summary{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-bottom:20px}
.ftc-summary.has-balance{grid-template-columns:repeat(4,1fr)}
@media(max-width:620px){.ftc-summary,.ftc-summary.has-balance{grid-template-columns:1fr 1fr}}
.ftc-summary-item{background:var(--ftc-bg-card);border:1px solid var(--ftc-border);border-radius:var(--ftc-r);padding:16px;text-align:center}
.ftc-summary-item.ftc-highlight{background:var(--ftc-accent);border-color:var(--ftc-accent)}
.ftc-summary-val{font-size:1.4rem;font-weight:700;color:var(--ftc-accent);line-height:1.1;margin-bottom:4px}
.ftc-summary-item.ftc-highlight .ftc-summary-val{color:#fff}
.ftc-summary-lbl{font-size:.73rem;color:var(--ftc-text-2);font-weight:600;text-transform:uppercase;letter-spacing:.05em}
.ftc-summary-item.ftc-highlight .ftc-summary-lbl{color:rgba(255,255,255,.75)}

/* ── Breakdown table ─────────────────────────────────────── */
.ftc-breakdown{background:var(--ftc-bg-card);border:1px solid var(--ftc-border);border-radius:var(--ftc-r);overflow:hidden;margin-bottom:20px}
.ftc-breakdown-row{display:flex;align-items:center;justify-content:space-between;padding:12px 18px;gap:12px;border-bottom:1px solid var(--ftc-border)}
.ftc-breakdown-row:last-child{border-bottom:none}
.ftc-breakdown-row.ftc-total-row{background:var(--ftc-accent-pale);font-weight:700}
.ftc-brow-left{flex:1}
.ftc-brow-main{font-size:.88rem;font-weight:600;color:var(--ftc-text)}
.ftc-brow-sub{font-size:.75rem;color:var(--ftc-text-3);margin-top:1px}
.ftc-brow-right{font-size:.95rem;font-weight:700;white-space:nowrap}
.ftc-brow-right.ftc-neg{color:#dc2626}
.ftc-brow-right.ftc-pos{color:var(--ftc-accent)}
.ftc-brow-right.ftc-neutral{color:var(--ftc-text-2)}

/* ── Donut chart ─────────────────────────────────────────── */
.ftc-chart-wrap{background:var(--ftc-bg-card);border:1px solid var(--ftc-border);border-radius:var(--ftc-r);padding:24px;display:flex;align-items:center;gap:32px;flex-wrap:wrap;margin-bottom:20px}
.ftc-donut-outer{flex-shrink:0;position:relative;width:130px;height:130px}
.ftc-donut-canvas{display:block}
.ftc-donut-center{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);text-align:center;pointer-events:none}
.ftc-donut-pct{font-size:1.25rem;font-weight:700;color:var(--ftc-text);line-height:1}
.ftc-donut-sub-lbl{font-size:.63rem;color:var(--ftc-text-3);font-weight:600;text-transform:uppercase;letter-spacing:.05em}
.ftc-legend{flex:1;display:flex;flex-direction:column;gap:10px;min-width:180px}
.ftc-legend-item{display:flex;align-items:center;gap:10px}
.ftc-legend-dot{width:10px;height:10px;border-radius:50%;flex-shrink:0}
.ftc-legend-text{flex:1}
.ftc-legend-name{font-size:.8rem;color:var(--ftc-text-2);font-weight:500}
.ftc-legend-val{font-size:.88rem;font-weight:700;color:var(--ftc-text)}

/* ── Quarterly cards ─────────────────────────────────────── */
.ftc-quarterly{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-bottom:8px}
@media(max-width:520px){.ftc-quarterly{grid-template-columns:repeat(2,1fr)}}
.ftc-q-card{background:var(--ftc-bg-card);border:1px solid var(--ftc-border);border-radius:var(--ftc-r);padding:14px 12px;text-align:center;transition:border-color .18s}
.ftc-q-card:hover{border-color:var(--ftc-accent)}
.ftc-q-label{font-size:.68rem;font-weight:700;letter-spacing:.07em;text-transform:uppercase;color:var(--ftc-text-3);margin-bottom:4px}
.ftc-q-date{font-size:.72rem;color:var(--ftc-text-3);margin-bottom:8px}
.ftc-q-amount{font-size:1.15rem;font-weight:700;color:var(--ftc-accent)}

/* ── Set-aside banner ────────────────────────────────────── */
.ftc-aside{display:flex;gap:12px;background:var(--ftc-warn-bg);border-left:3px solid #f59e0b;border-radius:var(--ftc-r);padding:14px 16px;margin-bottom:20px}
.ftc-aside-icon{font-size:1rem;flex-shrink:0;margin-top:1px}
.ftc-aside-text{font-size:.82rem;color:var(--ftc-warn);line-height:1.55}
.ftc-aside-text strong{font-weight:700}

/* ── Print / misc ────────────────────────────────────────── */
.ftc-print-row{display:flex;justify-content:flex-end;margin-bottom:8px}
.ftc-print-btn{display:flex;align-items:center;gap:6px;background:none;border:1px solid var(--ftc-border);border-radius:var(--ftc-r);padding:7px 14px;font-family:var(--ftc-font);font-size:.78rem;font-weight:600;color:var(--ftc-text-2);cursor:pointer;transition:border-color .18s,color .18s}
.ftc-print-btn:hover{border-color:var(--ftc-accent);color:var(--ftc-accent)}
.ftc-disclaimer{background:var(--ftc-bg-input);border-left:3px solid var(--ftc-text-3);border-radius:var(--ftc-r);padding:12px 16px;font-size:.78rem;color:var(--ftc-text-3);line-height:1.6;margin:24px 0}
.ftc-disclaimer strong{color:var(--ftc-text-2)}

/* ── Retirement toggle panel ─────────────────────────────── */
.ftc-ret-toggle-row{display:flex;align-items:center;justify-content:space-between;padding:12px 14px;background:var(--ftc-bg-input);border-radius:var(--ftc-r);margin-bottom:14px;gap:12px}
.ftc-ret-toggle-label{font-size:.85rem;font-weight:600;color:var(--ftc-text);line-height:1.3}
.ftc-ret-toggle-sublabel{font-size:.75rem;color:var(--ftc-text-3);font-weight:400;margin-top:2px}
.ftc-switch{position:relative;width:40px;height:22px;flex-shrink:0}
.ftc-switch input{opacity:0;width:0;height:0;position:absolute}
.ftc-switch-track{position:absolute;inset:0;background:var(--ftc-border);border-radius:100px;cursor:pointer;transition:background .2s;border:1.5px solid rgba(0,0,0,.1)}
.ftc-switch input:checked+.ftc-switch-track{background:var(--ftc-accent);border-color:var(--ftc-accent)}
.ftc-switch-track::after{content:'';position:absolute;width:15px;height:15px;background:white;border-radius:50%;top:50%;left:3px;transform:translateY(-50%);transition:left .2s;box-shadow:0 1px 3px rgba(0,0,0,.2)}
.ftc-switch input:checked+.ftc-switch-track::after{left:19px}
.ftc-ret-body{overflow:hidden;max-height:0;transition:max-height .3s cubic-bezier(.4,0,.2,1)}
.ftc-ret-body.open{max-height:500px}
.ftc-trad-note{font-size:.72rem;color:var(--ftc-text-3);line-height:1.45;margin-top:3px}

/* ── Validation messages ─────────────────────────────────── */
.ftc-error-msg{font-size:.75rem;color:#dc2626;margin-top:3px;display:none}
.ftc-error-msg.show{display:block}

/* ═══════════════════════════════════════════════════════════
   Educational content (.setc-content)
   All sub-selectors fully scoped to avoid theme conflicts.
═══════════════════════════════════════════════════════════ */
.setc-content{max-width:860px;margin:40px auto 0;font-family:system-ui,sans-serif;color:#222;line-height:1.7}
.setc-content h2.ftc-h{font-size:1.35rem;font-weight:700;margin:36px 0 10px;color:#111}
.setc-content h3.ftc-h{font-size:1.05rem;font-weight:700;margin:24px 0 8px;color:#111}
.setc-content p.ftc-p{font-size:.93rem;color:#444;margin:0 0 14px}
.setc-content .ftc-mt{margin-top:40px}

/* Rate pills in educational content — fully scoped (fixes theme bleed) */
.setc-content .ftc-rate-row{display:flex;flex-wrap:wrap;gap:10px;margin:20px 0}
.setc-content .ftc-rate-pill{flex:1;min-width:110px;background:#fff;border:1px solid rgba(0,0,0,.09);border-radius:6px;padding:14px 16px}
.setc-content .ftc-rate-pill-val{font-size:1.5rem;font-weight:700;color:#1a5c3a;line-height:1;margin-bottom:4px}
.setc-content .ftc-rate-pill-lbl{font-size:.75rem;color:#575760;line-height:1.35}

/* Formula box — scoped to .setc-content (fixes unscoped global selector) */
.setc-content .ftc-formula{background:#f0f6f2;border-left:4px solid #1a5c3a;border-radius:6px;padding:18px 20px;margin:18px 0;font-size:.88rem;color:#1a3d28;line-height:1.8}
.setc-content .ftc-formula code{background:rgba(26,92,58,.12);border-radius:3px;padding:1px 6px;font-size:.85em}
.setc-content .ftc-formula em{color:#3b6e52}

/* FAQ — scoped to .setc-content (fixes unscoped global selector) */
.setc-content .ftc-faq-item{border-top:1px solid rgba(0,0,0,.08);padding:16px 0}
.setc-content .ftc-faq-q{font-size:.95rem;font-weight:700;color:#111;margin:0 0 8px;cursor:pointer;display:flex;justify-content:space-between;align-items:center;gap:8px;user-select:none}
.setc-content .ftc-faq-q::after{content:'▲';font-size:.65rem;color:#aaa;flex-shrink:0;transition:transform .2s}
.setc-content .ftc-faq-q[aria-expanded="false"]::after{transform:rotate(180deg)}
.setc-content .ftc-faq-body{font-size:.88rem;color:#444;line-height:1.65}

/* ── Print ───────────────────────────────────────────────── */
/* Print styles intentionally minimal — the Save/Print button opens an
   isolated window containing only the results, so window.print() is never
   called on the parent page.  This block only handles the rare case where
   a user prints the parent page via the browser menu directly. */
@media print{
  .ftc-card.ftc-input-card,.ftc-btn-row,.ftc-print-row,.ftc-badge{display:none!important}
  .ftc-results{display:block!important}
  .ftc-aside{display:none!important}
  .ftc-wrap{box-shadow:none}
}
