/* ============================================================
   Utilities Bunker — Payback Period Calculator (v2.1)
   File: /assets/css/modules/calculators/financialcalculators/payback-period-calculator.v2.1.css
   Purpose:
   - Tool-only layout and styling for Payback Period Calculator
   - Mobile-first, accessible, fast, deterministic
   - No changes to ub-toolkit.v2.1.css
   ============================================================ */

:root{
  --pp-radius: 16px;
  --pp-gap: 14px;
  --pp-soft: rgba(0,0,0,.06);
  --pp-soft-2: rgba(0,0,0,.035);
  --pp-accent: rgba(249,58,19,.10);
  --pp-accent-strong: rgba(249,58,19,.18);
  --pp-success-soft: rgba(34,197,94,.12);
  --pp-warning-soft: rgba(245,158,11,.12);
}

html.ub-theme-dark:root{
  --pp-soft: rgba(255,255,255,.08);
  --pp-soft-2: rgba(255,255,255,.04);
  --pp-accent: rgba(249,58,19,.16);
  --pp-accent-strong: rgba(249,58,19,.24);
  --pp-success-soft: rgba(34,197,94,.16);
  --pp-warning-soft: rgba(245,158,11,.16);
}

/* Header */
.ub-head-wrap{
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  gap:12px;
  flex-wrap:wrap;
}

.ub-tool-title{
  margin:0;
  font-size:var(--ub-fs-5);
}

.ub-tool-subtitle{
  margin:6px 0 0;
  max-width:72ch;
}

/* How to use */
.ub-steps{
  margin:0;
  padding-left:18px;
}

.ub-steps li{
  margin:0 0 8px;
}

.ub-steps li:last-child{
  margin-bottom:0;
}

/* Main layout */
.ub-payback-layout{
  display:grid;
  grid-template-columns:1.05fr .95fr;
  gap:var(--pp-gap);
  align-items:start;
}

@media (max-width: 980px){
  .ub-payback-layout{
    grid-template-columns:1fr;
  }
}

/* Panels */
.ub-panel{
  background:var(--ub-surface-2);
  border:1px solid var(--ub-border);
  border-radius:var(--pp-radius);
  padding:12px;
}

.ub-panel--hero{
  background:
    linear-gradient(180deg, var(--ub-surface-2), var(--ub-card-bg));
}

.ub-panel-head{
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  gap:10px;
  flex-wrap:wrap;
  margin-bottom:10px;
}

.ub-eyebrow{
  font-size:12px;
  font-weight:950;
  letter-spacing:.08em;
  text-transform:uppercase;
  color:var(--ub-muted);
  margin-bottom:4px;
}

.ub-panel-title{
  margin:0;
  font-size:clamp(18px, 1.1rem + .45vw, 24px);
  font-weight:950;
  letter-spacing:-.02em;
}

.ub-panel-subtitle{
  margin:6px 0 0;
  color:var(--ub-muted);
  font-size:var(--ub-fs-1);
  max-width:60ch;
}

/* KPI tiles */
.ub-kpis{
  display:grid;
  grid-template-columns:repeat(2, minmax(110px, 1fr));
  gap:8px;
  min-width:min(100%, 360px);
}

.ub-kpi{
  padding:10px 12px;
  border-radius:14px;
  border:1px solid var(--ub-border);
  background:var(--ub-card-bg);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.04);
}

.ub-kpi .ub-k{
  font-size:11px;
  font-weight:900;
  text-transform:uppercase;
  letter-spacing:.05em;
  color:var(--ub-muted);
}

.ub-kpi .ub-v{
  margin-top:4px;
  font-family:var(--ub-mono);
  font-weight:950;
  font-size:14px;
  line-height:1.35;
  overflow-wrap:anywhere;
}

/* Progress */
.ub-progress-wrap{
  margin-top:4px;
  margin-bottom:12px;
  padding:12px;
  border-radius:14px;
  border:1px solid var(--ub-border);
  background:var(--ub-card-bg);
}

.ub-progress-meta{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:10px;
  margin-bottom:8px;
  font-size:13px;
  font-weight:900;
}

.ub-progress{
  width:100%;
  min-height:16px;
  border-radius:999px;
  overflow:hidden;
  border:1px solid var(--ub-border);
  background:var(--ub-surface-3);
}

.ub-progress-bar{
  width:0%;
  min-height:16px;
  border-radius:999px;
  background:linear-gradient(92deg,var(--ub-btn-grad-a),var(--ub-btn-grad-b));
  transition:width .18s ease;
}

@media (prefers-reduced-motion: reduce){
  .ub-progress-bar{
    transition:none;
  }
}

/* Mode pills */
.ub-mode-pills{
  display:flex;
  flex-wrap:wrap;
  gap:10px;
  margin-top:12px;
}

.ub-mode-pills .ub-chip{
  min-height:44px;
  padding:10px 14px;
}

/* Mini cards */
.ub-mini-card-grid{
  display:grid;
  grid-template-columns:1fr;
  gap:10px;
  margin-top:12px;
}

.ub-mini-card{
  padding:12px;
  border:1px solid var(--ub-border);
  border-radius:14px;
  background:var(--ub-card-bg);
}

.ub-mini-label{
  font-size:11px;
  font-weight:950;
  text-transform:uppercase;
  letter-spacing:.05em;
  color:var(--ub-muted);
  margin-bottom:6px;
}

.ub-mini-value{
  font-size:13px;
  line-height:1.5;
  font-weight:800;
  overflow-wrap:anywhere;
}

