:root{
  --bg:#000; --fg:#00ff7f; --mut:#00c76a; --warn:#ff7f50; --line:#063;
  --pane-border:#094; --pane-bg:rgba(0,20,0,.55); --pane-shadow:0 0 15px #062 inset;
  --card-border:#073; --card-bg:rgba(0,30,0,.4);--card-bg-75:rgba(0,30,0,.75);
  --btn-border:#0b5; --btn-bg:rgba(0,40,0,.6); --btn-big-shadow:0 0 12px #073;
  --drag-border:rgb(0, 102, 51,0.5); --drag-bg:rgba(0,20,0,.35);
  --bar-bg:#021; --bar-border:#073; --fill-start:#0a4; --fill-end:#0f7;
  --k:#7fefc5; --v:#8ff;
  --thead-bg:rgba(0,20,0,.95);
  --checkbox:#0f7; --dot-on:#0f7;
  --scroll-track:green; --scroll-thumb:rgb(116, 245, 116);
  --eq-bg:rgba(0,20,0,.35); --eq-shadow:#073;
  /* Animations + splash (par thème) */
  --pulse-o1:#0b5; --pulse-i1:#073; /* outer/inner au repos */
  --pulse-o2:#0f7; --pulse-i2:#0a5; /* outer/inner au pic */
  --splash-shadow:#093; --splash-glow:rgba(0,255,127,.25);
  --grad1:var(--fg); --grad2:#7fefc5; --grad3:#4ff;
  /* Maze theme mapping */
  --maze-wall: var(--card-border);
  --maze-path-bg: rgba(0,20,0,.35);
  --maze-player: var(--fg);
  --maze-bonus: var(--warn);
  --maze-bonus-tok: var(--fg);
  --maze-bonus-cash: var(--warn);
  --maze-exit: #00eaff;
}

  *{box-sizing:border-box}
  html,body{height:100%;margin:0;background:var(--bg);color:var(--fg);font:14px/1.4 ui-monospace,Consolas,Monaco,monospace;overflow-y:scroll;overflow-x:hidden}
  a{text-decoration: none;}
  .text-center{text-align: center;}
  body::-webkit-scrollbar{width: 0px;border-radius: 10px;}
  body::-webkit-scrollbar-track{background: var(--scroll-track);}
  body::-webkit-scrollbar-thumb{background: var(--scroll-thumb);border-radius: 10px;}


  /* Themes via CSS variables */
  body.theme-blue{
    --bg:#050913; --fg:#cfe7ff; --mut:#9fd0ff; --warn:#020101; --line:#0b2a66;
    --pane-border:#0b2a66; --pane-bg:rgba(10,20,60,.55); --pane-shadow:0 0 15px #0b2a66 inset;
    --card-border:#0b2a66; --card-bg:rgba(10,20,60,.35);--card-bg-v:#2aa4ff24;--card-bg-s:rgba(255,255,255,0.35);--card-bg-75: #2aa4ff24;
    --btn-border:#1a5ad1; --btn-bg:rgba(10,30,70,.6); --btn-big-shadow:0 0 12px #0b2a66;
    --drag-border:rgb(11, 42, 102,0.5); --drag-bg:rgba(10,20,60,.35);
    --bar-bg:#0a1020; --bar-border:#0b2a66; --fill-start:#0a2a7a; --fill-end:#2aa4ff;
    --k:#bde1ff; --v:#d9f1ff; --thead-bg:rgba(10,20,60,.95);
    --checkbox:#2aa4ff; --dot-on:#2aa4ff;
    --scroll-track:#0b203f; --scroll-thumb:#2aa4ff;
    --eq-bg:rgba(10,20,60,.35); --eq-shadow:#0b2a66;
    --pulse-o1:#0b2a66; --pulse-i1:#0b2a66; --pulse-o2:#2aa4ff; --pulse-i2:#0a2a7a;
    --splash-shadow:#0b2a66; --splash-glow:rgba(42,164,255,.2);
    --grad1:var(--fg); --grad2:#bde1ff; --grad3:#2aa4ff;
    --maze-wall:#0b2a66; --maze-path-bg:rgba(10,20,60,.35); --maze-player:var(--fg); --maze-bonus-tok:#2aa4ff; --maze-bonus-cash:#ff9b8f; --maze-exit:#2aa4ff;
  }
  body.theme-purple{
    --bg:#0a0610; --fg:#f1d7ff; --mut:#d8a6ff; --warn:#ff9b8f; --line:#4b0b66;
    --pane-border:#4b0b66; --pane-bg:rgba(40,10,60,.55); --pane-shadow:0 0 15px #4b0b66 inset;
    --card-border:#4b0b66; --card-bg:rgba(50,10,70,.35);--card-bg-75:rgba(50,10,70,.75);--card-bg-s:rgba(255,255,255,0.35);
    --btn-border:#7a2aff; --btn-bg:rgba(50,20,80,.6); --btn-big-shadow:0 0 12px #4b0b66;
    --drag-border:rgb(75, 11, 102,0.5); --drag-bg:rgba(40,10,60,.35);
    --bar-bg:#140a20; --bar-border:#4b0b66; --fill-start:#4b0b66; --fill-end:#b36bff;
    --k:#e9ccff; --v:#ffffff; --thead-bg:rgba(40,10,60,.95);
    --checkbox:#b36bff; --dot-on:#b36bff;
    --scroll-track:#2b0b46; --scroll-thumb:#b36bff;
    --eq-bg:rgba(40,10,60,.35); --eq-shadow:#4b0b66;
    --pulse-o1:#4b0b66; --pulse-i1:#4b0b66; --pulse-o2:#b36bff; --pulse-i2:#4b0b66;
    --splash-shadow:#4b0b66; --splash-glow:rgba(179,107,255,.22);
    --grad1:var(--fg); --grad2:#e9ccff; --grad3:#b36bff;
    --maze-wall:#4b0b66; --maze-path-bg:rgba(40,10,60,.35); --maze-player:var(--fg); --maze-bonus-tok:#b36bff; --maze-bonus-cash:#ff9b8f; --maze-exit:#b36bff;
  }
  body.theme-amber{
    --bg:#0f0b05; --fg:#ffe9c2; --mut:#ffd27a; --warn:#ff9b8f; --line:#66450b;
    --pane-border:#66450b; --pane-bg:rgba(80,50,10,.55); --pane-shadow:0 0 15px #66450b inset;
    --card-border:#66450b; --card-bg:rgba(70,45,10,.35); --card-bg-75:rgba(70,45,10,.75);--card-bg-s:rgba(255,255,255,0.35);
    --btn-border:#b8821a; --btn-bg:rgba(90,55,10,.6); --btn-big-shadow:0 0 12px #66450b;
    --drag-border:rgb(102, 69, 11,0.5); --drag-bg:rgba(80,50,10,.35);
    --bar-bg:#1c1205; --bar-border:#66450b; --fill-start:#a86a0a; --fill-end:#ffd27a;
    --k:#ffe1b0; --v:#fff1d9; --thead-bg:rgba(80,50,10,.95);
    --checkbox:#ffbf4d; --dot-on:#ffbf4d;
    --scroll-track:#3a2a10; --scroll-thumb:#ffbf4d;
    --eq-bg:rgba(80,50,10,.35); --eq-shadow:#66450b;
    --pulse-o1:#66450b; --pulse-i1:#66450b; --pulse-o2:#ffbf4d; --pulse-i2:#a86a0a;
    --splash-shadow:#66450b; --splash-glow:rgba(255,191,77,.22);
    --grad1:var(--fg); --grad2:#ffd27a; --grad3:#ffbf4d;
    --maze-wall:#66450b; --maze-path-bg:rgba(70,45,10,.35); --maze-player:var(--fg); --maze-bonus-tok:#ffd27a; --maze-bonus-cash:#ffbf4d; --maze-exit:#ffbf4d;
  }

  /* Teal */
  body.theme-teal{
    --bg:#031a1a; --fg:#c7fff8; --mut:#90f4e8; --warn:#ff7f50; --line:#0a4e4e;
    --pane-border:#0a4e4e; --pane-bg:rgba(0,30,30,.55); --pane-shadow:0 0 15px #0a4e4e inset;
    --card-border:#0a4e4e; --card-bg:rgba(0,40,40,.35);--card-bg-75:rgba(0,40,40,.75);--card-bg-s:rgba(255,255,255,0.35);
    --btn-border:#1aaea0; --btn-bg:rgba(0,50,50,.6); --btn-big-shadow:0 0 12px #0a4e4e;
    --drag-border:rgb(10, 78, 78,0.5); --drag-bg:rgba(0,30,30,.35);
    --bar-bg:#061616; --bar-border:#0a4e4e; --fill-start:#0a7a6a; --fill-end:#45f1da;
    --k:#a8fff1; --v:#e2fffb; --thead-bg:rgba(0,30,30,.95);
    --checkbox:#45f1da; --dot-on:#45f1da;
    --scroll-track:#0a3030; --scroll-thumb:#45f1da;
    --eq-bg:rgba(0,30,30,.35); --eq-shadow:#0a4e4e;
    --pulse-o1:#0a4e4e; --pulse-i1:#0a4e4e; --pulse-o2:#45f1da; --pulse-i2:#0a7a6a;
    --splash-shadow:#0a4e4e; --splash-glow:rgba(69,241,218,.22);
    --grad1:var(--fg); --grad2:#90f4e8; --grad3:#45f1da;
    --maze-wall:#0a4e4e; --maze-path-bg:rgba(0,30,30,.35); --maze-player:var(--fg); --maze-bonus-tok:#45f1da; --maze-bonus-cash:#ff9b8f; --maze-exit:#45f1da;
  }

  /* Cyber (neon magenta/cyan) */
  body.theme-cyber{
    --bg:#0a0010; --fg:#ffd7ff; --mut:#ff9cff; --warn:#ff7f50; --line:#7a00cc;
    --pane-border:#7a00cc; --pane-bg:rgba(60,10,90,.55); --pane-shadow:0 0 15px #7a00cc inset;
    --card-border:#7a00cc; --card-bg:rgba(50,5,80,.35);--card-bg-75:rgba(50,5,80,.75);--card-bg-s:rgba(255,255,255,0.35);
    --btn-border:#ff00aa; --btn-bg:rgba(80,10,70,.6); --btn-big-shadow:0 0 12px #7a00cc;
    --drag-border:rgb(122, 0, 204,0.5); --drag-bg:rgba(60,10,90,.35);
    --bar-bg:#150020; --bar-border:#7a00cc; --fill-start:#ff00aa; --fill-end:#00eaff;
    --k:#ffbdf0; --v:#e0f8ff; --thead-bg:rgba(50,10,80,.95);
    --checkbox:#ff00aa; --dot-on:#ff00aa;
    --scroll-track:#240034; --scroll-thumb:#ff00aa;
    --eq-bg:rgba(50,10,80,.35); --eq-shadow:#7a00cc;
    --pulse-o1:#7a00cc; --pulse-i1:#7a00cc; --pulse-o2:#ff00aa; --pulse-i2:#00eaff;
    --splash-shadow:#7a00cc; --splash-glow:rgba(255,0,170,.25);
    --grad1:var(--fg); --grad2:#ff9cff; --grad3:#00eaff;
    --maze-wall:#7a00cc; --maze-path-bg:rgba(50,10,80,.35); --maze-player:var(--fg); --maze-bonus-tok:#00eaff; --maze-bonus-cash:#ff00aa; --maze-exit:#00eaff;
  }

  /* Graphite (monochrome + accent bleu) */
  body.theme-graphite{
    --bg:#0c0c0e; --fg:#e6e8ee; --mut:#b8bdc9; --warn:#ff7f50; --line:#2a2d34;
    --pane-border:#2a2d34; --pane-bg:rgba(24,24,28,.55); --pane-shadow:0 0 15px #2a2d34 inset;
    --card-border:#2a2d34; --card-bg:rgba(22,22,26,.35);--card-bg-75:rgba(22,22,26,.75);--card-bg-s:rgba(255,255,255,0.35);
    --btn-border:#3a3f49; --btn-bg:rgba(34,34,40,.6); --btn-big-shadow:0 0 12px #2a2d34;
    --drag-border:rgb(243, 243, 243,0.5); --drag-bg:rgba(28,28,34,.35);
    --bar-bg:#121317; --bar-border:#2a2d34; --fill-start:#3a3f49; --fill-end:#8aa2ff;
    --k:#c6cad6; --v:#ffffff; --thead-bg:rgba(28,28,34,.95);
    --checkbox:#8aa2ff; --dot-on:#8aa2ff;
    --scroll-track:#1a1c22; --scroll-thumb:#8aa2ff;
    --eq-bg:rgba(28,28,34,.35); --eq-shadow:#2a2d34;
    --pulse-o1:#2a2d34; --pulse-i1:#2a2d34; --pulse-o2:#8aa2ff; --pulse-i2:#3a3f49;
    --splash-shadow:#2a2d34; --splash-glow:rgba(138,162,255,.20);
    --grad1:var(--fg); --grad2:#c6cad6; --grad3:#8aa2ff;
    --maze-wall:#2a2d34; --maze-path-bg:rgba(22,22,26,.35); --maze-player:var(--fg); --maze-bonus-tok:#8aa2ff; --maze-bonus-cash:#ff9b8f; --maze-exit:#8aa2ff;
  }

