@import url('../omni-ui.css');

/* OmniStream shell — ported from mockups/omni-mock.css.
   Only shell/nav/topbar/cmdk/universal-component blocks are included here.
   Feature-section blocks (.sd*, .qa*, .preview, .connect-row, etc.) live
   in their own section stylesheets (later tickets). */

/* ---- Fonts (graceful fallback if offline) ---- */
@import url('https://fonts.googleapis.com/css2?family=Chakra+Petch:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500;600;700&display=swap');

*{box-sizing:border-box}
html,body{margin:0;height:100%}
body{
  background:var(--bg); color:var(--text); font-family:var(--font-display);
  font-size:13px; line-height:1.45; -webkit-font-smoothing:antialiased;
}
a{color:inherit;text-decoration:none}

/* ============ ACCESSIBILITY ============ */
.skip-link{position:absolute;left:-999px;top:0;background:var(--accent);color:#fff;padding:8px 14px;z-index:200;border-radius:0 0 var(--r) 0}
.skip-link:focus{left:0}
:focus-visible{outline:2px solid var(--accent-soft); outline-offset:2px; border-radius:var(--r-sm)}
@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}

/* ============ APP SHELL ============ */
.app-shell{--sidebar-w:248px; display:grid; grid-template-columns:var(--sidebar-w) 1fr; grid-template-rows:auto 1fr; grid-template-areas:"sidebar topbar" "sidebar content"; height:100vh; overflow:hidden}
.app-shell.collapsed{--sidebar-w:64px}

