/* ============ 智慧安防需求站 · 样式 ============ */
:root{
  --bg:#0c1322; --bg2:#0f1a2e; --panel:#12203a; --panel2:#16294a;
  --line:#1f3358; --line2:#2a4670;
  --txt:#e8eefc; --muted:#9fb2d4; --dim:#6f86ac;
  --brand:#2f8cff; --brand2:#26d3c6; --accent:#ffb547;
  --danger:#ff5c6c; --ok:#37d39b;
  --radius:14px; --sb:288px; --hd:62px;
  --shadow:0 10px 30px rgba(0,0,0,.35);
  --grad:linear-gradient(120deg,#2f8cff,#26d3c6);
}
*{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth}
body{
  font-family:"Microsoft YaHei","PingFang SC","Segoe UI",system-ui,sans-serif;
  background:radial-gradient(1200px 700px at 80% -10%,#13294d 0,var(--bg) 55%) fixed;
  color:var(--txt); line-height:1.7; -webkit-font-smoothing:antialiased;
}
a{color:inherit;text-decoration:none}
::selection{background:var(--brand);color:#fff}
::-webkit-scrollbar{width:10px;height:10px}
::-webkit-scrollbar-thumb{background:var(--line2);border-radius:8px}
::-webkit-scrollbar-track{background:transparent}

/* ---------- 顶栏 ---------- */
header.top{
  position:fixed;top:0;left:0;right:0;height:var(--hd);z-index:50;
  display:flex;align-items:center;gap:14px;padding:0 20px;
  background:rgba(10,17,32,.82);backdrop-filter:blur(12px);
  border-bottom:1px solid var(--line);
}
.top .logo{display:flex;align-items:center;gap:11px;font-weight:800;letter-spacing:.5px}
.top .logo .mark{
  width:34px;height:34px;border-radius:9px;background:var(--grad);
  display:grid;place-items:center;color:#fff;box-shadow:0 6px 16px rgba(47,140,255,.45);
}
.top .logo .mark svg{width:20px;height:20px}
.top .ttl{font-size:15px}
.top .ttl small{display:block;font-size:11px;color:var(--dim);font-weight:500;letter-spacing:0}
.top .spacer{flex:1}
.badge{font-size:12px;padding:4px 11px;border-radius:999px;border:1px solid var(--line2);color:var(--muted);background:var(--panel)}
.badge.live{color:var(--ok);border-color:rgba(55,211,155,.4)}
.badge.live::before{content:"";display:inline-block;width:7px;height:7px;border-radius:50%;background:var(--ok);margin-right:6px;vertical-align:middle;box-shadow:0 0 0 3px rgba(55,211,155,.2)}
.menuBtn{display:none;background:var(--panel);border:1px solid var(--line2);color:var(--txt);width:38px;height:38px;border-radius:9px;cursor:pointer;font-size:18px}

/* ---------- 侧栏 ---------- */
aside.side{
  position:fixed;top:var(--hd);bottom:0;left:0;width:var(--sb);z-index:40;
  background:linear-gradient(180deg,var(--bg2),var(--bg));
  border-right:1px solid var(--line);overflow-y:auto;padding:16px 12px 60px;
}
.nav-group{margin-bottom:6px}
.nav-item{
  display:flex;align-items:center;gap:11px;padding:10px 12px;border-radius:10px;
  color:var(--muted);cursor:pointer;font-weight:600;font-size:14px;position:relative;
  transition:.15s;
}
.nav-item:hover{background:var(--panel);color:var(--txt)}
.nav-item.active{background:var(--panel2);color:#fff}
.nav-item.active::before{content:"";position:absolute;left:0;top:8px;bottom:8px;width:3px;border-radius:3px;background:var(--grad)}
.nav-item .ico{width:20px;height:20px;flex:none;color:var(--brand)}
.nav-item .ico svg{width:20px;height:20px}
.nav-item .no{font-size:11px;color:var(--dim);margin-left:auto;flex:none}
.nav-item .caret{margin-left:auto;transition:.2s;color:var(--dim)}
.nav-group.open .nav-item.parent .caret{transform:rotate(90deg)}
.subnav{max-height:0;overflow:hidden;transition:max-height .3s ease;margin-left:8px;border-left:1px dashed var(--line2);padding-left:6px}
.nav-group.open .subnav{max-height:900px}
.subnav a{
  display:block;padding:7px 12px;font-size:13px;color:var(--dim);border-radius:8px;cursor:pointer;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transition:.12s;
}
.subnav a:hover{color:var(--txt);background:var(--panel)}
.subnav a.active{color:var(--brand2);font-weight:700}
.side .sec-label{font-size:11px;letter-spacing:1px;color:var(--dim);padding:14px 12px 6px;text-transform:uppercase}

/* ---------- 主区 ---------- */
main{margin-left:var(--sb);margin-top:var(--hd);padding:30px 40px 80px;max-width:1180px}
.crumb{font-size:13px;color:var(--dim);margin-bottom:14px;display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.crumb a{cursor:pointer;color:var(--muted)}.crumb a:hover{color:var(--brand)}
.crumb .sep{opacity:.5}
.view{animation:fade .35s ease}
@keyframes fade{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}

/* ---------- HERO ---------- */
.hero{
  position:relative;border-radius:20px;overflow:hidden;padding:46px 42px;margin-bottom:30px;
  background:linear-gradient(135deg,#10294f 0,#0c1322 70%);border:1px solid var(--line);
}
.hero::after{content:"";position:absolute;inset:0;background:
  radial-gradient(420px 220px at 88% 18%,rgba(38,211,198,.20),transparent 60%),
  radial-gradient(420px 260px at 12% 92%,rgba(47,140,255,.22),transparent 60%);pointer-events:none}
.hero .tag{display:inline-flex;gap:8px;align-items:center;font-size:12px;color:var(--brand2);border:1px solid rgba(38,211,198,.35);padding:5px 12px;border-radius:999px;margin-bottom:18px}
.hero h1{font-size:30px;line-height:1.3;letter-spacing:.5px;position:relative}
.hero .sub{color:var(--muted);margin-top:10px;font-size:15px;max-width:760px;position:relative}
.hero .metarow{display:flex;flex-wrap:wrap;gap:10px;margin-top:22px;position:relative}
.hero .chip{font-size:12.5px;background:rgba(255,255,255,.05);border:1px solid var(--line2);padding:6px 13px;border-radius:9px;color:var(--muted)}
.hero .chip b{color:var(--txt);font-weight:700}

/* ---------- 目标效果图：1+1+1+N 总体架构 ---------- */
.arch{
  margin:22px 0 8px;padding:24px 22px 26px;border-radius:18px;border:1px solid var(--line);
  background:
    radial-gradient(600px 240px at 50% -10%,rgba(47,140,255,.16),transparent 60%),
    linear-gradient(180deg,#0e1d38,#0c1322);
  position:relative;overflow:hidden;
}
.arch figcaption,.arch>figcaption{text-align:center;font-size:13px;letter-spacing:1px;color:var(--brand2);margin-bottom:20px;font-weight:700}
.arch-row{display:flex;align-items:stretch;gap:16px}
.arch-side{
  flex:0 0 96px;display:flex;flex-direction:column;justify-content:center;align-items:flex-end;text-align:right;
  font-weight:800;font-size:14px;color:var(--txt);padding-right:14px;border-right:2px solid var(--line2);
}
.arch-side small{display:block;font-size:11px;color:var(--dim);font-weight:500;margin-top:3px}
.arch-band{flex:1;display:flex;gap:12px;flex-wrap:wrap;align-items:center}
.anode{
  flex:1;min-width:130px;display:flex;align-items:center;gap:9px;justify-content:center;text-align:center;
  background:var(--panel2);border:1px solid var(--line2);border-radius:12px;padding:13px 12px;
  font-size:13.5px;font-weight:600;color:var(--txt);transition:.18s;
}
.anode:hover{border-color:var(--brand);transform:translateY(-2px)}
.anode i{width:20px;height:20px;color:var(--brand2);flex:none;display:grid;place-items:center}
.anode i svg{width:20px;height:20px}
.anode.wide{flex-basis:100%}
.arch-band.src .anode{background:rgba(47,140,255,.08)}
.arch-band.data .anode{background:rgba(38,211,198,.08);border-color:rgba(38,211,198,.35)}
.arch-band.map .anode{background:rgba(255,181,71,.08);border-color:rgba(255,181,71,.35);color:#ffe2b0}
.arch-band.map .anode i{color:var(--accent)}
.arch-band.apps .anode.app{min-width:110px;font-size:13px;background:var(--panel);color:var(--muted)}
.arch-band.apps .anode.app:hover{color:#fff}
.core{margin:0}
.core-main{
  flex:1;border-radius:14px;padding:18px 20px;text-align:center;
  background:linear-gradient(120deg,rgba(47,140,255,.28),rgba(38,211,198,.22));
  border:1px solid rgba(47,140,255,.5);box-shadow:0 8px 30px rgba(47,140,255,.25);
}
.core-t{font-size:16px;font-weight:800;color:#fff;letter-spacing:.5px}
.core-tags{display:flex;gap:8px;justify-content:center;flex-wrap:wrap;margin-top:10px}
.core-tags span{font-size:12px;padding:3px 11px;border-radius:999px;background:rgba(255,255,255,.12);border:1px solid rgba(255,255,255,.25);color:#eaf2ff}
.arch-arrow{height:22px;margin-left:96px;position:relative}
.arch-arrow::before{content:"";position:absolute;left:50%;top:0;bottom:6px;width:2px;background:linear-gradient(var(--brand),var(--brand2));transform:translateX(-50%)}
.arch-arrow::after{content:"";position:absolute;left:50%;bottom:0;width:8px;height:8px;border-right:2px solid var(--brand2);border-bottom:2px solid var(--brand2);transform:translate(-50%,-2px) rotate(45deg)}
@media(max-width:720px){
  .arch-row{flex-direction:column;gap:8px}
  .arch-side{flex-basis:auto;flex-direction:row;align-items:baseline;gap:8px;text-align:left;border-right:none;border-left:3px solid var(--line2);padding:0 0 0 10px}
  .arch-side small{margin-top:0}
  .arch-arrow{margin-left:0}
}

/* ---------- 1+1+1+N ---------- */
.formula{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin:24px 0 6px}
.fcard{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:22px;position:relative;overflow:hidden}
.fcard::before{content:attr(data-k);position:absolute;right:14px;top:2px;font-size:64px;font-weight:900;color:rgba(47,140,255,.10);font-family:Arial}
.fcard h4{font-size:16px;margin-bottom:6px;position:relative}
.fcard p{font-size:13px;color:var(--muted);position:relative}

/* ---------- 指标 ---------- */
.stats{display:grid;grid-template-columns:repeat(6,1fr);gap:14px;margin:28px 0}
.stat{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:18px 14px;text-align:center}
.stat .n{font-size:26px;font-weight:800;background:var(--grad);-webkit-background-clip:text;background-clip:text;color:transparent;line-height:1.1}
.stat .n .u{font-size:13px;-webkit-text-fill-color:var(--muted);color:var(--muted);margin-left:3px}
.stat .l{font-size:12px;color:var(--dim);margin-top:6px}

/* ---------- 区块标题 ---------- */
.block-title{display:flex;align-items:center;gap:12px;margin:36px 0 16px}
.block-title .bar{width:5px;height:24px;border-radius:4px;background:var(--grad)}
.block-title h2{font-size:21px}
.block-title .hint{font-size:13px;color:var(--dim);margin-left:auto}

/* ---------- 导航卡片（首页） ---------- */
.cards{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}
.card{
  background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:22px;cursor:pointer;
  transition:.18s;position:relative;overflow:hidden;
}
.card:hover{transform:translateY(-4px);border-color:var(--line2);box-shadow:var(--shadow)}
.card .ci{width:44px;height:44px;border-radius:11px;background:var(--panel2);display:grid;place-items:center;color:var(--brand);margin-bottom:14px}
.card .ci svg{width:24px;height:24px}
.card .no{position:absolute;top:16px;right:18px;font-size:13px;color:var(--dim);font-weight:700}
.card h3{font-size:17px;margin-bottom:7px}
.card p{font-size:13px;color:var(--muted)}
.card .go{margin-top:14px;font-size:13px;color:var(--brand2);font-weight:700;display:inline-flex;gap:6px;align-items:center}

/* ---------- 子系统页 ---------- */
.sub-block{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:26px 28px;margin-bottom:20px;scroll-margin-top:80px}
.sub-block > h3{font-size:18px;margin-bottom:14px;display:flex;align-items:center;gap:10px}
.sub-block > h3::before{content:"";width:8px;height:8px;border-radius:50%;background:var(--brand2);box-shadow:0 0 0 4px rgba(38,211,198,.15)}
.sub-block p{color:var(--muted);margin:10px 0;font-size:14.5px}
.list-title{font-weight:700;color:var(--txt);margin:16px 0 8px;font-size:14.5px}
ul.req{list-style:none;display:flex;flex-direction:column;gap:8px}
ul.req li{position:relative;padding-left:24px;font-size:14px;color:var(--muted)}
ul.req li::before{content:"";position:absolute;left:4px;top:9px;width:7px;height:7px;border-radius:2px;background:var(--brand);transform:rotate(45deg)}

/* features grid */
.fgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(255px,1fr));gap:14px;margin-top:6px}
.fitem{background:var(--panel2);border:1px solid var(--line);border-radius:12px;padding:16px 16px}
.fitem .fi{width:38px;height:38px;border-radius:10px;background:rgba(47,140,255,.12);display:grid;place-items:center;color:var(--brand2);margin-bottom:11px}
.fitem .fi svg{width:21px;height:21px}
.fitem h5{font-size:15px;margin-bottom:6px}
.fitem p{font-size:12.8px;color:var(--muted);margin:0}

/* table */
table.req{width:100%;border-collapse:collapse;margin:8px 0;font-size:14px;overflow:hidden;border-radius:10px}
table.req th,table.req td{padding:11px 14px;text-align:left;border-bottom:1px solid var(--line)}
table.req th{background:var(--panel2);color:var(--muted);font-weight:700;font-size:13px;width:30%}
table.req td{color:var(--txt)}
table.req tr:last-child td,table.req tr:last-child th{border-bottom:none}

/* note */
.note{background:rgba(255,181,71,.08);border:1px solid rgba(255,181,71,.3);border-left:4px solid var(--accent);
  border-radius:10px;padding:13px 16px;font-size:14px;color:#ffe2b0;margin:12px 0;display:flex;gap:10px}
.note svg{width:18px;height:18px;flex:none;margin-top:2px;color:var(--accent)}

/* ---------- 在线效果模拟 ---------- */
.demo-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:18px}
.demo-card{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:16px 16px 14px;scroll-margin-top:80px;overflow:hidden}
.demo-card figcaption{display:flex;align-items:center;gap:10px;margin-bottom:6px}
.demo-card .dtag{font-size:15px;font-weight:800}
.demo-card .dlive{margin-left:auto;font-size:11px;color:var(--ok);letter-spacing:1px;animation:liveblink 1.4s infinite}
@keyframes liveblink{50%{opacity:.35}}
.demo-card .ddesc{font-size:12.5px;color:var(--muted);margin:0 0 12px}
.demo-stage{position:relative;border:1px solid var(--line2);border-radius:12px;overflow:hidden;background:#0a1426}
.demo-cv{display:block;width:100%;height:300px}
.demo-feed{margin-top:10px;display:flex;flex-direction:column;gap:5px;max-height:118px;overflow:hidden}
.demo-feed .ev{font-size:12px;color:var(--muted);background:var(--panel2);border:1px solid var(--line);border-radius:7px;padding:5px 10px;display:flex;gap:8px;animation:fade .3s}
.demo-feed .ev.bad{color:#ffc0c6;border-color:rgba(255,92,108,.4);background:rgba(255,92,108,.08)}
.demo-feed .ev .t{color:var(--dim);font-family:Consolas,monospace;flex:none}

/* IoT */
.iot-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;padding:12px}
.iot-tile{background:var(--panel2);border:1px solid var(--line);border-radius:10px;padding:10px 11px;transition:.2s;position:relative}
.iot-tile.alarm{border-color:var(--danger);box-shadow:0 0 0 1px var(--danger),0 0 18px rgba(255,92,108,.3);animation:iotpulse 1s infinite}
@keyframes iotpulse{50%{background:rgba(255,92,108,.1)}}
.iot-top{display:flex;align-items:center;gap:6px}
.iot-ic{width:18px;height:18px;color:var(--brand2);flex:none}.iot-ic svg{width:18px;height:18px}
.iot-name{font-size:11.5px;color:var(--muted);font-weight:600}
.iot-dot{margin-left:auto;width:8px;height:8px;border-radius:50%;background:var(--ok);box-shadow:0 0 0 3px rgba(55,211,155,.18)}
.iot-tile.alarm .iot-dot{background:var(--danger);box-shadow:0 0 0 3px rgba(255,92,108,.25)}
.iot-tile.alarm .iot-ic{color:var(--danger)}
.iot-val{margin:8px 0 4px;display:flex;align-items:baseline;gap:3px}
.iot-val b{font-size:22px;font-weight:800;color:var(--txt);font-family:Consolas,Microsoft YaHei}
.iot-tile.alarm .iot-val b{color:var(--danger)}
.iot-val em{font-size:11px;color:var(--dim);font-style:normal}
.iot-spark{display:block;width:100%;height:26px}

/* BIM 3D */
.bim-scene{height:300px;display:grid;place-items:center;perspective:1100px;position:relative;background:radial-gradient(400px 200px at 50% 30%,rgba(47,140,255,.12),transparent 60%)}
.bim-building{transform-style:preserve-3d;animation:bimspin 9s ease-in-out infinite alternate;position:relative;width:170px;height:230px}
@keyframes bimspin{from{transform:rotateX(-20deg) rotateY(-34deg)}to{transform:rotateX(-20deg) rotateY(34deg)}}
.bim-floor{
  position:absolute;left:50%;width:150px;height:38px;margin-left:-75px;
  bottom:calc(var(--i) * 44px);
  background:linear-gradient(180deg,rgba(47,140,255,.30),rgba(38,211,198,.16));
  border:1px solid rgba(120,180,255,.6);border-radius:5px;
  transform-style:preserve-3d;box-shadow:0 0 18px rgba(47,140,255,.18) inset;
  display:flex;align-items:center;justify-content:center;
  animation:floorglow 6s infinite;animation-delay:calc(var(--i) * 1.1s);
}
@keyframes floorglow{0%,100%{background:linear-gradient(180deg,rgba(47,140,255,.22),rgba(38,211,198,.1))}
  18%{background:linear-gradient(180deg,rgba(38,211,198,.55),rgba(47,140,255,.3));box-shadow:0 0 26px rgba(38,211,198,.5) inset}}
.bim-floor .bfl{font-size:10.5px;color:#dcebff;white-space:nowrap;text-shadow:0 1px 3px #000;pointer-events:none}
.bim-floor .bdot{position:absolute;width:7px;height:7px;border-radius:50%;background:#ffb547;left:14px;top:8px;box-shadow:0 0 8px #ffb547;animation:liveblink 1.6s infinite}
.bim-floor .bdot.d2{left:auto;right:16px;top:auto;bottom:8px;background:#37d39b;box-shadow:0 0 8px #37d39b;animation-delay:.6s}
.bim-scan{position:absolute;left:50%;margin-left:-82px;width:164px;height:5px;border-radius:4px;
  background:linear-gradient(90deg,transparent,#26d3c6,transparent);box-shadow:0 0 14px #26d3c6;
  animation:bimscan 4s ease-in-out infinite}
@keyframes bimscan{0%{bottom:0;opacity:.2}50%{bottom:225px;opacity:1}100%{bottom:0;opacity:.2}}
.bim-cap{position:absolute;bottom:10px;left:0;right:0;text-align:center;font-size:11px;color:var(--brand2);letter-spacing:.5px}

@media(max-width:900px){.demo-grid{grid-template-columns:1fr}.iot-grid{grid-template-columns:repeat(2,1fr)}}

/* ---------- 原文档图库 ---------- */
.gallery{display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:16px}
.gthumb{background:var(--panel);border:1px solid var(--line);border-radius:12px;overflow:hidden;cursor:zoom-in;transition:.18s}
.gthumb:hover{border-color:var(--brand);transform:translateY(-3px)}
.gthumb img{width:100%;height:240px;object-fit:cover;object-position:top;background:#fff;display:block}
.gthumb .cap{padding:10px 12px;font-size:12.5px;color:var(--muted)}
.gthumb .cap b{display:block;color:var(--txt);font-size:11px}

/* 原文档引用（章节内） */
.refdoc{margin-top:22px}
.refdoc .rl{font-size:12px;color:var(--dim);margin-bottom:8px;letter-spacing:.5px}
.refrow{display:flex;gap:12px;flex-wrap:wrap}
.refrow .gthumb{width:150px}.refrow .gthumb img{height:190px}

/* lightbox */
.lightbox{position:fixed;inset:0;z-index:100;background:rgba(4,8,16,.92);display:none;place-items:center;padding:30px}
.lightbox.show{display:grid}
.lightbox img{max-width:92vw;max-height:88vh;border-radius:8px;box-shadow:0 20px 60px rgba(0,0,0,.6)}
.lightbox .cap{position:absolute;bottom:22px;color:var(--muted);font-size:14px;width:100%;text-align:center}
.lightbox .x{position:absolute;top:22px;right:30px;color:#fff;font-size:30px;cursor:pointer;line-height:1}

/* footer nav */
.pager{display:flex;justify-content:space-between;gap:14px;margin-top:34px;border-top:1px solid var(--line);padding-top:22px}
.pager a{flex:1;background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:14px 18px;cursor:pointer;transition:.16s}
.pager a:hover{border-color:var(--brand);background:var(--panel2)}
.pager a span{font-size:11px;color:var(--dim);display:block}
.pager a b{font-size:14px}
.pager a.next{text-align:right}
.pager a.disabled{opacity:.35;pointer-events:none}

.foot{margin-left:var(--sb);padding:22px 40px;color:var(--dim);font-size:12.5px;border-top:1px solid var(--line);text-align:center}

/* responsive */
@media(max-width:980px){
  .stats{grid-template-columns:repeat(3,1fr)} .formula{grid-template-columns:1fr} .cards{grid-template-columns:1fr}
}
@media(max-width:820px){
  :root{--sb:0px}
  .menuBtn{display:block}
  aside.side{transform:translateX(-100%);transition:.25s;width:280px;box-shadow:var(--shadow)}
  aside.side.open{transform:none}
  main,.foot{margin-left:0;padding-left:18px;padding-right:18px}
  .hero{padding:30px 22px}.hero h1{font-size:23px}
  .stats{grid-template-columns:repeat(2,1fr)}
  .scrim{position:fixed;inset:var(--hd) 0 0 0;background:rgba(0,0,0,.5);z-index:39;display:none}
  .scrim.show{display:block}
}
