/* Yappy iMessage Export Renderer v48
   Independent, screenshot-safe layout driven by chat data.
   No dependency on live iMessage selectors or modern glass CSS. */

.imx-export-host{
  position:fixed!important;
  left:0!important;
  top:0!important;
  overflow:hidden!important;
  pointer-events:none!important;
  z-index:-2147483647!important;
  margin:0!important;
  padding:0!important;
  background:transparent!important;
}
.imx-root{
  position:relative;
  overflow:hidden;
  margin:0;
  padding:0;
  width:100%;
  height:100%;
  background:var(--imx-bg);
  color:var(--imx-text);
  font-family:-apple-system,BlinkMacSystemFont,"SF Pro Text","Segoe UI",Roboto,Helvetica,Arial,sans-serif;
  font-synthesis:none;
  -webkit-font-smoothing:antialiased;
  text-rendering:optimizeLegibility;
  isolation:isolate;
}
.imx-root,.imx-root *{box-sizing:border-box}
.imx-root button,.imx-root textarea{font:inherit}
.imx-root img{display:block;max-width:100%}

/* Fake iOS status bar, matching Yappy's live chrome. */
.imx-statusbar{
  position:absolute;
  left:0;right:0;top:0;
  height:var(--imx-status-h);
  padding:0 25px 0 28px;
  display:flex;
  align-items:center;
  justify-content:space-between;
  color:var(--imx-text);
  font-size:15px;
  line-height:1;
  font-weight:600;
  letter-spacing:.1px;
  z-index:60;
}
.imx-statusbar .sb-time{font-variant-numeric:tabular-nums;letter-spacing:.3px}
.imx-statusbar .sb-icons{display:flex;align-items:center;gap:5px}

/* Header */
.imx-header{
  position:absolute;
  inset:0 0 auto 0;
  height:var(--imx-header-total);
  padding-top:var(--imx-status-h);
  z-index:30;
  background:linear-gradient(
    to bottom,
    var(--imx-bg) 0%,
    var(--imx-bg) 65%,
    var(--imx-head94) 78%,
    var(--imx-head58) 88%,
    var(--imx-transparent) 100%
  );
}
.imx-header-inner{
  height:calc(var(--imx-header-total) - var(--imx-status-h));
  min-height:0;
  display:grid;
  grid-template-columns:78px minmax(0,1fr) 78px;
  align-items:start;
  padding:6px 10px 2px;
  overflow:visible;
}
.imx-head-pill{
  appearance:none;
  border:1px solid var(--imx-line);
  height:46px;
  min-width:46px;
  border-radius:24px;
  background:var(--imx-pill-solid);
  color:var(--imx-text);
  display:flex;
  align-items:center;
  justify-content:center;
  gap:2px;
  padding:0 12px;
  box-shadow:0 4px 22px rgba(0,0,0,.045);
}
.imx-back{justify-self:start}
.imx-video{justify-self:end}
.imx-head-pill svg{width:28px;height:28px;overflow:visible}
.imx-back-count{
  background:#1c1c1e;
  color:#fff;
  border-radius:13px;
  min-width:28px;
  height:25px;
  padding:1px 7px;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  font-size:15px;
  line-height:1;
  font-weight:700;
  margin-left:1px;
}
.imx-profile{
  width:100%;
  min-width:0;
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:flex-start;
  transform:translateY(-1px);
}
.imx-profile-avatar{
  width:58px;height:58px;border-radius:50%;overflow:hidden;
  display:grid;place-items:center;
  color:#fff;font-size:20px;font-weight:650;line-height:1;
  background:#8e8e93;
}
.imx-profile-avatar img{width:100%;height:100%;object-fit:cover}
.imx-profile-title{
  width:auto;
  min-width:90px;
  max-width:150px;
  min-height:31px;
  padding:3px 12px 4px;
  margin-top:-1px;
  border-radius:17px;
  border:1px solid var(--imx-line);
  background:var(--imx-pill-solid);
  color:var(--imx-text);
  display:flex;
  align-items:center;
  justify-content:center;
  gap:3px;
  font-size:17px;
  line-height:22px;
  font-weight:700;
  letter-spacing:-.02em;
  white-space:nowrap;
}
.imx-profile-title b{color:var(--imx-sub);font-size:21px;font-weight:500;line-height:1}

