:root{--bg: #f2f3ea;--bg-deep: #dde8de;--panel: #ffffff;--panel-soft: #f6f8f2;--text: #17221f;--muted: #64766e;--line: #d3ddd4;--ok: #1e8650;--warn: #996322;--danger: #b1362d;--info: #295f72;--accent: #1f604f}*{box-sizing:border-box}body{margin:0;color:var(--text);background:radial-gradient(circle at 7% 1%,rgba(44,113,97,.18),transparent 30%),radial-gradient(circle at 91% 0%,rgba(199,144,63,.2),transparent 28%),linear-gradient(165deg,#ffffff7a,#ecf0e7c2),var(--bg);font-family:IBM Plex Sans,Avenir Next,Segoe UI,sans-serif}.page{max-width:1240px;margin:0 auto;padding:22px 16px 42px}.top{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:16px}.top h1{margin:0;font-size:2rem}.top p{margin:6px 0 0;color:var(--muted)}.stream{border-radius:999px;padding:6px 12px;font-size:.88rem;border:1px solid var(--line);background:#edf3ee}.stream--connected{color:#1f7147;border-color:#a9d2b9;background:#e8f5ed}.stream--reconnecting,.stream--connecting{color:#89510e;border-color:#ebcfaa;background:#fff2e1}.stream--error{color:#8e2a2a;border-color:#e2b6b6;background:#ffe9e9}.metrics{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:12px;margin-bottom:16px}.metric__label{display:block;color:var(--muted);font-size:.78rem;letter-spacing:.06em;text-transform:uppercase}.metric__value{margin-top:8px;display:block;font-size:1.72rem}.card{border-radius:14px;border:1px solid var(--line);background:var(--panel);box-shadow:0 14px 38px #16251f14;padding:14px}.card h2,.card h3{margin:0}.stack{margin-top:18px}.registry-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.form{margin-top:12px;display:grid;gap:8px}input,button{border:1px solid var(--line);border-radius:10px;padding:9px 11px;font:inherit}input{background:var(--panel-soft)}button{cursor:pointer;font-weight:600;color:#f2f7f4;border-color:#2b6c5b;background:linear-gradient(180deg,#2a7461,#215f4f)}button:hover{filter:brightness(1.02)}button.ghost{background:#eef4f1;color:#214f43;border-color:#c0d0c8}button.danger{border-color:#a6453d;background:linear-gradient(180deg,#b94a40,#9f372f)}.status{margin:10px 0 0;color:#294a3f;font-size:.88rem}.muted{color:var(--muted)}.mono{font-family:IBM Plex Mono,SFMono-Regular,Menlo,monospace;font-size:.82rem}.row-between{display:flex;justify-content:space-between;align-items:center;gap:10px}.list{margin-top:10px;display:grid;gap:8px}.list-item{display:flex;align-items:center;justify-content:space-between;gap:10px;border:1px solid var(--line);background:var(--panel-soft);border-radius:10px;padding:9px}.strong{font-weight:700}.hub{background:radial-gradient(circle at 100% 0,rgba(59,126,110,.08),transparent 42%),linear-gradient(180deg,#ffffffe6,#f9fbf6f2)}.hub-meta{margin-top:8px;display:flex;flex-wrap:wrap;gap:8px 14px;color:#40574f;font-size:.9rem}.pairing-panel{margin-bottom:10px;border:1px solid var(--line);border-radius:10px;background:#f5f8f2;padding:10px}.pairing-list-block{margin-top:8px}.pairing-list{margin-top:6px;display:grid;gap:6px}.pairing-row{border:1px solid var(--line);border-radius:10px;background:#fff;padding:8px;display:flex;justify-content:space-between;gap:8px;align-items:center}.time-sync-panel{margin-top:10px;border:1px solid var(--line);border-radius:10px;background:#f4f8f5;padding:10px}.time-sync-grid{margin-top:8px;display:grid;gap:8px;grid-template-columns:repeat(auto-fit,minmax(140px,1fr))}.time-sync-field{display:grid;gap:4px}.time-sync-field span{font-size:.76rem;color:#4d6159;letter-spacing:.03em;text-transform:uppercase}.time-sync-field input{padding:7px 9px}.time-sync-field input[type=checkbox]{width:18px;height:18px;padding:0;accent-color:#2a7461}.devices-grid{margin-top:10px;display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:8px}.device{border:1px solid var(--line);border-radius:10px;padding:10px;background:var(--panel-soft)}.time-sync-meta{margin-top:8px;display:grid;gap:3px;font-size:.78rem;color:#3f554e}.chips{margin-top:8px;display:flex;gap:6px;flex-wrap:wrap}.chip{display:inline-flex;align-items:center;border-radius:999px;padding:3px 9px;font-size:.76rem;border:1px solid var(--line);background:#f8faf6}.chip--ok{color:var(--ok);border-color:#95ccad;background:#ebf8f0}.chip--warn{color:var(--warn);border-color:#f0cfa4;background:#fff4e8}.chip--danger{color:var(--danger);border-color:#dfb2b2;background:#ffecec}.chip--info{color:var(--info);border-color:#a8c8d2;background:#ebf4f7}.actions{margin-top:9px;display:flex;gap:8px;flex-wrap:wrap}.events{display:grid;gap:8px}.event{border-radius:10px;border:1px solid var(--line);background:var(--panel-soft);padding:9px}.event p{margin:6px 0 0}.fft-panel{border-color:#29614f54;background:radial-gradient(circle at 9% 0%,rgba(46,160,136,.16),transparent 33%),radial-gradient(circle at 85% 7%,rgba(239,178,73,.2),transparent 30%),linear-gradient(180deg,#13201b,#0f1714);color:#ecf7ef}.fft-panel .muted{color:#ecf7efc2}.fft-head{align-items:flex-start}.fft-toolbar{margin-top:10px;display:flex;align-items:center;gap:8px}.fft-select{flex:1;min-width:0;border-radius:10px;border:1px solid rgba(221,236,229,.26);padding:8px 10px;color:#eaf6ee;background:#09120ecc}.fft-canvas-shell{margin-top:12px;position:relative;border-radius:12px;border:1px solid rgba(227,242,234,.19);background:linear-gradient(180deg,#060c09d1,#09100df2);overflow:hidden}.fft-canvas{display:block;width:100%;height:320px}.fft-empty{position:absolute;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;text-align:center;padding:20px;color:#ecf7efe6;background:#060c098f}.fft-empty strong{display:block;margin-bottom:6px}.fft-meta-grid{margin-top:11px;display:grid;gap:8px;grid-template-columns:repeat(auto-fit,minmax(180px,1fr))}.fft-meta-item{border-radius:10px;border:1px solid rgba(232,245,237,.14);background:#ecf7ef0f;padding:8px;display:grid;gap:4px}.fft-meta-item strong{overflow-wrap:anywhere}.fft-peaks{margin-top:10px;display:grid;gap:6px}.fft-peak-row{border-top:1px solid rgba(237,247,240,.12);padding-top:6px;display:flex;justify-content:space-between;gap:8px}.fft-peak-row:first-of-type{border-top:0;padding-top:0}@media (max-width: 980px){.registry-grid{grid-template-columns:1fr}}@media (max-width: 760px){.top{align-items:flex-start;flex-direction:column}.page{padding:14px 12px 26px}.top h1{font-size:1.6rem}.fft-canvas{height:260px}}
