@charset "UTF-8";
/* ==========================================================================
   微语 · 明信片皮肤（配合 postcard 主题）
   ⛔ 只在 Plugin::skin() === 'postcard' 时加载；moments.css（经典皮肤）原样保留，
      两套互不覆盖、互不影响 —— 不要把经典规则抄进来改，那会造成权重打架。
   ⛔ 样式一律以 .mm-wrap 前缀限定，避免任何宿主污染。
   ⛔ 不要给装饰性图片用 <img>（宿主会抽首图当封面），本皮肤头像一律 background-image。
   ========================================================================== */
.mm-skin-postcard{
  --paper:#FBFAF6; --ink:#16201C; --ink-2:#545B58; --ink-3:#9AA39D;
  --slate:#5E6E68; --black:#10110F; --line:rgba(22,32,28,.14);
  --mint:#16B894; --mint-deep:color-mix(in srgb,#16B894 78%,#06231c); --mint-soft:color-mix(in srgb,#16B894 13%,#fff);
  --font:"Noto Sans SC","PingFang SC","Microsoft YaHei",system-ui,-apple-system,sans-serif;
  background-color:var(--paper);
  background-image:radial-gradient(var(--line) 1px,transparent 1px);
  background-size:22px 22px;
  color:var(--ink); font-family:var(--font); line-height:1.75;
  -webkit-font-smoothing:antialiased;
}
.mm-skin-postcard *{box-sizing:border-box}

/* ---------- 壳：与首页同宽 880 ---------- */
.mm-skin-postcard .mm-wrap{max-width:880px;margin:0 auto;padding:0 26px 90px;position:relative}

/* ---------- 页头：明信片皮肤专属（kicker + 末字强调 + 小狗） ---------- */
/* ⛔ 与经典皮肤的封面刊头完全分开：标记在 Renderer 按 $pcSkin 分支各自输出，
   样式在此独立维护 —— 两套互不共用、互不影响。 */
.mm-skin-postcard .mm-card{background:transparent;border:0;box-shadow:none;border-radius:0;overflow:visible}
/* 刊头：kicker + 末字强调标题 + 说明 + 虚线分隔（与主题首页刊头同一套语言） */
.mm-skin-postcard .mm-cover{position:relative;padding:56px 0 0;margin-bottom:6px;
  background-image:none!important;min-height:0}          /* 不用头图：点格纸更干净 */
.mm-skin-postcard .mm-cover-inner{padding-bottom:22px;border-bottom:1.5px dashed var(--line)}
.mm-skin-postcard .mm-kicker{font-size:12.5px;letter-spacing:.3em;color:var(--mint-deep);
  text-transform:uppercase;margin-bottom:14px}
.mm-skin-postcard .mm-cover-inner h1{font-size:clamp(30px,6vw,52px);font-weight:800;letter-spacing:-.02em;
  line-height:1.06;position:relative;z-index:1}
.mm-skin-postcard .mm-cover-inner h1 em{font-style:normal;color:var(--mint);position:relative}
.mm-skin-postcard .mm-cover-inner h1 em::after{content:"";position:absolute;left:0;right:0;bottom:.08em;
  height:.18em;background:var(--mint-soft);z-index:-1}
.mm-skin-postcard .mm-cover-inner p{margin-top:12px;font-size:15px;color:var(--ink-2)}
/* 右上角小狗：与主题首页 shell 的 .emblem 同一位置、同一形象（用户定案：和主页保持一致） */
.mm-skin-postcard .mm-pet{position:absolute;right:0;top:22px;z-index:7;cursor:pointer;
  transition:transform .2s;display:block}
.mm-skin-postcard .mm-pet:hover{transform:rotate(-5deg) scale(1.06)}
.mm-skin-postcard .mm-pet svg{display:block}
.mm-skin-postcard .mm-cover-name{display:none}             /* 旧版「👋 名字」元素不再输出，防御性隐藏 */

