  @import url('https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;500;600&family=Newsreader:ital,opsz,wght@0,6..72,400;0,6..72,500;1,6..72,400&display=swap');

  :root {
    --bg:#f4f2ed;--surface:#fff;--border:#d9d4ca;--border-focus:#2563eb;
    --text:#1c1917;--text-muted:#78716c;--output-bg:#fafaf6;
    --accent:#2563eb;--accent-hover:#1d4ed8;--accent-light:#eff3ff;
    --success:#15803d;--error:#b91c1c;--warning:#ca8a04;
    --shadow-sm:0 1px 2px rgba(0,0,0,0.04);--shadow:0 2px 8px rgba(0,0,0,0.06);
    --radius:10px;
    --mono:'JetBrains Mono','Menlo','Consolas',monospace;
    --body:'Newsreader','Georgia',serif;
  }
  *{margin:0;padding:0;box-sizing:border-box}
  body{font-family:var(--body);background:var(--bg);color:var(--text);line-height:1.65}

  /* ═══════ Header ═══════ */
  .header{background:#0c0f1a;color:#eae8e0;padding:1.6rem 2rem 1.2rem;position:relative;overflow:hidden}
  .header::before{content:'';position:absolute;inset:0;background:radial-gradient(ellipse 500px 250px at 5% 90%,rgba(37,99,235,.12),transparent),radial-gradient(ellipse 350px 180px at 95% 10%,rgba(168,85,247,.08),transparent);pointer-events:none}
  .header-inner{position:relative;max-width:960px;margin:0 auto;display:flex;align-items:flex-start;justify-content:space-between;flex-wrap:wrap;gap:.5rem}
  .header-left h1{font-family:var(--mono);font-size:1.35rem;font-weight:500;letter-spacing:-.3px}
  .header-left p{font-size:.82rem;opacity:.5;margin-top:.1rem;font-family:var(--mono)}
  .header-right{display:flex;align-items:center;gap:.75rem;margin-top:.2rem}
  #giac-status{display:inline-flex;align-items:center;gap:5px;font-family:var(--mono);font-size:.7rem;padding:4px 11px;border-radius:20px;background:rgba(255,255,255,.07);transition:background .3s}
  #giac-status .dot{width:7px;height:7px;border-radius:50%;background:#facc15;transition:background .3s}
  #giac-status.ready .dot{background:#4ade80}
  #giac-status.error .dot{background:#f87171}
  .lang-select{font-family:var(--mono);font-size:.7rem;padding:3px 8px;border-radius:5px;border:1px solid rgba(255,255,255,.15);background:rgba(255,255,255,.06);color:#eae8e0;cursor:pointer;outline:none}
  .lang-select:hover{border-color:rgba(255,255,255,.3)}
  .lang-select option{background:#1c1917;color:#eae8e0}
  .kernel-select{font-family:var(--mono);font-size:.7rem;padding:3px 8px;border-radius:5px;border:1px solid rgba(255,255,255,.15);background:rgba(255,255,255,.06);color:#eae8e0;cursor:pointer;outline:none}
  .kernel-select:hover{border-color:rgba(255,255,255,.3)}
  .kernel-select option{background:#1c1917;color:#eae8e0}
  .kernel-select option:disabled{color:#78716c}

  /* ═══════ Toolbar ═══════ */
  .toolbar-wrap{border-bottom:1px solid var(--border);background:var(--surface);padding:0 2rem}
  .toolbar{max-width:960px;margin:0 auto;display:flex;gap:.4rem;padding:.6rem 0;flex-wrap:wrap;align-items:center}
  .toolbar button{font-family:var(--mono);font-size:.72rem;padding:5px 12px;border:1px solid var(--border);border-radius:6px;background:var(--bg);color:var(--text);cursor:pointer;transition:all .15s;white-space:nowrap}
  .toolbar button:hover{background:var(--accent);color:#fff;border-color:var(--accent)}
  .toolbar button.primary{background:var(--accent);color:#fff;border-color:var(--accent)}
  .toolbar button.primary:hover{background:var(--accent-hover)}
  .toolbar .sep{width:1px;height:20px;background:var(--border);margin:0 .15rem}

  .examples-menu{position:absolute;top:100%;left:0;z-index:100;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:0 4px 12px rgba(0,0,0,.12);padding:.3rem;min-width:180px}
  .examples-menu button{display:block;width:100%;text-align:left;font-family:var(--mono);font-size:.75rem;padding:6px 10px;border:none;border-radius:4px;background:transparent;color:var(--text);cursor:pointer}
  .examples-menu button:hover{background:var(--accent);color:#fff}
  .examples-menu-heading{font-family:var(--mono);font-size:.65rem;font-weight:600;padding:6px 10px 2px;color:var(--text-muted);text-transform:uppercase;letter-spacing:.5px;border-top:1px solid var(--border);margin-top:2px}
  .examples-menu-heading:first-child{border-top:none;margin-top:0}

  /* ═══════ Command Menu ═══════ */
  .command-menu{position:absolute;top:100%;left:0;z-index:200;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:0 4px 12px rgba(0,0,0,.12);min-width:280px;max-width:400px;max-height:60vh;display:flex;flex-direction:column}
  .command-menu-search{padding:.4rem;border-bottom:1px solid var(--border);position:sticky;top:0;background:var(--surface);z-index:1}
  .command-menu-search input{width:100%;box-sizing:border-box;padding:6px 10px;border:1px solid var(--border);border-radius:4px;font-family:var(--mono);font-size:.75rem;background:var(--bg);color:var(--text);outline:none}
  .command-menu-search input:focus{border-color:var(--accent)}
  .command-menu-breadcrumb{padding:4px 10px;border-bottom:1px solid var(--border);font-family:var(--mono);font-size:.7rem;color:var(--muted);display:flex;align-items:center;gap:2px;flex-wrap:wrap}
  .command-menu-breadcrumb span{cursor:pointer;color:var(--accent);padding:1px 3px;border-radius:3px}
  .command-menu-breadcrumb span:hover{background:var(--accent);color:#fff}
  .command-menu-breadcrumb .sep{cursor:default;color:var(--muted);padding:0}
  .command-menu-breadcrumb .sep:hover{background:transparent;color:var(--muted)}
  .command-menu-breadcrumb .back-btn{margin-left:auto;cursor:pointer;padding:1px 5px;border-radius:3px}
  .command-menu-breadcrumb .back-btn:hover{background:var(--accent);color:#fff}
  .command-menu-list{overflow-y:auto;flex:1;padding:.3rem}
  .command-menu-category{display:flex;align-items:center;width:100%;text-align:left;font-family:var(--mono);font-size:.75rem;padding:6px 10px;border:none;border-radius:4px;background:transparent;color:var(--text);cursor:pointer}
  .command-menu-category:hover{background:var(--accent);color:#fff}
  .command-menu-category .icon{margin-right:6px;font-size:.85rem}
  .command-menu-category .arrow{margin-left:auto;opacity:.5}
  .command-menu-command{display:block;width:100%;text-align:left;font-family:var(--mono);font-size:.75rem;padding:6px 10px;border:none;border-radius:4px;background:transparent;color:var(--text);cursor:pointer}
  .command-menu-command:hover{background:var(--accent);color:#fff}
  .command-menu-command .cat-hint{font-size:.65rem;color:var(--muted);margin-left:6px}
  .command-menu-command:hover .cat-hint{color:rgba(255,255,255,.7)}
  .command-menu-command .help-icon{float:right;font-size:.65rem;font-weight:700;color:var(--muted);background:var(--bg);border:1px solid var(--border);border-radius:50%;width:16px;height:16px;line-height:14px;text-align:center;cursor:pointer;opacity:0;transition:opacity .15s}
  .command-menu-command:hover .help-icon{opacity:1}
  .command-menu-command:hover .help-icon:hover{background:var(--accent);color:#fff;border-color:var(--accent)}
  .command-menu-footer{padding:4px 10px;border-top:1px solid var(--border);font-size:.65rem;color:var(--muted);text-align:center}
  .command-menu-no-results{padding:16px 10px;text-align:center;color:var(--muted);font-size:.8rem}
  .command-menu-overlay{display:none}
  .command-menu-close{display:none}
  .command-menu-header{display:none}

  @media(max-width:767px){
    .command-menu{position:fixed;top:0;left:0;right:0;bottom:0;max-width:none;max-height:none;border-radius:0;z-index:1000}
    .command-menu-overlay{display:block;position:fixed;inset:0;background:rgba(0,0,0,.4);z-index:999}
    .command-menu-header{display:flex;align-items:center;justify-content:space-between;padding:10px 12px;border-bottom:1px solid var(--border);font-family:var(--mono);font-size:.9rem;font-weight:600}
    .command-menu-close{display:block;border:none;background:transparent;font-size:1.2rem;cursor:pointer;color:var(--text);padding:2px 6px;border-radius:4px}
    .command-menu-close:hover{background:var(--accent);color:#fff}
  }

  /* ═══════ Help Panel ═══════ */
  .help-panel{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);padding:1rem;margin-top:.5rem;max-height:60vh;overflow-y:auto;font-family:var(--body);color:var(--text)}
  .help-panel-floating{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);z-index:1001;width:90%;max-width:600px;max-height:80vh;box-shadow:0 8px 32px rgba(0,0,0,.18)}
  .help-panel-overlay{position:fixed;inset:0;background:rgba(0,0,0,.4);z-index:1000}
  .help-panel-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:.5rem;gap:.5rem}
  .help-panel-header h3{margin:0;font-size:1.1rem;font-family:var(--mono)}
  .help-panel-header .help-aliases{font-size:.85rem;color:var(--muted);font-style:italic}
  .help-panel-actions{display:flex;gap:.3rem}
  .help-panel-actions button{border:1px solid var(--border);background:var(--surface);color:var(--text);padding:2px 8px;border-radius:var(--radius);cursor:pointer;font-size:.8rem}
  .help-panel-actions button:hover{background:var(--accent);color:#fff}
  .help-panel-section{margin-top:.7rem;padding-top:.5rem;border-top:1px solid var(--border)}
  .help-panel-section h4{margin:0 0 .3rem;font-size:.85rem;color:var(--muted);text-transform:uppercase;letter-spacing:.05em}
  .help-panel-description{line-height:1.5}
  .help-panel-syntax{font-family:var(--mono);background:var(--bg);padding:.3rem .5rem;border-radius:var(--radius);font-size:.9rem;overflow-x:auto}
  .help-panel-examples{list-style:none;padding:0;margin:0}
  .help-panel-example{display:flex;align-items:center;gap:.4rem;padding:.2rem 0}
  .help-panel-example code{flex:1;font-family:var(--mono);font-size:.85rem;background:var(--bg);padding:.2rem .4rem;border-radius:var(--radius);cursor:pointer;overflow-x:auto;white-space:nowrap}
  .help-panel-example code:hover{background:var(--accent);color:#fff}
  .help-panel-example .help-run-btn{border:none;background:transparent;cursor:pointer;font-size:.8rem;padding:2px 4px;color:var(--muted)}
  .help-panel-example .help-run-btn:hover{color:var(--accent)}
  .help-panel-related{display:flex;flex-wrap:wrap;gap:.3rem}
  .help-panel-related a{color:var(--accent);text-decoration:none;font-family:var(--mono);font-size:.85rem;cursor:pointer}
  .help-panel-related a:hover{text-decoration:underline}
  .help-panel-fallback{color:var(--muted);font-style:italic;padding:.5rem 0}
  .help-panel-loading{color:var(--muted);text-align:center;padding:1rem}
  .help-panel-lang-note{font-size:.75rem;color:var(--muted);margin-left:.3rem}
  .help-panel-lang-banner{font-size:.8rem;color:var(--muted);background:var(--bg);border:1px solid var(--border);border-radius:4px;padding:.4rem .6rem;margin-bottom:.5rem;font-style:italic}

  @media(max-width:767px){
    .help-panel-floating{width:95%;max-width:none;top:5%;left:2.5%;transform:none;max-height:90vh}
  }

  /* ═══════ Command Discovery ═══════ */
  .discovery-result{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);padding:1rem;margin-top:.5rem;max-height:60vh;overflow-y:auto;font-family:var(--body);color:var(--text)}
  .discovery-header{margin-bottom:.5rem}
  .discovery-header code{font-family:var(--mono);font-size:.95rem;font-weight:600}
  .discovery-subtitle{font-size:.85rem;color:var(--muted);margin-bottom:.5rem}
  .discovery-count{font-size:2rem;font-weight:700;color:var(--accent);padding:.5rem 0}
  .discovery-list{display:flex;flex-wrap:wrap;gap:.3rem}
  .discovery-cmd-link{font-family:var(--mono);font-size:.85rem;background:var(--bg);padding:.15rem .4rem;border-radius:var(--radius);cursor:pointer;color:var(--accent);text-decoration:none}
  .discovery-cmd-link:hover{background:var(--accent);color:#fff}
  .discovery-cat-link{cursor:pointer;color:var(--accent)}
  .discovery-cat-link:hover{text-decoration:underline}
  .discovery-table{width:100%;border-collapse:collapse;font-size:.85rem;margin-top:.3rem}
  .discovery-table th{text-align:left;font-weight:600;padding:.3rem .5rem;border-bottom:2px solid var(--border);color:var(--muted);font-size:.8rem;text-transform:uppercase;letter-spacing:.03em}
  .discovery-table td{padding:.25rem .5rem;border-bottom:1px solid var(--border);vertical-align:top}
  .discovery-table tr:hover td{background:var(--bg)}

  /* ═══════ About Dialog ═══════ */
  .about-overlay{position:fixed;inset:0;z-index:1000;background:rgba(0,0,0,.4);display:flex;align-items:center;justify-content:center;padding:1rem}
  .about-dialog{position:relative;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:0 8px 32px rgba(0,0,0,.18);padding:2rem 2.2rem;max-width:540px;width:100%;max-height:85vh;overflow-y:auto;font-family:var(--body);color:var(--text)}
  .about-dialog h2{font-family:var(--mono);font-size:1.2rem;font-weight:600;margin-bottom:.1rem}
  .about-dialog .about-version{font-family:var(--mono);font-size:.75rem;color:var(--text-muted);margin-bottom:.2rem}
  .about-dialog .about-author{font-size:.82rem;color:var(--text-muted);margin-bottom:.8rem}
  .about-dialog h3{font-family:var(--mono);font-size:.85rem;font-weight:500;margin-top:1.2rem;margin-bottom:.4rem;color:var(--accent)}
  .about-dialog p{font-size:.85rem;line-height:1.6;margin-bottom:.5rem}
  .about-dialog table{width:100%;border-collapse:collapse;font-size:.78rem;margin:.4rem 0 .8rem}
  .about-dialog th{text-align:left;font-family:var(--mono);font-weight:500;padding:5px 8px;border-bottom:2px solid var(--border);font-size:.72rem;color:var(--text-muted)}
  .about-dialog td{padding:5px 8px;border-bottom:1px solid var(--border)}
  .about-dialog a{color:var(--accent);text-decoration:none}
  .about-dialog a:hover{text-decoration:underline}
  .about-close{position:absolute;top:.7rem;right:.9rem;background:none;border:none;font-size:1.3rem;cursor:pointer;color:var(--text-muted);line-height:1}
  .about-close:hover{color:var(--text)}
  .about-qr{text-align:center;margin-top:.8rem}
  .about-qr svg{width:256px;height:256px;display:inline-block}
  .about-qr-url{font-family:var(--mono);font-size:.7rem;color:var(--text-muted);word-break:break-all;margin-top:.3rem}
  .qr-fullscreen-overlay{position:fixed;inset:0;z-index:10000;background:rgba(0,0,0,.85);display:flex;align-items:center;justify-content:center;cursor:pointer}
  .qr-fullscreen-content{background:#fff;border-radius:12px;padding:2rem;display:flex;align-items:center;justify-content:center}
  .qr-fullscreen-content svg{width:min(80vw,80vh);height:min(80vw,80vh)}
  .about-share-buttons{display:flex;flex-wrap:wrap;gap:.4rem;justify-content:center;margin:.6rem 0}
  .about-share-buttons button,.about-share-buttons a{display:inline-flex;align-items:center;gap:.3rem;padding:.35rem .7rem;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);color:var(--text);font-size:.78rem;cursor:pointer;text-decoration:none;transition:background .15s}
  .about-share-buttons button:hover,.about-share-buttons a:hover{background:var(--accent);color:#fff;border-color:var(--accent)}
  .about-share-buttons .share-primary{background:var(--accent);color:#fff;border-color:var(--accent);font-weight:500}
  .about-share-buttons .share-primary:hover{opacity:.85}

  /* ═══════ Slider cells ═══════ */
  .cell[data-type="slider"] .cell-badge{background:#8b5cf6;color:#fff}
  .slider-params{padding:.5rem 0}
  .slider-code{padding:.4rem .6rem;margin-top:.3rem;background:var(--output-bg);border:1px solid var(--border);border-radius:4px;font-family:var(--mono);font-size:.8rem;line-height:1.5;overflow-x:auto}
  .slider-code code{display:block;white-space:pre-wrap;word-break:break-all}
  .slider-expr-template{color:var(--text-muted);font-size:.75rem}
  .slider-expr-template::before{content:'Expression: ';font-weight:500}
  .slider-expr-resolved{color:var(--text);margin-top:.15rem}
  .slider-expr-resolved::before{content:'\2192  ';color:var(--accent);font-weight:500}
  .slider-fallback{color:var(--text-muted);font-size:.85rem;font-style:italic;padding:.5rem 0}
  .slider-static{font-size:.85rem;color:var(--text);padding:.15rem 0}
  .report-mode .slider-params slider-param{pointer-events:none;opacity:.6}
  .report-mode .slider-params slider-param input[type=range]{display:none}
  .report-mode .slider-code{display:none}
  @media(max-width:600px){
    .slider-params slider-param{--slider-label-width:90px}
  }

  /* ═══════ @bind sliders in text cells ═══════ */
  .md-out slider-param{display:block;margin:.4rem 0}
  .md-out .bind-fallback{font-size:.85rem;color:var(--text-muted);font-style:italic;padding:.3rem 0}
  .report-mode .md-out slider-param{pointer-events:none;opacity:.6}
  .report-mode .md-out slider-param input[type=range]{display:none}

  /* ═══════ Notebook ═══════ */
  .notebook{max-width:960px;margin:1.2rem auto;padding:0 1rem 5rem}

  /* ═══════ Empty Notebook ═══════ */
  .empty-notebook{text-align:center;padding:3rem 1rem;color:var(--text-muted);font-family:var(--mono)}
  .empty-notebook p{font-size:1rem;margin-bottom:1rem}
  .empty-notebook button{font-size:.9rem;padding:.5rem 1.2rem;border:1.5px dashed var(--border);border-radius:var(--radius);background:transparent;color:var(--accent);cursor:pointer;font-family:var(--mono);transition:all .15s}
  .empty-notebook button:hover{background:var(--accent-light);border-color:var(--accent)}
  .empty-notebook .empty-hint{font-size:.75rem;margin-top:1rem;opacity:.7}

  .notebook-footer{text-align:center;padding:1rem;color:var(--text-muted);font-family:var(--mono)}
  .notebook-footer .empty-hint{font-size:.75rem;opacity:.7}

  /* ═══════ Cell ═══════ */
  .cell{background:var(--surface);border:1.5px solid var(--border);border-radius:var(--radius);margin-bottom:.6rem;box-shadow:var(--shadow-sm);transition:border-color .2s,box-shadow .2s}
  .cell:focus-within{border-color:var(--border-focus);box-shadow:0 0 0 3px rgba(37,99,235,.07)}
  .cell.running{border-color:var(--warning)}
  .cell-head{display:flex;align-items:center;padding:.3rem .7rem;border-bottom:1px solid var(--border);background:#fafaf7;border-radius:var(--radius) var(--radius) 0 0;gap:.45rem;min-height:30px}
  .cell-idx{font-family:var(--mono);font-size:.66rem;color:var(--text-muted);min-width:44px;cursor:pointer;position:relative}
  .cell-idx::after{content:'⇗';font-size:.55rem;margin-left:2px;opacity:0;transition:opacity .15s}
  .cell-idx:hover{color:var(--border-focus);text-decoration:underline}
  .cell-idx:hover::after{opacity:.7}
  .cell-badge{font-family:var(--mono);font-size:.6rem;padding:1px 7px;border-radius:4px;color:#fff;letter-spacing:.3px;text-transform:uppercase;cursor:pointer;transition:opacity .15s}
  .cell-badge:hover{opacity:.8}
  .cell-badge.math{background:#7c3aed}.cell-badge.text{background:#d97706}.cell-badge.raw{background:#64748b}
  .mode-toggle{font-family:var(--mono);font-size:.63rem;display:flex;border:1px solid var(--border);border-radius:4px;overflow:hidden;margin-inline-start:.2rem}
  .mode-toggle button{padding:2px 7px;border:none;background:transparent;color:var(--text-muted);cursor:pointer;font-family:inherit;font-size:inherit;transition:all .15s}
  .mode-toggle button.active{background:var(--accent);color:#fff}
  .mode-toggle button:hover:not(.active){background:var(--accent-light)}
  .cell-actions{margin-inline-start:auto;display:flex;gap:3px;opacity:0;transition:opacity .15s}
  .cell:hover .cell-actions{opacity:1}
  .cell-actions button{font-size:.66rem;padding:2px 7px;border:none;border-radius:3px;background:transparent;color:var(--text-muted);cursor:pointer;font-family:var(--mono)}
  .cell-actions button:hover{background:#eee;color:var(--text)}
  .cell-actions button.del:hover{background:#fee;color:var(--error)}

  /* ═══════ Insert Cell Zones ═══════ */
  .cell-insert-zone{display:flex;justify-content:flex-start;align-items:center;height:12px;cursor:pointer;margin:-6px 0;position:relative;z-index:2;padding-inline-start:5%}
  .cell-insert-zone span{opacity:.35;font-size:.75rem;font-family:var(--mono);color:var(--text-muted);background:var(--surface);border:1px solid var(--border);border-radius:50%;width:22px;height:22px;line-height:20px;text-align:center;box-shadow:var(--shadow-sm);transition:opacity .15s}
  .cell-insert-zone:hover span{opacity:1}
  .cell-insert-zone:hover span:hover{background:var(--accent);color:#fff;border-color:var(--accent)}

  /* ═══════ Input ═══════ */
  .cell-input{padding:.65rem .8rem;min-height:46px}
  .cell-input math-field{width:100%;font-size:1.2rem;border:none;outline:none;--caret-color:var(--accent);--selection-background-color:rgba(37,99,235,.12)}
  .cell-input math-field::part(placeholder){color:var(--text-muted,#999);opacity:.6}
  .cell-input textarea{width:100%;min-height:34px;border:none;outline:none;font-family:var(--mono);font-size:.8rem;color:var(--text);background:transparent;resize:vertical;line-height:1.55}

  /* ═══════ Debug ═══════ */
  .cell-debug{padding:.3rem .8rem;background:#f7f6f2;border-top:1px dashed var(--border);font-family:var(--mono);font-size:.65rem;color:var(--text-muted);display:none;overflow-x:auto;word-break:break-all}
  .cell-debug.visible{display:block}
  .cell-debug .lbl{font-weight:500;color:var(--accent);margin-inline-end:.3rem}
  .cell-debug .giac-out{color:var(--success);margin-inline-start:.4rem}

  /* ═══════ Output ═══════ */
  .cell-output{padding:.65rem .8rem;background:var(--output-bg);border-top:1px solid var(--border);border-radius:0 0 var(--radius) var(--radius);min-height:26px;overflow-x:auto}
  .cell-output:empty{display:none}
  .cell-output .err{color:var(--error);font-family:var(--mono);font-size:.78rem}
  .katex{direction:ltr;unicode-bidi:isolate}
  .katex-display{direction:ltr;unicode-bidi:isolate}
  .cell-output .katex-display{margin:.2rem 0;text-align:center}
  .cell-output .raw-res{font-family:var(--mono);font-size:.72rem;color:var(--text-muted);margin-top:.3rem;white-space:pre-wrap}
  .cell-output .md-out{font-family:var(--body);font-size:.93rem}
  .cell-output .md-out h1{font-size:1.35rem;margin:.35rem 0}
  .cell-output .md-out h2{font-size:1.1rem;margin:.3rem 0}
  .cell-output .md-out h3{font-size:.95rem;margin:.25rem 0}
  .cell-output .md-out p{margin:.3rem 0}
  .cell-output .md-out code{background:#eee;padding:1px 5px;border-radius:3px;font-family:var(--mono);font-size:.83em}
  .spinner{display:inline-block;width:12px;height:12px;border:2px solid var(--border);border-top-color:var(--accent);border-radius:50%;animation:spin .5s linear infinite;vertical-align:middle;margin-inline-end:5px}
  @keyframes spin{to{transform:rotate(360deg)}}

  /* ═══════ Plot ═══════ */
  .plot-container{margin:.3rem 0;position:relative}
  .plot-container canvas{max-width:100%;height:auto;display:block;border:1px solid var(--border);border-radius:4px}
  .plot-svg{overflow:hidden}
  .plot-svg svg{max-width:100%;height:auto;display:block}
  .plot-tooltip{position:absolute;background:rgba(0,0,0,.8);color:#fff;font-family:var(--mono);font-size:.65rem;padding:2px 6px;border-radius:3px;pointer-events:none;white-space:nowrap;z-index:5;display:none}
  .plot-3d-msg{font-family:var(--mono);font-size:.78rem;color:var(--warning);padding:.4rem;background:#fffbeb;border:1px solid #fde68a;border-radius:4px}
  .jxgbox-container{margin:.3rem auto;text-align:center}
  .jxgbox-container .jxgbox{width:100%;aspect-ratio:4/3;max-width:700px;margin:0 auto;border-radius:4px}
  .jsxgraph-3d-container{margin:.3rem auto;text-align:center}
  .jsxgraph-3d-container .jxgbox{width:100%;aspect-ratio:1/1;max-width:700px;margin:0 auto;border-radius:4px}
  .gl3d-container{margin:.3rem auto;position:relative;text-align:center}
  .gl3d-container canvas{max-width:100%;height:auto;display:block;margin:0 auto;border:1px solid var(--border);border-radius:4px;cursor:grab}
  .gl3d-container canvas:active{cursor:grabbing}

  /* ═══════ Cell Controls (hide, disable, lock) ═══════ */
  .cell-hidden > .cell-input,
  .cell-hidden > .cell-debug{display:none}
  .cell-hidden-placeholder{padding:.25rem .8rem;background:#f7f6f2;border-bottom:1px solid var(--border);cursor:pointer;display:flex;align-items:center;gap:.4rem;min-height:8px}
  .cell-hidden-placeholder:hover{background:var(--accent-light)}
  .cell-hidden-placeholder span{font-family:var(--mono);font-size:.6rem;color:var(--text-muted)}
  .cell-disabled{opacity:.45}
  .cell-disabled .cell-badge{text-decoration:line-through}
  .cell-disabled .cell-input{pointer-events:none}
  .cell-locked .cell-input{position:relative}
  .cell-locked .cell-input::after{content:'';position:absolute;inset:0;cursor:not-allowed}
  .cell-lock-indicator{font-family:var(--mono);font-size:.58rem;color:var(--text-muted);margin-inline-start:.3rem}
  .cell-controls{display:flex;gap:2px;margin-inline-end:.3rem}
  .cell-controls button{font-size:.6rem;padding:1px 5px;border:none;border-radius:3px;background:transparent;color:var(--text-muted);cursor:pointer;font-family:var(--mono);line-height:1.4}
  .cell-controls button:hover{background:#eee;color:var(--text)}
  .cell-controls button.active{color:var(--accent);font-weight:600}
  .report-view .cell-input,
  .report-view .cell-debug{display:none}
  .report-view .cell-hidden-placeholder{display:none}

  /* ═══════ Drag-and-Drop ═══════ */
  .drag-handle{cursor:grab;color:var(--text-muted);font-size:.85rem;user-select:none;padding:0 .1rem;line-height:1}
  .drag-handle:active{cursor:grabbing}
  .cell-dragging{opacity:.45;border-style:dashed}
  .cell-drag-over-top{border-top:2.5px solid var(--accent) !important}
  .cell-drag-over-bottom{border-bottom:2.5px solid var(--accent) !important}

  /* ═══════ Reactive DAG ═══════ */
  .cell.dep-upstream{border-color:#7c3aed;box-shadow:0 0 0 2px rgba(124,58,237,.15)}
  .cell.dep-downstream{border-color:#059669;box-shadow:0 0 0 2px rgba(5,150,105,.15)}
  .cell.cell-unevaluated{opacity:.35;border-style:dashed;border-color:var(--border)}
  .cell.cell-unevaluated:focus-within{opacity:1}
  .cell.cell-pending{border-color:var(--warning);opacity:.7}
  .cell.cell-pending::after{content:'';position:absolute;top:0;left:0;right:0;height:2px;background:linear-gradient(90deg,var(--warning),transparent);animation:pendingPulse 1.5s ease-in-out infinite}
  @keyframes pendingPulse{0%,100%{opacity:.3}50%{opacity:1}}
  .cell.cell-stale{border-color:var(--warning);border-style:dashed}
  .cell.cell-error .cell-output{border-inline-start:3px solid var(--error)}
  .reactive-toggle{display:inline-flex;align-items:center;gap:4px;font-family:var(--mono);font-size:.72rem;cursor:pointer}
  .reactive-toggle input[type="checkbox"]{accent-color:var(--success);cursor:pointer}
  .reactive-toggle .reactive-label{color:var(--text-muted);transition:color .2s}
  .reactive-toggle input:checked+.reactive-label{color:var(--success);font-weight:500}
  .dep-warning{font-family:var(--mono);font-size:.72rem;padding:.3rem .5rem;border-radius:4px;margin:.2rem 0}
  .dep-warning.cycle{background:#fef2f2;color:var(--error);border:1px solid #fecaca}
  .dep-warning.broken{background:#fffbeb;color:var(--warning);border:1px solid #fde68a}
  .dep-warning.duplicate{background:#eff6ff;color:var(--accent);border:1px solid #bfdbfe}
  .stale-banner{background:#fffbeb;border:1px solid #fde68a;border-radius:6px;padding:.5rem 1rem;margin:.5rem 0;display:flex;align-items:center;gap:.5rem;font-family:var(--mono);font-size:.75rem;color:var(--warning)}
  .stale-banner button{font-family:var(--mono);font-size:.7rem;padding:3px 10px;border:1px solid var(--warning);border-radius:4px;background:transparent;color:var(--warning);cursor:pointer}
  .stale-banner button:hover{background:var(--warning);color:#fff}

  /* ═══════ Giac messages (warnings/info) ═══════ */
  .giac-messages{margin-top:.3rem}
  .giac-msg{font-family:var(--mono);font-size:.72rem;padding:.2rem .5rem;border-radius:4px;margin:.15rem 0}
  .giac-msg-warn{background:#fffbeb;color:var(--warning);border:1px solid #fde68a}
  .giac-msg-info{background:#f0f9ff;color:#0369a1;border:1px solid #bae6fd}

  /* ═══════ Virtual keyboard — icons on the left ═══════ */
  math-field::part(container){flex-direction:row-reverse}

  /* ═══════ Bottom bar ═══════ */
  .bottombar{position:fixed;bottom:0;left:0;right:0;background:var(--surface);border-top:1px solid var(--border);padding:.4rem 1.5rem;font-family:var(--mono);font-size:.63rem;color:var(--text-muted);display:flex;gap:1.4rem;align-items:center;z-index:10}
  .bottombar kbd{background:#eeede8;padding:1px 5px;border-radius:3px;border:1px solid var(--border);font-size:.62rem}
  .bottombar label{display:flex;align-items:center;gap:4px;cursor:pointer}
  .bottombar input[type="checkbox"]{accent-color:var(--accent)}

  /* ═══════ Share QR Dialog ═══════ */
  .share-qr-overlay,.scan-qr-overlay,.password-prompt-overlay{position:fixed;inset:0;background:rgba(0,0,0,.5);z-index:1000;display:flex;align-items:center;justify-content:center;padding:1rem}
  .share-qr-dialog{background:var(--surface);border-radius:var(--radius);box-shadow:var(--shadow);max-width:480px;width:100%;max-height:90vh;overflow-y:auto;padding:1.5rem;position:relative}
  .share-qr-close{position:absolute;top:.5rem;right:.5rem;background:none;border:none;font-size:1.5rem;cursor:pointer;color:var(--text-muted);line-height:1}
  .share-qr-close:hover{color:var(--text)}
  .share-qr-dialog h2{font-family:var(--mono);font-size:1.1rem;margin-bottom:1rem}
  .encoding-mode-toggle{margin-bottom:1rem}
  .encoding-mode-toggle label{display:block;font-family:var(--mono);font-size:.75rem;color:var(--text-muted);margin-bottom:.3rem}
  .encoding-mode-toggle select{width:100%;padding:.4rem .6rem;border:1px solid var(--border);border-radius:5px;font-family:var(--mono);font-size:.8rem;background:var(--surface);color:var(--text);cursor:pointer}
  .encoding-mode-toggle select:focus{outline:none;border-color:var(--border-focus)}
  .share-password-group{margin-bottom:1rem}
  .share-password-group label{display:block;font-family:var(--mono);font-size:.75rem;color:var(--text-muted);margin-bottom:.3rem}
  .share-password-group input{width:100%;padding:.4rem .6rem;border:1px solid var(--border);border-radius:5px;font-family:var(--mono);font-size:.8rem}
  .share-password-group input:focus{outline:none;border-color:var(--border-focus)}
  .share-qr-code{display:flex;justify-content:center;align-items:center;min-height:150px;margin:1rem 0}
  .share-qr-code svg{max-width:100%;height:auto}
  .share-qr-url{font-family:var(--mono);font-size:.65rem;color:var(--text-muted);word-break:break-all;padding:.4rem;background:var(--output-bg);border-radius:4px;margin:.5rem 0}
  .share-qr-actions{display:flex;gap:.5rem;margin-top:1rem;flex-wrap:wrap}
  .share-qr-actions button{font-family:var(--mono);font-size:.75rem;padding:.4rem 1rem;border:1px solid var(--border);border-radius:5px;background:var(--surface);cursor:pointer}
  .share-qr-actions button:hover{background:var(--accent-light)}
  .share-qr-actions button.primary{background:var(--accent);color:#fff;border-color:var(--accent)}
  .share-qr-actions button.primary:hover{background:var(--accent-hover)}

  /* ═══════ Animated QR Controls ═══════ */
  .qr-progress{font-family:var(--mono);font-size:.72rem;color:var(--text-muted);text-align:center;margin:.3rem 0}
  .animated-qr-controls{margin:.8rem 0;padding:.6rem;background:var(--output-bg);border-radius:6px;border:1px solid var(--border)}
  .qr-slider-group{display:flex;align-items:center;gap:.5rem;margin:.3rem 0;font-family:var(--mono);font-size:.72rem}
  .qr-slider-group label{min-width:80px;color:var(--text-muted)}
  .qr-slider-group input[type="range"]{flex:1;accent-color:var(--accent)}
  .qr-slider-group span{min-width:55px;text-align:right;font-size:.7rem}
  .animated-qr-controls button{font-family:var(--mono);font-size:.72rem;padding:.3rem .8rem;border:1px solid var(--border);border-radius:4px;background:var(--surface);cursor:pointer;margin-top:.4rem}
  .animated-qr-controls button:hover{background:var(--accent-light)}

  /* ═══════ QR Scanner Overlay ═══════ */
  .scan-qr-overlay{flex-direction:column;background:rgba(0,0,0,.85)}
  .scan-viewfinder{max-width:100%;max-height:60vh;border-radius:8px;object-fit:cover}
  .scan-close{position:absolute;top:1rem;right:1rem;background:rgba(255,255,255,.15);border:none;color:#fff;font-size:1.8rem;width:40px;height:40px;border-radius:50%;cursor:pointer;display:flex;align-items:center;justify-content:center}
  .scan-close:hover{background:rgba(255,255,255,.3)}
  .scan-status{font-family:var(--mono);font-size:.8rem;color:#fff;margin-top:.8rem;text-align:center}
  .scan-status.error{color:#f87171}
  .scan-progress-bar{width:80%;max-width:350px;height:6px;background:rgba(255,255,255,.15);border-radius:3px;margin-top:.5rem;overflow:hidden}
  .scan-progress-fill{height:100%;background:var(--success);border-radius:3px;transition:width .2s ease;width:0}

  /* ═══════ Password Prompt Dialog ═══════ */
  .password-prompt-dialog{background:var(--surface);border-radius:var(--radius);box-shadow:var(--shadow);max-width:380px;width:100%;padding:1.5rem;position:relative}
  .password-prompt-dialog h3{font-family:var(--mono);font-size:.95rem;margin-bottom:1rem}
  .password-input{width:100%;padding:.5rem .6rem;border:1px solid var(--border);border-radius:5px;font-family:var(--mono);font-size:.85rem;margin-bottom:.5rem}
  .password-input:focus{outline:none;border-color:var(--border-focus)}
  .password-error{font-family:var(--mono);font-size:.72rem;color:var(--error);min-height:1.2em;margin-bottom:.3rem}
  .password-prompt-actions{display:flex;gap:.5rem;justify-content:flex-end}
  .password-prompt-actions button{font-family:var(--mono);font-size:.75rem;padding:.4rem 1rem;border:1px solid var(--border);border-radius:5px;background:var(--surface);cursor:pointer}
  .password-prompt-actions button:hover{background:var(--accent-light)}
  .password-prompt-actions button.primary{background:var(--accent);color:#fff;border-color:var(--accent)}
  .password-prompt-actions button.primary:hover{background:var(--accent-hover)}

  /* ═══════ P2P Transfer Dialog ═══════ */
  .p2p-overlay{position:fixed;inset:0;background:rgba(0,0,0,.5);z-index:1000;display:flex;align-items:center;justify-content:center;padding:1rem}
  .p2p-dialog{background:var(--surface);border-radius:var(--radius);box-shadow:var(--shadow);max-width:420px;width:100%;max-height:90vh;overflow-y:auto;padding:1.5rem;position:relative}
  .p2p-dialog h2{font-family:var(--mono);font-size:1.1rem;margin-bottom:1rem}
  .p2p-close{position:absolute;top:.5rem;right:.5rem;background:none;border:none;font-size:1.5rem;cursor:pointer;color:var(--text-muted);line-height:1}
  .p2p-close:hover{color:var(--text)}
  .p2p-status{font-family:var(--mono);font-size:.8rem;color:var(--text-muted);text-align:center;margin:.8rem 0}
  .p2p-code{font-family:var(--mono);font-size:2.5rem;font-weight:600;letter-spacing:.5rem;text-align:center;color:var(--accent);padding:.8rem 0}
  .p2p-code-label{font-family:var(--mono);font-size:.72rem;color:var(--text-muted);text-align:center;margin-bottom:.2rem}
  .p2p-qr{display:flex;justify-content:center;align-items:center;min-height:150px;margin:1rem 0}
  .p2p-qr svg{max-width:100%;height:auto}
  .p2p-progress-bar{width:80%;max-width:350px;height:6px;background:rgba(0,0,0,.08);border-radius:3px;margin:.5rem auto;overflow:hidden}
  .p2p-progress-fill{height:100%;background:var(--success);border-radius:3px;transition:width .2s ease;width:0}
  .p2p-actions{display:flex;gap:.5rem;justify-content:center;margin-top:1rem}
  .p2p-actions button{font-family:var(--mono);font-size:.75rem;padding:.4rem 1rem;border:1px solid var(--border);border-radius:5px;background:var(--surface);cursor:pointer}
  .p2p-actions button:hover{background:var(--accent-light)}
  .p2p-fallback{font-family:var(--mono);font-size:.72rem;color:var(--text-muted);text-align:center;margin-top:.8rem}
  .p2p-fallback a{color:var(--accent);cursor:pointer;text-decoration:none}
  .p2p-fallback a:hover{text-decoration:underline}
  .p2p-success{color:var(--success);font-size:1.5rem;text-align:center;padding:.5rem 0}

  /* ═══════ QR Responsive ═══════ */
  @media(max-width:480px){
    .share-qr-dialog{padding:1rem;max-width:100%}
    .share-qr-actions{flex-direction:column}
    .share-qr-actions button{width:100%}
    .qr-slider-group{flex-wrap:wrap}
    .qr-slider-group label{min-width:100%;margin-bottom:.2rem}
    .password-prompt-dialog{max-width:100%;padding:1rem}
    .p2p-dialog{padding:1rem;max-width:100%}
    .p2p-code{font-size:2rem;letter-spacing:.3rem}
  }

  /* ── DAG Diagram Panel ── */
  .dag-panel{
    border-top:2px solid var(--border);background:var(--surface);
    max-height:0;overflow:hidden;transition:max-height .3s ease;
  }
  .dag-panel.visible{max-height:50vh;overflow-y:auto}
  .dag-panel-header{
    display:flex;justify-content:space-between;align-items:center;
    padding:.5rem 1rem;border-bottom:1px solid var(--border);
    font-weight:600;font-size:.9rem;position:sticky;top:0;
    background:var(--surface);z-index:1;
  }
  .dag-panel-header button{
    background:none;border:1px solid var(--border);border-radius:4px;
    padding:.2rem .6rem;cursor:pointer;font-size:.8rem;
  }
  .dag-panel-header button:hover{background:var(--bg)}
  .dag-container{
    padding:1rem;overflow:auto;
    min-height:60px;
  }
  .dag-container svg{height:auto}
  .dag-container .dag-empty{
    color:var(--text-muted);font-style:italic;
    display:flex;align-items:center;justify-content:center;
    min-height:60px;
  }
  .dag-container .node{cursor:pointer}
  .dag-container .node:hover{filter:brightness(0.92)}
  #dag-diagram-btn.active{background:var(--border-focus);color:#fff}
  @keyframes dag-pulse{
    0%,100%{box-shadow:none}
    50%{box-shadow:0 0 0 4px var(--border-focus)}
  }
  .dag-highlight{animation:dag-pulse .5s ease 3}