/* Presets */
.ub-preset-row{
  display:flex;
  flex-wrap:wrap;
  gap:10px;
  margin-top:12px;
}

.ub-preset-row .ub-chip{
  min-height:44px;
  padding:10px 12px;
}

/* Form layout */
.ub-form{
  display:block;
}

.ub-field--full{
  grid-column:1 / -1;
}

.ub-divider{
  border:none;
  border-top:1px solid var(--ub-border);
  margin:14px 0;
}

.ub-section-top{
  display:flex;
  justify-content:space-between;
  align-items:flex-start;
  gap:10px;
  flex-wrap:wrap;
  margin-bottom:12px;
}

.ub-section-title-main{
  margin:0;
  font-size:var(--ub-fs-2);
  font-weight:950;
  letter-spacing:-.01em;
}

.ub-section-note{
  display:inline-flex;
  align-items:center;
  min-height:32px;
  padding:6px 10px;
  border-radius:999px;
  border:1px solid var(--ub-border);
  background:var(--ub-card-bg);
  color:var(--ub-muted);
  font-size:12px;
  font-weight:900;
}

/* Cash flow card */
.ub-cashflow-card{
  border-radius:16px;
  overflow:hidden;
}

.ub-cashflow-head{
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  gap:10px;
  flex-wrap:wrap;
  padding:12px;
  border-bottom:1px solid var(--ub-border);
  background:var(--ub-surface-2);
}

.ub-cashflow-actions{
  display:flex;
  flex-wrap:wrap;
  gap:10px;
}

.ub-cashflow-table-wrap{
  width:100%;
  overflow-x:auto;
  -webkit-overflow-scrolling:touch;
}

.ub-cashflow-table-wrap .ub-table{
  min-width:620px;
  border:none;
  border-radius:0;
}

.ub-year-tag{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-width:38px;
  min-height:32px;
  padding:4px 10px;
  border-radius:999px;
  border:1px solid var(--ub-border);
  background:var(--ub-card-bg);
  font-weight:950;
  font-size:12px;
}

.ub-cashflow-input{
  width:100%;
}

.ub-cumulative-placeholder{
  font-family:var(--ub-mono);
  font-weight:900;
  font-size:13px;
  overflow-wrap:anywhere;
}

/* Actions */
.ub-actions{
  display:flex;
  flex-wrap:wrap;
  gap:10px;
  align-items:center;
}

/* Work area */
.ub-work{
  font-family:var(--ub-mono);
  font-size:13px;
  line-height:1.6;
  white-space:pre-wrap;
  overflow-wrap:anywhere;
}

/* Formula list */
.ub-formula-list{
  margin:0;
  padding-left:18px;
}

.ub-formula-list li{
  margin-bottom:8px;
}

.ub-formula-list li:last-child{
  margin-bottom:0;
}

/* FAQ */
.ub-faq-q{
  margin:14px 0 6px;
  font-size:var(--ub-fs-2);
  font-weight:900;
}

.ub-faq-a{
  margin:0;
}

/* Accessibility/focus polish */
.ub-collapsible summary{
  min-height:44px;
  display:flex;
  align-items:center;
}

.ub-collapsible summary:focus{
  outline:none;
  box-shadow:0 0 0 4px var(--ub-focus);
  border-radius:12px;
}

.ub-btn--block{
  width:100%;
}

/* Better wrapping for right rail items */
.ub-related-list a,
.ub-common-list li{
  overflow-wrap:anywhere;
  word-break:break-word;
}

/* Field hint/error consistency */
.hint{
  margin-top:6px;
  font-size:12px;
  color:var(--ub-muted);
}

.ub-inline-error{
  margin-top:6px;
  font-size:12px;
  color:var(--ub-danger);
  font-weight:800;
  min-height:16px;
}

/* Mobile polish */
@media (max-width: 640px){
  .ub-kpis{
    grid-template-columns:1fr 1fr;
    min-width:100%;
  }

  .ub-panel,
  .ub-card{
    overflow:hidden;
  }

  .ub-cashflow-actions{
    width:100%;
  }

  .ub-cashflow-actions .ub-btn{
    flex:1 1 180px;
  }

  .ub-mode-pills .ub-chip,
  .ub-preset-row .ub-chip{
    width:100%;
    justify-content:center;
  }
}

@media (max-width: 520px){
  .ub-head-wrap{
    flex-direction:column;
    align-items:stretch;
  }

  .ub-kpis{
    grid-template-columns:1fr;
  }

  .ub-progress-meta{
    flex-direction:column;
    align-items:flex-start;
  }

  .ub-section-top{
    flex-direction:column;
  }
}

/* High contrast separation in dark mode */
html.ub-theme-dark .ub-panel,
html.ub-theme-dark .ub-mini-card,
html.ub-theme-dark .ub-progress-wrap,
html.ub-theme-dark .ub-kpi,
html.ub-theme-dark .ub-year-tag{
  box-shadow:inset 0 1px 0 rgba(255,255,255,.03);
}

/* Touch target polish */
.ub-chip,
.ub-btn,
.ub-collapsible summary,
.ub-field input,
.ub-field select{
  min-height:44px;
}

/* Optional subtle emphasis blocks if JS sets state classes later */
.ub-is-success{
  background:var(--pp-success-soft);
}

.ub-is-warning{
  background:var(--pp-warning-soft);
}

.ub-is-accent{
  background:var(--pp-accent);
  border-color:rgba(249,58,19,.30);
}