*,:before,:after{box-sizing:border-box}html,body{color:#1a1a1a;background:#f2f2f2;height:100%;margin:0;font:13px/1.35 system-ui,sans-serif}#app{flex-direction:column;height:100%;min-height:100vh;display:flex}.bar{background:#fff;border-bottom:1px solid #ddd;flex-shrink:0;align-items:center;gap:8px;padding:8px 10px;display:flex}.brand{letter-spacing:.02em;font-size:15px;font-weight:700}.bar-actions{align-items:center;gap:6px;margin-left:auto;display:flex}.bar-actions button,.config-head button{font:inherit;cursor:pointer;padding:4px 10px}.label-filter{font:inherit;border:1px solid #ccc;border-radius:4px;min-width:10rem;max-width:16rem;padding:4px 8px}.frame[hidden]{display:none}.refresh-bar{background:#e8e8e8;flex-shrink:0;justify-content:flex-end;height:4px;display:flex}.refresh-bar.shared{border-bottom:1px solid #ddd}.refresh-bar-fill{background:#4a90d9;width:0%;height:100%;transition:width .2s linear}.config-panel{background:#fff;border-bottom:1px solid #ddd;flex-direction:column;flex-shrink:0;gap:6px;padding:10px;display:flex}.config-head{align-items:center;gap:6px;display:flex}.config-head h2{margin:0 auto 0 0;font-size:13px;font-weight:600}.config-editor{resize:vertical;background:#fafafa;border:1px solid #ccc;width:100%;min-height:140px;max-height:240px;padding:8px;font:12px/1.4 ui-monospace,Consolas,monospace}.config-error{color:#b33428;min-height:1.2em;font-size:12px}.frames{flex:1;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));align-content:start;gap:10px;padding:10px;display:grid;overflow:auto}.frame{background:#fff;border:1px solid #ccc;min-height:180px;transition:background-color .15s,border-color .15s;overflow:hidden}.frame[data-state=ok]{background:#e6f7e8;border-color:#2ecc40}.frame[data-state=problem]{background:#fdecea;border-color:#e74c3c}.frame[data-state=idle]{background:#fff;border-color:#ccc}.frame-body{flex-direction:column;height:100%;min-height:180px;padding:14px 12px 12px;display:flex;position:relative}.frame-refresh{z-index:2;cursor:pointer;color:#333;background:#ffffffd9;border:1px solid #bbb;border-radius:4px;width:28px;height:28px;padding:0;font-size:16px;line-height:1;position:absolute;top:6px;right:6px}.frame-refresh:hover{background:#fff;border-color:#888}.frame-content{flex-direction:column;flex:1;gap:6px;min-height:0;display:flex}.frame-title{align-items:center;gap:8px;min-width:0;padding-right:28px;display:flex}.frame-favicon{object-fit:contain;flex-shrink:0;width:28px;height:28px}.frame-favicon[hidden]{display:none}.frame-label{min-width:0;margin:0;font-size:22px;font-weight:700;line-height:1.15}.frame-meta{flex-wrap:wrap;align-items:center;gap:6px;min-width:0;display:flex}.frame-url{color:#1a5f9e;word-break:break-all;min-width:0;font-size:11px;text-decoration:none}.frame-url:hover{text-decoration:underline}.frame-type{color:#666;letter-spacing:.02em;background:#e8e8e8;border:1px solid #c8c8c8;border-radius:999px;flex-shrink:0;padding:1px 6px;font-size:10px;font-weight:600;line-height:1.4}.frame-status{letter-spacing:.06em;text-transform:uppercase;border:1px solid #0000;border-radius:999px;justify-content:center;align-self:center;align-items:center;margin:10px auto;padding:6px 16px;font-size:15px;font-weight:700;line-height:1.2;display:inline-flex}.config-panel[hidden]{display:none}.frame-status[data-state=ok]{color:#146c22;background:#c8f0cd;border-color:#2ecc40}.frame-status[data-state=problem]{color:#8f1e14;background:#f8c9c4;border-color:#e74c3c}.frame-status[data-state=idle]{color:#666;letter-spacing:.02em;text-transform:none;background:#eee;border-color:#ccc;font-weight:600}.frame-extras{max-height:110px;margin-top:4px;overflow:auto}.extras-table{border-collapse:collapse;background:#ffffffb8;width:100%;font-size:11px}.extras-table th,.extras-table td{text-align:left;vertical-align:top;border-bottom:1px solid #eee;padding:2px 4px}.extras-table th{color:#555;width:38%;font-weight:600}.frame-note{color:#666;white-space:pre-wrap;word-break:break-word;background:#ffffffc7;max-height:120px;margin:0;padding:4px 6px;font:11px/1.35 ui-monospace,Consolas,monospace;overflow:auto}.frame-note.frame-json{color:#333}
