/* landing page styles: static, so they're served as a cached file instead of inline in every page (was marketing/landing/_styles.ejs). */

.jt-gateway-bg{ background:#fff; }
.jt-kicker{ font-size:12px; font-weight:600; letter-spacing:.35em; text-transform:uppercase; color:#fe5c0e; }

/* ---------- feature video ---------- */
.jt-video-frame{ position:relative; z-index:2; container-type:size; isolation:isolate;
  /* full-bleed + full-height, like the bundles panel */
  width:100vw; max-width:none; margin:0 0 0 calc(50% - 50vw);
  height:100svh; min-height:560px; overflow:hidden; background:#0f1220;
  /* grows to full width as it scrolls into view (script sets --vs / --vr) */
  transform:scale(var(--vs, 1)); border-radius:var(--vr, 0px); transform-origin:center top; will-change:transform; }

.jt-curtain{ width:100%; display:flex; flex-direction:column; align-items:center; }
/* (the old "curtain" pin is gone: the stacking cards below are the page's only scroll-over effect) */
/* iframe is sized to "cover" the frame so the player never letterboxes */
.jt-video-frame iframe{ position:absolute; top:50%; left:50%; width:100%; height:100%; transform:translate(-50%,-50%); border:0; pointer-events:none; }
@supports (width:1cqw){
  .jt-video-frame iframe{ width:max(100cqw, 177.78cqh); height:max(100cqh, 56.25cqw); }
}
.jt-video-poster{ position:absolute; inset:0; z-index:1; width:100%; height:100%; object-fit:cover; pointer-events:none; transition:opacity .4s ease; }
.jt-video-poster.is-hidden{ opacity:0; }
/* crop the black bars baked into the thumbnail: size it like the video, then push the bars
   past the top and bottom edges. --jt-bars = height of ONE bar as a share of the image
   (0.125 = 12.5%, the usual for a 16:9 picture in a 4:3 thumbnail). Raise it if a sliver remains. */
@supports (width:1cqw){
  .jt-video-poster{ --jt-bars:.125; inset:auto; top:50%; left:50%;
    width:max(100cqw, 177.78cqh); height:calc(max(100cqh, 56.25cqw) / (1 - 2 * var(--jt-bars)));
    transform:translate(-50%,-50%); }
}
/* the thumbnail and video have black bars baked in; zoom slightly on mobile to push them out of the square */
@media (max-width:767px){
  .jt-video-frame iframe{ transform:translate(-50%,-50%) scale(1.15); }
}
@supports not (width:1cqw){ @media (max-width:767px){ .jt-video-poster{ transform:scale(1.15); } } }
/* dark overlay with title; fades out while the video plays */
.jt-video-overlay{ position:absolute; inset:0; z-index:1; display:grid; place-items:center; padding:96px 24px 120px; text-align:center; color:#fff; pointer-events:none; transition:opacity .4s ease;
  background:radial-gradient(ellipse at center, rgba(8,10,20,.45) 0%, rgba(8,10,20,.72) 100%), linear-gradient(180deg, rgba(8,10,20,.35) 0%, rgba(8,10,20,0) 40%, rgba(8,10,20,.6) 100%); }
.jt-video-overlay.is-hidden{ opacity:0; }
.jt-video-overlay.is-hidden .jt-video-cta{ pointer-events:none; }
.jt-video-inner{ max-width:46rem; margin:0 auto; }
/* same type as the Seed Bride page hero (seedbride/landing.ejs) */
.jt-video-tag{ display:inline-flex; align-items:center; gap:10px; font-size:13px; font-weight:700; letter-spacing:.16em; text-transform:uppercase; color:#ffcfb0; }
.jt-video-tag::before{ content:""; width:28px; height:2px; background:#ffcfb0; border-radius:2px; }
.jt-video-title{ margin:22px 0 0; color:#fff; font-weight:750; letter-spacing:-.045em; line-height:1; font-size:clamp(44px,8vw,104px); text-wrap:balance; text-shadow:0 2px 30px rgba(0,0,0,.35); }
.jt-video-title em{ font-style:normal; background:linear-gradient(90deg,#ffd9bd,#ff9a5c); -webkit-background-clip:text; background-clip:text; color:transparent; text-shadow:none; }
.jt-video-desc{ margin:26px auto 0; max-width:36rem; font-size:clamp(17px,1.7vw,21px); line-height:1.6; color:rgba(255,255,255,.95); text-wrap:balance; }
.jt-video-cta{ display:flex; flex-wrap:wrap; justify-content:center; gap:12px; margin-top:34px; pointer-events:auto; }
.jt-vbtn{ display:inline-flex; align-items:center; gap:10px; text-decoration:none; padding:16px 30px; border-radius:999px; font-size:16px; font-weight:650; transition:transform .2s ease, background .2s ease, color .2s ease; }
.jt-vbtn-solid{ background:#fff; color:#0f1220; }
.jt-vbtn-solid:hover{ transform:translateY(-2px); background:#fe5c0e; color:#fff; }
.jt-vbtn-ghost{ color:#fff; background:rgba(255,255,255,.12); border:1px solid rgba(255,255,255,.55); backdrop-filter:blur(4px); }
.jt-vbtn-ghost:hover{ transform:translateY(-2px); background:rgba(255,255,255,.24); }
.jt-vbtn:focus-visible{ outline:3px solid #fff; outline-offset:3px; }
@media (max-width:640px){
  .jt-video-cta{ flex-direction:column; align-items:stretch; max-width:300px; margin-left:auto; margin-right:auto; }
  .jt-vbtn{ justify-content:center; }
}
.jt-video-controls{ position:absolute; z-index:2; bottom:28px; left:50%; transform:translateX(-50%); display:flex; gap:10px; }
.jt-video-toggle{ position:static; display:grid; place-items:center; width:44px; height:44px; border:1px solid rgba(255,255,255,.35); border-radius:999px; background:rgba(15,18,32,.72); color:#fff; cursor:pointer; backdrop-filter:blur(8px); transition:background .2s ease, transform .2s ease; }
.jt-video-toggle:hover{ background:rgba(15,18,32,.92); transform:scale(1.05); }
.jt-video-toggle:focus-visible{ outline:2px solid #fff; outline-offset:3px; }
.jt-video-toggle svg{ width:20px; height:20px; fill:currentColor; }
.jt-video-toggle .jt-icon-play, .jt-video-toggle .jt-icon-unmuted{ display:none; }
.jt-video-toggle[aria-pressed="true"] .jt-icon-unmuted{ display:block; }
.jt-video-toggle[aria-pressed="true"] .jt-icon-muted{ display:none; }
.jt-video-toggle[aria-pressed="true"] .jt-icon-play{ display:block; }
.jt-video-toggle[aria-pressed="true"] .jt-icon-pause{ display:none; }

/* ---------- links under the video ---------- */
.jt-seed-links{ display:flex; flex-wrap:wrap; justify-content:center; gap:14px 32px; margin-top:28px; }
.jt-seed-links a{
  padding-bottom:6px; font-size:16px; font-weight:600; letter-spacing:.01em; color:#0f1220;
  background:linear-gradient(#fe5c0e,#fe5c0e) left bottom / 40% 3px no-repeat;
  transition:background-size .35s cubic-bezier(.4,0,.2,1);
}
.jt-seed-links a:hover{ background-size:100% 3px; }
.jt-seed-links a:focus-visible{ outline:3px solid #0f1220; outline-offset:4px; }

/* ---------- mini blog (under Seed Bride) ---------- */
.jt-mblog{ width:100%; max-width:64rem; margin:96px auto 0; }
.jt-mblog-head{ display:flex; flex-wrap:wrap; align-items:flex-end; justify-content:space-between; gap:16px 32px; }
.jt-mblog-head h2{ margin:14px 0 0; font-size:clamp(32px,4.4vw,52px); font-weight:600; letter-spacing:-.035em; line-height:1.05; }
.jt-mblog-head h2 em{ font-style:normal; color:#fe5c0e; }
.jt-mblog-grid{ display:grid; gap:36px 24px; margin-top:36px; grid-template-columns:1fr; }
@media (min-width:640px){ .jt-mblog-grid{ grid-template-columns:repeat(2,1fr); } }
@media (min-width:1024px){ .jt-mblog-grid{ grid-template-columns:repeat(3,1fr); } }
.jt-mblog-card{ position:relative; display:flex; flex-direction:column; gap:10px; }
.jt-mblog-img{ position:relative; aspect-ratio:16/11; margin-bottom:6px; overflow:hidden; border-radius:22px; background:linear-gradient(135deg,#fdeeea,#ffe2cf); }
.jt-mblog-img img{ position:absolute; inset:0; width:100%; height:100%; object-fit:cover; transition:transform .6s cubic-bezier(.2,.7,.2,1); }
.jt-mblog-card:hover .jt-mblog-img img{ transform:scale(1.05); }
.jt-mblog-tag{ font-size:12px; font-weight:700; letter-spacing:.14em; text-transform:uppercase; color:#fe5c0e; }
.jt-mblog-card h3{ margin:0; font-size:19px; font-weight:600; line-height:1.3; letter-spacing:-.015em; }
.jt-mblog-card h3 a{ color:#0f1220; text-decoration:none; }
.jt-mblog-card h3 a::after{ content:""; position:absolute; inset:0; }   /* whole card is clickable */
.jt-mblog-card:focus-within{ outline:3px solid #fe5c0e; outline-offset:6px; border-radius:22px; }
.jt-mblog-card h3 a:focus-visible{ outline:none; }
.jt-mblog-date{ font-size:13px; color:rgba(15,18,32,.5); }
.jt-mblog-foot{ display:flex; justify-content:center; margin-top:48px; }
/* mobile: compact list (small photo left, text right) */
@media (max-width:639px){
  .jt-mblog{ margin-top:72px; }
  .jt-mblog-grid{ gap:0; margin-top:24px; border-top:1px solid rgba(15,18,32,.1); }
  .jt-mblog-card{ display:grid; grid-template-columns:96px 1fr; grid-template-rows:auto auto 1fr; column-gap:16px; row-gap:4px;
    padding:16px 0; border-bottom:1px solid rgba(15,18,32,.1); }
  .jt-mblog-img{ grid-row:1 / -1; aspect-ratio:1; margin:0; border-radius:16px; align-self:start; }
  .jt-mblog-card h3{ font-size:16px; line-height:1.35; display:-webkit-box; -webkit-line-clamp:3; -webkit-box-orient:vertical; overflow:hidden; }
  .jt-mblog-tag{ font-size:11px; }
  .jt-mblog-date{ font-size:12px; }
  .jt-mblog-card:focus-within{ border-radius:12px; outline-offset:2px; }
  .jt-mblog-foot{ margin-top:28px; }
}
@media (prefers-reduced-motion:reduce){ .jt-mblog-img img{ transition:none; } .jt-mblog-card:hover .jt-mblog-img img{ transform:none; } }

/* ---------- one-line summary under the headline ---------- */
.jt-sub{ margin:28px auto 0; max-width:34rem; padding:0 8px; text-align:center; font-size:clamp(16px,1.6vw,19px); line-height:1.55; color:rgba(15,18,32,.68); text-wrap:balance; }
@media (min-width:768px){ .jt-sub{ margin-top:34px; } }

/* handwritten line: Parisienne, letters dissolve in one after another (script splits the text) */
.jt-script{ max-width:40rem; font-family:"Parisienne", cursive; font-size:clamp(26px,3vw,38px); line-height:1.3; color:#0f1220; }
.jt-script .w{ display:inline-block; white-space:nowrap; }
.jt-script .l{ display:inline-block; opacity:0; filter:blur(8px); transform:translateY(.18em);
  animation:jt-ink .7s cubic-bezier(.2,.7,.2,1) forwards; animation-delay:calc(var(--i) * 32ms + 250ms); }
@keyframes jt-ink{ to{ opacity:1; filter:blur(0); transform:none; } }
@media (prefers-reduced-motion:reduce){ .jt-script .l{ opacity:1; filter:none; transform:none; animation:none; } }

/* ---------- trust row under the summary ---------- */
.jt-proof{ display:flex; flex-wrap:wrap; justify-content:center; gap:6px 18px; margin:14px 0 0; padding:0; list-style:none; font-size:13.5px; font-weight:500; color:rgba(15,18,32,.6); }
.jt-proof li{ display:flex; align-items:center; gap:7px; }
.jt-proof li::before{ content:""; width:15px; height:15px; border-radius:50%; background:#fff2ec url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23fe5c0e' stroke-width='3.6' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 6 9 17l-5-5'/%3E%3C/svg%3E") center/9px no-repeat; }

/* ---------- rotating hero word ---------- */
.jt-slot{ display:inline-block; vertical-align:bottom; height:1.2em; overflow:hidden; line-height:1.2; white-space:nowrap; text-align:left; transition:width .35s cubic-bezier(.4,0,.2,1); }
.jt-word{ display:inline-block; color:#fe5c0e; will-change:transform; }
@keyframes jt-word-in{ from{ transform:translateY(105%); opacity:0; } to{ transform:translateY(0); opacity:1; } }
@keyframes jt-word-out{ from{ transform:translateY(0); opacity:1; } to{ transform:translateY(-105%); opacity:0; } }
.jt-word.is-in{ animation:jt-word-in .55s cubic-bezier(.2,.8,.2,1) both; }
.jt-word.is-out{ animation:jt-word-out .35s cubic-bezier(.5,0,.8,.4) both; }

/* ---------- flat pastel cards ---------- */
.jt-card3{
  --pad:26px;
  position:relative; display:flex; flex-direction:column; gap:24px; overflow:hidden;
  border-radius:28px; padding:var(--pad); color:#0f1220;
  transition:transform .3s ease;
}
@media (min-width:1024px){
  .jt-card3{ --pad:30px; display:grid; grid-template-columns:1.05fr 1fr; gap:28px; min-height:340px; }
}
.jt-card3:hover{ transform:translateY(-4px); }
.jt-c-find:hover{ transform:none; }   /* search card stays still while typing */
.jt-c-plan{   background:#ffe3d2; --accent:#b8420a; }
.jt-c-vendor{ background:#ece1f5; --accent:#6b3fa0; }
.jt-c-find{   background:#d9f0e8; --accent:#0f766e; }
.jt-c-blog{   background:#fff1bd; --accent:#8a6a00; }
.jt-card-text{ display:flex; flex-direction:column; min-width:0; }
.jt-tag{ font-size:12px; font-weight:600; letter-spacing:.3em; text-transform:uppercase; color:var(--accent); }
.jt-card3 h2{ margin-top:14px; font-size:clamp(28px,3vw,36px); font-weight:600; letter-spacing:-.02em; line-height:1.1; }
.jt-desc{ margin-top:12px; margin-bottom:24px; max-width:32ch; font-size:15px; line-height:1.6; color:rgba(15,18,32,.7); }
/* text link with the orange underline bar (same feel as the invite page) */
.jt-link{
  align-self:flex-start; margin-top:auto; padding-bottom:8px;
  font-size:18px; font-weight:600; letter-spacing:.01em; color:#0f1220;
  background:linear-gradient(#fe5c0e,#fe5c0e) left bottom / 40% 4px no-repeat;
  transition:background-size .35s cubic-bezier(.4,0,.2,1);
}
.jt-link::after{ content:""; position:absolute; inset:0; border-radius:28px; }   /* whole card is clickable */
.jt-link:focus-visible{ outline:3px solid #0f1220; outline-offset:4px; }
.jt-card3:hover .jt-link{ background-size:100% 4px; }
.jt-mblog-foot .jt-link{ position:relative; align-self:auto; margin-top:0; font-size:16px; text-decoration:none; }
.jt-mblog-foot .jt-link::after{ content:none; }
.jt-mblog-foot .jt-link:hover{ background-size:100% 4px; }
/* regular rounded-corner photo */
.jt-photo{ height:210px; flex:none; overflow:hidden; border-radius:20px; background:rgba(255,255,255,.4); }
.jt-photo img{ width:100%; height:100%; object-fit:cover; display:block; }
.jt-photo .jt-pos-top{ object-position:50% 25%; }
@media (min-width:1024px){ .jt-photo{ height:auto; min-height:260px; } }
/* underline-style search field (like the invite page's name field) */
.jt-search{ display:flex; align-items:center; gap:12px; border-bottom:2px solid rgba(15,18,32,.25); transition:border-color .2s ease; }
.jt-search:focus-within{ border-color:#0f1220; }
.jt-search input{ flex:1; min-width:0; padding:12px 0; border:0; outline:0; background:transparent; font-size:18px; color:#0f1220; }
.jt-search input::placeholder{ color:rgba(15,18,32,.4); }
.jt-search button{ padding:8px 0; border:0; background:none; cursor:pointer; font-size:16px; font-weight:600; color:#0f1220; white-space:nowrap; }
.jt-search button:hover{ opacity:.7; }
/* Find vendors has no photo: single column, search field sits at the bottom */
@media (min-width:1024px){ .jt-c-find{ grid-template-columns:1fr; } }
.jt-c-find form{ margin-top:auto; }

/* ---------- browse the marketplace (full-bleed sheet, slides over the cards) ---------- */
.jt-mkt{ position:relative; z-index:2; box-sizing:border-box; width:100vw; margin-left:calc(50% - 50vw);
  padding:clamp(64px,11vh,120px) 0 clamp(56px,9vh,104px); background:#f5f4f2;
  display:flex; flex-direction:column; justify-content:center; --accent:#0f766e; }
.jt-mkt-head{ box-sizing:border-box; width:100%; max-width:64rem; margin:0 auto; padding:0 20px; text-align:center; }
.jt-mkt-head h2{ margin:14px 0 0; font-size:clamp(34px,5vw,60px); font-weight:600; letter-spacing:-.035em; line-height:1.04; color:#0f1220; text-wrap:balance; }
.jt-mkt-head h2 em{ font-style:normal; color:#fe5c0e; }
.jt-mkt-sub{ max-width:36rem; margin:14px auto 0; font-size:clamp(15px,1.4vw,17px); line-height:1.6; color:rgba(15,18,32,.66); text-wrap:balance; }
.jt-mkt-search{ display:flex; align-items:center; gap:10px; width:100%; max-width:40rem; box-sizing:border-box; margin:28px auto 0; padding:6px 6px 6px 18px;
  border-radius:999px; background:#fff; box-shadow:0 1px 0 rgba(15,18,32,.04), 0 10px 30px -12px rgba(15,18,32,.25); color:rgba(15,18,32,.45); transition:box-shadow .2s; }
.jt-mkt-search:focus-within{ box-shadow:0 0 0 3px rgba(254,92,14,.25), 0 10px 30px -12px rgba(15,18,32,.25); }
.jt-mkt-search svg{ flex:none; }
.jt-mkt-search input{ flex:1; min-width:0; height:46px; border:0; outline:0; background:transparent; font:inherit; font-size:16px; color:#0f1220; }
.jt-mkt-search input::placeholder{ color:rgba(15,18,32,.42); }
.jt-mkt-search button{ flex:none; height:46px; padding:0 24px; border:0; border-radius:999px; background:#fe5c0e; color:#fff; font:inherit; font-size:15px; font-weight:700; cursor:pointer; transition:background .15s; }
.jt-mkt-search button:hover{ background:#e54f06; }
.jt-mkt-chips{ display:flex; flex-wrap:wrap; justify-content:center; gap:8px; margin:16px auto 0; }
.jt-mkt-chips a{ padding:8px 14px; border-radius:999px; background:#fff; box-shadow:inset 0 0 0 1px rgba(15,18,32,.1); font-size:13.5px; font-weight:600; color:#0f1220; text-decoration:none; transition:box-shadow .15s, color .15s; }
.jt-mkt-chips a:hover{ box-shadow:inset 0 0 0 1.5px #fe5c0e; color:#e54f06; }

.jt-mkt-slider{ margin-top:clamp(36px,6vh,56px); container-type:inline-size; }
.jt-mkt-track{ display:flex; gap:var(--gap); overflow-x:auto; overscroll-behavior-x:contain; scroll-snap-type:x mandatory; scroll-behavior:smooth;
  padding:4px 0 8px; scrollbar-width:none; --gap:14px; --card-w:min(78vw, 360px); }
.jt-mkt-track::-webkit-scrollbar{ display:none; }
.jt-mkt-track:focus-visible{ outline:3px solid #fe5c0e; outline-offset:-3px; }
.jt-mkt-card{ position:relative; flex:none; width:var(--card-w); aspect-ratio:4/5; overflow:hidden; border-radius:22px; background:linear-gradient(135deg,#f3d9c9,#e6cfe9); color:#fff; text-decoration:none;
  scroll-snap-align:center; isolation:isolate; transition:transform .5s cubic-bezier(.2,.7,.2,1), opacity .5s; }
.jt-mkt-card img{ position:absolute; inset:0; z-index:0; width:100%; height:100%; object-fit:cover; transition:transform .8s cubic-bezier(.2,.7,.2,1); }
.jt-mkt-fb{ position:absolute; inset:0; display:grid; place-items:center; font-size:clamp(40px,5vw,64px); font-weight:700; letter-spacing:-.02em; color:rgba(15,18,32,.28); }
.jt-mkt-card:hover img{ transform:scale(1.04); }
.jt-mkt-card:focus-visible{ outline:3px solid #fe5c0e; outline-offset:3px; }
.jt-mkt-shade{ position:absolute; inset:0; z-index:1; background:linear-gradient(180deg, rgba(15,18,32,.35) 0%, rgba(15,18,32,0) 26%, rgba(15,18,32,0) 52%, rgba(15,18,32,.72) 100%); }
.jt-mkt-cat{ position:absolute; z-index:2; top:16px; right:16px; max-width:calc(100% - 32px); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; font-size:14px; font-weight:700; letter-spacing:-.01em; text-shadow:0 1px 10px rgba(0,0,0,.35); }
.jt-mkt-foot{ position:absolute; z-index:2; left:18px; right:14px; bottom:16px; display:flex; align-items:flex-end; justify-content:space-between; gap:10px; }
.jt-mkt-name{ min-width:0; }
.jt-mkt-name b{ display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden; font-size:17px; font-weight:700; line-height:1.22; text-shadow:0 1px 10px rgba(0,0,0,.3); }
.jt-mkt-name small{ display:block; margin-top:3px; font-size:13px; opacity:.88; }
.jt-mkt-name i{ font-style:normal; }
.jt-mkt-pill{ flex:none; padding:9px 16px; border-radius:999px; background:#fff; color:#0f1220; font-size:14px; font-weight:700; transition:transform .2s; }
.jt-mkt-card:hover .jt-mkt-pill{ transform:translateY(-2px); }
.jt-mkt-ctrl{ position:relative; display:flex; justify-content:center; align-items:center; margin:24px auto 0; max-width:64rem; padding:0 20px; min-height:36px; }
.jt-mkt-dots{ display:flex; align-items:center; gap:10px; padding:8px 14px; border-radius:999px; background:rgba(15,18,32,.06); }
.jt-mkt-dots button{ position:relative; width:8px; height:8px; padding:0; border:0; border-radius:999px; background:rgba(15,18,32,.32); cursor:pointer; overflow:hidden; transition:width .35s cubic-bezier(.4,0,.2,1), background .2s; }
.jt-mkt-dots button::before{ content:""; position:absolute; inset:-8px -5px; }
.jt-mkt-dots button[aria-current="true"]{ width:36px; background:rgba(15,18,32,.22); }
.jt-mkt-dots button[aria-current="true"]::after{ content:""; position:absolute; inset:0; border-radius:inherit; background:#0f1220; transform-origin:left; transform:scaleX(var(--p, 1)); }
.jt-mkt-dots.is-playing button[aria-current="true"]::after{ animation:jt-mkt-fill var(--dur, 5s) linear forwards; }
@keyframes jt-mkt-fill{ from{ transform:scaleX(0); } to{ transform:scaleX(1); } }
.jt-mkt-play{ position:absolute; right:20px; top:50%; transform:translateY(-50%); display:grid; place-items:center; width:36px; height:36px; padding:0; border:0; border-radius:50%; background:rgba(15,18,32,.08); color:#0f1220; cursor:pointer; }
.jt-mkt-play:hover{ background:rgba(15,18,32,.14); }
.jt-mkt-play svg{ width:15px; height:15px; fill:currentColor; }
.jt-mkt-play .i-play{ display:none; }
.jt-mkt-play[aria-pressed="true"] .i-play{ display:block; }
.jt-mkt-play[aria-pressed="true"] .i-pause{ display:none; }
.jt-mkt-foot2{ display:flex; justify-content:center; margin-top:28px; }
.jt-mkt-foot2 .jt-link{ position:relative; align-self:auto; margin-top:0; font-size:16px; text-decoration:none; }
.jt-mkt-foot2 .jt-link::after{ content:none; }
.jt-mkt-foot2 .jt-link:hover{ background-size:100% 4px; }
.jt-mblog-sub{ margin:12px 0 0; max-width:34rem; font-size:15px; line-height:1.6; color:rgba(15,18,32,.62); }
/* tablet: 1 full card with most of its neighbours showing; desktop: 3 full cards + halves at the sides */
@media (min-width:640px){ .jt-mkt-track{ --gap:16px; --card-w:calc((100cqw - 3 * var(--gap)) / 2.6); } }
@media (min-width:1024px){ .jt-mkt-track{ --gap:20px; --card-w:calc((100cqw - 4 * var(--gap)) / 4); } .jt-mkt-card{ border-radius:24px; } }
@media (max-width:520px){
  .jt-mkt-search{ padding-left:14px; }
  .jt-mkt-search button{ padding:0 16px; }
  .jt-mkt-play{ right:16px; }
}
@media (prefers-reduced-motion:reduce){ .jt-mkt-track{ scroll-behavior:auto; } .jt-mkt-card img, .jt-mkt-pill{ transition:none; } }

/* ---------- section effects (one per section; the stacking cards are the only scroll-over) ---------- */
.jt-final{ margin:clamp(72px,10vh,120px) auto 0; padding:0 4px; }
/* full-bleed dark band: the card's background runs edge to edge, its content stays centred */
.jt-final{ position:relative; box-sizing:border-box; width:100vw; max-width:none; margin-left:calc(50% - 50vw); margin-bottom:-48px;
  padding:0; overflow:hidden; background:#121a33; }
@media (min-width:768px){ .jt-final{ margin-bottom:-64px; } }   /* sits flush on the footer (main has bottom padding) */
.jt-final .jt-cta{ max-width:72rem; margin:0 auto; border-radius:0; background:transparent; overflow:visible; }
.jt-final::before, .jt-final::after{ content:""; position:absolute; background:rgba(255,255,255,.035); transform:rotate(24deg); pointer-events:none; }
.jt-final::before{ left:-4%; top:-40%; width:18%; height:180%; }
.jt-final::after{ right:12%; top:-40%; width:9%; height:180%; }
@media (min-width:1024px){ .jt-final .jt-cta{ padding-top:96px; padding-bottom:96px; } .jt-final .jt-cta-phone{ top:84px; } }   /* phone rises from the bottom of the band */
[data-fx]{ transition:opacity .8s cubic-bezier(.2,.7,.2,1), transform .9s cubic-bezier(.2,.7,.2,1); }
html.jt-fx [data-fx="up"]:not(.is-on){ opacity:0; transform:translateY(40px); }
html.jt-fx [data-fx="right"]:not(.is-on){ opacity:0; transform:translateX(80px); }
@media (prefers-reduced-motion:reduce){ [data-fx]{ transition:none; } html.jt-fx [data-fx]:not(.is-on){ opacity:1; transform:none; } .jt-video-frame{ transform:none; border-radius:0; } }

/* ---------- entrance ---------- */
@keyframes jt-rise{
  from{ opacity:0; transform:translateY(12px); }
  to{ opacity:1; transform:translateY(0); }
}
.jt-rise{ animation:jt-rise .7s ease-out both; }
.jt-d1{ animation-delay:.05s; } .jt-d2{ animation-delay:.15s; }
.jt-d3{ animation-delay:.28s; } .jt-d4{ animation-delay:.4s; }
@media (prefers-reduced-motion:reduce){
  .jt-rise{ animation:none; }
  .jt-card3, .jt-link, .jt-seed-links a, .jt-video-poster, .jt-video-overlay{ transition:none; }
  .jt-word.is-in, .jt-word.is-out{ animation:none; }
}

/* ---------- wedding bundles card (full-bleed photo) ---------- */
.jt-bundle-hero{
  position:relative; isolation:isolate; display:flex; flex-direction:column; align-items:center; justify-content:center;
  /* full-bleed: break out of the centred column to the full page width */
  width:100vw; margin-left:calc(50% - 50vw);
  min-height:max(560px, 100svh); padding:80px 24px; overflow:hidden; border-radius:0;
  text-align:center; color:#fff; background:#8e2254;
}
@media (min-width:768px){ .jt-bundle-hero{ padding:96px 56px; } }
.jt-bundle-hero > img{ position:absolute; inset:0; z-index:-1; width:100%; height:100%; object-fit:cover; object-position:center 30%; }
/* shade: lets the photo's colour through at the top, darkens behind the text */
.jt-bundle-shade{ position:absolute; inset:0; z-index:-1;
  background:linear-gradient(180deg, rgba(48,8,28,.18) 0%, rgba(48,8,28,.42) 38%, rgba(40,6,24,.78) 100%); }
@media (min-width:768px){ .jt-bundle-shade{ background:radial-gradient(ellipse 60% 70% at center, rgba(44,8,26,.66) 0%, rgba(60,12,36,.42) 60%, rgba(60,12,36,.3) 100%); } }
.jt-bundle-text{ max-width:46rem; margin:0 auto; }
/* mobile: text sits low, faces stay visible above it */
@media (max-width:767px){ .jt-bundle-hero{ justify-content:flex-end; padding-bottom:72px; } }
.jt-bundle-tag{ display:inline-flex; align-items:center; padding:7px 14px; border:1px solid rgba(255,255,255,.45); border-radius:999px; background:rgba(255,255,255,.1); backdrop-filter:blur(6px);
  font-size:12px; font-weight:700; letter-spacing:.24em; text-transform:uppercase; color:#fff; }
.jt-bundle-hero h2{ margin-top:20px; font-size:clamp(40px,6.2vw,84px); font-weight:800; letter-spacing:-.045em; line-height:.98; text-wrap:balance; text-shadow:0 2px 30px rgba(0,0,0,.35); }
.jt-bundle-price{ white-space:nowrap; background:linear-gradient(90deg,#ffe2cc,#ffab7a); -webkit-background-clip:text; background-clip:text; color:transparent; text-shadow:none; }
.jt-bundle-desc{ margin:20px auto 0; max-width:30ch; font-size:clamp(17px,1.7vw,20px); font-weight:500; line-height:1.5; color:#fff; text-shadow:0 1px 14px rgba(0,0,0,.35); }
.jt-bundle-btn{ position:static; display:inline-flex; align-items:center; justify-content:center; gap:10px; margin-top:30px; padding:17px 34px; border-radius:999px; background:#fff; color:#8e2254; font-size:17px; font-weight:750; box-shadow:0 18px 40px -18px rgba(0,0,0,.6); }
.jt-bundle-btn::after{ content:""; position:absolute; inset:0; border-radius:28px; }   /* whole card is clickable */
.jt-bundle-btn:focus-visible{ outline:3px solid #fff; outline-offset:4px; }
.jt-bundle-note{ margin:18px auto 0; max-width:34ch; font-size:14px; font-weight:600; line-height:1.5; color:rgba(255,255,255,.9); }


/* mobile: the rotating word sits on its own line under "wedding" */
@media (max-width:767px){
  .jt-h1-pre{ display:block; }
  .jt-slot{ display:block; margin:0 auto; text-align:center; height:1.12em; line-height:1.12; }
}

/* ---------- "Everything for your wedding": full-width cards that stack on scroll ----------
   Each card sticks a little lower than the one before, so the next one slides up and covers it.
   This is the landing page's only scroll-over effect. */
.jt-cover{ position:relative; box-sizing:border-box; width:100vw; margin-left:calc(50% - 50vw);
  padding:clamp(56px,9vh,104px) max(20px, calc(50vw - 34rem)) clamp(48px,12vh,140px); background:#fff; }
.jt-cover .jt-card3{ position:sticky; top:calc(var(--hdr-h, 64px) + 20px + var(--i, 0) * 26px); margin-top:22px;
  min-height:clamp(380px, 58svh, 500px);
  box-shadow:0 -18px 44px -30px rgba(15,18,32,.45); }
.jt-cover .jt-card3:hover{ transform:none; }
@media (min-width:1024px){
  .jt-cover .jt-card3{ --pad:36px; grid-template-columns:1fr 1fr; gap:36px; align-items:stretch; }
  .jt-cover .jt-feat{ margin-bottom:22px; }
  .jt-cover .jt-card3 h2{ font-size:clamp(34px,3.4vw,48px); }
  .jt-cover .jt-desc{ font-size:17px; max-width:36ch; }
  .jt-cover .jt-photo{ position:relative; height:auto; min-height:0; }
  .jt-cover .jt-photo img{ position:absolute; inset:0; }
}
@media (max-width:1023px){
  .jt-cover .jt-card3{ min-height:0; }
  .jt-cover .jt-photo{ height:clamp(200px, 34svh, 300px); }
}
.jt-feat{ display:grid; gap:12px; margin:4px 0 28px; padding:0; list-style:none; }
.jt-feat li{ position:relative; padding-left:30px; font-size:15.5px; font-weight:600; line-height:1.45; color:#0f1220; }
.jt-feat li::before{ content:""; position:absolute; left:0; top:1px; width:20px; height:20px; border-radius:50%;
  background:rgba(255,255,255,.75) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%230f1220' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 6 9 17l-5-5'/%3E%3C/svg%3E") center/11px no-repeat; }
.jt-c-plan .jt-feat li::before{ box-shadow:inset 0 0 0 1.5px rgba(184,66,10,.35); }
.jt-c-vendor .jt-feat li::before{ box-shadow:inset 0 0 0 1.5px rgba(107,63,160,.35); }
@media (min-width:1024px){ .jt-cover .jt-feat{ gap:14px; } .jt-cover .jt-feat li{ font-size:17px; } }
/* small heading above the cards */
.jt-cover-head{ display:flex; align-items:center; gap:14px; --accent:#fe5c0e; }
.jt-cover-head::after{ content:""; flex:1; height:1px; background:rgba(15,18,32,.1); }
@media (prefers-reduced-motion:reduce){ .jt-bundle-hero{ position:relative; } }

/* ================= WAIT FOR THE LOADER =================
   html.jt-wait is set in <head> and removed when the loader has finished */
html.jt-wait .jt-rise,
html.jt-wait .jt-word,
html.jt-wait .jt-bundle-hero > img,
html.jt-wait .jt-bundle-btn,
html.jt-wait .jt-video-inner{ animation-play-state:paused; }
html.jt-wait .jt-script{ visibility:hidden; }   /* the handwritten line writes itself in once the loader is gone */

/* ================= MOTION & EFFECTS ================= */
/* staggered card / video entrance (script adds .jt-rv then .is-in, and cleans up afterwards) */
.jt-rv{ opacity:0; }
.jt-rv.is-in{ animation:jt-pop .85s cubic-bezier(.2,.7,.2,1) both; animation-delay:var(--jt-d,0ms); }
@keyframes jt-pop{ from{ opacity:0; transform:translateY(34px) scale(.97); } to{ opacity:1; transform:none; } }

/* pointer spotlight on cards */
.jt-card3{ isolation:isolate; }
.jt-card3::before{
  content:""; position:absolute; inset:0; z-index:-1; border-radius:inherit; pointer-events:none; opacity:0;
  background:radial-gradient(420px circle at var(--mx,50%) var(--my,50%), rgba(255,255,255,.55), transparent 60%);
  transition:opacity .3s ease;
}
.jt-card3:hover::before{ opacity:1; }

/* photos zoom slowly inside their frames */
.jt-photo img{ transition:transform .9s cubic-bezier(.2,.7,.2,1); }
.jt-card3:hover .jt-photo img{ transform:scale(1.07); }

/* bundles card: slow drift on the photo, shine on the button */
.jt-bundle-hero > img{ animation:jt-kenburns 22s ease-in-out infinite alternate; transform-origin:70% 30%; }
@keyframes jt-kenburns{ from{ transform:scale(1); } to{ transform:scale(1.09); } }
.jt-bundle-btn{
  background:linear-gradient(100deg, transparent 35%, rgba(142,34,84,.16) 50%, transparent 65%) -150% 0 / 250% 100% no-repeat, #fff;
  animation:jt-shine 4.5s ease-in-out 1.5s infinite;
  transition:transform .25s ease, box-shadow .25s ease;
}
.jt-bundle-btn:hover{ transform:translateY(-2px); box-shadow:0 14px 30px -12px rgba(0,0,0,.45); }
@keyframes jt-shine{ 0%,55%{ background-position:-150% 0, 0 0; } 100%{ background-position:250% 0, 0 0; } }

/* link arrows nudge, search underline grows */
.jt-link{ transition:background-size .35s cubic-bezier(.4,0,.2,1), letter-spacing .3s ease; }
.jt-card3:hover .jt-link{ letter-spacing:.03em; }
.jt-search{ border-bottom:0; background:linear-gradient(rgba(15,18,32,.25),rgba(15,18,32,.25)) left bottom / 100% 2px no-repeat; position:relative; }
.jt-search::after{ content:""; position:absolute; left:0; bottom:0; height:2px; width:100%; background:#0f1220; transform:scaleX(0); transform-origin:left; transition:transform .4s cubic-bezier(.4,0,.2,1); }
.jt-search:focus-within::after{ transform:scaleX(1); }
.jt-search button{ transition:transform .2s ease, opacity .2s ease; }
.jt-search button:hover{ transform:translateX(3px); }



/* video + links */
.jt-video-inner{ animation:jt-float 6s ease-in-out infinite alternate; }
@keyframes jt-float{ from{ transform:translateY(0); } to{ transform:translateY(-8px); } }
.jt-seed-links a.jt-rv.is-in{ animation-name:jt-rise; animation-duration:.6s; }

@media (prefers-reduced-motion:reduce){
  .jt-bundle-hero > img, .jt-bundle-btn,
  .jt-video-inner{ animation:none; }
  .jt-vbtn{ transition:none; }
  .jt-rv{ opacity:1; }
  .jt-rv.is-in{ animation:none; }
  .jt-photo img, .jt-card3::before, .jt-search::after, .jt-bundle-btn{ transition:none; }
  .jt-card3:hover .jt-photo img{ transform:none; }
}
