/* NeoYug Forms — typeform modal. Purple / deep purple / cream, Poppins.
   Hardened against theme / Elementor / MasterStudy CSS bleed: the look is
   forced on every element so nothing from the page can override it. */
@import url('https://fonts.googleapis.com/css2?family=Poppins:wght@200;300;400;500;600&display=swap');

.nyf-trigger{cursor:pointer}

/* ===== Isolation reset — defeats inherited + element-level theme rules ===== */
.nyf-overlay,
.nyf-overlay *,
.nyf-overlay *::before,
.nyf-overlay *::after{
  box-sizing:border-box;
  font-family:'Poppins',system-ui,-apple-system,sans-serif !important;
  text-transform:none !important;
  text-decoration:none !important;
  letter-spacing:normal;
  float:none !important;
  max-width:none;
}
.nyf-overlay button,
.nyf-overlay input,
.nyf-overlay textarea,
.nyf-overlay a{
  margin:0;
  text-decoration:none !important;
  box-shadow:none !important;
  outline:none !important;
}
.nyf-overlay button{
  background:transparent;border:none;cursor:pointer;line-height:1.2;
}
.nyf-overlay button:hover,.nyf-overlay button:focus,.nyf-overlay button:active,
.nyf-overlay a:hover,.nyf-overlay a:focus,.nyf-overlay a:active{
  text-decoration:none !important;
}
.nyf-overlay h1,.nyf-overlay h2,.nyf-overlay h3,.nyf-overlay p,.nyf-overlay span{
  margin:0;padding:0;text-shadow:none !important;
}
/* honeypot must never render, even if the theme forces inputs visible */
.nyf-overlay .nyf-hp{
  position:absolute !important;left:-9999px !important;top:auto !important;
  width:1px !important;height:1px !important;opacity:0 !important;padding:0 !important;
  border:none !important;background:transparent !important;pointer-events:none !important;
}

/* z-index sits above third-party floating widgets (the WhatsApp FAB paints
   over anything in the 99999 range and was landing on top of the CTA). */
.nyf-overlay{
  position:fixed;inset:0;z-index:2147483000;display:none;align-items:center;justify-content:center;
  background:rgba(20,13,40,.72);padding:24px;
}
.nyf-overlay.nyf-open{display:flex;animation:nyfFade .25s ease both}
@keyframes nyfFade{from{opacity:0}to{opacity:1}}

/* ---- Solid: dedicated form page. The backdrop drops well below the gate's
       own #261A48 so the card reads as lifted, not flush. On dark-on-dark a
       shadow alone barely registers, so a hairline light ring does the edge
       work and the shadow adds the depth under it. ---- */
