/* ==========================================================================
   QUOTARIDER — VISUALISATION LAYER v1
   Patterns ported from Xtallo (companies.css / career-calculator)
   Reuses Quotarider tokens from theme.css. Load AFTER theme.css.
   ========================================================================== */

/* ─────────────────────────────────────────────
   1. FUNNEL — tapering pipeline bars
   ───────────────────────────────────────────── */
.funnel{ display:flex; flex-direction:column; gap:10px; }
.funnel-row{ display:flex; align-items:center; gap:14px; }
.funnel-stage{
  width:130px; flex-shrink:0; text-align:right;
  font-size:.78rem; font-weight:600; color:var(--text-2);
}
.funnel-bar-container{ flex:1; position:relative; height:44px; display:flex; align-items:center; }
.funnel-bar{
  height:44px; border-radius:10px;
  display:flex; align-items:center; justify-content:space-between;
  padding:0 16px; font-size:.76rem; font-weight:700;
  transition:width .8s var(--ease), opacity .4s;
  position:relative; overflow:hidden;
  background:linear-gradient(90deg, var(--violet), var(--violet-deep));
  color:#fff;
  box-shadow:0 4px 20px rgba(139,92,246,.22);
}
.funnel-bar::after{
  content:""; position:absolute; inset:0;
  background:linear-gradient(90deg, transparent, rgba(255,255,255,.14), transparent);
  transform:translateX(-100%);
  animation:funnel-sheen 3s ease-in-out infinite;
}
@keyframes funnel-sheen{ 0%,60%{transform:translateX(-100%)} 100%{transform:translateX(100%)} }
.funnel-bar .fb-n{ font-variant-numeric:tabular-nums; }
.funnel-bar .fb-pct{ opacity:.75; font-weight:600; }
.funnel-row:nth-child(2) .funnel-bar{ opacity:.88; }
.funnel-row:nth-child(3) .funnel-bar{ opacity:.76; }
.funnel-row:nth-child(4) .funnel-bar{ opacity:.64; }
.funnel-drop{
  font-size:.72rem; color:var(--red); font-weight:600;
  width:56px; flex-shrink:0; font-variant-numeric:tabular-nums;
}

/* ─────────────────────────────────────────────
   2. ORBIT — AI engine, rings + nodes
   ───────────────────────────────────────────── */
.orbit{
  position:relative; width:100%; aspect-ratio:1/1;
  max-width:440px; margin-inline:auto;
  display:grid; place-items:center;
}
.orbit-ring{
  position:absolute; border-radius:50%;
  border:1px solid rgba(139,92,246,.16);
  animation:orbit-spin 26s linear infinite;
}
.orbit-ring.r1{ width:52%; height:52%; }
.orbit-ring.r2{ width:76%; height:76%; border-color:rgba(139,92,246,.11); animation-duration:40s; animation-direction:reverse; }
.orbit-ring.r3{ width:100%; height:100%; border-color:rgba(139,92,246,.07); animation-duration:60s; }
@keyframes orbit-spin{ to{ transform:rotate(360deg); } }

