/*
  Elevator Operator — Unified Design System v2.0
  Bloomberg Terminal / TradingView inspired dark theme.
  Import this in all templates: <link rel="stylesheet" href="/static/css/theme.css">
*/

/* ── Reset ───────────────────────────────────────────────────────────────── */
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}

/* ── Design Tokens ───────────────────────────────────────────────────────── */
:root{
  /* Backgrounds — layered dark surfaces */
  --bg:       #060a10;   /* page background */
  --surface:  #0b111d;   /* card/panel */
  --surface2: #101824;   /* elevated card */
  --surface3: #161f2e;   /* hover / active */
  --surface4: #1c2838;   /* nested elements */

  /* Borders */
  --border:   #1e2d45;
  --border2:  #253352;
  --border3:  #2e3f60;

  /* Text hierarchy */
  --text:     #d1dae6;   /* primary */
  --text2:    #8899b0;   /* secondary */
  --text3:    #566272;   /* muted */
  --text4:    #3a4658;   /* disabled */

  /* Brand / accent */
  --blue:     #4d9de0;
  --blue-dim: #112540;
  --blue-glow:rgba(77,157,224,.15);

  /* Directional */
  --green:    #22c55e;
  --green-dim:#0a2216;
  --green-bg: #071810;
  --red:      #ef4444;
  --red-dim:  #2a0b0b;
  --red-bg:   #190606;

  /* Semantic */
  --yellow:   #eab308;
  --yellow-dim:#2a1f00;
  --purple:   #a78bfa;
  --orange:   #f97316;
  --cyan:     #22d3ee;
  --teal:     #14b8a6;

  /* Typography */
  --font-mono: 'Cascadia Code','Fira Code','Consolas','Courier New',monospace;
  --font-ui:   'Inter','Segoe UI',system-ui,-apple-system,sans-serif;
  --font-size-xs:  10px;
  --font-size-sm:  11px;
  --font-size-md:  13px;
  --font-size-lg:  15px;
  --font-size-xl:  18px;
  --font-size-2xl: 24px;

  /* Spacing */
  --space-1: 4px;
  --space-2: 8px;
  --space-3: 12px;
  --space-4: 16px;
  --space-5: 20px;
  --space-6: 24px;

  /* Borders */
  --radius-sm: 3px;
  --radius-md: 6px;
  --radius-lg: 10px;

  /* Shadows */
  --shadow-sm: 0 1px 3px rgba(0,0,0,.4);
  --shadow-md: 0 4px 12px rgba(0,0,0,.5);
  --shadow-lg: 0 8px 24px rgba(0,0,0,.6);

  /* Topbar */
  --topbar-h: 46px;

  /* Transitions */
  --trans: all .15s ease;
}

/* ── Base ────────────────────────────────────────────────────────────────── */
html,body{
  height:100%;
  background:var(--bg);
  color:var(--text);
  font-family:var(--font-ui);
  font-size:var(--font-size-md);
  line-height:1.5;
  -webkit-font-smoothing:antialiased;
}

/* ── Scrollbars ──────────────────────────────────────────────────────────── */
::-webkit-scrollbar{width:4px;height:4px}
::-webkit-scrollbar-track{background:transparent}
::-webkit-scrollbar-thumb{background:var(--border2);border-radius:2px}
::-webkit-scrollbar-thumb:hover{background:var(--border3)}

/* ── Topbar ──────────────────────────────────────────────────────────────── */
.topbar{
  position:fixed;top:0;left:0;right:0;z-index:200;
  height:var(--topbar-h);
  background:rgba(6,10,16,.95);
  backdrop-filter:blur(8px);
  border-bottom:1px solid var(--border);
  display:flex;align-items:center;gap:6px;padding:0 14px;
}
.logo{
  color:var(--blue);font-weight:800;font-size:14px;
  font-family:var(--font-mono);letter-spacing:-.02em;
  margin-right:6px;white-space:nowrap;
  display:flex;align-items:center;gap:6px;
}
.logo-badge{
  font-size:9px;background:var(--blue-dim);color:var(--blue);
  border:1px solid var(--blue);padding:1px 5px;border-radius:3px;
  font-weight:700;letter-spacing:.05em;
}

