body{font-family:system-ui,-apple-system,sans-serif;margin:0;padding:0;background:#f3f3f3;color:#222}.too-narrow-gate{display:none}@media (max-width: 1249.98px){#root{display:none}.too-narrow-gate{display:flex;position:fixed;top:0;right:0;bottom:0;left:0;align-items:center;justify-content:center;padding:1.5rem;background:#f3f3f3;z-index:10000}.too-narrow-card{max-width:380px;text-align:center}.too-narrow-card h1{margin:0 0 .6rem;font-size:1.25rem;font-weight:600;text-transform:lowercase;letter-spacing:.02em;color:#222}.too-narrow-card p{margin:0 0 .5rem;font-size:.9rem;line-height:1.5;color:#555}.too-narrow-card strong{color:#222;font-weight:600}.too-narrow-card .too-narrow-hint{margin-top:1rem;font-size:.8rem;color:#888}}.app{display:flex;flex-direction:column;height:100vh;overflow:hidden}.app-header{display:flex;align-items:center;padding:.45rem .9rem;border-bottom:1px solid #ddd;background:#fff}.app-header h1{margin:0;font-size:1rem;font-weight:600;letter-spacing:.01em}.app-body{display:flex;flex:1;min-height:0}.app-main{flex:1;min-width:0;padding:.7rem;position:relative;display:flex;flex-direction:column;min-height:0;overflow:hidden}.blocks-module{flex:1;min-height:0}.module-body{flex:1;min-height:0;overflow-y:auto}.app-sidebar{width:400px;flex-shrink:0;padding:.7rem;border-right:1px solid #ddd;background:#fafafa;display:flex;flex-direction:column;min-height:0;overflow:hidden}.helper-module{flex:1;min-height:0;overflow-y:auto}.module{background:#fff;border:1px solid #d8d8d8;border-radius:8px;box-shadow:0 1px 2px #0000000a;padding:.8rem;display:flex;flex-direction:column}.module+.module{margin-top:.7rem}.module-header{display:flex;align-items:baseline;padding-bottom:.5rem;margin-bottom:.6rem;border-bottom:1px solid #ececec}.module-title{font-size:.85rem;font-weight:600;color:#444;text-transform:uppercase;letter-spacing:.04em}.module-footer{display:flex;align-items:center;gap:.4rem;margin:.6rem -.8rem -.8rem;padding:.4rem .9rem;border-top:1px solid #ececec;background:#fafafa;border-bottom-left-radius:8px;border-bottom-right-radius:8px;font-size:.78rem;color:#555}.module-footer .footer-status strong{color:#222;font-weight:600}.module-footer .footer-sep{color:#ccc}.module-placeholder{font-size:.85rem;color:#999;font-style:italic;padding:.6rem 0}.nft-trending{display:flex;flex-direction:column;gap:.4rem}.nft-chip-row{display:flex;flex-wrap:wrap;gap:.3rem}.nft-timeframe-row{display:flex;gap:.3rem;margin-bottom:.2rem}.nft-timeframe-row button{padding:.2rem .6rem;font-size:.75rem;background:#fff;border:1px solid #ccc;border-radius:4px;cursor:pointer;color:#444}.nft-timeframe-row button:disabled{background:#222;color:#fff;border-color:#222;cursor:default}.nft-chip{font-size:.72rem;padding:.2rem .55rem;border-radius:12px;border:1px solid #ccc;background:#f6f6f6;color:#666;cursor:pointer;text-transform:lowercase;letter-spacing:.02em}.nft-chip:hover{background:#ececec}.nft-chip.active{background:#222;border-color:#222;color:#fff}.nft-chain-badge{display:inline-block;padding:.05rem .4rem;border-radius:3px;background:#555;color:#fff;font-size:.62rem;font-weight:600;text-transform:lowercase;letter-spacing:.02em}.nft-filter-btn{margin-left:auto;display:inline-flex;align-items:center;gap:.3rem;font-size:.72rem;padding:.2rem .55rem;border-radius:12px;border:1px solid #ccc;background:#f6f6f6;color:#444;cursor:pointer}.nft-filter-btn:hover{background:#ececec}.nft-filter-badge{display:inline-block;min-width:1.1rem;padding:0 .3rem;border-radius:8px;background:#d33;color:#fff;font-size:.62rem;font-weight:700;text-align:center;line-height:1.2}.nft-table th.active-sort{color:#222;background:#f0f0f0}.nft-hot{font-weight:700;color:#d33}.modal-section{margin-bottom:1.1rem}.modal-section h3{font-size:.72rem;text-transform:uppercase;letter-spacing:.06em;color:#777;margin:0 0 .4rem}.modal-radio-group{display:flex;flex-direction:column;gap:.25rem}.modal-radio,.modal-check{display:flex;align-items:center;gap:.4rem;font-size:.85rem;cursor:pointer}.modal-field{display:flex;align-items:center;justify-content:space-between;gap:.6rem;margin:.3rem 0;font-size:.85rem}.modal-field input[type=number]{width:5rem;padding:.25rem .4rem;font-size:.85rem;border:1px solid #ccc;border-radius:3px}.modal-footer{display:flex;justify-content:flex-end;gap:.5rem;margin-top:.6rem;padding-top:.7rem;border-top:1px solid #eee}.modal-primary{padding:.4rem 1rem;font-size:.8rem;font-weight:600;background:#222;color:#fff;border:1px solid #222;border-radius:4px;cursor:pointer}.modal-secondary{padding:.4rem 1rem;font-size:.8rem;background:#fff;color:#555;border:1px solid #ccc;border-radius:4px;cursor:pointer}.modal-secondary:hover{background:#f4f4f4}.nft-trending-meta{font-size:.72rem;color:#888;text-transform:uppercase;letter-spacing:.04em}.nft-table{width:100%;border-collapse:collapse;font-size:.78rem;table-layout:fixed}.nft-table th,.nft-table td{padding:.3rem .4rem;text-align:right;border-bottom:1px solid #eee;white-space:nowrap}.nft-table th{font-weight:600;color:#666;font-size:.7rem;text-transform:uppercase;letter-spacing:.04em}.nft-table th:first-child,.nft-table td:first-child{text-align:left}.nft-addr{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;color:#333;overflow:hidden;text-overflow:ellipsis}.manage-btn{width:100%;padding:.45rem;font-size:.78rem;font-weight:600;background:#222;color:#fff;border:1px solid #222;border-radius:4px;cursor:pointer;text-transform:uppercase;letter-spacing:.04em}.manage-btn:hover{background:#000}.notif-list{list-style:none;margin:.8rem 0 0;padding:0;display:flex;flex-direction:column;gap:.3rem}.notif-row{display:flex;align-items:baseline;gap:.5rem;padding:.35rem .5rem;background:#fff;border:1px solid #eee;border-radius:4px;font-size:.78rem}.notif-row.notif-failed{background:#fff5f5;border-color:#f3d3d3}.notif-chain{flex-shrink:0;padding:.05rem .4rem;border-radius:3px;background:#555;color:#fff;font-size:.62rem;font-weight:600;text-transform:lowercase;letter-spacing:.02em;font-family:system-ui,-apple-system,sans-serif}.notif-mode{flex-shrink:0;padding:.05rem .4rem;border-radius:3px;font-size:.65rem;font-weight:600;text-transform:uppercase;letter-spacing:.04em;font-family:system-ui,-apple-system,sans-serif}.mode-from{background:#e3edff;color:#1a3aa8}.mode-to{background:#eaf5e1;color:#2c6a18}.mode-logs{background:#efe3ff;color:#5a1aa8}.notif-wallet{flex:1;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;color:#222;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.notif-ago{flex-shrink:0;color:#888;font-variant-numeric:tabular-nums;font-size:.72rem}.notif-row{cursor:pointer}.notif-row:hover{background:#f5f5f5;border-color:#ddd}.notif-row.notif-active{background:#e3edff;border-color:#b9caea}.notif-row.notif-active.notif-failed{background:#fff0d6;border-color:#e8d0a3}.notif-detail-row{margin-bottom:.7rem}.notif-detail-row:last-child{margin-bottom:0}.notif-detail-label{display:block;font-size:.68rem;color:#888;text-transform:uppercase;letter-spacing:.05em;margin-bottom:.15rem}.notif-detail-value{display:block;font-size:.85rem;color:#222;font-variant-numeric:tabular-nums}.notif-detail-value.mono{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.76rem;word-break:break-all}.notif-detail-status{display:inline-block;padding:.1rem .5rem;border-radius:3px;font-size:.72rem;font-weight:600;text-transform:uppercase;letter-spacing:.04em}.notif-detail-status.status-success{background:#eaf5e1;color:#2c6a18}.notif-detail-status.status-failed{background:#ffd6d6;color:#8a0e0e}.notif-detail-link{color:#1a3aa8;text-decoration:none;word-break:break-all}.notif-detail-link:hover{text-decoration:underline}.notif-detail-text{word-break:break-all}.copy-btn{margin-left:.4rem;padding:.05rem .4rem;font-size:.65rem;font-weight:600;background:#fff;color:#666;border:1px solid #ddd;border-radius:3px;cursor:pointer;text-transform:uppercase;letter-spacing:.04em;font-family:system-ui,-apple-system,sans-serif;vertical-align:2px}.copy-btn:hover{background:#efefef;color:#222}.copy-btn.copy-btn-active{background:#eaf5e1;color:#2c6a18;border-color:#bedbab}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0006;display:flex;align-items:center;justify-content:center;z-index:1000;padding:1rem}.modal{background:#fff;border-radius:8px;width:100%;max-width:600px;max-height:calc(100vh - 2rem);display:flex;flex-direction:column;box-shadow:0 10px 40px #00000040;overflow:hidden}.modal-header{display:flex;align-items:center;justify-content:space-between;padding:.7rem 1rem;border-bottom:1px solid #eee;background:#fafafa}.modal-header h2{margin:0;font-size:.9rem;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:#444}.modal-close{background:transparent;border:0;font-size:1.5rem;line-height:1;color:#666;cursor:pointer;padding:0 .3rem}.modal-close:hover{color:#000}.modal-body{padding:1rem;overflow-y:auto}.modal-add{display:flex;gap:.4rem}.modal-add input{flex:1;padding:.45rem .6rem;font-size:.85rem;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;border:1px solid #ccc;border-radius:4px}.modal-add input:focus{outline:none;border-color:#222}.modal-add button{padding:.45rem 1rem;font-size:.85rem;font-weight:600;background:#222;color:#fff;border:1px solid #222;border-radius:4px;cursor:pointer}.modal-add button:hover{background:#000}.modal-error{margin-top:.5rem;font-size:.8rem;color:#b00020}.modal-empty{padding:1.8rem 0;text-align:center;color:#999;font-style:italic;font-size:.85rem}.wallets-list{list-style:none;margin:.8rem 0 0;padding:0;border:1px solid #eee;border-radius:4px;overflow:hidden}.wallet-row{display:flex;align-items:center;padding:.4rem .6rem;border-bottom:1px solid #eee;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.82rem}.wallet-row:last-child{border-bottom:0}.wallet-addr{color:#333;word-break:break-all}.wallet-name{flex:1;margin-left:.8rem;font-family:system-ui,-apple-system,sans-serif;font-weight:600;color:#222;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.wallet-row:not(:has(.wallet-name)) .wallet-addr{flex:1}.wallet-remove{background:transparent;border:0;color:#999;font-size:1.2rem;line-height:1;cursor:pointer;padding:0 .4rem}.wallet-remove:hover{color:#b00020}.sidebar-tabs{display:flex;gap:.3rem;margin-bottom:.6rem}.sidebar-tabs button{flex:1;padding:.4rem .5rem;font-size:.75rem;font-weight:600;background:#fff;border:1px solid #ccc;border-radius:4px;cursor:pointer;text-transform:uppercase;letter-spacing:.04em;color:#555}.sidebar-tabs button:hover:not(:disabled){background:#efefef;color:#222}.sidebar-tabs button:disabled{background:#222;color:#fff;border-color:#222;cursor:default}.control-label{display:inline-flex;align-items:center;padding:.3rem .4rem;font-size:.85rem;color:#666}.controls{display:flex;gap:.4rem;margin:.4rem 0}.controls button{padding:.3rem .8rem;font-size:.9rem;background:#fff;border:1px solid #ccc;border-radius:4px;cursor:pointer}.controls button:disabled{background:#222;color:#fff;border-color:#222;cursor:default}.stats{display:flex;align-items:center;gap:1.2rem;padding:.5rem .7rem;margin:.5rem 0 .8rem;background:#fafafa;border:1px solid #e6e6e6;border-radius:6px;font-size:.88rem}.stat{display:flex;align-items:baseline;gap:.4rem}.stat-label{color:#666}.stat-value{font-weight:600;font-variant-numeric:tabular-nums}.stats-help{margin-left:auto;position:relative}.stats-help>summary{list-style:none;cursor:pointer;width:1.4rem;height:1.4rem;display:inline-flex;align-items:center;justify-content:center;border:1px solid #ccc;border-radius:50%;color:#666;font-size:.8rem;-webkit-user-select:none;user-select:none}.stats-help>summary::-webkit-details-marker{display:none}.stats-help>summary:hover{background:#efefef;color:#222}.stats-help[open]>summary{background:#222;color:#fff;border-color:#222}.stats-help-body{position:absolute;right:0;top:calc(100% + .4rem);background:#fff;border:1px solid #ddd;border-radius:6px;padding:.5rem .8rem;box-shadow:0 2px 8px #00000014;min-width:220px;z-index:10}.stats-help-body p{margin:.2rem 0;color:#444}.chart{background:#fafafa;border:1px solid #e6e6e6;border-radius:6px;padding:.55rem .8rem;margin:0 0 .8rem}.chart-toolbar{display:flex;align-items:center;justify-content:space-between;gap:.6rem;margin-bottom:.4rem}.chart-metric-row{display:flex;gap:.3rem}.chart-metric-btn{padding:.2rem .6rem;font-size:.78rem;background:#fff;border:1px solid #d0d0d0;border-radius:4px;cursor:pointer;color:#333}.chart-metric-btn:hover:not(:disabled){background:#efefef}.chart-metric-btn:disabled{background:#222;color:#fff;border-color:#222;cursor:default}.chart-max{font-size:.78rem;color:#666;font-variant-numeric:tabular-nums}.chart-canvas{position:relative}.chart-hover-layer{position:absolute;top:0;right:0;bottom:0;left:0;cursor:crosshair}.chart-empty{text-align:center;color:#999;font-size:.9rem;padding:2rem 0}.chart-svg{width:100%;height:120px;display:block}.chart-bar-stall{fill:#d0d0d0}.chart-seg-success,.chart-seg-plain{fill:#444}.chart-seg-failed{fill:#d24a4a}.chart-seg-gas{fill:#d68512}.chart-hover-cursor{position:absolute;top:0;bottom:0;background:#00000012;pointer-events:none}.chart-tooltip{position:absolute;bottom:calc(100% + 6px);background:#fff;border:1px solid #d0d0d0;border-radius:5px;box-shadow:0 2px 10px #00000014;padding:.4rem .55rem;min-width:170px;font-size:.78rem;color:#333;pointer-events:none;z-index:5}.chart-tip-time{font-weight:600;margin-bottom:.25rem;font-variant-numeric:tabular-nums}.chart-tip-row{display:flex;justify-content:space-between;gap:.6rem;font-variant-numeric:tabular-nums}.chart-tip-row+.chart-tip-row{margin-top:.1rem}.chart-tip-row>span:first-child{color:#666}.chart-tip-active{color:#000;font-weight:600}.chart-tip-active>span:first-child{color:#000}.chart-tip-sub{color:#888;font-size:.72rem}.chart-tip-sub-row{margin-top:.25rem;padding-top:.25rem;border-top:1px solid #ececec;color:#888}.chart-axis{display:flex;justify-content:space-between;font-size:.72rem;color:#888;margin-top:.25rem;font-variant-numeric:tabular-nums}.show-more{display:flex;justify-content:center;margin:.7rem 0 0}.show-more button{padding:.4rem 1rem;font-size:.9rem;background:#fff;border:1px solid #ccc;border-radius:4px;cursor:pointer}.show-more button:hover{background:#efefef}p{margin:0 0 1rem;color:#666;font-size:.9rem}table{width:100%;border-collapse:collapse;font-size:.9rem}th,td{text-align:left;padding:.4rem .6rem;border-bottom:1px solid #ddd}th{background:#efefef;font-weight:600}tr:hover td{background:#f5f5f5}td{font-variant-numeric:tabular-nums}table.blocks .block-row{cursor:pointer}table.blocks .block-row:hover td{background:#f0f0f0}table.blocks .block-row.expanded td{background:#e9e9e9;border-bottom-color:#cbcbcb}.expand-cell{width:1.2rem;text-align:center;color:#888}.num-cell{font-weight:600}.partial-badge{margin-left:.5rem;padding:.05rem .4rem;border-radius:3px;background:#fff1d6;color:#8a5a00;font-size:.7rem;font-weight:500;font-style:italic;vertical-align:middle;cursor:help}table.blocks .block-row.partial td{color:#777}table.blocks .block-row.partial .num-cell{color:#444}.contracts-row>td{padding:.5rem .6rem .8rem;background:#fafafa;border-bottom:1px solid #ddd}table.contracts{width:100%;border-collapse:collapse;font-size:.85rem;background:#fff;border:1px solid #ddd;border-radius:4px;overflow:hidden}table.contracts th,table.contracts td{padding:.3rem .6rem;border-bottom:1px solid #eee}table.contracts th.sortable{cursor:pointer;-webkit-user-select:none;user-select:none}table.contracts th.sortable:hover{background:#e6e6e6}table.contracts th.sortable.active{background:#ddd}table.contracts tbody tr:last-child td{border-bottom:0}table.contracts .contract-addr{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.8rem;color:#333}table.contracts .contract-addr.clickable{cursor:pointer}table.contracts .contract-addr.clickable:hover{background:#eef3ff;color:#1a3aa8}table.contracts .contract-addr.selected{background:#d9e3ff;color:#1a3aa8;font-weight:600}.contracts-empty{padding:.6rem;color:#888;font-style:italic;text-align:center}.contracts-more{display:flex;justify-content:center;margin-top:.4rem}.contracts-more button{padding:.3rem .9rem;font-size:.85rem;background:#fff;border:1px solid #ccc;border-radius:4px;cursor:pointer;color:#555}.contracts-more button:hover{background:#efefef;color:#222}.popup{position:fixed;top:56px;right:1rem;width:380px;max-height:calc(100vh - 110px);background:#fff;border:1px solid #ccc;border-radius:8px;box-shadow:0 6px 20px #00000024;z-index:50;display:flex;flex-direction:column;overflow:hidden}.popup-header{display:flex;align-items:center;justify-content:space-between;padding:.55rem .8rem;border-bottom:1px solid #eee;background:#fafafa}.popup-chain{display:inline-block;padding:.15rem .5rem;border-radius:4px;background:#222;color:#fff;font-size:.75rem;font-weight:600;text-transform:lowercase}.popup-close{background:transparent;border:0;font-size:1.4rem;line-height:1;color:#666;cursor:pointer;padding:0 .3rem}.popup-close:hover{color:#000}.popup-body{padding:.8rem;flex:1;overflow-y:auto}.popup-address{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.78rem;color:#333;word-break:break-all;margin-bottom:.9rem;padding:.4rem .5rem;background:#f5f5f5;border-radius:4px}.popup-address-row{display:flex;align-items:flex-start;gap:.5rem;margin-bottom:.9rem;padding:.4rem .5rem;background:#f5f5f5;border-radius:4px}.popup-address-row .popup-address{margin:0;padding:0;background:transparent;flex:1;min-width:0}.popup-address-link{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.78rem;color:#1a3aa8;word-break:break-all;text-decoration:none;flex:1;min-width:0}.popup-address-link:hover{text-decoration:underline}.popup-address-row .copy-btn{flex:0 0 auto;margin-left:0}.popup-tick{font-size:.95rem;color:#444;font-variant-numeric:tabular-nums}.popup-name{font-size:.95rem;font-weight:600;color:#222;margin-bottom:.6rem}.popup-row{display:flex;justify-content:space-between;font-size:.85rem;padding:.3rem 0;border-bottom:1px solid #f0f0f0}.popup-label{color:#777}.popup-value{color:#222;font-variant-numeric:tabular-nums;font-weight:500}.popup-divider{border:0;border-top:1px dashed #ddd;margin:.7rem 0}.popup-section-title{font-size:.82rem;font-weight:600;color:#555;text-transform:uppercase;letter-spacing:.04em;margin:.3rem 0 .4rem}.popup-section-sub{font-weight:400;text-transform:none;letter-spacing:0;color:#999}.feed-empty{font-size:.8rem;color:#999;font-style:italic;padding:.4rem 0}.feed-list{list-style:none;padding:0;margin:0;max-height:280px;overflow-y:auto}.feed-row{display:grid;grid-template-columns:14px 36px 1fr 1fr auto auto;gap:.4rem;align-items:center;padding:.25rem 0;font-size:.75rem;font-variant-numeric:tabular-nums;border-bottom:1px solid #f5f5f5}.feed-status{font-weight:700;text-align:center}.feed-status-ok{color:#2a8}.feed-status-fail{color:#d33}.feed-direction{display:inline-block;padding:.05rem .35rem;border-radius:3px;font-size:.65rem;font-weight:600;text-transform:uppercase;letter-spacing:.04em;text-align:center}.feed-direction-in{background:#e0f4ea;color:#1a7a44}.feed-direction-out{background:#fde7e9;color:#a32432}.feed-direction-log{background:#eef0f4;color:#555}.feed-hash{color:#222;font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.feed-party{color:#666;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.feed-value{color:#222;font-weight:500}.feed-time{color:#999;font-size:.7rem}.wallet-list{list-style:none;padding:0;margin:0}.wallet-row{display:flex;justify-content:space-between;align-items:center;padding:.25rem 0;font-size:.78rem;font-variant-numeric:tabular-nums;border-bottom:1px solid #f5f5f5}.wallet-addr{color:#222;font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.wallet-addr-link{color:#1a3aa8;text-decoration:none}.wallet-addr-link:hover{text-decoration:underline}.wallet-count{color:#666;font-weight:500}.feed-link{color:#1a3aa8;text-decoration:none}.feed-link:hover{text-decoration:underline}.popup-link{display:inline-block;margin-top:.8rem;font-size:.8rem;color:#06f;text-decoration:none}.popup-link:hover{text-decoration:underline}.popup-error{margin-top:.6rem;padding:.4rem .5rem;background:#fff5f5;border:1px solid #f3d3d3;border-radius:4px;font-size:.78rem;color:#d33}.nft-row{cursor:pointer}.nft-row:hover{background:#f6f6f6}.nft-row.active{background:#eef4ff}.ext-link{display:inline-block;margin-left:.35rem;padding:0 .25rem;font-size:.75rem;color:#6a6a6a;text-decoration:none;border-radius:3px;line-height:1;vertical-align:1px}.ext-link:hover{background:#eef3ff;color:#1a3aa8}.num-cell .num-label{font-weight:600}.gas-empty{color:#999}.gas-full,.failed-pos{color:#b14848;font-weight:600}@keyframes block-flash{0%{background:#fff5b3}to{background:transparent}}table.blocks .block-row.flash td{animation:block-flash .8s ease-out}table.blocks .block-row.has-active td{background:#f5f0ff}table.blocks .block-row.has-active:hover td{background:#ece4ff}.footer-status{display:inline-flex;align-items:center;gap:.35rem}.status-dot{display:inline-block;width:.55rem;height:.55rem;border-radius:50%;background:#888;flex:0 0 auto}.status-dot-live{background:#2da033;box-shadow:0 0 0 2px #2da0332e}.status-dot-connecting{background:#d9a236;animation:status-pulse 1.2s ease-in-out infinite}.status-dot-disconnected{background:#c44343}@keyframes status-pulse{0%,to{opacity:1}50%{opacity:.4}}@media (max-width: 900px){.app{height:auto;overflow:visible}.app-body{flex-direction:column}.app-sidebar{width:100%;border-right:0;border-bottom:1px solid #ddd;overflow:visible;min-height:auto}.helper-module{flex:0 1 auto;overflow-y:visible;min-height:auto}.app-main{overflow:visible;min-height:auto;display:block}.blocks-module{flex:0 1 auto;min-height:auto}.module-body{flex:0 1 auto;overflow-y:visible;min-height:auto}.popup{width:calc(100% - 2rem);max-width:380px}.feedback-fab{bottom:.9rem;right:.9rem}}.feedback-fab{position:fixed;bottom:1.25rem;right:1.25rem;z-index:40;width:44px;height:44px;display:inline-flex;align-items:center;justify-content:center;background:#222;color:#fff;border:1px solid #222;border-radius:50%;cursor:pointer;box-shadow:0 4px 14px #0000002e;transition:background .12s,box-shadow .12s,transform .12s}.feedback-fab:hover{background:#000;box-shadow:0 6px 18px #0000003d;transform:translateY(-1px)}.feedback-fab:focus-visible{outline:2px solid #222;outline-offset:3px}.feedback-modal{max-width:440px}.feedback-body{display:flex;flex-direction:column;gap:.6rem}.feedback-intro{margin:0 0 .2rem;font-size:.8rem;color:#555}.feedback-option{display:flex;flex-direction:column;gap:.25rem;padding:.75rem .9rem;border:1px solid #ccc;border-radius:6px;text-decoration:none;color:#222;background:#fff;transition:border-color .12s,background .12s}.feedback-option:hover{border-color:#222;background:#fafafa}.feedback-option-title{font-size:.88rem;font-weight:600;text-transform:lowercase}.feedback-option-sub{font-size:.75rem;color:#666;font-family:ui-monospace,SFMono-Regular,Menlo,monospace}
