/* GAGANATION AI Smart Hub v7.0 — White + Green Full Page */
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0;}
:root{
  --gn-bg:#f0faf2;--gn-bg2:#e4f5e8;--gn-surface:#ffffff;
  --gn-border:rgba(34,197,94,0.18);--gn-border-md:rgba(34,197,94,0.32);--gn-border-strong:rgba(22,163,74,0.5);
  --gn-accent:#16a34a;--gn-accent-light:#22c55e;--gn-accent-glow:rgba(22,163,74,0.25);
  --gn-accent-bg:rgba(22,163,74,0.08);--gn-accent-bg2:rgba(22,163,74,0.14);
  --gn-text:#0f2918;--gn-text-sec:#3d6b4f;--gn-text-dim:#7aaa8a;
  --gn-green:#16a34a;--gn-green-light:#dcfce7;--gn-green-glow:rgba(22,163,74,0.3);
  --gn-red:#dc2626;--gn-red-bg:rgba(220,38,38,0.08);
  --gn-orange:#ea580c;--gn-purple:#7c3aed;--gn-teal:#0d9488;
  --gn-r:20px;--gn-r-sm:14px;--gn-r-xs:10px;
  --gn-shadow:0 2px 16px rgba(22,163,74,0.12);
  --gn-shadow-lg:0 8px 40px rgba(22,163,74,0.18);
  --gn-shadow-card:0 1px 4px rgba(0,0,0,0.06),0 4px 16px rgba(22,163,74,0.08);
}
html,body{height:100%;-webkit-font-smoothing:antialiased;font-family:'Outfit',sans-serif;background:var(--gn-bg);color:var(--gn-text);overflow-x:hidden;}

/* BG */
.gn-bg-decor{position:fixed;inset:0;z-index:0;pointer-events:none;overflow:hidden;}
.gn-bg-c{position:absolute;border-radius:50%;opacity:.45;}
.gn-bg-c1{width:500px;height:500px;background:radial-gradient(circle,rgba(134,239,172,.5),transparent 70%);top:-180px;right:-100px;animation:gnFloat 18s ease-in-out infinite;}
.gn-bg-c2{width:400px;height:400px;background:radial-gradient(circle,rgba(187,247,208,.6),transparent 70%);bottom:-150px;left:-80px;animation:gnFloat 24s ease-in-out infinite reverse;}
.gn-bg-c3{width:250px;height:250px;background:radial-gradient(circle,rgba(74,222,128,.3),transparent 70%);top:40%;left:30%;animation:gnFloat 15s ease-in-out infinite 4s;}
@keyframes gnFloat{0%,100%{transform:translate(0,0);}50%{transform:translate(20px,-20px);}}

/* PAGES */
.gn-page{display:none;position:relative;z-index:1;min-height:100vh;}
.gn-page-active{display:flex;flex-direction:column;}

/* Hub HUD — full-screen 16:9 on desktop/laptop, fluid on mobile */
#gnPageHub{
  width:100vw;
  height:100vh;
  max-width:100%;
  margin:0;
  overflow-y:auto;
  /* enforce 16:9 letterbox on screens wider than 16:9 */
}
@media (min-width:769px){
  body.gn-hub-active{
    display:flex;
    align-items:center;
    justify-content:center;
    background:var(--gn-bg);
    overflow:hidden;
  }
  #gnPageHub{
    /* fill viewport; if viewport is wider than 16:9 use 16:9 ratio */
    width:min(100vw, calc(100vh * 16 / 9));
    height:min(100vh, calc(100vw * 9 / 16));
    max-height:100vh;
    border-radius:0;
    box-shadow:0 0 60px rgba(22,163,74,.12);
    display:flex;
    flex-direction:column;
  }
  #gnPageHub .gn-main{
    flex:1;
    overflow-y:auto;
  }
}

