/* ═════════════  v3: palette, glow, hero, feed, module tiles  ═════════════ */
.panel{position:relative;overflow:hidden}
.panel::before{content:'';position:absolute;inset:0 0 auto 0;height:340px;pointer-events:none;
  background:radial-gradient(60% 100% at 50% 0%,#6cc8ff12,transparent 70%)}
.panel>*{position:relative}

/* search pill in the top bar */
.kbtn{display:flex;align-items:center;gap:8px;height:30px;padding:0 6px 0 10px;border-radius:8px;border:1px solid var(--border2);background:var(--raised);color:var(--text3);font:13px Geist,sans-serif;cursor:pointer;min-width:240px}
.kbtn:hover{border-color:var(--border3);color:var(--text2)}
.kbtn span{flex:1;text-align:left}
.kbd{font:500 11px "Geist Mono",monospace;color:var(--text3);border:1px solid var(--border2);border-radius:4px;padding:1px 5px;background:var(--panel)}

/* sidebar status dots + collapsible groups */
.nav a .on-dot{margin-left:auto;width:6px;height:6px;border-radius:50%;background:var(--ok);box-shadow:0 0 0 3px #4ade801a}
.nav a .off-dot{margin-left:auto;width:6px;height:6px;border-radius:50%;border:1.5px solid var(--border3)}
.nav .grp{display:flex;align-items:center;justify-content:space-between;cursor:pointer;user-select:none;border-radius:6px}
.nav .grp:hover{color:var(--text3)}
.nav .grp svg{width:12px;height:12px;transition:transform .15s}
.nav .grp.closed svg{transform:rotate(-90deg)}
.nav .grp.closed+.items{display:none}

/* module header icon */
.mh{display:flex;gap:14px;align-items:center}
.mh .mi{width:44px;height:44px;border-radius:12px;display:grid;place-items:center;flex-shrink:0;
  background:linear-gradient(180deg,#6cc8ff26,#6cc8ff0a);border:1px solid var(--accent-line);color:var(--accent);box-shadow:0 8px 24px -10px #6cc8ff60}
.mh .mi svg{width:20px;height:20px}

/* command palette */
.pal{position:fixed;inset:0;z-index:100;display:none;align-items:flex-start;justify-content:center;padding-top:12vh;background:#000a;backdrop-filter:blur(3px)}
.pal.open{display:flex;animation:fadein .12s}
@keyframes fadein{from{opacity:0}to{opacity:1}}
.pal-box{width:min(620px,calc(100vw - 32px));background:var(--raised);border:1px solid var(--border3);border-radius:14px;box-shadow:0 40px 100px -20px #000;overflow:hidden;animation:dlg .14s ease-out}
.pal-q{display:flex;align-items:center;gap:10px;padding:0 16px;border-bottom:1px solid var(--border)}
.pal-q svg{color:var(--text3)}
.pal-q input{border:0;background:none;height:52px;font-size:15px;padding:0;box-shadow:none!important}
.pal-list{max-height:380px;overflow-y:auto;padding:6px}
.pal-sec{font-size:11.5px;color:var(--text4);padding:8px 10px 4px}
.pal-it{display:flex;align-items:center;gap:10px;height:38px;padding:0 10px;border-radius:8px;color:var(--text2);cursor:pointer}
.pal-it svg{color:var(--text3)}.pal-it .gi{width:20px;height:20px;border-radius:5px;font-size:9px}
.pal-it small{margin-left:auto;color:var(--text4);font-size:12px}
.pal-it.sel{background:var(--active);color:var(--text)}.pal-it.sel svg{color:var(--accent)}
.pal-foot{display:flex;gap:14px;padding:8px 14px;border-top:1px solid var(--border);color:var(--text4);font-size:12px}
.pal-empty{padding:28px;text-align:center;color:var(--text3)}

/* overview hero */
.hero{position:relative;border-radius:16px;overflow:hidden;border:1px solid var(--border2);margin-bottom:16px;background:var(--raised);box-shadow:var(--shadow)}
.hero .bg{height:120px;background:
  radial-gradient(120% 140% at 0% 0%,#6cc8ff40,transparent 55%),
  radial-gradient(90% 120% at 100% 0%,#38b6ff26,transparent 60%),
  linear-gradient(180deg,#121a22,#141518);background-size:cover;background-position:center;position:relative}
.hero .bg::after{content:'';position:absolute;inset:0;background:linear-gradient(180deg,transparent 30%,#141518)}
.hero .row-in{display:flex;align-items:flex-end;gap:16px;padding:0 20px 18px;margin-top:-44px;position:relative;flex-wrap:wrap}
.hero .gbig{width:80px;height:80px;border-radius:20px;border:4px solid var(--raised);background:var(--active);object-fit:cover;display:grid;place-items:center;font:700 26px Geist,sans-serif;color:var(--text2);box-shadow:0 10px 30px -10px #000;flex-shrink:0}
.hero .who{flex:1;min-width:220px}
.hero h1{font-size:22px}
.hero .facts{display:flex;gap:16px;flex-wrap:wrap;color:var(--text3);font-size:12.5px;margin-top:4px}
.hero .facts span{display:inline-flex;align-items:center;gap:5px}.hero .facts svg{width:13px;height:13px}
.hero .acts{display:flex;gap:8px}

/* stat cards with sparkline */
.cards{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:16px}
.scard{display:block;padding:14px 16px 12px;border-radius:var(--r-lg);background:var(--raised);border:1px solid var(--border);box-shadow:var(--shadow);transition:border-color .12s,transform .12s}
.scard:hover{border-color:var(--border3);transform:translateY(-1px)}
.scard .top{display:flex;align-items:center;justify-content:space-between;color:var(--text3);font-size:12.5px}
.scard .top svg{width:15px;height:15px}
.scard .v{display:flex;align-items:baseline;gap:8px;margin-top:6px}
.scard .v b{font:600 28px Geist,sans-serif;letter-spacing:-.03em;font-variant-numeric:tabular-nums}
.delta{font:500 11.5px "Geist Mono",monospace;padding:1px 6px;border-radius:5px}
.delta.up{color:#86efac;background:#4ade8014}.delta.down{color:#fca5a5;background:#f8717114}.delta.flat{color:var(--text3);background:var(--panel)}
.scard .sub{color:var(--text4);font-size:12px;margin-top:2px}
.spark{display:block;width:100%;height:34px;margin-top:8px;overflow:visible}

/* activity feed */
.feed .ev{display:flex;gap:12px;padding:11px 16px;border-top:1px solid var(--border);align-items:flex-start}
.feed .ev:first-child{border-top:0}
.feed .ic{width:28px;height:28px;border-radius:8px;display:grid;place-items:center;flex-shrink:0;border:1px solid var(--border2);background:var(--panel)}
.feed .ic svg{width:14px;height:14px}
.feed .ic.t{color:var(--accent)}.feed .ic.c{color:#fbbf24}.feed .ic.a{color:#c4b5fd}.feed .ic.s{color:#86efac}.feed .ic.g{color:#f9a8d4}
.feed .tx{flex:1;min-width:0;font-size:13px;color:var(--text2)}
.feed .tx b{color:var(--text);font-weight:500}
.feed .tx .q{display:block;color:var(--text3);font-size:12.5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.feed time{color:var(--text4);font-size:12px;white-space:nowrap}

/* quick actions */
.qa{display:grid;grid-template-columns:1fr 1fr;gap:8px;padding:12px}
.qa a{display:flex;align-items:center;gap:9px;padding:10px 12px;border-radius:9px;border:1px solid var(--border);background:var(--panel);color:var(--text2);font-size:13px;transition:.12s}
.qa a:hover{border-color:var(--accent-line);color:var(--text);background:var(--accent-soft)}
.qa a svg{color:var(--accent)}

/* module tiles with switches */
.mtiles{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}
.mtile{display:flex;flex-direction:column;gap:10px;padding:14px;border-radius:var(--r-lg);background:var(--raised);border:1px solid var(--border);transition:border-color .12s}
.mtile:hover{border-color:var(--border3)}
.mtile .hd{display:flex;align-items:center;gap:10px}
.mtile .mi{width:32px;height:32px;border-radius:9px;display:grid;place-items:center;background:var(--panel);border:1px solid var(--border2);color:var(--text3);flex-shrink:0;transition:.15s}
.mtile.on .mi{color:var(--accent);border-color:var(--accent-line);background:var(--accent-soft)}
.mtile .hd b{flex:1;font-weight:500}
.mtile p{color:var(--text3);font-size:12.5px;flex:1}
.mtile .ft{display:flex;align-items:center;justify-content:space-between}
.mtile .ft a{font-size:12.5px;color:var(--text3);display:inline-flex;align-items:center;gap:4px}.mtile .ft a:hover{color:var(--accent)}
.mtile .ft a svg{width:13px;height:13px}
.mgroup{font-size:12px;color:var(--text4);margin:18px 0 8px;font-weight:500}

@media (max-width:1100px){.cards{grid-template-columns:repeat(2,1fr)}.mtiles{grid-template-columns:repeat(2,1fr)}}
@media (max-width:860px){.kbtn{min-width:0}.kbtn span,.kbtn .kbd{display:none}.cards,.mtiles,.qa{grid-template-columns:1fr}.hero .acts{width:100%}}

.hero .who{padding-top:52px}
.hero .bg{height:132px}
.kbtn{white-space:nowrap;min-width:260px}
@media (max-width:860px){.hero .who{padding-top:8px}}

/* "Nova by DS Designs" wordmark */
.brand .by{font:500 11px "Geist Mono",monospace;color:var(--text4);letter-spacing:.02em;margin-left:2px;align-self:flex-end;padding-bottom:2px}
@media (max-width:620px){.brand .by{display:none}}

/* Nova logo */
.logoimg{width:30px;height:30px;object-fit:contain;filter:drop-shadow(0 4px 10px #3b82f640)}
.final-logo{width:min(280px,60%);display:block;margin:0 auto 10px;position:relative;filter:drop-shadow(0 20px 40px #2563eb40)}