.orbit-core{
  position:relative; z-index:2;
  width:112px; height:112px; border-radius:50%;
  display:grid; place-items:center; text-align:center;
  background:radial-gradient(circle at 30% 30%, var(--violet), var(--violet-deep));
  box-shadow:0 0 60px rgba(139,92,246,.5), inset 0 2px 12px rgba(255,255,255,.18);
}
.orbit-core strong{ display:block; font-size:.94rem; font-weight:800; letter-spacing:-.02em; color:#fff; }
.orbit-core span{ display:block; font-size:.58rem; font-weight:700; letter-spacing:.14em; text-transform:uppercase; color:rgba(255,255,255,.72); margin-top:2px; }

.orbit-node{
  position:absolute; z-index:3;
  width:66px; height:66px; border-radius:17px;
  background:rgba(18,14,34,.96);
  border:1px solid rgba(139,92,246,.3);
  display:flex; flex-direction:column; align-items:center; justify-content:center; gap:3px;
  box-shadow:0 10px 30px rgba(0,0,0,.5);
  transition:var(--t);
  backdrop-filter:blur(8px);
}
.orbit-node:hover{
  border-color:var(--violet);
  box-shadow:0 0 28px rgba(139,92,246,.45);
  transform:scale(1.09);
}
.orbit-node i{ font-style:normal; font-size:1.05rem; }
.orbit-node span{
  font-size:.5rem; font-weight:700; letter-spacing:.06em;
  text-transform:uppercase; text-align:center; line-height:1.2;
  color:var(--text-2); padding-inline:3px;
}
/* 7 nodes on a circle */
.orbit-node:nth-of-type(1){ top:0;    left:50%; transform:translate(-50%,0); }
.orbit-node:nth-of-type(2){ top:19%;  right:2%; }
.orbit-node:nth-of-type(3){ bottom:19%; right:2%; }
.orbit-node:nth-of-type(4){ bottom:0; left:62%; transform:translate(-50%,0); }
.orbit-node:nth-of-type(5){ bottom:0; left:38%; transform:translate(-50%,0); }
.orbit-node:nth-of-type(6){ bottom:19%; left:2%; }
.orbit-node:nth-of-type(7){ top:19%;  left:2%; }
@media(max-width:520px){
  .orbit-node{ width:54px; height:54px; border-radius:14px; }
  .orbit-node i{ font-size:.9rem; }
  .orbit-node span{ font-size:.44rem; }
  .orbit-core{ width:88px; height:88px; }
}

/* ─────────────────────────────────────────────
   3. SIGNAL TRACK — thin weighted bars
   ───────────────────────────────────────────── */
.sig-row{ display:flex; align-items:center; gap:12px; padding:7px 0; }
.sig-label{ width:150px; flex-shrink:0; font-size:.8rem; color:var(--text-2); }
.sig-track{
  flex:1; height:5px; border-radius:3px;
  background:rgba(255,255,255,.07); overflow:hidden;
}
.sig-fill{
  display:block; height:100%; border-radius:3px;
  background:linear-gradient(90deg, var(--violet), var(--violet-2));
  transition:width .8s var(--ease);
}
.sig-fill.g{ background:linear-gradient(90deg,#059669,var(--green)); }
.sig-fill.a{ background:linear-gradient(90deg,#d97706,var(--amber)); }
.sig-fill.r{ background:linear-gradient(90deg,#dc2626,var(--red)); }
.sig-val{
  width:34px; flex-shrink:0; text-align:right;
  font-size:.8rem; font-weight:700; font-variant-numeric:tabular-nums;
}
.sig-w{
  width:30px; flex-shrink:0; text-align:right;
  font-size:.66rem; color:var(--text-3); font-variant-numeric:tabular-nums;
}

/* ─────────────────────────────────────────────
   4. SCORE — big number + label (tr-score)
   ───────────────────────────────────────────── */
.score-block{ text-align:right; flex-shrink:0; }
.score-num{
  font-family:var(--serif); font-size:1.9rem; font-weight:700;
  line-height:1; color:var(--violet-2); font-variant-numeric:tabular-nums;
}
.score-num.g{ color:var(--green); }
.score-num.a{ color:var(--amber); }
.score-num.r{ color:var(--red); }
.score-lbl{
  font-size:.56rem; font-weight:700; letter-spacing:.1em;
  text-transform:uppercase; color:var(--text-3); margin-top:3px;
}

/* ─────────────────────────────────────────────
   5. COMPARE — before / after cards
   ───────────────────────────────────────────── */
.cmp-grid{ display:grid; grid-template-columns:1fr 1fr; gap:16px; }
@media(max-width:640px){ .cmp-grid{ grid-template-columns:1fr; } }
.cmp-card{
  border-radius:16px; padding:22px 24px;
  position:relative; overflow:hidden;
}
.cmp-card.bad{ background:rgba(248,113,113,.05); border:1px solid rgba(248,113,113,.2); }
.cmp-card.good{ background:rgba(52,211,153,.05); border:1px solid rgba(52,211,153,.22); }
.cmp-tag{
  font-size:.6rem; font-weight:800; letter-spacing:.12em;
  text-transform:uppercase; margin-bottom:12px; display:block;
}
.cmp-card.bad .cmp-tag{ color:var(--red); }
.cmp-card.good .cmp-tag{ color:var(--green); }
.cmp-card p{ font-size:.88rem; line-height:1.6; margin:0; }

/* ─────────────────────────────────────────────
   6. CALCULATOR TABS (cc-tab / cc-panel)
   ───────────────────────────────────────────── */
.calc-tabs{
  display:flex; gap:8px; flex-wrap:wrap;
  margin-bottom:26px; padding:6px;
  border:1px solid var(--line); border-radius:var(--r-pill);
  background:var(--surface); width:fit-content;
}
.calc-tab{
  padding:9px 18px; border-radius:var(--r-pill);
  font-size:.85rem; font-weight:600; color:var(--text-2);
  transition:var(--t); white-space:nowrap;
  display:flex; align-items:center; gap:7px;
}
.calc-tab:hover{ color:var(--text); background:var(--surface-2); }
.calc-tab.on{
  background:linear-gradient(135deg,var(--violet),var(--violet-deep));
  color:#fff; box-shadow:0 4px 18px var(--violet-glow);
}
.calc-panel{ display:none; }
.calc-panel.on{ display:block; animation:panel-in .45s var(--ease); }
@keyframes panel-in{ from{ opacity:0; transform:translateY(10px); } to{ opacity:1; transform:none; } }

/* Result hero (cc-result) */
.res-hero{
  padding:28px;
  border:1px solid var(--line-violet); border-radius:var(--r-lg);
  background:linear-gradient(160deg, rgba(139,92,246,.10), rgba(109,40,217,.03));
  box-shadow:0 0 0 1px var(--line-violet), 0 24px 70px rgba(109,40,217,.2);
}
.res-lbl{
  font-size:.68rem; font-weight:700; letter-spacing:.13em;
  text-transform:uppercase; color:var(--violet-2);
}
.res-big{
  font-size:clamp(2.4rem,5.2vw,3.6rem); font-weight:800;
  letter-spacing:-.04em; line-height:1; margin:10px 0 4px;
  color:var(--violet-2); font-variant-numeric:tabular-nums;
}
.res-big.g{ color:var(--green); } .res-big.a{ color:var(--amber); } .res-big.r{ color:var(--red); }
.res-range{ font-size:.85rem; color:var(--text-2); }

/* Chips (cc-chip) */
.chips{ display:flex; flex-wrap:wrap; gap:7px; }
.chip{
  padding:7px 14px; border-radius:var(--r-pill);
  border:1px solid var(--line); background:var(--surface);
  font-size:.79rem; font-weight:600; color:var(--text-2);
  transition:var(--t); cursor:pointer;
}
.chip:hover{ border-color:var(--line-violet); color:var(--text); }
.chip.on{
  border-color:var(--violet); background:rgba(139,92,246,.16);
  color:var(--text);
}

/* Compare columns (cc-cmp-col) */
.cmp-cols{ display:grid; grid-template-columns:1fr 1fr; gap:14px; }
@media(max-width:640px){ .cmp-cols{ grid-template-columns:1fr; } }
.cmp-col{
  padding:20px; border-radius:var(--r);
  border:1px solid var(--line); background:var(--surface);
  transition:var(--t);
}
.cmp-col.win{ border-color:rgba(52,211,153,.35); background:rgba(52,211,153,.05); }
.cmp-col-h{
  font-size:.7rem; font-weight:700; letter-spacing:.1em;
  text-transform:uppercase; color:var(--text-3); margin-bottom:10px;
}
.cmp-amt{
  font-size:1.85rem; font-weight:800; letter-spacing:-.03em;
  font-variant-numeric:tabular-nums; line-height:1;
}
.cmp-bar{ height:6px; border-radius:3px; background:rgba(255,255,255,.07); margin-top:14px; overflow:hidden; }
.cmp-bar-fill{ display:block; height:100%; border-radius:3px; background:linear-gradient(90deg,var(--violet),var(--violet-2)); transition:width .8s var(--ease); }
.cmp-col.win .cmp-bar-fill{ background:linear-gradient(90deg,#059669,var(--green)); }

/* Disclaimer (cc-disclaimer) */
.calc-disclaimer{
  margin-top:28px; padding:16px 20px;
  border:1px solid var(--line); border-radius:var(--r);
  background:rgba(255,255,255,.02);
  font-size:.79rem; line-height:1.6; color:var(--text-3);
}
.calc-disclaimer strong{ color:var(--text-2); }

/* ─────────────────────────────────────────────
   7. TRUST / CREDENTIALS (cred-card)
   ───────────────────────────────────────────── */
.cred-grid{ display:grid; grid-template-columns:repeat(auto-fit,minmax(258px,1fr)); gap:20px; }
.cred-card{
  background:var(--surface); border:1px solid var(--line);
  border-radius:18px; padding:26px; transition:var(--t);
}
.cred-card:hover{ border-color:var(--line-violet); transform:translateY(-3px); }
.cred-mark{
  width:46px; height:46px; border-radius:12px;
  display:grid; place-items:center; margin-bottom:16px; font-size:1.15rem;
}
.cred-govt{ color:var(--green); background:rgba(52,211,153,.1); border:1px solid rgba(52,211,153,.25); }
.cred-duns{ color:var(--blue);  background:rgba(96,165,250,.1); border:1px solid rgba(96,165,250,.25); }
.cred-inc{  color:var(--violet-2); background:rgba(167,139,250,.1); border:1px solid rgba(167,139,250,.25); }
.cred-card h4{ margin-bottom:10px; font-size:1.05rem; }
.cred-card > p{ font-size:.87rem; color:var(--text-2); line-height:1.6; margin-bottom:18px; }
.cred-meta{
  margin:0; padding-top:16px; border-top:1px solid var(--line);
  display:flex; flex-direction:column; gap:10px;
}
.cred-meta div{ display:flex; flex-direction:column; gap:2px; }
.cred-meta dt{
  font-size:.65rem; font-weight:700; letter-spacing:.07em;
  text-transform:uppercase; color:var(--text-3);
}
.cred-meta dd{
  margin:0; font-family:var(--serif); font-size:.98rem;
  font-weight:700; color:var(--text);
}

/* ─────────────────────────────────────────────
   8. GAUGE — semicircle meter
   ───────────────────────────────────────────── */
.gauge{ position:relative; width:100%; max-width:230px; margin-inline:auto; }
.gauge svg{ width:100%; height:auto; overflow:visible; }
.gauge-arc{ fill:none; stroke:rgba(255,255,255,.07); stroke-width:11; stroke-linecap:round; }
.gauge-val{
  fill:none; stroke:var(--violet); stroke-width:11; stroke-linecap:round;
  transition:stroke-dashoffset 1s var(--ease), stroke .4s;
}
.gauge-txt{ position:absolute; inset:auto 0 4px; text-align:center; }
.gauge-num{
  font-size:2.4rem; font-weight:800; letter-spacing:-.04em;
  line-height:1; font-variant-numeric:tabular-nums;
}
.gauge-lbl{
  font-size:.6rem; font-weight:800; letter-spacing:.12em;
  text-transform:uppercase; color:var(--text-3); margin-top:5px;
}
