| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792 |
- :root {
- color-scheme:light;
- --ink:#172b35;
- --muted:#71818b;
- --line:#e4e9ed;
- --bg:#f4f7f8;
- --green:#087a69;
- --green-soft:#e6f5ef;
- --red:#b53f42;
- --amber:#92671a;
- font-family:-apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC","Microsoft YaHei",sans-serif;
- font-size:14px;
- }
- * {
- box-sizing:border-box;
- }
- body {
- margin:0;
- background:var(--bg);
- color:var(--ink);
- }
- button,input {
- font:inherit;
- }
- button {
- cursor:pointer;
- }
- button:disabled {
- cursor:not-allowed;
- opacity:.45;
- }
- button,input,summary {
- touch-action:manipulation;
- }
- button:focus-visible,input:focus-visible,summary:focus-visible {
- outline:3px solid #55baa5;
- outline-offset:3px;
- }
- input {
- width:100%;
- height:45px;
- border:1px solid #d9e2e7;
- border-radius:8px;
- padding:0 12px;
- color:var(--ink);
- background:#fff;
- transition:border-color .15s;
- }
- input:focus {
- border-color:var(--green);
- outline:none;
- box-shadow:0 0 0 3px #087a6910;
- }
- input::placeholder {
- color:#a0acb4;
- }
- label {
- display:block;
- font-weight:600;
- font-size:13px;
- margin:0 0 8px;
- }
- pre {
- font:12px/1.65 ui-monospace,SFMono-Regular,Consolas,monospace;
- white-space:pre-wrap;
- overflow-wrap:anywhere;
- }
- h1,h2,p {
- margin:0;
- }
- h1 {
- font-size:32px;
- font-weight:650;
- letter-spacing:-1px;
- margin:17px 0 10px;
- }
- h2 {
- font-size:16px;
- font-weight:650;
- }
- .page {
- max-width:1264px;
- margin:auto;
- padding:38px 32px 24px;
- }
- .page-header {
- display:flex;
- justify-content:space-between;
- align-items:center;
- margin-bottom:28px;
- }
- .eyebrow {
- display:flex;
- align-items:center;
- gap:10px;
- font:600 11px/1.2 ui-monospace,SFMono-Regular,Consolas,monospace;
- letter-spacing:1.5px;
- color:#647d83;
- }
- .brand-mark {
- display:grid;
- place-items:center;
- height:25px;
- width:25px;
- background:var(--green);
- color:white;
- border-radius:7px;
- font-size:20px;
- letter-spacing:0;
- }
- .eyebrow-divider {
- color:#b5c3c7;
- margin:0 3px;
- }
- .intro {
- font-size:14px;
- color:var(--muted);
- line-height:1.65;
- }
- .pill {
- display:flex;
- align-items:center;
- gap:8px;
- border:1px solid #dce5e8;
- background:#fff;
- border-radius:24px;
- padding:10px 15px;
- font-size:12px;
- font-weight:600;
- }
- .dot {
- display:inline-block;
- width:7px;
- height:7px;
- border-radius:50%;
- background:#9daeb5;
- flex:none;
- }
- .green,.pill[data-status=connected] .dot {
- background:var(--green);
- }
- .pill[data-status=connected] {
- border-color:#b9ded0;
- color:var(--green);
- background:#f1faf5;
- }
- .pill[data-status=connecting] .dot {
- background:#bc8c35;
- animation:pulse 1.3s infinite;
- }
- .pill[data-status=failed],.pill[data-status=unavailable] {
- color:var(--red);
- border-color:#e7c5c5;
- }
- .workspace {
- display:grid;
- grid-template-columns:360px minmax(0,1fr);
- gap:22px;
- align-items:start;
- }
- .card {
- background:#fff;
- border:1px solid var(--line);
- border-radius:13px;
- box-shadow:0 3px 12px #16303c03;
- padding:24px;
- }
- .section-heading {
- display:flex;
- align-items:center;
- gap:9px;
- margin-bottom:22px;
- }
- .section-heading .small {
- margin-left:auto;
- }
- .section-number {
- color:#93a3aa;
- font:12px ui-monospace,SFMono-Regular,Consolas,monospace;
- }
- .muted {
- color:var(--muted);
- }
- .small {
- font-size:12px;
- }
- .field-help {
- font-size:12px;
- color:var(--muted);
- line-height:1.7;
- margin:8px 0 20px;
- }
- .token-field {
- position:relative;
- }
- .token-field input {
- padding-right:56px;
- }
- .icon-button {
- border:0;
- background:none;
- position:absolute;
- right:7px;
- top:8px;
- padding:6px;
- color:var(--green);
- font-size:12px;
- }
- .button {
- border:1px solid transparent;
- border-radius:8px;
- padding:11px 15px;
- display:inline-flex;
- justify-content:center;
- align-items:center;
- gap:8px;
- white-space:nowrap;
- font-weight:600;
- font-size:13px;
- min-height:42px;
- }
- .primary {
- background:var(--green);
- color:white;
- }
- .primary:hover:not(:disabled) {
- background:#066758;
- }
- .secondary {
- background:#fff;
- border-color:#dce4e8;
- color:#3c5661;
- }
- .secondary:hover:not(:disabled) {
- background:#f4f7f8;
- }
- .full-width {
- width:100%;
- justify-content:space-between;
- }
- .connection-actions {
- display:grid;
- grid-template-columns:1fr 70px;
- gap:9px;
- margin-top:22px;
- }
- .small-note {
- font-size:11px;
- line-height:1.8;
- color:#8a999f;
- margin-top:15px;
- }
- .right-column {
- display:grid;
- gap:22px;
- }
- .checks {
- list-style:none;
- padding:0;
- margin:0;
- }
- .checks li {
- display:flex;
- align-items:center;
- gap:13px;
- padding:14px 0;
- border-bottom:1px solid #f0f3f5;
- }
- .checks li:first-child {
- padding-top:0;
- }
- .checks li:last-child {
- border-bottom:0;
- padding-bottom:0;
- }
- .check-icon {
- width:30px;
- height:30px;
- border:1px solid #dfe7eb;
- color:#92a3ab;
- border-radius:50%;
- display:grid;
- place-items:center;
- font:12px ui-monospace,SFMono-Regular,Consolas,monospace;
- flex:none;
- }
- .checks strong {
- display:block;
- font-size:13px;
- font-weight:600;
- margin-bottom:5px;
- }
- .checks li div span {
- font-size:12px;
- color:#8999a0;
- line-height:1.6;
- display:block;
- }
- .check-state {
- margin-left:auto;
- color:#9babb2;
- font-size:11px;
- white-space:nowrap;
- }
- .checks [data-status=ok] .check-icon {
- color:var(--green);
- background:var(--green-soft);
- border-color:transparent;
- }
- .checks [data-status=ok] .check-state {
- color:var(--green);
- }
- .checks [data-status=loading] .check-icon {
- color:var(--amber);
- background:#fff8e7;
- border-color:transparent;
- }
- .checks [data-status=error] .check-icon {
- color:var(--red);
- background:#fceeee;
- border-color:transparent;
- }
- .checks [data-status=error] .check-state {
- color:var(--red);
- }
- .checks [data-status=warning] .check-state {
- color:var(--amber);
- }
- .verdict {
- font-size:12px;
- color:#758e92;
- line-height:1.8;
- background:#f4f9f8;
- border-radius:8px;
- padding:12px 14px;
- margin-top:21px;
- }
- .verdict[data-status=ok] {
- color:#146b56;
- background:#eaf6ee;
- }
- .config-summary {
- margin-top:22px;
- padding-top:19px;
- border-top:1px solid var(--line);
- }
- .summary-topline {
- display:flex;
- align-items:center;
- gap:7px;
- font-size:12px;
- color:var(--green);
- font-weight:600;
- }
- .config-summary dl {
- margin:13px 0;
- }
- .config-summary dl div {
- display:flex;
- gap:10px;
- align-items:baseline;
- font-size:11px;
- margin-top:11px;
- }
- .config-summary dt {
- flex:none;
- color:var(--muted);
- width:65px;
- }
- .config-summary dd {
- margin:0;
- color:#38505b;
- overflow-wrap:anywhere;
- font-family:ui-monospace,SFMono-Regular,Consolas,monospace;
- }
- .config-summary pre {
- background:#f5f8f9;
- padding:12px;
- border-radius:6px;
- max-height:250px;
- overflow:auto;
- margin-bottom:0;
- }
- summary {
- font-size:12px;
- color:var(--muted);
- cursor:pointer;
- }
- .channel-toolbar,.event-toolbar {
- display:flex;
- align-items:center;
- justify-content:space-between;
- gap:12px;
- margin-bottom:15px;
- }
- .channel-toolbar>div {
- display:flex;
- align-items:center;
- gap:8px;
- }
- .text-button {
- border:0;
- background:none;
- color:var(--green);
- padding:4px 0;
- font-size:12px;
- }
- .text-button:hover:not(:disabled) {
- text-decoration:underline;
- }
- .compact {
- min-height:32px;
- padding:6px 10px;
- font-size:12px;
- }
- .channel-list {
- display:grid;
- grid-template-columns:repeat(2,minmax(0,1fr));
- gap:8px;
- max-height:236px;
- overflow:auto;
- padding:1px;
- }
- .channel {
- display:flex;
- align-items:center;
- gap:9px;
- border:1px solid #e5ecef;
- border-radius:7px;
- padding:10px;
- min-width:0;
- margin:0;
- font-size:12px;
- font-weight:400;
- cursor:pointer;
- }
- .channel:has(input:checked) {
- background:#f4faf7;
- border-color:#d6e8df;
- }
- .channel input {
- width:14px;
- height:14px;
- accent-color:var(--green);
- flex:none;
- margin:0;
- }
- .channel .channel-name {
- overflow:hidden;
- text-overflow:ellipsis;
- white-space:nowrap;
- }
- .channel-status {
- margin-left:auto;
- font-size:10px;
- color:#96a7ae;
- white-space:nowrap;
- }
- .channel-status[data-status=subscribed] {
- color:var(--green);
- }
- .channel-status[data-status=denied],.channel-status[data-status=error] {
- color:var(--red);
- }
- .replay-controls {
- display:flex;
- align-items:end;
- gap:10px;
- border-top:1px solid #eef2f4;
- padding-top:15px;
- margin-top:16px;
- }
- .replay-controls>div {
- flex:1;
- }
- .replay-controls input {
- height:38px;
- font-size:12px;
- }
- .replay-controls label {
- font-size:12px;
- }
- .optional {
- font-weight:400;
- color:#a0adb4;
- font-size:11px;
- margin-left:6px;
- }
- .replay-controls button {
- min-height:38px;
- }
- .channels-card .field-help {
- margin-bottom:0;
- }
- .events-card {
- margin-top:22px;
- padding-bottom:12px;
- }
- .event-totals {
- margin-left:auto;
- display:flex;
- gap:20px;
- color:var(--muted);
- font-size:12px;
- }
- .event-totals strong {
- font-variant-numeric:tabular-nums;
- font-size:16px;
- color:#304c57;
- font-weight:600;
- margin-left:5px;
- }
- .segmented {
- display:flex;
- gap:2px;
- background:#f1f5f6;
- padding:3px;
- border-radius:7px;
- }
- .segmented button {
- border:0;
- border-radius:5px;
- background:transparent;
- color:#83959e;
- padding:6px 16px;
- font-size:12px;
- }
- .segmented [aria-pressed=true] {
- color:#1f6257;
- background:#fff;
- box-shadow:0 1px 4px #142e3810;
- }
- .table-scroll {
- overflow-x:auto;
- }
- table {
- border-collapse:collapse;
- width:100%;
- text-align:left;
- font-size:12px;
- }
- th {
- color:#899aa2;
- font-weight:400;
- font-size:11px;
- padding:11px 10px;
- background:#f8fafb;
- border-bottom:1px solid var(--line);
- white-space:nowrap;
- }
- th:first-child {
- border-radius:7px 0 0;
- }
- th:last-child {
- border-radius:0 7px 0 0;
- }
- td {
- padding:13px 10px;
- border-bottom:1px solid #edf2f4;
- white-space:nowrap;
- }
- td .subline {
- display:block;
- color:#91a0a6;
- margin-top:5px;
- font-size:11px;
- }
- td.seq {
- font-family:ui-monospace,SFMono-Regular,Consolas,monospace;
- }
- .tag {
- display:inline-block;
- padding:3px 7px;
- border-radius:4px;
- background:#e8f5ee;
- color:#228160;
- font-size:10px;
- }
- .tag.replay {
- background:#eef1fa;
- color:#6578ad;
- }
- .tag.duplicate {
- background:#fff6e5;
- color:#a17a2e;
- margin-left:4px;
- }
- tr.selected td {
- background:#f5faf8;
- }
- .empty {
- padding:35px 16px;
- display:flex;
- flex-direction:column;
- align-items:center;
- gap:10px;
- color:#97a5ad;
- font-size:12px;
- line-height:1.7;
- text-align:center;
- }
- .empty strong {
- color:#758991;
- font-size:13px;
- font-weight:500;
- }
- .empty-signal {
- font-size:34px;
- line-height:1;
- color:#b1c9c4;
- }
- .compact-empty {
- grid-column:1/-1;
- padding:24px;
- font-size:12px;
- }
- .event-detail {
- margin:16px 0 5px;
- border:1px solid var(--line);
- border-radius:8px;
- padding:14px;
- background:#f8fafb;
- }
- .event-detail summary {
- color:#34525d;
- }
- #detail-meta {
- font-size:11px;
- color:#8b9ba2;
- margin-left:10px;
- }
- .event-detail pre {
- max-height:350px;
- overflow:auto;
- margin-bottom:0;
- }
- .logs-card {
- margin-top:22px;
- padding-bottom:14px;
- }
- .logs-card .section-heading {
- margin-bottom:12px;
- }
- .logs-card .text-button {
- margin-left:auto;
- }
- .logs-card h2 {
- font-size:14px;
- }
- #logs {
- margin:0;
- padding:0;
- list-style:none;
- max-height:230px;
- overflow:auto;
- scrollbar-width:thin;
- }
- .log-entry {
- padding:9px 0;
- border-bottom:1px solid #f0f3f5;
- display:flex;
- align-items:baseline;
- gap:14px;
- font-size:12px;
- line-height:1.7;
- overflow-wrap:anywhere;
- }
- .log-entry:last-child {
- border:0;
- }
- .log-entry time {
- font:11px ui-monospace,SFMono-Regular,Consolas,monospace;
- color:#9cabb1;
- flex:none;
- width:66px;
- }
- .log-entry[data-level=error]>span {
- color:var(--red);
- }
- .log-entry[data-level=warning]>span {
- color:var(--amber);
- }
- .log-entry[data-level=success]>span {
- color:#3d8069;
- }
- .notice {
- border:1px solid #edcece;
- border-radius:9px;
- padding:13px 16px;
- font-size:13px;
- line-height:1.7;
- margin-bottom:20px;
- }
- .notice.error {
- background:#fff3f1;
- color:#a84541;
- }
- footer {
- display:flex;
- justify-content:space-between;
- align-items:center;
- gap:15px;
- color:#9ba9b0;
- font-size:11px;
- padding:24px 2px 0;
- }
- footer>span:first-child {
- display:flex;
- gap:7px;
- align-items:center;
- }
- .sr-only {
- position:absolute;
- width:1px;
- height:1px;
- overflow:hidden;
- clip-path:inset(50%);
- }
- [hidden] {
- display:none!important;
- }
- @keyframes pulse {
- 50% {
- opacity:.35;
- }
- }
- @media(max-width:960px) {
- .workspace {
- grid-template-columns:320px minmax(0,1fr);
- }
- .card {
- padding:20px;
- }
- .channel-list {
- grid-template-columns:1fr;
- }
- .event-totals {
- gap:12px;
- }
- }
- @media(max-width:760px) {
- .page {
- padding:24px 18px;
- }
- .workspace {
- grid-template-columns:1fr;
- }
- .page-header {
- align-items:flex-start;
- }
- .pill {
- margin-top:6px;
- padding:8px 11px;
- }
- h1 {
- font-size:28px;
- }
- .intro {
- max-width:250px;
- font-size:13px;
- }
- .channel-list {
- grid-template-columns:repeat(2,minmax(0,1fr));
- }
- .event-heading {
- flex-wrap:wrap;
- }
- .event-totals {
- width:100%;
- margin:3px 0 0 24px;
- }
- .checks li div span {
- max-width:250px;
- }
- footer {
- align-items:flex-start;
- flex-direction:column;
- gap:9px;
- }
- .section-heading {
- margin-bottom:18px;
- }
- .setup-card .small-note {
- max-width:500px;
- }
- }
- @media(prefers-reduced-motion:reduce) {
- *,*::before,*::after {
- animation:none!important;
- transition:none!important;
- }
- }
|