.app-shell{min-height:100vh;padding:1.5rem;display:flex;flex-direction:column;gap:1rem}.toolbar{display:flex;flex-wrap:wrap;justify-content:space-between;gap:1rem;padding:1rem 1.5rem;background:#0f172ae6;border:1px solid rgba(148,163,184,.2);border-radius:1rem;box-shadow:0 20px 45px #0f172a99}.toolbar h1{margin:0;font-size:1.25rem}.toolbar__record p{margin:0;color:#94a3b8}.dataset-control{margin-top:.4rem;display:flex;flex-direction:column;gap:.25rem;font-size:.85rem;color:#cbd5f5}.dataset-control select{border-radius:.6rem;border:1px solid rgba(148,163,184,.5);background:#0f172acc;color:inherit;padding:.25rem .6rem;min-width:220px}.dataset-meta{margin:.3rem 0 0;font-size:.75rem;color:#94a3b8}.file-input-label{cursor:pointer;text-decoration:underline}.file-input-label input{display:none}.toolbar__controls{display:flex;flex-wrap:wrap;align-items:center;gap:.75rem}.control-group{display:flex;gap:.4rem}.control-group.presets button{min-width:3rem}.control-group button{padding:.4rem .9rem}.control-group .active{background:#0ea5e9;color:#0b1120}.zoom-slider{flex:1;min-width:160px;display:flex;align-items:center}.zoom-slider input[type=range]{width:100%}button{border:1px solid rgba(148,163,184,.4);background:#0f172a99;color:inherit;border-radius:999px;cursor:pointer;transition:background .2s,border .2s}button:hover:not(:disabled){border-color:#0ea5e9}button:disabled{opacity:.6;cursor:not-allowed}.toolbar__meter{display:flex;flex-direction:column;align-items:flex-end;font-size:.85rem;color:#cbd5f5}.toolbar__meter strong{font-size:1.1rem}.summary-ribbon{display:grid;grid-template-columns:minmax(0,1fr) 240px;gap:1rem;background:#0d1422d9;border:1px solid rgba(148,163,184,.2);border-radius:1rem;padding:1rem}.summary-ribbon__header{display:flex;justify-content:space-between;align-items:baseline;color:#94a3b8}.summary-ribbon h2{margin:0;font-size:1rem;color:#f8fafc}.summary-ribbon__metrics{display:flex;flex-direction:column;gap:.5rem;padding-left:1rem;border-left:1px solid rgba(148,163,184,.2)}.summary-ribbon__metrics div{display:flex;justify-content:space-between;align-items:baseline}.summary-ribbon__metrics strong{font-size:1.2rem}.sparkline{width:100%;height:80px}.sparkline.empty{color:#94a3b8;font-size:.85rem}.main-grid{display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:1rem;flex:1}.heatmap-overview{position:relative;border-radius:.75rem;background:#080d16e6;padding:.75rem}.heatmap-overview canvas{width:100%;border-radius:.5rem;cursor:crosshair}.heatmap-overview__labels{display:flex;gap:.5rem;margin-top:.5rem;color:#94a3b8;font-size:.8rem}.heatmap-overview__ticks{position:absolute;top:.5rem;left:.75rem;right:.75rem;display:flex;justify-content:space-between;font-size:.7rem;color:#f8fafcb3;pointer-events:none}.heatmap-overview__ticks span{position:absolute;transform:translate(-50%)}.heatmap-overview__legend{margin-top:.4rem;display:flex;flex-wrap:wrap;gap:.6rem;font-size:.75rem;color:#94a3b8}.heatmap-overview__legend .swatch{display:inline-block;width:12px;height:12px;border-radius:2px;margin-right:.25rem;vertical-align:middle}.heatmap-overview__legend .swatch.neutral{background:#2d4053}.heatmap-overview.empty{color:#94a3b8;text-align:center}.waveform-viewport{position:relative;border-radius:1rem;border:1px solid rgba(148,163,184,.2);background:#04070ee6;overflow:auto;-webkit-user-select:none;user-select:none}.waveform-viewport canvas{display:block}.waveform-viewport.empty{display:flex;align-items:center;justify-content:center;min-height:200px}.waveform-viewport.empty .muted{margin:0}.side-panel{border-radius:1rem;border:1px solid rgba(148,163,184,.2);background:#070b13f2;padding:1rem;display:flex;flex-direction:column;gap:1rem;max-height:100%;overflow:auto}.side-panel section{border-bottom:1px solid rgba(148,163,184,.2);padding-bottom:.75rem}.side-panel section:last-of-type{border-bottom:none}.side-panel h3{margin:0 0 .5rem;font-size:.95rem}.metrics-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.5rem;font-size:.8rem}.metrics-grid p{margin:0;color:#94a3b8}.metrics-grid strong{display:block;font-size:1rem}.metrics-grid strong.normal-beat-yes{color:#34d399}.metrics-grid strong.normal-beat-no,.metrics-grid strong.metric-out-of-range{color:#f87171}.metric-out-of-range-dot{display:inline-block;width:6px;height:6px;margin-right:4px;border-radius:50%;background:#f87171;vertical-align:middle}.abnormal-reasons{margin-top:.75rem;padding-top:.5rem;border-top:1px solid rgba(148,163,184,.2)}.abnormal-reasons__title{font-size:.72rem;color:#94a3b8;margin:0 0 .35rem}.abnormal-reasons__item{font-size:.7rem;color:#f87171;margin:.2rem 0 0;line-height:1.35}.marker-legend{display:flex;align-items:center;gap:.5rem;font-size:.8rem;color:#94a3b8;margin-bottom:.35rem}.marker-dot{display:inline-block;width:3px;height:14px;border-radius:1px}.marker-dot.normal{background:#10b981cc}.marker-dot.non-normal{background:#f87171f2}.shortcut-row{display:flex;justify-content:space-between;font-size:.8rem;color:#94a3b8}.shortcut-row p{margin:0}.shortcut-row span{font-family:JetBrains Mono,SFMono-Regular,Consolas,monospace;color:#f8fafc}.muted{color:#94a3b8;font-size:.85rem}.app-footer{text-align:center;color:#94a3b8;font-size:.85rem}.app-footer p{margin:0}.error-banner{padding:.5rem 1rem;background:#7f1d1d;color:#fecaca}.loading-overlay{position:fixed;inset:0;display:flex;align-items:center;justify-content:center;background:#020409d9;color:#f8fafc;font-size:1.1rem;z-index:10}.loading-overlay .error{color:#f87171}@media(max-width:1200px){.main-grid,.summary-ribbon{grid-template-columns:1fr}.side-panel{max-height:none}}:root{color-scheme:dark;font-family:Inter,Segoe UI,system-ui,-apple-system,BlinkMacSystemFont,sans-serif;line-height:1.5;font-weight:400;background-color:#05070f;color:#e2e8f0;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}*,*:before,*:after{box-sizing:border-box}body{margin:0;min-height:100vh;background:radial-gradient(circle at top,#101628,#05070f 65%)}#root{min-height:100vh}a{color:inherit}button{font:inherit}
