:root{--bg:#F6F5F3;--surface:#FFFFFF;--ink:#1D2226;--muted:#656B68;--line:#E3E5E1;--primary:#8E4A5B;--ok:#3E7C5A;--warn:#C98A2E;--danger:#C84E43}*{margin:0;padding:0;box-sizing:border-box}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Microsoft YaHei,sans-serif;background:var(--bg);color:var(--ink);font-size:14px;line-height:1.55}.adm-header{display:flex;align-items:center;gap:24px;padding:14px 28px;background:var(--surface);border-bottom:1px solid var(--line);position:sticky;top:0;z-index:10}.adm-header strong{color:var(--primary);font-size:16px}.adm-header nav{display:flex;gap:16px}.adm-header nav a{color:var(--muted);text-decoration:none;font-weight:600;font-size:13.5px}.adm-header nav a:hover{color:var(--ink)}.adm-main{padding:24px 28px 60px;max-width:1080px}.adm-card{background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:18px 20px;margin-bottom:16px}.adm-card h2{font-size:16px;margin-bottom:12px}.kpi-row{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:16px}.kpi{background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:14px 16px}.kpi .l{font-size:12px;color:var(--muted)}.kpi .v{font-size:22px;font-weight:700}table{width:100%;border-collapse:collapse}th{text-align:left;font-size:12px;color:var(--muted);padding:8px 10px}td,th{border-bottom:1px solid var(--line)}td{padding:9px 10px;vertical-align:middle}tr:last-child td{border-bottom:none}.tag{display:inline-block;font-size:11.5px;font-weight:700;padding:2px 8px;border-radius:999px}.tag.ok{background:#E7F0EA;color:var(--ok)}.tag.warn{background:#FBF0DC;color:var(--warn)}.tag.off{background:#ECECEA;color:var(--muted)}.tag.paid{background:#E7F0EA;color:var(--ok)}.tag.pending{background:#FBF0DC;color:var(--warn)}button{font-family:inherit;font-size:12.5px;font-weight:600;padding:5px 12px;border:1px solid var(--line);border-radius:8px;background:var(--surface);cursor:pointer}button:hover{border-color:var(--ink)}input,select{font-family:inherit;font-size:13px;padding:6px 10px;border:1px solid var(--line);border-radius:8px;background:var(--surface)}.empty{color:var(--muted);padding:20px 0;text-align:center}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px 16px}.form-grid .full{grid-column:1/-1}.f-row{display:flex;flex-direction:column;gap:4px}.f-row label{font-size:12px;font-weight:600;color:var(--muted)}.f-row input,.f-row select,.f-row textarea{font-family:inherit;font-size:13px;padding:8px 10px;border:1px solid var(--line);border-radius:8px;background:var(--surface)}.f-row textarea{min-height:64px;resize:vertical}.f-row .cb{display:flex;align-items:center;gap:8px;padding-top:20px}.f-row .cb label{color:var(--ink);font-weight:500}.actions{margin-top:16px;display:flex;gap:10px;align-items:center}.msg{font-size:12.5px;color:var(--ok)}.msg.err{color:var(--danger)}.section{margin-top:22px;padding-top:16px;border-top:1px solid var(--line)}.section h3{font-size:14.5px;margin-bottom:6px}.hint{font-size:12px;color:var(--muted);margin:2px 0 10px}.hint code{background:#F1F0ED;padding:1px 5px;border-radius:4px;font-size:11.5px}.upload-btn{display:inline-flex;align-items:center;justify-content:center;font-size:12.5px;font-weight:600;padding:7px 12px;border:1px solid var(--line);border-radius:8px;background:var(--surface);cursor:pointer;white-space:nowrap;color:var(--ink)}.upload-btn:hover{border-color:var(--ink)}.img-upload-line{display:flex;gap:8px;align-items:center}.img-upload-line input{flex:1}.main-preview{margin-top:8px;width:160px;height:160px;object-fit:cover;border-radius:10px;border:1px solid var(--line)}.gallery{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-bottom:10px}.gallery-item{border:1px solid var(--line);border-radius:10px;padding:10px;display:flex;flex-direction:column;gap:8px;background:var(--surface)}.img-meta{display:flex;align-items:center;justify-content:space-between;gap:8px}.thumb{width:56px;height:56px;object-fit:cover;border-radius:8px;border:1px solid var(--line)}.img-actions{display:flex;gap:6px}button.danger{color:var(--danger);border-color:#E9C6C1}button.danger:hover{border-color:var(--danger)}.variant-row{display:grid;grid-template-columns:1.2fr 1.4fr 1fr .8fr 1.4fr auto;gap:10px;align-items:end;border:1px solid var(--line);border-radius:10px;padding:12px;margin-bottom:10px;background:var(--surface)}.variant-row .cb{padding-top:0;flex-direction:row}.toolbar,.variant-row .cb{align-items:center;gap:10px}.toolbar{display:flex;margin-bottom:10px;flex-wrap:wrap}.detail-html{width:100%;min-height:260px;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:12.5px;line-height:1.6;padding:10px;border:1px solid var(--line);border-radius:8px;resize:vertical;background:var(--surface);color:var(--ink)}.rich-preview{border:1px solid var(--line);border-radius:10px;padding:16px;min-height:120px;line-height:1.7;overflow:auto}.rich-preview img{max-width:100%;border-radius:8px}.rich-preview table{border-collapse:collapse;margin:8px 0}.rich-preview td,.rich-preview th{border:1px solid var(--line);padding:6px 10px}.page-head{justify-content:space-between;margin-bottom:14px}.filter-bar,.page-head{display:flex;align-items:center}.filter-bar{gap:8px;flex-wrap:wrap;margin-bottom:12px}.filter-bar .filter-q,.filter-bar select{padding:7px 10px;font-size:13px}.filter-q{flex:1;min-width:180px}.filter-count{font-size:12.5px;color:var(--muted);white-space:nowrap}.batch-bar{display:flex;gap:8px;align-items:center;flex-wrap:wrap;background:#F6ECEE;border:1px solid #e9d0d6;border-radius:10px;padding:8px 12px;margin-bottom:12px;font-size:13px;font-weight:600}tr.row-selected td{background:#FBF3F5}.pager{display:flex;gap:10px;align-items:center;justify-content:flex-end;margin-top:14px;font-size:13px}.pager button{padding:4px 12px}.pager button:disabled{opacity:.4;cursor:not-allowed}