/* 镜湖智居 V2 · 全站样式 */
  :root{--bg:#07090d;--bg2:#0d1118;--panel:#131a24;--panel2:#1a2330;--line:rgba(212,180,106,.16);--line2:rgba(255,255,255,.07);
    --gold:#d4b46a;--gold2:#f0d9a6;--txt:#e8e4da;--sub:#8b95a3;--on:#5fd08a;--warn:#e8a13c;--err:#e05c5c;--cool:#5aa7e8;--r:12px}
  *{margin:0;padding:0;box-sizing:border-box}
  body{background:var(--bg);color:var(--txt);font-family:"Microsoft YaHei","PingFang SC",sans-serif;height:100vh;overflow:hidden;display:flex}
  ::-webkit-scrollbar{width:7px;height:7px}::-webkit-scrollbar-thumb{background:#243044;border-radius:4px}

  /* ===== 侧边栏 ===== */
  .side{width:86px;background:var(--bg2);border-right:1px solid var(--line2);display:flex;flex-direction:column;align-items:center;padding:14px 0;gap:2px;flex:none;z-index:20}
  .side .mark{width:44px;height:44px;border-radius:12px;border:1px solid var(--gold);display:flex;align-items:center;justify-content:center;color:var(--gold);font-size:20px;margin-bottom:10px}
  .side .nav{width:70px;padding:9px 0 7px;border-radius:10px;cursor:pointer;text-align:center;color:var(--sub);transition:.2s;border:1px solid transparent}
  .side .nav i{font-style:normal;font-size:19px;display:block}
  .side .nav span{font-size:10.5px;display:block;margin-top:3px;letter-spacing:1px}
  .side .nav:hover{color:var(--txt);background:var(--panel)}
  .side .nav.act{color:var(--gold2);background:rgba(212,180,106,.1);border-color:var(--line)}
  .side .nav .badge{position:absolute;margin-left:26px;margin-top:-30px;background:var(--err);color:#fff;font-size:9px;border-radius:8px;padding:1px 5px}
  .side .grow{flex:1}

  /* ===== 主区 ===== */
  .main{flex:1;display:flex;flex-direction:column;min-width:0}
  .top{height:58px;border-bottom:1px solid var(--line2);display:flex;align-items:center;gap:16px;padding:0 22px;background:var(--bg2);flex:none}
  .top .htitle{font-size:16px;letter-spacing:2px;font-weight:600}
  .top .chip{font-size:12px;color:var(--sub);border:1px solid var(--line2);border-radius:16px;padding:4px 12px;display:flex;gap:6px;align-items:center}
  .top .chip b{color:var(--txt);font-weight:500}
  .top .sp{flex:1}
  .homeswitch{display:flex;gap:4px;background:var(--panel);border:1px solid var(--line2);border-radius:10px;padding:3px}
  .homeswitch button{border:0;background:transparent;color:var(--sub);padding:5px 11px;border-radius:7px;cursor:pointer;font-size:12px}
  .homeswitch button.act{background:linear-gradient(135deg,#3a3423,#242a35);color:var(--gold2)}
  .bell{position:relative;font-size:18px;cursor:pointer}
  .bell .dot{position:absolute;top:-2px;right:-4px;width:8px;height:8px;border-radius:50%;background:var(--err);display:none}
  .bell.on .dot{display:block}
  .content{flex:1;overflow:auto;padding:18px 22px}
  .page{display:none}.page.act{display:block;animation:fade .3s}
  @keyframes fade{from{opacity:0;transform:translateY(6px)}to{opacity:1}}

  .card{background:var(--panel);border:1px solid var(--line);border-radius:var(--r);padding:16px 18px}
  .card h3{font-size:14px;font-weight:600;letter-spacing:1px;margin-bottom:12px;display:flex;align-items:center;gap:8px}
  .card h3 .tag{font-size:10px;color:var(--gold);border:1px solid var(--line);padding:2px 8px;border-radius:20px;letter-spacing:2px;font-weight:400}
  .card h3 .rt{margin-left:auto;font-size:11px;color:var(--sub);font-weight:400}
  .g2{display:grid;grid-template-columns:1fr 1fr;gap:14px}
  .g3{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}
  .mb{margin-bottom:14px}
  .kpi{display:flex;justify-content:space-between;align-items:center;padding:10px 2px;border-bottom:1px dashed var(--line2);font-size:13px}
  .kpi:last-child{border:0}
  .kpi .v{font-family:Georgia,serif;font-size:15px;color:var(--gold2)}
  .st{font-size:11px}.st.g{color:var(--on)}.st.y{color:var(--warn)}.st.r{color:var(--err)}
  .btn{border:1px solid var(--line);background:linear-gradient(135deg,#3a3423,#242a35);color:var(--gold2);border-radius:9px;padding:8px 16px;cursor:pointer;font-size:13px;letter-spacing:1px}
  .btn:hover{filter:brightness(1.15)}
  .btn.ghost{background:var(--panel2);color:var(--sub)}
  .btn.danger{background:rgba(224,92,92,.12);border-color:rgba(224,92,92,.4);color:var(--err)}
  .toggle{display:flex;align-items:center;justify-content:space-between;padding:9px 0;border-bottom:1px dashed var(--line2);font-size:13px}
  .sw{width:42px;height:23px;border-radius:20px;background:#2a3547;position:relative;cursor:pointer;transition:.25s;flex:none}
  .sw::after{content:"";position:absolute;top:3px;left:3px;width:17px;height:17px;border-radius:50%;background:#8b95a3;transition:.25s}
  .sw.on{background:linear-gradient(90deg,#8a7434,var(--gold))}
  .sw.on::after{left:22px;background:#fff}
  input[type=range]{-webkit-appearance:none;width:100%;height:5px;border-radius:3px;background:#232d3c;outline:none}
  input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;width:16px;height:16px;border-radius:50%;background:linear-gradient(135deg,var(--gold2),var(--gold));cursor:pointer;box-shadow:0 0 8px rgba(212,180,106,.5)}
  .cl{display:flex;justify-content:space-between;font-size:12px;color:var(--sub);margin-bottom:6px}
  .cl b{color:var(--txt);font-family:Georgia,serif;font-weight:500}
  .log{font-size:12px;color:var(--sub);line-height:2}
  .log .warn{color:var(--warn)}.log .err{color:var(--err)}.log b{color:var(--gold2);font-weight:500}
  .prog{height:6px;border-radius:3px;background:#232d3c;overflow:hidden;margin-top:8px}
  .prog i{display:block;height:100%;background:linear-gradient(90deg,#8a7434,var(--gold));border-radius:3px;transition:width .5s}
  .barrow{display:flex;align-items:center;gap:8px;font-size:12px;color:var(--sub);margin-top:9px}
  .barrow .bv{margin-left:auto;color:var(--gold2);font-family:Georgia,serif}
  table.bt{width:100%;border-collapse:collapse;font-size:12.5px}
  table.bt th{color:var(--gold);font-weight:500;text-align:left;padding:8px;border-bottom:1px solid var(--line);letter-spacing:1px;font-size:12px}
  table.bt td{padding:7px 8px;border-bottom:1px solid var(--line2);color:#c2cbd8}
  table.bt td.num,table.bt th.num{text-align:right;font-family:Georgia,serif}
  .pill{font-size:11px;border:1px solid var(--line2);border-radius:14px;padding:3px 10px;color:var(--sub);cursor:pointer}
  .pill.act{color:var(--gold2);border-color:var(--gold);background:rgba(212,180,106,.08)}

  /* 场景卡 */
  .scenes{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}
  .scn{border:1px solid var(--line2);background:var(--panel2);border-radius:11px;padding:12px 10px;text-align:center;cursor:pointer;transition:.25s}
  .scn:hover{transform:translateY(-2px);border-color:var(--gold)}
  .scn.act{border-color:var(--gold);background:linear-gradient(160deg,rgba(212,180,106,.14),var(--panel2))}
  .scn .ico{font-size:22px}.scn .nm{font-size:12.5px;margin-top:5px}
  .scn .ds{font-size:10px;color:var(--sub);margin-top:2px}

  /* 平面图 */
  .planwrap{display:grid;grid-template-columns:1.55fr 1fr;gap:14px}
  .roomshape{cursor:pointer;transition:.3s}
  .roomshape rect{fill:#141c27;stroke:#2c3a4e;stroke-width:1.3;transition:.5s}
  .roomshape:hover rect{stroke:var(--gold)}
  .roomshape.sel rect{stroke:var(--gold);stroke-width:2.2;fill:#1c2431}
  .roomshape.lit rect{fill:#2b2a1f}.roomshape.lit2 rect{fill:#3a3524}
  .roomtext{fill:#aeb8c6;font-size:13px;text-anchor:middle;pointer-events:none}
  .roomdev{fill:#5f6b7d;font-size:10px;text-anchor:middle;pointer-events:none}
  .devdot.lamp circle{fill:#39424f;transition:.5s}
  .devdot.lamp.on circle{fill:#ffd98a;filter:drop-shadow(0 0 5px #ffce6b)}

  /* 漫游 */
  .panowrap{display:grid;grid-template-columns:1.7fr 1fr;gap:14px;height:calc(100vh - 58px - 36px)}
  .panobox{display:flex;flex-direction:column;overflow:hidden;position:relative}
  .panobox iframe{flex:1;width:100%;border:0;background:#0d1219}
  .panostage{flex:1;position:relative;background:#05080c;min-height:0}
  .panostage .pano-canvas{display:block;width:100%;height:100%}
  .live-dot{width:7px;height:7px;border-radius:50%;background:var(--on);box-shadow:0 0 0 0 rgba(95,208,138,.7);animation:livePulse 1.8s infinite}
  @keyframes livePulse{0%{box-shadow:0 0 0 0 rgba(95,208,138,.6)}70%{box-shadow:0 0 0 9px rgba(95,208,138,0)}100%{box-shadow:0 0 0 0 rgba(95,208,138,0)}}
  .pano-tip{position:absolute;left:12px;top:52px;background:rgba(7,9,13,.72);border:1px solid rgba(212,180,106,.22);color:var(--gold2);font-size:11.5px;padding:5px 11px;border-radius:20px;backdrop-filter:blur(8px);pointer-events:none;letter-spacing:.3px}
  .pano-tip span{margin-right:4px}
  .panodock{position:absolute;left:0;right:0;bottom:0;background:linear-gradient(180deg,rgba(7,9,13,0) 0%,rgba(7,9,13,.88) 38%,rgba(7,9,13,.97) 100%);padding:22px 14px 12px;display:flex;flex-direction:column;gap:8px}
  .padock-title{font-size:11px;color:var(--sub);letter-spacing:2px}
  .padock-list{display:flex;gap:6px;flex-wrap:wrap}
  .padock-list button{background:rgba(26,35,48,.85);border:1px solid var(--line);color:var(--txt);padding:5px 12px;border-radius:20px;font-size:12px;cursor:pointer;transition:.18s;backdrop-filter:blur(6px)}
  .padock-list button:hover{border-color:var(--gold);color:var(--gold2)}
  .padock-list button.act{background:linear-gradient(135deg,rgba(212,180,106,.22),rgba(212,180,106,.08));border-color:var(--gold);color:var(--gold2);box-shadow:0 0 14px rgba(212,180,106,.18)}
  .padock-fx{display:flex;gap:6px}
  .padock-fx button{background:rgba(26,35,48,.85);border:1px solid var(--line2);color:var(--sub);padding:4px 10px;border-radius:7px;font-size:11.5px;cursor:pointer}
  .padock-fx button:hover{color:var(--txt);border-color:var(--line)}
  .padock-fx button.on{color:var(--gold2);border-color:var(--gold);background:rgba(212,180,106,.14)}
  .scn-mini{display:flex;gap:6px;flex-wrap:wrap}
  .scn-mini button{background:var(--panel2);border:1px solid var(--line2);color:var(--sub);padding:5px 9px;border-radius:7px;font-size:11.5px;cursor:pointer}
  .scn-mini button:hover{color:var(--txt)}
  .scn-mini button.act{color:var(--gold2);border-color:var(--gold);background:rgba(212,180,106,.12)}
  .panotop{display:flex;align-items:center;gap:10px;padding:9px 12px;font-size:12.5px;color:var(--sub)}
  .panotop b{color:var(--gold2)}
  .panotop a{margin-left:auto;border:1px solid var(--line);color:var(--gold2);padding:5px 12px;border-radius:8px;font-size:12px;text-decoration:none}
  .roomlist{display:flex;flex-wrap:wrap;gap:7px;margin-bottom:12px}
  .roomlist button{border:1px solid var(--line2);background:var(--panel2);color:var(--sub);font-size:12.5px;padding:7px 12px;border-radius:9px;cursor:pointer;display:flex;align-items:center;gap:6px}
  .roomlist button.act{color:var(--gold2);border-color:var(--gold);background:rgba(212,180,106,.1)}
  .roomlist button .lb{width:7px;height:7px;border-radius:50%;background:#39424f}
  .roomlist button.lit .lb{background:#ffd98a;box-shadow:0 0 6px #ffce6b}

  /* 语音 */
  .voicebar{display:flex;gap:9px;margin-top:4px}
  .voicebar input{flex:1;background:var(--panel2);border:1px solid var(--line2);border-radius:10px;padding:10px 14px;color:var(--txt);font-size:13px;outline:none}
  .voicebar input:focus{border-color:var(--gold)}
  .vlog{font-size:12.5px;line-height:1.9;max-height:150px;overflow:auto;margin-top:10px}
  .vlog .u{color:var(--sub)}.vlog .a{color:var(--gold2)}

  #toast{position:fixed;top:66px;left:50%;transform:translateX(-50%) translateY(-16px);opacity:0;z-index:99;max-width:70vw;
    background:linear-gradient(135deg,#2b2818,#1c2330);border:1px solid var(--gold);color:var(--gold2);
    padding:11px 22px;border-radius:26px;font-size:13px;transition:.35s;box-shadow:0 10px 40px rgba(0,0,0,.6);pointer-events:none}
  #toast.show{opacity:1;transform:translateX(-50%) translateY(0)}
  .footerhint{flex:none;height:36px;border-top:1px solid var(--line2);display:flex;align-items:center;padding:0 22px;font-size:10.5px;color:#4a5464;letter-spacing:1px;gap:14px}
  @media(max-width:1150px){.g3,.g2,.planwrap,.panowrap,.scenes{grid-template-columns:1fr}}

  /* ===== 样板体验 · 动态效果 ===== */
  @keyframes lampPulse{0%,100%{opacity:.85}50%{opacity:1}}
  .devdot.lamp.on circle{animation:lampPulse 2.6s ease-in-out infinite}
  @keyframes secScan{0%{transform:translateY(0)}100%{transform:translateY(540px)}}
  .scanline{animation:secScan 4s linear infinite}
  #flash{position:fixed;inset:0;z-index:90;pointer-events:none;opacity:0;background:radial-gradient(1200px 600px at 50% 40%,rgba(255,217,138,.28),transparent 70%)}
  #flash.go{animation:flashGo 1.2s ease-out}
  @keyframes flashGo{0%{opacity:0}18%{opacity:1}100%{opacity:0}}
  .showdock{position:sticky;top:0;z-index:5;display:flex;gap:8px;align-items:center;background:rgba(7,9,13,.9);backdrop-filter:blur(6px);padding:10px 12px;border:1px solid var(--line);border-radius:12px;margin-bottom:12px;flex-wrap:wrap}
  .showstage{display:grid;grid-template-columns:1.7fr 1fr;gap:14px;align-items:stretch}
  .stagebox{position:relative;border:1px solid var(--line);border-radius:14px;overflow:hidden;background:#0d1219;min-height:520px;display:flex;flex-direction:column}
  .stagebox iframe{flex:1;width:100%;border:0}
  .showviews{position:absolute;left:10px;bottom:46px;right:10px;z-index:4;display:flex;gap:6px;flex-wrap:wrap}
  .showviews button{background:rgba(7,9,13,.78);border:1px solid rgba(212,180,106,.24);color:var(--sub);padding:4px 12px;border-radius:16px;font-size:11.5px;cursor:pointer;backdrop-filter:blur(8px);transition:.18s}
  .showviews button:hover{color:var(--gold2);border-color:var(--gold)}
  .showviews button.act{background:rgba(212,180,106,.2);border-color:var(--gold);color:var(--gold2)}
  .showpano{position:absolute;inset:0;background:#05080c}
  .showpano .pano-canvas{display:block;width:100%;height:100%}
  .stagelabel{position:absolute;top:10px;left:12px;z-index:3;background:rgba(7,9,13,.75);border:1px solid var(--line);border-radius:18px;padding:5px 14px;font-size:12px;color:var(--gold2);letter-spacing:1px}
  .stagetag{position:absolute;bottom:10px;left:12px;z-index:3;font-size:11px;color:var(--sub);background:rgba(7,9,13,.75);border-radius:14px;padding:4px 12px}
  .fxrow{display:flex;gap:8px;flex-wrap:wrap;margin-top:10px}
  .robothon{outline:1px solid rgba(95,208,138,.5)}
  @media(max-width:1150px){.showstage{grid-template-columns:1fr}}
