*{box-sizing:border-box;margin:0;padding:0}
:root{--p:#6513d8;--pd:#3c087f;--deep:#1d003d;--bg:#f7f7fb;--card:#fff;--text:#171225;--muted:#7d788b;--border:#ece9f2;--green:#18a34a;--shadow:0 9px 28px rgba(35,15,70,.07)}
html{scroll-behavior:smooth}
body{font-family:Inter,-apple-system,BlinkMacSystemFont,"Segoe UI",Arial,sans-serif;background:var(--bg);color:var(--text)}
button,select{font:inherit}
.app-shell{min-height:100vh}
.sidebar{position:fixed;inset:0 auto 0 0;width:238px;padding:22px 14px;background:radial-gradient(circle at 90% 0,rgba(137,45,255,.3),transparent 34%),linear-gradient(180deg,#210047,#17002f);color:#fff;display:flex;flex-direction:column;z-index:10}
.brand{display:flex;align-items:center;gap:10px;padding:0 8px 30px}.brand-logo{width:44px;height:44px;border-radius:13px;background:linear-gradient(135deg,#fff,#d9b8ff);color:var(--p);display:grid;place-items:center;font-size:26px;font-weight:900}.brand strong{display:block;font-size:22px}.brand span{display:block;color:#d7c8eb;font-size:11px;margin-top:2px}
.nav{display:flex;flex-direction:column;gap:5px}.nav-link{height:46px;border-radius:12px;color:#eee7fa;text-decoration:none;display:flex;align-items:center;gap:13px;padding:0 15px;font-size:14px;transition:.2s}.nav-link:hover,.nav-link.active{background:linear-gradient(90deg,#781bf0,#5c0dce);color:#fff}.nav-link span{width:23px;text-align:center;font-size:19px}
.grow-card{margin-top:auto;border:1px solid rgba(196,131,255,.55);border-radius:17px;padding:17px;background:linear-gradient(155deg,rgba(125,25,245,.42),rgba(57,0,120,.42))}.grow-icon{font-size:35px;margin-bottom:8px}.grow-card h3{font-size:18px;line-height:1.08}.grow-card p{color:#ddd0ee;font-size:11px;line-height:1.5;margin:10px 0 14px}.grow-card button{width:100%;border:0;border-radius:10px;padding:9px;background:#fff;color:var(--p);font-weight:750}
.main{margin-left:238px;width:calc(100% - 238px);min-width:0}.topbar{height:72px;padding:0 25px;background:linear-gradient(90deg,#3d087f,#6715d8 55%,#4e09a6);color:#fff;display:flex;align-items:center;justify-content:space-between}.topbar-label{font-size:17px;font-weight:650}.top-actions{display:flex;align-items:center;gap:10px}.top-actions select{height:41px;min-width:205px;border:0;border-radius:10px;padding:0 12px;background:#fff;color:var(--text)}.refresh-btn{height:41px;border:1px solid rgba(255,255,255,.3);border-radius:10px;background:rgba(255,255,255,.1);color:#fff;padding:0 15px;cursor:pointer}.admin{height:45px;min-width:175px;padding:4px 9px 4px 6px;border-radius:12px;background:#fff;color:var(--text);display:flex;align-items:center;gap:8px}.avatar{position:relative;width:33px;height:33px;border-radius:50%;background:#eadcff;color:var(--p);display:grid;place-items:center;font-weight:800}.avatar i{position:absolute;right:-1px;bottom:1px;width:8px;height:8px;background:#20b85a;border:2px solid #fff;border-radius:50%}.admin b,.admin small{display:block}.admin b{font-size:11px}.admin small{font-size:9px;color:var(--muted)}.admin>span{margin-left:auto;color:#666}
main{width:min(1270px,calc(100% - 40px));margin:auto;padding:22px 0 35px}.hero{min-height:88px;padding:16px 20px;border:1px solid var(--border);border-radius:17px;background:#fff;box-shadow:var(--shadow);display:flex;align-items:center;gap:13px;margin-bottom:15px}.hero-icon{width:56px;height:56px;border-radius:14px;background:#eee2ff;color:var(--p);display:grid;place-items:center;font-size:29px}.hero h1{font-size:27px;letter-spacing:-.7px}.hero p{font-size:13px;color:var(--muted);margin-top:3px}.live{margin-left:auto;background:#edfbf1;color:#17803d;padding:8px 13px;border-radius:20px;font-size:11px;font-weight:750}.live i{display:inline-block;width:8px;height:8px;background:#21b85b;border-radius:50%;margin-right:5px}
.stats{display:grid;grid-template-columns:1.2fr repeat(4,1fr);gap:13px;margin-bottom:15px}.stat{position:relative;min-height:139px;padding:16px;background:#fff;border:1px solid var(--border);border-radius:16px;box-shadow:var(--shadow);overflow:hidden}.stat.primary{background:linear-gradient(135deg,#7918ed,#4909ac);color:#fff;border-color:transparent}.stat-icon{width:33px;height:33px;border-radius:9px;background:#f0e5ff;color:var(--p);display:grid;place-items:center;margin-bottom:8px}.primary .stat-icon{background:rgba(255,255,255,.17);color:#fff}.stat label{display:block;font-size:11px;color:var(--muted);margin-bottom:5px}.primary label{color:#eee5ff}.stat strong{display:block;font-size:26px;letter-spacing:-.6px;margin-bottom:7px}.stat small{font-size:9px;color:var(--muted)}.primary small{color:#e9dcff}.primary small:first-letter{color:#4ee07e}
.content-grid{display:grid;grid-template-columns:minmax(0,2.4fr) minmax(290px,.9fr);gap:15px;margin-bottom:15px}.card{background:#fff;border:1px solid var(--border);border-radius:17px;box-shadow:var(--shadow)}.traffic{padding:18px 20px}.devices{padding:18px}.card-head{display:flex;align-items:center;justify-content:space-between;gap:12px}.card-head h2{font-size:15px}.card-head p{font-size:10px;color:var(--muted);margin-top:3px}.chart-tools{display:flex;align-items:center;gap:8px}.tabs{display:flex;border:1px solid #ded8e8;border-radius:18px;padding:2px}.tab{border:0;background:transparent;border-radius:15px;padding:6px 10px;font-size:9px;cursor:pointer}.tab.active{background:var(--p);color:#fff}.chart-tools select{height:33px;border:1px solid var(--border);border-radius:9px;background:#fff;padding:0 8px;font-size:9px}.chart-box{height:290px;margin-top:10px}.chart-box canvas{width:100%!important;height:100%!important}
.device-area{min-height:285px;display:flex;align-items:center;justify-content:center;gap:13px}.donut{width:185px;height:185px;position:relative}.donut canvas{width:100%!important;height:100%!important}.donut-center{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;pointer-events:none}.donut-center b{font-size:24px}.donut-center span{font-size:10px;font-weight:700}.legend{display:flex;flex-direction:column;gap:10px;min-width:100px}.legend-row{display:grid;grid-template-columns:8px 1fr auto;gap:6px;align-items:center;font-size:9px}.legend-dot{width:7px;height:7px;border-radius:50%}
.lower-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:15px}.mini{padding:17px;min-height:225px}.rank-list{margin-top:12px}.rank{padding:8px 0}.rank-top{display:flex;justify-content:space-between;font-size:9px;margin-bottom:4px}.rank-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.rank-bar{height:5px;background:#eeeaf4;border-radius:10px;overflow:hidden}.rank-fill{height:100%;background:linear-gradient(90deg,#5e0dc9,#8b29f3);border-radius:inherit}.metric{display:flex;align-items:center;gap:9px;padding:10px;background:#f8f6fb;border-radius:12px;margin-top:10px}.metric-icon{width:36px;height:36px;border-radius:10px;background:#e9dbff;color:var(--p);display:grid;place-items:center}.metric small,.metric b{display:block}.metric small{font-size:9px;color:var(--muted)}.metric b{font-size:17px;margin-top:2px}.metric em{margin-left:auto;font-style:normal;color:var(--green);font-size:9px;font-weight:700}
footer{text-align:center;color:#7d7889;font-size:10px;padding:0 0 25px}footer b{color:var(--p)}
@media(max-width:1180px){.sidebar{width:210px}.main{margin-left:210px;width:calc(100% - 210px)}.stats{grid-template-columns:repeat(3,1fr)}.lower-grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:900px){.sidebar{width:72px;padding:18px 9px}.brand{justify-content:center}.brand>div:last-child,.nav-link span:last-child,.grow-card{display:none}.nav-link{justify-content:center;padding:0}.main{margin-left:72px;width:calc(100% - 72px)}.topbar-label{display:none}.topbar{padding:0 14px}.content-grid{grid-template-columns:1fr}.top-actions select{min-width:145px}}
@media(max-width:650px){.topbar{height:auto;padding:10px;justify-content:flex-end}.top-actions{width:100%;flex-wrap:wrap}.admin{flex:1}.hero{align-items:flex-start}.live{display:none}.hero h1{font-size:22px}.stats{grid-template-columns:1fr 1fr}.stat.primary{grid-column:span 2}.chart-tools{flex-direction:column;align-items:stretch}.chart-box{height:245px}.lower-grid{grid-template-columns:1fr}.device-area{flex-direction:column}}
@media(max-width:430px){.sidebar{display:none}.main{margin-left:0;width:100%}main{width:calc(100% - 20px);padding-top:12px}.stats{grid-template-columns:1fr}.stat.primary{grid-column:auto}.top-actions{justify-content:stretch}.top-actions select,.refresh-btn{flex:1;min-width:0}.admin{flex-basis:100%}}


/* Mobile navigation + responsive polish */
.mobile-brand,.mobile-menu-btn{display:none}
@media (max-width:900px){
  .mobile-brand{display:flex;align-items:center;gap:8px;font-size:15px}
  .mobile-brand .brand-logo{width:34px;height:34px;border-radius:10px;font-size:20px}
  .mobile-menu-btn{display:none;border:0;background:rgba(255,255,255,.14);color:#fff;width:40px;height:40px;border-radius:10px;font-size:20px;cursor:pointer}
}
@media (max-width:650px){
  body{overflow-x:hidden}
  .sidebar{width:250px;transform:translateX(-105%);transition:transform .25s ease;box-shadow:12px 0 30px rgba(0,0,0,.22)}
  body.menu-open .sidebar{transform:translateX(0)}
  .main{margin-left:0;width:100%}
  .topbar{min-height:64px;padding:10px 12px;gap:8px;position:sticky;top:0;z-index:20;box-shadow:0 5px 20px rgba(26,0,55,.16)}
  .topbar-label{display:block;font-size:14px;margin-right:auto}
  .mobile-brand{display:flex}
  .mobile-menu-btn{display:block}
  .top-actions{width:auto;display:flex;flex:1;justify-content:flex-end;gap:7px}
  .top-actions select{min-width:0;width:112px;height:38px;font-size:11px}
  .refresh-btn{height:38px;padding:0 10px;font-size:11px;white-space:nowrap}
  .admin{display:none}
  main{width:calc(100% - 20px);padding:12px 0 25px}
  .hero{padding:14px;min-height:76px;border-radius:14px;gap:10px;margin-bottom:12px}
  .hero-icon{width:44px;height:44px;font-size:22px;flex:0 0 44px}
  .hero h1{font-size:20px;letter-spacing:-.4px}
  .hero p{font-size:10px;line-height:1.35}
  .live{display:none}
  .stats{grid-template-columns:1fr;gap:10px;margin-bottom:12px}
  .stat,.stat.primary{min-height:108px;padding:14px;border-radius:14px}
  .stat.primary{grid-column:auto}
  .stat strong{font-size:24px}
  .stat-icon{width:30px;height:30px;margin-bottom:6px}
  .content-grid{grid-template-columns:1fr;gap:10px;margin-bottom:10px}
  .traffic,.devices{padding:14px;border-radius:14px}
  .card-head{align-items:flex-start}
  .card-head h2{font-size:14px}
  .card-head p{font-size:9px}
  .chart-tools{width:100%;flex-direction:column;align-items:stretch;gap:6px}
  .tabs{justify-content:space-between}
  .tab{flex:1;padding:6px 7px;font-size:9px}
  .chart-tools select{width:100%;height:32px}
  .chart-box{height:230px;margin-top:8px}
  .device-area{min-height:240px;flex-direction:column;gap:8px}
  .donut{width:165px;height:165px}
  .legend{width:100%;display:grid;grid-template-columns:1fr 1fr;gap:8px 16px}
  .lower-grid{grid-template-columns:1fr;gap:10px}
  .mini{min-height:0;padding:14px;border-radius:14px}
  .rank{padding:7px 0}
  .metric{padding:9px}
  footer{font-size:9px;padding:8px 0 20px}
  body.menu-open::after{content:"";position:fixed;inset:0;background:rgba(13,0,28,.45);z-index:8}
}
@media (max-width:430px){
  .topbar{flex-wrap:wrap}
  .mobile-brand{order:1}
  .topbar-label{order:2;font-size:13px}
  .mobile-menu-btn{order:3}
  .top-actions{order:4;flex-basis:100%;width:100%;justify-content:stretch}
  .top-actions select,.refresh-btn{flex:1;width:auto}
  main{width:calc(100% - 16px)}
  .hero h1{font-size:19px}
  .hero p{font-size:9px}
  .chart-box{height:215px}
  .stats .stat{min-height:100px}
}


/* =========================================================
   MOBILE / TABLET FIX
   ========================================================= */

@media (max-width: 900px) {
  .sidebar {
    width: 76px;
    padding: 16px 8px;
  }

  .brand {
    justify-content: center;
    padding: 0 0 24px;
  }

  .brand > div:last-child {
    display: none;
  }

  .nav-link {
    justify-content: center;
    padding: 0;
    font-size: 0;
  }

  .nav-link span {
    font-size: 20px;
    width: auto;
  }

  .grow-card {
    display: none;
  }

  .main {
    margin-left: 76px;
    width: calc(100% - 76px);
  }

  .topbar {
    padding: 10px 14px;
    min-height: 64px;
    gap: 10px;
  }

  .topbar-label {
    display: block;
    font-size: 15px;
  }

  .top-actions {
    flex: 1;
    justify-content: flex-end;
  }

  .admin {
    min-width: 145px;
  }

  main {
    width: calc(100% - 28px);
    padding: 16px 0 28px;
  }

  .stats {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .stat.primary {
    grid-column: span 2;
  }

  .content-grid {
    grid-template-columns: 1fr;
  }

  .lower-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

@media (max-width: 600px) {
  body {
    overflow-x: hidden;
  }

  .sidebar {
    display: none;
  }

  .main {
    margin-left: 0;
    width: 100%;
  }

  .topbar {
    min-height: auto;
    padding: 10px 12px;
    flex-wrap: wrap;
    align-items: center;
  }

  .topbar-label {
    width: 100%;
    margin-bottom: 4px;
    font-size: 16px;
  }

  .top-actions {
    width: 100%;
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    gap: 8px;
  }

  .top-actions select {
    min-width: 0;
    width: 100%;
    height: 42px;
  }

  .refresh-btn {
    height: 42px;
    white-space: nowrap;
  }

  .admin {
    grid-column: 1 / -1;
    width: 100%;
    min-width: 0;
    height: 48px;
  }

  main {
    width: calc(100% - 20px);
    padding: 10px 0 24px;
  }

  .hero {
    padding: 15px;
    min-height: 0;
    align-items: flex-start;
    border-radius: 15px;
  }

  .hero-icon {
    width: 44px;
    height: 44px;
    min-width: 44px;
    font-size: 22px;
  }

  .hero h1 {
    font-size: 22px;
    line-height: 1.15;
  }

  .hero p {
    font-size: 11px;
    line-height: 1.4;
  }

  .live {
    display: none;
  }

  .stats {
    grid-template-columns: 1fr;
    gap: 10px;
  }

  .stat.primary {
    grid-column: auto;
  }

  .stat {
    min-height: 116px;
    padding: 14px;
  }

  .stat strong {
    font-size: 25px;
  }

  .traffic,
  .devices,
  .mini {
    padding: 14px;
    border-radius: 15px;
  }

  .card-head {
    align-items: flex-start;
  }

  .card-head h2 {
    font-size: 14px;
  }

  .chart-tools {
    width: 100%;
    flex-direction: column;
    align-items: stretch;
    gap: 7px;
    margin-top: 10px;
  }

  .traffic .card-head {
    display: block;
  }

  .tabs {
    width: 100%;
    justify-content: space-between;
  }

  .tab {
    flex: 1;
    padding: 7px 5px;
  }

  .chart-tools select {
    width: 100%;
    height: 36px;
  }

  .chart-box {
    height: 235px;
    margin-top: 12px;
  }

  .device-area {
    min-height: 245px;
    flex-direction: column;
    gap: 12px;
  }

  .donut {
    width: 170px;
    height: 170px;
  }

  .legend {
    width: 100%;
    min-width: 0;
  }

  .legend-row {
    font-size: 10px;
  }

  .lower-grid {
    grid-template-columns: 1fr;
    gap: 10px;
  }

  .mini {
    min-height: 0;
  }

  .rank-list {
    margin-top: 8px;
  }

  footer {
    font-size: 9px;
    line-height: 1.5;
    padding: 0 15px 20px;
  }
}

@media (max-width: 380px) {
  .top-actions {
    grid-template-columns: 1fr;
  }

  .refresh-btn {
    width: 100%;
  }

  .hero h1 {
    font-size: 20px;
  }

  .hero p {
    font-size: 10px;
  }

  .chart-box {
    height: 210px;
  }

  .donut {
    width: 150px;
    height: 150px;
  }
}
