\r\n /* Bloomberg Terminal Color Palette & Typography */\r\n :root {\r\n --bg-color: #000000;\r\n --panel-bg: #0d0d0d;\r\n --border-color: #333333;\r\n --text-primary: #ff9900; /* Classic Amber */\r\n --text-secondary: #00ff00; /* Bright Green */\r\n --text-muted: #00ffff; /* Cyan indicators */\r\n --text-white: #ffffff;\r\n --text-alert: #ff0000; /* Red */\r\n --font-terminal: 'Courier New', Courier, monospace;\r\n }\r\n\r\n * {\r\n box-sizing: border-box;\r\n margin: 0;\r\n padding: 0;\r\n }\r\n\r\n body {\r\n background-color: var(--bg-color);\r\n color: var(--text-primary);\r\n font-family: var(--font-terminal);\r\n font-size: 13px;\r\n height: 100vh;\r\n display: flex;\r\n flex-direction: column;\r\n overflow: hidden;\r\n }\r\n\r\n /* Top Command Bar */\r\n .terminal-header {\r\n background-color: #1a1a1a;\r\n border-bottom: 2px solid var(--border-color);\r\n padding: 5px 10px;\r\n display: flex;\r\n align-items: center;\r\n gap: 15px;\r\n height: 45px;\r\n }\r\n\r\n .command-label {\r\n color: var(--text-white);\r\n font-weight: bold;\r\n letter-spacing: 1px;\r\n }\r\n\r\n .command-input-wrapper {\r\n flex-grow: 1;\r\n display: flex;\r\n align-items: center;\r\n background-color: #000000;\r\n border: 1px solid var(--text-primary);\r\n padding-left: 10px;\r\n }\r\n\r\n .command-prompt {\r\n color: var(--text-secondary);\r\n font-weight: bold;\r\n margin-right: 5px;\r\n }\r\n\r\n .command-input {\r\n width: 100%;\r\n background: transparent;\r\n border: none;\r\n color: var(--text-white);\r\n font-family: var(--font-terminal);\r\n font-size: 14px;\r\n outline: none;\r\n padding: 5px 0;\r\n text-transform: uppercase;\r\n }\r\n\r\n .connection-status {\r\n color: var(--text-secondary);\r\n font-size: 11px;\r\n white-space: nowrap;\r\n }\r\n\r\n /* Terminal Grid Layout */\r\n .terminal-grid {\r\n display: grid;\r\n grid-template-columns: repeat(12, 1fr);\r\n grid-template-rows: repeat(12, 1fr);\r\n flex-grow: 1;\r\n gap: 4px;\r\n padding: 4px;\r\n background-color: #050505;\r\n }\r\n\r\n /* Window Component Layouts */\r\n .panel {\r\n background-color: var(--panel-bg);\r\n border: 1px solid var(--border-color);\r\n display: flex;\r\n flex-direction: column;\r\n overflow: hidden;\r\n }\r\n\r\n .panel-header {\r\n background-color: #111111;\r\n border-bottom: 1px solid var(--border-color);\r\n padding: 4px 8px;\r\n display: flex;\r\n justify-content: space-between;\r\n align-items: center;\r\n font-weight: bold;\r\n font-size: 11px;\r\n color: var(--text-white);\r\n }\r\n\r\n .panel-title {\r\n color: var(--text-muted);\r\n }\r\n\r\n .panel-body {\r\n flex-grow: 1;\r\n padding: 8px;\r\n overflow: auto;\r\n position: relative;\r\n }\r\n\r\n /* Financial Data Utilities */\r\n .data-table {\r\n width: 100%;\r\n border-collapse: collapse;\r\n text-align: left;\r\n background-color: rgb(40,40,40) !important;\r\n }\r\n\r\n .data-table th {\r\n color: var(--text-white);\r\n border-bottom: 1px solid var(--border-color);\r\n font-size: 11px;\r\n padding-bottom: 4px;\r\n background-color: rgb(40,40,40) !important;\r\n }\r\n\r\n .data-table td {\r\n padding: 5px 0;\r\n font-size: 12px;\r\n background-color: rgb(40,40,40) !important;\r\n border-width: 1px !important;\r\n }\r\n\r\n .pos-value { color: var(--text-secondary); }\r\n .neg-value { color: var(--text-alert); }\r\n .amber-value { color: var(--text-primary); }\r\n\r\n /* Flashing Animation Classes for Simulated Live Feeds */\r\n @keyframes flash-green {\r\n 0% { background-color: rgba(0, 255, 0, 0.4); }\r\n 100% { background-color: transparent; }\r\n }\r\n\r\n @keyframes flash-red {\r\n 0% { background-color: rgba(255, 0, 0, 0.4); }\r\n 100% { background-color: transparent; }\r\n }\r\n\r\n .up-flash { animation: flash-green 0.6s ease-out; }\r\n .down-flash { animation: flash-red 0.6s ease-out; }\r\n\r\n /* Specific Panel Positioning */\r\n .panel-equity-glance { grid-column: span 4; grid-row: span 4; }\r\n .panel-main-chart { grid-column: span 8; grid-row: span 7; }\r\n .panel-ticker-tape { grid-column: span 4; grid-row: span 3; }\r\n .panel-news-feed { grid-column: span 4; grid-row: span 5; }\r\n .panel-secondary-chart { grid-column: span 4; grid-row: span 5; }\r\n .panel-order-book { grid-column: span 4; grid-row: span 5; }\r\n\r\n /* Custom Scrollbars */\r\n ::-webkit-scrollbar { width: 6px; height: 6px; }\r\n ::-webkit-scrollbar-track { background: #000; }\r\n ::-webkit-scrollbar-thumb { background: #222; }\r\n ::-webkit-scrollbar-thumb:hover { background: #444; }\r\n \r\n\r\n\r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n
APPLE INC
\r\n
\r\n | PX_LAST | 182.52 | CHG | +1.24 |
\r\n | OPEN | 181.10 | % CHG | +0.68% |
\r\n | HIGH | 183.00 | VOLUME | 52.4M |
\r\n | LOW | 180.88 | P/E MULT | 28.4 |
\r\n | 52W HIGH | 199.62 | MARKET CAP | 2.85T |
\r\n
\r\n
\r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n
\r\n \r\n | INDEX | LAST | NET CHG | % CHG |
\r\n \r\n \r\n | SPX (S&P 500) | 5062.20 | +14.30 | +0.28% |
\r\n | CCMP (NASDAQ) | 16012.44 | -42.10 | -0.26% |
\r\n | INDU (DOW JONES) | 39064.12 | +182.00 | +0.47% |
\r\n \r\n
\r\n
\r\n \r\n\r\n \r\n \r\n \r\n \r\n
09:54 *FED'S COOK: POLICY IS APPROPRIATELY RESTRICTIVE
\r\n
09:52 AAPL Announces structural updates to Cloud Services protocols
\r\n
09:47 Crude Oil benchmarks drop 0.4% following production surplus reports
\r\n
09:41 US 10-Year yield stabilizes at 4.26% ahead of auction data
\r\n
\r\n \r\n\r\n\r\n***script class=\"highcharts-linechart\" style=\"height:400px;\" type=\"application/json\" insert=\"mainChart\">\r\n{\r\n \"chart\": {\r\n \"type\": \"line\"\r\n },\r\n \"xAxis\": {\r\n \"title\": {\r\n \"text\": \"\"\r\n }\r\n },\r\n \"yAxis\": {\r\n \"title\": {\r\n \"text\": \"\"\r\n }\r\n },\r\n \"title\": {\r\n \"text\": \"\"\r\n },\r\n \"subtitle\": {\r\n \"text\": \"\"\r\n },\r\n \"tooltip\": {},\r\n \"legend\": {\r\n \"layout\": \"vertical\",\r\n \"align\": \"right\",\r\n \"verticalAlign\": \"top\",\r\n \"borderWidth\": 0\r\n },\r\n \"series\": [\r\n {\r\n \"properties\": [\r\n \"price\"\r\n ],\r\n \"name\": \"series\",\r\n \"data\": \"prices\",\r\n \"type\": \"line\"\r\n }\r\n ] \r\n} \r\n\r\n{\r\n colors: [\"#DDDF0D\", \"#55BF3B\", \"#DF5353\", \"#7798BF\", \"#aaeeee\", \"#ff0066\", \"#eeaaee\",\r\n\t\t\"#55BF3B\", \"#DF5353\", \"#7798BF\", \"#aaeeee\"],\r\n chart: {\r\n backgroundColor: {\r\n linearGradient: [0, 0, 250, 500],\r\n stops: [\r\n\t\t\t\t[0, 'rgb(48, 96, 48)'],\r\n\t\t\t\t[1, 'rgb(0, 0, 0)']\r\n ]\r\n },\r\n borderColor: '#000000',\r\n borderWidth: 2,\r\n className: 'dark-container',\r\n plotBackgroundColor: 'rgba(255, 255, 255, .1)',\r\n plotBorderColor: '#CCCCCC',\r\n plotBorderWidth: 1\r\n },\r\n title: {\r\n style: {\r\n color: '#C0C0C0',\r\n font: 'bold 16px \"Trebuchet MS\", Verdana, sans-serif'\r\n }\r\n },\r\n subtitle: {\r\n style: {\r\n color: '#666666',\r\n font: 'bold 12px \"Trebuchet MS\", Verdana, sans-serif'\r\n }\r\n },\r\n xAxis: {\r\n gridLineColor: '#333333',\r\n gridLineWidth: 1,\r\n labels: {\r\n style: {\r\n color: '#A0A0A0'\r\n }\r\n },\r\n lineColor: '#A0A0A0',\r\n tickColor: '#A0A0A0',\r\n title: {\r\n style: {\r\n color: '#CCC',\r\n fontWeight: 'bold',\r\n fontSize: '12px',\r\n fontFamily: 'Trebuchet MS, Verdana, sans-serif'\r\n\r\n }\r\n }\r\n },\r\n yAxis: {\r\n gridLineColor: '#333333',\r\n labels: {\r\n style: {\r\n color: '#A0A0A0'\r\n }\r\n },\r\n lineColor: '#A0A0A0',\r\n minorTickInterval: null,\r\n tickColor: '#A0A0A0',\r\n tickWidth: 1,\r\n title: {\r\n style: {\r\n color: '#CCC',\r\n fontWeight: 'bold',\r\n fontSize: '12px',\r\n fontFamily: 'Trebuchet MS, Verdana, sans-serif'\r\n }\r\n }\r\n },\r\n tooltip: {\r\n backgroundColor: 'rgba(0, 0, 0, 0.75)',\r\n style: {\r\n color: '#F0F0F0'\r\n }\r\n },\r\n toolbar: {\r\n itemStyle: {\r\n color: 'silver'\r\n }\r\n },\r\n plotOptions: {\r\n line: {\r\n dataLabels: {\r\n color: '#CCC'\r\n },\r\n marker: {\r\n lineColor: '#333'\r\n }\r\n },\r\n spline: {\r\n marker: {\r\n lineColor: '#333'\r\n }\r\n },\r\n scatter: {\r\n marker: {\r\n lineColor: '#333'\r\n }\r\n },\r\n candlestick: {\r\n lineColor: 'white'\r\n }\r\n },\r\n legend: {\r\n itemStyle: {\r\n font: '9pt Trebuchet MS, Verdana, sans-serif',\r\n color: '#A0A0A0'\r\n },\r\n itemHoverStyle: {\r\n color: '#FFF'\r\n },\r\n itemHiddenStyle: {\r\n color: '#444'\r\n }\r\n },\r\n credits: {\r\n style: {\r\n color: '#666'\r\n }\r\n },\r\n labels: {\r\n style: {\r\n color: '#CCC'\r\n }\r\n },\r\n\r\n\r\n navigation: {\r\n buttonOptions: {\r\n symbolStroke: '#DDDDDD',\r\n hoverSymbolStroke: '#FFFFFF',\r\n theme: {\r\n fill: {\r\n linearGradient: { x1: 0, y1: 0, x2: 0, y2: 1 },\r\n stops: [\r\n\t\t\t\t\t\t[0.4, '#606060'],\r\n\t\t\t\t\t\t[0.6, '#333333']\r\n ]\r\n },\r\n stroke: '#000000'\r\n }\r\n }\r\n },\r\n\r\n // scroll charts\r\n rangeSelector: {\r\n buttonTheme: {\r\n fill: {\r\n linearGradient: { x1: 0, y1: 0, x2: 0, y2: 1 },\r\n stops: [\r\n\t\t\t\t\t[0.4, '#888'],\r\n\t\t\t\t\t[0.6, '#555']\r\n ]\r\n },\r\n stroke: '#000000',\r\n style: {\r\n color: '#CCC',\r\n fontWeight: 'bold'\r\n },\r\n states: {\r\n hover: {\r\n fill: {\r\n linearGradient: { x1: 0, y1: 0, x2: 0, y2: 1 },\r\n stops: [\r\n\t\t\t\t\t\t\t[0.4, '#BBB'],\r\n\t\t\t\t\t\t\t[0.6, '#888']\r\n ]\r\n },\r\n stroke: '#000000',\r\n style: {\r\n color: 'white'\r\n }\r\n },\r\n select: {\r\n fill: {\r\n linearGradient: { x1: 0, y1: 0, x2: 0, y2: 1 },\r\n stops: [\r\n\t\t\t\t\t\t\t[0.1, '#000'],\r\n\t\t\t\t\t\t\t[0.3, '#333']\r\n ]\r\n },\r\n stroke: '#000000',\r\n style: {\r\n color: 'yellow'\r\n }\r\n }\r\n }\r\n },\r\n inputStyle: {\r\n backgroundColor: '#333',\r\n color: 'silver'\r\n },\r\n labelStyle: {\r\n color: 'silver'\r\n }\r\n },\r\n\r\n navigator: {\r\n handles: {\r\n backgroundColor: '#666',\r\n borderColor: '#AAA'\r\n },\r\n outlineColor: '#CCC',\r\n maskFill: 'rgba(16, 16, 16, 0.5)',\r\n series: {\r\n color: '#7798BF',\r\n lineColor: '#A6C7ED'\r\n }\r\n },\r\n\r\n scrollbar: {\r\n barBackgroundColor: {\r\n linearGradient: { x1: 0, y1: 0, x2: 0, y2: 1 },\r\n stops: [\r\n [0.4, '#888'],\r\n [0.6, '#555']\r\n ]\r\n },\r\n barBorderColor: '#CCC',\r\n buttonArrowColor: '#CCC',\r\n buttonBackgroundColor: {\r\n linearGradient: { x1: 0, y1: 0, x2: 0, y2: 1 },\r\n stops: [\r\n [0.4, '#888'],\r\n [0.6, '#555']\r\n ]\r\n },\r\n buttonBorderColor: '#CCC',\r\n rifleColor: '#FFF',\r\n trackBackgroundColor: {\r\n linearGradient: { x1: 0, y1: 0, x2: 0, y2: 1 },\r\n stops: [\r\n\t\t\t\t[0, '#000'],\r\n\t\t\t\t[1, '#333']\r\n ]\r\n },\r\n trackBorderColor: '#666'\r\n },\r\n\r\n // special colors for some of the\r\n legendBackgroundColor: 'rgba(0, 0, 0, 0.5)',\r\n background2: 'rgb(35, 35, 70)',\r\n dataLabelsColor: '#444',\r\n textColor: '#C0C0C0',\r\n maskColor: 'rgba(255,255,255,0.3)'\r\n}\r\n{\r\n resolve();\r\n }, time)\r\n });\r\n}\r\n\r\nasync function nextPrice(){\r\n let time = Math.round(Math.random()*8)\r\n await $wait(time *1000);\r\n let last = prices[prices.length-1]\r\n let price = {\r\n price:last.price + Math.round(Math.random()*5 - 2)\r\n }\r\n prices.push(price)\r\n if(prices.length>300)prices.shift();\r\n val.set('prices', prices);\r\n nextPrice();\r\n}\r\n\r\nnextPrice();\r\n","config":{}},"url":"/app/javascript/v1.0.0/script.mjs"}];
let text = JSON.stringify(configs)
text = text.replaceAll('***script','