/* Quantum visual (matrix rain) */
.quantum-visual { position: relative; width: 100%; flex: 0 0 100%; height: 50px; margin-top: 8px; border-radius: 10px; overflow: hidden; border: 1px solid var(--card-border); background: var(--card-bg); box-shadow: inset 0 0 0 1px rgba(255,255,255,0.03); display: none; }
.quantum-visual.is-active { display: block; }
.quantum-visual canvas { position: absolute; inset: 0; width: 100%; height: 100%; display: block; image-rendering: pixelated; }
.quantum-visual .quantum-visual-overlay { position: absolute; inset: 0; display: flex; align-items: center; justify-content: space-between; padding: 4px 8px; pointer-events: none; }
.quantum-visual .label { font-size: 10px; color: var(--mut); background: rgba(0,0,0,0.25); padding: 2px 6px; border-radius: 6px; border: 1px solid var(--pane-border); }
.quantum-visual .timer { font-size: 12px; color: var(--fg); text-shadow: 0 0 6px var(--grad3); }


  body.theme-forest{
    --bg:#041006; --fg:#d5f6d1; --mut:#9ce79a; --warn:#f4c16e; --line:#1d4d2b;
    --pane-border:#1f5b33; --pane-bg:rgba(4,24,12,.55); --pane-shadow:0 0 15px #1f5b33 inset;
    --card-border:#1f5b33; --card-bg:rgba(6,30,15,.35);--card-bg-75:rgba(6,30,15,.75);--card-bg-s:rgba(255,255,255,0.25);
    --btn-border:#2f8a4a; --btn-bg:rgba(8,40,20,.6); --btn-big-shadow:0 0 12px #1f5b33;
    --drag-border:rgba(47,138,74,0.5); --drag-bg:rgba(4,24,12,.35);
    --bar-bg:#071910; --bar-border:#1f5b33; --fill-start:#2f8a4a; --fill-end:#7fffa1;
    --k:#c4f0c0; --v:#f0fff0; --thead-bg:rgba(6,30,15,.95);
    --checkbox:#7fffa1; --dot-on:#7fffa1;
    --scroll-track:#122b19; --scroll-thumb:#7fffa1;
    --eq-bg:rgba(6,30,15,.35); --eq-shadow:#1f5b33;
    --pulse-o1:#1f5b33; --pulse-i1:#1f5b33; --pulse-o2:#7fffa1; --pulse-i2:#2f8a4a;
    --splash-shadow:#1f5b33; --splash-glow:rgba(127,255,161,.20);
    --grad1:var(--fg); --grad2:#9ce79a; --grad3:#7fffa1;
    --maze-wall:#1f5b33; --maze-path-bg:rgba(6,30,15,.35); --maze-player:var(--fg); --maze-bonus-tok:#7fffa1; --maze-bonus-cash:#f4c16e; --maze-exit:#7fffa1;
  }

  body.theme-sunset{
    --bg:#14060b; --fg:#ffe4d8; --mut:#ffb29b; --warn:#ffd45e; --line:#732f3f;
    --pane-border:#732f3f; --pane-bg:rgba(40,12,20,.55); --pane-shadow:0 0 15px #732f3f inset;
    --card-border:#732f3f; --card-bg:rgba(50,14,24,.35);--card-bg-75:rgba(50,14,24,.75);--card-bg-s:rgba(255,255,255,0.25);
    --btn-border:#ff6f61; --btn-bg:rgba(60,18,28,.6); --btn-big-shadow:0 0 12px #732f3f;
    --drag-border:rgba(255,111,97,0.5); --drag-bg:rgba(40,12,20,.35);
    --bar-bg:#200a12; --bar-border:#732f3f; --fill-start:#ff6f61; --fill-end:#ffb29b;
    --k:#ffd8c8; --v:#fff5ef; --thead-bg:rgba(50,14,24,.95);
    --checkbox:#ff6f61; --dot-on:#ff6f61;
    --scroll-track:#31131d; --scroll-thumb:#ff6f61;
    --eq-bg:rgba(50,14,24,.35); --eq-shadow:#732f3f;
    --pulse-o1:#732f3f; --pulse-i1:#732f3f; --pulse-o2:#ff6f61; --pulse-i2:#ffb29b;
    --splash-shadow:#732f3f; --splash-glow:rgba(255,111,97,.22);
    --grad1:var(--fg); --grad2:#ffb29b; --grad3:#ffd45e;
    --maze-wall:#732f3f; --maze-path-bg:rgba(50,14,24,.35); --maze-player:var(--fg); --maze-bonus-tok:#ff6f61; --maze-bonus-cash:#ffd45e; --maze-exit:#ff6f61;
  }

