*{margin:0;padding:0;box-sizing:border-box}
body{background:#f4f6f8;color:#333;font:14px/1.7 "Microsoft YaHei","PingFang SC",Arial,sans-serif;-webkit-font-smoothing:antialiased}
a{color:#2f9e44;text-decoration:none}
a:hover{text-decoration:underline}
.wrap{max-width:760px;margin:0 auto;padding:24px 16px 60px}

/* 顶栏 */
.topbar{display:flex;align-items:center;justify-content:space-between;padding:14px 20px;background:#fff;border-radius:8px;box-shadow:0 1px 3px rgba(0,0,0,.05)}
.brand{font-size:18px;font-weight:700;color:#1f2d3d;display:flex;align-items:center;gap:8px}
.brand .dot{width:9px;height:9px;border-radius:50%;background:#2f9e44;display:inline-block}
.brand-logo{display:flex;align-items:center;flex-shrink:0}
.brand-logo img{width:240px;height:100px;display:block}
.brand-sep{width:1px;height:44px;background:#e2e6ea;display:inline-block}
.auth{display:flex;align-items:center;gap:10px;font-size:13px}
.auth .who{color:#555;margin-right:2px}
.btn-ghost{padding:6px 14px;border:1px solid #dfe3e8;border-radius:5px;color:#555;background:#fff}
.btn-ghost:hover{border-color:#2f9e44;color:#2f9e44;text-decoration:none}
.btn-solid{padding:6px 14px;border-radius:5px;background:#2f9e44;color:#fff}
.btn-solid:hover{background:#268238;color:#fff;text-decoration:none}

/* 标题区 */
.hero{margin:22px 4px 16px}
.hero h1{font-size:22px;color:#1f2d3d;margin-bottom:6px}
.hero p{color:#7b8794;font-size:13px}
.hero b{color:#2f9e44}

/* 提示 */
.tip{padding:10px 16px;border-radius:6px;font-size:13px;margin-bottom:14px}
.tip.ok{background:#e9f7ef;color:#1e7e46;border:1px solid #c6ebd5}
.tip.err{background:#fdecec;color:#c0392b;border:1px solid #f5c6c6}

/* 卡片 */
.card{background:#fff;border-radius:8px;box-shadow:0 1px 3px rgba(0,0,0,.05);padding:18px 20px}
.form-card{margin-bottom:22px}
.row-name{display:flex;align-items:center;gap:10px;margin-bottom:12px;flex-wrap:wrap}
.name-view{color:#555;font-size:13px}
.input-name{width:200px;max-width:100%;padding:8px 12px;border:1px solid #dfe3e8;border-radius:5px;font-size:13px;outline:none}
.input-name:focus,textarea:focus{border-color:#2f9e44;box-shadow:0 0 0 3px rgba(47,158,68,.12)}
textarea{width:100%;padding:12px 14px;border:1px solid #dfe3e8;border-radius:6px;font:13px/1.7 inherit;resize:vertical;outline:none;color:#333;background:#fbfcfd}
.hint{color:#9aa5b1;font-size:12px}
.form-foot{display:flex;align-items:center;justify-content:space-between;margin-top:12px;gap:10px;flex-wrap:wrap}
.btn-send{padding:9px 22px;border:0;border-radius:6px;background:#2f9e44;color:#fff;font-size:14px;cursor:pointer}
.btn-send:hover{background:#268238}

/* 留言列表 */
.list{display:flex;flex-direction:column;gap:12px}
.msg{background:#fff;border-radius:8px;box-shadow:0 1px 3px rgba(0,0,0,.05);padding:16px 18px;display:flex;gap:12px;align-items:flex-start;
transition:opacity .2s ease,transform .2s ease,height .24s ease,padding .24s ease,margin .24s ease}
/* 删除中的收起效果：淡出 + 轻微右移，同时高度收 0 */
.msg.dying{opacity:0;transform:translateX(10px)}
.msg .body{flex:1;min-width:0}
/* 会员头像：固定 40px 方块，图片 cover 裁切；没有头像时只留一个淡灰人形占位，不发额外请求 */
.ava{flex:0 0 40px;width:40px;height:40px;border-radius:8px;overflow:hidden;background:#f1f3f6;
background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='%23c9cfd8'%3E%3Ccircle cx='12' cy='8' r='4'/%3E%3Cpath d='M4 21c0-4.4 3.6-7 8-7s8 2.6 8 7z'/%3E%3C/svg%3E");
background-repeat:no-repeat;background-position:center;background-size:22px 22px}
.ava img{width:40px;height:40px;object-fit:cover;display:block;border-radius:8px}
.meta{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:6px}
.meta .name{font-weight:700;color:#1f2d3d;font-size:14px}
.badge{font-size:11px;padding:1px 7px;border-radius:10px;background:#e9f7ef;color:#1e7e46;border:1px solid #c6ebd5}
.badge.guest{background:#f3f4f6;color:#8792a2;border-color:#e5e8ec}
.meta .time{color:#9aa5b1;font-size:12px;margin-left:auto}
.meta .ip{color:#c3cad3;font-size:12px}
.content{color:#3d4852;font-size:14px;word-break:break-word;white-space:normal}
.reply{margin-top:10px;padding:10px 12px;background:#f7f9fb;border-left:3px solid #2f9e44;border-radius:0 5px 5px 0;font-size:13px;color:#4a5568}
.rlabel{display:block;font-size:11px;color:#2f9e44;margin-bottom:2px}
.rtime{float:right;font-size:11px;color:#9aa5b1;margin-left:8px}
.empty{background:#fff;border-radius:8px;padding:40px 20px;text-align:center;color:#9aa5b1;font-size:13px}

/* 分页 */
.pager{display:flex;align-items:center;gap:6px;justify-content:center;margin-top:22px;flex-wrap:wrap;font-size:13px}
.pager a,.pager span{padding:6px 12px;border-radius:5px;background:#fff;border:1px solid #e5e8ec;color:#555}
.pager a:hover{border-color:#2f9e44;color:#2f9e44;text-decoration:none}
.pager .cur{background:#2f9e44;border-color:#2f9e44;color:#fff}
.pager .off{color:#c3cad3}
.pager .pinfo{background:none;border:0;color:#9aa5b1}

.foot{text-align:center;color:#9aa5b1;font-size:12px;margin-top:34px}
.foot a{color:#9aa5b1}

@media (max-width:560px){
  .wrap{padding:14px 12px 40px}
  .topbar{padding:12px 14px}
  .brand{font-size:16px}
  .meta .time{margin-left:0;width:100%}
  .msg{padding:14px}
  .input-name{width:100%}
}
/* 回复表单 / 权限区分 */
.badge.adm{background:#fff4e5;color:#b26a00;border-color:#ffe0b2}
.wall{display:flex;align-items:center;gap:12px;flex-wrap:wrap;background:#fff;border-radius:8px;padding:14px 18px;margin-bottom:14px;box-shadow:0 1px 3px rgba(0,0,0,.05);font-size:13px;color:#7b8794}
.wall b{color:#1f2d3d;font-size:14px}
.wall a{margin-left:auto}
.reply.mine{background:#f4f7ff;border-left-color:#4c6ef5}
.reply.mine .rlabel{color:#4c6ef5}
.rform{display:flex;gap:8px;margin-top:10px;align-items:flex-end}
.rform textarea{flex:1;min-width:0;padding:7px 12px;border:1px solid #dfe3e8;border-radius:5px;font:12px/1.6 inherit;outline:none;background:#fbfcfd;color:#333;resize:vertical}
.rform textarea:focus{border-color:#2f9e44;box-shadow:0 0 0 3px rgba(47,158,68,.12)}
.btn-send.sm{padding:7px 16px;font-size:13px;flex:none}
/* 站长专用：删除留言 */
.btn-del{padding:2px 9px;border:1px solid #f1d3d3;border-radius:4px;background:#fff;color:#c92a2a;font-size:12px;line-height:1.7;cursor:pointer;flex:none}
.btn-del:hover{border-color:#c92a2a;background:#fff5f5}
.btn-del:disabled{opacity:.55;cursor:default}
@media (max-width:560px){
  .rform{flex-wrap:wrap}
  .rform textarea{width:100%}
  .btn-send.sm{width:100%}
}

/* 表情面板 */
.btn-face{padding:7px 14px;border:1px solid #dfe3e8;border-radius:5px;background:#fff;color:#5b6673;font-size:13px;cursor:pointer;line-height:1.2}
.btn-face:hover{border-color:#2f9e44;color:#2f9e44}
.btn-face.lg{padding:9px 16px;font-size:14px}
.foot-btns{display:flex;align-items:center;gap:8px}
.face-panel{position:fixed;z-index:80;width:284px;background:#fff;border:1px solid #e5e8ec;border-radius:8px;box-shadow:0 12px 32px rgba(31,45,61,.16);padding:8px;display:none}
.face-panel.on{display:block}
.face-tabs{display:flex;gap:4px;flex-wrap:wrap;margin-bottom:6px}
.face-tabs a{font-size:12px;padding:3px 9px;border-radius:5px;color:#5b6673;background:#f4f6f8;text-decoration:none}
.face-tabs a.on{background:#2f9e44;color:#fff}
.face-grid{display:grid;grid-template-columns:repeat(8,1fr);gap:2px;max-height:186px;overflow:auto}
.face-grid img{width:28px;height:28px;padding:2px;border-radius:4px;border:1px solid transparent;cursor:pointer}
.face-grid img:hover{border-color:#2f9e44;background:#f2fbf5}
.content img.em,.reply img.em{width:20px;height:20px;vertical-align:-4px;margin:0 1px}
/* 站长内容里的自动链接：前置小图标，长网址可换行不断版 */
.reply a.lnk,.content a.lnk{color:#1c7ed6;text-decoration:none;border-bottom:1px solid rgba(28,126,214,.28);word-break:break-all}
.reply a.lnk:hover,.content a.lnk:hover{color:#1864ab;border-bottom-color:#1864ab}
a.lnk img.lnki{width:13px;height:13px;border:0;vertical-align:-2px;margin-right:3px;display:inline}
/* 各套表情原图尺寸不同（QQ/QQ2 20px、黑头 64px、双双 120px、逗号 45px），按套给不同尺寸才不显小 */
.content img.em.em-theblacy,.reply img.em.em-theblacy{width:26px;height:26px;vertical-align:-6px}
.content img.em.em-comma,.reply img.em.em-comma{width:26px;height:26px;vertical-align:-6px}
.content img.em.em-ss,.reply img.em.em-ss{width:30px;height:30px;vertical-align:-8px}
/* 面板网格也按套放大，否则 120px 的双双缩在 28px 格子里看不清 */
.face-grid.s-theblacy{grid-template-columns:repeat(7,1fr)}
.face-grid.s-theblacy img{width:32px;height:32px}
.face-grid.s-comma{grid-template-columns:repeat(6,1fr)}
.face-grid.s-comma img{width:36px;height:36px}
.face-grid.s-ss{grid-template-columns:repeat(5,1fr);max-height:224px}
.face-grid.s-ss img{width:44px;height:44px}
@media (max-width:560px){
  .ava{flex:0 0 34px;width:34px;height:34px;background-size:19px 19px}
  .ava img{width:34px;height:34px}
  .rform .btn-face{width:auto;flex:0 0 auto}
  .rform .btn-send.sm{width:auto;flex:1}
  .face-panel{width:calc(100vw - 24px);max-width:320px}
}