/* Group header stack */
.imx-group-stack{
  position:relative;
  display:block;
  width:82px;
  height:54px;
  margin:-3px auto -5px;
  flex:0 0 54px;
}
.imx-group-head-avatar{
  position:absolute;
  width:39px;height:39px;border-radius:50%;
  overflow:hidden;
  display:grid;place-items:center;
  box-sizing:border-box;
  border:2.5px solid var(--imx-bg);
  background:#d1d1d6;
  color:#fff;
  font-size:13px;
  font-weight:650;
  line-height:1;
  box-shadow:0 1px 2px rgba(0,0,0,.08);
}
.imx-group-head-avatar img{width:100%;height:100%;object-fit:cover}
.imx-group-head-avatar.a1{left:22px;top:0;z-index:3}
.imx-group-head-avatar.a2{left:2px;top:17px;z-index:2}
.imx-group-head-avatar.a3{right:2px;top:17px;z-index:2}
.imx-group-title{
  min-width:76px;
  max-width:150px;
  min-height:30px;
  padding:3px 12px 4px;
  border-radius:17px;
  border:1px solid var(--imx-line);
  background:var(--imx-pill-solid);
  color:var(--imx-text);
  display:flex;
  align-items:center;
  justify-content:center;
  gap:3px;
  font-size:17px;
  font-weight:700;
  line-height:22px;
  letter-spacing:-.02em;
  white-space:nowrap;
  box-shadow:0 1px 7px rgba(0,0,0,.07);
}
.imx-group-title b{color:var(--imx-sub);font-size:21px;font-weight:500;line-height:1}

/* Message viewport: inner content is translated instead of browser-scrolled. */
.imx-message-viewport{
  position:absolute;
  inset:0;
  overflow:hidden;
  z-index:1;
  background:var(--imx-bg);
}
.imx-message-content{
  position:relative;
  width:100%;
  min-height:100%;
  padding:
    var(--imx-scroll-top)
    var(--imx-scroll-right)
    var(--imx-scroll-bottom)
    var(--imx-scroll-left);
  transform:translate3d(0,0,0);
  will-change:transform;
}
.imx-system{
  position:relative;
  margin:12px auto;
  max-width:82%;
  color:var(--imx-sub);
  font-size:12.5px;
  line-height:1.32;
  text-align:center;
}
.imx-date{
  margin:16px 0 11px;
  color:var(--imx-sub);
  font-size:13px;
  font-weight:500;
  line-height:1.25;
  text-align:center;
}
.imx-row{
  position:relative;
  width:100%;
  margin:2px 0;
  display:flex;
  flex-direction:column;
}
.imx-row.out{align-items:flex-end}
.imx-row.in{align-items:flex-start}
.imx-row.cluster-start,.imx-row.cluster-mid{margin-bottom:3px}
.imx-row.cluster-single,.imx-row.cluster-end{margin-bottom:8px}

/* Group incoming placement */
.imx-row.imx-group-in{
  padding-left:42px;
  padding-top:20px;
  min-height:34px;
  overflow:visible;
}
.imx-row.imx-group-in.sender-mid,
.imx-row.imx-group-in.sender-end{padding-top:0}
.imx-sender{
  position:absolute;
  left:54px;
  top:0;
  color:var(--imx-sub);
  font-size:12.5px;
  font-weight:500;
  line-height:16px;
  white-space:nowrap;
}
.imx-row.sender-mid .imx-sender,
.imx-row.sender-end .imx-sender{display:none}
.imx-group-avatar{
  position:absolute;
  left:0;
  bottom:1px;
  width:30px;height:30px;border-radius:50%;
  overflow:hidden;
  display:grid;place-items:center;
  background:#d1d1d6;
  color:#fff;
  font-size:10px;
  font-weight:700;
  line-height:1;
  z-index:3;
}
.imx-group-avatar img{width:100%;height:100%;object-fit:cover}
.imx-row.sender-start .imx-group-avatar,
.imx-row.sender-mid .imx-group-avatar{visibility:hidden}
.imx-row.imx-group-in.cluster-single,
.imx-row.imx-group-in.sender-end{margin-bottom:9px}