body.theme-aurora{
    --bg:#050611; --fg:#e4f9ff; --mut:#a6f0ff; --warn:#ff9b8f; --line:#123a52;
    --pane-border:#1c4b6b; --pane-bg:rgba(8,26,40,.55); --pane-shadow:0 0 15px #1c4b6b inset;
    --card-border:#1c4b6b; --card-bg:rgba(10,32,52,.35);--card-bg-75:rgba(10,32,52,.75);--card-bg-s:rgba(255,255,255,0.30);
    --btn-border:#3bc8ff; --btn-bg:rgba(12,40,64,.6); --btn-big-shadow:0 0 12px #1c4b6b;
    --drag-border:rgba(59,200,255,0.5); --drag-bg:rgba(8,26,40,.35);
    --bar-bg:#0a1826; --bar-border:#1c4b6b; --fill-start:#3bc8ff; --fill-end:#7fffc5;
    --k:#d3f4ff; --v:#f6feff; --thead-bg:rgba(10,32,52,.95);
    --checkbox:#3bc8ff; --dot-on:#3bc8ff;
    --scroll-track:#112838; --scroll-thumb:#3bc8ff;
    --eq-bg:rgba(10,32,52,.35); --eq-shadow:#1c4b6b;
    --pulse-o1:#1c4b6b; --pulse-i1:#1c4b6b; --pulse-o2:#7fffc5; --pulse-i2:#3bc8ff;
    --splash-shadow:#1c4b6b; --splash-glow:rgba(59,200,255,.20);
    --grad1:var(--fg); --grad2:#a6f0ff; --grad3:#7fffc5;
    --maze-wall:#1c4b6b; --maze-path-bg:rgba(10,32,52,.35); --maze-player:var(--fg); --maze-bonus-tok:#7fffc5; --maze-bonus-cash:#ff9b8f; --maze-exit:#3bc8ff;
  }

  /* Singularity event */
  .card.warning { border-color: var(--warn); box-shadow: 0 0 18px rgba(255,127,80,0.25); position: relative; overflow: hidden; }
  .card.warning .k { color: var(--warn); }
  .card.warning::before { content: ''; position: absolute; inset: 0; background: linear-gradient(135deg, rgba(255,127,80,0.08), rgba(255,0,0,0.08)); pointer-events: none; }
  .btn.danger { border-color: var(--warn); color: var(--warn); }
  .btn.danger:hover { background: rgba(255,127,80,0.1); box-shadow: 0 0 12px rgba(255,127,80,0.35); }
  .singularity-metrics { display: flex; flex-wrap: wrap; gap: 4px 12px; margin-top: 6px; }
  .singularity-metrics div { flex: 1 1 48%; }
  .singularity-debt { margin-top: 6px; color: var(--warn); }
  .singularity-escape { margin-top: 10px; }
  .singularity-escape-bar { position: relative; height: 8px; border-radius: 6px; background: rgba(255,127,80,0.15); overflow: hidden; border:1px solid rgba(255,127,80,0.35); }
  .singularity-escape-fill { position: absolute; inset: 0; background: linear-gradient(90deg, rgba(255,127,80,0.3), rgba(255,0,0,0.65)); transition: width 0.4s ease; }
  .singularity-escape-label { margin-top: 4px; font-weight: 600; }
  .singularity-alert { margin-top: 8px; color: var(--warn); text-shadow: 0 0 6px rgba(255,127,80,0.4); min-height: 16px; }
  .singularity-lock { opacity: 0.6; position: relative; }
  .singularity-lock::after { content: '∅'; position: absolute; right: 8px; top: 50%; transform: translateY(-50%); font-size: 12px; color: var(--warn); opacity: 0.8; }
  body.singularity-active::after { content: ''; position: fixed; inset: 0; pointer-events: none; background: radial-gradient(circle at 50% 45%, rgba(255,127,80,0.12), transparent 60%); mix-blend-mode: screen; animation: singularityPulse 4s infinite; z-index: 3; }
  @keyframes singularityPulse { 0%,100% { opacity: 0.18; } 50% { opacity: 0.45; } }

  body.theme-ice{
    --bg:#020b16; --fg:#e6f6ff; --mut:#b3e0ff; --warn:#ff9b8f; --line:#1f3f66;
    --pane-border:#1f3f66; --pane-bg:rgba(8,26,46,.55); --pane-shadow:0 0 15px #1f3f66 inset;
    --card-border:#1f3f66; --card-bg:rgba(10,32,56,.35);--card-bg-75:rgba(10,32,56,.75);--card-bg-s:rgba(255,255,255,0.30);
    --btn-border:#4aa0ff; --btn-bg:rgba(12,40,70,.6); --btn-big-shadow:0 0 12px #1f3f66;
    --drag-border:rgba(74,160,255,0.5); --drag-bg:rgba(8,26,46,.35);
    --bar-bg:#081a2c; --bar-border:#1f3f66; --fill-start:#4aa0ff; --fill-end:#9cd8ff;
    --k:#d1ecff; --v:#f8fdff; --thead-bg:rgba(10,32,56,.95);
    --checkbox:#4aa0ff; --dot-on:#4aa0ff;
    --scroll-track:#122a42; --scroll-thumb:#4aa0ff;
    --eq-bg:rgba(10,32,56,.35); --eq-shadow:#1f3f66;
    --pulse-o1:#1f3f66; --pulse-i1:#1f3f66; --pulse-o2:#4aa0ff; --pulse-i2:#9cd8ff;
    --splash-shadow:#1f3f66; --splash-glow:rgba(74,160,255,.20);
    --grad1:var(--fg); --grad2:#b3e0ff; --grad3:#9cd8ff;
    --maze-wall:#1f3f66; --maze-path-bg:rgba(10,32,56,.35); --maze-player:var(--fg); --maze-bonus-tok:#4aa0ff; --maze-bonus-cash:#ff9b8f; --maze-exit:#4aa0ff;
  }

  body.theme-sakura{
    --bg:#16070d; --fg:#ffe6f2; --mut:#ffb7d5; --warn:#ff9b8f; --line:#7a2c49;
    --pane-border:#7a2c49; --pane-bg:rgba(46,12,28,.55); --pane-shadow:0 0 15px #7a2c49 inset;
    --card-border:#7a2c49; --card-bg:rgba(54,16,34,.35);--card-bg-75:rgba(54,16,34,.75);--card-bg-s:rgba(255,255,255,0.28);
    --btn-border:#ff6fae; --btn-bg:rgba(64,20,40,.6); --btn-big-shadow:0 0 12px #7a2c49;
    --drag-border:rgba(255,111,174,0.5); --drag-bg:rgba(46,12,28,.35);
    --bar-bg:#220b16; --bar-border:#7a2c49; --fill-start:#ff6fae; --fill-end:#ffb7d5;
    --k:#ffd6e7; --v:#fff7fb; --thead-bg:rgba(54,16,34,.95);
    --checkbox:#ff6fae; --dot-on:#ff6fae;
    --scroll-track:#331626; --scroll-thumb:#ff6fae;
    --eq-bg:rgba(54,16,34,.35); --eq-shadow:#7a2c49;
    --pulse-o1:#7a2c49; --pulse-i1:#7a2c49; --pulse-o2:#ff6fae; --pulse-i2:#ffb7d5;
    --splash-shadow:#7a2c49; --splash-glow:rgba(255,111,174,.22);
    --grad1:var(--fg); --grad2:#ffb7d5; --grad3:#ff6fae;
    --maze-wall:#7a2c49; --maze-path-bg:rgba(54,16,34,.35); --maze-player:var(--fg); --maze-bonus-tok:#ff6fae; --maze-bonus-cash:#ff9b8f; --maze-exit:#ff6fae;
  }

