/* Pennyback — custom CSS layered on the Stitch/Tailwind design system.
   Only what Tailwind utilities don't cover: icon font, the coin-stack meter, animations, the celebration toast. */

:root { --c-primary:#0A1E45; --c-primary-container:#1E6FD6; --c-primary-fixed-dim:#A9B8CE; --c-secondary:#9A6B12; --c-secondary-container:#E8A93C; --c-surface:#F4F7FB; --c-gold:#E8A93C; --c-coin-hi:#F9E3B4; --c-coin:#F4BC55; --c-coin-edge:#B98518; }
[data-theme="cool"] { --c-primary:#0A1E45; --c-primary-container:#1E6FD6; --c-primary-fixed-dim:#A9B8CE; --c-secondary:#9A6B12; --c-secondary-container:#E8A93C; --c-surface:#F4F7FB; --c-gold:#E8A93C; --c-coin-hi:#F9E3B4; --c-coin:#F4BC55; --c-coin-edge:#B98518; }
body { font-family: 'Inter', sans-serif; background: var(--c-surface); color: #1b1c19; }
h1, h2, h3, h4, h5, h6, .font-jakarta,
[class*="font-display"], [class*="font-headline"] { font-family: 'Fraunces', Georgia, serif; font-optical-sizing: auto; }

/* Material Symbols (the CDN link only ships the @font-face; the helper class is ours) */
.material-symbols-outlined {
  font-family: 'Material Symbols Outlined'; font-weight: normal; font-style: normal;
  font-size: 24px; line-height: 1; letter-spacing: normal; text-transform: none;
  display: inline-block; white-space: nowrap; word-wrap: normal; direction: ltr;
  -webkit-font-feature-settings: 'liga'; -webkit-font-smoothing: antialiased;
  font-variation-settings: 'FILL' 0, 'wght' 400, 'GRAD' 0, 'opsz' 24;
}

/* ---------- pig + slider progress meter (a coin drops into the pig on each answer) ---------- */
.pig-meter { display: flex; flex-direction: column; align-items: center; gap: 10px; }
.pig-stage { position: relative; width: 92px; height: 92px; display: flex; align-items: flex-end; justify-content: center; }
.pig-img { width: 92px; height: 92px; object-fit: contain; transform-origin: 50% 85%; }
.pig-vid { width: 110px; height: 110px; object-fit: contain; }
.pig-img.wiggle { animation: pigwiggle .6s ease-in-out; }
@keyframes pigwiggle { 0%{transform:rotate(0) translateY(0)} 22%{transform:rotate(-4deg) translateY(-3px)} 50%{transform:rotate(3deg) translateY(0)} 75%{transform:rotate(-1.5deg) translateY(-1px)} 100%{transform:rotate(0) translateY(0)} }
.drop-coin {
  position: absolute; left: 50%; top: -28px; width: 18px; height: 18px; margin-left: -9px; border-radius: 50%;
  background: radial-gradient(ellipse at 50% 35%, var(--c-coin-hi), var(--c-coin) 60%, var(--c-coin-edge));
  border: 1px solid var(--c-coin-edge); box-shadow: 0 1px 2px rgba(0,53,39,.25); z-index: 3;
  animation: coindropin .62s cubic-bezier(.4,.05,.6,.95) forwards;
}
@keyframes coindropin { 0%{top:-30px;opacity:0;transform:scale(.85)} 20%{opacity:1} 68%{top:18px;opacity:1;transform:scale(1)} 100%{top:34px;opacity:0;transform:scale(.55)} }
.pig-img.squash { animation: pigsquash .5s ease; }
@keyframes pigsquash { 0%{transform:scaleY(1) scaleX(1)} 30%{transform:scaleY(.9) scaleX(1.05) translateY(3px)} 60%{transform:scaleY(1.03) scaleX(.99)} 100%{transform:scaleY(1) scaleX(1)} }
.pig-img.recoil { animation: pigrecoil .5s ease; }
@keyframes pigrecoil { 0%{transform:translateX(0) rotate(0)} 25%{transform:translateX(5px) rotate(2.5deg)} 60%{transform:translateX(-1px) rotate(-1deg)} 100%{transform:translateX(0) rotate(0)} }
.burp-coin { position: absolute; left: 30%; top: 48%; width: 16px; height: 16px; margin-left: -8px; border-radius: 50%; background: radial-gradient(ellipse at 50% 35%, var(--c-coin-hi), var(--c-coin) 60%, var(--c-coin-edge)); border: 1px solid var(--c-coin-edge); box-shadow: 0 1px 2px rgba(0,53,39,.25); z-index: 3; animation: burpout .85s ease-out forwards; }
@keyframes burpout { 0%{transform:translate(0,0) scale(.4); opacity:0} 22%{transform:translate(-8px,-12px) scale(1); opacity:1} 100%{transform:translate(-16px,42px) scale(.65); opacity:0} }
.loader-vid { width: 220px; height: 220px; object-fit: contain; }

/* pigs-in-coins scene: fixed to the bottom, lower portion only, clouds fade up into the page */
.pagescene {
  position: relative; z-index: -1; display: block; width: 100%; height: auto; margin-top: 0; pointer-events: none; opacity: 1;
  -webkit-mask-image: linear-gradient(to top, #000 45%, rgba(0,0,0,0) 96%);
  mask-image: linear-gradient(to top, #000 45%, rgba(0,0,0,0) 96%);
}
.pig-track { position: relative; width: 100%; max-width: 320px; height: 8px; border-radius: 9999px; background: #ffffff; box-shadow: inset 0 0 0 1px #e3e3de; }
.pig-fill { height: 100%; border-radius: 9999px; background: var(--c-primary-container); transition: width .6s cubic-bezier(.2,.8,.3,1); }
.pig-thumb {
  position: absolute; top: 50%; width: 16px; height: 16px; margin: -8px 0 0 -8px; border-radius: 50%;
  background: radial-gradient(ellipse at 50% 35%, var(--c-coin-hi), var(--c-coin) 60%, var(--c-coin-edge));
  border: 2px solid #fff; box-shadow: 0 1px 3px rgba(0,53,39,.3); transition: left .6s cubic-bezier(.2,.8,.3,1);
}
.pig-cap { font: 600 11px Inter, sans-serif; color: #707974; text-transform: uppercase; letter-spacing: .05em; text-align: center; }
.pig-trust { display: inline-flex; align-items: center; gap: 6px; font: 600 13px Inter, sans-serif; color: var(--c-primary); background: #ffffff; border: 1px solid var(--c-primary-fixed-dim); border-radius: 9999px; padding: 6px 14px; box-shadow: 0 2px 10px -3px rgba(6,78,59,.15); }
.pig-trust .material-symbols-outlined { color: var(--c-primary); }

/* ---------- finish / redirect loader (stuffed pig with coins trickling out) ---------- */
.pb-loader { display: flex; flex-direction: column; align-items: center; justify-content: center; text-align: center; padding: 32px 0; min-height: 60vh; }
.loader-pig { position: relative; width: 180px; height: 180px; }
.loader-pig > img { width: 180px; height: 180px; object-fit: contain; }
.loader-pig .fc {
  position: absolute; bottom: 38px; left: 50%; width: 16px; height: 16px; margin-left: -8px; border-radius: 50%;
  background: radial-gradient(ellipse at 50% 35%, var(--c-coin-hi), var(--c-coin) 60%, var(--c-coin-edge));
  border: 1px solid var(--c-coin-edge); box-shadow: 0 1px 2px rgba(0,53,39,.25);
  opacity: 0; animation: coinfall 1.8s ease-in infinite;
}
.loader-pig .fc0 { left: 46%; animation-delay: 0s; }
.loader-pig .fc1 { left: 53%; animation-delay: .36s; }
.loader-pig .fc2 { left: 49%; animation-delay: .72s; }
.loader-pig .fc3 { left: 56%; animation-delay: 1.08s; }
.loader-pig .fc4 { left: 43%; animation-delay: 1.44s; }
@keyframes coinfall { 0% { transform: translateY(0) scale(.9); opacity: 0; } 14% { opacity: 1; } 100% { transform: translateY(74px) scale(.78); opacity: 0; } }
@media (prefers-reduced-motion: reduce) { .loader-pig .fc { animation: none; opacity: 0; } }

/* ---------- option cards ---------- */
.option-card { transition: all .18s ease-out; }
.option-card:active { transform: scale(.985); }
.typepick-tile { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 4px; text-align: center; }
.option-card.sel { border-color: #064e3b !important; background: #f5f4ef; }
.opt-sm { transition: all .15s ease-out; border-radius: 0.5rem; }

/* exit-recovery skip control + popup */
.quizx { display: none; position: fixed; top: 72px; right: 12px; z-index: 30; width: 30px; height: 30px; border-radius: 50%; border: 1px solid #1e3060; background: rgba(255,255,255,.85); color: #6b7a99; font-size: 19px; line-height: 27px; text-align: center; cursor: pointer; }
body.ui-v2 .quizx { display: block; }
.exitpop { position: fixed; inset: 0; z-index: 50; background: rgba(20,25,40,.55); display: flex; align-items: center; justify-content: center; padding: 24px; }
.exitpop[hidden] { display: none; }
.exitpop-card { position: relative; background: var(--c-surface); border-radius: 16px; max-width: 360px; width: 100%; padding: 26px 22px 18px; box-shadow: 0 14px 44px rgba(0,0,0,.28); }
.exitpop-x { position: absolute; top: 8px; right: 12px; background: none; border: 0; font-size: 22px; color: #99a; line-height: 1; cursor: pointer; }
.exitpop-title { font-family: 'Fraunces', serif; font-size: 21px; font-weight: 600; color: #1b1c19; margin-bottom: 6px; }
.exitpop-body { font-size: 15px; color: #5f5e5a; line-height: 1.45; margin-bottom: 18px; }
.exitpop-go { display: block; width: 100%; text-align: center; background: #c2410c; color: #fff; font-weight: 600; border: 0; border-radius: 12px; padding: 13px; cursor: pointer; }
.exitpop-stay { display: block; width: 100%; text-align: center; background: none; border: 0; color: #6b7a99; font-weight: 500; padding: 10px; margin-top: 6px; cursor: pointer; }
.opt-sm.sel { border-color: #064e3b !important; background: #f5f4ef; color: #003527; font-weight: 600; }

/* subtle raised glow on primary buttons (matches Stitch) */
.btn-glow { box-shadow: inset 0 2px 4px rgba(255,255,255,.2); }

/* live pulse dot */
.pulse-dot { animation: pulse 2s cubic-bezier(.4,0,.6,1) infinite; }
@keyframes pulse { 0%,100% { opacity: 1; transform: scale(1); } 50% { opacity: .5; transform: scale(1.15); } }

/* live dot inside the promo bar (rich announce text) */
.dot { display: inline-block; width: 7px; height: 7px; border-radius: 50%; background: #36c07a; margin: 0 8px -1px; box-shadow: 0 0 0 3px rgba(54,192,122,.18); animation: pulse 2s cubic-bezier(.4,0,.6,1) infinite; }

@media (prefers-reduced-motion: reduce) {
  .pig-img.squash, .pig-img.recoil, .drop-coin, .burp-coin, .pulse-dot, .animate-bounce { animation: none !important; }
  .pig-fill, .pig-thumb { transition: none; }
}

/* ---------- v2 variation: no top meter; compact header pig; promo bar first-step only; story peeks higher ---------- */
/* ui-v2 now uses #pbmeter for the Heyflow progress bar (was: hidden for the old pig meter) */
body.ui-v2 footer { display: none !important; }
/* (removed: legacy Pennyback -25vw pagescene pull — it dragged the PGP stage img out of its box) */

/* Game-flip variation: full side-scroller shown as a visible game viewport pinned to the bottom */
body.game-flip main { flex-grow: 0; padding-bottom: 0; }
body.game-flip.ui-v2 .pagescene { margin-top: auto; z-index: 0; width: 100%; border-radius: 14px 14px 0 0; box-shadow: 0 -3px 18px rgba(13,27,62,.16); }

/* compact coin-drop pig in the header (v2 only); must fit the existing 64px header height */
.hdr-pig { display: none; position: relative; width: 46px; height: 46px; align-items: flex-end; justify-content: center; }
body.ui-v2 .hdr-pig { display: inline-flex; }
.hdr-pig img { width: 42px; height: 42px; object-fit: contain; transform-origin: 50% 85%; }
/* header coin-drop: detailed SVG coin spins, falls to the slot, turns edge-on + slides in, with a spark; refined receive-wiggle */
.hdr-pig img.squash { animation: hdrreceive .62s cubic-bezier(.3,.7,.4,1); }
@keyframes hdrreceive { 0%{transform:scaleY(1) scaleX(1) translateY(0)} 48%{transform:scaleY(1.03) scaleX(.99) translateY(-1px)} 72%{transform:scaleY(.86) scaleX(1.09) translateY(3px)} 88%{transform:scaleY(1.05) scaleX(.98) translateY(-1px)} 100%{transform:scaleY(1) scaleX(1) translateY(0)} }
.hdr-coin { position: absolute; left: 55%; top: 9px; width: 14px; height: 14px; margin-left: -7px; z-index: 4; pointer-events: none; animation: hdrfall .6s cubic-bezier(.45,.05,.55,1) forwards; }
.hdr-coin .hc-face { display: block; width: 14px; height: 14px; transform-origin: 50% 50%; animation: hdrspin .6s ease-in forwards; filter: drop-shadow(0 1px 1px rgba(0,53,39,.28)); }
.hdr-coin .hc-spark { position: absolute; left: 50%; top: 6px; width: 11px; height: 11px; margin-left: -5.5px; background: #fff4da; opacity: 0; clip-path: polygon(50% 0,61% 35%,98% 35%,68% 57%,79% 91%,50% 70%,21% 91%,32% 57%,2% 35%,39% 35%); animation: hdrspark .6s ease-out forwards; }
@keyframes hdrfall { 0%{transform:translate(2px,-22px);opacity:0} 18%{opacity:1;transform:translate(1px,-12px)} 62%{transform:translate(0,-1px);opacity:1} 84%{transform:translate(0,5px);opacity:1} 100%{transform:translate(0,8px);opacity:0} }
@keyframes hdrspin { 0%{transform:scaleX(1)} 20%{transform:scaleX(.16)} 40%{transform:scaleX(.95)} 60%{transform:scaleX(.18)} 78%{transform:scaleX(.9)} 90%{transform:scaleX(.14)} 100%{transform:scaleX(.06)} }
@keyframes hdrspark { 0%,70%{opacity:0;transform:scale(0)} 84%{opacity:.95;transform:scale(1.15) rotate(16deg)} 100%{opacity:0;transform:scale(.4) rotate(24deg)} }

/* end-screen: lying pig with a continuous golden coin waterfall + sparkles (CSS loop; no box, no bounce) */
.coinpour { position: relative; width: 200px; height: 212px; margin: 6px auto 0; }
.coinpour .cp-pig { position: relative; z-index: 2; display: block; width: 168px; height: 168px; margin: 0 auto; object-fit: contain; }
.coinpour .cp-coin { position: absolute; top: 50%; width: 15px; height: 15px; margin-left: -7px; border-radius: 50%; z-index: 1;
  background: radial-gradient(ellipse at 50% 35%, var(--c-coin-hi), var(--c-coin) 60%, var(--c-coin-edge)); border: 1px solid var(--c-coin-edge);
  box-shadow: 0 1px 2px rgba(0,53,39,.2); animation: cppour 1.5s ease-in infinite; }
@keyframes cppour { 0% { transform: translateY(0) scale(.5); opacity: 0; } 12% { opacity: 1; transform: translateY(8px) scale(1); } 100% { transform: translateY(120px) scale(.7); opacity: 0; } }
.coinpour .cp-spark { position: absolute; width: 12px; height: 12px; z-index: 3; opacity: 0; background: var(--c-coin-hi);
  clip-path: polygon(50% 0,61% 35%,98% 35%,68% 57%,79% 91%,50% 70%,21% 91%,32% 57%,2% 35%,39% 35%); animation: cptwinkle 1.7s ease-in-out infinite; }
@keyframes cptwinkle { 0%,100% { transform: scale(0) rotate(0); opacity: 0; } 50% { transform: scale(1) rotate(18deg); opacity: .9; } }
@media (prefers-reduced-motion: reduce) { .coinpour .cp-coin, .coinpour .cp-spark { animation: none; opacity: 0; } }

/* ---------- Social-proof review card (shown in place of the Penny guide bubble on personal-info steps) ---------- */
.pb-review { display: flex; align-items: flex-start; gap: 12px; text-align: left; margin: 24px 0 4px;
  background: #fffdf6; border: 1px solid var(--c-coin-edge); border-radius: 14px; padding: 12px 14px 12px 12px;
  box-shadow: 0 6px 18px -10px rgba(207,154,42,.55); }
.pb-review-badge { flex: none; width: 40px; height: 40px; border-radius: 9999px;
  background: radial-gradient(circle at 35% 30%, var(--c-coin-hi), var(--c-coin) 72%); border: 1px solid var(--c-coin-edge);
  display: flex; align-items: center; justify-content: center; box-shadow: 0 3px 9px -2px rgba(207,154,42,.6); }
.pb-review-badge .material-symbols-outlined { color: #fff; font-size: 24px; font-variation-settings: 'FILL' 1;
  animation: pb-star-twinkle 2.4s ease-in-out infinite; transform-origin: center; }
.pb-review-body { flex: 1; min-width: 0; }
.pb-review-stars { display: flex; gap: 1px; line-height: 1; margin-bottom: 2px; }
.pb-review-stars .material-symbols-outlined { color: var(--c-gold); font-size: 16px; font-variation-settings: 'FILL' 1; }
.pb-review-stars .pb-rev-star-empty { color: #e6ddc6; }
.pb-review-who { font-size: 12px; margin: 0 0 3px; display: flex; align-items: center; flex-wrap: wrap; gap: 5px; line-height: 1.3; }
.pb-review-name { font-weight: 700; color: var(--c-primary); }
.pb-rev-loc { color: #8a7f66; }
.pb-rev-ago { color: #a79c85; font-weight: 500; }
.pb-rev-verified { display: inline-flex; align-items: center; gap: 2px; color: var(--c-primary-container); font-weight: 600; font-size: 11px; }
.pb-rev-verified .material-symbols-outlined { font-size: 13px; font-variation-settings: 'FILL' 1; }
.pb-review-text { font-size: 13px; color: #33302a; line-height: 1.45; margin: 0; }
@keyframes pb-star-twinkle { 0%,100% { transform: scale(1) rotate(0); opacity: 1; } 50% { transform: scale(1.16) rotate(9deg); opacity: .82; } }
@media (prefers-reduced-motion: reduce) { .pb-review-badge .material-symbols-outlined { animation: none; } }

/* ---------- Loyalty-tax hook banner (first step) ---------- */
.pb-hook { display: flex; align-items: flex-start; gap: 9px; text-align: left; margin: 0 0 20px;
  background: #fff7ec; border: 1px solid #f3d19a; border-left: 4px solid var(--c-gold); border-radius: 12px;
  padding: 11px 13px; box-shadow: 0 3px 12px -8px rgba(207,154,42,.5); }
.pb-hook-icon { flex: none; color: var(--c-secondary); font-size: 20px; margin-top: 1px; }
.pb-hook-text { font-size: 13px; line-height: 1.45; color: #4a4230; }
.pb-hook-text b { color: var(--c-secondary); font-weight: 700; }
.pb-hook-src { display: block; margin-top: 3px; font-size: 10px; color: #a79c85; }
/* Step-1 loyalty-tax alert inside Penny's guide bubble: red outline + red-bold numbers + red up-arrow */
.pb-alert { background: #fff5f4; border: 1.5px solid #dc2626; box-shadow: 0 3px 14px -8px rgba(220,38,38,.45); }
.pb-alert-text { color: #4a4230; }
.pb-alert-text b { color: #dc2626; font-weight: 700; }
.pb-alert-icon { flex: none; color: #dc2626; font-size: 18px; margin-top: 1px; }

/* ---------- Soft-gate reveal screen (?gate=soft) ---------- */
.pb-reveal { padding: 8px 0 4px; }
.pb-reveal-badge { width: 64px; height: 64px; border-radius: 9999px; margin: 0 auto 16px;
  background: radial-gradient(circle at 35% 30%, var(--c-coin-hi), var(--c-coin) 72%); border: 2px solid var(--c-coin-edge);
  display: flex; align-items: center; justify-content: center; box-shadow: 0 6px 18px -6px rgba(207,154,42,.6);
  animation: pb-reveal-pop .5s cubic-bezier(.2,.9,.3,1.2) both; }
.pb-reveal-badge .material-symbols-outlined { color: #fff; font-size: 34px; font-variation-settings: 'FILL' 1; }
.pb-reveal-figure { font: 700 30px/1.1 Montserrat, sans-serif; color: var(--c-primary-container); margin: 4px 0 12px; }
@keyframes pb-reveal-pop { 0% { transform: scale(.4); opacity: 0; } 100% { transform: scale(1); opacity: 1; } }
@media (prefers-reduced-motion: reduce) { .pb-reveal-badge { animation: none; } }

/* Keep microcopy readable: soft halo + chip behind small legal text. */
#app p.text-xs.text-outline, footer p.text-xs { text-shadow: 0 0 6px rgba(250,247,240,.95), 0 0 14px rgba(250,247,240,.85); }
#app p.text-xs.text-outline { background: rgba(250,247,240,.62); border-radius: 10px; padding: 4px 10px; backdrop-filter: blur(2px); }
footer { background: linear-gradient(rgba(250,247,240,0), rgba(250,247,240,.85)); }


/* ============ THE FOODIE FUND overrides ============
   Strip the mascot and coin gamification inherited from the Pennyback engine.
   A pig mascot and falling coins read as a game. This buyer is evaluating capital
   after being burned by cash-advance brokers, so the register has to be sober. */
.coinpour, .cp-coin, .cp-spark, .cp-pig,
.loader-pig, .fc, .hdr-pig, .pig-coin,
.pb-guide-avatar, .quiz-mascot { display: none !important; }
.pb-loader { padding-top: 48px; }
.pb-guide { padding-left: 0 !important; }
.pb-guide-bubble { margin-left: 0 !important; border-left: 3px solid var(--c-gold); padding-left: 14px; }

/* Heyflow-grade answer cards: big, tappable, obviously interactive */
.opt-card, .option-card {
  border: 1.5px solid #DDE5F0 !important;
  border-radius: 10px !important;
  background: #fff !important;
  padding: 16px 18px !important;
  min-height: 58px;
  transition: border-color .12s ease, box-shadow .12s ease, transform .06s ease;
}
.opt-card:hover, .option-card:hover {
  border-color: var(--c-primary-container) !important;
  box-shadow: 0 2px 12px -4px rgba(30,111,214,.35);
}
.opt-card:active, .option-card:active { transform: scale(.995); }
.opt-card.sel, .option-card.sel, .opt-card[aria-checked="true"] {
  border-color: var(--c-primary-container) !important;
  box-shadow: 0 0 0 3px rgba(30,111,214,.14);
}
h1, h2, h3, .font-headline-lg, .font-headline-md { font-family: Montserrat, Inter, sans-serif !important; }

/* No avatar asset yet: an empty-src img renders a broken-image icon — hide until Phase 2 ships one. */
img[src=""] { display: none; }

/* ============ Phase 2: Heyflow mechanics (Foodie Funders) ============ */

/* Slim progress bar + trust line */
.ffbar { height: 6px; border-radius: 999px; background: #E4EAF4; overflow: hidden; }
.ffbar i { display: block; height: 100%; width: 0; border-radius: 999px;
  background: linear-gradient(90deg, #1E6FD6, #F4BC55); transition: width .3s ease; }
.ffbar-trust { display: flex; align-items: center; justify-content: center; gap: 5px;
  margin: 8px 0 0; font-size: 12px; color: #6B7A90; }
.ffbar-trust .material-symbols-outlined { font-size: 14px; }

/* 0.2s step transition */
.step-anim { animation: ffStepIn .2s ease; }
@keyframes ffStepIn { from { opacity: 0; transform: translateY(10px); } to { opacity: 1; transform: none; } }

/* Option-card icon chip */
.opt-ic { font-size: 22px; color: var(--c-primary, #1E6FD6);
  background: #EAF0F9; border-radius: 8px; padding: 6px; flex-shrink: 0; }
.option-card.sel .opt-ic { background: var(--c-primary, #1E6FD6); color: #fff; }

/* Loading spinner (replaces the old mascot loader) */
.ff-spin { width: 46px; height: 46px; border-radius: 50%; margin: 0 auto;
  border: 4px solid #E4EAF4; border-top-color: #1E6FD6; animation: ffSpin .8s linear infinite; }
@keyframes ffSpin { to { transform: rotate(360deg); } }
@media (prefers-reduced-motion: reduce) { .ff-spin { animation: none; } .step-anim { animation: none; } }

/* ============ Austin's change list 2026-08-23 ============ */

/* Heyflow tile buttons: icon on top, centered label, generous tap target */
.opt-tile { display: flex; flex-direction: column; align-items: center; justify-content: center;
  gap: 12px; padding: 26px 14px; min-height: 128px; text-align: center;
  background: #fff !important; border: 1.5px solid #DDE5F0 !important; border-radius: 12px !important;
  cursor: pointer; }
.opt-tile:hover { border-color: var(--c-primary, #1E6FD6) !important; }
.opt-tile.sel { border-color: var(--c-primary, #1E6FD6) !important;
  box-shadow: 0 0 0 3px rgba(30,111,214,.16); }
.opt-tile-ic { font-size: 40px; color: var(--c-primary, #1E6FD6); }
.opt-tile.sel .opt-tile-ic { color: var(--c-primary, #1E6FD6); }
.opt-tile-label { font-family: Inter, sans-serif; font-weight: 600; font-size: 15.5px;
  line-height: 1.3; color: #12233D; }

/* "Why this matters" label on the guide box */
.ff-why-label { font-family: Montserrat, Inter, sans-serif; font-weight: 800; font-size: 11px;
  letter-spacing: 1.6px; text-transform: uppercase; color: #1E6FD6; margin: 0 0 5px; }

/* Analyzing loader bar */
.ff-loadbar { height: 8px; border-radius: 999px; background: #E4EAF4; overflow: hidden;
  max-width: 420px; margin: 0 auto; }
.ff-loadbar i { display: block; height: 100%; width: 4%; border-radius: 999px;
  background: linear-gradient(90deg, #1E6FD6, #F4BC55); transition: width .9s ease; }

/* ============ Redesign pass (Figma scorecard language, 2026-08-23) ============ */

/* Headline + eyebrow + micro-promise */
#app h1 { font-size: 27px !important; line-height: 1.22 !important; font-weight: 800 !important;
  letter-spacing: -0.015em; color: #0A1E45 !important; }
.ff-eyebrow { font-family: Montserrat, Inter, sans-serif; font-weight: 800; font-size: 11px;
  letter-spacing: 1.8px; text-transform: uppercase; color: #1E6FD6; text-align: center; margin: 0 0 8px; }
.ff-micro { text-align: center; font-size: 13px; color: #6B7A90; margin: -6px 0 18px; }

/* Pill CTA buttons in the thumb zone (every primary button) */
#app .btn-glow { border-radius: 999px !important; height: 54px !important;
  font-weight: 700 !important; font-size: 16px !important;
  background: #1E6FD6 !important; color: #fff !important;
  box-shadow: 0 8px 20px -8px rgba(30,111,214,.55); }
#app .btn-glow:hover { background: #1557b0 !important; }

/* Option tiles: softer, deeper, livelier */
.opt-tile { border-radius: 16px !important; box-shadow: 0 2px 10px -4px rgba(10,30,69,.10);
  transition: transform .12s ease, border-color .12s ease, box-shadow .12s ease; }
.opt-tile:hover { transform: translateY(-2px); box-shadow: 0 10px 22px -10px rgba(10,30,69,.22); }
.opt-tile-ic { width: 52px; height: 52px; display: flex; align-items: center; justify-content: center;
  border-radius: 50%; background: #FDF4DF; color: #C98A1B; font-size: 26px !important; }
.opt-tile.sel .opt-tile-ic { background: #1E6FD6; color: #fff; }

/* Progress meta row: step counter left, trust right */
.ffbar-trust { justify-content: space-between; }
.ffbar-step { font-family: Montserrat, Inter, sans-serif; font-weight: 700; font-size: 11px;
  letter-spacing: .8px; text-transform: uppercase; color: #1E6FD6; }
.ffbar-sec { display: flex; align-items: center; gap: 5px; }

/* Interstitial card */
.ff-info { background: #fff; border: 1.5px solid #DDE5F0; border-radius: 18px; padding: 26px 22px;
  box-shadow: 0 6px 24px -12px rgba(10,30,69,.18); text-align: left; }
.ff-info-badge { width: 54px; height: 54px; border-radius: 50%; background: #0A1E45; color: #F4BC55;
  display: flex; align-items: center; justify-content: center; margin: 0 auto 16px; }
.ff-info-badge .material-symbols-outlined { font-size: 28px; }
.ff-info-body { font-size: 15.5px; line-height: 1.6; color: #12233D; margin: 0 0 14px; }
.ff-info-pts { list-style: none; margin: 0; padding: 0; }
.ff-info-pts li { display: flex; gap: 10px; align-items: flex-start; padding: 8px 0;
  border-bottom: 1px solid #EDF2F9; font-size: 14.5px; color: #12233D; font-weight: 600; }
.ff-info-pts li:last-child { border-bottom: 0; }
.ff-info-pts .material-symbols-outlined { color: #1B7F4C; font-size: 20px; flex-shrink: 0; margin-top: 1px; }
.ff-info-src { font-size: 11.5px; color: #8FA0B8; margin: 12px 0 0; }

/* Recap card — the user's answers mirrored back */
.ff-recap { background: #0A1E45; border-radius: 18px; padding: 10px 20px;
  box-shadow: 0 10px 30px -14px rgba(10,30,69,.5); }
.ff-recap-row { display: flex; justify-content: space-between; align-items: center; gap: 14px;
  padding: 13px 0; border-bottom: 1px solid rgba(255,255,255,.09); }
.ff-recap-row:last-child { border-bottom: 0; }
.ff-recap-row span { font-size: 12.5px; color: #8FA0B8; letter-spacing: .4px; text-transform: uppercase;
  font-family: Montserrat, Inter, sans-serif; font-weight: 700; flex-shrink: 0; }
.ff-recap-row b { font-size: 15px; color: #fff; text-align: right; }

/* ============ NAVY WORLD — Build&Fund-congruent identity (senior pass, 2026-08-23) ============
   One system: deep navy ground, white answer surfaces, gold action. Matches the /ik-vsl lander
   qualified traffic hands off to, so quiz -> partner feels like one product. */

html, body { background: #0A1E45 !important; }
body { background: radial-gradient(1200px 600px at 50% -160px, #16305F 0%, #0A1E45 55%) fixed !important; }

.ff-head { background: rgba(10,30,69,.85); backdrop-filter: blur(8px);
  border-bottom: 1px solid rgba(255,255,255,.08); }
.ff-head-pill { display: inline-flex; align-items: center; gap: 5px; font-size: 11.5px;
  font-weight: 600; color: #C9D5E8; background: rgba(255,255,255,.07);
  border: 1px solid rgba(255,255,255,.12); border-radius: 999px; padding: 5px 11px; }

/* Type on navy */
#app h1 { color: #fff !important; font-size: 28px !important; line-height: 1.2 !important; }
.ff-eyebrow { color: #F4BC55; }
.ff-micro { color: #93A5C4; }
#app .text-on-surface-variant, #app .font-body-md { color: #B9C6DC !important; }

/* Progress: gold on translucent track */
.ffbar { background: rgba(255,255,255,.12); height: 7px; }
.ffbar i { background: linear-gradient(90deg, #F4BC55, #E8A93C); }
.ffbar-step { color: #F4BC55; }
.ffbar-trust { color: #93A5C4; }

/* Tiles: white surfaces floating on navy, gold icon, gold selected ring */
.opt-tile { border: 1.5px solid rgba(255,255,255,.10) !important;
  box-shadow: 0 10px 30px -14px rgba(0,0,0,.55); min-height: 132px; }
.opt-tile:hover { border-color: #F4BC55 !important; }
.opt-tile.sel { border-color: #F4BC55 !important; box-shadow: 0 0 0 3px rgba(244,188,85,.35); }
.opt-tile-ic { background: #FDF4DF; color: #C98A1B; }
.opt-tile.sel .opt-tile-ic { background: #F4BC55; color: #0A1E45; }

/* Gold pill CTA — the Build&Fund action color */
#app .btn-glow { background: linear-gradient(180deg, #F6C868, #E8A93C) !important;
  color: #0A1E45 !important; font-weight: 800 !important;
  box-shadow: 0 10px 26px -10px rgba(232,169,60,.6); }
#app .btn-glow:hover { background: linear-gradient(180deg, #F4BC55, #DB9C2F) !important; }
#app .btn-glow .material-symbols-outlined { color: #0A1E45; }

/* "Why we ask" — quiet, tappable */
.ff-why { text-align: center; margin-top: 22px; }
.ff-why-t { background: none; border: 0; cursor: pointer; display: inline-flex; align-items: center;
  gap: 3px; font-family: Inter, sans-serif; font-size: 13px; font-weight: 600; color: #93A5C4; }
.ff-why-t:hover { color: #fff; }
.ff-why-t .material-symbols-outlined { font-size: 18px; transition: transform .15s ease; }
.ff-why-t.open .material-symbols-outlined { transform: rotate(180deg); }
.ff-why-b p { margin: 10px auto 0; max-width: 420px; font-size: 13.5px; line-height: 1.55;
  color: #B9C6DC; text-align: center; }

/* Contact inputs: white fields on navy */
#app input[type], #app input { background: #fff !important; border-color: rgba(255,255,255,.16) !important;
  color: #12233D !important; border-radius: 12px !important; height: 52px; }
#app label > span, #app .text-label-md { color: #C9D5E8 !important; }
#app .text-xs.text-outline, #app label.flex span { color: #93A5C4 !important; }
#app input[type="checkbox"] { height: 16px; background: #fff !important; }

/* Loader on navy */
.pb-loader #ffload-title { color: #fff !important; }
.ff-loadbar { background: rgba(255,255,255,.12); }
#app #ffload-msg { color: #93A5C4 !important; }

/* Back link */
#app #back { color: #93A5C4; } #app #back:hover { color: #fff; }

/* Footer */
.ff-foot-line { display: flex; align-items: center; justify-content: center; gap: 6px;
  font-size: 12px; font-weight: 600; color: #93A5C4; margin: 0 0 8px; }
.ff-foot-legal { font-size: 10.5px; line-height: 1.5; color: #5F719000; color: #64789B; max-width: 460px; margin: 0 auto; }

/* Row layout for 3-option questions (rent) */
.opt-row { flex-direction: row !important; justify-content: flex-start !important;
  text-align: left !important; min-height: 68px !important; gap: 14px !important;
  padding: 14px 18px !important; }
.opt-row .opt-tile-ic { width: 44px; height: 44px; font-size: 22px !important; flex-shrink: 0; }
.opt-row .opt-tile-label { font-size: 15.5px; }

/* Inline reveal field (website domain) */
.ff-reveal { margin-top: 16px; background: rgba(255,255,255,.06);
  border: 1px solid rgba(255,255,255,.14); border-radius: 14px; padding: 16px; }

/* Papercraft art icons: circular crop hides each render's surround; sized like the symbol chips */
.opt-tile-art { width: 52px; height: 52px; border-radius: 50%; flex-shrink: 0;
  background-size: 148%; background-position: center;
  box-shadow: 0 3px 10px -3px rgba(0,0,0,.5); }
.opt-row .opt-tile-art { width: 44px; height: 44px; }

/* Bottom scene: full-width, top edge fades into the page navy */
.ff-scene { width: 100%; line-height: 0; margin-top: 8px; }
.ff-scene img { display: block; width: 100%; height: auto;
  -webkit-mask-image: linear-gradient(to bottom, transparent 0, #000 26%);
  mask-image: linear-gradient(to bottom, transparent 0, #000 26%); }

/* Flipbook scene is MOBILE ONLY (Austin 2026-08-23): no image on desktop */
@media (min-width: 768px) { .ff-scene { display: none; } }
.ff-scene img { transition: opacity .25s ease; }

/* Domain reveal, designed (Austin 2026-08-23): white card, gold-caps label, globe field, gold focus */
.ff-reveal { margin-top: 18px; background: #fff; border: 0; border-radius: 18px; padding: 20px;
  box-shadow: 0 16px 38px -16px rgba(0,0,0,.6); animation: ffStepIn .2s ease; }
.ff-reveal-label { font-family: Montserrat, Inter, sans-serif; font-weight: 800; font-size: 11px;
  letter-spacing: 1.6px; text-transform: uppercase; color: #C98A1B; margin: 0 0 10px; }
.ff-reveal-field { display: flex; align-items: center; gap: 10px; background: #F1F5FA;
  border: 1.5px solid #DDE5F0; border-radius: 14px; padding: 0 14px; height: 56px;
  transition: border-color .12s ease, box-shadow .12s ease; }
.ff-reveal-field:focus-within { border-color: #E8A93C; box-shadow: 0 0 0 3px rgba(244,188,85,.28); }
.ff-reveal-field .material-symbols-outlined { color: #C98A1B; font-size: 22px; flex-shrink: 0; }
#app .ff-reveal-field input { flex: 1; border: 0 !important; background: transparent !important;
  height: 100% !important; font-size: 16px; color: #12233D !important; outline: none;
  border-radius: 0 !important; padding: 0 !important; box-shadow: none !important; }
.ff-reveal .btn-glow { margin-top: 2px; }
.ff-reveal #reverr { margin-top: 8px; }
.opt-tile.dim { opacity: .4; transition: opacity .2s ease; }

/* Mobile: the diorama is a FIXED STAGE pinned to the bottom of the screen (like the other
   funnels) — always visible, no scrolling required. Content scrolls above it; the image's top
   is masked navy sky, so light overlap is invisible. */
@media (max-width: 767px) {
  .ff-scene { position: fixed; left: 0; right: 0; bottom: 0; z-index: 0; pointer-events: none;
    margin: 0; }
  header, main, footer { position: relative; z-index: 1; }
  footer { margin-bottom: 30vw; } /* keep the legal line clear of the paper building */
}

/* ============ PGP WORLD — PureGood Partners identity (2026-08-23) ============
   Measured from puregoodpartners.com computed styles: ink #0E1810, forest #163A2E,
   sage #F0F9E7, lime #D9EE51, body #3F4640, Plus Jakarta Sans, dark 300px-pill CTAs.
   Light world, faithful to the site. Overrides the navy world above. */

:root, [data-theme="cool"] { --c-primary:#163A2E; --c-primary-container:#0E1810;
  --c-primary-fixed-dim:#B9CCB0; --c-secondary:#163A2E; --c-secondary-container:#D9EE51;
  --c-surface:#FFFFFF; --c-gold:#D9EE51; }

html, body { background: #F0F9E7 !important; }
body { background: linear-gradient(180deg, #FFFFFF 0%, #F0F9E7 60%) fixed !important;
  font-family: 'Plus Jakarta Sans', Inter, sans-serif; color: #3F4640; }

.ff-head { background: rgba(255,255,255,.94); backdrop-filter: blur(8px);
  border-bottom: 1px solid #E4EFDA; }
.ff-head-pill { color: #163A2E; background: #F0F9E7; border: 1px solid #DCE9CF; }

/* Type on light */
#app h1 { color: #0E1810 !important; font-family: 'Plus Jakarta Sans', Inter, sans-serif !important;
  font-weight: 700 !important; }
.ff-eyebrow { color: #163A2E; font-family: 'Plus Jakarta Sans', Inter, sans-serif; }
.ff-micro { color: #5C6A5E; }
#app .text-on-surface-variant, #app .font-body-md { color: #3F4640 !important; }

/* Progress: forest→lime growth bar on a sage track */
.ffbar { background: #E2EDD6; }
.ffbar i { background: linear-gradient(90deg, #163A2E, #D9EE51); }
.ffbar-step { color: #163A2E; }
.ffbar-trust { color: #5C6A5E; }

/* Tiles: white on sage, forest icon chips, lime selection glow */
.opt-tile { background: #fff !important; border: 1.5px solid #E0EAD8 !important;
  box-shadow: 0 4px 16px -8px rgba(14,24,16,.14); }
.opt-tile:hover { border-color: #163A2E !important;
  box-shadow: 0 10px 24px -10px rgba(14,24,16,.2); }
.opt-tile.sel { border-color: #163A2E !important; box-shadow: 0 0 0 3px rgba(217,238,81,.6); }
.opt-tile-ic { background: #F0F9E7; color: #163A2E; }
.opt-tile.sel .opt-tile-ic { background: #163A2E; color: #D9EE51; }
.opt-tile-label { color: #0E1810; font-family: 'Plus Jakarta Sans', Inter, sans-serif; }

/* CTA: the site's exact pill — ink ground, white text, 300px radius, Jakarta 600 */
#app .btn-glow { background: #0E1810 !important; color: #fff !important;
  border-radius: 300px !important; font-family: 'Plus Jakarta Sans', Inter, sans-serif !important;
  font-weight: 600 !important; box-shadow: 0 10px 24px -12px rgba(14,24,16,.5); }
#app .btn-glow:hover { background: #163A2E !important; }
#app .btn-glow .material-symbols-outlined { color: #D9EE51; }

/* Inputs on light */
#app input[type], #app input { background: #fff !important; border-color: #DCE5D2 !important;
  color: #0E1810 !important; }
#app input:focus { border-color: #163A2E !important; box-shadow: 0 0 0 3px rgba(217,238,81,.5) !important; }
#app label > span, #app .text-label-md { color: #163A2E !important; }
#app .text-xs.text-outline, #app label.flex span { color: #5C6A5E !important; }

/* Domain reveal card on light */
.ff-reveal { box-shadow: 0 14px 34px -18px rgba(14,24,16,.35); border: 1.5px solid #E0EAD8; }
.ff-reveal-label { color: #163A2E; font-family: 'Plus Jakarta Sans', Inter, sans-serif; }
.ff-reveal-field { background: #F0F9E7; border-color: #DCE9CF; }
.ff-reveal-field:focus-within { border-color: #163A2E; box-shadow: 0 0 0 3px rgba(217,238,81,.55); }
.ff-reveal-field .material-symbols-outlined { color: #163A2E; }
#app .ff-reveal-field input { color: #0E1810 !important; }

/* Recap card: their dark-section ink */
.ff-recap { background: #0E1810; box-shadow: 0 12px 30px -16px rgba(14,24,16,.6); }
.ff-recap-row span { color: #9DB294; }
.ff-recap-row b { color: #fff; }

/* Loader */
.ff-spin { border-color: #E2EDD6; border-top-color: #163A2E; }
.pb-loader #ffload-title, .pb-loader p { color: #0E1810 !important; }
#app #ffload-msg { color: #5C6A5E !important; }
.ff-loadbar { background: #E2EDD6; }
.ff-loadbar i { background: linear-gradient(90deg, #163A2E, #D9EE51); }

/* Back link + footer on light */
#app #back { color: #5C6A5E; } #app #back:hover { color: #0E1810; }
.ff-foot-line { color: #163A2E; }
.ff-foot-legal { color: #7A8878; }

/* Navy-world art is benched until regenerated in PGP colors: no diorama, no art chips. */
.ff-scene { display: none !important; }
@media (max-width: 767px) { footer { margin-bottom: 0; } }


/* PGP mobile stage: the site's own piggy illustration, pinned like the old diorama.
   The image carries its own lime ground; top edge fades into the page sage. */
.ff-scene { display: block !important; }
.ff-scene img {
  -webkit-mask-image: linear-gradient(to bottom, transparent 0, #000 42%);
  mask-image: linear-gradient(to bottom, transparent 0, #000 42%);
}
@media (max-width: 767px) {
  /* Real phones: 100vh overflows the visible viewport (browser chrome). Size to what's SEEN. */
  body { min-height: 100svh !important; }
  /* The stage lives IN the flow and owns whatever space remains under the content —
     never behind the tiles, never below the fold. Shrinks gracefully on tall steps. */
  .ff-scene { position: relative; order: 2; flex: 0 0 auto; overflow: hidden;
    margin: 10px 0 0; margin-top: auto; pointer-events: none; height: 42.4vw; }
  /* Austin's spec: the wide image as before, fade moved up a few px (ends at 6%, above the
     circle top at ~7%), top-anchored so the circle is never cropped at any band height. */
  .ff-scene img { position: absolute !important; inset: 0 !important; width: 100% !important;
    height: 100% !important; object-fit: cover; object-position: center top;
    -webkit-mask-image: linear-gradient(to bottom, transparent 0, #000 6%);
    mask-image: linear-gradient(to bottom, transparent 0, #000 6%); }
  header { order: 0; } main { order: 1; flex: 0 0 auto !important; } footer { order: 3; margin-bottom: 0; padding-top: 10px; }
}
@media (min-width: 768px) { .ff-scene { display: none !important; } }

/* Compact vertical rhythm on phones so the piggy stage stays visible under the tiles */
@media (max-width: 767px) {
  .opt-tile { min-height: 96px !important; padding: 14px 10px !important; gap: 7px !important; }
  .opt-tile-ic { width: 40px; height: 40px; font-size: 22px !important; }
  .opt-tile-ic svg { width: 24px; height: 24px; }
  .opt-tile-label { font-size: 14.5px; }
  #pbmeter { margin-bottom: 18px !important; }
}

/* Brand SVG icons inside the same chips (same footprint as the old glyphs) */
.opt-tile-ic svg { width: 26px; height: 26px; display: block; }
.opt-row .opt-tile-ic svg { width: 22px; height: 22px; }

/* Mobile rhythm compaction v2: free ~50px so the stage keeps a real band on short phones */
@media (max-width: 767px) {
  main { padding-top: 8px !important; }
  #pbmeter { margin-bottom: 12px !important; }
  #app h1 { margin-bottom: 10px !important; }
  #app h1 + p { margin-bottom: 14px !important; }
  .opt-tile { min-height: 86px !important; }
  #app .grid.gap-3 { gap: 10px !important; }
}

/* (side fades removed — the transparent cutout needs none) */

/* Variant B interstitials on the PGP world (badge was still navy-world) */
.ff-info { border-color: #E0EAD8; }
.ff-info-badge { background: #163A2E; color: #D9EE51; }
.ff-info-pts li { border-bottom-color: #EDF5E4; color: #0E1810; }
.ff-info-pts .material-symbols-outlined { color: #163A2E; }
.ff-info-body { color: #0E1810; }

/* ============ The kitchen ticket printer (analyzing screen, Austin 2026-08-23) ============ */
.ff-printer { width: min(340px, 88%); height: 36px; margin: 6px auto 0; position: relative; z-index: 2;
  background: linear-gradient(180deg, #1C4638, #163A2E); border-radius: 12px;
  box-shadow: 0 10px 24px -10px rgba(14,24,16,.55); }
.ff-printer-slot { position: absolute; left: 22px; right: 22px; bottom: 7px; height: 5px;
  background: #0E1810; border-radius: 3px; }
.ff-printer-led { position: absolute; right: 13px; top: 11px; width: 8px; height: 8px;
  border-radius: 50%; background: #D9EE51; box-shadow: 0 0 6px rgba(217,238,81,.9);
  animation: ffled 1s ease infinite; }
@keyframes ffled { 50% { opacity: .25; box-shadow: none; } }
.ff-chit-wrap { width: min(292px, 78%); margin: 0 auto; }
.ff-chit { background: #FFFDF4; padding: 15px 16px 6px; font-family: 'Courier New', monospace;
  color: #232D24; box-shadow: 0 14px 28px -14px rgba(14,24,16,.4); }
.ff-chit-head { text-align: center; font-size: 11px; letter-spacing: 3px; font-weight: 700;
  margin: 0 0 10px; line-height: 1.7; }
#ffchitlines { list-style: none; margin: 0; padding: 0; min-height: 26px; }
#ffchitlines li { display: flex; align-items: baseline; gap: 6px; font-size: 11.5px;
  letter-spacing: .4px; padding: 5px 0; animation: ffprint .18s ease; }
#ffchitlines li .ff-chit-dots { flex: 1; border-bottom: 2px dotted #C9C4B2; transform: translateY(-3px); }
#ffchitlines li b { color: #1B7F4C; font-weight: 700; opacity: 0; transition: opacity .15s ease; }
#ffchitlines li.done b { opacity: 1; }
@keyframes ffprint { from { transform: translateY(-8px); opacity: 0; } }
.ff-chit-tear { height: 9px;
  background: linear-gradient(45deg, #FFFDF4 6px, transparent 0) 0 0/12px 9px repeat-x,
              linear-gradient(-45deg, #FFFDF4 6px, transparent 0) 0 0/12px 9px repeat-x;
  filter: drop-shadow(0 6px 8px rgba(14,24,16,.15)); }
@media (prefers-reduced-motion: reduce) { .ff-printer-led, #ffchitlines li { animation: none; } }

/* ============ Austin's fix list 2026-08-23 late ============ */
/* #2: no fade/blur at the top of the scene — the image shows clean, full-strength */
.ff-scene img { -webkit-mask-image: none !important; mask-image: none !important; }
/* #1: the stage holds the frame's exact natural height; image fills it completely */
.ff-scene { overflow: hidden; }
.ff-scene img { width: 100%; height: 100%; object-fit: cover; object-position: center bottom; }
/* content and legal always clear the stage — nothing scrolls over the restaurant at rest */
@media (max-width: 767px) { footer { margin-bottom: calc(100vw * 1344 / 3168 + 10px); } }

/* Analyze headline sits right above the printer as its caption (Austin 2026-08-23) */
.pb-loader .ff-analyze-h1 { margin: 0 0 20px; }
.pb-loader { display: flex; flex-direction: column; justify-content: center; min-height: 46vh; }

/* Austin 2026-08-23: the image DOES fade — into the PAGE BACKGROUND COLOR (sage), never white.
   A color-matched overlay from opaque #F0F9E7 at the image's top edge to transparent, so the
   scene dissolves into the page with no visible seam and no white blur. */
.ff-scene::before { content: ''; position: absolute; left: 0; right: 0; top: 0; height: 42%;
  background: linear-gradient(180deg, #F0F9E7 0%, rgba(240,249,231,0) 100%);
  pointer-events: none; z-index: 1; }

/* TCPA checkbox fix (Austin 2026-08-23): the global #app input overrides were hijacking the
   checkbox — 12px radius made it a circle, forced white background erased the checkmark, so
   clicks looked dead. Revert it to a real square native checkbox with a visible check. */
#app input[type="checkbox"] { all: revert; -webkit-appearance: checkbox; appearance: auto;
  width: 19px; height: 19px; min-width: 19px; margin: 2px 0 0; accent-color: #163A2E;
  border-radius: 4px; cursor: pointer; }

/* ============ RELIEFMAX WORLD — personal loan funnel V2 (2026-08-16) ============
   Tokens measured from the V1 funnel + the actual logo file (sampled 2026-08-14):
   ink #103d2c · deep forest #0e3b2e · wordmark green #084033 · grass CTA #0b933f ·
   mint surface #EFF8F1 · logo lime #B8D400 · coin gold #f5b02e.
   Headline face = Montserrat 800 (matches the wordmark, 728px≈732px measured match);
   body = Inter. Overrides the PGP world above; engine and markup unchanged. */

:root, [data-theme="copper"], [data-theme="cool"] {
  --c-primary:#0b933f; --c-primary-container:#103d2c;
  --c-primary-fixed-dim:#A8CF9F; --c-secondary:#0e3b2e; --c-secondary-container:#B8D400;
  --c-surface:#FFFFFF; --c-gold:#f5b02e; }

html, body { background: #EFF8F1 !important; }
body { background: linear-gradient(180deg, #FFFFFF 0%, #EFF8F1 60%) fixed !important;
  font-family: Inter, sans-serif; color: #3C4A42; }

.ff-head { background: rgba(255,255,255,.94); backdrop-filter: blur(8px);
  border-bottom: 1px solid #DFEEE3; }
.ff-head-pill { color: #103d2c; background: #EFF8F1; border: 1px solid #D6E9DB; }

/* Type on light */
#app h1 { color: #084033 !important; font-family: Montserrat, Inter, sans-serif !important;
  font-weight: 800 !important; letter-spacing: -.02em; }
.ff-eyebrow { color: #0b933f; font-family: Montserrat, Inter, sans-serif; }
.ff-micro { color: #5E6E64; }
#app .text-on-surface-variant, #app .font-body-md { color: #3C4A42 !important; }

/* Progress: forest→lime growth bar on a mint track */
.ffbar { background: #DFEEE3; }
.ffbar i { background: linear-gradient(90deg, #0b933f, #B8D400); }
.ffbar-step { color: #103d2c; }
.ffbar-trust { color: #5E6E64; }

/* Tiles: white on mint, forest icon chips, lime selection glow */
.opt-tile { background: #fff !important; border: 1.5px solid #DCEBDF !important;
  box-shadow: 0 4px 16px -8px rgba(16,61,44,.14); }
.opt-tile:hover { border-color: #0b933f !important;
  box-shadow: 0 10px 24px -10px rgba(16,61,44,.2); }
.opt-tile.sel { border-color: #0b933f !important; box-shadow: 0 0 0 3px rgba(184,212,0,.55); }
.opt-tile-ic { background: #EFF8F1; color: #0b933f; }
.opt-tile.sel .opt-tile-ic { background: #103d2c; color: #B8D400; }
.opt-tile-label { color: #084033; font-family: Montserrat, Inter, sans-serif; font-weight: 700; }

/* CTA: grass-green pill, white text (V1's CTA green in the system's pill shape) */
#app .btn-glow { background: #0b933f !important; color: #fff !important;
  border-radius: 999px !important; font-family: Montserrat, Inter, sans-serif !important;
  font-weight: 700 !important; box-shadow: 0 10px 24px -12px rgba(11,147,63,.55); }
#app .btn-glow:hover { background: #0e3b2e !important; }
#app .btn-glow .material-symbols-outlined { color: #B8D400; }

/* Inputs on light */
#app input[type], #app input { background: #fff !important; border-color: #D6E5DA !important;
  color: #084033 !important; }
#app input:focus { border-color: #0b933f !important; box-shadow: 0 0 0 3px rgba(184,212,0,.5) !important; }
#app label > span, #app .text-label-md { color: #103d2c !important; }
#app .text-xs.text-outline, #app label.flex span { color: #5E6E64 !important; }

/* Reveal / recap / loader */
.ff-reveal { box-shadow: 0 14px 34px -18px rgba(16,61,44,.35); border: 1.5px solid #DCEBDF; }
.ff-reveal-label { color: #103d2c; font-family: Montserrat, Inter, sans-serif; }
.ff-reveal-field { background: #EFF8F1; border-color: #D6E9DB; }
.ff-reveal-field:focus-within { border-color: #0b933f; box-shadow: 0 0 0 3px rgba(184,212,0,.5); }
.ff-reveal-field .material-symbols-outlined { color: #0b933f; }
#app .ff-reveal-field input { color: #084033 !important; }
.ff-recap { background: #103d2c; box-shadow: 0 12px 30px -16px rgba(16,61,44,.6); }
.ff-recap-row span { color: #9DBBA8; }
.ff-recap-row b { color: #fff; }
.ff-spin { border-color: #DFEEE3; border-top-color: #0b933f; }
.pb-loader #ffload-title, .pb-loader p { color: #084033 !important; }
#app #ffload-msg { color: #5E6E64 !important; }
.ff-loadbar { background: #DFEEE3; }
.ff-loadbar i { background: linear-gradient(90deg, #0b933f, #B8D400); }

/* Back link + footer */
#app #back { color: #5E6E64; } #app #back:hover { color: #084033; }
.ff-foot-line { color: #103d2c; }
.ff-foot-legal { color: #7C8B82; }

/* Interstitial + analyze printer retheme (statement printer, forest housing) */
.ff-info { border-color: #DCEBDF; }
.ff-info-badge { background: #103d2c; color: #B8D400; }
.ff-info-pts li { border-bottom-color: #E7F3EA; color: #084033; }
.ff-info-pts .material-symbols-outlined { color: #0b933f; }
.ff-info-body { color: #084033; }
.ff-printer { background: linear-gradient(180deg, #14503B, #103d2c);
  box-shadow: 0 10px 24px -10px rgba(16,61,44,.55); }

/* ---- The mobile stage: V1's OWN flipbook frames (1376x768, full-bleed JPG) ----
   The PGP image carried a transparent cutout and used a mask; these frames are full-bleed,
   so the fade is the color-matched OVERLAY into the page mint (#EFF8F1) — never a mask,
   never white (skill rule). Band = 46vw, bottom-anchored; the overlay owns the top seam. */
.ff-scene img {
  -webkit-mask-image: none !important; mask-image: none !important; }
/* Fade overlay REMOVED 2026-08-31: the new flipbook frames bake the mint fade into the
   asset itself (top band = #EFF8F1), per the flipbook-story-frames rule - no CSS overlay. */
@media (max-width: 767px) {
  .ff-scene { height: 42.4vw; } /* frames are 1920x815 */
  .ff-scene img { object-position: center bottom !important;
    -webkit-mask-image: none !important; mask-image: none !important; }
}

/* Footer visibility: base ui-v2 hides <footer> outright (line ~113) and the PGP world never
   re-shows it. A lending funnel keeps its compliance line on screen. Compact it and slot it
   ABOVE the stage (footer order 2, scene order 3) so legal never needs a scroll. */
body.ui-v2 footer { display: block !important; }
@media (max-width: 767px) {
  footer { order: 2 !important; margin-bottom: 0 !important; padding: 6px 16px 2px !important; }
  .ff-scene { order: 3 !important; }
  .ff-foot-line { font-size: 11px; margin-bottom: 2px; }
  .ff-foot-legal { font-size: 9.5px; line-height: 1.45; }
}
/* TCPA checkbox accent in the brand green (base revert rule hardcodes PGP forest) */
#app input[type="checkbox"] { accent-color: #0b933f !important; }

/* Kill every inherited stage-fade overlay (a PGP-world ::before was still painting sage
   #F0F9E7 over the frames). The new flipbook frames carry their own baked #EFF8F1 fade. */
.ff-scene::before, .ff-scene::after { content: none !important; }

/* ============ STAGE: THE WHOLE FRAME ALWAYS SHOWS (Austin 2026-08-31) ============
   "don't cut it off. the whole image on the LP should show, with the SKY in the image
   blending into the background."
   The inherited PGP stage was an absolutely-positioned `object-fit: cover` image inside a
   fixed-height band. Any viewport where the band height and the frame's aspect disagreed
   cropped the picture, and because the image is bottom-anchored the SKY is what got eaten —
   exactly the part that has to blend into the page. Let the image size itself instead: the
   band becomes whatever height the full frame needs, so there is nothing to crop, at any
   width, on any device. The frame's own baked top fade meets the page mint with no seam. */
@media (max-width: 767px) {
  .ff-scene { height: auto !important; min-height: 0 !important; overflow: visible !important; }
  .ff-scene img { position: static !important; inset: auto !important;
    width: 100% !important; height: auto !important;
    object-fit: fill !important; object-position: center !important; }
}

/* The step counter must never wrap: a long trust phrase beside it ("People checked what they
   could save this week") was pushing "STEP 1 OF 8" onto two lines on 375px. */
@media (max-width: 767px) {
  #pbmeter .ffbar-step, #pbmeter .ffbar-pri { white-space: nowrap; flex: 0 0 auto; }
  #pbmeter .ffbar-sec { font-size: 11px; line-height: 1.3; }
}

/* ============ STAGE FADE + DISCLAIMER PLACEMENT (Austin 2026-08-31) ============
   "make sure that the top of the image blends into the background of the landing page ...
    do not clip the top of any images ... move the disclaimer text under the photo."

   THE FADE. Earlier this file killed the inherited overlay outright, because the rebuilt loan
   frames baked their own mint fade into the asset. The other five stories are V1 artwork with
   grey skies that were never built for that, so with no overlay their top edge meets the mint
   page as a hard line. The overlay comes back for every story: a color-matched gradient whose
   opaque end is EXACTLY the page ground (#EFF8F1), so the picture dissolves into the page.
   It is an OVERLAY, never a mask (a mask fading to transparent reads as a white blur on a
   tinted page) and never a crop -- the image still renders at its full natural height, so
   nothing is clipped. On the loan frames it fades mint into mint and is invisible. */
@media (max-width: 767px) {
  .ff-scene { position: relative; }
  .ff-scene::before {
    content: '' !important;
    position: absolute; left: 0; right: 0; top: 0; height: 48%;
    background: linear-gradient(180deg,
      #EFF8F1 0%, #EFF8F1 14%, rgba(239,248,241,.86) 38%, rgba(239,248,241,0) 100%);
    pointer-events: none; z-index: 2;
  }
}

/* THE DISCLAIMER. Lifted out of <footer> in the markup and re-placed after the stage, so the
   order is: lock line -> photo -> disclaimer. Mobile uses flex order (header 0, main 1,
   footer 2, scene 3, legal 4); desktop hides the scene and DOM order already reads correctly. */
.ff-foot-legal { text-align: center; margin: 0; padding: 10px 16px 14px; }
@media (max-width: 767px) { .ff-foot-legal { order: 4; flex: 0 0 auto; } }

/* Centre the disclaimer BLOCK, not just its text. Lifting the <p> out of <footer> cost it the
   footer's centering container: it kept an inherited max-width:460px with margin:0, so on
   desktop the box sat flush against the left edge (text centred inside a left-pinned box).
   Auto side margins centre the box itself at every width. */
.ff-foot-legal { margin-left: auto !important; margin-right: auto !important;
  max-width: 620px; text-align: center !important; }
