{"id":28,"date":"2026-06-19T09:06:09","date_gmt":"2026-06-19T09:06:09","guid":{"rendered":"https:\/\/hub.webcoreai.es\/?page_id=28"},"modified":"2026-06-19T09:21:35","modified_gmt":"2026-06-19T09:21:35","slug":"www","status":"publish","type":"page","link":"https:\/\/hub.webcoreai.es\/","title":{"rendered":"www"},"content":{"rendered":"\n<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n<meta charset=\"UTF-8\">\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n<title>WEBCORE \/\/ SYSTEM INIT<\/title>\n<style>\n  @import url('https:\/\/fonts.googleapis.com\/css2?family=Share+Tech+Mono&family=VT323&display=swap');\n\n  :root {\n    --green: #00ff41;\n    --dim-green: #00aa2a;\n    --dark-green: #003b10;\n    --bg: #000d03;\n    --amber: #ffb000;\n    --red: #ff2222;\n    --blue: #00d4ff;\n  }\n\n  * { margin: 0; padding: 0; box-sizing: border-box; }\n\n  body {\n    background: var(--bg);\n    color: var(--green);\n    font-family: 'Share Tech Mono', monospace;\n    font-size: 14px;\n    line-height: 1.6;\n    overflow: hidden;\n    height: 100vh;\n    width: 100vw;\n  }\n\n  \/* SCANLINES *\/\n  body::after {\n    content: '';\n    position: fixed;\n    inset: 0;\n    background: repeating-linear-gradient(\n      0deg,\n      transparent,\n      transparent 2px,\n      rgba(0, 0, 0, 0.15) 2px,\n      rgba(0, 0, 0, 0.15) 4px\n    );\n    pointer-events: none;\n    z-index: 9999;\n  }\n\n  \/* MATRIX CANVAS *\/\n  #matrix {\n    position: fixed;\n    inset: 0;\n    opacity: 0.04;\n    z-index: 0;\n  }\n\n  \/* GLOW EFFECT *\/\n  .glow {\n    text-shadow:\n      0 0 4px var(--green),\n      0 0 10px var(--green),\n      0 0 20px var(--green);\n  }\n\n  .glow-amber {\n    text-shadow:\n      0 0 4px var(--amber),\n      0 0 10px var(--amber);\n    color: var(--amber);\n  }\n\n  .glow-red {\n    text-shadow: 0 0 8px var(--red), 0 0 20px var(--red);\n    color: var(--red);\n  }\n\n  .glow-blue {\n    text-shadow: 0 0 8px var(--blue), 0 0 20px var(--blue);\n    color: var(--blue);\n  }\n\n  \/* MAIN TERMINAL *\/\n  #terminal {\n    position: relative;\n    z-index: 10;\n    width: 100%;\n    height: 100vh;\n    display: flex;\n    flex-direction: column;\n    padding: 20px;\n  }\n\n  \/* TOP BAR *\/\n  #topbar {\n    display: flex;\n    justify-content: space-between;\n    align-items: center;\n    border-bottom: 1px solid var(--dim-green);\n    padding-bottom: 8px;\n    margin-bottom: 16px;\n    font-size: 11px;\n    color: var(--dim-green);\n  }\n\n  #topbar .title {\n    font-family: 'VT323', monospace;\n    font-size: 20px;\n    color: var(--green);\n  }\n\n  #topbar .title span { color: var(--blue); }\n\n  #clock {\n    color: var(--amber);\n    text-shadow: 0 0 6px var(--amber);\n  }\n\n  \/* SCREEN SPLIT *\/\n  #screen {\n    display: flex;\n    gap: 20px;\n    flex: 1;\n    overflow: hidden;\n  }\n\n  \/* MAIN LOG PANEL *\/\n  #log-panel {\n    flex: 1;\n    display: flex;\n    flex-direction: column;\n    overflow: hidden;\n  }\n\n  #log-output {\n    flex: 1;\n    overflow-y: auto;\n    padding-right: 8px;\n    scroll-behavior: smooth;\n  }\n\n  #log-output::-webkit-scrollbar { width: 4px; }\n  #log-output::-webkit-scrollbar-track { background: #000; }\n  #log-output::-webkit-scrollbar-thumb { background: var(--dim-green); }\n\n  .log-line {\n    display: block;\n    white-space: pre-wrap;\n    word-break: break-all;\n    animation: fadeIn 0.1s ease;\n    min-height: 1.6em;\n  }\n\n  @keyframes fadeIn {\n    from { opacity: 0; transform: translateX(-4px); }\n    to   { opacity: 1; transform: translateX(0); }\n  }\n\n  .prompt { color: var(--dim-green); }\n  .prompt span { color: var(--green); }\n  .ok    { color: var(--green); }\n  .warn  { color: var(--amber); }\n  .err   { color: var(--red); }\n  .info  { color: var(--blue); }\n  .dim   { color: #2a6e3a; }\n  .white { color: #ccffcc; }\n\n  \/* PROGRESS BAR *\/\n  .progress-wrap {\n    display: flex;\n    align-items: center;\n    gap: 10px;\n    margin: 2px 0;\n  }\n\n  .progress-bar {\n    flex: 1;\n    height: 10px;\n    background: #001a05;\n    border: 1px solid var(--dim-green);\n    position: relative;\n    overflow: hidden;\n  }\n\n  .progress-fill {\n    height: 100%;\n    background: linear-gradient(90deg, var(--dark-green), var(--green));\n    box-shadow: 0 0 8px var(--green);\n    transition: width 0.05s linear;\n    position: relative;\n  }\n\n  .progress-fill::after {\n    content: '';\n    position: absolute;\n    right: 0;\n    top: 0;\n    height: 100%;\n    width: 20px;\n    background: rgba(255,255,255,0.3);\n    animation: shimmer 0.5s linear infinite;\n  }\n\n  @keyframes shimmer {\n    from { opacity: 1; }\n    to   { opacity: 0; }\n  }\n\n  .progress-pct {\n    width: 40px;\n    text-align: right;\n    font-size: 12px;\n    color: var(--green);\n  }\n\n  \/* RIGHT SIDE PANEL *\/\n  #side-panel {\n    width: 240px;\n    display: flex;\n    flex-direction: column;\n    gap: 12px;\n    border-left: 1px solid #003b10;\n    padding-left: 16px;\n  }\n\n  .side-box {\n    border: 1px solid #003b10;\n    padding: 10px;\n    font-size: 11px;\n  }\n\n  .side-box h3 {\n    font-size: 11px;\n    color: var(--dim-green);\n    border-bottom: 1px solid #002a0a;\n    margin-bottom: 8px;\n    padding-bottom: 4px;\n    letter-spacing: 2px;\n    text-transform: uppercase;\n  }\n\n  .metric {\n    display: flex;\n    justify-content: space-between;\n    margin-bottom: 4px;\n  }\n\n  .metric-val { color: var(--green); }\n\n  .mini-bar {\n    height: 4px;\n    background: #001a05;\n    margin: 2px 0 6px;\n    border: 1px solid #002a0a;\n  }\n\n  .mini-fill {\n    height: 100%;\n    background: var(--green);\n    box-shadow: 0 0 4px var(--green);\n  }\n\n  \/* ASCII LOGO *\/\n  #ascii-logo {\n    font-family: 'VT323', monospace;\n    font-size: 13px;\n    line-height: 1.2;\n    color: var(--green);\n    text-shadow: 0 0 6px var(--green);\n    white-space: pre;\n    margin-bottom: 4px;\n  }\n\n  \/* BOTTOM STATUS *\/\n  #statusbar {\n    border-top: 1px solid var(--dim-green);\n    padding-top: 8px;\n    margin-top: 8px;\n    display: flex;\n    justify-content: space-between;\n    font-size: 11px;\n    color: var(--dim-green);\n  }\n\n  #status-text { color: var(--amber); }\n\n  \/* CURSOR *\/\n  .cursor {\n    display: inline-block;\n    width: 8px;\n    height: 14px;\n    background: var(--green);\n    box-shadow: 0 0 8px var(--green);\n    animation: blink 0.7s step-end infinite;\n    vertical-align: middle;\n    margin-left: 2px;\n  }\n\n  @keyframes blink {\n    0%, 100% { opacity: 1; }\n    50%       { opacity: 0; }\n  }\n\n  \/* GLITCH on ASCII *\/\n  @keyframes glitch {\n    0%  { clip-path: inset(40% 0 61% 0); transform: translate(-2px, 0); }\n    20% { clip-path: inset(92% 0 1% 0);  transform: translate(2px, 0); }\n    40% { clip-path: inset(43% 0 1% 0);  transform: translate(1px, 0); }\n    60% { clip-path: inset(25% 0 58% 0); transform: translate(-1px, 0); }\n    80% { clip-path: inset(54% 0 7% 0);  transform: translate(2px, 0); }\n    100%{ clip-path: inset(58% 0 43% 0); transform: translate(-2px, 0); }\n  }\n\n  .glitch-wrap { position: relative; display: inline-block; }\n  .glitch-wrap::before,\n  .glitch-wrap::after {\n    content: attr(data-text);\n    position: absolute;\n    top: 0; left: 0;\n    width: 100%;\n    white-space: pre;\n    font-family: 'VT323', monospace;\n    font-size: 13px;\n    line-height: 1.2;\n  }\n  .glitch-wrap::before {\n    color: #ff0000;\n    animation: glitch 3s infinite linear alternate-reverse;\n    opacity: 0.4;\n  }\n  .glitch-wrap::after {\n    color: #00ffff;\n    animation: glitch 2s infinite linear alternate;\n    opacity: 0.3;\n  }\n\n  \/* FINAL SCREEN *\/\n  #final-screen {\n    display: none;\n    position: fixed;\n    inset: 0;\n    z-index: 100;\n    background: var(--bg);\n    flex-direction: column;\n    align-items: center;\n    justify-content: center;\n    text-align: center;\n  }\n\n  #final-screen.active { display: flex; }\n\n  #final-ascii {\n    font-family: 'VT323', monospace;\n    font-size: clamp(12px, 2vw, 18px);\n    color: var(--green);\n    text-shadow: 0 0 10px var(--green), 0 0 30px var(--green);\n    white-space: pre;\n    line-height: 1.1;\n    animation: pulse 2s ease-in-out infinite;\n  }\n\n  @keyframes pulse {\n    0%, 100% { opacity: 1; }\n    50%       { opacity: 0.8; }\n  }\n\n  #final-sub {\n    margin-top: 30px;\n    font-size: 13px;\n    color: var(--dim-green);\n    letter-spacing: 3px;\n  }\n\n  #final-link {\n    margin-top: 20px;\n    font-family: 'VT323', monospace;\n    font-size: 28px;\n    color: var(--blue);\n    text-shadow: 0 0 10px var(--blue), 0 0 30px var(--blue);\n    text-decoration: none;\n    letter-spacing: 4px;\n    animation: linkpulse 1.5s ease-in-out infinite;\n    display: block;\n  }\n\n  @keyframes linkpulse {\n    0%, 100% { text-shadow: 0 0 10px var(--blue), 0 0 30px var(--blue); }\n    50%       { text-shadow: 0 0 20px var(--blue), 0 0 60px var(--blue), 0 0 100px var(--blue); }\n  }\n\n  #final-hint {\n    margin-top: 12px;\n    font-size: 11px;\n    color: #1a5c2a;\n    letter-spacing: 2px;\n  }\n\n  #restart-btn {\n    margin-top: 40px;\n    background: none;\n    border: 1px solid var(--dim-green);\n    color: var(--dim-green);\n    font-family: 'Share Tech Mono', monospace;\n    font-size: 11px;\n    padding: 6px 20px;\n    cursor: pointer;\n    letter-spacing: 2px;\n    transition: all 0.2s;\n  }\n\n  #restart-btn:hover {\n    border-color: var(--green);\n    color: var(--green);\n    box-shadow: 0 0 10px var(--green);\n  }\n\n  \/* BOOT FLASH *\/\n  @keyframes bootflash {\n    0%   { opacity: 0; }\n    10%  { opacity: 1; }\n    90%  { opacity: 1; }\n    100% { opacity: 0; }\n  }\n\n  #boot-flash {\n    display: none;\n    position: fixed;\n    inset: 0;\n    background: var(--green);\n    z-index: 200;\n    opacity: 0;\n  }\n\n  #boot-flash.active {\n    display: block;\n    animation: bootflash 0.6s ease forwards;\n  }\n<\/style>\n<\/head>\n<body>\n\n<canvas id=\"matrix\"><\/canvas>\n<div id=\"boot-flash\"><\/div>\n\n<!-- MAIN TERMINAL -->\n<div id=\"terminal\">\n  <div id=\"topbar\">\n    <div>\n      <span class=\"title\">WEBCORE<span>\/\/<\/span>OS<\/span>\n      &nbsp;&nbsp;v2.4.1-insider\n    <\/div>\n    <div id=\"clock\"><\/div>\n    <div>SESSION: WC-<span style=\"color:var(--green)\">7F3A2B<\/span> &nbsp;|&nbsp; TTY0<\/div>\n  <\/div>\n\n  <div id=\"screen\">\n    <div id=\"log-panel\">\n      <div id=\"log-output\"><\/div>\n      <div id=\"statusbar\">\n        <div id=\"status-text\">INITIALIZING&#8230;<\/div>\n        <div id=\"net-status\">NET: CONNECTED &nbsp;|&nbsp; PING: <span id=\"ping\">&#8212;<\/span>ms<\/div>\n        <div>[ESC] ABORT &nbsp;|&nbsp; [F1] HELP<\/div>\n      <\/div>\n    <\/div>\n\n    <div id=\"side-panel\">\n      <div id=\"ascii-logo\">\n<div class=\"glitch-wrap\" data-text=\"\u2588\u2588\u2557    \u2588\u2588\u2557 \u2588\u2588\u2588\u2588\u2588\u2588\u2557\n\u2588\u2588\u2551    \u2588\u2588\u2551\u2588\u2588\u2554\u2550\u2550\u2550\u2550\u255d\n\u2588\u2588\u2551 \u2588\u2557 \u2588\u2588\u2551\u2588\u2588\u2551\n\u2588\u2588\u2551\u2588\u2588\u2588\u2557\u2588\u2588\u2551\u2588\u2588\u2551\n\u255a\u2588\u2588\u2588\u2554\u2588\u2588\u2588\u2554\u255d\u255a\u2588\u2588\u2588\u2588\u2588\u2588\u2557\n \u255a\u2550\u2550\u255d\u255a\u2550\u2550\u255d  \u255a\u2550\u2550\u2550\u2550\u2550\u255d\">\u2588\u2588\u2557    \u2588\u2588\u2557 \u2588\u2588\u2588\u2588\u2588\u2588\u2557\n\u2588\u2588\u2551    \u2588\u2588\u2551\u2588\u2588\u2554\u2550\u2550\u2550\u2550\u255d\n\u2588\u2588\u2551 \u2588\u2557 \u2588\u2588\u2551\u2588\u2588\u2551\n\u2588\u2588\u2551\u2588\u2588\u2588\u2557\u2588\u2588\u2551\u2588\u2588\u2551\n\u255a\u2588\u2588\u2588\u2554\u2588\u2588\u2588\u2554\u255d\u255a\u2588\u2588\u2588\u2588\u2588\u2588\u2557\n \u255a\u2550\u2550\u255d\u255a\u2550\u2550\u255d  \u255a\u2550\u2550\u2550\u2550\u2550\u255d<\/div>\n      <\/div>\n\n      <div class=\"side-box\">\n        <h3>\/\/ SYSTEM<\/h3>\n        <div class=\"metric\"><span>CPU<\/span><span class=\"metric-val\" id=\"cpu-val\">0%<\/span><\/div>\n        <div class=\"mini-bar\"><div class=\"mini-fill\" id=\"cpu-bar\" style=\"width:0%\"><\/div><\/div>\n        <div class=\"metric\"><span>MEM<\/span><span class=\"metric-val\" id=\"mem-val\">0%<\/span><\/div>\n        <div class=\"mini-bar\"><div class=\"mini-fill\" id=\"mem-bar\" style=\"width:0%\"><\/div><\/div>\n        <div class=\"metric\"><span>NET I\/O<\/span><span class=\"metric-val\" id=\"net-val\">0 KB\/s<\/span><\/div>\n        <div class=\"mini-bar\"><div class=\"mini-fill\" id=\"net-bar\" style=\"width:0%\"><\/div><\/div>\n        <div class=\"metric\"><span>DISK<\/span><span class=\"metric-val\" id=\"disk-val\">0%<\/span><\/div>\n        <div class=\"mini-bar\"><div class=\"mini-fill\" id=\"disk-bar\" style=\"width:0%\"><\/div><\/div>\n      <\/div>\n\n      <div class=\"side-box\">\n        <h3>\/\/ MODULES<\/h3>\n        <div id=\"module-list\" style=\"font-size:11px; color:#2a6e3a;\">\n          <div>[ ] CORE ENGINE<\/div>\n          <div>[ ] CIPHER LAYER<\/div>\n          <div>[ ] MESH NET<\/div>\n          <div>[ ] AI DAEMON<\/div>\n          <div>[ ] WC PROTOCOL<\/div>\n        <\/div>\n      <\/div>\n\n      <div class=\"side-box\">\n        <h3>\/\/ UPLINK<\/h3>\n        <div style=\"font-size:10px; color:#1a5c2a;\">\n          <div>NODE: webcoreai.es<\/div>\n          <div>PROTO: HTTPS\/2<\/div>\n          <div>LATENCY: <span id=\"latency-val\" style=\"color:var(--green)\">&#8212;<\/span>ms<\/div>\n          <div style=\"margin-top:6px; color:var(--dim-green)\">STATUS: <span id=\"uplink-status\">OFFLINE<\/span><\/div>\n        <\/div>\n      <\/div>\n    <\/div>\n  <\/div>\n<\/div>\n\n<!-- FINAL SCREEN -->\n<div id=\"final-screen\">\n  <div id=\"final-ascii\">\n\u2588\u2588\u2557    \u2588\u2588\u2557\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2557\u2588\u2588\u2588\u2588\u2588\u2588\u2557  \u2588\u2588\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2557     \u2588\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2557\n\u2588\u2588\u2551    \u2588\u2588\u2551\u2588\u2588\u2554\u2550\u2550\u2550\u2550\u255d\u2588\u2588\u2554\u2550\u2550\u2588\u2588\u2557\u2588\u2588\u2554\u2550\u2550\u2550\u2550\u255d\u2588\u2588\u2554\u2550\u2550\u2550\u2588\u2588\u2557\u2588\u2588\u2554\u2550\u2550\u2588\u2588\u2557\u2588\u2588\u2554\u2550\u2550\u2550\u2550\u255d    \u2588\u2588\u2554\u2550\u2550\u2588\u2588\u2557\u2588\u2588\u2551\n\u2588\u2588\u2551 \u2588\u2557 \u2588\u2588\u2551\u2588\u2588\u2588\u2588\u2588\u2557  \u2588\u2588\u2588\u2588\u2588\u2588\u2554\u255d\u2588\u2588\u2551     \u2588\u2588\u2551   \u2588\u2588\u2551\u2588\u2588\u2588\u2588\u2588\u2588\u2554\u255d\u2588\u2588\u2588\u2588\u2588\u2557      \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2551\u2588\u2588\u2551\n\u2588\u2588\u2551\u2588\u2588\u2588\u2557\u2588\u2588\u2551\u2588\u2588\u2554\u2550\u2550\u255d  \u2588\u2588\u2554\u2550\u2550\u2588\u2588\u2557\u2588\u2588\u2551     \u2588\u2588\u2551   \u2588\u2588\u2551\u2588\u2588\u2554\u2550\u2550\u2588\u2588\u2557\u2588\u2588\u2554\u2550\u2550\u255d      \u2588\u2588\u2554\u2550\u2550\u2588\u2588\u2551\u2588\u2588\u2551\n\u255a\u2588\u2588\u2588\u2554\u2588\u2588\u2588\u2554\u255d\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2557\u2588\u2588\u2588\u2588\u2588\u2588\u2554\u255d\u255a\u2588\u2588\u2588\u2588\u2588\u2588\u2557\u255a\u2588\u2588\u2588\u2588\u2588\u2588\u2554\u255d\u2588\u2588\u2551  \u2588\u2588\u2551\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2557    \u2588\u2588\u2551  \u2588\u2588\u2551\u2588\u2588\u2551\n \u255a\u2550\u2550\u255d\u255a\u2550\u2550\u255d \u255a\u2550\u2550\u2550\u2550\u2550\u2550\u255d\u255a\u2550\u2550\u2550\u2550\u2550\u255d  \u255a\u2550\u2550\u2550\u2550\u2550\u255d \u255a\u2550\u2550\u2550\u2550\u2550\u255d \u255a\u2550\u255d  \u255a\u2550\u255d\u255a\u2550\u2550\u2550\u2550\u2550\u2550\u255d   \u255a\u2550\u255d  \u255a\u2550\u255d\u255a\u2550\u255d<\/div>\n  <div id=\"final-sub\">\/\/ SYSTEM READY \u2014 INSIDER ACCESS GRANTED \/\/<\/div>\n  <a id=\"final-link\" href=\"https:\/\/webcoreai.es\" target=\"_blank\">\u27a4 webcoreai.es<\/a>\n  <div id=\"final-hint\">LEARN MORE \u2014 ENTER THE NETWORK<\/div>\n  <button id=\"restart-btn\" onclick=\"location.reload()\">[ RESTART SEQUENCE ]<\/button>\n<\/div>\n\n<script>\n\/\/ \u2500\u2500\u2500 MATRIX RAIN \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\nconst canvas = document.getElementById('matrix');\nconst ctx = canvas.getContext('2d');\ncanvas.width = window.innerWidth;\ncanvas.height = window.innerHeight;\nconst cols = Math.floor(canvas.width \/ 16);\nconst drops = Array(cols).fill(1);\nconst chars = '\u30a2\u30a4\u30a6\u30a8\u30aa\u30ab\u30ad\u30af\u30b1\u30b3\u30b5\u30b7\u30b9\u30bb\u30bd\u30bf\u30c1\u30c4\u30c6\u30c8\u30ca\u30cb\u30cc\u30cd\u30ce\u30cf\u30d2\u30d5\u30d8\u30db\u30de\u30df\u30e0\u30e1\u30e2\u30e4\u30e6\u30e8\u30e9\u30ea\u30eb\u30ec\u30ed\u30ef\u30f2\u30f30123456789ABCDEF';\n\nfunction drawMatrix() {\n  ctx.fillStyle = 'rgba(0,13,3,0.05)';\n  ctx.fillRect(0, 0, canvas.width, canvas.height);\n  ctx.fillStyle = '#00ff41';\n  ctx.font = '14px monospace';\n  drops.forEach((y, i) => {\n    const c = chars[Math.floor(Math.random() * chars.length)];\n    ctx.fillText(c, i * 16, y * 16);\n    if (y * 16 > canvas.height && Math.random() > 0.975) drops[i] = 0;\n    drops[i]++;\n  });\n}\nsetInterval(drawMatrix, 50);\n\n\/\/ \u2500\u2500\u2500 CLOCK \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\nfunction updateClock() {\n  const now = new Date();\n  const pad = n => String(n).padStart(2,'0');\n  document.getElementById('clock').textContent =\n    `${now.getFullYear()}-${pad(now.getMonth()+1)}-${pad(now.getDate())} ${pad(now.getHours())}:${pad(now.getMinutes())}:${pad(now.getSeconds())}`;\n}\nupdateClock();\nsetInterval(updateClock, 1000);\n\n\/\/ \u2500\u2500\u2500 FAKE PING \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\nsetInterval(() => {\n  const p = (Math.random() * 30 + 5).toFixed(0);\n  document.getElementById('ping').textContent = p;\n  document.getElementById('latency-val').textContent = p;\n}, 1200);\n\n\/\/ \u2500\u2500\u2500 SYSTEM METERS \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\nfunction animateMeters() {\n  const targets = { cpu: 0, mem: 0, net: 0, disk: 0 };\n  const current = { cpu: 0, mem: 0, net: 0, disk: 0 };\n\n  function setTargets() {\n    targets.cpu  = Math.random() * 80 + 10;\n    targets.mem  = Math.random() * 60 + 20;\n    targets.net  = Math.random() * 90 + 5;\n    targets.disk = Math.random() * 40 + 30;\n    setTimeout(setTargets, 2000 + Math.random() * 2000);\n  }\n  setTargets();\n\n  setInterval(() => {\n    ['cpu','mem','net','disk'].forEach(k => {\n      current[k] += (targets[k] - current[k]) * 0.05;\n      const v = current[k].toFixed(0);\n      if (k === 'net') {\n        document.getElementById('net-val').textContent = (current[k] * 12.3).toFixed(0) + ' KB\/s';\n        document.getElementById('net-bar').style.width = v + '%';\n      } else {\n        document.getElementById(`${k}-val`).textContent = v + '%';\n        document.getElementById(`${k}-bar`).style.width = v + '%';\n      }\n    });\n  }, 80);\n}\nanimateMeters();\n\n\/\/ \u2500\u2500\u2500 LOG ENGINE \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\nconst output = document.getElementById('log-output');\n\nfunction addLine(text, cls = 'ok', delay = 0) {\n  return new Promise(resolve => {\n    setTimeout(() => {\n      const span = document.createElement('span');\n      span.className = `log-line ${cls}`;\n      span.textContent = text;\n      output.appendChild(span);\n      output.scrollTop = output.scrollHeight;\n      resolve();\n    }, delay);\n  });\n}\n\nfunction addBlank(delay = 0) {\n  return addLine('', 'dim', delay);\n}\n\nfunction addProgress(label, duration) {\n  return new Promise(resolve => {\n    const wrap = document.createElement('div');\n    wrap.className = 'progress-wrap log-line';\n\n    const lbl = document.createElement('span');\n    lbl.style.cssText = 'width:220px; display:inline-block; font-size:12px; color:#2a6e3a;';\n    lbl.textContent = label;\n\n    const bar = document.createElement('div');\n    bar.className = 'progress-bar';\n    const fill = document.createElement('div');\n    fill.className = 'progress-fill';\n    fill.style.width = '0%';\n    bar.appendChild(fill);\n\n    const pct = document.createElement('span');\n    pct.className = 'progress-pct';\n    pct.textContent = '0%';\n\n    wrap.appendChild(lbl);\n    wrap.appendChild(bar);\n    wrap.appendChild(pct);\n    output.appendChild(wrap);\n    output.scrollTop = output.scrollHeight;\n\n    let p = 0;\n    const step = () => {\n      \/\/ Simulate non-linear progress (stalls, bursts)\n      const remaining = 100 - p;\n      const burst = Math.random() > 0.8 ? Math.random() * 15 : Math.random() * 3;\n      p = Math.min(100, p + burst);\n      fill.style.width = p.toFixed(1) + '%';\n      pct.textContent = p.toFixed(0) + '%';\n      if (p < 100) {\n        const delay = Math.random() > 0.9 ? Math.random() * 400 : duration \/ 60;\n        setTimeout(step, delay);\n      } else {\n        fill.style.width = '100%';\n        pct.textContent = '100%';\n        pct.style.color = '#00ff41';\n        lbl.style.color = '#00ff41';\n        resolve();\n      }\n    };\n    setTimeout(step, 80);\n  });\n}\n\nasync function typeCommand(cmd, delay = 0) {\n  return new Promise(resolve => {\n    setTimeout(async () => {\n      const span = document.createElement('span');\n      span.className = 'log-line ok';\n      span.innerHTML = '<span class=\"prompt\">root<span>@webcore<\/span>:~# <\/span>';\n      output.appendChild(span);\n      output.scrollTop = output.scrollHeight;\n\n      let i = 0;\n      const cursor = document.createElement('span');\n      cursor.className = 'cursor';\n      span.appendChild(cursor);\n\n      const type = () => {\n        if (i < cmd.length) {\n          cursor.before(cmd[i]);\n          i++;\n          setTimeout(type, 30 + Math.random() * 40);\n        } else {\n          cursor.remove();\n          resolve();\n        }\n      };\n      setTimeout(type, 300);\n    }, delay);\n  });\n}\n\nfunction setStatus(text) {\n  document.getElementById('status-text').textContent = text;\n}\n\nfunction setModule(idx, done) {\n  const modules = document.querySelectorAll('#module-list div');\n  if (modules[idx]) {\n    modules[idx].textContent = modules[idx].textContent.replace('[ ]', done ? '[\u2713]' : '[~]');\n    modules[idx].style.color = done ? 'var(--green)' : 'var(--amber)';\n  }\n}\n\n\/\/ \u2500\u2500\u2500 MAIN SEQUENCE \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\nasync function runSequence() {\n  const T = (t) => new Promise(r => setTimeout(r, t));\n\n  \/\/ BOOT\n  await addLine('WEBCORE BIOS v2.4.1 \u2014 Copyright (c) WCAI Systems', 'dim', 0);\n  await addLine('Memory check: 65536 MB OK', 'dim', 300);\n  await addLine('CPU: WC-ARCH x64 @ 4.2 GHz [8 cores]', 'dim', 500);\n  await addLine('Detecting boot device...', 'dim', 700);\n  await addLine('Boot: \/dev\/wcvda [ENCRYPTED]', 'dim', 1000);\n  await addBlank(1200);\n\n  await addLine('\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510', 'dim', 1400);\n  await addLine('\u2502  WEBCORE OS \u2014 INSIDER BUILD \u2014 NOT FOR THE MASSES   \u2502', 'warn', 1500);\n  await addLine('\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518', 'dim', 1600);\n  await addBlank(1800);\n\n  \/\/ PHASE 1\n  setStatus('PHASE 1\/5 \u2014 KERNEL LOADING');\n  await typeCommand('sudo wc-init --mode=insider --verbose', 2000);\n  await addBlank(2200);\n  await addLine('[  0.000000] WEBCORE kernel 6.7.0-wc loading...', 'dim', 2300);\n  await addLine('[  0.000012] Command line: root=\/dev\/wcvda ro quiet insider', 'dim', 2400);\n  await addLine('[  0.000443] x86\/PAT: configuration [0-7]: WB  WC  UC- UC  WB  WP  UC- WT  ', 'dim', 2500);\n  await addLine('[  0.001024] ACPI: IRQ0 used by override', 'dim', 2600);\n  await addLine('[  0.083201] NET: Registered protocol family 2', 'dim', 2700);\n  await addLine('[  0.291847] Initializing cgroup subsys cpuset', 'dim', 2800);\n  await addLine('[  0.298001] WEBCORE Security Module v3 active', 'ok', 2900);\n  await addBlank(3100);\n\n  await addProgress('Loading kernel modules...', 2000);\n  await addLine('  \u2713 Module wc_crypto loaded', 'ok', 100);\n  await addLine('  \u2713 Module wc_net loaded', 'ok', 200);\n  await addLine('  \u2713 Module wc_cipher loaded', 'ok', 300);\n  await addBlank(400);\n\n  \/\/ PHASE 2\n  setStatus('PHASE 2\/5 \u2014 CIPHER LAYER');\n  setModule(0, true);\n  setModule(1, false);\n  await typeCommand('wc-cipher --init --key-exchange ECDH --bits 4096', 600);\n  await addBlank(700);\n  await addLine('Generating ephemeral keypair...', 'info', 800);\n  await addLine('  KEY_PUB  : 04:8f:2a:77:cd:91:b3:...truncated', 'dim', 1000);\n  await addLine('  KEY_PRIV : [REDACTED - MEMORY ONLY]', 'dim', 1100);\n  await addProgress('ECDH Key Exchange...', 1800);\n  await addLine('  \u2713 Shared secret established', 'ok', 100);\n  await addLine('  \u2713 Session cipher: AES-256-GCM', 'ok', 200);\n  await addLine('  \u2713 HMAC-SHA3-512 integrity active', 'ok', 300);\n  await addBlank(400);\n\n  \/\/ PHASE 3\n  setStatus('PHASE 3\/5 \u2014 MESH NETWORK');\n  setModule(1, true);\n  setModule(2, false);\n  await typeCommand('wc-mesh connect --node webcoreai.es --relay auto', 600);\n  await addBlank(700);\n  await addLine('Scanning relay nodes...', 'info', 800);\n  await addLine('  NODE EU-WEST-1    latency: 12ms   [AVAILABLE]', 'ok', 950);\n  await addLine('  NODE EU-CENTRAL-2 latency: 8ms    [AVAILABLE]  \u2190selected', 'ok', 1100);\n  await addLine('  NODE US-EAST-1    latency: 67ms   [AVAILABLE]', 'dim', 1250);\n  await addLine('  NODE AP-SOUTH-1   latency: 134ms  [STANDBY]', 'dim', 1400);\n  await addBlank(1500);\n  await addProgress('Establishing mesh tunnel...', 2500);\n  await addLine('  \u2713 Tunnel WCMESH\/0 UP', 'ok', 100);\n  await addLine('  \u2713 Traffic routed via EU-CENTRAL-2', 'ok', 200);\n\n  document.getElementById('uplink-status').textContent = 'CONNECTED';\n  document.getElementById('uplink-status').style.color = 'var(--green)';\n  document.getElementById('uplink-status').style.textShadow = '0 0 6px var(--green)';\n  await addBlank(300);\n\n  \/\/ PHASE 4\n  setStatus('PHASE 4\/5 \u2014 AI DAEMON');\n  setModule(2, true);\n  setModule(3, false);\n  await typeCommand('wc-daemon start --engine=wc-gpt --insider --no-log', 400);\n  await addBlank(500);\n  await addLine('Loading AI model weights...', 'info', 600);\n  await addProgress('  wc-core-7B.bin         [2.4 GB]', 3000);\n  await addProgress('  wc-vision-adapter.bin  [0.8 GB]', 1500);\n  await addProgress('  wc-reasoner.bin        [1.1 GB]', 2000);\n  await addBlank(200);\n  await addLine('  \u2713 Model loaded: WC-GPT-7B-INSIDER', 'ok', 100);\n  await addLine('  \u2713 Context window: 128k tokens', 'ok', 200);\n  await addLine('  \u2713 Daemon PID: 31337', 'ok', 300);\n  await addBlank(400);\n\n  \/\/ PHASE 5\n  setStatus('PHASE 5\/5 \u2014 WC PROTOCOL');\n  setModule(3, true);\n  setModule(4, false);\n  await typeCommand('wc-protocol --bind 0.0.0.0:8443 --insider-mode', 400);\n  await addBlank(500);\n  await addLine('Binding WC Protocol stack...', 'info', 600);\n  await addLine('  HTTPS\/2 endpoint : https:\/\/webcoreai.es', 'ok', 800);\n  await addLine('  WebSocket gateway: wss:\/\/webcoreai.es\/ws', 'ok', 900);\n  await addLine('  API v3 endpoint  : https:\/\/webcoreai.es\/api\/v3', 'ok', 1000);\n  await addBlank(1100);\n  await addProgress('Starting all services...', 2000);\n  await addLine('  \u2713 wc-httpd   RUNNING [PID 1001]', 'ok', 100);\n  await addLine('  \u2713 wc-wsd     RUNNING [PID 1002]', 'ok', 200);\n  await addLine('  \u2713 wc-router  RUNNING [PID 1003]', 'ok', 300);\n  await addLine('  \u2713 wc-ai      RUNNING [PID 31337]', 'ok', 400);\n  await addBlank(600);\n  setModule(4, true);\n\n  \/\/ DONE\n  await addLine('\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501', 'dim', 200);\n  await addLine('  ALL SYSTEMS ONLINE \u2014 INSIDER ACCESS ACTIVATED', 'glow', 300);\n  await addLine('\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501', 'dim', 400);\n  await addBlank(600);\n  await addLine('  For more info visit us at:', 'info', 800);\n  await addLine('  \u25b6  https:\/\/webcoreai.es', 'glow', 1000);\n  await addBlank(1200);\n\n  setStatus('SYSTEM READY \/\/ ALL MODULES ONLINE');\n\n  \/\/ Add cursor at end\n  await T(1500);\n  const cur = document.createElement('span');\n  cur.className = 'log-line ok';\n  cur.innerHTML = '<span class=\"prompt\">root<span>@webcore<\/span>:~# <\/span><span class=\"cursor\"><\/span>';\n  output.appendChild(cur);\n  output.scrollTop = output.scrollHeight;\n\n  \/\/ FLASH \u2192 FINAL SCREEN\n  await T(2500);\n  const flash = document.getElementById('boot-flash');\n  flash.classList.add('active');\n  await T(600);\n  flash.classList.remove('active');\n\n  const finalScreen = document.getElementById('final-screen');\n  finalScreen.classList.add('active');\n}\n\nrunSequence();\n<\/script>\n<\/body>\n<\/html>\n\n","protected":false},"excerpt":{"rendered":"<p>WEBCORE \/\/ SYSTEM INIT WEBCORE\/\/OS &nbsp;&nbsp;v2.4.1-insider SESSION: WC-7F3A2B &nbsp;|&nbsp; TTY0 INITIALIZING&#8230; NET: CONNECTED &nbsp;|&nbsp; PING: &#8212;ms [ESC] ABORT &nbsp;|&nbsp; [F1] HELP \u2588\u2588\u2557 \u2588\u2588\u2557 \u2588\u2588\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2551 \u2588\u2588\u2551\u2588\u2588\u2554\u2550\u2550\u2550\u2550\u255d \u2588\u2588\u2551 \u2588\u2557 \u2588\u2588\u2551\u2588\u2588\u2551 \u2588\u2588\u2551\u2588\u2588\u2588\u2557\u2588\u2588\u2551\u2588\u2588\u2551 \u255a\u2588\u2588\u2588\u2554\u2588\u2588\u2588\u2554\u255d\u255a\u2588\u2588\u2588\u2588\u2588\u2588\u2557 \u255a\u2550\u2550\u255d\u255a\u2550\u2550\u255d \u255a\u2550\u2550\u2550\u2550\u2550\u255d \/\/ SYSTEM CPU0% MEM0% NET I\/O0 KB\/s DISK0% \/\/ MODULES [ ] CORE ENGINE [ ] CIPHER LAYER [ ] MESH NET&hellip;&nbsp;<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"neve_meta_sidebar":"","neve_meta_container":"","neve_meta_enable_content_width":"","neve_meta_content_width":0,"neve_meta_title_alignment":"","neve_meta_author_avatar":"","neve_post_elements_order":"","neve_meta_disable_header":"on","neve_meta_disable_footer":"on","neve_meta_disable_title":"on","footnotes":""},"class_list":["post-28","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/hub.webcoreai.es\/wp-json\/wp\/v2\/pages\/28","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/hub.webcoreai.es\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/hub.webcoreai.es\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/hub.webcoreai.es\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/hub.webcoreai.es\/wp-json\/wp\/v2\/comments?post=28"}],"version-history":[{"count":4,"href":"https:\/\/hub.webcoreai.es\/wp-json\/wp\/v2\/pages\/28\/revisions"}],"predecessor-version":[{"id":35,"href":"https:\/\/hub.webcoreai.es\/wp-json\/wp\/v2\/pages\/28\/revisions\/35"}],"wp:attachment":[{"href":"https:\/\/hub.webcoreai.es\/wp-json\/wp\/v2\/media?parent=28"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}