/* Nav links */
.nav-link{
  color:var(--text2);text-decoration:none;padding:5px 9px;
  border-radius:var(--radius-sm);font-size:12px;font-weight:500;
  transition:var(--trans);white-space:nowrap;
  display:flex;align-items:center;gap:4px;
}
.nav-link:hover{background:var(--surface3);color:var(--text)}
.nav-link.active{background:var(--blue-dim);color:var(--blue)}
.nav-link .nav-icon{font-size:11px;opacity:.8}

/* Nav separator */
.nav-sep{width:1px;height:20px;background:var(--border);margin:0 2px;flex-shrink:0}

/* Topbar right */
.topbar-right{margin-left:auto;display:flex;align-items:center;gap:8px}
.topbar-time{font-family:var(--font-mono);font-size:11px;color:var(--text3)}

/* Pulse dot (live indicator) */
.pulse-dot{
  width:7px;height:7px;border-radius:50%;
  background:var(--green);flex-shrink:0;
}
.pulse-dot.live{animation:pulse-anim 2s infinite}
.pulse-dot.stale{background:var(--yellow);animation:none}
.pulse-dot.error{background:var(--red);animation:none}
@keyframes pulse-anim{0%,100%{opacity:1;transform:scale(1)}50%{opacity:.4;transform:scale(.85)}}

