.cweb-wrap-81644244{position:relative;width:100%;height:80vh;min-height:480px;max-height:900px;overflow:hidden;border-radius:16px;background:var(--bg-deep);box-shadow:0 8px 30px rgba(0,0,0,.25);touch-action:none;}
.cweb-wrap-81644244{
    --bg-deep:    #0c0a14;
    --bg-haze:    #16121f;
    --node:       #2a2238;
    --node-rim:   #7d6bb0;
    --node-hot:   #b89dff;
    --ink:        #efeaf7;
    --ink-dim:    #9a90b0;
    --gold:       #ffd17a;

    /* strand strength palette — green (strong) → yellow (thin) */
    /* member-tie palette — three clearly distinct principal tiers,
       deep forest (strongest) → yellow-green (mid) → yellow (single) */
    --tie-strong: #1f8f3e;   /* forest green  : strongest, 3+ shared/long  */
    --tie-mid:    #9acb3a;   /* yellow-green  : multi-member               */
    --tie-light:  #ffd23f;   /* yellow        : single-member tie          */
    --tie-guest:  #ffd23f;   /* yellow        : thin guest/session thread  */
    --tie-guestS: #8fd85e;   /* green dash    : strong guest-capacity      */
    /* crew — one orange identity that DEEPENS with strength (never pales) */
    --tie-crew:   #ff8a1f;   /* orange        : producer/engineer tie      */
    --tie-crewS:  #e8590c;   /* deep burnt-orange : busy producer          */

    /* story-tie palette — cool, recedes; muted blue → pivotal teal-green */
    --story-weak:   #5a7fb5;  /* muted blue   : incidental */
    --story-mid:    #46a0ad;  /* blue-teal    : notable    */
    --story-strong: #3fc7a0;  /* teal-green   : defining   */

    /* ---- THEME: plate tones ----
       Each theme defines a LIGHT plate (for dark logos / text fallback choice)
       and a DARK plate (for light logos). Auto-detection picks which per logo.
       Background stays dark in every theme so strands never wash out. */
    --plate-light:      #ece7f2;  /* light plate fill (dark logos sit here)  */
    --plate-light-rim:  #b9add6;
    --plate-light-ink:  #2a2238;  /* text color when a text-bubble is light  */
    --plate-dark:       #2a2238;  /* dark plate fill (light logos sit here)  */
    --plate-dark-rim:   #7d6bb0;
    --plate-dark-ink:   #efeaf7;
    /* the default plate for TEXT bands (no logo) in this theme */
    --plate-text:       #2a2238;
    --plate-text-rim:   #7d6bb0;
    --plate-text-ink:   #efeaf7;
  }.cweb-wrap-81644244 /* MIDNIGHT (default) — dark everything; light plate only when a dark logo needs it */
  [data-theme="midnight"]{
    --bg-deep:#0c0a14; --bg-haze:#16121f;
    --plate-text:#2a2238; --plate-text-rim:#7d6bb0; --plate-text-ink:#efeaf7;
    --plate-light:#ece7f2; --plate-light-rim:#b9add6;
    --plate-dark:#2a2238;  --plate-dark-rim:#7d6bb0;
  }.cweb-wrap-81644244 /* PARCHMENT — warm light plates throughout; dark background retained */
  [data-theme="parchment"]{
    --bg-deep:#0d0c10; --bg-haze:#191720;
    --plate-text:#efe7d6; --plate-text-rim:#caa86a; --plate-text-ink:#2a241a;
    --plate-light:#f4ecdc; --plate-light-rim:#caa86a;
    --plate-dark:#322a1e;  --plate-dark-rim:#caa86a;
  }.cweb-wrap-81644244 /* STAGE — muted slate middle ground */
  [data-theme="stage"]{
    --bg-deep:#0b0e12; --bg-haze:#151a21;
    --plate-text:#33404d; --plate-text-rim:#7fa8c9; --plate-text-ink:#eaf2f8;
    --plate-light:#dde6ee; --plate-light-rim:#7fa8c9;
    --plate-dark:#222c36;  --plate-dark-rim:#7fa8c9;
  }.cweb-wrap-81644244 *{box-sizing:border-box;}.cweb-wrap-81644244 #stage{
    position:absolute;inset:0;
    background:radial-gradient(ellipse at 50% 40%, var(--bg-haze) 0%, var(--bg-deep) 70%);
    cursor:grab;touch-action:none;
  }.cweb-wrap-81644244 #stage:active{cursor:grabbing;}.cweb-wrap-81644244 svg{width:100%;height:100%;display:block;}.cweb-wrap-81644244 .strand{
    fill:none;stroke-linecap:round;
    transition:opacity .25s, stroke-width .2s;
  }.cweb-wrap-81644244 .strand.dim{opacity:.05;}.cweb-wrap-81644244 .strand.story{opacity:.7;}.cweb-wrap-81644244 .strand.story:hover{opacity:1;}.cweb-wrap-81644244 .strand.story.dim{opacity:.04;}.cweb-wrap-81644244 .node-group{cursor:pointer;}.cweb-wrap-81644244 .node-plate{
    fill:var(--plate-text);stroke:var(--plate-text-rim);stroke-width:2;
    transition:stroke .25s, stroke-width .25s, fill .25s;
  }.cweb-wrap-81644244 .node-group.focus .node-plate{stroke:var(--node-hot);stroke-width:3.5;}.cweb-wrap-81644244 .node-group.dim{opacity:.18;}.cweb-wrap-81644244 .node-label{
    fill:var(--plate-text-ink);font-weight:700;text-anchor:middle;dominant-baseline:middle;
    pointer-events:none;paint-order:stroke;stroke:var(--plate-text);
    stroke-width:3px;stroke-linejoin:round;
  }.cweb-wrap-81644244 .panel{position:absolute;background:rgba(18,14,28,.86);backdrop-filter:blur(8px);
    border:1px solid #2e2640;border-radius:14px;box-shadow:0 12px 40px rgba(0,0,0,.5);
  }.cweb-wrap-81644244 /* left column stacks title + legend with a gap, .cweb-wrap-81644244 so they never overlap
     regardless of how tall the title wraps */
  #leftcol{position:absolute;top:18px;left:18px;display:flex;flex-direction:column;
    gap:12px;max-width:300px;z-index:10;max-height:calc(100vh - 36px);}.cweb-wrap-81644244 /* children flow in the column, .cweb-wrap-81644244 not pinned to the viewport */
  #leftcol .panel{position:static;}.cweb-wrap-81644244 #titlebar{padding:14px 18px;}.cweb-wrap-81644244 #titlebar h1{margin:0;font-size:18px;letter-spacing:.5px;font-weight:800;}.cweb-wrap-81644244 #titlebar .sub{margin:4px 0 0;font-size:12px;color:var(--ink-dim);line-height:1.45;}.cweb-wrap-81644244 #titlebar .count{color:var(--gold);font-weight:700;}.cweb-wrap-81644244 /* legend */
  #legend{padding:11px 14px;overflow:auto;}.cweb-wrap-81644244 #legend .lbl{font-size:10px;letter-spacing:1.5px;text-transform:uppercase;color:var(--gold);margin:0 0 8px;font-weight:700;}.cweb-wrap-81644244 #legend .row{display:flex;align-items:center;gap:9px;margin:5px 0;font-size:11.5px;color:var(--ink-dim);}.cweb-wrap-81644244 #legend svg{width:38px;height:10px;flex:none;}.cweb-wrap-81644244 #info{top:18px;right:18px;width:280px;padding:0;overflow:hidden;display:none;}.cweb-wrap-81644244 #info.show{display:block;}.cweb-wrap-81644244 #info .head{padding:14px 16px 12px;border-bottom:1px solid #2e2640;background:linear-gradient(180deg,rgba(125,107,176,.18),transparent);}.cweb-wrap-81644244 #info .head h2{margin:0;font-size:17px;font-weight:800;}.cweb-wrap-81644244 #info .head .yr{margin:3px 0 0;font-size:12px;color:var(--ink-dim);}.cweb-wrap-81644244 #info .body{padding:12px 16px 16px;max-height:64vh;overflow:auto;}.cweb-wrap-81644244 #info .lbl{font-size:10px;letter-spacing:1.5px;text-transform:uppercase;color:var(--gold);margin:0 0 7px;font-weight:700;}.cweb-wrap-81644244 #info .lbl.guest{color:var(--tie-guest);}.cweb-wrap-81644244 #info .lbl.crew{color:var(--tie-crew);}.cweb-wrap-81644244 #info ul{list-style:none;margin:0 0 14px;padding:0;}.cweb-wrap-81644244 #info li{font-size:13px;padding:4px 0;border-bottom:1px solid rgba(255,255,255,.04);}.cweb-wrap-81644244 #info li .also{color:var(--ink-dim);font-size:11px;}.cweb-wrap-81644244 #info li .alsoLink{cursor:pointer;text-decoration:underline dotted;text-underline-offset:2px;}.cweb-wrap-81644244 #info li .alsoLink:hover{color:var(--violet);}.cweb-wrap-81644244 #info li .alsoLink.open{color:var(--violet);}.cweb-wrap-81644244 #info li .alsoList{display:flex;flex-wrap:wrap;gap:4px;margin-top:5px;}.cweb-wrap-81644244 #info li .alsoChip{font-size:10.5px;background:rgba(125,107,176,.16);border:1px solid rgba(125,107,176,.35);
    color:var(--ink);border-radius:10px;padding:1px 8px;cursor:pointer;}.cweb-wrap-81644244 #info li .alsoChip:hover{background:rgba(125,107,176,.34);border-color:var(--node-hot);}.cweb-wrap-81644244 #info li .tenure{color:var(--gold);font-size:11px;display:block;margin-top:1px;}.cweb-wrap-81644244 #info .conn .vt{color:var(--gold);font-size:10.5px;}.cweb-wrap-81644244 #info .conn .via.story{color:var(--ink);}.cweb-wrap-81644244 #info .conn .kindtag{display:inline-block;color:var(--story-mid);font-weight:700;font-size:11px;margin-top:2px;}.cweb-wrap-81644244 #info .conn .snote{display:block;color:var(--ink-dim);font-size:11px;line-height:1.5;margin:3px 0 8px;}.cweb-wrap-81644244 #info .conn{font-size:13px;padding:7px 0;border-bottom:1px solid rgba(255,255,255,.04);cursor:pointer;display:flex;gap:8px;align-items:flex-start;}.cweb-wrap-81644244 #info .conn:hover .cn{color:var(--node-hot);}.cweb-wrap-81644244 #info .conn .swatch{width:22px;height:0;border-top-width:3px;border-top-style:solid;margin-top:8px;flex:none;border-radius:2px;}.cweb-wrap-81644244 #info .conn .via{display:block;color:var(--ink-dim);font-size:11px;margin-top:2px;}.cweb-wrap-81644244 #controls{bottom:18px;left:18px;padding:8px;display:flex;gap:6px;align-items:center;}.cweb-wrap-81644244 .spacer-ctl{display:flex;align-items:center;gap:7px;padding:0 10px 0 6px;margin-left:2px;border-left:1px solid var(--rim);}.cweb-wrap-81644244 .spacer-ctl .sp-ico{color:var(--ink-dim);font-size:15px;}.cweb-wrap-81644244 #spacing{width:96px;accent-color:var(--node-hot);cursor:pointer;}.cweb-wrap-81644244 #themePick{margin-left:6px;background:#241d33;color:var(--ink);border:1px solid var(--rim,#2e2640);
    border-radius:9px;padding:7px 8px;font-size:12px;font-family:inherit;cursor:pointer;}.cweb-wrap-81644244 #themePick:focus-visible{outline:2px solid var(--node-hot);outline-offset:2px;}.cweb-wrap-81644244 #controls button{width:40px;height:40px;border:none;border-radius:10px;background:#241d33;color:var(--ink);font-size:18px;cursor:pointer;transition:background .15s;}.cweb-wrap-81644244 #controls button:hover{background:#322748;}.cweb-wrap-81644244 #controls button:focus-visible{outline:2px solid var(--node-hot);outline-offset:2px;}.cweb-wrap-81644244 #tip{position:absolute;pointer-events:none;z-index:50;background:rgba(12,10,20,.96);border:1px solid #4a4060;color:var(--ink);font-size:12px;padding:8px 11px;border-radius:8px;display:none;max-width:240px;line-height:1.45;box-shadow:0 6px 20px rgba(0,0,0,.5);}.cweb-wrap-81644244 #tip .who{font-weight:700;}.cweb-wrap-81644244 #tip .grade{display:block;font-size:10.5px;color:var(--ink-dim);margin-top:3px;text-transform:uppercase;letter-spacing:1px;}.cweb-wrap-81644244 .hint{position:absolute;bottom:18px;left:50%;transform:translateX(-50%);font-size:11px;color:var(--ink-dim);background:rgba(18,14,28,.7);padding:6px 14px;border-radius:20px;border:1px solid #2e2640;transition:opacity .6s;}

  @media (max-width:640px){.cweb-wrap-81644244 #info{width:auto;left:18px;right:18px;top:auto;bottom:74px;}.cweb-wrap-81644244 #leftcol{max-width:none;right:18px;}.cweb-wrap-81644244 #legend{display:none;}
  }
  @media (prefers-reduced-motion:reduce){.cweb-wrap-81644244 .strand, .cweb-wrap-81644244 .node-plate{transition:none;}}
