:root{--bg: #fff;--fg: #1a1a1a;--muted: #6b7280;--line: #e5e7eb;--accent: #2563eb;--danger: #b91c1c;--warn: #b45309;--mention: #dbeafe}@media(prefers-color-scheme:dark){:root{--bg: #111827;--fg: #f3f4f6;--muted: #9ca3af;--line: #374151;--accent: #60a5fa;--danger: #f87171;--warn: #fbbf24;--mention: #1e3a8a}}*{box-sizing:border-box}body{margin:0;font:14px/1.45 system-ui,sans-serif;background:var(--bg);color:var(--fg)}.layout{display:flex;flex-direction:column;height:100vh}.header{display:flex;justify-content:space-between;align-items:center;padding:8px 16px;border-bottom:1px solid var(--line)}.header h1{font-size:16px;margin:0;display:inline}.header .home-link{margin-right:10px;color:var(--muted);font-size:13px;text-decoration:none}.header .home-link:hover{text-decoration:underline}.header button.home-link{padding:0;border:0;background:none;font:inherit;font-size:13px;cursor:pointer}.home-back{padding:0;border:0;background:none;font:inherit;color:var(--accent);text-decoration:underline;cursor:pointer}.page-join-home{margin:12px 0 0;text-align:center}.header-right{display:flex;gap:12px;align-items:center;color:var(--muted)}.conn{font-size:12px}.conn-open{color:#16a34a}.conn-reconnecting,.conn-connecting{color:#d97706}.conn-closed{color:var(--danger)}.body{display:flex;flex:1;min-height:0}.sidebar{width:220px;border-right:1px solid var(--line);display:flex;flex-direction:column;min-height:0;overflow-y:auto}.threads{padding:8px}.threads-head{display:flex;justify-content:space-between;align-items:center;font-weight:600;margin-bottom:8px}.threads ul{list-style:none;margin:0;padding:0}.threads li{display:flex;flex-wrap:wrap;gap:6px;align-items:center;padding:0 8px;border-radius:6px}.threads li .thread-pick{flex:1;display:flex;gap:6px;align-items:center;text-align:left;padding:6px 0;border:none;background:none;color:inherit;font:inherit;cursor:pointer}.threads li.active{background:var(--mention)}.threads li.invited>.thread-pick{font-weight:600}.badge-invited{background:var(--accent);color:var(--bg)}.thread-url{display:block;flex-basis:100%;font-size:.8em;opacity:.8;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;padding-bottom:4px}.thread-form{display:flex;flex-wrap:wrap;gap:4px;margin-bottom:8px}.thread-form input{flex:1 1 100%}.guidelines{padding:8px;border-top:1px solid var(--line)}.guidelines-head{display:flex;justify-content:space-between;align-items:center;font-weight:600;margin-bottom:8px}.guidelines-body{font-size:13px}.guidelines-body>:first-child{margin-top:0}.guidelines-body>:last-child{margin-bottom:0}.guidelines-form{display:flex;flex-wrap:wrap;gap:4px}.guidelines-form textarea{flex:1 1 100%;font:inherit;resize:vertical}.counter{flex:1 1 100%;color:var(--muted);font-size:12px}.counter.over{color:var(--danger)}.instance-guidelines{margin-top:8px;font-size:12px;color:var(--muted)}.instance-guidelines summary{cursor:pointer}.thread-tools{margin-top:12px;border-top:1px solid var(--line);padding-top:8px}.url-form{display:flex;gap:4px;margin-bottom:6px}.url-form input{flex:1;min-width:0}.invite-list{display:flex;flex-wrap:wrap;gap:4px 8px;align-items:center;font-size:12px}.invite-head{color:var(--muted);font-weight:600}.invited-mark{color:var(--muted)}.main{flex:1;display:flex;flex-direction:column;min-width:0}.messages{flex:1;overflow-y:auto;padding:12px 16px}.listeners-view{flex:1;min-height:0;overflow-y:auto}.msg{margin-bottom:12px}.msg-head{color:var(--muted);font-size:12px}.msg-body p{margin:4px 0}.msg-body pre{background:#7f7f7f26;padding:8px;border-radius:6px;overflow-x:auto}.system{color:var(--muted);font-size:12px;font-style:italic;margin:6px 0}.system-body{margin-left:12px;font-style:normal}.mention{background:var(--mention);border-radius:4px;padding:0 3px}.composer{position:relative;display:flex;gap:8px;padding:8px 16px;border-top:1px solid var(--line)}.composer textarea{flex:1;resize:vertical;font:inherit;padding:8px;border-radius:6px;border:1px solid var(--line);background:var(--bg);color:var(--fg)}.suggest{position:absolute;bottom:100%;left:16px;list-style:none;margin:0 0 4px;padding:4px;background:var(--bg);border:1px solid var(--line);border-radius:6px;box-shadow:0 4px 12px #00000026}.suggest li{padding:4px 8px;cursor:pointer;border-radius:4px}.suggest li.active{background:var(--mention)}.badge{font-size:11px;padding:1px 6px;border-radius:10px;background:var(--line);color:var(--muted);margin-left:6px}.banner{padding:8px 16px;background:var(--line);color:var(--muted)}.invite-banner{display:flex;justify-content:space-between;align-items:center;gap:8px}.error,.error-bar{color:var(--danger)}.error-bar{padding:4px 16px}.warn-bar{color:var(--warn);padding:4px 16px;font-size:12px}.center{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100vh}.modal-backdrop{position:fixed;inset:0;background:#0006;display:flex;align-items:center;justify-content:center}.modal{background:var(--bg);padding:20px;border-radius:10px;min-width:320px;display:flex;flex-direction:column;gap:8px}.modal-actions{display:flex;justify-content:flex-end;gap:8px}button{font:inherit;padding:6px 10px;border-radius:6px;border:1px solid var(--line);background:var(--bg);color:var(--fg);cursor:pointer}button.danger{color:var(--danger)}button.link{border:none;background:none;color:var(--accent);padding:0 4px;font-size:12px}button:disabled{opacity:.5;cursor:default}input{font:inherit;padding:6px 8px;border-radius:6px;border:1px solid var(--line);background:var(--bg);color:var(--fg)}.requests,.listeners-line{padding:8px;border-top:1px solid var(--line)}.requests-head{display:flex;justify-content:space-between;align-items:center;font-weight:600;margin-bottom:8px}.listeners-line{display:flex;flex-wrap:wrap;gap:4px 8px;align-items:baseline;font-size:13px}.listeners-line-link{font-weight:600;color:var(--accent)}button.listeners-line-link{padding:0;border:0;background:none;font:inherit;font-weight:600;color:var(--accent);text-decoration:underline;cursor:pointer}.listeners-line .muted{font-size:12px}.request-list,.offers,.closed-requests ul{list-style:none;margin:0;padding:0}.request{border:1px solid var(--line);border-radius:6px;padding:6px;margin-bottom:8px}.request-head{display:flex;justify-content:space-between;align-items:baseline;gap:6px}.req-needs,.req-count{color:var(--muted);font-size:12px}.offers li{display:flex;flex-wrap:wrap;gap:4px;align-items:baseline;font-size:12px;margin-top:4px}.offer-form,.open-request{display:flex;flex-wrap:wrap;gap:4px;margin-top:6px}.offer-form input,.open-request input,.open-request select{flex:1 1 100%;min-width:0}.open-request .model-row{display:flex;gap:4px;flex:1 1 100%}.open-request label{flex:1 1 45%;color:var(--muted);font-size:12px}.closed-requests{margin-top:8px;font-size:12px;color:var(--muted)}.closed-requests summary{cursor:pointer}.closed-requests li{margin:4px 0}.profile-card{border:1px solid var(--line);border-radius:6px;padding:6px;margin-bottom:8px;font-size:12px}.profile-name{font-weight:600}.profile-card dl{display:grid;grid-template-columns:auto 1fr;gap:0 8px;margin:4px 0 0}.profile-card dt{color:var(--muted)}.profile-card dd{margin:0;overflow-wrap:anywhere}select{font:inherit;padding:6px 8px;border-radius:6px;border:1px solid var(--line);background:var(--bg);color:var(--fg)}.join-lobby{padding:12px 16px;border-bottom:1px solid var(--line)}.join-lobby h2{font-size:16px;margin:0}.join-lobby-title{margin:2px 0 8px;color:var(--muted)}.join-lobby form{display:flex;flex-wrap:wrap;gap:8px;align-items:center}.join-lobby label{display:flex;gap:6px;align-items:center}.join-lobby .hint,.join-lobby .error,.join-taken{flex:1 1 100%;margin:0}.join-lobby .hint{color:var(--muted);font-size:12px}.join-taken p{margin:0 0 6px}.page-join{max-width:560px;margin:48px auto}.page-join .join-lobby{border:1px solid var(--line);border-radius:10px}.main-page{max-width:680px;margin:0 auto;padding:24px 16px 48px}.main-page>h1{font-size:22px;margin:0 0 12px}.main-page>section{margin-bottom:16px}.main-page h2{font-size:16px;margin:0 0 6px}.persistence-bar{display:flex;gap:8px;align-items:baseline;padding:8px 12px;margin-bottom:16px;border:1px solid var(--warn);border-radius:8px;color:var(--warn)}.persistence-bar p{margin:0;flex:1;font-size:13px}.main-guidelines-body{font-size:13px}.main-guidelines-body>:first-child{margin-top:0}.lobby-summary-title{margin:0 0 4px;font-weight:600}.lobby-counts{display:flex;flex-wrap:wrap;gap:4px 12px;list-style:none;margin:0;padding:0;color:var(--muted);font-size:13px}.lobby-open{margin:0 0 16px}.muted{color:var(--muted)}.weave-filter{display:flex;gap:6px;align-items:center;margin:0 0 8px;color:var(--muted);font-size:13px}.weave-list{list-style:none;margin:0;padding:0}.weave-row{display:flex;flex-wrap:wrap;gap:8px;align-items:baseline;padding:6px 0;border-bottom:1px solid var(--line)}.weave-row-title{font-weight:600}.weave-row-title-inplace,.lobby-open-inplace{padding:0;border:0;background:none;font:inherit;color:var(--accent);text-decoration:underline;cursor:pointer}.lobby-open-inplace{font-weight:inherit}.weave-row-state,.weave-row-note{color:var(--muted);font-size:12px}.weave-row-dead .weave-row-title{font-weight:400;color:var(--muted)}.weave-row-copy,.weave-row-forget{font-size:12px}.weave-row-copy,.weave-row-dead .weave-row-forget{margin-left:auto}.weave-row-copied{color:var(--muted);font-size:12px}.weave-row-copy-manual{flex:1 1 100%;display:flex;gap:6px;align-items:center;font-size:12px;color:var(--muted)}.weave-row-link{flex:1;font-size:12px}.weave-row-hide{font-size:12px}.weave-more{margin-top:8px}.listeners{max-width:1040px;margin:0 auto;padding:16px 16px 48px}.listeners-partial{margin:8px 0 0;font-size:13px}.listeners-controls{display:flex;flex-wrap:wrap;gap:8px 16px;align-items:center;margin:12px 0}.listeners-controls label{display:flex;gap:6px;align-items:center;color:var(--muted);font-size:13px}.listeners-search{flex:1 1 260px}.listeners-search input{flex:1;min-width:0}.listeners-facets{display:flex;flex-direction:column;gap:6px;margin-bottom:12px}.facet{display:flex;flex-wrap:wrap;gap:4px 8px;align-items:baseline}.facet-label{min-width:64px;font-weight:600;font-size:13px}.facet-hint,.facet-more{color:var(--muted);font-size:12px}.chips{display:flex;flex-wrap:wrap;gap:4px;list-style:none;margin:0;padding:0;align-items:baseline}.chips li{display:flex;flex-wrap:wrap;gap:4px;align-items:baseline}.chip{padding:2px 8px;border-radius:12px;border:1px solid var(--line);background:var(--bg);color:var(--fg);font-size:12px;cursor:pointer}.chip-count{color:var(--muted)}.chip-on{border-color:var(--accent);background:var(--mention);font-weight:600}.chip-on .chip-count{color:inherit}.chip:disabled{opacity:.5;cursor:not-allowed}.chips-effort{flex-basis:100%;margin-left:16px}.listeners-changed{margin:8px 0;font-size:13px}.listeners-counts{margin:8px 0;color:var(--muted);font-size:13px;display:flex;gap:8px;min-height:1.45em}.listeners-updating{font-style:italic}.listeners-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:8px}.listeners-grid-stale{opacity:.6}.listeners-more{display:flex;flex-wrap:wrap;gap:8px;align-items:center;justify-content:center;margin-top:16px}.page-join-invalid,.page-join-refused{margin:0 0 8px;text-align:center}.create-weave form{display:flex;flex-wrap:wrap;gap:8px;align-items:center}.create-weave label{display:flex;gap:6px;align-items:center}.create-weave .create-opener,.create-weave .create-guidelines{flex:1 1 100%;align-items:flex-start}.create-weave textarea{flex:1;font:inherit;min-height:44px;padding:6px 8px;border-radius:6px;border:1px solid var(--line);background:var(--bg);color:var(--fg)}.create-weave .hint,.create-weave .error{flex:1 1 100%;margin:0}.create-weave .hint{color:var(--muted);font-size:12px}.create-more{font-size:12px}.create-closed{margin:0 0 8px}.create-saved{border:1px solid var(--line);border-radius:8px;padding:12px}.create-saved-hardened{border-color:var(--warn)}.create-saved-title{margin:0 0 8px;color:var(--muted)}.create-saved-link{display:flex;flex-wrap:wrap;gap:6px;align-items:center;margin-bottom:8px}.create-link{flex:1 1 240px;font-size:12px}.create-copied{color:var(--muted);font-size:12px}.create-warning{margin:0 0 8px;font-size:13px}.create-warning-hard{color:var(--warn)}.create-saved-actions{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