/* ── Buttons ─────────────────────────────────────────────────────────────── */
.btn{
  display:inline-flex;align-items:center;gap:5px;
  padding:5px 12px;border-radius:var(--radius-sm);font-size:12px;font-weight:600;
  cursor:pointer;border:1px solid var(--border);background:var(--surface3);
  color:var(--text2);transition:var(--trans);font-family:var(--font-ui);
}
.btn:hover{border-color:var(--border3);color:var(--text);background:var(--surface4)}
.btn-primary{background:var(--blue-dim);color:var(--blue);border-color:var(--blue)}
.btn-primary:hover{background:var(--blue);color:#fff}
.btn-ghost{background:transparent;border-color:transparent;color:var(--text3)}
.btn-ghost:hover{background:var(--surface3);color:var(--text);border-color:var(--border)}
.btn-sm{padding:3px 8px;font-size:11px}
.btn-icon{padding:4px 6px;font-size:12px}

/* ── Cards / Panels ─────────────────────────────────────────────────────── */
.card{
  background:var(--surface);border:1px solid var(--border);
  border-radius:var(--radius-md);overflow:hidden;
}
.card-header{
  padding:8px 12px;background:var(--surface2);
  border-bottom:1px solid var(--border);
  display:flex;align-items:center;gap:8px;
  font-size:10px;font-weight:700;text-transform:uppercase;
  letter-spacing:.08em;color:var(--text3);
}
.card-header-actions{margin-left:auto;display:flex;gap:4px;align-items:center}
.card-body{padding:10px 12px}

/* ── Badges ──────────────────────────────────────────────────────────────── */
.badge{
  display:inline-flex;align-items:center;gap:3px;
  padding:1px 7px;border-radius:10px;font-size:9px;font-weight:700;
  letter-spacing:.04em;text-transform:uppercase;
}
.badge-live  {background:var(--green-bg);color:var(--green);border:1px solid var(--green-dim)}
.badge-bull  {background:var(--green-bg);color:var(--green)}
.badge-bear  {background:var(--red-bg);  color:var(--red)}
.badge-neut  {background:var(--yellow-dim);color:var(--yellow)}
.badge-blue  {background:var(--blue-dim);color:var(--blue)}
.badge-purple{background:#1e1440;color:var(--purple)}

/* Status pills */
.pill{
  display:inline-flex;align-items:center;gap:4px;
  padding:2px 8px;border-radius:10px;font-size:10px;font-weight:700;
}
.pill-ACTIVE    {background:#062214;color:#22c55e;border:1px solid #1a4428}
.pill-MONITORING{background:#2a1f00;color:#eab308;border:1px solid #3d2e00}
.pill-SUSPENDED {background:#1a0608;color:#ef4444;border:1px solid #4a1010}
.pill-OPEN      {background:#062214;color:#22c55e;border:1px solid #1a4428}
.pill-CLOSED    {background:#1a0608;color:#ef4444;border:1px solid #4a1010}
.pill-PRE_OPEN  {background:#2a1f00;color:#eab308;border:1px solid #3d2e00}
.pill-Asia      {background:#0d1e38;color:#7ec8ff}
.pill-London_Mid{background:#062214;color:#7effc0}
.pill-NY_Open   {background:#1e0d38;color:#c9a0ff}
.pill-NY_Late   {background:#1e1e1e;color:#aaa}

/* ── Score Bar (0-10) ────────────────────────────────────────────────────── */
.score-bar-wrap{
  position:relative;height:6px;background:var(--border);
  border-radius:3px;overflow:hidden;flex:1;
}
.score-bar-fill{height:100%;border-radius:3px;transition:width .5s ease}
.score-mid{
  position:absolute;left:50%;top:0;bottom:0;width:1px;
  background:var(--border2);pointer-events:none;
}
.score-val{
  font-family:var(--font-mono);font-weight:700;font-size:12px;
  min-width:32px;text-align:right;
}

/* ── Sentiment chips ─────────────────────────────────────────────────────── */
.sent-chip{
  display:flex;flex-direction:column;align-items:center;
  background:var(--surface);border:1px solid var(--border);
  border-radius:var(--radius-md);padding:8px 12px;
  cursor:default;transition:var(--trans);min-width:78px;
}
.sent-chip:hover{border-color:var(--border3);background:var(--surface2)}
.sent-chip.BULLISH{border-color:var(--green-dim);background:var(--green-bg)}
.sent-chip.BEARISH{border-color:var(--red-dim);background:var(--red-bg)}
.sent-chip-sym{font-family:var(--font-mono);font-weight:700;font-size:11px}
.sent-chip-score{font-size:1.1rem;font-weight:700;font-family:var(--font-mono);line-height:1.1;margin:2px 0}
.sent-chip-label{font-size:9px;text-transform:uppercase;letter-spacing:.05em}

/* ── Table ───────────────────────────────────────────────────────────────── */
.tbl{width:100%;border-collapse:collapse;font-size:12px}
.tbl th{
  padding:6px 10px;text-align:left;font-size:10px;font-weight:700;
  text-transform:uppercase;letter-spacing:.06em;color:var(--text3);
  border-bottom:1px solid var(--border);background:var(--surface2);
}
.tbl td{
  padding:7px 10px;border-bottom:1px solid var(--border);
  vertical-align:middle;
}
.tbl tr:last-child td{border:none}
.tbl tr:hover td{background:var(--surface3)}

/* ── Gauge (semicircle score) ────────────────────────────────────────────── */
.gauge-wrap{position:relative;width:80px;height:40px;overflow:hidden}
.gauge-track{
  width:80px;height:80px;border-radius:50%;
  border:6px solid var(--border);border-bottom-color:transparent;
  transform:rotate(-90deg);position:absolute;top:0;left:0;
}
.gauge-fill{
  width:80px;height:80px;border-radius:50%;
  border:6px solid var(--green);border-bottom-color:transparent;
  transform-origin:center;position:absolute;top:0;left:0;
  transition:transform .8s cubic-bezier(.34,1.56,.64,1);
}
.gauge-label{
  position:absolute;bottom:0;left:0;right:0;text-align:center;
  font-family:var(--font-mono);font-weight:700;font-size:16px;
}

/* ── Sparkline ───────────────────────────────────────────────────────────── */
.sparkline-wrap{display:inline-block;vertical-align:middle}

/* ── Forms ───────────────────────────────────────────────────────────────── */
.input{
  background:var(--surface2);border:1px solid var(--border);
  color:var(--text);padding:6px 10px;border-radius:var(--radius-sm);
  font-size:12px;outline:none;transition:var(--trans);font-family:var(--font-ui);
  width:100%;
}
.input:focus{border-color:var(--blue);box-shadow:0 0 0 2px var(--blue-glow)}
.input::placeholder{color:var(--text4)}
.select{
  background:var(--surface2);border:1px solid var(--border);
  color:var(--text);padding:5px 10px;border-radius:var(--radius-sm);
  font-size:12px;outline:none;cursor:pointer;
}
.toggle-wrap{display:flex;align-items:center;gap:8px}
.toggle{
  position:relative;width:32px;height:18px;cursor:pointer;
  background:var(--border2);border-radius:9px;transition:var(--trans);
}
.toggle.on{background:var(--blue)}
.toggle::after{
  content:'';position:absolute;top:2px;left:2px;
  width:14px;height:14px;border-radius:50%;background:#fff;
  transition:var(--trans);
}
.toggle.on::after{left:16px}

/* ── No-data placeholder ─────────────────────────────────────────────────── */
.no-data{
  color:var(--text3);text-align:center;padding:20px 12px;
  font-size:12px;font-style:italic;
}
.no-data-icon{font-size:24px;margin-bottom:6px;display:block}

/* ── Ticker bar ──────────────────────────────────────────────────────────── */
.ticker-bar{
  background:var(--surface);border-bottom:1px solid var(--border);
  padding:4px 12px;display:flex;gap:16px;overflow-x:auto;
  font-size:11px;font-family:var(--font-mono);white-space:nowrap;
}
.ticker-item{display:flex;align-items:center;gap:5px;cursor:default}
.ticker-sym{color:var(--text3);font-size:10px;font-weight:700}
.ticker-bid{color:var(--text);font-weight:700}
.ticker-chg.up{color:var(--green)}.ticker-chg.dn{color:var(--red)}

/* ── Chat bubble ─────────────────────────────────────────────────────────── */
.chat-msg{display:flex;gap:10px;margin-bottom:14px;max-width:100%}
.chat-msg.user{flex-direction:row-reverse}
.chat-avatar{
  width:30px;height:30px;border-radius:50%;flex-shrink:0;
  display:flex;align-items:center;justify-content:center;
  font-size:13px;font-weight:700;
}
.chat-avatar.bot{background:var(--blue-dim);color:var(--blue)}
.chat-avatar.user{background:var(--surface4);color:var(--text2)}
.chat-bubble{
  max-width:85%;padding:10px 13px;border-radius:var(--radius-md);
  font-size:13px;line-height:1.6;
}
.chat-msg.bot  .chat-bubble{background:var(--surface2);border:1px solid var(--border);color:var(--text)}
.chat-msg.user .chat-bubble{background:var(--blue-dim);border:1px solid var(--blue);color:var(--text)}
.chat-bubble p{margin-bottom:6px}
.chat-bubble p:last-child{margin:0}
.chat-bubble code{
  font-family:var(--font-mono);background:var(--surface4);
  padding:1px 5px;border-radius:3px;font-size:11px;color:var(--cyan);
}
.chat-bubble strong{color:var(--blue);font-weight:700}
.chat-time{font-size:9px;color:var(--text4);margin-top:4px;text-align:right}

/* ── Context panel cards (in analyst) ────────────────────────────────────── */
.ctx-card{
  background:var(--surface);border:1px solid var(--border);
  border-radius:var(--radius-md);overflow:hidden;margin-bottom:8px;
}
.ctx-card-header{
  padding:6px 10px;background:var(--surface2);border-bottom:1px solid var(--border);
  font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.07em;
  color:var(--text3);display:flex;align-items:center;gap:6px;
}
.ctx-card-body{padding:8px 10px}

/* ── Mobile: bottom nav ──────────────────────────────────────────────────── */
.mobile-nav{
  display:none;position:fixed;bottom:0;left:0;right:0;z-index:200;
  background:rgba(6,10,16,.97);border-top:1px solid var(--border);
  backdrop-filter:blur(8px);
  display:none;align-items:center;justify-content:space-around;
  height:56px;padding:0 4px;
}
.mobile-nav-item{
  display:flex;flex-direction:column;align-items:center;gap:2px;
  padding:6px 10px;color:var(--text3);text-decoration:none;
  font-size:9px;font-weight:600;text-transform:uppercase;
  letter-spacing:.04em;transition:var(--trans);border-radius:var(--radius-sm);
  min-width:48px;
}
.mobile-nav-item.active{color:var(--blue)}
.mobile-nav-item:hover{color:var(--text);background:var(--surface3)}
.mobile-nav-icon{font-size:18px;line-height:1}

/* ── Responsive breakpoints ──────────────────────────────────────────────── */
@media (max-width:768px){
  :root{--font-size-md:12px; --topbar-h:44px}
  .topbar .nav-link{display:none}         /* hide desktop nav */
  .topbar .nav-link.active{display:flex}  /* show active only */
  .topbar-logo-only{display:flex!important}
  .mobile-nav{display:flex!important}     /* show bottom nav */
  .hide-mobile{display:none!important}
  .show-mobile{display:flex!important}
  body{padding-bottom:56px}               /* space for bottom nav */
}
@media (min-width:769px){
  .mobile-nav{display:none!important}
  .hide-desktop{display:none!important}
}

/* ── Typing indicator ────────────────────────────────────────────────────── */
.typing-dots{display:inline-flex;gap:3px;align-items:center;padding:4px 0}
.typing-dots span{
  width:5px;height:5px;border-radius:50%;background:var(--text3);
  animation:typing-bounce .9s ease infinite;
}
.typing-dots span:nth-child(2){animation-delay:.15s}
.typing-dots span:nth-child(3){animation-delay:.3s}
@keyframes typing-bounce{0%,100%{transform:translateY(0);opacity:.4}50%{transform:translateY(-4px);opacity:1}}

/* ── Utility classes ─────────────────────────────────────────────────────── */
.mono{font-family:var(--font-mono)}
.text-green{color:var(--green)}.text-red{color:var(--red)}
.text-blue{color:var(--blue)}.text-yellow{color:var(--yellow)}
.text-purple{color:var(--purple)}.text-cyan{color:var(--cyan)}
.text-muted{color:var(--text3)}.text-dim{color:var(--text4)}
.fw-bold{font-weight:700}.fw-semi{font-weight:600}
.fs-xs{font-size:var(--font-size-xs)}.fs-sm{font-size:var(--font-size-sm)}
.fs-md{font-size:var(--font-size-md)}.fs-lg{font-size:var(--font-size-lg)}
.d-flex{display:flex}.d-grid{display:grid}.d-block{display:block}.d-none{display:none}
.align-center{align-items:center}.justify-between{justify-content:space-between}
.gap-1{gap:4px}.gap-2{gap:8px}.gap-3{gap:12px}.gap-4{gap:16px}
.p-1{padding:4px}.p-2{padding:8px}.p-3{padding:12px}.p-4{padding:16px}
.mt-1{margin-top:4px}.mt-2{margin-top:8px}.mt-3{margin-top:12px}
.mb-1{margin-bottom:4px}.mb-2{margin-bottom:8px}.mb-3{margin-bottom:12px}
.w-full{width:100%}.flex-1{flex:1}.overflow-hidden{overflow:hidden}
.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.uppercase{text-transform:uppercase}.capitalize{text-transform:capitalize}
.rounded{border-radius:var(--radius-md)}.rounded-sm{border-radius:var(--radius-sm)}
.border-b{border-bottom:1px solid var(--border)}
