/* Shared by index.html (APIM pipeline) and secupi.html (direct SecuPi).
   Keep one copy so the two pages cannot drift apart visually. */
  :root {
    --bg:#f5f6f8; --panel:#fff; --ink:#14181f; --muted:#6b7280; --line:#e3e6ea;
    --accent:#2563eb; --danger:#b91c1c; --danger-bg:#fef3f2; --danger-line:#f4c9c4;
    --ok:#15803d; --ok-bg:#f0fdf4; --ok-line:#bbf7d0;
    --warn:#b45309; --warn-bg:#fffbeb; --warn-line:#fde68a;
    --mono:ui-monospace,"Cascadia Mono",Consolas,monospace;
  }
  *{box-sizing:border-box}
  body{margin:0;background:var(--bg);color:var(--ink);
       font:15px/1.55 system-ui,-apple-system,"Segoe UI",sans-serif}
  header{background:var(--panel);border-bottom:1px solid var(--line);
         padding:12px 20px;display:flex;align-items:center;gap:14px;flex-wrap:wrap;
         position:sticky;top:0;z-index:10}
  h1{font-size:16px;margin:0;font-weight:650}
  .sub{font-size:12px;color:var(--muted)}
  .spacer{flex:1}
  label{font-size:12px;color:var(--muted);display:flex;align-items:center;gap:6px}
  select,input{font:inherit;font-size:13px;padding:5px 8px;border:1px solid var(--line);
               border-radius:6px;background:#fff;color:var(--ink)}
  input{font-family:var(--mono);font-size:12px}
  button{font:inherit;font-weight:600;padding:9px 18px;border:0;border-radius:8px;
         background:var(--accent);color:#fff;cursor:pointer}
  button.ghost{background:#eef1f5;color:var(--ink);font-weight:500;padding:8px 13px}
  button:disabled{opacity:.5;cursor:default}
  #settings{background:var(--panel);border-bottom:1px solid var(--line);padding:10px 20px;
            display:none;gap:16px;flex-wrap:wrap;align-items:center}
  #settings.open{display:flex}
  main{max-width:1000px;margin:0 auto;padding:20px}
  .composer{background:var(--panel);border:1px solid var(--line);border-radius:10px;
            padding:14px;margin-bottom:20px}
  textarea{width:100%;font:inherit;padding:10px 12px;border:1px solid var(--line);
           border-radius:8px;resize:vertical;min-height:78px}
  .row{display:flex;gap:10px;align-items:center;margin-top:10px;flex-wrap:wrap}
  .samples{display:flex;gap:6px;flex-wrap:wrap;margin-top:8px}
  .samples button{background:#eef1f5;color:var(--ink);font-weight:400;font-size:12px;
                  padding:5px 10px}

  .step{background:var(--panel);border:1px solid var(--line);border-radius:10px;
        margin-bottom:14px;overflow:hidden}
  .step-head{padding:10px 14px;border-bottom:1px solid var(--line);display:flex;
             align-items:center;gap:10px;background:#fafbfc}
  .num{width:22px;height:22px;border-radius:50%;background:var(--accent);color:#fff;
       font-size:12px;font-weight:700;display:flex;align-items:center;justify-content:center;
       flex-shrink:0}
  .step.blocked .num{background:var(--danger)}
  .step.skipped{opacity:.55}
  .step.skipped .num{background:var(--muted)}
  .step-title{font-weight:600;font-size:14px}
  .step-sub{font-size:12px;color:var(--muted)}
  .step-body{padding:12px 14px}
  pre{background:#0f1420;color:#d7dde8;border-radius:8px;padding:11px;overflow-x:auto;
      font-family:var(--mono);font-size:12.5px;margin:0;white-space:pre-wrap;
      word-break:break-word}
  pre.plain{background:#f7f8fa;color:var(--ink);border:1px solid var(--line)}
  .banner{border-radius:8px;padding:11px 13px;font-size:14px;margin:0 0 12px}
  .banner.bad{background:var(--danger-bg);border:1px solid var(--danger-line);color:var(--danger)}
  .banner.good{background:var(--ok-bg);border:1px solid var(--ok-line);color:var(--ok)}
  .banner.warn{background:var(--warn-bg);border:1px solid var(--warn-line);color:var(--warn)}
  .chip{display:inline-block;font-size:11px;padding:2px 8px;border-radius:20px;
        border:1px solid var(--line);background:#fff;color:var(--muted)}
  .chip.bad{border-color:var(--danger-line);background:var(--danger-bg);color:var(--danger)}
  .chip.good{border-color:var(--ok-line);background:var(--ok-bg);color:var(--ok)}
  table{width:100%;border-collapse:collapse;font-size:13px}
  th,td{text-align:left;padding:6px 9px;border-bottom:1px solid var(--line)}
  th{font-size:11px;text-transform:uppercase;letter-spacing:.05em;color:var(--muted)}
  td.mono{font-family:var(--mono);font-size:12px}
  .diffhit{background:#bbf7d0;color:#064e3b;border-radius:3px;padding:0 3px;font-weight:600}
  /* Step 1 is the prompt BEFORE anything happened. Highlight the sensitive spans as
     exposed -- never strike them through, which would imply they were already removed. */
  .exposed{background:#fee2e2;color:#7f1d1d;border-radius:3px;padding:0 3px;
           font-weight:600;border-bottom:2px solid var(--danger)}

  .rail{display:flex;align-items:stretch;gap:0;background:var(--panel);
        border:1px solid var(--line);border-radius:10px;padding:14px 12px;margin-bottom:16px;
        overflow-x:auto}
  .node{flex:1;min-width:110px;text-align:center;position:relative;padding:0 4px}
  .node .dot{width:34px;height:34px;border-radius:50%;margin:0 auto 6px;display:flex;
             align-items:center;justify-content:center;font-size:15px;font-weight:700;
             background:#e5e7eb;color:#374151}
  .node .nm{font-size:12px;font-weight:600}
  .node .st{font-size:11px;color:var(--muted)}
  .node.done .dot{background:#dbeafe;color:#1d4ed8}
  .node.clear .dot{background:#fee2e2;color:#b91c1c}
  .node.guard .dot{background:#fef3c7;color:#b45309}
  .node.stop .dot{background:var(--danger);color:#fff}
  .node.safe .dot{background:#bbf7d0;color:#065f46}
  .node.dead{opacity:.4}
  .node.dead .dot{background:#f1f2f4;color:#9ca3af}
  .arrow{align-self:center;padding:0 2px;font-size:15px;color:#9ca3af;flex:0 0 auto}
  .arrow.cut{color:var(--danger);font-weight:700}
  .stopline{background:var(--danger-bg);border:1px dashed var(--danger);color:var(--danger);
            border-radius:8px;padding:10px 12px;font-weight:600;text-align:center;margin:0 0 10px}
  .beforeafter{display:grid;grid-template-columns:1fr;gap:8px}
  .ba-label{font-size:11px;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);
            margin-bottom:3px}
  /* Provenance caption. Every displayed value states its origin, so the page can be
     audited rather than believed. */
  .src{font-size:11px;color:var(--muted);margin-top:6px;font-family:var(--mono);
       border-left:2px solid var(--line);padding-left:7px;line-height:1.5}
  .src b{color:var(--ink);font-weight:600}
  .src.local{border-left-color:var(--warn);color:var(--warn)}
  details.raw{margin-top:16px;background:var(--panel);border:1px solid var(--line);
              border-radius:10px;padding:10px 14px}
  details.raw summary{font-size:13px;font-weight:600;color:var(--accent)}
  .verdict{font-size:13px;color:var(--muted);margin-top:6px}
  .empty{color:var(--muted);font-size:13px;padding:30px 0;text-align:center}

/* ---- page switcher -------------------------------------------------------
   Two modes of the same demo, so they get a real segmented control rather than
   a link tucked in a corner. The active page is unmistakable. */
.tabs{display:inline-flex;background:#e8ebf0;border-radius:10px;padding:3px;gap:3px}
.tabs a{font-size:13px;font-weight:600;padding:7px 16px;border-radius:8px;
        text-decoration:none;color:#5b6472;white-space:nowrap;transition:background .12s}
.tabs a:hover{background:#dde2e9}
.tabs a.active{background:var(--panel);color:var(--ink);
               box-shadow:0 1px 3px rgba(16,24,40,.14)}
.tabs a .t2{display:block;font-size:10.5px;font-weight:400;color:var(--muted);
            margin-top:1px;letter-spacing:.01em}
.tabs a.active .t2{color:#6b7280}

/* Rail sits above the results and is present from page load, so the topology is
   visible before anything is run and simply gains state afterwards. */
.rail.idle .node .st{font-style:italic}

/* ---- above the fold: what a normal chat app would show -------------------
   The evidence below the divider is the point of the demo, but leading with it
   buries the thing the audience actually recognises. Chat first, proof second. */
.chat{margin:18px 0 0}
.turn{display:flex;gap:10px;margin-bottom:12px}
.who-badge{width:30px;height:30px;border-radius:50%;flex-shrink:0;display:flex;
           align-items:center;justify-content:center;font-size:12px;font-weight:700}
.who-badge.you{background:#e8edf6;color:#3a4a63}
.who-badge.bot{background:#dcf3e6;color:#1a6b45}
.who-badge.stop{background:var(--danger-bg);color:var(--danger)}
.bubble2{flex:1;background:var(--panel);border:1px solid var(--line);border-radius:10px;
         padding:11px 14px;white-space:pre-wrap;word-break:break-word;font-size:14.5px}
.turn.you .bubble2{background:#f7f9fc}
.turn.stop .bubble2{background:var(--danger-bg);border-color:var(--danger-line);
                    color:var(--danger)}

/* The divider: everything below is machinery, not user experience. */
.hood-sep{display:flex;align-items:center;gap:14px;margin:30px 0 18px}
.hood-sep::before,.hood-sep::after{content:"";flex:1;height:1px;background:var(--line)}
.hood-sep span{font-size:11.5px;font-weight:600;letter-spacing:.09em;
               text-transform:uppercase;color:var(--muted);white-space:nowrap}

/* ---- login gate ----------------------------------------------------------
   The app is not usable until a real identity exists. A button rather than an
   automatic redirect: if the token exchange is broken, an auto-redirect loops
   forever and hides the reason. */
#gate{position:fixed;inset:0;background:var(--bg);z-index:100;display:flex;
      align-items:center;justify-content:center;padding:24px}
#gate .panel{background:var(--panel);border:1px solid var(--line);border-radius:14px;
             padding:34px 38px;max-width:460px;width:100%;
             box-shadow:0 8px 30px rgba(16,24,40,.10)}
#gate h1{font-size:19px;margin:0 0 6px}
#gate p{font-size:14px;color:var(--muted);margin:0 0 20px;line-height:1.5}
#gate button{width:100%;padding:12px;font-size:15px}
#gate .who{font-size:12px;color:var(--muted);margin-top:16px;text-align:center}
#gate .err{background:var(--danger-bg);border:1px solid var(--danger-line);
           color:var(--danger);border-radius:8px;padding:11px 13px;font-size:13px;
           margin-bottom:18px;word-break:break-word}
.userchip{font-size:12.5px;color:var(--muted)}
.userchip b{color:var(--ink)}

/* ---- co-branding ------------------------------------------------------- */
.brand-lockup{display:flex;align-items:center;gap:14px;flex-wrap:wrap}
.brand-sep{width:1px;height:26px;background:var(--line);display:block}
header .brand-lockup{margin-right:14px}