/* Bubbles */
.imx-bubble{
  position:relative;
  max-width:86%;
  padding:8px 14px 9px;
  border-radius:24px;
  font-size:18px;
  line-height:1.23;
  letter-spacing:-.014em;
  word-break:break-word;
  overflow:visible;
  white-space:pre-wrap;
}
.imx-group-in .imx-bubble{max-width:calc(88% - 26px)}
.imx-bubble.in{background:var(--imx-in);color:var(--imx-text)}
.imx-bubble.out{background:linear-gradient(180deg,#84c0eb 0%,#3b82f6 100%);color:#fff}
.imx-bubble.tail-in::after,
.imx-bubble.tail-out::after{
  content:"";
  position:absolute;
  bottom:1px;
  width:10px;
  height:12px;
  border:0;
}
.imx-bubble.tail-in::after{
  left:-5px;
  background:var(--imx-in);
  border-bottom-right-radius:9px;
  transform:skewX(-18deg);
}
.imx-bubble.tail-out::after{
  right:-5px;
  background:#3b82f6;
  border-bottom-left-radius:9px;
  transform:skewX(18deg);
}
.imx-mention{font-weight:650}
.imx-receipt{
  margin:1px 7px 9px;
  color:var(--imx-sub);
  font-size:12.5px;
  line-height:1.15;
  text-align:right;
}

/* Typing */
.imx-typing{display:flex;align-items:center;gap:4px;min-width:48px;min-height:20px}
.imx-typing i{width:7px;height:7px;border-radius:50%;background:#8e8e93;display:block}

/* Media & cards */
.imx-media,.imx-sticker{
  position:relative;
  max-width:76%;
  border-radius:20px;
  overflow:hidden;
}
.imx-media img{width:100%;max-height:320px;object-fit:cover;border-radius:20px}
.imx-media-caption{margin-top:4px}
.imx-play{
  position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);
  width:44px;height:44px;border-radius:50%;
  display:grid;place-items:center;
  background:rgba(0,0,0,.48);color:#fff;
}
.imx-play svg{width:22px;height:22px}
.imx-sticker{overflow:visible;background:transparent}
.imx-sticker img{width:auto;height:auto;max-width:160px;max-height:160px;object-fit:contain}
.imx-card{display:flex;flex-direction:column;gap:3px;min-width:190px}
.imx-card small{font-size:13px;opacity:.72}
.imx-voice{display:flex;align-items:center;gap:8px;min-width:210px}
.imx-voice-play{display:grid;place-items:center;width:24px;height:24px}
.imx-voice-play svg{width:20px;height:20px}
.imx-wave{display:flex;align-items:center;gap:2px;flex:1;height:24px}
.imx-wave i{display:block;width:2px;border-radius:2px;background:currentColor;opacity:.65}
.imx-duration{font-size:13px;opacity:.72}
.imx-location{padding:0;overflow:hidden;min-width:220px}
.imx-location img{width:100%;height:120px;object-fit:cover}
.imx-location strong{display:block;padding:8px 12px 10px}
.imx-contact{display:flex;align-items:center;gap:10px;min-width:210px}
.imx-contact .imx-mini-avatar{width:36px;height:36px}
.imx-contact-copy{display:flex;flex-direction:column;min-width:0}
.imx-contact-copy small{font-size:12px;opacity:.72}
.imx-call{display:flex;align-items:center;gap:10px;min-width:210px}
.imx-call-icon{display:grid;place-items:center}
.imx-call-icon svg{width:24px;height:24px}

/* Composer */
.imx-composer{
  position:absolute;
  left:0;right:0;bottom:0;
  z-index:40;
  min-height:var(--imx-composer-h);
  display:flex;
  align-items:flex-end;
  gap:10px;
  padding:
    var(--imx-composer-pad-top)
    var(--imx-composer-pad-right)
    var(--imx-composer-pad-bottom)
    var(--imx-composer-pad-left);
  background:linear-gradient(
    to top,
    var(--imx-bg) 0%,
    var(--imx-compose98) 72%,
    var(--imx-compose88) 88%,
    var(--imx-transparent) 100%
  );
}
.imx-composer-round{
  width:44px;height:44px;min-width:44px;flex:0 0 44px;
  border-radius:50%;
  border:.5px solid var(--imx-soft-line);
  background:var(--imx-field);
  color:var(--imx-text);
  display:flex;align-items:center;justify-content:center;
  padding:0;
}
.imx-composer-round svg{width:25px;height:25px;overflow:visible}
.imx-field{
  position:relative;
  flex:1;
  min-width:0;
  min-height:44px;
  border-radius:23px;
  border:.5px solid var(--imx-soft-line);
  background:var(--imx-field);
  display:flex;
  align-items:flex-end;
  padding:0 43px 0 13px;
}
.imx-input{
  flex:1;
  min-width:0;
  min-height:43px;
  max-height:104px;
  padding:10px 2px 9px;
  color:var(--imx-text);
  font-size:17px;
  line-height:22px;
  letter-spacing:-.012em;
  white-space:pre-wrap;
  overflow:hidden;
}
.imx-input.placeholder{color:#9b9ba0}
.imx-field-actions{
  position:absolute;
  right:3px;
  bottom:2px;
  height:40px;
  display:flex;
  align-items:center;
}
.imx-field-actions span{
  width:36px;height:40px;
  display:flex;align-items:center;justify-content:center;
  color:var(--imx-sub);
}
.imx-field-actions svg{width:22px;height:22px;overflow:visible}
.imx-waveform{
  width:40px;height:40px;min-width:40px;flex:0 0 40px;
  margin-left:-53px;margin-right:3px;
  z-index:41;
  border:0;background:transparent;color:var(--imx-sub);
  display:flex;align-items:center;justify-content:center;
}
.imx-waveform svg{width:27px;height:23px}
.imx-waveform.send{
  width:34px;height:34px;min-width:34px;flex-basis:34px;
  margin:5px 6px 5px -46px;
  border-radius:50%;
  background:#0a84ff;
  color:#fff;
}


/* v49 — mirror the live iMessage contact-header fade in exported PNGs. */
.imx-header{
  background:linear-gradient(
    to bottom,
    var(--imx-bg) 0%,
    var(--imx-bg) 56%,
    var(--imx-head94) 72%,
    var(--imx-head58) 84%,
    var(--imx-transparent) 100%
  );
}
.imx-header::after{
  content:"";
  position:absolute;
  left:50%;
  top:var(--imx-status-h);
  transform:translateX(-50%);
  width:min(300px,calc(100% - 138px));
  height:calc(var(--imx-header-total) - var(--imx-status-h) + 34px);
  pointer-events:none;
  z-index:0;
  background:linear-gradient(
    to bottom,
    var(--imx-bg) 0%,
    var(--imx-head94) 48%,
    var(--imx-head58) 70%,
    var(--imx-transparent) 100%
  );
}
.imx-header-inner{
  position:relative;
  z-index:1;
}
.imx-profile-title,
.imx-group-title{
  -webkit-backdrop-filter:none!important;
  backdrop-filter:none!important;
}


/* v50 — screenshot-only clean bubbles: omit iMessage wingtails in export. */
.imx-bubble.tail-in::after,
.imx-bubble.tail-out::after{
  content:none!important;
  display:none!important;
}


/* v51 — stable screenshot paint.
   Keep outgoing iMessage bubbles a single iOS blue and avoid html2canvas banding
   from overlapping translucent header/composer gradients. */
.imx-bubble.out,
.imx-bubble.out.tail-out{
  background:#0a84ff!important;
  background-image:none!important;
  color:#fff!important;
  box-shadow:none!important;
}
.imx-header{
  background:linear-gradient(
    to bottom,
    var(--imx-bg) 0%,
    var(--imx-bg) 76%,
    var(--imx-transparent) 100%
  )!important;
  box-shadow:none!important;
  filter:none!important;
}
.imx-header::after{
  content:none!important;
  display:none!important;
}
.imx-composer{
  background:var(--imx-bg)!important;
  box-shadow:none!important;
  filter:none!important;
}


/* v52 — wallpaper-aware export + clean composer chrome. */
.imx-wallpaper-layer{
  position:absolute;
  inset:0;
  width:100%;
  height:100%;
  z-index:0;
  pointer-events:none;
}
img.imx-wallpaper-layer{
  object-fit:cover;
  object-position:center;
}
.imx-wallpaper-color{
  background-repeat:no-repeat;
  background-size:cover;
  background-position:center;
}
.imx-root.imx-has-wallpaper{
  background:transparent;
}
.imx-root.imx-has-wallpaper .imx-message-viewport{
  background:transparent!important;
}
.imx-composer{
  background:transparent!important;
  -webkit-backdrop-filter:none!important;
  backdrop-filter:none!important;
  box-shadow:none!important;
  filter:none!important;
}


/* v53 — emoji tapbacks in the independent iMessage screenshot renderer. */
.imx-bubble,
.imx-media,
.imx-sticker{
  position:relative;
  overflow:visible;
}
.imx-reaction{
  position:absolute;
  top:-19px;
  z-index:18;
  width:38px;
  height:38px;
  border-radius:50%;
  display:grid;
  place-items:center;
  box-sizing:border-box;
  background:#0a84ff;
  border:2px solid var(--imx-bg);
  box-shadow:0 1px 3px rgba(0,0,0,.16);
  font-family:"Apple Color Emoji","Segoe UI Emoji",sans-serif;
  font-size:22px;
  line-height:1;
}
.imx-reaction.out{left:-15px;right:auto}
.imx-reaction.in{right:-15px;left:auto}
.imx-reaction::before,
.imx-reaction::after{
  content:"";
  position:absolute;
  border-radius:50%;
  background:#0a84ff;
  border:1.5px solid var(--imx-bg);
}
.imx-reaction::before{width:9px;height:9px;bottom:-5px}
.imx-reaction::after{width:5px;height:5px;bottom:-11px}
.imx-reaction.out::before{left:6px}
.imx-reaction.out::after{left:2px}
.imx-reaction.in::before{right:6px}
.imx-reaction.in::after{right:2px}