/* 小狗巡游 + 爪印（与主题同款视觉，类名加 mm- 前缀避免与宿主主题撞车） */
.mm-skin-postcard .mm-pet-run{position:fixed;left:0;top:0;z-index:9999;pointer-events:none;
  will-change:transform;transition:opacity .28s}
.mm-skin-postcard .mm-pet-run.land{opacity:0}
.mm-skin-postcard .mm-pet-run .bob{animation:mmPetBob .3s ease-in-out infinite}
@keyframes mmPetBob{0%,100%{transform:translateY(0)}50%{transform:translateY(-7px)}}
.mm-skin-postcard .mm-pet-run .dog .leg,
.mm-skin-postcard .mm-pet-run .dog .tail,
.mm-skin-postcard .mm-pet-run .dog .ear{transform-box:fill-box}
.mm-skin-postcard .mm-pet-run .dog .leg{transform-origin:50% 0;animation:mmPetSwing .3s ease-in-out infinite}
.mm-skin-postcard .mm-pet-run .dog .leg-b,
.mm-skin-postcard .mm-pet-run .dog .leg-c{animation-delay:-.15s}
@keyframes mmPetSwing{0%,100%{transform:rotate(26deg)}50%{transform:rotate(-26deg)}}
.mm-skin-postcard .mm-pet-run .dog .tail{transform-origin:100% 100%;animation:mmPetWag .16s ease-in-out infinite alternate}
@keyframes mmPetWag{from{transform:rotate(-10deg)}to{transform:rotate(14deg)}}
.mm-skin-postcard .mm-pet-paw{position:fixed;z-index:9998;pointer-events:none;opacity:.5;transition:opacity 1.1s ease}
.mm-skin-postcard .mm-pet-paw.fade{opacity:0}
.mm-skin-postcard .mm-wave{display:none}                   /* 去掉彩色波浪，保持纸感 */


/* ---------- 发布器（薄荷便利贴） ---------- */
.mm-skin-postcard .mm-composer{position:relative;margin:26px 0 34px;max-width:560px;
  background:var(--mint-soft);border:1px solid color-mix(in srgb,var(--mint) 30%,transparent);
  border-radius:14px;padding:16px 18px;box-shadow:0 10px 24px -16px rgba(22,40,34,.3)}
.mm-skin-postcard .mm-composer::before{content:"";position:absolute;top:-7px;left:50%;transform:translateX(-50%);
  width:12px;height:12px;border-radius:50%;background:var(--mint);box-shadow:0 1px 3px rgba(14,140,112,.5)}
.mm-skin-postcard .mm-composer textarea{width:100%;border:0;outline:0;background:transparent;resize:vertical;
  font-family:inherit;font-size:15px;line-height:1.7;color:var(--ink);min-height:54px}
.mm-skin-postcard .mm-composer-bar{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:10px}
.mm-skin-postcard .mm-composer-right{display:flex;gap:8px;align-items:center}
.mm-skin-postcard .mm-btn-img,.mm-skin-postcard .mm-btn-loc{background:none;border:1px solid var(--line);
  color:var(--ink-2);font-family:inherit;font-size:12.5px;padding:6px 12px;border-radius:999px;cursor:pointer}
.mm-skin-postcard .mm-btn-send{background:var(--black);color:#fff;border:0;padding:8px 20px;border-radius:999px;
  font-family:inherit;font-size:14px;font-weight:700;cursor:pointer}
.mm-skin-postcard .mm-hint{font-size:12px;color:var(--mint-deep);opacity:.75}
/* 发布器缩略图：⛔ 只命中 .th 本身（原先写 `span` 会连带影响内层元素），
   × 是内层 <i>，必须自己定位成角标 —— 否则它就是一个没样式的斜体字符，糊在图上像「变形」 */