/* HEADER */
.gn-hdr{display:flex;align-items:center;justify-content:space-between;padding:max(env(safe-area-inset-top),20px) 20px 0;animation:gnSlideD .5s cubic-bezier(.16,1,.3,1) both;}
@keyframes gnSlideD{from{opacity:0;transform:translateY(-16px)}to{opacity:1;transform:none}}
.gn-brand{display:flex;align-items:center;gap:11px;}
.gn-brand-logo{width:42px;height:42px;border-radius:13px;background:linear-gradient(135deg,#16a34a,#22c55e);display:flex;align-items:center;justify-content:center;box-shadow:0 4px 14px rgba(22,163,74,.35);position:relative;overflow:hidden;}
.gn-brand-logo::after{content:'';position:absolute;inset:0;background:linear-gradient(135deg,rgba(255,255,255,.25),transparent 60%);}
.gn-brand-logo svg{width:22px;height:22px;fill:white;position:relative;z-index:1;}
.gn-brand-t1{font-size:16px;font-weight:800;letter-spacing:-.3px;color:var(--gn-text);}
.gn-brand-t2{font-size:9px;font-weight:700;letter-spacing:3px;text-transform:uppercase;color:var(--gn-accent);}
.gn-hbtns{display:flex;gap:8px;}
.gn-hbtn{display:flex;align-items:center;gap:5px;background:var(--gn-surface);border:1px solid var(--gn-border-md);border-radius:100px;padding:8px 14px;font-size:12px;font-weight:600;color:var(--gn-text-sec);cursor:pointer;transition:all .2s;font-family:'Outfit',sans-serif;box-shadow:var(--gn-shadow);}
.gn-hbtn:hover{background:var(--gn-accent-bg);border-color:var(--gn-accent);color:var(--gn-accent);transform:translateY(-1px);}
.gn-hbtn svg{width:13px;height:13px;fill:currentColor;}
.gn-hbtn.gn-primary{background:var(--gn-accent);color:#fff;border-color:var(--gn-accent);box-shadow:0 4px 14px var(--gn-accent-glow);}
.gn-hbtn.gn-primary:hover{background:#15803d;transform:translateY(-1px);}

/* MAIN */
.gn-main{padding:20px 20px 48px;flex:1;}
.gn-welcome{margin-bottom:18px;animation:gnFadeU .6s cubic-bezier(.16,1,.3,1) .1s both;}
@keyframes gnFadeU{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}
.gn-welcome h1{font-size:26px;font-weight:800;letter-spacing:-.8px;line-height:1.2;color:var(--gn-text);}
.gn-welcome h1 span{background:linear-gradient(90deg,#16a34a,#22c55e,#16a34a);background-size:200%;-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;animation:gnShimmer 4s ease-in-out infinite;}
@keyframes gnShimmer{0%,100%{background-position:0%}50%{background-position:100%}}
.gn-welcome p{font-size:13px;color:var(--gn-text-sec);margin-top:3px;}

/* CONN BAR */
.gn-conn-bar{display:flex;align-items:center;gap:10px;background:var(--gn-surface);border:1px solid var(--gn-border-md);border-radius:var(--gn-r-sm);padding:11px 16px;margin-bottom:16px;cursor:pointer;transition:all .2s;box-shadow:var(--gn-shadow);animation:gnFadeU .6s cubic-bezier(.16,1,.3,1) .15s both;}
.gn-conn-bar:hover{background:var(--gn-accent-bg);border-color:var(--gn-accent);}
.gn-cdot{width:9px;height:9px;border-radius:50%;background:#d1d5db;flex-shrink:0;transition:all .3s;}
.gn-cdot.live{background:var(--gn-green);box-shadow:0 0 8px var(--gn-green-glow);animation:gnPulse 2s ease-in-out infinite;}
.gn-cdot.blink{background:var(--gn-orange);animation:gnBlink .7s ease-in-out infinite;}
.gn-cdot.err{background:var(--gn-red);}
@keyframes gnPulse{0%,100%{box-shadow:0 0 5px var(--gn-green-glow);}50%{box-shadow:0 0 14px var(--gn-green-glow);}}
@keyframes gnBlink{0%,100%{opacity:1;}50%{opacity:.3;}}
.gn-clbl{flex:1;font-size:13px;color:var(--gn-text-sec);}
.gn-clbl strong{color:var(--gn-text);font-weight:600;}
.gn-cact{font-size:12px;color:var(--gn-accent);font-weight:600;}

/* STATS */
.gn-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-bottom:18px;animation:gnFadeU .6s cubic-bezier(.16,1,.3,1) .2s both;}
.gn-stat{background:var(--gn-surface);border:1px solid var(--gn-border);border-radius:var(--gn-r-sm);padding:14px 10px;text-align:center;box-shadow:var(--gn-shadow-card);transition:all .2s;}
.gn-stat:hover{transform:translateY(-2px);box-shadow:var(--gn-shadow-lg);border-color:var(--gn-border-md);}
.gn-sdot{width:8px;height:8px;border-radius:50%;margin:0 auto 7px;}
.gn-sdot-g{background:var(--gn-accent);box-shadow:0 0 6px var(--gn-accent-glow);}
.gn-sdot-e{background:#a1a1aa;}
.gn-stat-n{font-size:26px;font-weight:800;letter-spacing:-1px;color:var(--gn-text);}
.gn-stat-l{font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.8px;color:var(--gn-text-dim);margin-top:1px;}

/* SEC HEADERS */
.gn-sec-hdr{display:flex;align-items:center;justify-content:space-between;margin-bottom:11px;}
.gn-sec-title{font-size:15px;font-weight:700;color:var(--gn-text);}
.gn-sec-act{font-size:12px;color:var(--gn-accent);font-weight:600;cursor:pointer;}

/* SCENES */
.gn-scenes{display:flex;gap:8px;overflow-x:auto;padding-bottom:2px;scrollbar-width:none;margin-bottom:18px;animation:gnFadeU .6s cubic-bezier(.16,1,.3,1) .25s both;}
.gn-scenes::-webkit-scrollbar{display:none;}
.gn-scene{flex-shrink:0;background:var(--gn-surface);border:1px solid var(--gn-border-md);border-radius:100px;padding:8px 15px;display:flex;align-items:center;gap:6px;cursor:pointer;transition:all .2s;white-space:nowrap;box-shadow:var(--gn-shadow);font-size:12px;font-weight:600;color:var(--gn-text-sec);}
.gn-scene:hover{background:var(--gn-accent-bg);border-color:var(--gn-accent);color:var(--gn-accent);transform:translateY(-1px);}
.gn-scene.active{background:var(--gn-accent);border-color:var(--gn-accent);color:#fff;box-shadow:0 4px 14px var(--gn-accent-glow);}

/* DEVICE GRID */
.gn-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:12px;animation:gnFadeU .6s cubic-bezier(.16,1,.3,1) .3s both;}
.gn-dcard{background:var(--gn-surface);border:1px solid var(--gn-border);border-radius:var(--gn-r);padding:16px;cursor:pointer;transition:all .25s cubic-bezier(.34,1.4,.64,1);min-height:140px;display:flex;flex-direction:column;justify-content:space-between;box-shadow:var(--gn-shadow-card);position:relative;overflow:hidden;user-select:none;}
.gn-dcard::before{content:'';position:absolute;top:0;left:0;right:0;height:3px;background:linear-gradient(90deg,var(--gn-accent-light),var(--gn-accent));opacity:0;transition:opacity .25s;}
.gn-dcard:hover{transform:translateY(-2px);box-shadow:var(--gn-shadow-lg);border-color:var(--gn-border-md);}
.gn-dcard:active{transform:scale(.97);}
.gn-dcard.on{border-color:var(--gn-border-strong);background:linear-gradient(135deg,#f0fdf4,#ffffff);}
.gn-dcard.on::before{opacity:1;}
.gn-dcard.offline{opacity:.55;filter:grayscale(.3);}
.gn-dicon{width:42px;height:42px;border-radius:12px;display:flex;align-items:center;justify-content:center;margin-bottom:10px;background:var(--gn-accent-bg);transition:all .25s;}
.gn-dcard.on .gn-dicon{background:var(--gn-accent);box-shadow:0 4px 12px var(--gn-accent-glow);}
.gn-dicon svg{width:22px;height:22px;fill:var(--gn-accent);transition:fill .25s;}
.gn-dcard.on .gn-dicon svg{fill:#fff;}
.gn-dname{font-size:13px;font-weight:700;color:var(--gn-text);line-height:1.2;}
.gn-dtype{font-size:11px;color:var(--gn-text-dim);margin-top:2px;}
.gn-drow{display:flex;align-items:center;justify-content:space-between;margin-top:8px;}
.gn-dstatus{font-size:11px;font-weight:600;}
.gn-dstatus.on{color:var(--gn-accent);}
.gn-dstatus.off{color:var(--gn-text-dim);}

/* TOGGLE */
.gn-tog{width:38px;height:22px;border-radius:11px;background:#e4e7eb;position:relative;cursor:pointer;transition:background .22s;flex-shrink:0;border:none;}
.gn-tog.on{background:var(--gn-accent);}
.gn-tog::after{content:'';width:18px;height:18px;border-radius:50%;background:#fff;position:absolute;top:2px;left:2px;transition:transform .25s cubic-bezier(.34,1.56,.64,1);box-shadow:0 1px 4px rgba(0,0,0,.2);}
.gn-tog.on::after{transform:translateX(16px);}
.gn-tog.big{width:52px;height:30px;border-radius:15px;}
.gn-tog.big::after{width:26px;height:26px;}
.gn-tog.big.on::after{transform:translateX(22px);}

/* EMPTY */
.gn-empty{grid-column:1/-1;text-align:center;padding:40px 20px;background:var(--gn-surface);border:1px solid var(--gn-border);border-radius:var(--gn-r);box-shadow:var(--gn-shadow-card);}
.gn-empty-em{font-size:48px;margin-bottom:12px;}
.gn-empty-t{font-size:16px;font-weight:700;color:var(--gn-text);margin-bottom:6px;}
.gn-empty-d{font-size:13px;color:var(--gn-text-sec);line-height:1.6;max-width:240px;margin:0 auto;}

/* TOAST */
.gn-notif{position:fixed;top:70px;left:50%;transform:translateX(-50%) translateY(-12px);background:var(--gn-text);color:#fff;padding:10px 20px;border-radius:100px;font-size:13px;font-weight:600;z-index:9999;pointer-events:none;opacity:0;transition:all .3s cubic-bezier(.34,1.56,.64,1);white-space:nowrap;box-shadow:0 8px 24px rgba(0,0,0,.25);font-family:'Outfit',sans-serif;}
.gn-notif.show{opacity:1;transform:translateX(-50%) translateY(0);}
.gn-notif.err{background:var(--gn-red);}
.gn-notif.ok{background:var(--gn-green);}

/* OVERLAYS */
.gn-overlay{position:fixed;inset:0;background:rgba(15,41,24,.4);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);z-index:500;display:flex;align-items:flex-end;justify-content:center;opacity:0;pointer-events:none;transition:opacity .3s;}
.gn-overlay.show{opacity:1;pointer-events:all;}
.gn-modal{background:#fff;border-radius:28px 28px 0 0;width:100%;max-width:480px;padding:12px 22px max(env(safe-area-inset-bottom),40px);box-shadow:0 -4px 40px rgba(22,163,74,.15);transform:translateY(100%);transition:transform .4s cubic-bezier(.16,1,.3,1);border-top:1px solid var(--gn-border-md);}
.gn-overlay.show .gn-modal{transform:translateY(0);}
.gn-handle{width:36px;height:4px;border-radius:2px;background:#d1fae5;margin:0 auto 20px;}
.gn-modal-title{font-size:20px;font-weight:800;letter-spacing:-.4px;margin-bottom:16px;color:var(--gn-text);}
.gn-fgrp{margin-bottom:13px;}
.gn-flbl{font-size:11px;font-weight:700;color:var(--gn-text-sec);text-transform:uppercase;letter-spacing:.8px;margin-bottom:6px;display:block;}
.gn-finput{width:100%;background:var(--gn-bg);border:1px solid var(--gn-border-md);border-radius:var(--gn-r-xs);padding:12px 14px;font-size:14px;font-weight:500;color:var(--gn-text);outline:none;transition:all .2s;font-family:'Outfit',sans-serif;}
.gn-finput:focus{border-color:var(--gn-accent);background:#fff;box-shadow:0 0 0 3px rgba(22,163,74,.12);}
.gn-finput::placeholder{color:var(--gn-text-dim);}
.gn-hint-box{background:var(--gn-green-light);border:1px solid rgba(22,163,74,.25);border-radius:var(--gn-r-xs);padding:11px 13px;margin-bottom:14px;font-size:12px;color:var(--gn-text-sec);line-height:1.6;}
.gn-hint-box strong{color:var(--gn-accent);}
.gn-mactions{display:flex;gap:9px;margin-top:16px;}
.gn-mbtn{flex:1;padding:13px;border-radius:var(--gn-r-sm);font-size:14px;font-weight:700;cursor:pointer;border:none;transition:all .2s;font-family:'Outfit',sans-serif;}
.gn-mbtn-cancel{background:var(--gn-bg2);color:var(--gn-text-sec);}
.gn-mbtn-cancel:hover{background:var(--gn-border);}
.gn-mbtn-add{background:var(--gn-accent);color:#fff;box-shadow:0 4px 14px var(--gn-accent-glow);}
.gn-mbtn-add:hover{background:#15803d;transform:translateY(-1px);}
.gn-mbtn-danger{background:var(--gn-red-bg);color:var(--gn-red);border:1px solid rgba(220,38,38,.2);flex:none;padding:13px 18px;}
.gn-detail-hdr{text-align:center;padding-bottom:16px;}
.gn-detail-name{font-size:20px;font-weight:800;color:var(--gn-text);}
.gn-detail-sub{font-size:13px;color:var(--gn-text-sec);margin-top:3px;}
.gn-detail-togrow{display:flex;align-items:center;justify-content:space-between;background:var(--gn-bg);border:1px solid var(--gn-border);border-radius:var(--gn-r-sm);padding:14px 16px;margin-bottom:11px;}
.gn-detail-tog-lbl{font-size:14px;font-weight:700;color:var(--gn-text);}
.gn-dinfo{background:var(--gn-bg);border:1px solid var(--gn-border);border-radius:var(--gn-r-sm);overflow:hidden;}
.gn-dinfo-row{display:flex;justify-content:space-between;align-items:center;padding:12px 15px;border-bottom:1px solid var(--gn-border);font-size:13px;}
.gn-dinfo-row:last-child{border-bottom:none;}
.gn-dinfo-k{color:var(--gn-text-sec);font-weight:500;}
.gn-dinfo-v{color:var(--gn-text);font-weight:600;font-family:'JetBrains Mono',monospace;font-size:11px;max-width:60%;word-break:break-all;text-align:right;}

/* ══ ADMIN PANEL ══════════════════════════════════ */
#gnPageAdmin{flex-direction:row;max-width:100%;}

/* Sidebar */
.gn-sidebar{width:240px;flex-shrink:0;background:var(--gn-text);min-height:100vh;display:flex;flex-direction:column;position:sticky;top:0;height:100vh;overflow-y:auto;}
.gn-sb-hdr{padding:24px 20px 20px;border-bottom:1px solid rgba(255,255,255,.1);}
.gn-sb-logo{display:flex;align-items:center;gap:10px;margin-bottom:4px;}
.gn-sb-logo-icon{width:34px;height:34px;border-radius:10px;background:linear-gradient(135deg,#16a34a,#22c55e);display:flex;align-items:center;justify-content:center;flex-shrink:0;}
.gn-sb-logo-icon svg{width:18px;height:18px;fill:white;}
.gn-sb-logo-text{font-size:14px;font-weight:800;color:#fff;letter-spacing:-.2px;}
.gn-sb-sub{font-size:10px;font-weight:700;letter-spacing:2.5px;text-transform:uppercase;color:#22c55e;margin-top:2px;}
.gn-sb-nav{padding:16px 12px;flex:1;}
.gn-nav-sec-lbl{font-size:10px;font-weight:700;letter-spacing:1.5px;text-transform:uppercase;color:rgba(255,255,255,.35);padding:0 8px;margin:12px 0 6px;}
.gn-nav-item{display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:10px;font-size:13px;font-weight:600;color:rgba(255,255,255,.65);cursor:pointer;transition:all .2s;margin-bottom:2px;}
.gn-nav-item:hover{background:rgba(255,255,255,.08);color:#fff;}
.gn-nav-item.gn-nav-active{background:rgba(34,197,94,.18);color:#4ade80;}
.gn-nav-item svg{width:16px;height:16px;fill:currentColor;flex-shrink:0;}
.gn-badge{margin-left:auto;background:var(--gn-accent);color:#fff;font-size:10px;font-weight:700;padding:2px 7px;border-radius:100px;min-width:20px;text-align:center;}
.gn-sb-footer{padding:16px 12px;border-top:1px solid rgba(255,255,255,.08);}
.gn-sb-user{display:flex;align-items:center;gap:10px;margin-bottom:8px;}
.gn-user-av{width:32px;height:32px;border-radius:50%;background:linear-gradient(135deg,#16a34a,#22c55e);display:flex;align-items:center;justify-content:center;font-size:13px;font-weight:700;color:#fff;flex-shrink:0;}
.gn-user-nm{font-size:13px;font-weight:600;color:#fff;}
.gn-user-rl{font-size:11px;color:rgba(255,255,255,.4);}
.gn-sb-back{width:100%;padding:9px;border-radius:8px;background:rgba(34,197,94,.15);border:1px solid rgba(34,197,94,.3);color:#4ade80;font-size:12px;font-weight:600;cursor:pointer;font-family:'Outfit',sans-serif;transition:all .2s;}
.gn-sb-back:hover{background:rgba(34,197,94,.25);}

/* Admin content area */
.gn-admin-content{flex:1;padding:32px;overflow-y:auto;background:var(--gn-bg);}
.gn-admin-sec{display:none;}
.gn-admin-sec-active{display:block;}
.gn-pg-title{font-size:22px;font-weight:800;color:var(--gn-text);letter-spacing:-.5px;}
.gn-pg-sub{font-size:13px;color:var(--gn-text-sec);margin-top:3px;margin-bottom:24px;}

/* Admin stats */
.gn-astats{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-bottom:24px;}
.gn-astat{background:var(--gn-surface);border:1px solid var(--gn-border);border-radius:var(--gn-r-sm);padding:18px;box-shadow:var(--gn-shadow-card);}
.gn-astat-lbl{font-size:12px;font-weight:600;color:var(--gn-text-sec);text-transform:uppercase;letter-spacing:.6px;margin-bottom:8px;}
.gn-astat-num{font-size:28px;font-weight:800;color:var(--gn-text);letter-spacing:-1px;line-height:1;}
.gn-astat-ch{font-size:12px;margin-top:4px;color:var(--gn-green);}
.gn-astat-icon{float:right;width:40px;height:40px;border-radius:10px;background:var(--gn-accent-bg);display:flex;align-items:center;justify-content:center;margin-top:-4px;}
.gn-astat-icon svg{width:20px;height:20px;fill:var(--gn-accent);}

/* Admin card */
.gn-acard{background:var(--gn-surface);border:1px solid var(--gn-border);border-radius:var(--gn-r);box-shadow:var(--gn-shadow-card);overflow:hidden;margin-bottom:20px;}
.gn-acard-hdr{display:flex;align-items:center;justify-content:space-between;padding:16px 20px;border-bottom:1px solid var(--gn-border);}
.gn-acard-title{font-size:15px;font-weight:700;color:var(--gn-text);}
.gn-acard-btn{font-size:12px;color:var(--gn-accent);font-weight:600;cursor:pointer;background:var(--gn-accent-bg);padding:6px 12px;border-radius:6px;border:none;font-family:'Outfit',sans-serif;transition:all .2s;}
.gn-acard-btn:hover{background:var(--gn-accent-bg2);}

/* Table */
table.gn-tbl{width:100%;border-collapse:collapse;}
table.gn-tbl th{padding:11px 18px;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.7px;color:var(--gn-text-dim);text-align:left;background:var(--gn-bg);border-bottom:1px solid var(--gn-border);}
table.gn-tbl td{padding:13px 18px;font-size:13px;color:var(--gn-text);border-bottom:1px solid var(--gn-border);}
table.gn-tbl tr:last-child td{border-bottom:none;}
table.gn-tbl tr:hover td{background:var(--gn-accent-bg);}

/* Pills */
.gn-pill{display:inline-flex;align-items:center;gap:4px;padding:3px 10px;border-radius:100px;font-size:11px;font-weight:700;}
.gn-pill-g{background:rgba(22,163,74,.12);color:#15803d;}
.gn-pill-gray{background:#f1f5f9;color:#64748b;}
.gn-pill-dot{width:6px;height:6px;border-radius:50%;background:currentColor;}
.gn-tbl-btn{background:none;border:1px solid var(--gn-border-md);border-radius:6px;padding:5px 10px;font-size:11px;font-weight:600;color:var(--gn-text-sec);cursor:pointer;font-family:'Outfit',sans-serif;transition:all .2s;margin-right:4px;}
.gn-tbl-btn:hover{border-color:var(--gn-accent);color:var(--gn-accent);background:var(--gn-accent-bg);}
.gn-tbl-btn.danger:hover{border-color:var(--gn-red);color:var(--gn-red);background:var(--gn-red-bg);}

/* Chart */
.gn-chart{height:160px;background:linear-gradient(180deg,rgba(22,163,74,.05) 0%,transparent 100%);border-radius:8px;display:flex;align-items:flex-end;gap:5px;padding:12px 8px 0;}
.gn-chart-bar{flex:1;border-radius:4px 4px 0 0;background:linear-gradient(180deg,#4ade80,#16a34a);opacity:.7;transition:opacity .2s;cursor:pointer;}
.gn-chart-bar:hover{opacity:1;}
.gn-chart-lbl{display:flex;justify-content:space-between;padding:8px 4px 16px;font-size:11px;color:var(--gn-text-dim);}

/* Settings form */
.gn-sform{display:grid;grid-template-columns:1fr 1fr;gap:16px;padding:20px;}
.gn-sfull{grid-column:1/-1;}
.gn-slbl{font-size:12px;font-weight:700;color:var(--gn-text-sec);text-transform:uppercase;letter-spacing:.7px;margin-bottom:6px;display:block;}
.gn-sinput{width:100%;background:var(--gn-bg);border:1px solid var(--gn-border-md);border-radius:8px;padding:10px 14px;font-size:14px;color:var(--gn-text);outline:none;font-family:'Outfit',sans-serif;transition:all .2s;}
.gn-sinput:focus{border-color:var(--gn-accent);box-shadow:0 0 0 3px rgba(22,163,74,.1);background:#fff;}
.gn-shint{font-size:11px;color:var(--gn-text-dim);margin-top:4px;}
.gn-sfooter{padding:16px 20px;border-top:1px solid var(--gn-border);display:flex;align-items:center;justify-content:space-between;}
.gn-sfooter-note{font-size:12px;color:var(--gn-text-dim);}
.gn-ssave{background:var(--gn-accent);color:#fff;border:none;padding:11px 24px;border-radius:10px;font-size:14px;font-weight:700;cursor:pointer;font-family:'Outfit',sans-serif;box-shadow:0 4px 12px var(--gn-accent-glow);transition:all .2s;}
.gn-ssave:hover{background:#15803d;transform:translateY(-1px);}
.gn-status-row{display:flex;align-items:center;gap:10px;padding:11px 13px;background:var(--gn-bg);border:1px solid var(--gn-border);border-radius:8px;}

/* Scene / notification toggles */
.gn-srow{display:flex;align-items:center;justify-content:space-between;padding:14px 20px;border-bottom:1px solid var(--gn-border);}
.gn-srow:last-child{border-bottom:none;}
.gn-srow-info h4{font-size:14px;font-weight:600;color:var(--gn-text);}
.gn-srow-info p{font-size:12px;color:var(--gn-text-sec);margin-top:2px;}
.gn-stog{width:44px;height:24px;border-radius:12px;background:#e2e8f0;position:relative;cursor:pointer;transition:background .2s;flex-shrink:0;border:none;}
.gn-stog.gn-stog-on{background:var(--gn-accent);}
.gn-stog::after{content:'';width:20px;height:20px;border-radius:50%;background:#fff;position:absolute;top:2px;left:2px;transition:transform .22s cubic-bezier(.34,1.56,.64,1);box-shadow:0 1px 4px rgba(0,0,0,.2);}
.gn-stog.gn-stog-on::after{transform:translateX(20px);}

/* Responsive */
@media(max-width:768px){.gn-astats{grid-template-columns:repeat(2,1fr);}.gn-sidebar{width:200px;}.gn-admin-content{padding:20px;}}
@media(max-width:600px){
  #gnPageAdmin{flex-direction:column;}
  .gn-sidebar{width:100%;height:auto;position:relative;min-height:unset;}
  .gn-admin-content{padding:16px;}
  .gn-astats{grid-template-columns:1fr 1fr;}
  .gn-sform{grid-template-columns:1fr;}
  .gn-hbtns .gn-hbtn:not(.gn-primary):not(:last-child){display:none;}
}

/* ══ GEMINI LIVE ══════════════════════════════════════════════════════════ */

/* Gemini FAB Button */
.gn-gemini-fab{
  position:fixed;bottom:28px;right:22px;z-index:400;
  width:64px;height:64px;border-radius:50%;border:none;
  cursor:pointer;padding:0;
  background:transparent;
  display:flex;align-items:center;justify-content:center;
  filter:drop-shadow(0 8px 24px rgba(66,133,244,.45));
  transition:transform .25s cubic-bezier(.34,1.56,.64,1);
}
.gn-gemini-fab:hover{transform:scale(1.12);}
.gn-gemini-fab:active{transform:scale(.95);}

/* 4-sided Gemini orb canvas wrapper */
.gn-gem-orb{width:64px;height:64px;position:relative;}
.gn-gem-orb canvas{width:64px;height:64px;border-radius:50%;}

/* Gemini Live Overlay */
.gn-gem-overlay{
  position:fixed;inset:0;z-index:800;
  background:rgba(5,8,20,.85);
  backdrop-filter:blur(24px);-webkit-backdrop-filter:blur(24px);
  display:flex;flex-direction:column;align-items:center;justify-content:center;
  opacity:0;pointer-events:none;
  transition:opacity .4s cubic-bezier(.16,1,.3,1);
}
.gn-gem-overlay.show{opacity:1;pointer-events:all;}

/* Big Gemini orb inside overlay */
.gn-gem-big{
  width:180px;height:180px;position:relative;margin-bottom:28px;
}
.gn-gem-big canvas{width:180px;height:180px;border-radius:50%;}

/* Listening ripples */
.gn-gem-ripple{
  position:absolute;inset:-20px;border-radius:50%;
  border:2px solid rgba(66,133,244,.4);
  animation:gemRipple 2s ease-out infinite;
  pointer-events:none;
}
.gn-gem-ripple:nth-child(2){animation-delay:.6s;border-color:rgba(234,67,53,.3);}
.gn-gem-ripple:nth-child(3){animation-delay:1.2s;border-color:rgba(52,168,83,.3);}
@keyframes gemRipple{
  0%{transform:scale(.85);opacity:1;}
  100%{transform:scale(1.5);opacity:0;}
}

.gn-gem-title{font-size:22px;font-weight:800;color:#fff;letter-spacing:-.4px;margin-bottom:6px;}
.gn-gem-sub{font-size:14px;color:rgba(255,255,255,.55);margin-bottom:32px;text-align:center;max-width:280px;line-height:1.5;}

/* Chat transcript */
.gn-gem-transcript{
  width:100%;max-width:520px;max-height:220px;
  overflow-y:auto;padding:0 24px;
  display:flex;flex-direction:column;gap:10px;
  margin-bottom:24px;
  scrollbar-width:thin;scrollbar-color:rgba(255,255,255,.15) transparent;
}
.gn-gem-msg{
  padding:11px 16px;border-radius:16px;font-size:14px;line-height:1.5;
  animation:gemMsgIn .3s cubic-bezier(.34,1.56,.64,1) both;
}
@keyframes gemMsgIn{from{opacity:0;transform:translateY(12px);}to{opacity:1;transform:none;}}
.gn-gem-msg.user{background:rgba(66,133,244,.18);color:#93c5fd;align-self:flex-end;border-bottom-right-radius:4px;}
.gn-gem-msg.ai{background:rgba(255,255,255,.08);color:rgba(255,255,255,.85);align-self:flex-start;border-bottom-left-radius:4px;}
.gn-gem-msg.ai strong{color:#4ade80;}

/* Action row */
.gn-gem-actions{display:flex;gap:14px;align-items:center;}
.gn-gem-mic{
  width:72px;height:72px;border-radius:50%;border:none;cursor:pointer;
  background:linear-gradient(135deg,#4285f4,#0f9d58);
  display:flex;align-items:center;justify-content:center;
  box-shadow:0 8px 28px rgba(66,133,244,.5);
  transition:all .25s;position:relative;
  overflow:visible;
}
.gn-gem-mic.listening{
  background:linear-gradient(135deg,#ea4335,#fbbc04);
  box-shadow:0 8px 28px rgba(234,67,53,.5);
  animation:gemMicPulse 1.4s ease-in-out infinite;
}
@keyframes gemMicPulse{
  0%,100%{box-shadow:0 8px 28px rgba(234,67,53,.5);}
  50%{box-shadow:0 8px 48px rgba(234,67,53,.8),0 0 0 12px rgba(234,67,53,.15);}
}
.gn-gem-mic svg{width:30px;height:30px;fill:#fff;}
.gn-gem-close{
  width:48px;height:48px;border-radius:50%;border:1px solid rgba(255,255,255,.2);
  background:rgba(255,255,255,.06);cursor:pointer;
  display:flex;align-items:center;justify-content:center;
  color:rgba(255,255,255,.65);font-size:20px;transition:all .2s;
}
.gn-gem-close:hover{background:rgba(255,255,255,.14);color:#fff;}

/* Waveform bars */
.gn-gem-wave{
  display:flex;align-items:center;gap:4px;height:32px;
  margin-bottom:8px;
  opacity:0;transition:opacity .3s;
}
.gn-gem-wave.active{opacity:1;}
.gn-gem-wave span{
  width:4px;border-radius:2px;
  background:linear-gradient(180deg,#4285f4,#0f9d58);
  animation:gemWave 1s ease-in-out infinite;
  transform-origin:bottom;
}
.gn-gem-wave span:nth-child(1){height:10px;animation-delay:0s;}
.gn-gem-wave span:nth-child(2){height:22px;animation-delay:.1s;}
.gn-gem-wave span:nth-child(3){height:30px;animation-delay:.2s;}
.gn-gem-wave span:nth-child(4){height:18px;animation-delay:.3s;}
.gn-gem-wave span:nth-child(5){height:26px;animation-delay:.4s;}
.gn-gem-wave span:nth-child(6){height:14px;animation-delay:.5s;}
.gn-gem-wave span:nth-child(7){height:22px;animation-delay:.6s;}
@keyframes gemWave{
  0%,100%{transform:scaleY(.4);}
  50%{transform:scaleY(1);}
}

/* Text input fallback */
.gn-gem-input-row{
  display:flex;gap:10px;width:100%;max-width:520px;padding:0 24px;
}
.gn-gem-input{
  flex:1;background:rgba(255,255,255,.08);border:1px solid rgba(255,255,255,.15);
  border-radius:100px;padding:13px 20px;font-size:14px;color:#fff;
  outline:none;font-family:'Outfit',sans-serif;
  transition:border-color .2s;
}
.gn-gem-input::placeholder{color:rgba(255,255,255,.35);}
.gn-gem-input:focus{border-color:rgba(66,133,244,.6);}
.gn-gem-send{
  width:48px;height:48px;border-radius:50%;border:none;cursor:pointer;
  background:linear-gradient(135deg,#4285f4,#0f9d58);
  display:flex;align-items:center;justify-content:center;
  box-shadow:0 4px 14px rgba(66,133,244,.4);
  transition:all .2s;flex-shrink:0;
}
.gn-gem-send:hover{transform:scale(1.08);}
.gn-gem-send svg{width:20px;height:20px;fill:#fff;}

/* Gemini key setup notice */
.gn-gem-setup{
  background:rgba(66,133,244,.12);border:1px solid rgba(66,133,244,.25);
  border-radius:14px;padding:14px 18px;text-align:center;
  font-size:13px;color:rgba(255,255,255,.7);max-width:380px;
  margin-bottom:20px;line-height:1.6;
}
.gn-gem-setup a{color:#93c5fd;text-decoration:none;}

/* Gemini nav item in admin sidebar */
.gn-nav-item.gn-gem-nav{color:rgba(147,197,253,.8);}
.gn-nav-item.gn-gem-nav svg{fill:rgba(147,197,253,.8);}
.gn-nav-item.gn-gem-nav:hover,.gn-nav-item.gn-gem-nav.gn-nav-active{background:rgba(66,133,244,.2);color:#93c5fd;}

/* Gemini admin section */
#gnSec-gemini .gn-gem-api-form{padding:20px;}
#gnSec-gemini .gn-api-status{
  display:flex;align-items:center;gap:8px;
  padding:12px 16px;border-radius:10px;
  background:rgba(66,133,244,.08);border:1px solid rgba(66,133,244,.2);
  font-size:13px;color:rgba(255,255,255,.7);margin-top:12px;
}

/* Scheduling panel in admin */
#gnSec-schedule .gn-sched-list{padding:0 20px 20px;}
.gn-sched-item{
  display:flex;align-items:center;gap:14px;
  padding:14px 0;border-bottom:1px solid var(--gn-border);
}
.gn-sched-item:last-child{border-bottom:none;}
.gn-sched-icon{width:40px;height:40px;border-radius:10px;background:var(--gn-accent-bg);display:flex;align-items:center;justify-content:center;flex-shrink:0;}
.gn-sched-icon svg{width:20px;height:20px;fill:var(--gn-accent);}
.gn-sched-info{flex:1;}
.gn-sched-name{font-size:13px;font-weight:700;color:var(--gn-text);}
.gn-sched-time{font-size:12px;color:var(--gn-text-dim);margin-top:2px;}
.gn-sched-add{
  width:100%;margin:16px 20px 0;width:calc(100% - 40px);
  padding:12px;border-radius:10px;border:2px dashed var(--gn-border-md);
  background:transparent;color:var(--gn-accent);font-size:13px;font-weight:600;
  cursor:pointer;font-family:'Outfit',sans-serif;transition:all .2s;
  display:flex;align-items:center;justify-content:center;gap:6px;
}
.gn-sched-add:hover{background:var(--gn-accent-bg);border-color:var(--gn-accent);}

/* Admin page: full takeover (no hub underneath) */
body.gn-admin-mode #gnPageHub{display:none!important;}
body.gn-admin-mode #gnPageAdmin{display:flex!important;}
body.gn-admin-mode .gn-bg-decor{display:none;}