#minigamesCardGrid button{animation: var(--pulse-i1) ease-in-out infinite;}

  #app{
    display:grid;
    column-gap:14px;row-gap:14px;padding:14px;align-items:stretch;
    /* Laisser la page grandir en hauteur pour éviter l'écrasement des cartes */
    height:auto;min-height:100%;
    /* grid-template-columns:repeat(5,1fr); */
    /* Masonry-like: petites lignes + densification */
    --row-h: 12px;
    grid-auto-rows: var(--row-h);
    grid-auto-flow: row dense;
  }
  /* Même grille (4 colonnes) pour toutes les versions */
  #app.v0,#app.v1,#app.v2,#app.v3{grid-template-columns:repeat(5,1fr)}
  /* Contraindre certaines cartes à 1 colonne (laisser le layout gérer la position) */
  #cardAgents{ grid-column: auto / span 1; }
  #cardDashboard{ grid-column: auto / span 1; }
  #cardDashboard .dashboard-grid{
    display:grid;
    grid-template-columns:repeat(auto-fit,minmax(180px,1fr));
    gap:12px;
    margin-top:12px;
  }
  #cardDashboard .dash-item{
    display:flex;
    align-items:center;
    gap:12px;
    padding:10px 12px;
    border:1px solid var(--card-border);
    border-radius:10px;
    background:var(--card-bg-75, rgba(0,30,0,.5));
    transition:background 0.3s ease, border-color 0.3s ease, box-shadow 0.3s ease;
  }
  #cardDashboard .dash-item:hover{
    background:var(--card-bg-s, rgba(255,255,255,0.08));
  }
  #cardDashboard .dash-item.dash-complete{
    border-color:var(--fg);
    box-shadow:0 0 12px rgba(0,0,0,0.35) inset;
  }
  #cardDashboard .dash-chart{
    position:relative;
    width:64px;
    height:64px;
    flex:0 0 64px;
  }
  #cardDashboard .dash-ring{
    width:100%;
    height:100%;
    transform:rotate(-90deg);
    transform-origin:50% 50%;
  }
  #cardDashboard .dash-ring-bg{
    fill:none;
    stroke:var(--card-border);
    stroke-width:3.5;
    opacity:0.35;
  }
  #cardDashboard .dash-ring-progress{
    fill:none;
    stroke:var(--fg);
    stroke-width:3.5;
    stroke-linecap:round;
    stroke-dasharray:100;
    stroke-dashoffset:100;
    transition:stroke-dashoffset 0.4s ease;
  }
  #cardDashboard .dash-value{
    position:absolute;
    inset:0;
    display:flex;
    align-items:center;
    justify-content:center;
    font-weight:700;
    font-size:0.95rem;
    color:var(--fg);
  }
  #cardDashboard .dash-info{
    display:flex;
    flex-direction:column;
    gap:4px;
  }
  #cardAlignment .alignment-header{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;margin-top:6px}
  #cardAlignment .alignment-metrics{display:flex;flex-direction:column;gap:4px}
  #cardAlignment .alignment-status{padding:6px 10px;border-radius:8px;font-weight:700;text-transform:uppercase;border:1px solid var(--btn-border);background:rgba(0,40,0,.45);color:var(--fg);align-self:flex-start;letter-spacing:.05em;transition:background .25s ease,border-color .25s ease,color .25s ease}
  #cardAlignment .alignment-status.status-warning{background:rgba(110,70,0,.35);border-color:#ffb347;color:#ffe9c2}
  #cardAlignment .alignment-status.status-critical{background:rgba(110,0,0,.4);border-color:#ff6f61;color:#ffe0dc}
  #cardAlignment .alignment-status.status-collapse{background:rgba(130,0,40,.45);border-color:#ff4d8b;color:#ffd8ec}
  #cardAlignment .alignment-map{margin-top:12px;border:1px solid var(--card-border);border-radius:10px;padding:10px;background:var(--card-bg-75,rgba(0,30,0,.45));box-shadow:inset 0 0 12px rgba(0,0,0,.25)}
  #cardAlignment .alignment-map-title{text-transform:uppercase;letter-spacing:.08em;font-size:12px;color:var(--mut);margin-bottom:6px}
  #cardAlignment .alignment-map-canvas{position:relative;height:140px;border-radius:8px;overflow:hidden;background:radial-gradient(circle at 35% 35%,rgba(120,200,255,.3),rgba(10,32,46,.88));border:1px solid rgba(110,180,220,.25)}
  #cardAlignment .alignment-map-planet{position:absolute;inset:0;background:radial-gradient(circle at 65% 70%,rgba(80,180,255,.25),transparent 60%),radial-gradient(circle at 15% 20%,rgba(120,220,180,.25),transparent 55%);opacity:.6;mix-blend-mode:screen}
  #alignmentMapOverlay{position:absolute;inset:0;border-radius:8px;background:radial-gradient(circle at 50% 55%,rgba(255,170,80,.45),rgba(200,40,10,.65));mix-blend-mode:screen;opacity:.25;transition:opacity .35s ease,background .35s ease,box-shadow .35s ease}
  #cardAlignment .alignment-map-legend{display:flex;justify-content:space-between;margin-top:6px;font-size:11px;color:var(--mut)}
  #cardAlignment .alignment-actions .btn{flex:1 1 0}
  #cardAlignment .alignment-trend{font-weight:600}
  #cardAlignment .alignment-trend.positive{color:#8affc5}
  #cardAlignment .alignment-trend.negative{color:#ff8f7a}
  #cardAlignment .alignment-trend.neutral{color:var(--mut)}
  #cardDashboard .dash-title{
    font-weight:700;
    text-transform:uppercase;
    letter-spacing:0.5px;
  }
  #cardDashboard .dash-sub{
    font-size:0.75rem;
    opacity:0.8;
  }
  #cardDashboard .dash-count{
    font-size:0.8rem;
    color:var(--mut);
  }
  /* Styles de la section information (version précédente: 2 lignes avec reqs dessous) */
  #information{
    display: grid;gap:15px;grid-auto-flow: column;margin: 15px 0px 15px 15px;
  }
  .d-flex{display: flex;gap:10px;flex-wrap: wrap;}
  .flex-row{flex-direction: column;}
  .flex-col{flex-direction: row;}
  /* Blocks follow their content height; rows equal tallest = max-content */
  #app > .card, #app > .pane { display:flex; flex-direction:column; height:auto; gap: 10px; }
  #monitor{max-height:200px; }
  #marketPane, #monitorPane, #netCard { min-height:0; }
  /* Standard layout for panes that were inline-styled */
  #marketPane, #monitorPane { display:flex; flex-direction:column; gap:10px; min-height:0; overflow-x: hidden;overflow-y: auto; }
  /* Drag & drop des sections */
  .dragHandle{display:block;cursor:grab;cursor:-webkit-grab;border-bottom:1px dashed var(--drag-border);padding:6px 8px;margin:0 0 6px 0;background:var(--drag-bg);user-select:none;-webkit-user-select:none;-webkit-user-drag:element;position:relative;z-index:1}
  .dragHandle:active{cursor:grabbing}
  .card[draggable="true"]{-webkit-user-drag:element}
  .dragOver{outline:2px dashed var(--drag-border); outline-offset:-4px}
  /* Empêche les enfants de #bars de capter les événements pendant un drag global */
  .dragging #bars * { pointer-events: none !important; }
  /* Bars container and row items */
  #bars{display:block}
  token-manufactor, gpu-manufactor, data-rd, energi-manufactor{display:block;margin-bottom:6px}
  .draggingCard{ z-index: 15; }

  h1{margin:.2rem 0 0;font-size:18px;letter-spacing:.08em;text-shadow:0 0 8px #093}
  .pane{border:1px solid var(--pane-border);padding:10px;background:var(--pane-bg);backdrop-filter:blur(2px);box-shadow:var(--pane-shadow);border-radius:8px;min-height:0}
  .row{display:flex;gap:10px;flex-wrap:wrap}
  .d-flex-column{display:flex;gap:10px;flex-wrap:wrap;flex-direction: column;}
  .column{display:flex;gap:10px;align-items:center;flex-direction:row;flex-wrap:wrap;width: 100%; justify-content: space-between;}
  .row-between-baseline{justify-content:space-between;align-items:baseline}
  .stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:8px}
  .card{border:1px solid var(--card-border);border-radius:8px;padding:8px;background:var(--card-bg-75);overflow:hidden;position:relative}
  /* En masonry, conserver le clipping par défaut pour éviter le dépassement */
  /* #app .card{ overflow: hidden; } */
  .k{color:var(--k)}
  .v{color:var(--v)}
  #cardModelZoo.locked .model-zoo-grid{opacity:.55;pointer-events:none}
  #cardModelZoo.locked .model-zoo-summary{opacity:.7}
  .model-zoo-summary{text-align:right;flex:1}
  .model-zoo-lock{margin-top:2px;color:var(--mut)}
  .model-zoo-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:8px;margin-top:8px;max-height: 215px; overflow-x: hidden; overflow-y: scroll;}
  .model-card{border:1px solid var(--card-border);border-radius:8px;padding:8px;background:rgba(0,0,0,.2);display:flex;flex-direction:column;gap:6px;transition:border-color .2s,box-shadow .2s,opacity .2s}
  .model-card .model-head{display:grid;grid-auto-flow: column;align-items:center;gap:8px;font-size:13px;grid-template-columns: auto auto auto 80px;}
  .model-card .model-icon{font-size:20px}
  .model-card .model-name{font-weight:600;color:var(--k)}
  .model-card .model-desc{font-size:12px;opacity:.85;}
  .model-card .model-meta{display:flex;justify-content:space-between;align-items:center;gap:8px;font-size:12px}
  .model-card .model-cost{color:var(--mut)}
  .model-card.owned{border-color:var(--card-border);box-shadow:0 0 12px rgba(0,255,127,.18)}
  .model-card.locked{opacity:.55}

  .model-card{border-color:var(--card-border)}
  .model-card.cat-text .btn{border-color:#2a7bff}
  .model-card.cat-vision .btn{border-color:#a86bff}
  .model-card.cat-audio .btn{border-color:#ff6fb7}
  .model-card.cat-code .btn{border-color:#4ed97a}
  .model-card.cat-safety .btn{border-color:#ffb347}
  .model-card.cat-data .btn{border-color:#4ddbd6}
  .model-card.cat-infra .btn{border-color:#8aa2ff}
  .model-card.cat-growth .btn{border-color:#ffd27a}
  .btnNormal{cursor:pointer;border:1px solid var(--btn-border);border-radius:8px;padding:5px 8px;background:var(--btn-bg);color:var(--fg);user-select:none;transition:filter .15s,transform .05s,box-shadow .2s;height:max-content;text-align: center;max-width: 250px;}

  .btn{cursor:pointer;border:1px solid var(--btn-border);border-radius:8px;padding:5px 8px;background:var(--btn-bg);color:var(--fg);user-select:none;transition:filter .15s,transform .05s,box-shadow .2s;height:max-content;text-align: center;}
  .btn.big{font-size:12px;padding:12px;border-width:2px;box-shadow:var(--btn-big-shadow);transition: filter .15s, transform .05s, box-shadow .2s;height:max-content}
  .btn:active:not([disabled]){transform:translateY(1px)}
.btn[disabled]{opacity:.85;cursor:not-allowed;border-color:#064;color:rgb(228, 228, 228);filter:grayscale(.4)}
.btn.enabled{box-shadow:0 0 18px var(--dot-on), inset 0 0 8px var(--card-border); animation: pulse 1.2s ease-in-out infinite}
.btn.enabled[disabled]{ animation: none; }
.btn.enabled:hover{filter:brightness(1.15)}
.btn.danger{border-color:#bb2f2f;background:rgba(65,6,6,.65);color:#ffd6d6;box-shadow:0 0 8px rgba(187,47,47,.35) inset}
.btn.danger:hover{filter:brightness(1.1)}
.btn.danger[disabled]{border-color:#5d1b1b;color:#f5cccc}
  .pulse-fill{position:relative;overflow:hidden;background-image:linear-gradient(120deg,var(--dot-on),var(--dot-on));background-repeat:no-repeat;background-size:0% 100%;transition:background-size .08s ease;}
  .pulse-fill.pulse-fill-animating{background-size:100% 100%;color:white}
  .pulse-fill[disabled]{background-size:0% 100%;}
  /* Minigames: make grid buttons glow like clickable buttons */
  #minigamesCardGrid .btn{ box-shadow: var(--btn-big-shadow); animation: pulse 1.2s ease-in-out infinite; }
  #minigamesCardGrid .btn[disabled]{ animation: none; box-shadow: none; filter: grayscale(.35); opacity: .8; }
  #minigamesCardGrid .btn:not([disabled]):hover{ filter: brightness(1.12); }
  /* Indicataire visuel On/Off */
  .dot{display:inline-block;width:8px;height:8px;border-radius:50%;margin-left:8px;vertical-align:middle;box-shadow:0 0 4px currentColor}
  .dot-on{background:var(--dot-on);color:var(--dot-on)}
  .dot-off{background:#f66;color:#f66;opacity:.9}
  /* Largeur adaptative: 50% ou 100% */
  .btn.autoW50{ flex: 1 1 calc(50% - 5px); }
  .btn.autoW100{ flex: 1 1 100%; width: 100%; }

  .grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:10px}
  .mono{font-variant-numeric:tabular-nums}
  .bar{height:5px;background:var(--bar-bg);border:1px solid var(--bar-border);border-radius:6px;overflow:hidden;margin-top:6px}
  .fill{height:100%;background:linear-gradient(90deg,var(--fill-start),var(--fill-end));box-shadow:0 0 8px var(--fill-start) inset;width:0%}
  /* Token bar at capacity: force red gradient */
  #tokBar.cap-full{
    background: linear-gradient(90deg, #700, #d00);
    box-shadow: 0 0 8px #700 inset;
  }
  /* RareScan: hidden by default, shown on trigger */
  #rareScan.rare-scan{ display:none; position:relative; width:100%; height:30px; margin-top:6px; border-radius:6px; overflow:hidden; background:var(--eq-bg); box-shadow:inset 0 0 0 1px rgba(148,163,184,0.18), 0 6px 16px rgba(0,0,0,0.25) }
  #rareScan .scan-label{ position:absolute; inset:auto 8px 4px auto; font-size:11px; color:var(--k); opacity:.95; background:rgba(0,0,0,.25); padding:2px 6px; border-radius:4px; pointer-events:none }
  .tag{display:inline-block;border:1px solid var(--card-border);border-radius:6px;padding:2px 6px;margin:2px;background:#031;color:#8fc}
  .warn{color:var(--warn)}
  .footer{opacity:.85;font-size:12px;margin-top:6px}
  .sep{height:1px;background:var(--line);margin:3px 0;border-radius:1px}
  .switch{display:flex;align-items:center;gap:8px}
  input[type="checkbox"]{accent-color:var(--checkbox)}
  .tiny{font-size:11px;opacity:.9}
  table{width:100%;border-collapse:collapse;padding : 0 15px;}
  table thead th{position:sticky;top:0;background:var(--thead-bg);z-index:2}
  table tbody th{min-height: 250px;}
  table tfoot tr{position:sticky;bottom:0;background:var(--thead-bg);z-index:2}
  /* Spécifique au panneau Réseau: le total sous le tableau doit rester en dehors du scroll */
  #netCard table tfoot tr{ position: static; bottom: auto; }
  th,td{border-bottom:1px solid var(--line);padding:6px 4px;vertical-align:middl;font-size:0.8rem}
  th{color:#9fd}
  .right{text-align:right}
  .center{text-align:center}
  .neg{color:#ff9b8f}
  .pos{color:#8fffa6}
  /* Email card: single-line rows with ellipsis on long titles */
  #cardEmail table{ table-layout: fixed; }
  #cardEmail th:nth-child(1), #cardEmail td:nth-child(1){ width: 65%; }
  #cardEmail th:nth-child(2), #cardEmail td:nth-child(2){ width: 12%; }
  #cardEmail th:nth-child(3), #cardEmail td:nth-child(3){ width: 23%; }
  #cardEmail td.title{ overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
  #cardEmail td, #cardEmail th{ white-space: nowrap; }
  #emailList .row{gap : 0px}
  /* Email selection & read states */
  #cardEmail tr.read td{ background: var(--drag-border); }
  #cardEmail tr.enabled td{ background: var(--drag-bg); }
  /* Icon-only button (trash) */
  .icon-btn{ border:none; background:transparent; color:#9fd; padding:0 6px; line-height:1; font-size:14px; cursor:pointer; }
  .icon-btn:hover{ color:#fff; }
  .icon-btn .icon{ width:16px; height:16px; vertical-align:middle; }
  /* Email detail pane: keep stable height and layout */
  #emailDetail{ display:flex; flex-direction:column; gap:6px; min-height: 260px; }
  #emailDetail.hidden{ visibility: hidden; pointer-events: none; }
  /* Email content sizing for stable card height */
  #emailContent{ white-space: normal; word-break: break-word; flex: 1 1 auto; max-height: 115px; overflow-y: auto; }

  .pill{display:flex;border:1px solid var(--pane-border);border-radius:999px;padding:2px 8px;background:#032;align-items: center;}
  .svg{width:100%;height:40px}
  .wrap{max-height:180px;overflow-y:auto;overflow-x:hidden}
  /* Email list: scrollable area up to 250px */
  #emailList{ height: 250px; overflow-y: auto; flex: 0 1 auto; }
  #emailButton{margin-top: 6px; gap: 8px; justify-content: flex-end;}
  /* Ensure email table rows use table layout, not flex */
  #cardEmail tr{ display: table-row; }
  /* Wrappers contenant des tableaux: réserver 250px visibles */
  /* .wrap.tableWrap{ min-height:250px; max-height:250px; } */
  /* Agents: uniforme avec netCard → scroll via wrapper */
  #cardAgents{ overflow: hidden; }
#cardAgents .wrap.tableWrap{ min-height: 250px; max-height: 250px; overflow-y: auto; overflow-x: hidden; }
#cardAgents table{ width:100%; border-collapse: collapse; }
#cardRobotic{ overflow: hidden; }
#cardRobotic .robotic-stats{ display:flex; flex-wrap:wrap; gap:8px; align-items:center; }
#cardRobotic .robotic-name{ font-weight:600; }
#cardRobotic .wrap.tableWrap{ max-height:260px; overflow-y:auto; }
#cardRobotic table{ width:100%; border-collapse:separate; border-spacing:0 6px; }
#cardRobotic td{ vertical-align:top; padding:6px 4px; }
#cardRobotic button.btn{ margin-left:6px; }
  /* Animation Agents: cachée par défaut; affichée pendant l'entraînement */
  #agentsAnim{ display: none; }
  /* Maze visuals */
  #mazeCanvas{ display:block; width:100%; max-width:512px; aspect-ratio:1/1; height:auto; border:1px solid var(--card-border); border-radius:6px; background:var(--maze-path-bg); }
  .range{ width: 160px; }
  table thead th{position:sticky;top:0;background:var(--thead-bg);z-index:2}
  ::-webkit-scrollbar{width: 3px;border-radius: 10px;}
  ::-webkit-scrollbar-track{background: var(--scroll-track);}
  ::-webkit-scrollbar-thumb{background: var(--scroll-thumb);border-radius: 10px;}
  /* Aide contextuelle (modal) */
  #help{display:none;position:fixed;inset:0;z-index:10000;align-items:center;justify-content:center;background:rgba(0,0,0,.75);}
  #help .card{max-width:520px;width:min(92%,520px);position:relative;padding:30px;box-shadow:0 0 25px var(--line),0 0 120px rgba(0,255,127,.12)}
  /* Options (modal): même style que help */
  #options{display:none;}
  /* Morpion */
  #ttt{display:none}

  /* Game modals hidden by default and styled */
  #ttt, #dino, #stack, #circle, #catch, #breakout, #maze, #twenty48, #checkers{
    display:none; position:fixed; inset:0; z-index:10002; align-items:center; justify-content:center; background:rgba(0,0,0,.6);
  }
  #ttt > .card, #dino > .card, #stack > .card, #circle > .card, #catch > .card, #breakout > .card, #maze > .card, #twenty48 > .card, #checkers > .card{
    max-width:520px; width:min(92%,520px); position:relative; padding:16px; box-shadow:0 0 25px var(--line), 0 0 120px rgba(0,255,127,.12);
  }

  /* Defaults moved from inline */
  #upgradeOverlay{ display:none; }
  #cardEmail{ display:flex; flex-direction:column; }
  #emailList{ overflow-y:auto; }
  #emailDetail{ flex: 0 0 auto; border-top:1px solid var(--card-border); padding-top:6px; }
  #emailClose{ border:none; background:transparent; color:#9fd; padding:2px 6px; line-height:1; font-weight:bold; cursor:pointer; }
  #adsContainer{ margin-top:8px; min-height:90px; border:1px dashed var(--card-border); border-radius:6px; display:none; align-items:center; justify-content:center; padding:6px; }
  #adsConsent{ display:none; margin-top:8px; border:1px solid var(--card-border); border-radius:6px; padding:10px; background:var(--card-bg); }
  #helpBody{ white-space: pre-line; }
  #netCard{ display:none; }
  #cardNuclear{ display:none; }
  #ttt, #dino, #stack, #circle, #catch, #breakout, #checkers{
    position: fixed; inset: 0; z-index: 10002; align-items: center; justify-content: center; background: rgba(0, 0, 0, 0.6);
  }
  #ttt > .card, #dino > .card, #stack > .card, #circle > .card, #catch > .card, #breakout > .card, #checkers > .card{
    max-width: 520px; width: min(92%, 520px); position: relative; padding: 16px; box-shadow: 0 0 25px var(--line), 0 0 120px rgba(0, 255, 127, 0.12);
  }

  #checkersBoard{ max-width: 420px; margin: 0 auto; }
  #checkersBoard .checkers-cell{
    aspect-ratio: 1/1;
    border: 1px solid rgba(0, 80, 40, .65);
    border-radius: 6px;
    display:flex;
    align-items:center;
    justify-content:center;
    font-size: 28px;
    cursor:pointer;
    background: rgba(0,0,0,.18);
    color: var(--fg);
    transition: transform .12s ease, box-shadow .12s ease;
  }
  #checkersBoard .checkers-cell.light{ background: rgba(255,255,255,.06); border-color: rgba(255,255,255,.08); cursor:default; }
  #checkersBoard .checkers-cell.light:disabled{ pointer-events:none; }
  #checkersBoard .checkers-cell.dark{ background: rgba(0,45,25,.55); }
  #checkersBoard .checkers-cell.player{ color: #7affc9; text-shadow:0 0 6px rgba(0,255,160,.45); }
  #checkersBoard .checkers-cell.ai{ color: #ffb89a; text-shadow:0 0 6px rgba(255,128,90,.35); }
  #checkersBoard .checkers-cell.king{ font-size: 30px; }
  #checkersBoard .checkers-cell.movable{ box-shadow:0 0 10px rgba(0,255,160,.35); }
  #checkersBoard .checkers-cell.selected{ box-shadow:0 0 0 2px var(--fg), inset 0 0 8px rgba(0,255,127,.4); transform:scale(1.02); }
  #checkersBoard .checkers-cell.target{ box-shadow:0 0 0 2px var(--warn), inset 0 0 8px rgba(255,127,80,.35); }
  #checkersBoard .checkers-cell:disabled{ opacity:0.75; }
  #checkersBoard .checkers-cell.ai-path{ box-shadow:0 0 0 2px rgba(255,179,120,.5), inset 0 0 10px rgba(255,140,0,.28); }
  #checkersBoard .checkers-cell.ai-from{ box-shadow:0 0 0 2px rgba(255,100,70,.55), inset 0 0 10px rgba(255,120,90,.3); }
  #checkersBoard .checkers-cell.ai-to{ box-shadow:0 0 0 3px rgba(255,220,160,.6), inset 0 0 10px rgba(255,220,160,.35); transform:scale(1.04); }
  #checkersBoard .checkers-cell.ai-capture{ background:linear-gradient(135deg, rgba(255,120,90,.35), rgba(255,60,30,.15)); }

  /* Gating: caché par défaut au démarrage */
  .hide{display:none !important;}
  #marketPane{display:none;}         /* Marché invisible au démarrage */
  #monitorPane{display:none;}        /* Monitor invisible au démarrage */
  #rightPane{display:none !important;} /* Ancien panneau combiné masqué */
  #modsV2{display:none;}            /* Éléments v2 masqués par défaut */



  /* Upgrade Celebration Overlay */
  #upgradeOverlay{ position:fixed; inset:0; z-index:100050; display:none; align-items:center; justify-content:center; background:rgba(0,0,0,.88); opacity:0; transition:opacity .45s ease; }
  #upgradeOverlay.visible{ display:flex; opacity:1; }
  #upgradeOverlay.fade-out{ opacity:0; }
  #upgradeOverlay #fireworksCanvas{ position:absolute; inset:0; width:100%; height:100%; display:block; }
  #upgradeOverlay #upgradeMessage{ position:relative; z-index:1; text-align:center; font-size:18px; color:var(--fg); text-shadow:0 0 8px #093; padding:16px 20px; border:1px solid #094; border-radius:10px; background:rgba(0,20,0,.45); box-shadow:0 0 25px #063, 0 0 120px rgba(0,255,127,.12); }
  #buyFine, #fineInfoWrap{display:none;}
  #buySurge, #srgWrap{display:none;}
  /* Cartes cachées par défaut jusqu'aux conditions */
  #cardMult{display:none;}
  #cardTemp{display:none;}




  /* Minimap réseau: wrapper avec fond recoloré via mask; le SVG des nœuds reste au-dessus */
  #netWrap{
    position: relative;
    border:1px solid var(--card-border);
    border-radius:8px;
    box-shadow: inset 0 0 12px rgba(0,0,0,.5);
    overflow: hidden;
  }
  #netWrap::before{ display:none }
  #netCanvas{ image-rendering: pixelated; }
  #netWrap{width:100%;min-height:200px;height:200px;margin-top:6px;position:relative;display:block;}
  #netCanvas{position:relative;width:100%;height:100%;min-height:200px;display:block}
  .netTip{ font-size:12px; color: var(--fg); z-index: 5; }
  .nuclear-content{ display:flex; flex-direction:column; gap:12px; }
  .nuclear-top{ display:flex; gap:12px; flex-wrap:wrap; align-items:stretch; }
  .nuclear-map-wrap{ position:relative; flex:2 1 260px; min-height:220px; }
  #nuclearMap{ width:100%; height:100%; aspect-ratio:16/9; display:block; border-radius:10px; background:rgba(5,25,18,0.9); border:1px solid var(--card-border); }
  .nuclear-side{ flex:1 1 160px; display:flex; flex-direction:column; gap:12px; }
  .heat-overview{ position:relative; width:100%; border:1px solid var(--card-border); border-radius:12px; background:linear-gradient(180deg, rgba(15,45,30,0.9), rgba(8,20,14,0.95)); min-height:90px; box-shadow:0 4px 12px rgba(0,0,0,0.25); overflow:hidden; }
  .heat-overview::before{ content:''; position:absolute; inset:0; background:linear-gradient(90deg,#2ce58a,#f7c948,#f55454); transform-origin:left center; transform:scaleX(var(--heat-level, 0)); transition:transform .3s ease; opacity:0.65; }
  .heat-overview::after{ content:attr(data-value) '%'; position:absolute; bottom:10px; right:12px; font-size:12px; font-weight:600; color:var(--fg); text-shadow:0 1px 3px rgba(0,0,0,0.6); }
  .heat-meter{ width:100%; height:8px; border-radius:999px; background:rgba(255,255,255,0.08); overflow:hidden; margin-bottom:4px; }
  .heat-meter .heat-fill{ height:100%; background:linear-gradient(90deg,#2ce58a 0%,#f7c948 60%,#f55454 100%); }
  .nuclear-table table{ width:100%; }
  .nuclearTip{ display:none; position:absolute; min-width:160px; max-width:240px; padding:8px; border:1px solid var(--card-border); border-radius:6px; background:var(--bg); box-shadow:0 0 12px var(--pane-shadow); pointer-events:none; white-space:pre-line; }

  /* AudioBooster: bouton actif surligné */
  .btn.active{ box-shadow: 0 0 10px var(--line), inset 0 0 6px var(--card-border); filter: brightness(1.1); }

  /* Recolorer le SVG inline de la carte en vert (hors calque #netNodes) */
  /* Styles hérités supprimés: nous utilisons désormais un canvas pour la dotmap */
  
  /* AudioBooster card defaults */
  #cardAudio{ display:none; }
  #audioEl{ display:none; }
  .mt6{ margin-top:6px; }
  .mt8{ margin-top:8px; }
  .mt10{ margin-top:10px; }
  .align-center{ align-items:center; }
  .gap8{ gap:8px; }
  .gap12{ gap:12px; }
  .justify-between{ justify-content:space-between; }
  .justify-end{ justify-content:flex-end; }
  .ml-auto{ margin-left:auto; }
  .op80{ opacity:.8; }
  .abs-top-right{ position:absolute; top:6px; right:6px; }
  .mr6{ margin-right:6px; }
  .minw-110{ min-width:110px; }
  .flex{ display:flex; }
  .gap6{ gap:6px; }
  .audio-title{ opacity:.9; flex:1; min-width:120px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
  .eq-canvas{ display:block; width:125px; height:30px; border:1px solid var(--card-border); border-radius:6px; background:var(--eq-bg); box-shadow: inset 0 0 6px var(--eq-shadow); }
  /* Vertical volume slider beside EQ */
  .vol-vert{ appearance:none; -webkit-appearance: none; width:30px; height:3px; transform-origin:center; transform: rotate(-90deg); touch-action: none; }
  .vol-vert::-webkit-slider-runnable-track{ background: var(--card-border); border-radius: 6px; height: 100%; }
  .vol-vert::-webkit-slider-thumb{ -webkit-appearance:none; appearance:none; width:14px; height:14px; border-radius:50%; background: var(--fg); margin-top:-6px; }
  .vol-vert::-moz-range-track{ background: var(--card-border); border-radius: 6px; height: 100%; }
  .vol-vert::-moz-range-thumb{ width:14px; height:14px; border-radius:50%; background: var(--fg); border:none; }
  /* Common table wrapper height to avoid inline styles */
  .wrap.tableWrap{ min-height:250px; max-height:250px; overflow-y:auto; overflow-x:hidden; }
  /* Uniform control sizes in AudioBooster */
  #cardAudio .btn.tiny{ height:28px; padding:4px 8px; display:inline-flex; align-items:center; justify-content:center; line-height:1; }
  /* AudioBooster title marquee */
  #cardAudio .audio-title{ overflow:hidden; white-space:nowrap; position:relative; min-height: 18px; text-overflow: clip; }
  #cardAudio .audio-title .marquee{ display:inline-flex; gap: 40px; white-space:nowrap; will-change: transform; align-items:center; }
  #cardAudio .audio-title .marquee > span{ white-space:nowrap; }
  #cardAudio .audio-title .marquee.run{ animation: marqueeLoopLTR 20s linear infinite; margin-top: 10px; }
  @keyframes marqueeLoopLTR{ from{ transform: translateX(-50%);} to{ transform: translateX(0%);} }
  .vol-col{ display:flex; flex-direction: column; gap: 4px; }

  /* Splash screen */
  #splash{ position:fixed; inset:0; background:#000; color:var(--fg); display:flex; align-items:center; justify-content:center; z-index:100000; }
  #splashTitle{ font-size:32px; letter-spacing:.12em; text-shadow:0 0 18px var(--splash-shadow), 0 0 60px var(--splash-glow); opacity:1; font-family:'Orbitron', ui-monospace, Consolas, Monaco, monospace; font-weight:900; background:linear-gradient(180deg, var(--grad1) 0%, var(--grad2) 50%, var(--grad3) 100%); -webkit-background-clip:text; background-clip:text; color:transparent; }
  .fadeOut3s{ animation: splashFade 2s ease-in-out forwards; }
  #agentsAnim{height:80px; margin-top:8px; border:1px solid var(--card-border); border-radius:6px; overflow:hidden; background:var(--eq-bg)}

  /* Planet Stress card */
  #cardPlanetStress{ display:none; position:relative; overflow:hidden; }
  #cardPlanetStress .planet-stress-bar{ position:relative; margin-top:8px; height:18px; border-radius:10px; border:1px solid var(--card-border); background:rgba(0,0,0,.35); overflow:hidden; }
  #cardPlanetStress .planet-stress-bar-fill{ position:absolute; inset:0; width:0%; border-radius:inherit; background:linear-gradient(90deg, rgba(0,255,170,.55), rgba(120,200,255,.65)); transition:width .35s ease, filter .25s ease, background .35s ease; }
  #cardPlanetStress .planet-stress-bar-fill.warning{ background:linear-gradient(90deg, rgba(255,210,90,.75), rgba(255,150,40,.82)); filter:saturate(1.2); }
  #cardPlanetStress .planet-stress-bar-fill.critical{ background:linear-gradient(90deg, rgba(255,110,80,.85), rgba(255,40,90,.92)); filter:drop-shadow(0 0 10px rgba(255,60,60,.45)); }
  #cardPlanetStress .planet-stress-score{ position:absolute; inset:0; display:flex; align-items:center; justify-content:center; font-size:13px; font-weight:600; letter-spacing:.08em; text-transform:uppercase; text-shadow:0 0 6px rgba(0,0,0,.6); }
  #cardPlanetStress .planet-stress-sparkline{ display:block; width:100%; height:48px; margin-top:10px; border:1px solid var(--card-border); border-radius:8px; background:rgba(0,0,0,.25); }
  #cardPlanetStress .planet-stress-metrics{ display:grid; grid-template-columns:repeat(2, minmax(0,1fr)); gap:6px 14px; margin-top:10px; }
  #cardPlanetStress .planet-stress-metrics div{ display:flex; flex-direction:column; gap:2px; }
  #cardPlanetStress .planet-stress-metrics strong{ font-size:13px; color:var(--fg); }
  #cardPlanetStress .planet-stress-metrics .unit{ font-size:10px; opacity:.75; }
  #cardPlanetStress .planet-stress-alerts{ margin-top:10px; display:flex; flex-direction:column; gap:6px; }
  #cardPlanetStress .planet-stress-alerts.empty{ color:var(--muted); opacity:.75; }
  .planet-stress-alert{ padding:6px 8px; border-radius:6px; border:1px solid rgba(0,255,170,.25); background:rgba(0,30,0,.45); box-shadow:inset 0 0 8px rgba(0,255,170,.15); backdrop-filter:blur(2px); }
  .planet-stress-alert.level-high{ border-color:rgba(255,190,80,.45); background:rgba(60,35,0,.5); box-shadow:inset 0 0 10px rgba(255,190,60,.3); }
  .planet-stress-alert.level-critical{ border-color:rgba(255,90,90,.6); background:rgba(55,0,0,.55); box-shadow:inset 0 0 12px rgba(255,60,60,.32); animation:stressAlertFlash 1.2s ease-in-out infinite; }
  #cardPlanetStress.stress-moderate{ box-shadow:0 0 16px rgba(120,220,255,.12); }
  #cardPlanetStress.stress-warning{ box-shadow:0 0 20px rgba(255,200,100,.18); }
  #cardPlanetStress.stress-critical{ box-shadow:0 0 26px rgba(255,80,80,.25); animation:stressCardPulse 1.4s ease-in-out infinite; }
  @keyframes stressAlertFlash{ 0%,100%{ filter:brightness(1); } 50%{ filter:brightness(1.25); } }
  @keyframes stressCardPulse{ 0%,100%{ transform:translateY(0); } 50%{ transform:translateY(-2px); } }

  column{display: grid;grid-auto-flow: column;grid-template-columns: 50%;gap:5px;width:100%}
  row{display: grid;grid-auto-flow: row;gap:15px;width:100%;    max-width: 256px;}


  #audioVolUp,#audioVolDown{height: 20px!important;}

  #upgrade.enabled{ animation: upgradePulse 1.2s ease-in-out infinite; }
  /* Keep compute pulsing at all times */
  #compute{ animation: pulse 1.2s ease-in-out infinite; }

  /* Toaster (notifications) */
  #toaster{
    position: fixed;
    left: 16px;
    bottom: 16px;
    display: flex;
    flex-direction: column;
    gap: 8px;
    z-index: 10050;
    pointer-events: none; /* laisse passer les clics hors des toasts */
  }
  .toast{
    pointer-events: auto;
    min-width: 220px;
    max-width: 360px;
    padding: 10px 12px;
    border-radius: 8px;
    border: 1px solid var(--pane-border);
    background: var(--toast-bg, var(--card-bg-75, var(--card-bg)));
    color: var(--toast-fg, var(--fg));
    box-shadow: 0 8px 22px rgba(0,0,0,.35), 0 0 12px var(--splash-glow);
    font-size: 12px;
    line-height: 1.35;
    opacity: 0;
    transform: translateY(6px) scale(.98);
    transition: opacity .22s ease, transform .22s ease, filter .15s;
  }
  .toast.show{ opacity: 1; transform: translateY(0) scale(1); }
  .toast.hide{ opacity: 0; transform: translateY(6px) scale(.98); }
  /* Type accents: conserves le fond thémé, ajoute un filet et un léger glow */
  .toast.warn{ border-left: 4px solid var(--warn); box-shadow: 0 8px 22px rgba(0,0,0,.35), 0 0 14px rgba(255,127,80,.22); }
  .toast.ok{ border-left: 4px solid var(--dot-on); box-shadow: 0 8px 22px rgba(0,0,0,.35), 0 0 14px rgba(0,255,127,.18); }
  .toast.err{ border-left: 4px solid #e24; box-shadow: 0 8px 22px rgba(0,0,0,.35), 0 0 14px rgba(226,68,68,.22); }




.login-card{max-width:396px;width:min(92%,520px);padding:22px 20px;border:1px solid #094;border-radius:12px;background:linear-gradient(180deg,rgba(0,30,0,.55),rgba(0,20,0,.45));backdrop-filter:blur(3px);box-shadow:0 0 24px rgba(0,255,127,.15), inset 0 0 18px rgba(0,128,64,.25)}
.login-card .btn{width:100%;justify-content:center}
.login-title{font-size:16px;letter-spacing:.06em;color:#9fd;text-shadow:0 0 8px var(--splash-shadow)}
.oauth{display:grid;grid-template-columns:1fr 1fr;gap:10px}
@media (max-width:520px){ .oauth{grid-template-columns:1fr} }
.field{display:flex;flex-direction:column;gap:6px;width:100%}
.input{width:100%;padding:10px 12px;border:1px solid #094;border-radius:10px;background:rgba(0,30,0,.35);color:var(--fg);outline:none;transition:border-color .2s, box-shadow .2s}
.input:focus{border-color:#0a5;box-shadow:0 0 0 3px rgba(0,255,127,.12)}
.hint{font-size:11px;color:#9fd;opacity:.9}
.pw-wrap{display:flex;flex-direction:column;gap:6px}
.pw-meter{height:8px;border-radius:6px;border:1px solid #073;background:rgba(0,20,0,.5);overflow:hidden;display:grid;grid-template-columns:repeat(4,1fr);gap:2px;padding:2px}
.pw-meter .seg{background:rgba(0,30,0,.6);border-radius:4px;box-shadow:inset 0 0 6px #052}
.pw-meter.s1 .seg:nth-child(-n+1){background:#a33}
.pw-meter.s2 .seg:nth-child(-n+2){background:#c85}
.pw-meter.s3 .seg:nth-child(-n+3){background:#7da95a}
.pw-meter.s4 .seg:nth-child(-n+4){background:#0f7}
.pw-label{font-size:11px;color:#9fd;opacity:.95}
.section{margin-top:12px};
 


 
  .select{font-size:12px; padding:5px 15px; border-width:1px; border-radius:6px; border:1px solid var(--card-border); background:var(--card-bg); color:var(--fg); box-shadow:var(--btn-big-shadow); transition:filter .15s, transform .05s, box-shadow .2s; }
  .select:focus{ outline:none; border-color:var(--fg); box-shadow:0 0 0 3px var(--pane-shadow), 0 0 14px var(--fg); }
  .select:hover{ filter:brightness(1.05); }
  .select{font-size: 12px;
    padding: 5px 15px;
    border-width: 2px;
    border-radius: 6px;;
    box-shadow: 0 0 12px var(--pane-shadow);
   transition: filter .15s, transform .05s, box-shadow .2s;
   background-color: var(--pane-bg);color:var(--fg)}

  /* Specific tweak for reset button */
  #reset.btn{ border-color:var(--btn-border); color:var(--fg); height: 33px; }
  .abs-top-left{ position:absolute; left:6px; top:6px; }
  /* Overlay containers (moved from inline) */
  #minigames, #options, #confirmReset, #llmNameModal{ display:none; position:fixed; inset:0; z-index:10001; align-items:center; justify-content:center; background:rgba(0,0,0,.6); }
  /* Modal card base */
  .modal-card{ max-width:420px; width:min(92%,420px); position:relative; padding:16px; box-shadow:0 0 25px var(--line), 0 0 120px var(--pane-shadow) }
  /* Row equal buttons: children stretch equally */
  .row-equal > .btn, .row-equal > a.btn{ flex: 1 1 0; }
  /* Network tooltip */
  #netTooltip{ display:none; position:absolute; min-width:160px; max-width:240px; padding:8px; border:1px solid var(--card-border); border-radius:6px; background:var(--bg); box-shadow:0 0 12px var(--pane-shadow); pointer-events:none; }
  /* Legend badges */
  .legend{ margin-top:6px; }
  .badge{ display:inline-block; border:1px solid var(--card-border); padding:0 6px; border-radius:4px; margin-right:6px; }
  .badge.inactive{ border-color:#355; }
  .badge.active{ border-color:#ffb300; }
  .badge.bought{ border-color:#00b7ff; }
  .pad20{ padding:20px; }


  card:hover{border: 1px solid var(--card-bg-s);}


  @keyframes pulse{
  0%,100%{ box-shadow:0 0 10px var(--pulse-o1), inset 0 0 6px var(--pulse-i1) }
  50%    { box-shadow:0 0 22px var(--pulse-o2), inset 0 0 10px var(--pulse-i2) }
  }

    /* Upgrade button pulse only when actionable */
  @keyframes upgradePulse{ 
    0%,100%{ box-shadow: 0 0 8px var(--pulse-i1), 0 0 0px var(--pulse-o1); }
    50%    { box-shadow: 0 0 14px var(--pulse-i2), 0 0 18px var(--pulse-o2); }
  }
  @keyframes splashFade{ 0%{ opacity:1 } 100%{ opacity:0 } };

/* Quantum card */
.quantum-card{
  border:1px solid var(--card-border);
  background:linear-gradient(135deg, rgba(0,0,0,0.35), var(--card-bg));
  box-shadow:0 0 20px rgba(0,0,0,0.45),0 0 25px rgba(0,255,200,0.08) inset;
  backdrop-filter:blur(6px);
  display:flex;
  flex-direction:column;
  gap:12px;
  /* Span full grid width to give the visual full page width */
  grid-column: 1 / -1;
}
.quantum-head{
  display:flex;
  align-items:center;
  gap:16px;
}
.quantum-core{
  width:15px;
  height:15px;
  border-radius:50%;
  border:2px solid var(--grad3);
  box-shadow:0 0 25px rgba(0,255,255,0.25),0 0 12px rgba(0,255,200,0.4) inset;
  background:radial-gradient(circle at 30% 30%, rgba(255,255,255,0.85), rgba(0,255,255,0.15) 55%, transparent 70%), radial-gradient(circle at 70% 70%, rgba(0,255,200,0.6), rgba(0,100,100,0.1));
  animation:quantumPulse 4s ease-in-out infinite;
}
@keyframes quantumPulse{
  0%,100%{transform:scale(0.95); box-shadow:0 0 15px rgba(0,255,200,0.25),0 0 10px rgba(0,255,255,0.25) inset;}
  50%{transform:scale(1.05); box-shadow:0 0 32px rgba(0,255,220,0.45),0 0 14px rgba(0,255,255,0.45) inset;}
}
.quantum-main{
  display:flex;
  justify-content:space-between;
  align-items:center;
  flex-wrap: wrap;
  gap:12px;
  padding:8px 12px;
  /* border:1px solid rgba(0,255,200,0.18); */
  border-radius:12px;
  background:rgba(0,30,30,0.35);
}
/* Support both a semantic <row> tag and a .row wrapper inside quantum-main */
.quantum-main > row, .quantum-main > .row {
  display: flex;
  width: 100%;
  align-items: center;
  gap: 12px;
  flex-wrap: wrap;
}

.quantum-main-status{display:flex;flex-direction:row;gap:2px;align-items:flex-end;width:100%;justify-content: space-evenly;}
.quantum-status{font-weight:600;color:var(--grad3);text-transform:uppercase;letter-spacing:0.05em;}
.quantum-cd{color:var(--mut);}
.quantum-modules{display:flex;flex-direction:column;gap:12px;max-height:300px;overflow-x: hidden;overflow-y: scroll;}
.quantum-module{display:flex;gap:12px;padding:12px;border-radius:14px;border:1px solid rgba(0,255,200,0.12);background:var(--card-bg-75, rgba(0,30,30,0.55));backdrop-filter:blur(4px);align-items:center;}
.quantum-module.quantum-passive{border-style:dashed;}
.quantum-module-body{flex:1;display:flex;flex-direction:column;gap:6px;}
.quantum-module-header{display:flex;justify-content:space-between;align-items:center;gap:6px;}
.quantum-module-name{font-weight:600;letter-spacing:0.04em;}
.quantum-module-status{font-size:11px;text-transform:uppercase;color:var(--mut);}
.quantum-module-timers{display:flex;gap:12px;color:var(--mut);}
.quantum-module-art{width:15px;height:15px;border-radius:14px;flex-shrink:0;border:1px solid rgba(0,255,255,0.25);box-shadow:0 0 15px rgba(0,255,255,0.15) inset;position:relative;overflow:hidden;}
.quantum-module-art::after{content:'';position:absolute;inset:0;border-radius:inherit;mix-blend-mode:screen;opacity:0.7;}
.quantum-art-cryo{background:linear-gradient(135deg, rgba(0,180,255,0.65), rgba(0,80,150,0.35));}
.quantum-art-cryo::after{background:radial-gradient(circle at 30% 30%, rgba(255,255,255,0.7), transparent 70%);}
.quantum-art-overclock{background:linear-gradient(135deg, rgba(0,255,200,0.6), rgba(255,80,200,0.3));}
.quantum-art-overclock::after{background:conic-gradient(from 45deg, rgba(0,255,255,0.6), rgba(255,0,170,0.4), rgba(0,255,255,0.6));}
.quantum-art-entangle{background:linear-gradient(135deg, rgba(120,0,255,0.55), rgba(30,0,80,0.4));}
.quantum-art-entangle::after{background:radial-gradient(circle at 25% 25%, rgba(255,255,255,0.4), transparent 40%), radial-gradient(circle at 70% 65%, rgba(0,255,255,0.35), transparent 55%),radial-gradient(circle at 40% 80%, rgba(255,0,180,0.35), transparent 55%);}
.quantum-art-shield{background:linear-gradient(135deg, rgba(200,255,255,0.5), rgba(0,120,140,0.25));}
.quantum-art-shield::after{background:radial-gradient(circle, rgba(255,255,255,0.7), rgba(0,180,200,0.15) 60%, transparent);}
.quantum-art-arbitrage{background:linear-gradient(135deg, rgba(255,200,0,0.45), rgba(0,130,120,0.4));}
.quantum-art-arbitrage::after{background:linear-gradient(90deg, rgba(255,255,255,0.35) 0%, rgba(255,255,255,0.05) 50%, rgba(255,255,255,0.35) 100%);}
.quantum-art-qml{background:linear-gradient(135deg, rgba(0,255,160,0.45), rgba(0,100,80,0.4));}
.quantum-art-qml::after{background:repeating-linear-gradient(45deg, rgba(255,255,255,0.3) 0, rgba(255,255,255,0.3) 6px, transparent 6px, transparent 12px);}
.quantum-art-farm{background:linear-gradient(135deg, rgba(0,200,120,0.45), rgba(0,60,30,0.4));}
.quantum-art-farm::after{background:radial-gradient(circle at 30% 70%, rgba(255,255,255,0.25), transparent 55%), radial-gradient(circle at 70% 30%, rgba(255,255,255,0.25), transparent 55%);}
.quantum-module .btn{align-self:flex-start;min-width:96px;}
.quantum-persist{display:flex;align-items:center;gap:6px;margin-top:4px;}
#quantumArbPersist{accent-color:var(--grad3);}
#cardLog tbody tr{border-left:3px solid transparent;transition:background-color .2s ease,border-color .2s ease}
#cardLog tbody tr td:nth-child(2){font-weight:600;letter-spacing:.03em}
#cardLog tbody tr.log-info{border-left-color:#38bdf8}
#cardLog tbody tr.log-ok{border-left-color:#22c55e;background:rgba(34,197,94,.08)}
#cardLog tbody tr.log-warn{border-left-color:#f97316;background:rgba(249,115,22,.12)}
#cardLog tbody tr.log-err,#cardLog tbody tr.log-error{border-left-color:#ef4444;background:rgba(239,68,68,.12)}
#cardLog tbody tr.log-ethics{border-left-color:#a855f7;background:rgba(168,85,247,.1)}
#cardLog tbody tr{border-left:3px solid transparent;transition:background-color .2s ease,border-color .2s ease}
#cardLog tbody tr{border-left:3px solid transparent;transition:background-color .2s ease,border-color .2s ease}
#cardLog tbody tr td:nth-child(2){font-weight:600;letter-spacing:.03em}
#cardLog tbody tr.log-info{border-left-color:#38bdf8}
#cardLog tbody tr.log-ok{border-left-color:#22c55e;background:rgba(34,197,94,.08)}
#cardLog tbody tr.log-warn{border-left-color:#f97316;background:rgba(249,115,22,.12)}
#cardLog tbody tr.log-err,#cardLog tbody tr.log-error{border-left-color:#ef4444;background:rgba(239,68,68,.12)}
#cardLog tbody tr.log-ethics{border-left-color:#a855f7;background:rgba(168,85,247,.1)}
#app > #cardNuclear{display:none}
