/* 红圈通 Web 风格:顶部导航、Ant Design 3 视觉、浅灰底、白色无圆角块 */
[v-cloak]{display:none}
*{box-sizing:border-box}
html,body{margin:0;background:#F0F0F0;color:#333;font:13px/1.5 -apple-system,"PingFang SC","Microsoft YaHei","Helvetica Neue",Arial,sans-serif}
a{color:#1890FF;cursor:pointer;text-decoration:none}
a:hover{color:#40a9ff}
input,select,textarea,button{font:inherit;color:inherit}
input,select,textarea{height:28px;padding:2px 8px;border:1px solid #d9d9d9;border-radius:2px;background:#fff;outline:none}
textarea{height:auto;min-height:60px}
input:focus,select:focus,textarea:focus{border-color:#40a9ff;box-shadow:0 0 0 2px rgba(24,144,255,.15)}
button,.btn{height:28px;padding:0 12px;border:1px solid #d9d9d9;border-radius:2px;background:#fff;cursor:pointer;display:inline-flex;align-items:center;gap:4px;white-space:nowrap}
button:hover,.btn:hover{color:#40a9ff;border-color:#40a9ff}
button.primary{background:#1890FF;border-color:#1890FF;color:#fff}
button.primary:hover{background:#40a9ff;color:#fff}
button.danger{color:#f5222d;border-color:#ffa39e}
button.link{border:0;background:none;color:#1890FF;padding:0 4px;height:auto}
button.plain{border:0;background:none;padding:0 6px}
button:disabled{opacity:.5;cursor:not-allowed}
/* 顶部导航 */
.topbar{height:48px;background:#fff;display:flex;align-items:stretch;box-shadow:0 1px 4px rgba(0,21,41,.08);position:sticky;top:0;z-index:50}
.topbar .logo{width:48px;background:#D90700;color:#fff;font-weight:700;display:flex;align-items:center;justify-content:center;font-size:18px;letter-spacing:1px}
.topbar nav{display:flex;margin-left:16px;flex:1;overflow:hidden}
.topbar nav a{color:#333;font-size:14px;padding:0 13px;display:flex;align-items:center;border-bottom:2px solid transparent}
.topbar nav a.on{color:#D90700;border-bottom-color:#D90700}
.topbar nav a:hover{color:#D90700}
.topbar .more{position:relative;display:flex;align-items:stretch}
.topbar .more .menu{position:absolute;top:46px;left:0;background:#fff;box-shadow:0 2px 8px rgba(0,0,0,.15);min-width:140px;z-index:60}
.topbar .more .menu a{display:block;padding:8px 16px;border:0}
.topbar .more .menu a:hover{background:#f5f5f5}
.topbar .me{display:flex;align-items:center;gap:8px;padding:0 16px;cursor:pointer;position:relative}
.avatar{width:28px;height:28px;border-radius:50%;background:#D90700;color:#fff;display:inline-flex;align-items:center;justify-content:center;font-size:12px;flex:none}
.topbar .co{color:#999;font-size:12px;padding:0 10px;display:flex;align-items:center}
/* 页面框架 */
.page{min-height:calc(100vh - 48px - 40px)}
.footer{height:40px;line-height:40px;text-align:center;color:#999;font-size:12px}
.subbar{height:38px;background:#fff;display:flex;align-items:center;padding:0 12px;gap:10px;margin-bottom:8px}
.subbar .grow{flex:1}
.subbar .tool{color:#333;cursor:pointer;display:inline-flex;align-items:center;gap:4px;padding:0 6px;font-size:12px}
.subbar .tool:hover{color:#1890FF}
.subbar .title{font-size:14px;font-weight:500}
.scope{font-size:13px;border:0;height:26px;padding:0 4px;font-weight:500}
.search{width:220px;height:26px;border:0;border-bottom:1px solid #d9d9d9;border-radius:0;font-size:12px}
.block{background:#fff;margin-bottom:8px}
.block-h{display:flex;align-items:center;padding:10px 16px;font-size:14px;font-weight:500;border-bottom:1px solid #f0f0f0}
.block-h .grow{flex:1}
.block-b{padding:12px 16px}
/* KPI 条 */
.kpis{display:flex;background:#fff;margin-bottom:8px;padding:14px 0}
.kpis .k{flex:1;text-align:center;border-right:1px solid #f0f0f0;cursor:default}
.kpis .k:last-child{border-right:0}
.kpis .k.click{cursor:pointer}
.kpis .k.click:hover .v{color:#1890FF}
.kpis .l{font-size:12px;color:#666}
.kpis .v{font-size:20px;color:#333;margin-top:2px}
/* 表格 */
.tbl-wrap{background:#fff;overflow:auto}
table.tbl{width:100%;border-collapse:collapse;font-size:12px}
.tbl th{background:#fafafa;font-weight:500;color:#333;text-align:left;padding:9px 8px;border-bottom:1px solid #e8e8e8;white-space:nowrap}
.tbl td{padding:8px;border-bottom:1px solid #e8e8e8;vertical-align:top}
.tbl tr:hover td{background:#e6f7ff}
.tbl td.ops{width:34px;position:relative}
.dots{width:20px;height:20px;border:1px solid #d9d9d9;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;font-size:10px;cursor:pointer;color:#999;letter-spacing:-1px}
.dots:hover{border-color:#1890FF;color:#1890FF}
.rowmenu{position:absolute;left:30px;top:6px;background:#fff;box-shadow:0 2px 8px rgba(0,0,0,.15);z-index:30;min-width:110px}
.rowmenu a{display:block;padding:6px 14px;color:#333}
.rowmenu a:hover{background:#f5f5f5;color:#1890FF}
.muted{color:#999}
.nowrap{white-space:nowrap}
.ellipsis{max-width:260px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pager{display:flex;justify-content:flex-end;align-items:center;gap:6px;padding:12px 16px;background:#fff;font-size:12px}
.pager .pg{min-width:24px;height:24px;border:1px solid #d9d9d9;display:inline-flex;align-items:center;justify-content:center;cursor:pointer;padding:0 6px;background:#fff}
.pager .pg.on{border-color:#1890FF;color:#1890FF}
.pager input{width:44px;height:24px}
.pager select{height:24px}
/* 标签 */
.grade{display:inline-block;background:#1890FF;color:#fff;border-radius:10px;padding:0 7px;font-size:11px;line-height:17px}
.grade.none{background:#d9d9d9}
.pill{display:inline-block;border-radius:10px;padding:0 8px;font-size:11px;line-height:18px;background:#FF495D;color:#fff;margin-right:4px}
.tag{display:inline-block;border:1px solid #d9d9d9;border-radius:2px;padding:0 6px;font-size:11px;line-height:18px;margin:1px 4px 1px 0;background:#fafafa}
.tag.green{color:#52c41a;border-color:#b7eb8f;background:#f6ffed}
.tag.orange{color:#fa8c16;border-color:#ffd591;background:#fff7e6}
.tag.red{color:#f5222d;border-color:#ffa39e;background:#fff1f0}
.tag.blue{color:#1890FF;border-color:#91d5ff;background:#e6f7ff}
.tag.gray{color:#999}
.st-normal{color:#52c41a}.st-suspicious{color:#fa8c16}.st-void{color:#f5222d}
.red{color:#f5222d}.green{color:#52c41a}.orange{color:#fa8c16}
/* 抽屉 / 弹窗 */
.mask{position:fixed;inset:0;background:rgba(0,0,0,.45);z-index:100}
.drawer{position:fixed;top:0;right:0;bottom:0;width:380px;background:#fff;z-index:101;display:flex;flex-direction:column;box-shadow:-2px 0 8px rgba(0,0,0,.15)}
.drawer .dh{padding:14px 20px;font-size:15px;font-weight:500;border-bottom:1px solid #e8e8e8;display:flex}
.drawer .dh .grow{flex:1}
.drawer .db{flex:1;overflow:auto;padding:16px 20px}
.drawer .df{padding:10px 20px;border-top:1px solid #e8e8e8;display:flex;justify-content:flex-end;gap:8px}
.fitem{margin-bottom:14px}
.fitem>label{display:block;color:#666;margin-bottom:6px;font-size:12px}
.fitem input,.fitem select,.fitem textarea{width:100%}
.radios{display:flex;flex-wrap:wrap;gap:6px}
.radios span{border:1px solid #d9d9d9;padding:0 10px;line-height:24px;cursor:pointer;border-radius:2px;font-size:12px}
.radios span.on{border-color:#1890FF;color:#1890FF;background:#e6f7ff}
.modal{position:fixed;top:8vh;left:50%;transform:translateX(-50%);width:640px;max-width:96vw;max-height:84vh;background:#fff;z-index:101;display:flex;flex-direction:column;border-radius:2px;box-shadow:0 4px 12px rgba(0,0,0,.15)}
.modal.wide{width:960px}
.modal .dh{padding:14px 20px;font-size:15px;font-weight:500;border-bottom:1px solid #e8e8e8;display:flex}
.modal .dh .grow{flex:1}
.modal .db{overflow:auto;padding:16px 20px;flex:1}
.modal .df{padding:10px 20px;border-top:1px solid #e8e8e8;display:flex;justify-content:flex-end;gap:8px}
.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:0 20px}
.form-grid .full{grid-column:1/-1}
.req::before{content:"* ";color:#f5222d}
.fields-panel{position:absolute;right:0;top:30px;background:#fff;box-shadow:0 2px 8px rgba(0,0,0,.15);z-index:40;padding:10px 14px;width:200px;max-height:420px;overflow:auto}
.fields-panel label{display:flex;gap:6px;align-items:center;padding:3px 0;cursor:pointer;font-size:12px}
.fields-panel input{height:auto}
.rel{position:relative}
/* 详情页 */
.detail{display:flex;align-items:flex-start;gap:0}
.anchor{width:96px;flex:none;position:sticky;top:96px;background:#fff;align-self:flex-start;margin-right:8px;padding:6px 0;min-height:200px}
.anchor a{display:block;color:#333;font-size:12px;padding:6px 12px;border-right:2px solid transparent;text-align:right}
.anchor a.on{color:#D90700;border-right-color:#D90700}
.detail .main{flex:1;min-width:0}
.dtitle{background:#fff;padding:16px 20px 10px;margin-bottom:0}
.dtitle h2{margin:0 0 6px;font-size:18px;font-weight:500;display:flex;align-items:center;gap:10px}
.dtitle .meta{color:#666;font-size:12px;line-height:1.9}
.status-btn{background:#1890FF;color:#fff;font-size:12px;padding:0 10px;line-height:22px;border-radius:2px;font-weight:400}
.status-btn.gray{background:#bfbfbf}.status-btn.orange{background:#fa8c16}.status-btn.red{background:#f5222d}.status-btn.green{background:#52c41a}
.lv-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px 24px;padding:14px 20px}
.lv-grid .lv .l{color:#999;font-size:12px}
.lv-grid .lv .v{color:#333;font-size:12px;word-break:break-all;margin-top:2px}
.lv-grid .full{grid-column:1/-1}
.sec{background:#fff;margin-bottom:8px}
.sec-h{display:flex;align-items:center;padding:14px 20px 8px;font-size:14px;color:#333;border-bottom:1px solid #f0f0f0}
.sec-h .grow{flex:1}
.sec-b{padding:10px 20px}
.empty{color:#bbb;text-align:center;padding:30px 0;font-size:12px}
.timeline{padding:6px 20px 16px}
.timeline .ti{display:flex;gap:14px;padding:8px 0;border-left:1px solid #e8e8e8;margin-left:6px;padding-left:16px;position:relative}
.timeline .ti::before{content:"";position:absolute;left:-5px;top:13px;width:9px;height:9px;border-radius:50%;background:#52c41a}
.timeline .ti .t{color:#999;width:130px;flex:none;font-size:12px}
.prevnext{display:flex;gap:8px}
.thumbs{display:flex;flex-wrap:wrap;gap:8px}
.thumbs .th{width:96px;height:96px;background:#f5f5f5 center/cover no-repeat;cursor:pointer;position:relative;border:1px solid #eee}
.thumbs .th .fl{position:absolute;left:0;bottom:0;right:0;background:rgba(250,140,22,.9);color:#fff;font-size:10px;padding:0 3px}
.inline-form{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
/* 首页卡片 */
.dash{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}
.dash .card{background:#fff;padding:14px 16px;min-height:96px}
.dash .card .l{color:#666;font-size:12px}
.dash .card .v{font-size:24px;margin-top:6px}
.dash .wide2{grid-column:span 2}.dash .wide4{grid-column:1/-1}
.bars .bar{display:flex;align-items:center;gap:8px;margin:6px 0;font-size:12px}
.bars .bar .bl{width:52px;color:#666}
.bars .bar .bt{flex:1;background:#f5f5f5;height:14px}
.bars .bar .bf{background:#40a9ff;height:14px}
.bars .bar .bn{width:56px;text-align:right}
/* 周视图 */
.week{display:grid;grid-template-columns:repeat(7,1fr);gap:4px;background:#fff;padding:8px}
.week .day{min-height:420px}
.week .dh{text-align:center;font-size:12px;padding:6px 0;border-bottom:2px solid #e8e8e8;margin-bottom:4px}
.week .dh.today{border-bottom-color:#333;font-weight:500}
.week .ev{background:#e6f7ff;border-left:3px solid #1890FF;padding:3px 6px;margin-bottom:4px;font-size:11px;cursor:pointer}
.week .ev.mig{background:#f5f5f5;border-left-color:#bfbfbf}
.week .ev.sus{background:#fff7e6;border-left-color:#fa8c16}
/* 登录 */
.login-wrap{min-height:100vh;display:flex;align-items:center;justify-content:center;background:#F0F0F0}
.login{width:360px;background:#fff;padding:32px;box-shadow:0 2px 8px rgba(0,0,0,.08)}
.login h1{font-size:20px;margin:0 0 6px;color:#D90700}
.login input{width:100%;height:36px;margin-bottom:12px}
.login button{width:100%;height:36px;justify-content:center}
/* 消息 */
.toast{position:fixed;top:60px;left:50%;transform:translateX(-50%);z-index:200;background:#fff;box-shadow:0 4px 12px rgba(0,0,0,.15);padding:8px 16px;border-radius:2px}
.toast.err{color:#f5222d}
.toast.ok{color:#52c41a}
/* 地图 */
.map{position:relative;background:#eef3f7;overflow:hidden;border:1px solid #e8e8e8}
.map svg{display:block}
.map .mapnote{position:absolute;left:6px;bottom:4px;font-size:11px;color:#888;background:rgba(255,255,255,.8);padding:0 4px}
.map .tip{position:absolute;background:#fff;box-shadow:0 2px 8px rgba(0,0,0,.2);padding:6px 10px;font-size:12px;pointer-events:none;max-width:260px;z-index:5}
/* 照片查看 */
.viewer{position:fixed;inset:0;z-index:150;background:rgba(0,0,0,.85);display:flex}
.viewer .img{flex:1;display:flex;align-items:center;justify-content:center;position:relative}
.viewer .img img{max-width:100%;max-height:100vh}
.viewer .side{width:320px;background:#fff;padding:16px;overflow:auto;font-size:12px}
.viewer .nav{position:absolute;top:50%;color:#fff;font-size:36px;cursor:pointer;padding:10px;user-select:none}
.split{display:flex;gap:8px;align-items:flex-start}
.tree{background:#fff;width:260px;flex:none;padding:8px 0;max-height:calc(100vh - 120px);overflow:auto}
.tree .node{padding:5px 12px;cursor:pointer;font-size:12px;display:flex;gap:4px}
.tree .node.on{background:#e6f7ff;color:#1890FF}
.tree .node .cnt{color:#999;margin-left:auto}
.tabs2{display:flex;gap:0;background:#fff;padding:0 12px;border-bottom:1px solid #e8e8e8;margin-bottom:8px}
.tabs2 a{padding:10px 14px;color:#333;border-bottom:2px solid transparent}
.tabs2 a.on{color:#1890FF;border-bottom-color:#1890FF}
.switch{display:inline-block;width:32px;height:18px;border-radius:9px;background:#bfbfbf;position:relative;cursor:pointer;vertical-align:middle}
.switch::after{content:"";position:absolute;top:2px;left:2px;width:14px;height:14px;border-radius:50%;background:#fff;transition:.2s}
.switch.on{background:#FF495D}
.switch.on::after{left:16px}
.verify-box{display:flex;gap:16px;align-items:flex-start}
.watermark-img{max-width:480px;border:1px solid #eee}
/* 导出中心 */
.exp-kinds{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:10px}
.exp-kind{border:1px solid #e8e8e8;padding:10px 12px;cursor:pointer;background:#fff;min-height:74px}
.exp-kind:hover{border-color:#40a9ff}
.exp-kind.on{border-color:#1890FF;background:#e6f7ff}
.exp-kind b{display:block;margin-bottom:4px}
.exp-kind .muted{font-size:12px}
