/* 91好房 · PC管理端样式 */
:root{--blue:#2f6fed;--blue-d:#1e4fc0;--bg:#f5f7fb;--line:#e3e8f0;--tx:#2b3245;--sub:#7a8399;}
*{margin:0;padding:0;box-sizing:border-box;}
body{font-family:"Microsoft YaHei","PingFang SC",sans-serif;background:var(--bg);color:var(--tx);font-size:14px;}
a{color:var(--blue);text-decoration:none;}

/* 登录页 */
.login-page{min-height:100vh;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#3b7bf0,#1e4fc0);}
.login-box{background:#fff;border-radius:16px;padding:44px 48px;width:400px;box-shadow:0 20px 60px rgba(0,30,90,.3);}
.login-logo{text-align:center;font-size:22px;font-weight:bold;color:var(--blue-d);margin-bottom:6px;}
.login-sub{text-align:center;color:var(--sub);font-size:13px;margin-bottom:28px;}
.form-item{margin-bottom:18px;}
.form-item label{display:block;font-size:13px;color:#555e73;margin-bottom:6px;}
.form-item input,.form-item select,.form-item textarea{width:100%;height:40px;border:1px solid var(--line);border-radius:8px;padding:0 12px;font-size:14px;outline:none;}
.form-item textarea{height:auto;min-height:70px;padding:10px 12px;}
.form-item input:focus{border-color:var(--blue);}
.btn{display:inline-block;background:var(--blue);color:#fff;border:none;border-radius:8px;padding:10px 22px;font-size:14px;cursor:pointer;}
.btn:hover{background:var(--blue-d);}
.btn-block{width:100%;padding:12px;}
.btn-plain{background:#f1f3f7;color:#555e73;}
.btn-danger{background:#e64545;}
.btn-sm{padding:4px 12px;font-size:12px;border-radius:6px;}
.login-footer{margin-top:20px;text-align:center;color:var(--sub);font-size:12px;line-height:1.8;}

/* 主框架
   左导航与右内容各自独立滚动：外层锁定视口高度、overflow:hidden，
   滚动条下沉到 .sb-menu 与 .content 两个容器（避免"整页一个滚动条、
   点左侧菜单后右侧内容跳回顶部、来回拖动"的问题）。 */
html,body{height:100%;}
body{overflow:hidden;}
.layout{display:flex;height:100vh;overflow:hidden;}
.sidebar{width:220px;background:#26334d;color:#aab3c5;flex-shrink:0;display:flex;flex-direction:column;height:100%;}
.sb-logo{color:#fff;font-size:18px;font-weight:bold;text-align:center;padding:22px 0;letter-spacing:2px;border-bottom:1px solid rgba(255,255,255,.08);flex-shrink:0;}
.sb-menu{flex:1;padding:12px 0;overflow-y:auto;overflow-x:hidden;}
.sb-group{padding:14px 20px 6px;font-size:12px;color:#6c7a94;}
.sb-item{display:block;padding:12px 22px;font-size:14px;cursor:pointer;border-left:3px solid transparent;color:inherit;text-decoration:none;}
.sb-item .sb-ico{display:inline-block;width:20px;margin-right:6px;font-style:normal;}
.sb-item:hover{background:rgba(255,255,255,.05);color:#fff;}
.sb-item.active{background:rgba(47,111,237,.15);color:#fff;border-left-color:var(--blue);}
.main{flex:1;display:flex;flex-direction:column;min-width:0;height:100%;overflow:hidden;}
.topbar{height:56px;background:#fff;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:0 24px;flex-shrink:0;}
.topbar .tp-title{font-size:16px;font-weight:bold;}
.topbar .tp-user{color:var(--sub);font-size:13px;display:flex;gap:14px;align-items:center;}
.content{flex:1;padding:20px;overflow-y:auto;overflow-x:auto;}
.footer{text-align:center;color:#9aa3b5;font-size:12px;padding:16px 0;line-height:1.8;flex-shrink:0;}

/* 滚动条（Chrome/Edge/Safari），让两个独立滚动区更可辨识 */
.sb-menu::-webkit-scrollbar,.content::-webkit-scrollbar,.modal-mask::-webkit-scrollbar{width:8px;height:8px;}
.sb-menu::-webkit-scrollbar-thumb{background:rgba(255,255,255,.18);border-radius:4px;}
.sb-menu::-webkit-scrollbar-thumb:hover{background:rgba(255,255,255,.3);}
.content::-webkit-scrollbar-thumb,.modal-mask::-webkit-scrollbar-thumb{background:#d3dae6;border-radius:4px;}
.content::-webkit-scrollbar-thumb:hover,.modal-mask::-webkit-scrollbar-thumb:hover{background:#b8c2d4;}

/* 内容组件 */
.panel{background:#fff;border:1px solid var(--line);border-radius:12px;padding:18px 20px;margin-bottom:16px;}
.panel-title{font-size:15px;font-weight:bold;margin-bottom:14px;padding-left:10px;border-left:4px solid var(--blue);}
.toolbar{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-bottom:14px;}
.toolbar input,.toolbar select{height:36px;border:1px solid var(--line);border-radius:8px;padding:0 10px;font-size:13px;outline:none;}
table.grid{width:100%;border-collapse:collapse;font-size:13px;}
.grid th,.grid td{border-bottom:1px solid var(--line);padding:10px 8px;text-align:left;white-space:nowrap;}
.grid th{background:#f0f4fb;color:#555e73;font-weight:normal;}
.grid tr:hover td{background:#f8faff;}
.tag{display:inline-block;font-size:12px;padding:2px 8px;border-radius:4px;background:#eef4ff;color:var(--blue-d);}
.tag-green{background:#e8f7ee;color:#2eaa5e;}
.tag-red{background:#fdecec;color:#e64545;}
.tag-orange{background:#fff3e5;color:#f0821e;}
.tag-gray{background:#f1f3f7;color:#8a93a6;}
.stat-cards{display:flex;gap:16px;flex-wrap:wrap;margin-bottom:16px;}
.stat-card{flex:1;min-width:160px;background:#fff;border:1px solid var(--line);border-radius:12px;padding:20px;}
.stat-num{font-size:28px;font-weight:bold;color:var(--blue-d);}
.stat-label{color:var(--sub);font-size:13px;margin-top:4px;}
.pager{display:flex;gap:8px;align-items:center;justify-content:flex-end;margin-top:14px;font-size:13px;color:var(--sub);}
.pager button{border:1px solid var(--line);background:#fff;border-radius:6px;padding:4px 12px;cursor:pointer;}
.pager button:disabled{color:#c2c8d4;cursor:default;}

/* 弹窗 */
.modal-mask{position:fixed;inset:0;background:rgba(0,0,0,.45);z-index:100;display:flex;align-items:flex-start;justify-content:center;overflow-y:auto;padding:60px 20px;}
.modal-box{background:#fff;border-radius:14px;width:640px;max-width:100%;padding:26px 30px;}
.modal-title{font-size:16px;font-weight:bold;text-align:center;margin-bottom:20px;}
.modal-btns{display:flex;gap:14px;justify-content:center;margin-top:22px;}
.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px 20px;}
.form-grid .full{grid-column:1 / -1;}
.msg{margin-top:12px;text-align:center;font-size:13px;min-height:18px;}
.msg.err{color:#e64545;}
.msg.ok{color:#2eaa5e;}
.kv{display:flex;padding:8px 0;border-bottom:1px dashed #eef1f6;font-size:13px;}
.kv .k{width:110px;color:var(--sub);flex-shrink:0;}
.follow-item{padding:10px 0;border-bottom:1px dashed #eef1f6;font-size:13px;}
.follow-meta{color:#a0a8ba;font-size:12px;margin-bottom:4px;display:flex;gap:10px;align-items:center;}
.empty{text-align:center;color:#a0a8ba;padding:40px 0;}

/* 必填标记（红色 *） */
.req-star{color:#e64545;font-weight:700;margin-left:3px;}
.form-item.is-req label{color:#3d465c;}

/* 字段级提示：图片尺寸/格式要求等写在表单控件下方 */
.fi-tip{margin-top:6px;font-size:12px;line-height:1.7;color:#7a8399;background:#f7f9fc;border-left:3px solid #c9d7f0;border-radius:0 4px 4px 0;padding:6px 10px;}
.fi-tip b{color:#3d465c;}

/* 级联下拉（省/市/区/街道） */
.casc{display:flex;gap:8px;}
.casc select{flex:1;min-width:0;}

/* 坐标查询（腾讯地图坐标拾取器） */
.maptool{display:flex;gap:16px;align-items:flex-start;flex-wrap:wrap;}
.maptool-frame{flex:1;min-width:520px;height:580px;border:1px solid var(--line);border-radius:10px;overflow:hidden;background:#fff;}
.maptool-frame iframe{width:100%;height:100%;border:0;display:block;}
.maptool-side{width:320px;background:#fff;border:1px solid var(--line);border-radius:10px;padding:16px 18px;}
.maptool-side .form-item{margin-bottom:14px;}
.copy-row{display:flex;gap:8px;align-items:center;margin-top:8px;}
.copy-row input{flex:1;min-width:0;height:36px;border:1px solid var(--line);border-radius:8px;padding:0 10px;font-size:13px;}
.coord-out{background:#f6f8fc;border:1px dashed #d9e0ee;border-radius:8px;padding:12px 14px;font-size:15px;line-height:1.9;color:#2b3245;}
.coord-out b{color:var(--blue-d);font-size:18px;}
