:root{--paper: #f7f4ec;--ink: #1a1816;--sig: #8a3033;--s2: #6b665e;--ghost: #dcd7cb;--serif: "Iowan Old Style", Palatino, Georgia, serif;--mono: "SF Mono", Menlo, monospace}*{margin:0;padding:0;box-sizing:border-box}html,body{height:100%}body{background:var(--paper);color:var(--ink);font-family:var(--serif);overflow:hidden}#app{position:fixed;top:0;right:0;bottom:0;left:0}#viewport{position:absolute;top:0;right:0;bottom:0;left:0;overflow:hidden;cursor:default;touch-action:none;overscroll-behavior:none}#viewport.panning{cursor:grabbing;-webkit-user-select:none;user-select:none}#grid{position:absolute;top:0;right:0;bottom:0;left:0;display:block;width:100%;height:100%;pointer-events:none}#grid circle{fill:var(--ghost)}#world{position:absolute;top:0;left:0;transform-origin:0 0;will-change:transform}#cards{position:absolute;top:0;left:0}#edges{position:absolute;overflow:visible;pointer-events:none}.edge{fill:none;stroke:var(--ink);stroke-width:calc(1px / var(--z, 1));stroke-linecap:round}.edge-manual{stroke-dasharray:calc(5px / var(--z, 1)) calc(4px / var(--z, 1))}.edge-return{stroke:var(--sig);stroke-width:calc(1.5px / var(--z, 1))}.edge-tether{stroke:var(--ghost)}.edge-pending{stroke:var(--s2);stroke-dasharray:calc(3px / var(--z, 1)) calc(4px / var(--z, 1))}.edge-arrow{fill:var(--ink);stroke:none}.edge-atom{fill:var(--sig);stroke:none;r:calc(2.5px / var(--z, 1))}.edge-fork{fill:none;stroke:var(--ink);stroke-width:calc(1px / var(--z, 1));r:calc(3px / var(--z, 1))}.edge-hit{fill:none;stroke:transparent;stroke-width:calc(12px / var(--z, 1));pointer-events:stroke;cursor:pointer}.edge[data-thread=in]{stroke:var(--ink);stroke-width:calc(1.5px / var(--z, 1))}.edge[data-thread=out]{stroke:var(--ghost)}.edge-atom[data-thread=in]{fill:var(--ink)}.edge-atom[data-thread=out]{fill:var(--ghost)}.edge-fork[data-thread=in]{stroke:var(--ink)}.edge-fork[data-thread=out]{stroke:var(--ghost)}.card{position:absolute;display:flex;flex-direction:column;background:var(--paper);border:1px solid var(--ink);border-width:calc(1px / var(--z, 1));overflow:hidden;container-type:inline-size}.card-head{display:flex;align-items:flex-start;justify-content:space-between;gap:.5rem;padding:.45rem .6rem .4rem;border-bottom:1px solid var(--ink);border-bottom-width:calc(1px / var(--z, 1));cursor:grab;-webkit-user-select:none;user-select:none;flex:none}.card[data-dragging] .card-head{cursor:grabbing}.card-head-stack{display:flex;flex-direction:column;gap:.15rem;min-width:0}.card-title{font-family:var(--serif);font-size:17px;font-weight:400;line-height:1.15}.card-kind{font-family:var(--mono);font-size:10px;color:var(--s2);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.card[data-status=error] .card-kind{color:var(--sig)}.card-controls{display:flex;align-items:center;gap:2px;flex:none}.card-unpin,.card-facet-btn,.card-outline-btn{font-family:var(--mono);font-size:12px;line-height:1;padding:2px 5px;flex:none;color:var(--s2);background:transparent;border:1px solid transparent;cursor:pointer}.card-unpin:hover,.card-facet-btn:hover,.card-outline-btn:hover{color:var(--ink);border-color:var(--ink)}.card:not([data-headings]) .card-outline-btn{display:none}.card[data-outline] .card-outline-btn{color:var(--paper);background:var(--ink)}.card-outline{flex:none;max-height:42%;overflow-y:auto;overscroll-behavior:contain;padding:.3rem .4rem;border-bottom:1px solid var(--ink);border-bottom-width:calc(1px / var(--z, 1));font-family:var(--mono);font-size:10.5px;line-height:1.45}.card-outline-entry{display:block;width:100%;padding:1px 3px;padding-left:calc(3px + var(--lvl, 0) * .75rem);text-align:left;font-family:var(--mono);font-size:10.5px;line-height:1.45;color:var(--s2);background:transparent;border:0;border-left:1px solid transparent;cursor:pointer;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.card-outline-entry:hover{color:var(--paper);background:var(--ink)}.card-outline-entry[data-parked]{color:var(--ink);border-left-color:var(--ink)}.card[data-facet] .card-kind:after{content:" · facet " var(--facet, "");color:var(--s2)}.card-grip{position:absolute;right:0;bottom:0;width:calc(14px / var(--z, 1));height:calc(14px / var(--z, 1));cursor:nwse-resize;border-right:1px solid var(--ghost);border-bottom:1px solid var(--ghost);border-width:calc(1px / var(--z, 1))}.card-grip:hover,.card[data-sizing] .card-grip{border-color:var(--ink)}.card[data-selected] .card-head,.card[data-ping] .card-head,.card[data-thread=in] .card-head{background:var(--ink);color:var(--paper)}.card[data-selected] .card-kind,.card[data-ping] .card-kind,.card[data-thread=in] .card-kind,.card[data-selected] .card-controls button,.card[data-ping] .card-controls button,.card[data-thread=in] .card-controls button{color:var(--ghost)}.card[data-selected] .card-kind:after,.card[data-ping] .card-kind:after,.card[data-thread=in] .card-kind:after{color:var(--ghost)}.card[data-selected] .card-controls button:hover,.card[data-ping] .card-controls button:hover,.card[data-thread=in] .card-controls button:hover{color:var(--paper);border-color:var(--paper)}.card[data-thread=out]{border-color:var(--ghost);color:var(--s2)}.card[data-thread=out] .card-head{border-bottom-color:var(--ghost)}.card[data-thread=out] .card-title,.card[data-thread=out] .card-body,.card[data-thread=out] .card-body a{color:var(--s2)}.card[data-thread=out] .card-body a{border-bottom-color:var(--ghost)}.card[data-thread=out] .card-body a:hover{background:var(--s2);color:var(--paper)}.card-body{flex:1 1 auto;min-height:0;overflow-y:auto;overflow-x:hidden;overscroll-behavior:contain;padding:.55rem .7rem .8rem;font-family:var(--serif);font-size:13.5px;line-height:1.5;overflow-wrap:anywhere}.card-placeholder{font-family:var(--mono);font-size:11px;color:var(--s2)}.card-body a{color:var(--ink);text-decoration:none;border-bottom:1px solid var(--ghost);cursor:pointer}.card-body a:hover{background:var(--ink);color:var(--paper);border-bottom-color:var(--ink)}.card-body a[data-loom-link=external],.card-body a[data-loom-link=missing],.card-body a[data-loom-link=skip]{color:var(--s2);border-bottom-style:dotted}.card-body a[data-loom-link=external]:hover,.card-body a[data-loom-link=missing]:hover,.card-body a[data-loom-link=skip]:hover{background:transparent;color:var(--s2);border-bottom-color:var(--s2)}.card-body h1,.card-body h2{font-size:15px;font-weight:400;margin:.9em 0 .3em;padding-bottom:.12em;border-bottom:1px solid var(--ghost)}.card-body h3,.card-body h4,.card-body h5,.card-body h6{font-size:13.5px;font-weight:400;font-style:italic;margin:.75em 0 .2em}.card-body p{margin:0 0 .6em}.card-body ul,.card-body ol{margin:0 0 .6em 1.1em}.card-body li{margin-bottom:.15em}.card-body dl{margin:0 0 .6em}.card-body dd{margin-left:1.1em}.card-body code,.card-body pre,.card-body kbd{font-family:var(--mono);font-size:12px}.card-body pre{margin:0 0 .6em;padding-left:.6em;border-left:1px solid var(--ghost);overflow-x:auto}.card-body blockquote{margin:0 0 .6em;padding-left:.6em;border-left:1px solid var(--ghost);color:var(--s2)}.card-body hr{border:0;border-top:1px solid var(--ghost);margin:.7em 0}.card-body table{display:block;width:max-content;max-width:100%;overflow-x:auto;border-collapse:collapse;font-size:12px;margin:0 0 .6em}.card-body th,.card-body td{border:1px solid var(--ghost);padding:2px 5px;text-align:left;font-weight:400}.card-marks{display:none}.fiber-mark{border-bottom:2px solid var(--sig);padding-bottom:.5px}.fiber-mark[data-kind=note]{border-bottom-style:dashed}.card-body a:has(.fiber-mark){border-bottom-color:transparent}.card[data-thread=out] .fiber-mark,.card[data-glyphsel=out] .fiber-mark{border-bottom-color:var(--s2)}.card[data-kind=note] .card-body{font-family:var(--mono);font-size:12px;line-height:1.45;white-space:pre-wrap;outline:none;cursor:text}.card[data-kind=note] .card-body:empty:before{content:"type the note";color:var(--ghost)}.card[data-kind=note] .card-title{font-size:12px;font-style:italic;color:var(--s2)}.card[data-kind=note][data-selected] .card-title,.card[data-kind=note][data-thread=in] .card-title{color:var(--paper)}.glyph-atom{display:inline-block;font-family:var(--mono);line-height:1;color:currentColor;-webkit-user-select:none;user-select:none}.glyph-atom:before{content:var(--glyph-char, "●")}.glyph-mark{border-bottom:1px dotted var(--ink);cursor:pointer}.card[data-thread=out] .glyph-mark{border-bottom-color:var(--ghost)}.glyph-row{position:relative}.glyph-margin{position:absolute;left:-1.05rem;top:.15em;display:flex;flex-direction:column;align-items:center;gap:1px;font-size:11px;color:var(--ink);cursor:pointer}.glyph-margin-inline{position:static;display:inline-flex;flex-direction:row;margin-right:.25em}.card[data-glyphs] .card-body{padding-left:1.55rem}.card-glyphs{display:flex;align-items:center;flex:none;gap:.3rem;font-family:var(--mono);font-size:11px;line-height:1;-webkit-user-select:none;user-select:none}.glyph-cell{display:inline-flex;align-items:center;gap:1px}.glyph-count{font-size:9px;color:var(--s2);font-variant-numeric:tabular-nums}.card[data-selected] .glyph-count,.card[data-ping] .glyph-count,.card[data-thread=in] .glyph-count,.card[data-glyphsel=in] .glyph-count{color:var(--ghost)}.card[data-glyphsel=in] .card-head{background:var(--ink);color:var(--paper)}.card[data-glyphsel=in] .card-kind,.card[data-glyphsel=in] .card-unpin{color:var(--ghost)}.card[data-glyphsel=out]{border-color:var(--ghost);color:var(--s2)}.card[data-glyphsel=out] .card-head{border-bottom-color:var(--ghost)}.card[data-glyphsel=out] .card-title,.card[data-glyphsel=out] .card-body,.card[data-glyphsel=out] .card-body a{color:var(--s2)}.glyph-margin .glyph-atom[data-sel=in]{background:var(--ink);color:var(--paper);padding:1px}.glyph-atom[data-sel=out]{color:var(--ghost)}.card[data-glyphsel=in] .card-glyphs .glyph-atom[data-sel=out]{color:var(--s2)}.glyph-mark[data-sel=in]{border-bottom-style:solid;border-bottom-color:var(--ink)}.glyph-mark[data-sel=out]{border-bottom-color:var(--ghost)}.card[data-glyph-file] .card-title{font-family:var(--mono);font-size:11px;font-style:normal;color:var(--ink)}.card[data-glyph-file] .card-body{cursor:default}.card[data-glyph-file][data-selected] .card-title,.card[data-glyph-file][data-thread=in] .card-title{color:var(--paper)}.fiber-palette{display:flex}.fiber-palette[hidden]{display:none}.fiber-pill .fiber-open{border-left:1px solid var(--ink)}.fiber-pill .fiber-glyph{min-width:22px;font-size:12px;text-align:center}.fiber-pill button[data-active]{background:var(--ink);color:var(--paper)}.fiber-pill{position:absolute;display:flex;align-items:stretch;background:var(--paper);border:1px solid var(--ink);font-family:var(--mono);font-size:11px;-webkit-user-select:none;user-select:none;z-index:6}.fiber-pill[hidden]{display:none}.fiber-pill button{font-family:var(--mono);font-size:11px;line-height:1.4;padding:2px 7px;white-space:nowrap;color:var(--ink);background:var(--paper);border:0;border-left:1px solid var(--ghost);cursor:pointer}.fiber-pill button:first-child{border-left:0}.fiber-pill button[hidden]{display:none}.fiber-pill button:hover{background:var(--ink);color:var(--paper)}.card-culled .card-body,.card-culled .card-outline,.card.tier-title .card-body,.card.tier-title .card-outline,.card.tier-title .card-controls,.card.tier-title .card-grip{display:none}.card.tier-title .card-head{flex:1 1 auto;align-items:center;border-bottom:0;padding:12px 14px}.card.tier-title .card-head-stack{width:100%;gap:calc(4px / var(--z, 1))}.card.tier-title .card-title{font-size:min(calc(17px / var(--z, 1)),11.5cqw);line-height:1.12;overflow-wrap:break-word;-webkit-hyphens:auto;hyphens:auto}.card.tier-title .card-kind,.card.tier-title .card-marks{font-size:min(46px,calc(10px / var(--z, 1)))}.card.tier-title .card-marks{display:block;font-family:var(--mono);color:var(--sig)}.card.tier-title[data-thread=out] .card-marks{color:var(--s2)}.card.tier-title .card-glyphs{font-size:min(46px,calc(11px / var(--z, 1)))}.card.tier-title .glyph-count{font-size:min(38px,calc(9px / var(--z, 1)))}.card.tier-glyph{border-color:transparent;background:transparent;overflow:visible;pointer-events:none}.card.tier-glyph .card-body,.card.tier-glyph .card-outline,.card.tier-glyph .card-kind,.card.tier-glyph .card-grip,.card.tier-glyph .card-controls{display:none}.card.tier-glyph .card-head{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);display:block;width:calc(22px / var(--z, 1));height:calc(22px / var(--z, 1));padding:0;background:var(--paper);border:1px solid var(--ink);border-width:calc(1px / var(--z, 1));pointer-events:auto}.card.tier-glyph[data-thread=out] .card-head,.card.tier-glyph[data-glyphsel=out] .card-head{border-color:var(--ghost)}.card.tier-glyph[data-selected] .card-head,.card.tier-glyph[data-ping] .card-head,.card.tier-glyph[data-thread=in] .card-head,.card.tier-glyph[data-glyphsel=in] .card-head{background:var(--ink)}.card.tier-glyph .card-head-stack{position:absolute;top:100%;left:50%;transform:translate(-50%);width:calc(84px / var(--z, 1));padding-top:calc(3px / var(--z, 1));text-align:center;pointer-events:none}.card.tier-glyph .card-title{font-size:calc(8.5px / var(--z, 1));line-height:1.2;color:var(--s2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.card.tier-glyph[data-selected] .card-title,.card.tier-glyph[data-thread=in] .card-title{color:var(--ink)}.card.tier-glyph .card-glyphs{position:absolute;left:50%;bottom:100%;transform:translate(-50%);padding-bottom:calc(4px / var(--z, 1));gap:calc(3px / var(--z, 1));font-size:calc(13px / var(--z, 1));white-space:nowrap;pointer-events:auto;color:var(--ink)}.card.tier-glyph .glyph-count{display:none}.card.tier-glyph[data-glyphsel=out] .card-glyphs{color:var(--ghost)}.card.tier-glyph[data-mute] .card-head-stack{display:none}#toolbar{position:fixed;top:0;left:0;right:0;display:flex;align-items:center;gap:.5rem;padding:.35rem 7.5rem .35rem .75rem;border-bottom:1px solid var(--ink);background:var(--paper);font-family:var(--mono);font-size:11px;overflow:hidden;z-index:10}#toolbar .brand{font-family:var(--serif);font-size:13px;letter-spacing:.02em}.tb-group{display:flex;align-items:center;gap:.25rem;padding-left:.6rem;border-left:1px solid var(--ghost)}.tb-label{color:var(--s2);margin-right:.1rem}.tb-button{font-family:var(--mono);font-size:11px;line-height:1.3;padding:2px 6px;white-space:nowrap;flex:none;color:var(--ink);background:var(--paper);border:1px solid var(--ghost);cursor:pointer}.tb-button:hover{border-color:var(--ink)}.tb-button[data-active]{background:var(--ink);color:var(--paper);border-color:var(--ink)}.tb-threads{display:flex;align-items:center;gap:.25rem;max-width:26vw;overflow:hidden}.tb-threads .tb-button{max-width:12rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tb-empty{color:var(--ghost)}.tb-glyphs{display:flex;align-items:center;gap:.25rem}.tb-glyph{display:inline-flex;align-items:center;gap:3px;padding:2px 5px;font-variant-numeric:tabular-nums}.tb-glyph .glyph-atom{font-size:11px}.tb-glyph[data-empty]{color:var(--ghost);border-color:var(--ghost)}.tb-glyph[data-empty]:hover{color:var(--ink);border-color:var(--ink)}.tb-button:disabled{color:var(--ghost);border-color:var(--ghost);cursor:default}.tb-button:disabled:hover{border-color:var(--ghost)}.tb-atom{display:inline-block;width:6px;height:6px;margin-right:4px;vertical-align:baseline;border:1px solid currentColor;background:currentColor}.tb-button[data-broken]{border-style:dashed}.tb-status{flex:1 1 auto;min-width:0;color:var(--s2);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tb-count,.tb-save,.tb-zoom{flex:none;padding-left:.6rem;border-left:1px solid var(--ghost);color:var(--s2);font-variant-numeric:tabular-nums}.tb-zoom{position:absolute;right:0;top:0;bottom:0;display:flex;align-items:center;padding:0 .75rem 0 .6rem;background:var(--paper);color:var(--ink);white-space:nowrap}@media(max-width:1040px){.tb-label{display:none}}@media(max-width:860px){.tb-count{display:none}}.tb-save[data-state=error]{color:var(--sig)}.tb-save[data-state=saved]{color:var(--s2)}.thread-plate{position:absolute;display:flex;align-items:center;gap:.4rem;padding:2px 6px;background:var(--paper);border:1px solid var(--ink);font-family:var(--mono);font-size:11px;z-index:5}.thread-plate[hidden]{display:none}.thread-name{font-family:var(--mono);font-size:11px;line-height:1.4;width:13rem;color:var(--ink);background:transparent;border:0;border-bottom:1px solid var(--ghost);outline:none}.thread-name::placeholder{color:var(--s2)}.thread-name:focus{border-bottom-color:var(--ink)}.thread-plate-count{color:var(--s2);font-variant-numeric:tabular-nums;white-space:nowrap}.thread-pin{flex:none;width:8px;height:8px;padding:0;background:var(--paper);border:1px solid var(--ink);cursor:pointer}.thread-pin[data-pinned]{background:var(--ink)}.thread-pin[data-off]{border-color:var(--ghost);cursor:default}.thread-plate[data-broken]{border-style:dashed}.thread-break{flex:none;font-family:var(--mono);font-size:10px;line-height:1.4;padding:0 3px;color:var(--ink);background:var(--paper);border:1px dashed var(--ink);cursor:pointer;white-space:nowrap}.thread-break[hidden]{display:none}.thread-break:hover{border-style:solid}#composer{position:fixed;bottom:0;left:0;right:0;min-height:2rem;max-height:30vh;overflow-y:auto;border-top:1px solid var(--ink);background:var(--paper);font-family:var(--mono);font-size:11px;padding:.35rem .75rem;white-space:pre-wrap;z-index:10}.composer-line{line-height:1.5}.composer-block{display:block}.composer-repeat{font-variant-numeric:tabular-nums;color:var(--s2)}#composer:empty:before{content:"composer — thread and fiber handoffs will be typed here";color:var(--s2)}