.nyf-overlay.nyf-solid{
  background:#100A20;
  background:radial-gradient(125% 95% at 50% 42%, #2A1C52 0%, #170F2E 58%, #100A20 100%);
  padding:clamp(24px,5vh,56px);
}
.nyf-overlay.nyf-solid .nyf-close{display:none}
.nyf-overlay.nyf-solid .nyf-gate{
  box-shadow:0 0 0 1px rgba(250,249,246,.07), 0 60px 130px -30px rgba(0,0,0,.9);
}

.nyf-gate{
  --nyf-bg:#261A48;--nyf-accent:#8D22C3;--nyf-accent-soft:rgba(141,34,195,.16);
  --nyf-cream:#FAF9F6;--c75:rgba(250,249,246,.75);--c55:rgba(250,249,246,.55);
  --c45:rgba(250,249,246,.45);--c28:rgba(250,249,246,.28);--c16:rgba(250,249,246,.16);--c10:rgba(250,249,246,.10);
  --lav:#C79BE8;
  position:relative;display:flex;width:min(980px,94vw);height:min(680px,88vh);
  background:var(--nyf-bg) !important;border-radius:16px;overflow:hidden;color:var(--nyf-cream) !important;
  box-shadow:0 40px 90px -20px rgba(10,5,26,.7);animation:nyfRise .45s cubic-bezier(.16,1,.3,1) both;
}
@keyframes nyfRise{from{opacity:0;transform:translateY(16px) scale(.99)}to{opacity:1;transform:none}}

.nyf-close{position:absolute;top:18px;right:20px;width:36px;height:36px;border-radius:50% !important;
  border:1px solid var(--c16) !important;background:transparent !important;color:var(--c55) !important;font-size:17px;line-height:1;cursor:pointer;
  display:flex;align-items:center;justify-content:center;z-index:5;transition:.2s;padding:0 !important}
.nyf-close:hover{border-color:var(--c28) !important;color:var(--nyf-cream) !important}

/* ---- Left pane ---- */
.nyf-aside{position:relative;width:calc(min(680px,88vh) * 4 / 5);flex:none;overflow:hidden}
.nyf-aside .nyf-bg{position:absolute !important;inset:0;width:100% !important;height:100% !important;max-width:none !important;
  object-fit:cover !important;filter:saturate(.85);border-radius:0 !important;margin:0 !important;padding:0 !important;display:block !important}
.nyf-aside .nyf-veil{position:absolute;inset:0;background:linear-gradient(180deg,rgba(28,19,56,.62) 0%,rgba(28,19,56,.14) 34%,rgba(28,19,56,.92) 100%)}
.nyf-aside .nyf-logo{position:absolute;top:34px;left:38px;height:22px !important;width:auto !important;max-width:none !important;opacity:.95}
.nyf-aside .nyf-cap{position:absolute;left:38px;right:34px;bottom:42px;display:flex;flex-direction:column;gap:16px;z-index:2}
.nyf-eyebrow{font-size:12px !important;letter-spacing:.28em !important;text-transform:uppercase !important;color:var(--lav) !important;font-weight:500 !important}
.nyf-title{font-weight:200 !important;font-size:56px !important;line-height:.98 !important;letter-spacing:-.02em !important;color:var(--nyf-cream) !important}
.nyf-rule{width:52px;height:1px;background:rgba(199,155,232,.6)}
.nyf-asub{font-size:14px !important;font-weight:300 !important;line-height:1.65 !important;color:var(--c75) !important;max-width:320px}

/* ---- Right pane ---- */
.nyf-main{flex:1;display:flex;flex-direction:column;padding:44px 54px;min-width:0}
.nyf-prog{height:2px;width:100%;background:var(--c10);border-radius:2px;overflow:hidden;flex:none}
.nyf-prog>i{display:block;height:100%;width:0;background:var(--nyf-accent);border-radius:2px;transition:width .55s cubic-bezier(.16,1,.3,1)}
.nyf-stage{flex:1;display:flex;align-items:center;min-height:0;overflow-y:auto;overflow-x:hidden;scrollbar-width:none;-ms-overflow-style:none}
.nyf-stage::-webkit-scrollbar{width:0;height:0;display:none}
.nyf-stage-inner{width:100%;padding:8px 0}
.nyf-fade{animation:nyfStepIn .5s cubic-bezier(.16,1,.3,1) both}
@keyframes nyfStepIn{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}

.nyf-intro,.nyf-done{display:flex;flex-direction:column;gap:18px;max-width:460px}
.nyf-intro{cursor:pointer}
/* .nyf-intro is a div[role=button], so the button/input/textarea/a reset above
   never matched it — and modal.js focuses it on open, so Safari paints its own
   ring. Drop the default; keep a branded one for real keyboard navigation. */
.nyf-overlay .nyf-intro:focus{outline:none !important}
.nyf-overlay .nyf-intro:focus-visible{outline:2px solid var(--lav) !important;outline-offset:8px;border-radius:10px}
.nyf-eyebrow2{font-size:12px !important;letter-spacing:.28em !important;text-transform:uppercase !important;color:var(--lav) !important;font-weight:500 !important}
.nyf-display{font-weight:200 !important;letter-spacing:-.02em !important;color:var(--nyf-cream) !important}
.nyf-intro .nyf-display{font-size:46px !important;line-height:1.04 !important}
.nyf-lead{font-size:16px !important;font-weight:300 !important;line-height:1.7 !important;color:var(--c55) !important;max-width:420px}
.nyf-begin-hint{font-size:12px !important;letter-spacing:.06em !important;color:var(--c45) !important;margin-top:6px;display:inline-flex;align-items:center;gap:8px}
.nyf-begin-hint kbd{font-size:11px !important;font-weight:500 !important;background:var(--c10) !important;border-radius:5px;padding:3px 6px;color:var(--c75) !important;border:none !important;box-shadow:none !important}
.nyf-done .nyf-mark{width:44px;height:44px;border-radius:50%;border:1px solid var(--nyf-accent);display:flex;align-items:center;justify-content:center;color:var(--lav) !important;font-size:19px}
.nyf-done .nyf-display{font-size:38px !important;line-height:1.06 !important}

.nyf-qmeta{display:flex;align-items:center;gap:14px;margin-bottom:16px}
.nyf-qmeta .nyf-count{font-size:12px !important;letter-spacing:.14em !important;color:var(--lav) !important;font-weight:600 !important}
.nyf-qmeta .nyf-tick{width:22px;height:1px;background:var(--c28)}
.nyf-qmeta .nyf-qlabel{font-size:11px !important;letter-spacing:.24em !important;text-transform:uppercase !important;color:var(--c45) !important;font-weight:500 !important}
.nyf-qprompt{font-weight:300 !important;font-size:36px !important;line-height:1.12 !important;letter-spacing:-.01em !important;color:var(--nyf-cream) !important;max-width:520px}

.nyf-field{margin-top:20px;max-width:520px}
.nyf-in{width:100% !important;background:transparent !important;border:none !important;border-bottom:1.5px solid var(--c28) !important;
  border-radius:0 !important;color:var(--nyf-cream) !important;font-size:23px !important;font-weight:300 !important;padding-top:8px !important;padding-right:2px !important;padding-bottom:8px !important;
  outline:none !important;box-shadow:none !important;transition:border-color .2s;min-height:0 !important;height:auto !important}
.nyf-field > input.nyf-in{padding-left:2px !important}
.nyf-in::placeholder{color:var(--c45) !important;opacity:1}
.nyf-in:focus{border-bottom-color:var(--nyf-accent) !important;background:transparent !important;box-shadow:none !important}
textarea.nyf-in{background:rgba(250,249,246,.05) !important;border:1px solid var(--c16) !important;border-bottom:1.5px solid var(--c28) !important;border-radius:8px !important;padding:14px 16px !important;font-size:18px !important;line-height:1.55 !important;min-height:130px !important;height:auto !important;resize:none;color:var(--nyf-cream) !important}
textarea.nyf-in:focus{border-color:var(--nyf-accent) !important;border-bottom-color:var(--nyf-accent) !important}

.nyf-opts{display:flex;flex-direction:column;gap:10px;margin-top:20px;max-width:520px}
.nyf-opt{display:flex;align-items:center;gap:14px;width:100% !important;text-align:left !important;cursor:pointer;
  font-size:16px !important;font-weight:300 !important;text-transform:none !important;color:var(--nyf-cream) !important;
  padding:13px 16px !important;border-radius:3px !important;background:rgba(250,249,246,.03) !important;
  border:1px solid var(--c16) !important;transition:border-color .2s,background .2s,transform .15s;letter-spacing:normal !important}
.nyf-opt:hover{border-color:var(--c28) !important;transform:translateX(2px);text-decoration:none !important}
.nyf-opt.nyf-sel{background:var(--nyf-accent-soft) !important;border-color:var(--nyf-accent) !important}
.nyf-opt .nyf-badge{flex:none;width:26px !important;height:26px !important;border-radius:3px !important;display:flex;align-items:center;justify-content:center;
  font-size:12px !important;font-weight:600 !important;background:transparent !important;color:var(--c55) !important;border:1px solid var(--c28) !important;transition:.15s}
.nyf-opt.nyf-sel .nyf-badge{background:var(--nyf-accent) !important;color:var(--nyf-cream) !important;border-color:var(--nyf-accent) !important}
.nyf-opt .nyf-txt{flex:1;text-transform:none !important;text-decoration:none !important;font-weight:300 !important}
.nyf-multi-hint{font-size:12.5px !important;font-weight:300 !important;color:var(--c45) !important;margin-top:4px}
.nyf-err{margin-top:12px;font-size:13px !important;font-weight:300 !important;color:#D6A9F2 !important;min-height:16px;opacity:0;transition:.15s}
.nyf-err.nyf-show{opacity:1}

/* ---- Nav ---- */
.nyf-nav{display:flex;align-items:center;justify-content:space-between;padding-top:22px;flex:none}
.nyf-nav.nyf-nav--hide{display:none !important}
.nyf-nav .nyf-back{font-size:12px !important;font-weight:500 !important;letter-spacing:.1em !important;text-transform:uppercase !important;color:var(--c55) !important;
  background:transparent !important;border:none !important;cursor:pointer;padding:6px 0 !important;transition:.2s;visibility:hidden;text-decoration:none !important}
.nyf-nav .nyf-back:hover{color:var(--nyf-cream) !important;text-decoration:none !important}
.nyf-nav .nyf-back.nyf-show{visibility:visible}
.nyf-cta{display:inline-flex;align-items:center;gap:10px;font-size:13px !important;font-weight:600 !important;
  letter-spacing:.12em !important;text-transform:uppercase !important;color:var(--nyf-cream) !important;background:var(--nyf-accent) !important;
  border:none !important;border-radius:3px !important;padding:14px 28px !important;cursor:pointer;transition:filter .2s,transform .15s;text-decoration:none !important}
.nyf-cta:hover{filter:brightness(1.12);text-decoration:none !important}
.nyf-cta:active{transform:translateY(1px)}
.nyf-cta.nyf-busy{opacity:.6;pointer-events:none}
.nyf-again{align-self:flex-start;font-size:11px !important;font-weight:500 !important;letter-spacing:.12em !important;text-transform:uppercase !important;color:var(--c55) !important;
  background:transparent !important;border:none !important;cursor:pointer;padding:4px 0 !important;border-bottom:1px solid var(--c28) !important;transition:.2s;text-decoration:none !important}
.nyf-again:hover{color:var(--nyf-cream) !important;text-decoration:none !important}

/* Custom phone field (native select + input) — replaces intl-tel-input */
.nyf-tel{display:flex;align-items:center;gap:12px;border-bottom:1.5px solid var(--c28) !important;transition:border-color .2s}
.nyf-tel:focus-within{border-bottom-color:var(--nyf-accent) !important}
.nyf-cc{flex:none;display:inline-flex;align-items:center;gap:8px;background:transparent !important;border:none !important;border-radius:0 !important;color:var(--nyf-cream) !important;font-family:'Poppins',sans-serif !important;font-size:20px !important;font-weight:300 !important;line-height:1.2 !important;padding:8px 4px 8px 0 !important;margin:0 !important;cursor:pointer;outline:none !important;box-shadow:none !important;white-space:nowrap;text-transform:none !important}
.nyf-cc .nyf-cc-arrow{font-size:11px !important;color:var(--lav) !important;transition:transform .2s;line-height:1}
.nyf-cc[aria-expanded="true"] .nyf-cc-arrow{transform:rotate(180deg)}
.nyf-cc-list{position:fixed;z-index:2147483001;display:none;background:#2E2352 !important;border:1px solid var(--c16) !important;border-radius:10px !important;box-shadow:0 18px 44px rgba(10,5,26,.6) !important;padding:6px !important;overflow-y:auto !important;overflow-x:hidden !important;scrollbar-width:thin;scrollbar-color:rgba(250,249,246,.28) transparent}
.nyf-cc-list::-webkit-scrollbar{width:8px;height:0}
.nyf-cc-list::-webkit-scrollbar-track{background:transparent}
.nyf-cc-list::-webkit-scrollbar-thumb{background:rgba(250,249,246,.24) !important;border-radius:8px}
.nyf-cc-opt{display:block;width:100% !important;text-align:left !important;background:transparent !important;border:none !important;color:var(--nyf-cream) !important;font-family:'Poppins',sans-serif !important;font-size:16px !important;font-weight:300 !important;padding:9px 16px !important;border-radius:6px !important;cursor:pointer;text-transform:none !important;letter-spacing:normal !important;text-decoration:none !important}
.nyf-cc-opt:hover{background:rgba(141,34,195,.18) !important}
.nyf-cc-opt.nyf-sel{background:rgba(141,34,195,.30) !important;color:#fff !important}
.nyf-tel .nyf-phone{flex:1;min-width:0;width:auto !important;border:none !important;border-bottom:none !important;border-radius:0 !important;padding-left:0 !important;background:transparent !important;font-size:20px !important}
.nyf-tel .nyf-phone:focus{border:none !important;border-bottom:none !important;background:transparent !important}

/* ---- Ninth Gate masterclass below-video block ---- */
/* The block is inserted as a sibling of the masterclass #neo-player section, so
 * with no width of its own it ran the full page width while the player above it
 * sat inset — they read as unrelated. Match the player: capped at its 1040px
 * frame, centred, and inset by the masterclass page's own --neo-pad-x so the
 * two line up at every width. calc() keeps a gutter even below 1040px, and the
 * 20px fallback covers a page where that token is not defined (and phones,
 * where the player deliberately goes edge-to-edge but body copy must not). */
.nyf-ng-block{max-width:1040px;width:calc(100% - (2 * var(--neo-pad-x, 20px)));margin:28px auto;padding:26px 28px;box-sizing:border-box;border:1px solid rgba(141,34,195,.28);border-radius:14px;background:rgba(38,26,72,.04)}
@media (max-width:760px){.nyf-ng-block{width:calc(100% - 40px);margin:20px auto;padding:20px 18px}.nyf-ng-ctas .nyf-ng-primary,.nyf-ng-ctas .nyf-ng-secondary{flex:1 1 100%;justify-content:center}}
.nyf-ng-block .nyf-ng-info{font-size:16px !important;line-height:1.7 !important;color:#261A48 !important;margin:0 0 18px !important}
.nyf-ng-ctas{display:flex;flex-wrap:wrap;gap:12px}
.nyf-ng-primary{display:inline-flex;align-items:center;gap:8px;background:#8D22C3 !important;color:#FAF9F6 !important;border:none !important;border-radius:8px !important;
  padding:14px 26px !important;font-size:14px !important;font-weight:600 !important;letter-spacing:.02em !important;cursor:pointer;transition:filter .2s;text-decoration:none !important;text-transform:none !important}
.nyf-ng-primary:hover{filter:brightness(1.1);text-decoration:none !important}
.nyf-ng-secondary{display:inline-flex;align-items:center;gap:8px;background:transparent !important;color:#261A48 !important;border:1.5px solid #261A48 !important;
  border-radius:8px !important;padding:13px 24px !important;font-size:14px !important;font-weight:600 !important;text-decoration:none !important;text-transform:none !important;transition:.2s}
.nyf-ng-secondary:hover{background:#261A48 !important;color:#FAF9F6 !important;text-decoration:none !important}

/* ===== Mobile: PAGE MODE, not an overlay =====
 * A position:fixed sheet is unwinnable on phones. Some browsers shrink the
 * viewport for their toolbar (classic iOS Safari, so 100vh over-reports),
 * others float it over the page and report nothing at all (iOS 26 Safari's
 * pill bar, Chrome's bottom bar, Arc). A pinned bottom row loses to one or
 * the other no matter how the height is measured.
 *
 * So on phones the form stops being a sheet and becomes the page: the rest of
 * the document is hidden, the overlay goes static in the flow, and the nav row
 * is an ordinary block that the browser can always scroll into view. Same as
 * the gift shop quizzes. Nothing left to measure. */
html.nyf-page-mode,
html.nyf-page-mode body{background:#261A48 !important;overflow-x:hidden}
html.nyf-page-mode body > *:not(.nyf-overlay){display:none !important}

.nyf-overlay.nyf-page{position:absolute;top:0;left:0;right:auto;bottom:auto;
  /* svh, NOT dvh. dvh tracks the browser chrome, so it changes continuously as
     the toolbar collapses on scroll — the element resizes under your finger and
     the page appears to jiggle. svh is the toolbars-showing height and never
     moves. It only sets a floor here; taller content just makes the page taller. */
  width:100%;height:auto;min-height:100vh;min-height:100svh;
  padding:0;background:#261A48;display:none}
.nyf-overlay.nyf-page.nyf-open{display:block;animation:none}
.nyf-overlay.nyf-page .nyf-gate{position:relative;display:flex;flex-direction:column;
  width:100%;height:auto;min-height:0;max-height:none;max-width:none;
  border-radius:0;overflow:visible;box-shadow:none;animation:none;
  /* Tail spacer so the CTA never ends flush against a floating toolbar. The
     page scrolls, so being generous here costs nothing. */
  padding-bottom:72px;
  padding-bottom:calc(env(safe-area-inset-bottom,0px) + 72px)}
/* Stage stops being its own scroller — the document scrolls instead. */
.nyf-overlay.nyf-page .nyf-stage{display:block;flex:none;min-height:0;overflow:visible}
.nyf-overlay.nyf-page .nyf-main{flex:none;padding:20px 20px 0}
.nyf-overlay.nyf-page .nyf-nav{padding-top:26px;padding-bottom:0}
.nyf-overlay.nyf-page .nyf-close{position:fixed;top:calc(env(safe-area-inset-top,0px) + 12px);right:14px}

/* ---- Mobile typography / hero, shared by page mode ---- */
.nyf-overlay.nyf-mobile .nyf-aside{position:relative;width:100%;height:auto;max-width:none;min-width:0;flex:none;display:flex;flex-direction:column;align-items:center;gap:12px;padding:28px 20px 4px;overflow:visible;background:transparent}
.nyf-overlay.nyf-mobile .nyf-aside .nyf-bg{position:static !important;inset:auto !important;width:190px !important;height:auto !important;aspect-ratio:4/5;object-fit:cover !important;object-position:center 50% !important;border-radius:16px !important;flex:none;display:block !important;margin:0 !important;filter:saturate(.9)}
.nyf-overlay.nyf-mobile .nyf-aside .nyf-veil{display:none !important}
.nyf-overlay.nyf-mobile .nyf-aside .nyf-logo{display:none !important}
.nyf-overlay.nyf-mobile .nyf-aside .nyf-cap{position:static !important;left:auto !important;right:auto !important;bottom:auto !important;align-items:center;text-align:center;gap:5px}
.nyf-overlay.nyf-mobile .nyf-title{font-size:22px !important;line-height:1.05 !important}
.nyf-overlay.nyf-mobile .nyf-title br{display:none !important}
.nyf-overlay.nyf-mobile .nyf-eyebrow{font-size:10px !important;letter-spacing:.24em !important}
.nyf-overlay.nyf-mobile .nyf-rule,.nyf-overlay.nyf-mobile .nyf-asub{display:none}
.nyf-overlay.nyf-mobile .nyf-stage{align-items:flex-start}
.nyf-overlay.nyf-mobile .nyf-stage-inner{padding:16px 0 0}
.nyf-overlay.nyf-mobile .nyf-intro .nyf-display{font-size:30px !important}
.nyf-overlay.nyf-mobile .nyf-lead{font-size:15px !important}
.nyf-overlay.nyf-mobile .nyf-qprompt{font-size:24px !important;max-width:none}
.nyf-overlay.nyf-mobile .nyf-done .nyf-display{font-size:26px !important}
.nyf-overlay.nyf-mobile .nyf-in{font-size:18px !important}
.nyf-overlay.nyf-mobile .nyf-cc{font-size:16px !important}
.nyf-overlay.nyf-mobile .nyf-tel .nyf-phone{font-size:17px !important}
.nyf-overlay.nyf-mobile .nyf-tel{gap:8px}
.nyf-overlay.nyf-mobile textarea.nyf-in{min-height:108px !important}
.nyf-overlay.nyf-mobile .nyf-opts{gap:9px;margin-top:16px}
.nyf-overlay.nyf-mobile .nyf-opt{padding:11px 14px !important;font-size:15px !important}
.nyf-overlay.nyf-mobile .nyf-cta{padding:12px 20px !important;font-size:12px !important}
/* Short viewports get a smaller hero so the first question is above the fold. */
@media (max-height:760px){
  .nyf-overlay.nyf-mobile .nyf-aside{padding:14px 20px 2px;gap:8px}
  .nyf-overlay.nyf-mobile .nyf-aside .nyf-bg{width:120px !important}
}
@media (prefers-reduced-motion:reduce){.nyf-overlay *{animation:none !important;transition:none !important}}