.mm-skin-postcard .mm-thumbs{display:flex;gap:12px;flex-wrap:wrap;margin-top:10px}
.mm-skin-postcard .mm-thumbs .th{position:relative;display:block;width:64px;height:64px;border-radius:8px;
  background-size:cover;background-position:center;border:1px solid var(--line)}
.mm-skin-postcard .mm-thumbs .th i{position:absolute;top:-6px;right:-6px;width:18px;height:18px;
  border-radius:50%;background:var(--ink);color:#fff;font-style:normal;font-size:12px;line-height:18px;
  text-align:center;cursor:pointer;box-shadow:0 2px 6px rgba(0,0,0,.25);user-select:none}
.mm-skin-postcard .mm-thumbs .th i:hover{background:#000}
/* ⛔ 必须显式处理 [hidden]：本行要 display:flex，特异性高于 UA 的 [hidden]{display:none}
   → 不加这一句，「点位置按钮才显示输入框」直接失效、输入框永远露在外面（用户截图里的乱象就是它） */
.mm-skin-postcard [hidden]{display:none!important}
.mm-skin-postcard .mm-loc-row{gap:8px;margin-top:12px;align-items:center}
.mm-skin-postcard .mm-loc-row:not([hidden]){display:flex}
.mm-skin-postcard .mm-loc-row input{flex:1;min-width:0;border:1px solid var(--line);border-radius:999px;
  padding:9px 16px;font-family:inherit;font-size:13.5px;color:var(--ink);background:rgba(255,255,255,.85);outline:none}
.mm-skin-postcard .mm-loc-row input:focus{border-color:var(--mint);background:#fff}
/* 高德 POI 联想下拉（前端与后台同一套外观；前台补挂见 TODO） */
.mm-skin-postcard .mmx-loc-suggest{position:absolute;z-index:40;background:#fff;border:1px solid var(--line);
  border-radius:12px;box-shadow:0 14px 30px -14px rgba(22,40,34,.4);padding:6px;max-height:220px;overflow:auto}
.mm-skin-postcard .mmx-loc-suggest div{padding:8px 12px;font-size:13px;color:var(--ink-2);border-radius:8px;cursor:pointer}
.mm-skin-postcard .mmx-loc-suggest div:hover{background:var(--mint-soft);color:var(--mint-deep)}

/* ---------- 时间线 ---------- */
.mm-skin-postcard .mm-list{position:relative;display:block;margin-top:34px}
.mm-skin-postcard .mm-thread{position:absolute;left:0;top:0;overflow:visible;pointer-events:none;z-index:0}
.mm-skin-postcard .mm-thread path{fill:none;stroke:color-mix(in srgb,var(--mint) 42%,transparent);
  stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:1.5 5 6 5}

/* 卡片：收窄 + 左右错开 + 随机倾斜（--w/--gap/--tilt 由 PHP 稳定伪随机给出） */
.mm-skin-postcard .mm-item{position:relative;z-index:1;width:var(--w,58%);max-width:100%;
  margin:0 0 var(--gap,68px);padding:20px 22px 18px;border-radius:4px;
  background:#fff;border:1px solid var(--line);box-shadow:0 10px 24px -16px rgba(22,40,34,.34);
  transform:rotate(var(--tilt,0deg));will-change:transform;
  transition:transform .28s cubic-bezier(.2,.8,.25,1),box-shadow .28s cubic-bezier(.2,.8,.25,1)}
.mm-skin-postcard .mm-item:nth-of-type(odd){margin-right:auto}   /* ⛔ 用 nth-of-type：只数 <article>，
                                                                   加载更多追加的卡片不会打乱奇偶节奏 */
.mm-skin-postcard .mm-item:nth-of-type(even){margin-left:auto}
/* ⛔ hover 与主题首页完全同一套（抬起 6px + 回正 + 阴影加深）。
   不加入场 animation：它的 fill 状态会占住 transform，hover 就变成「瞬跳」而不是「过渡」
   —— 用户反馈的「动效生硬」根因就在这。 */
.mm-skin-postcard .mm-item:hover{transform:translateY(-6px) rotate(0deg);box-shadow:0 18px 34px -16px rgba(22,40,34,.42)}

/* 头像：单作者站点不占版面（要恢复就把下面的 display:flex 打开） */
.mm-skin-postcard .mm-ava{display:none}
.mm-skin-postcard .mm-body{min-width:0}

/* 名称行 */
.mm-skin-postcard .mm-name{font-size:12.5px;color:var(--ink-3);font-weight:600;letter-spacing:.02em;
  display:flex;align-items:center;gap:8px}
.mm-skin-postcard .mm-badge-private{background:var(--mint-soft);color:var(--mint-deep);font-size:11px;
  padding:1px 8px;border-radius:999px;font-weight:700}

/* 正文 */
.mm-skin-postcard .mm-text{margin-top:8px;font-size:16px;line-height:1.8;color:var(--ink);word-break:break-word}
.mm-skin-postcard .mm-text .mm-tag{color:var(--mint-deep);font-weight:600;text-decoration:none}

/* 图集：⛔ 真实类名只有 g1(1张) / g2(2或4张) / g3(其余：3/5/6/7/8/9)
   —— 之前按 w1~w4 写，一个都没命中（w1~w4 是那条装饰波浪 <svg class="w1"> 的类名），
      于是走了「单列 + padding-bottom:100%」的兜底 → 单图被撑成和卡片一样大的方块。
   ⛔ 一律用**固定像素高度**（不用 padding-bottom 百分比），多图才不会把卡片撑高。 */
.mm-skin-postcard .mm-gallery{display:grid;gap:8px;margin-top:12px}
/* ⛔ 统一**正方形**（用户定案）：aspect-ratio:1 + cover 裁成方形，多图整齐、单图也不长成大方块。
   ⛔ 不要再用 JS 写 aspect-ratio（内联样式会盖掉这里的方形），比例探测那套已移除。 */
.mm-skin-postcard .mm-gallery .mm-ph{display:block;aspect-ratio:1/1;height:auto;border-radius:9px;
  border:1px solid var(--line);background-size:cover;background-position:center;cursor:zoom-in;object-fit:cover}
/* ⛔ object-fit:cover 是给单图 <img> 的（插件已把单图渲染成真 img 以完整显示原比例）；
   本皮肤定案是正方形，故此处仍 cover 裁成方形。多图仍是背景图，该属性无效但不影响。 */
/* ⛔ 固定高度这条必须加 :not(.has-ratio)：否则它与 .mm-ph.has-ratio{height:auto} 特异性相同、
   又排在后面 → 会把 height:auto 盖掉，等比就失效（实测单图被压成 191×191）。 */
.mm-skin-postcard .mm-gallery.g1{grid-template-columns:1fr}
.mm-skin-postcard .mm-gallery.g1 .mm-ph{width:min(100%,300px);justify-self:center}  /* 单图：300 方图居中，不铺满 */
.mm-skin-postcard .mm-gallery.g2{grid-template-columns:1fr 1fr}
.mm-skin-postcard .mm-gallery.g3{grid-template-columns:repeat(3,1fr)}

/* 位置 */
.mm-skin-postcard .mm-loc{display:flex;align-items:center;gap:5px;margin-top:10px;font-size:12.5px;color:var(--ink-2)}
.mm-skin-postcard .mm-loc svg{width:14px;height:14px;fill:var(--mint-deep)}
.mm-skin-postcard .mm-loc-link{color:var(--mint-deep);text-decoration:none}

/* 元信息行：时间在左、点赞评论在右 */
.mm-skin-postcard .mm-meta{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:12px}
.mm-skin-postcard .mm-time{font-size:12px;color:var(--slate);letter-spacing:.04em;font-variant-numeric:tabular-nums}
.mm-skin-postcard .mm-acts{display:flex;gap:14px;align-items:center}
.mm-skin-postcard .mm-act{display:inline-flex;align-items:center;gap:4px;background:none;border:0;padding:0;
  font-family:inherit;font-size:12.5px;color:var(--slate);cursor:pointer;transition:color .15s}
.mm-skin-postcard .mm-act svg{width:13px;height:13px;fill:currentColor;display:block}
.mm-skin-postcard .mm-act:hover{color:var(--ink-2)}
.mm-skin-postcard .mm-act.is-liked{color:var(--mint-deep)}

/* （右下角「点开 ›」提示已按用户要求去掉：与点赞/评论行挤在一起） */

/* 内联评论区（展开会把后面的卡片顺推，不用浮层遮挡） */
.mm-skin-postcard .mm-comments{margin-top:14px;padding-top:12px;border-top:1.5px dashed var(--line)}
.mm-skin-postcard .mm-cm{display:flex;gap:10px;margin-top:12px}
.mm-skin-postcard .mm-cm-ava{width:26px;height:26px;flex:none;border-radius:50%;background:var(--mint-soft);
  color:var(--mint-deep);display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:700;
  background-size:cover;background-position:center}
.mm-skin-postcard .mm-cm-ava.has-img{color:transparent}
.mm-skin-postcard .mm-cm-body{flex:1;min-width:0}
.mm-skin-postcard .mm-cm-head{display:flex;align-items:center;gap:8px;font-size:12.5px;flex-wrap:wrap}
.mm-skin-postcard .mm-cm-name{font-weight:700;color:var(--ink)}
.mm-skin-postcard .mm-cm-time{color:var(--ink-3);font-size:11.5px}
.mm-skin-postcard .mm-cm-text{margin-top:3px;font-size:14px;line-height:1.75;color:var(--ink-2);word-break:break-word}
.mm-skin-postcard .mm-cm-replies{margin-top:8px;padding-left:20px}
.mm-skin-postcard .mm-cm-reply-to{color:var(--mint-deep)}
/* ⛔ 「回复」是 .mm-cm-reply（链接），回复容器是 .mm-cm-replies —— 别写反 */
.mm-skin-postcard .mm-cm-reply{background:none;border:0;padding:0;font-family:inherit;font-size:11.5px;
  color:var(--ink-3);cursor:pointer;text-decoration:none}
.mm-skin-postcard .mm-cm-reply:hover{color:var(--mint-deep)}
/* 删除按钮：中性灰、无边框（与整站「删除按钮中性灰」一致） */
.mm-skin-postcard .mm-cm-del{margin-left:auto;background:none;border:0;padding:0;font-family:inherit;
  font-size:11.5px;color:var(--ink-3);cursor:pointer;text-decoration:none}
.mm-skin-postcard .mm-cm-del:hover{color:var(--ink-2)}

/* 回信表单：输入框 / 文本域 / 发送按钮统一成一套胶囊 + 圆角 */
.mm-skin-postcard .mm-cm-form{margin-top:14px}
.mm-skin-postcard .mm-cm-form textarea{display:block;width:100%;border:1px solid var(--line);border-radius:10px;
  padding:10px 14px;font-family:inherit;font-size:13.5px;line-height:1.7;color:var(--ink);
  background:rgba(251,250,246,.9);resize:vertical;min-height:62px}
.mm-skin-postcard .mm-cm-who{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:8px}
.mm-skin-postcard .mm-cm-who input{flex:1;min-width:150px;border:1px solid var(--line);border-radius:999px;
  padding:8px 14px;font-family:inherit;font-size:13px;background:rgba(251,250,246,.9)}
.mm-skin-postcard .mm-cm-form-bar{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:8px}
.mm-skin-postcard .mm-cm-form-bar .mm-hint{font-size:12px;color:var(--ink-3)}
.mm-skin-postcard .mm-cm-send{background:var(--black);color:#fff;border:0;border-radius:999px;padding:8px 20px;
  font-family:inherit;font-size:13px;font-weight:700;cursor:pointer}
.mm-skin-postcard .mm-cm-send:hover{background:#000}

/* 加载更多 / 空状态 / 页脚 */
/* ⛔ .mm-more 是**容器 div**，药丸按钮是它内层的 <button> —— 别把按钮样式挂在容器上 */
.mm-skin-postcard .mm-more{display:flex;justify-content:center;margin:6px 0 0}
.mm-skin-postcard .mm-more button{background:#fff;border:1px solid var(--line);color:var(--ink);
  font-family:inherit;font-size:14px;font-weight:600;padding:12px 30px;border-radius:999px;cursor:pointer;
  box-shadow:0 10px 24px -16px rgba(22,40,34,.4);transition:transform .2s,border-color .2s,color .2s}
.mm-skin-postcard .mm-more button:hover{border-color:var(--mint);color:var(--mint-deep);transform:translateY(-2px)}
.mm-skin-postcard .mm-empty{padding:40px 0;color:var(--ink-3);font-size:15px}
.mm-skin-postcard .mm-foot{margin-top:70px;text-align:center;color:var(--ink-3);font-size:12.5px}
.mm-skin-postcard .mm-foot-link{color:var(--mint-deep);text-decoration:none}

/* ---------- 图片放大灯箱（与主题首页微语开屏同一套语言：渐变磨砂 + 跃起） ---------- */
.mm-skin-postcard .mm-lb{position:fixed;inset:0;z-index:1200;display:flex;align-items:center;justify-content:center;
  padding:44px 40px;background:linear-gradient(140deg,rgba(16,38,32,.5),rgba(10,20,18,.68));
  backdrop-filter:blur(16px) saturate(1.25);-webkit-backdrop-filter:blur(16px) saturate(1.25);
  opacity:0;pointer-events:none;transition:opacity .28s}
.mm-skin-postcard .mm-lb.show{opacity:1;pointer-events:auto}
.mm-skin-postcard .mm-lb img{max-width:min(92vw,900px);max-height:84vh;border-radius:14px;
  border:1px solid rgba(255,255,255,.25);box-shadow:0 34px 76px -28px rgba(0,0,0,.65);
  transform:scale(.955);opacity:0;transition:transform .34s cubic-bezier(.2,.85,.25,1),opacity .3s}
.mm-skin-postcard .mm-lb.show img{transform:none;opacity:1}
.mm-skin-postcard .mm-lb-close{position:absolute;top:22px;right:22px;width:40px;height:40px;border-radius:50%;
  background:rgba(255,255,255,.16);color:#fff;border:1px solid rgba(255,255,255,.32);font-size:16px;
  font-family:inherit;cursor:pointer;line-height:1;display:flex;align-items:center;justify-content:center}
.mm-skin-postcard .mm-lb-close:hover{background:rgba(255,255,255,.28)}
.mm-skin-postcard .mm-lb-hint{position:absolute;left:0;right:0;bottom:22px;text-align:center;color:rgba(255,255,255,.6);
  font-size:12.5px}

/* ---------- 响应式 ---------- */
@media (max-width:640px){
  .mm-skin-postcard .mm-wrap{padding:0 18px 70px}
  .mm-skin-postcard .mm-item{width:100%!important;margin-left:0!important;margin-right:0!important;
    margin-bottom:30px!important;transform:none!important}
  .mm-skin-postcard .mm-thread{display:none}
  .mm-skin-postcard .mm-gallery.g3{grid-template-columns:1fr 1fr}   /* 窄屏 3 列→2 列 */
  .mm-skin-postcard .mm-gallery.g1 .mm-ph:not(.has-ratio){height:170px}
}
@media (prefers-reduced-motion:reduce){
  .mm-skin-postcard .mm-item{animation:none}
  .mm-skin-postcard .mm-item:hover{transform:none}
}
