/* =========================================================
   ET中控 banner mockup 样式
   三张轮播:批量监控 / 小G软路由 / 云真机管理
   ========================================================= */

/* 笔记本外形 ---------------------------------------------- */
.device-mockup{
    position:relative;
    max-width:880px;
    margin:0 auto;
    padding:18px 14px 0 14px;
    filter:drop-shadow(0 35px 55px rgba(0,0,30,0.55));
    user-select:none;
}
.device-mockup__screen{
    position:relative;
    background:#070d2c;
    border:7px solid #1a2456;
    border-radius:14px;
    overflow:hidden;
    box-shadow:inset 0 0 0 1px rgba(120,160,255,0.08),inset 0 0 60px rgba(0,200,255,0.05);
    aspect-ratio:16 / 10;
}
.device-mockup__base{
    position:relative;
    height:14px;
    margin:-1px -3.5% 0 -3.5%;
    background:linear-gradient(180deg,#3a4480 0%,#1a214f 50%,#0c1238 100%);
    border-radius:0 0 22px 22px;
    box-shadow:0 14px 28px rgba(0,0,0,0.55),inset 0 1px 0 rgba(255,255,255,0.15);
}
.device-mockup__base::before{
    content:'';
    position:absolute;
    top:0;left:50%;
    transform:translateX(-50%);
    width:18%;
    height:6px;
    background:#0a0f30;
    border-radius:0 0 10px 10px;
    box-shadow:inset 0 1px 2px rgba(0,0,0,0.6);
}

/* 通用软件窗口 -------------------------------------------- */
.app-window{
    position:absolute;
    inset:0;
    display:flex;
    flex-direction:column;
    background:
        radial-gradient(circle at 80% -10%,rgba(76,215,255,0.12),transparent 50%),
        radial-gradient(circle at -10% 110%,rgba(169,108,255,0.12),transparent 55%),
        linear-gradient(180deg,#0c1342 0%,#080d2c 100%);
    color:#cfd5ff;
    font-family:"PingFang SC","Microsoft YaHei",Arial,sans-serif;
    font-size:11px;
    line-height:1.4;
}
.app-window__header{
    flex:0 0 auto;
    display:flex;
    align-items:center;
    gap:14px;
    padding:9px 16px;
    background:linear-gradient(180deg,#1a236a 0%,#121a52 100%);
    border-bottom:1px solid rgba(120,160,255,0.12);
}
.brand{display:flex;align-items:center;gap:8px;font-weight:700;color:#fff;font-size:13px;}
.brand__logo{
    display:inline-block;
    background:linear-gradient(135deg,#4ad7ff 0%,#6c8aff 100%);
    color:#0a1442;
    padding:2px 7px;
    border-radius:5px;
    font-weight:800;
    letter-spacing:0.5px;
    box-shadow:0 2px 8px rgba(76,215,255,0.4);
}
.brand__sub{
    color:#7a87c5;
    font-size:10px;
    letter-spacing:1.5px;
    font-weight:400;
}
.app-window__chrome{
    margin-left:auto;
    display:flex;
    gap:7px;
}
.app-window__chrome i{
    width:9px;height:9px;
    border-radius:50%;
    background:#2c3a7d;
    box-shadow:inset 0 1px 0 rgba(255,255,255,0.1);
}
.app-window__chrome i:nth-child(1){background:#ff5b87;}
.app-window__chrome i:nth-child(2){background:#ffd64a;}
.app-window__chrome i:nth-child(3){background:#4cffaa;}

.app-window__body{flex:1;display:flex;min-height:0;}
.app-window__footer{
    flex:0 0 auto;
    display:flex;
    align-items:center;
    gap:18px;
    padding:7px 16px;
    background:linear-gradient(180deg,#121a52 0%,#0a1140 100%);
    border-top:1px solid rgba(120,160,255,0.12);
    font-size:10px;
    color:#8a97cf;
}

/* sidebar 通用 -------------------------------------------- */
.app-sidebar{
    width:18%;
    min-width:140px;
    background:linear-gradient(180deg,#0d1546 0%,#070b2a 100%);
    border-right:1px solid rgba(120,160,255,0.08);
    padding:12px 12px;
    display:flex;
    flex-direction:column;
    gap:10px;
    font-size:10px;
}
.app-sidebar__title{
    color:#6c79b7;
    text-transform:uppercase;
    letter-spacing:1.5px;
    font-size:9px;
    font-weight:600;
    margin-top:4px;
}
.app-sidebar__list{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:3px;}
.app-sidebar__list li{
    display:flex;
    align-items:center;
    gap:8px;
    padding:5px 8px;
    border-radius:5px;
    color:#a8b2dd;
    background:rgba(255,255,255,0.015);
    transition:background .3s;
}
.app-sidebar__list li.is-active{
    background:linear-gradient(90deg,rgba(76,215,255,0.18) 0%,transparent 100%);
    color:#fff;
    border-left:2px solid #4ad7ff;
    padding-left:6px;
}
.app-sidebar__list li .num{margin-left:auto;color:#6c79b7;font-size:9px;}

.dot{
    width:7px;height:7px;
    border-radius:50%;
    display:inline-block;
    flex-shrink:0;
    animation:dot-pulse 2.4s ease-in-out infinite;
}
.dot--green{background:#4cffaa;box-shadow:0 0 8px #4cffaa;}
.dot--cyan{background:#4ad7ff;box-shadow:0 0 8px #4ad7ff;}
.dot--red{background:#ff5b87;box-shadow:0 0 8px #ff5b87;animation-delay:0.4s;}
.dot--purple{background:#a96cff;box-shadow:0 0 8px #a96cff;animation-delay:0.8s;}
.dot--yellow{background:#ffd64a;box-shadow:0 0 8px #ffd64a;animation-delay:1.2s;}
.dot--blue{background:#5b8aff;box-shadow:0 0 8px #5b8aff;animation-delay:1.6s;}

.app-sidebar__chips{display:flex;gap:4px;flex-wrap:wrap;}
.chip{
    padding:3px 7px;
    border-radius:4px;
    background:rgba(255,255,255,0.04);
    font-size:9px;
    color:#a8b2dd;
    border:1px solid rgba(120,160,255,0.08);
}
.chip.is-active{background:linear-gradient(135deg,#4ad7ff,#6c8aff);color:#0a1442;border-color:transparent;font-weight:600;}

/* footer 通用元素 ----------------------------------------- */
.app-status{display:inline-flex;align-items:center;gap:6px;}
.app-status::before{content:'';width:6px;height:6px;border-radius:50%;}
.app-status--ok{color:#4cffaa;}
.app-status--ok::before{background:#4cffaa;box-shadow:0 0 6px #4cffaa;}
.app-status--warn{color:#ffd64a;}
.app-status--warn::before{background:#ffd64a;box-shadow:0 0 6px #ffd64a;}
.app-meter{display:inline-flex;align-items:center;gap:7px;}
.app-meter__bar{
    position:relative;
    width:60px;height:4px;
    background:rgba(120,160,255,0.12);
    border-radius:2px;
    overflow:hidden;
}
.app-meter__bar::after{
    content:'';
    position:absolute;inset:0;
    width:var(--w,70%);
    background:linear-gradient(90deg,#4ad7ff 0%,#6c8aff 100%);
    border-radius:2px;
    box-shadow:0 0 8px rgba(76,215,255,0.5);
}

/* =========================================================
   Slide 1: 批量监控  ——  设备网格
   ========================================================= */
.app-monitor{
    flex:1;
    display:grid;
    grid-template-columns:repeat(8,1fr);
    grid-auto-rows:1fr;
    gap:6px;
    padding:12px;
    min-height:0;
}
.device-card{
    position:relative;
    background:linear-gradient(160deg,#1a2467 0%,#0a1442 100%);
    border:1px solid rgba(120,160,255,0.12);
    border-radius:5px;
    overflow:hidden;
    min-height:0;
}
.device-card::before{
    content:'';
    position:absolute;inset:0;
    background:
        radial-gradient(circle at 50% 30%,rgba(76,215,255,0.18),transparent 65%),
        repeating-linear-gradient(0deg,rgba(255,255,255,0.025) 0 1px,transparent 1px 4px);
    opacity:0.7;
}
.device-card__head{
    position:absolute;
    top:5px;left:6px;right:6px;
    display:flex;
    justify-content:space-between;
    align-items:center;
    font-size:8px;
    font-weight:600;
    color:#cfd5ff;
    z-index:2;
}
.device-card__head .dot{width:5px;height:5px;}
.device-card__icon{
    position:absolute;
    inset:0;
    display:flex;
    align-items:center;
    justify-content:center;
    z-index:1;
}
.device-card__icon svg{width:38%;height:auto;opacity:0.55;}
.device-card__bar{
    position:absolute;
    bottom:0;left:0;right:0;
    height:3px;
    background:rgba(0,0,0,0.3);
    z-index:2;
}
.device-card__bar::after{
    content:'';
    position:absolute;
    inset:0;
    width:var(--p,60%);
    background:linear-gradient(90deg,#4cffaa,#4ad7ff);
    box-shadow:0 0 6px rgba(76,255,170,0.6);
}
.device-card__tag{
    position:absolute;
    bottom:6px;left:6px;
    font-size:7px;
    color:#a8b2dd;
    z-index:2;
    letter-spacing:0.5px;
}
/* 状态变体 */
.device-card--orange .device-card__bar::after{background:linear-gradient(90deg,#ffb74d,#ffd64a);box-shadow:0 0 6px rgba(255,214,74,0.6);}
.device-card--red .device-card__bar::after{background:linear-gradient(90deg,#ff5b87,#ff7a9c);box-shadow:0 0 6px rgba(255,91,135,0.6);}
.device-card--purple .device-card__bar::after{background:linear-gradient(90deg,#a96cff,#6c8aff);box-shadow:0 0 6px rgba(169,108,255,0.6);}
.device-card--cyan .device-card__bar::after{background:linear-gradient(90deg,#4ad7ff,#6c8aff);box-shadow:0 0 6px rgba(76,215,255,0.6);}
.device-card--offline{opacity:0.45;filter:grayscale(0.4);}
.device-card--offline .device-card__bar::after{background:#4a557d;box-shadow:none;}

/* 扫描线动效 */
.device-card--scan::after{
    content:'';
    position:absolute;
    left:0;right:0;
    height:30%;
    background:linear-gradient(180deg,transparent,rgba(76,215,255,0.18) 50%,transparent);
    animation:card-scan 3.5s ease-in-out infinite;
    pointer-events:none;
}

/* =========================================================
   Slide 2: 小G软路由 —— 拓扑 + 流量
   ========================================================= */
.app-router{
    flex:1;
    display:grid;
    grid-template-columns:1.3fr 1fr;
    grid-template-rows:1fr 1fr;
    gap:10px;
    padding:12px;
    min-height:0;
}
.router-pane{
    background:linear-gradient(160deg,#0e174e 0%,#060a26 100%);
    border:1px solid rgba(120,160,255,0.1);
    border-radius:7px;
    padding:10px 12px;
    position:relative;
    overflow:hidden;
    display:flex;
    flex-direction:column;
}
.router-pane__title{
    font-size:9px;
    color:#7a87c5;
    text-transform:uppercase;
    letter-spacing:1.5px;
    font-weight:600;
    margin-bottom:8px;
    display:flex;
    align-items:center;
    gap:6px;
}
.router-pane__title::before{content:'';width:3px;height:11px;background:linear-gradient(180deg,#4ad7ff,#a96cff);border-radius:2px;}

.router-pane--topology{grid-column:1;grid-row:1 / span 2;align-items:center;justify-content:center;}
.router-pane--topology svg{width:100%;height:100%;display:block;}
.router-pane--topology .router-pane__title{position:absolute;top:10px;left:12px;}

.router-pane--chart{position:relative;}
.router-pane--chart .chart-area{flex:1;position:relative;}
.router-pane--chart svg{width:100%;height:100%;display:block;}
.router-pane--chart .chart-stats{
    display:flex;
    gap:14px;
    margin-bottom:6px;
    font-size:10px;
}
.chart-stat__label{color:#7a87c5;font-size:9px;}
.chart-stat__value{color:#4ad7ff;font-weight:700;font-size:13px;font-family:Consolas,monospace;}
.chart-stat--up .chart-stat__value{color:#4cffaa;}

.router-pane--list .ip-row{
    display:flex;
    align-items:center;
    gap:8px;
    padding:4px 0;
    border-bottom:1px dashed rgba(120,160,255,0.08);
    font-size:10px;
    font-family:Consolas,monospace;
}
.router-pane--list .ip-row:last-child{border-bottom:none;}
.router-pane--list .ip{color:#cfd5ff;}
.router-pane--list .mac{color:#7a87c5;font-size:9px;}
.router-pane--list .tag{
    margin-left:auto;
    padding:1px 6px;
    border-radius:3px;
    font-size:8px;
    background:rgba(76,255,170,0.12);
    color:#4cffaa;
    border:1px solid rgba(76,255,170,0.25);
}
.router-pane--list .tag--proxy{background:rgba(169,108,255,0.12);color:#a96cff;border-color:rgba(169,108,255,0.25);}
.router-pane--list .tag--off{background:rgba(255,91,135,0.1);color:#ff7a9c;border-color:rgba(255,91,135,0.25);}

/* 拓扑节点 */
.router-node{
    fill:#1a2467;
    stroke:#4ad7ff;
    stroke-width:1.2;
}
.router-node--center{fill:url(#routerCoreGrad);stroke:#4ad7ff;stroke-width:1.5;}
.router-node-label{fill:#cfd5ff;font-size:8px;font-family:Consolas,monospace;}
.router-link{
    fill:none;
    stroke:rgba(76,215,255,0.35);
    stroke-width:1;
    stroke-dasharray:3 3;
    animation:router-flow 6s linear infinite;
}
.router-pulse{
    fill:#4ad7ff;
    opacity:0;
    animation:router-pulse 2.4s ease-out infinite;
}

/* =========================================================
   Slide 3: 云真机 —— 指标 + 设备阵列 + 日志
   ========================================================= */
.app-cloud{
    flex:1;
    display:grid;
    grid-template-columns:1fr 220px;
    grid-template-rows:auto 1fr;
    gap:10px;
    padding:12px;
    min-height:0;
}
.cloud-metrics{
    grid-column:1 / span 2;
    display:grid;
    grid-template-columns:repeat(4,1fr);
    gap:8px;
}
.cloud-card{
    background:linear-gradient(160deg,#0e174e 0%,#060a26 100%);
    border:1px solid rgba(120,160,255,0.12);
    border-radius:6px;
    padding:8px 10px;
    position:relative;
    overflow:hidden;
}
.cloud-card::after{
    content:'';
    position:absolute;
    right:-10px;top:-10px;
    width:50px;height:50px;
    background:radial-gradient(circle,rgba(76,215,255,0.2),transparent 70%);
    border-radius:50%;
}
.cloud-card__label{font-size:9px;color:#7a87c5;letter-spacing:1px;text-transform:uppercase;}
.cloud-card__value{font-size:18px;font-weight:700;color:#fff;font-family:Consolas,monospace;margin-top:2px;}
.cloud-card__delta{font-size:9px;color:#4cffaa;}
.cloud-card__delta--down{color:#ff7a9c;}
.cloud-card--purple::after{background:radial-gradient(circle,rgba(169,108,255,0.22),transparent 70%);}
.cloud-card--purple .cloud-card__value{color:#c8a8ff;}
.cloud-card--cyan .cloud-card__value{color:#7be3ff;}
.cloud-card--green .cloud-card__value{color:#7bffc4;}

.cloud-grid{
    grid-column:1;
    background:linear-gradient(160deg,#0e174e 0%,#060a26 100%);
    border:1px solid rgba(120,160,255,0.1);
    border-radius:7px;
    padding:10px;
    display:grid;
    grid-template-columns:repeat(8,1fr);
    grid-auto-rows:1fr;
    gap:6px;
    min-height:0;
}
.cloud-phone{
    position:relative;
    background:linear-gradient(160deg,#1a2467 0%,#0a1442 100%);
    border:1px solid rgba(120,160,255,0.18);
    border-radius:4px;
    aspect-ratio:9 / 16;
    overflow:hidden;
    min-height:0;
}
.cloud-phone::before{
    content:'';
    position:absolute;
    top:3px;left:50%;
    transform:translateX(-50%);
    width:24%;height:2px;
    background:#0a1442;
    border-radius:0 0 3px 3px;
}
.cloud-phone__top{
    position:absolute;
    top:8px;left:4px;right:4px;
    display:flex;
    align-items:center;
    justify-content:space-between;
    font-size:7px;
    color:#a8b2dd;
}
.cloud-phone__top .dot{width:4px;height:4px;}
.cloud-phone__body{
    position:absolute;
    inset:18px 4px 12px 4px;
    background:
        linear-gradient(180deg,rgba(76,215,255,0.08) 0%,transparent 60%),
        repeating-linear-gradient(0deg,rgba(255,255,255,0.03) 0 1px,transparent 1px 5px);
    border-radius:2px;
    overflow:hidden;
}
.cloud-phone__body::after{
    content:'';
    position:absolute;
    left:0;right:0;
    height:30%;
    background:linear-gradient(180deg,transparent,rgba(76,215,255,0.22),transparent);
    animation:card-scan 4s ease-in-out infinite;
}
.cloud-phone__bar{
    position:absolute;
    bottom:3px;left:4px;right:4px;
    height:2px;
    background:rgba(120,160,255,0.15);
    border-radius:1px;
    overflow:hidden;
}
.cloud-phone__bar::after{
    content:'';
    position:absolute;inset:0;
    width:var(--p,55%);
    background:linear-gradient(90deg,#4cffaa,#4ad7ff);
    border-radius:1px;
}
.cloud-phone--apple .cloud-phone__body{background:linear-gradient(180deg,rgba(169,108,255,0.12) 0%,transparent 60%),repeating-linear-gradient(0deg,rgba(255,255,255,0.03) 0 1px,transparent 1px 5px);}
.cloud-phone--apple .cloud-phone__bar::after{background:linear-gradient(90deg,#a96cff,#6c8aff);}
.cloud-phone--off{opacity:0.4;}
.cloud-phone--off .cloud-phone__bar::after{background:#4a557d;}

.cloud-log{
    grid-column:2;
    background:linear-gradient(160deg,#0e174e 0%,#060a26 100%);
    border:1px solid rgba(120,160,255,0.1);
    border-radius:7px;
    padding:10px;
    overflow:hidden;
    min-height:0;
    display:flex;
    flex-direction:column;
}
.cloud-log__title{
    font-size:9px;
    color:#7a87c5;
    text-transform:uppercase;
    letter-spacing:1.5px;
    font-weight:600;
    margin-bottom:8px;
    display:flex;
    align-items:center;
    gap:6px;
}
.cloud-log__title::before{content:'';width:3px;height:11px;background:linear-gradient(180deg,#4cffaa,#4ad7ff);border-radius:2px;}
.cloud-log__list{flex:1;overflow:hidden;display:flex;flex-direction:column;gap:4px;font-family:Consolas,monospace;font-size:9px;line-height:1.5;}
.cloud-log__row{display:flex;gap:6px;color:#a8b2dd;}
.cloud-log__time{color:#5b6aa8;}
.cloud-log__row--ok .cloud-log__msg{color:#7bffc4;}
.cloud-log__row--info .cloud-log__msg{color:#7be3ff;}
.cloud-log__row--warn .cloud-log__msg{color:#ffd64a;}
.cloud-log__row--err .cloud-log__msg{color:#ff7a9c;}

/* =========================================================
   动画
   ========================================================= */
@keyframes dot-pulse{0%,100%{opacity:1;}50%{opacity:0.45;}}
@keyframes card-scan{0%{top:-30%;}100%{top:130%;}}
@keyframes router-flow{to{stroke-dashoffset:-30;}}
@keyframes router-pulse{
    0%{r:3;opacity:0.85;}
    100%{r:18;opacity:0;}
}

/* =========================================================
   响应式
   ========================================================= */
@media screen and (max-width:1024px){
    .device-mockup{max-width:720px;}
    .app-window{font-size:10px;}
}
@media screen and (max-width:750px){
    .device-mockup{padding:10px 8px 0 8px;}
    .device-mockup__screen{border-width:5px;border-radius:9px;}
    .app-window{font-size:8px;}
    .app-window__header{padding:6px 9px;gap:8px;}
    .brand{font-size:10px;}
    .brand__logo{padding:1px 4px;font-size:9px;}
    .brand__sub{display:none;}
    .app-window__chrome i{width:6px;height:6px;}
    .app-sidebar{padding:6px;min-width:0;width:22%;gap:5px;}
    .app-sidebar__title{font-size:7px;letter-spacing:1px;}
    .app-sidebar__list li{padding:3px 5px;font-size:8px;}
    .app-sidebar__list li .num,.chip{font-size:7px;}
    .app-window__footer{padding:5px 9px;gap:9px;font-size:8px;}
    .app-meter__bar{width:30px;}
    .app-monitor{grid-template-columns:repeat(6,1fr);gap:4px;padding:6px;}
    .device-card__head{font-size:6px;top:3px;left:3px;right:3px;}
    .device-card__tag{font-size:6px;bottom:4px;left:4px;}
    .app-router{gap:6px;padding:6px;}
    .router-pane{padding:6px 8px;}
    .router-pane__title{font-size:7px;margin-bottom:4px;}
    .chart-stat__value{font-size:10px;}
    .router-pane--list .ip-row{font-size:8px;padding:2px 0;}
    .router-pane--list .mac{display:none;}
    .app-cloud{gap:6px;padding:6px;grid-template-columns:1fr 130px;}
    .cloud-metrics{gap:5px;}
    .cloud-card{padding:5px 7px;}
    .cloud-card__label{font-size:7px;}
    .cloud-card__value{font-size:13px;}
    .cloud-card__delta{font-size:7px;}
    .cloud-grid{padding:6px;gap:3px;grid-template-columns:repeat(6,1fr);}
    .cloud-log{padding:6px;}
    .cloud-log__title{font-size:7px;margin-bottom:4px;}
    .cloud-log__list{font-size:7px;}
}