/* Sidebar */
.sidebar{grid-area:sidebar; background:linear-gradient(180deg,#1b1820,var(--surface-inset)); border-right:1px solid var(--border); display:flex; flex-direction:column; overflow-y:auto; overflow-x:hidden}
.brand{display:flex; align-items:center; gap:var(--space-3); padding:var(--space-4); font-weight:700; font-size:15px; letter-spacing:.3px; position:sticky; top:0; background:#1b1820; z-index:2}
.brand .logo{width:26px;height:26px;border-radius:7px;background:linear-gradient(135deg,#7c3aed,#9147ff);display:grid;place-items:center;flex:none;box-shadow:var(--glow-accent)}
.brand .logo svg{width:15px;height:15px}
.collapsed .brand-name,.collapsed .nav-item span,.collapsed .nav-group-label{display:none}
.nav{padding:var(--space-2) var(--space-2) var(--space-6)}
.nav-group{margin-top:var(--space-4)}
.nav-group-label{display:flex;align-items:center;gap:6px;padding:6px var(--space-3);font-family:var(--font-mono);font-size:10px;letter-spacing:.12em;text-transform:uppercase;color:var(--text-faint);cursor:pointer;user-select:none}
.nav-group-label .chev{margin-left:auto;transition:transform var(--dur) var(--ease);font-size:9px}
.nav-group.closed .chev{transform:rotate(-90deg)}
.nav-group.closed .nav-item{display:none}
.nav-item{display:flex;align-items:center;gap:var(--space-3);padding:9px var(--space-3);border-radius:var(--r-sm);color:var(--text-dim);cursor:pointer;font-size:13px;font-weight:500;position:relative;transition:background var(--dur-fast) var(--ease),color var(--dur-fast) var(--ease)}
.nav-item .ico{width:18px;text-align:center;flex:none;font-size:15px;filter:grayscale(.3)}
.nav-item:hover{background:#ffffff0a;color:var(--text)}
.nav-item.is-active{background:var(--accent-wash);color:var(--text)}
.nav-item.is-active::before{content:"";position:absolute;left:-2px;top:8px;bottom:8px;width:3px;border-radius:3px;background:var(--accent)} /* shell rail indicator (allowed: nav affordance, not a card stripe) */
.nav-item .tag{margin-left:auto;font-family:var(--font-mono);font-size:9px;padding:1px 6px;border-radius:var(--r-pill);background:#ffffff14;color:var(--text-dim)}
.nav-item .lock{margin-left:auto;opacity:.5;font-size:11px}
.nav-upsell{margin:var(--space-2) var(--space-2) 0;padding:10px var(--space-3);border:1px dashed var(--border-accent);border-radius:var(--r);color:var(--text-dim);font-size:11.5px;cursor:pointer;background:var(--accent-wash)}
.sidebar-foot{margin-top:auto;padding:var(--space-3);border-top:1px solid var(--border);display:flex;gap:var(--space-2)}

/* Topbar */
.topbar{grid-area:topbar;display:flex;align-items:center;gap:var(--space-3);padding:0 var(--space-4);height:56px;border-bottom:1px solid var(--border);background:#1c1c20cc;backdrop-filter:blur(8px);position:sticky;top:0;z-index:10}
.icon-btn{width:34px;height:34px;display:grid;place-items:center;border-radius:var(--r-sm);background:transparent;border:1px solid transparent;color:var(--text-dim);cursor:pointer;font-size:16px}
.icon-btn:hover{background:#ffffff0d;color:var(--text)}
.chan-switch{display:flex;align-items:center;gap:var(--space-2);padding:5px var(--space-3);border-radius:var(--r-pill);background:var(--surface);border:1px solid var(--border);cursor:pointer}
.chan-switch .av{width:24px;height:24px;border-radius:50%;background:linear-gradient(135deg,#7c3aed,#9147ff)}
.cmdk-trigger{display:flex;align-items:center;gap:var(--space-2);min-width:220px;padding:7px var(--space-3);border-radius:var(--r-sm);background:var(--surface-inset);border:1px solid var(--border);color:var(--text-faint);cursor:text;font-size:12px}
.cmdk-trigger .kbd{margin-left:auto}
.kbd{font-family:var(--font-mono);font-size:10px;padding:1px 6px;border-radius:4px;background:#ffffff14;border:1px solid var(--border);color:var(--text-dim)}
.topbar-spacer{flex:1}

/* Content */
.content{grid-area:content;overflow-y:auto;padding:var(--space-6)}
.page-header{display:flex;align-items:flex-end;gap:var(--space-4);margin-bottom:var(--space-5);flex-wrap:wrap}
.page-header h1{margin:0;font-size:24px;font-weight:700;letter-spacing:.2px}
.page-header .sub{color:var(--text-dim);font-size:13px;margin-top:2px}
.page-header .ph-actions{margin-left:auto;display:flex;gap:var(--space-2)}
.section{display:none}
.section.is-active{display:block;animation:rise var(--dur-slow) var(--ease)}
@keyframes rise{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}

/* Live banner (persistent when live) */
.live-banner{display:none;align-items:center;gap:var(--space-3);padding:8px var(--space-4);background:linear-gradient(90deg,rgba(255,64,64,.16),transparent);border-bottom:1px solid var(--border)}
body.is-live .live-banner{display:flex}
.live-banner .rec{display:flex;align-items:center;gap:7px;font-family:var(--font-mono);font-size:11px;color:var(--text)}
.live-banner .rec .dot{background:var(--danger);box-shadow:0 0 8px var(--danger);animation:pulse 1.6s var(--ease) infinite}
@keyframes pulse{50%{opacity:.4}}

/* ============ COMPONENTS ============ */

/* Card */
.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--r);box-shadow:var(--shadow-card);padding:var(--space-4)}
.card--raised{background:var(--surface-raised);border-color:var(--border-accent)}

/* Buttons — one system */
.btn{font-family:var(--font-display);font-weight:600;font-size:12px;display:inline-flex;align-items:center;gap:7px;padding:8px 14px;border-radius:var(--r-sm);border:1px solid var(--border);background:var(--surface-inset);color:var(--text);cursor:pointer;transition:transform var(--dur-fast) var(--ease),background var(--dur-fast) var(--ease),border-color var(--dur-fast)}
.btn:hover{border-color:var(--border-accent);background:#ffffff0d}
.btn:active{transform:translateY(1px)}
.btn--primary{background:linear-gradient(135deg,#8a3df0,var(--accent));border-color:transparent;color:#fff;box-shadow:0 6px 18px -8px var(--accent)}
.btn--primary:hover{background:linear-gradient(135deg,#9550ff,#a06bff)}
.btn--ghost{background:transparent}
.btn--warn{border-color:var(--warn);color:var(--warn)} .btn--danger{border-color:var(--danger);color:var(--danger)}
.btn--sm{padding:5px 10px;font-size:11px} .btn--lg{padding:12px 20px;font-size:13px}
.btn[disabled]{opacity:.45;cursor:not-allowed}

/* Status: pill (transient) vs badge (persistent) */
.pill{font-family:var(--font-mono);font-size:10px;letter-spacing:.06em;text-transform:uppercase;padding:3px 9px;border-radius:var(--r-pill);background:#ffffff12;color:var(--text-dim);display:inline-flex;align-items:center;gap:6px}
.pill--ok{background:rgba(0,179,0,.14);color:#5fd35f} .pill--warn{background:rgba(255,184,77,.15);color:var(--warn)} .pill--danger{background:rgba(255,64,64,.15);color:#ff6b6b}
.badge{font-family:var(--font-mono);font-size:9px;letter-spacing:.08em;text-transform:uppercase;font-weight:700;padding:2px 7px;border-radius:var(--r-sm);background:var(--accent-wash);color:var(--accent-2);border:1px solid var(--border-accent)}
.badge--beta{background:rgba(255,184,77,.12);color:var(--warn);border-color:#5a4520}
.dot{width:8px;height:8px;border-radius:50%;background:var(--text-faint);flex:none}
.dot--ok{background:var(--ok);box-shadow:0 0 8px rgba(0,179,0,.6)} .dot--warn{background:var(--warn)} .dot--danger{background:var(--danger);box-shadow:0 0 8px rgba(255,64,64,.6)}

/* Command palette */
.cmdk{position:fixed;inset:0;background:#000b;display:none;justify-content:center;align-items:flex-start;padding-top:12vh;z-index:130;backdrop-filter:blur(3px)}
.cmdk.open{display:flex}
.cmdk-box{width:min(560px,92vw);background:var(--surface);border:1px solid var(--border-accent);border-radius:var(--r-md);box-shadow:var(--shadow-modal);overflow:hidden}
.cmdk-box input{width:100%;border:0;background:transparent;color:var(--text);font-family:var(--font-display);font-size:16px;padding:16px 18px;border-bottom:1px solid var(--border)}
.cmdk-box input:focus{outline:none}
.cmdk-list{max-height:340px;overflow-y:auto;padding:6px}
.cmdk-item{display:flex;align-items:center;gap:var(--space-3);padding:10px 12px;border-radius:var(--r-sm);cursor:pointer;color:var(--text-dim);width:100%;text-align:left;background:transparent;border:0;font:inherit}
.cmdk-item:hover,.cmdk-item.sel{background:var(--accent-wash);color:var(--text)}
.cmdk-item .grp{margin-left:auto;font-family:var(--font-mono);font-size:9px;text-transform:uppercase;color:var(--text-faint)}

/* Empty / loading states */
.empty{display:grid;place-items:center;text-align:center;padding:var(--space-10) var(--space-4);color:var(--text-dim)}
.empty .big{font-size:30px;margin-bottom:8px;opacity:.6}

/* Utility */
.mono{font-family:var(--font-mono)}
.dim{color:var(--text-dim)} .faint{color:var(--text-faint)}
.hide{display:none!important}
