:root{--paper:#f3f5f7;--sheet:#f8f9fb;--surface:#fff;--ink:#1b2028;--ink-soft:#5b6472;--ink-faint:#8a94a3;--hairline:#d6dbe1;--hairline-soft:#e6eaee;--grid:#1b202817;--signal:#2557d6;--signal-soft:#2557d61f;--amber:#c9780a;--amber-soft:#fbefd9;--green:#1e8a5b;--green-soft:#dff3e8;--slate:#8a94a3;--slate-soft:#eceff2;--alarm:#c7382e;--alarm-soft:#fbe3e0;--font-sans:"IBM Plex Sans", ui-sans-serif, system-ui, -apple-system, "Segoe UI", sans-serif;--font-mono:"IBM Plex Mono", ui-monospace, SFMono-Regular, Menlo, monospace;--topbar:3.5rem;--inspector:23rem;--radius:.4rem;--shadow-card:0 1px 0 #1b20280f, 0 1px 2px #1b20280f;--shadow-lift:0 12px 28px -12px #1b202859, 0 2px 6px #1b202814;color:var(--ink);background:var(--paper);font-family:var(--font-sans);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;font-size:15px}*{box-sizing:border-box}body{min-width:20rem;height:100vh;margin:0;overflow:hidden}button,input,select{font:inherit;color:inherit}button{cursor:pointer}.mono{font-family:var(--font-mono);letter-spacing:.02em;font-variant-numeric:tabular-nums;font-size:.72rem}.app{grid-template-rows:var(--topbar) 1fr;height:100vh;display:grid}.topbar{background:var(--surface);border-bottom:1px solid var(--hairline);grid-template-columns:auto minmax(12rem,1fr) auto;align-items:center;gap:1.5rem;padding:0 1.25rem;display:grid}.brand{align-items:center;gap:.6rem;display:flex}.brand-mark{border:2px solid var(--signal);border-radius:2px;width:.7rem;height:.7rem;transform:rotate(45deg)}.brand-name{letter-spacing:-.02em;font-weight:600}.brand-sheet{color:var(--ink-faint);border-left:1px solid var(--hairline);padding-left:.6rem}.composer{border:1px solid var(--hairline);border-radius:var(--radius);background:var(--sheet);justify-self:center;width:100%;max-width:34rem;transition:border-color .14s,box-shadow .14s;display:flex}.composer:focus-within{border-color:var(--signal);box-shadow:0 0 0 3px var(--signal-soft)}.composer input{background:0 0;border:0;outline:none;flex:1;min-width:0;padding:.55rem .8rem}.composer input::placeholder{color:var(--ink-faint)}.composer button{color:#fff;background:var(--ink);border-radius:calc(var(--radius) - 2px);border:0;margin:3px;padding:0 .9rem;font-weight:500;transition:background-color .14s,opacity .14s}.composer button:hover:not(:disabled){background:var(--signal)}.composer button:disabled{opacity:.35;cursor:default}.views{background:var(--sheet);border:1px solid var(--hairline);border-radius:var(--radius);padding:3px;display:flex}.view-tab{border-radius:calc(var(--radius) - 2px);color:var(--ink-soft);background:0 0;border:0;align-items:center;gap:.45rem;padding:.35rem .75rem;font-weight:500;transition:background-color .14s,color .14s;display:inline-flex}.view-tab kbd{font-family:var(--font-mono);color:var(--ink-faint);font-size:.65rem}.view-tab-on{background:var(--surface);color:var(--ink);box-shadow:var(--shadow-card)}.stage{grid-template-columns:minmax(0,1fr) 0;min-height:0;transition:grid-template-columns .2s ease-out;display:grid;position:relative}.app-with-inspector .stage{grid-template-columns:minmax(0, 1fr) var(--inspector)}.stage-message{color:var(--ink-soft);place-self:center}.canvas{cursor:grab;background-color:var(--sheet);background-image:linear-gradient(var(--grid) 1px, transparent 1px), linear-gradient(90deg, var(--grid) 1px, transparent 1px), linear-gradient(#1b202809 1px, transparent 1px), linear-gradient(90deg, #1b202809 1px, transparent 1px);touch-action:none;-webkit-user-select:none;user-select:none;background-size:120px 120px,120px 120px,24px 24px,24px 24px;position:relative;overflow:hidden}.canvas:active{cursor:grabbing}.canvas-linking{cursor:crosshair}.canvas-sheet{transform-origin:0 0;will-change:transform;position:absolute;inset:0}.canvas-edges{pointer-events:none;width:1px;height:1px;position:absolute;top:0;left:0;overflow:visible}.edge-line{fill:none;stroke:var(--signal);stroke-width:1.75px;transition:stroke .2s,opacity .2s}.edge-hit{fill:none;stroke:#0000;stroke-width:12px}.edge-dot{fill:var(--sheet);stroke:var(--signal);stroke-width:1.75px}.edge-satisfied .edge-line,.edge-satisfied .edge-dot{stroke:var(--green)}.edge-satisfied .edge-line{stroke-dasharray:5 4}.edge-active .edge-line{stroke-width:2.5px}.edge-dim{opacity:.25}.edge-preview .edge-line{stroke-dasharray:6 5;animation:.6s linear infinite march}.edge-invalid .edge-line{stroke:var(--alarm)}#arrow path{fill:var(--signal)}#arrow-satisfied path{fill:var(--green)}#arrow-invalid path{fill:var(--alarm)}.edge-warning{color:#fff;background:var(--alarm);white-space:nowrap;border-radius:3px;padding:.3rem .5rem;display:inline-block}@keyframes march{to{stroke-dashoffset:-11px}}.node{cursor:grab;outline:none;width:236px;transition:opacity .2s;position:absolute;top:0;left:0}.node:active{cursor:grabbing}.node:focus-visible .card{box-shadow:0 0 0 3px var(--signal-soft), var(--shadow-card)}.node-dragging .card{box-shadow:var(--shadow-lift)}.node-dragging{z-index:3}.node-selected{z-index:2}.node-selected .card{border-color:var(--signal);box-shadow:0 0 0 3px var(--signal-soft), var(--shadow-lift)}.node-dim{opacity:.35}.node-link-target .card{border-color:var(--signal);box-shadow:0 0 0 3px var(--signal-soft)}.node-link-invalid .card{border-color:var(--alarm);box-shadow:0 0 0 3px #c7382e2e}.node-shake{animation:.5s ease-in-out shake}.node-shake .card{border-color:var(--alarm)}@keyframes shake{10%,90%{translate:-2px}20%,80%{translate:3px}30%,50%,70%{translate:-5px}40%,60%{translate:5px}}.node-port{background:var(--surface);border:2px solid var(--signal);cursor:crosshair;opacity:0;border-radius:50%;width:18px;height:18px;padding:0;transition:opacity .14s,transform .14s;position:absolute;top:50%;right:-9px;transform:translateY(-50%)}.node:hover .node-port,.node:focus-within .node-port,.node-selected .node-port{opacity:1}.node-port:hover{background:var(--signal);transform:translateY(-50%)scale(1.2)}.node-port:focus-visible{opacity:1;outline:3px solid var(--signal-soft)}.card{background:var(--surface);border:1px solid var(--hairline);border-radius:var(--radius);min-height:108px;box-shadow:var(--shadow-card);gap:.45rem;padding:.7rem .85rem .7rem 1rem;transition:border-color .14s,box-shadow .14s;display:grid;position:relative}.card:before{content:"";border-radius:var(--radius) 0 0 var(--radius);background:var(--hairline);width:4px;position:absolute;top:-1px;bottom:-1px;left:-1px}.card-in_progress:before{background:var(--amber)}.card-complete:before{background:var(--green)}.card-archived:before{background:var(--slate)}.card-blocked:before{background:repeating-linear-gradient(-45deg, var(--ink-faint) 0 3px, transparent 3px 6px)}.card-archived{background:var(--sheet)}.card-archived .card-title,.card-complete .card-title{color:var(--ink-soft)}.card-head{justify-content:space-between;align-items:center;gap:.5rem;display:flex}.card-code{color:var(--ink-faint)}.card-title{overflow-wrap:anywhere;-webkit-line-clamp:2;-webkit-box-orient:vertical;margin:0;font-weight:500;line-height:1.35;display:-webkit-box;overflow:hidden}.card-meta{color:var(--ink-faint);gap:.75rem;margin-top:auto;display:flex}.card-blocked-flag{color:var(--ink);font-weight:500}.card-compact{min-height:0}.stamp{font-family:var(--font-mono);letter-spacing:.05em;text-transform:uppercase;white-space:nowrap;color:var(--ink-soft);background:var(--slate-soft);border-radius:3px;padding:.14rem .42rem;font-size:.66rem;display:inline-block}.stamp-in_progress{color:var(--amber);background:var(--amber-soft)}.stamp-complete{color:var(--green);background:var(--green-soft)}.stamp-archived{color:var(--slate);box-shadow:inset 0 0 0 1px var(--hairline);background:0 0}.canvas-empty{text-align:center;max-width:24rem;color:var(--ink-soft);pointer-events:none;place-content:center;gap:.5rem;margin:auto;line-height:1.5;display:grid;position:absolute;inset:0}.canvas-empty p{margin:0}.canvas-empty .mono{color:var(--ink-faint)}.canvas-controls{background:var(--surface);border:1px solid var(--hairline);border-radius:var(--radius);box-shadow:var(--shadow-card);cursor:default;align-items:center;gap:.15rem;padding:.2rem;display:flex;position:absolute;bottom:1rem;left:1rem}.canvas-zoom{text-align:center;min-width:3.2rem;color:var(--ink-soft)}.canvas-controls-divider{background:var(--hairline);width:1px;height:1.2rem;margin:0 .3rem}.canvas-legend{color:var(--ink-faint);pointer-events:none;align-items:center;gap:.4rem;margin:0;display:flex;position:absolute;bottom:1rem;right:1rem}.app-with-inspector .canvas-legend{right:1rem}.legend-swatch{border-top:2px solid var(--signal);width:1.2rem;height:0;display:inline-block}.legend-swatch+.legend-swatch,.legend-satisfied{border-top-style:dashed;border-color:var(--green);margin-left:.6rem}.legend-hint{border-left:1px solid var(--hairline);margin-left:1rem;padding-left:.8rem}.kanban{grid-template-columns:repeat(4,minmax(15rem,1fr));gap:1rem;padding:1.25rem;display:grid;overflow:auto}.lane{border-radius:var(--radius);border:1px dashed #0000;flex-direction:column;min-height:0;transition:border-color .14s,background-color .14s;display:flex}.lane-over{border-color:var(--signal);background:var(--signal-soft)}.lane-head{border-bottom:1px solid var(--hairline);justify-content:space-between;align-items:center;padding:.5rem .5rem .75rem;display:flex}.lane-head h2{margin:0;font-size:1rem}.lane-count{color:var(--ink-faint)}.lane-body{align-content:start;gap:.6rem;min-height:8rem;padding:.75rem .5rem;display:grid}.lane-card{cursor:grab;border-radius:var(--radius);touch-action:none;outline:none}.lane-card:active{cursor:grabbing}.lane-card:hover .card{border-color:var(--ink-faint)}.lane-card:focus-visible .card,.lane-card-selected .card{border-color:var(--signal);box-shadow:0 0 0 3px var(--signal-soft), var(--shadow-card)}.lane-card-dragging{opacity:.4}.kanban-dragging{-webkit-user-select:none;user-select:none;cursor:grabbing}.drag-ghost{z-index:5;pointer-events:none;opacity:.92;width:16rem;position:fixed;top:0;left:0}.drag-ghost .card{box-shadow:var(--shadow-lift);transform:rotate(-1.5deg)}.lane-empty{text-align:center;color:var(--ink-faint);margin:0;padding:1.5rem 0}.inspector{background:var(--surface);border-left:1px solid var(--hairline);flex-direction:column;gap:1.35rem;min-width:0;min-height:0;padding:1.1rem 1.25rem 1.5rem;animation:.2s ease-out slide-in;display:flex;overflow:hidden auto}@keyframes slide-in{0%{opacity:0;transform:translate(1rem)}}.inspector-head{align-items:center;gap:.6rem;display:flex}.inspector-code{color:var(--ink-faint)}.inspector-blocked{color:var(--ink);background:repeating-linear-gradient(-45deg, var(--slate-soft) 0 3px, transparent 3px 6px);border-radius:3px;padding:.1rem .4rem}.inspector-close{margin-left:auto;font-size:1.1rem}.field{gap:.5rem;min-width:0;display:grid}.field-label{font-family:var(--font-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--ink-faint);font-size:.68rem}.field-row{justify-content:space-between;align-items:baseline;display:flex}.field-count{color:var(--ink-faint)}.field-hint{color:var(--ink-soft);margin:0;font-size:.82rem;line-height:1.45}.inspector-title{background:var(--sheet);border:1px solid var(--hairline);border-radius:var(--radius);outline:none;width:100%;padding:.5rem .65rem;font-size:1.05rem;font-weight:500;line-height:1.35;transition:border-color .14s,box-shadow .14s}.inspector-title:focus-visible{border-color:var(--signal);box-shadow:0 0 0 3px var(--signal-soft)}.segmented{background:var(--sheet);border:1px solid var(--hairline);border-radius:var(--radius);grid-template-columns:repeat(4,1fr);gap:2px;padding:3px;display:grid}.segment{border-radius:calc(var(--radius) - 2px);color:var(--ink-soft);background:0 0;border:0;padding:.4rem .2rem;font-size:.78rem;font-weight:500;transition:background-color .14s,color .14s}.segment:hover{color:var(--ink)}.segment:focus-visible{outline:2px solid var(--signal);outline-offset:-2px}.segment-on{color:var(--ink);background:var(--surface);box-shadow:var(--shadow-card)}.segment-on.segment-in_progress{color:var(--amber)}.segment-on.segment-complete{color:var(--green)}.link-list{gap:.35rem;margin:0;padding:0;list-style:none;display:grid}.link-list li{border:1px solid var(--hairline-soft);border-radius:var(--radius);align-items:center;gap:.5rem;min-height:2.2rem;padding:.25rem .25rem .25rem .6rem;display:flex}.link-list li.link-cleared{border-style:dashed}.link-jump{text-align:left;background:0 0;border:0;flex:1;align-items:center;gap:.6rem;min-width:0;padding:.2rem 0;display:flex}.link-jump .mono{color:var(--ink-faint)}.link-jump:hover .link-title{color:var(--signal)}.link-jump:focus-visible{outline:2px solid var(--signal);outline-offset:2px;border-radius:2px}.link-title{text-overflow:ellipsis;white-space:nowrap;font-size:.9rem;overflow:hidden}.link-remove{font-size:1rem}.link-empty{color:var(--ink-faint);font-size:.85rem;border-style:dashed!important}.link-add{gap:.4rem;display:flex}.link-add select{background:var(--sheet);border:1px solid var(--hairline);border-radius:var(--radius);outline:none;flex:1;width:0;min-width:0;padding:.45rem .55rem}.link-add select:focus-visible{border-color:var(--signal);box-shadow:0 0 0 3px var(--signal-soft)}.link-add button{color:#fff;background:var(--ink);border-radius:var(--radius);border:0;padding:0 .9rem;font-weight:500}.link-add button:hover:not(:disabled){background:var(--signal)}.link-add button:disabled{opacity:.35;cursor:default}.inspector-foot{border-top:1px solid var(--hairline-soft);gap:.6rem;margin-top:auto;padding-top:1.25rem;display:grid}.inspector-confirm{justify-content:flex-end;gap:.5rem;display:flex}.ghost{border-radius:calc(var(--radius) - 2px);color:var(--ink-soft);background:0 0;border:0;padding:.3rem .55rem;font-size:.85rem;font-weight:500;transition:background-color .14s,color .14s}.ghost:hover{color:var(--ink);background:var(--slate-soft)}.ghost:focus-visible{outline:2px solid var(--signal)}.danger-ghost{border-radius:var(--radius);color:var(--alarm);background:0 0;border:1px solid #0000;justify-self:start;padding:.35rem .6rem;font-size:.85rem;font-weight:500}.danger-ghost:hover{border-color:var(--alarm)}.danger{color:#fff;background:var(--alarm);border-radius:var(--radius);border:0;padding:.4rem .9rem;font-weight:500}.toasts{top:calc(var(--topbar) + .75rem);z-index:10;pointer-events:none;gap:.5rem;width:min(34rem,100% - 2rem);display:grid;position:fixed;left:50%;transform:translate(-50%)}.toast{background:var(--ink);color:#fff;border-radius:var(--radius);box-shadow:var(--shadow-lift);pointer-events:auto;align-items:center;gap:.6rem;padding:.55rem .5rem .55rem .9rem;font-size:.9rem;line-height:1.4;animation:.18s ease-out drop-in;display:flex}.toast>span:not(.toast-tag){flex:1}.toast .ghost{color:#ffffffb3}.toast .ghost:hover{color:#fff;background:#ffffff1f}.toast-cycle{background:var(--alarm)}.toast-tag{text-transform:uppercase;background:#ffffff2e;border-radius:3px;padding:.1rem .4rem}.toast-info{background:var(--green)}@keyframes drop-in{0%{opacity:0;transform:translateY(-.5rem)}}@media (width<=60rem){:root{--inspector:100%}.topbar{grid-template-rows:auto auto;grid-template-columns:1fr auto;row-gap:.6rem;height:auto;padding:.6rem 1rem}.app{grid-template-rows:auto 1fr}.composer{grid-area:2/1/auto/-1;max-width:none}.brand-sheet{display:none}.app-with-inspector .stage{grid-template-columns:0 1fr}.app-with-inspector .canvas,.app-with-inspector .kanban{display:none}.kanban{grid-template-columns:repeat(4,80vw)}.canvas-legend{display:none}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}
