:root { --bg: #0b0f14; --panel: #111821; --grid: #1c2a39; --text: #d6e3f0; --accent: #48d1b8; --muted: #7f93aa; } * { box-sizing: border-box; } body { margin: 0; font-family: "IBM Plex Sans", "Segoe UI", sans-serif; background: radial-gradient(circle at 20% 20%, #14202e, #0b0f14 60%); color: var(--text); height: 100vh; display: flex; flex-direction: column; } header, footer { padding: 12px 20px; display: flex; align-items: center; justify-content: space-between; background: linear-gradient(90deg, #0f1824, #0b0f14); border-bottom: 1px solid #0f2233; } footer { border-top: 1px solid #0f2233; border-bottom: none; } .title { font-weight: 600; letter-spacing: 0.02em; } .meta { font-size: 0.9rem; color: var(--muted); } main { flex: 1; display: grid; grid-template-columns: 2fr 1fr; grid-template-rows: 1fr 1.2fr; gap: 12px; padding: 12px; } .panel { background: var(--panel); border: 1px solid #13263b; border-radius: 10px; padding: 8px; position: relative; } canvas { width: 100%; height: 100%; border-radius: 6px; background: #06090d; } .timeline-panel { display: flex; flex-direction: column; gap: 8px; grid-row: 1 / span 2; grid-column: 2; } .timeline-panel canvas { flex: 1; cursor: crosshair; } .panel-header { display: flex; align-items: center; justify-content: space-between; font-size: 0.95rem; color: var(--text); } .panel-subtitle { font-size: 0.8rem; color: var(--muted); } #spectrum { cursor: grab; } #spectrum:active { cursor: grabbing; } .drawer { position: fixed; right: 12px; top: 70px; bottom: 70px; width: 320px; background: #0d141e; border: 1px solid #13263b; border-radius: 12px; box-shadow: 0 20px 60px rgba(0, 0, 0, 0.45); display: none; flex-direction: column; z-index: 10; } .drawer.open { display: flex; } .drawer-header { padding: 12px 16px; border-bottom: 1px solid #13263b; display: flex; align-items: center; justify-content: space-between; font-weight: 600; } .drawer-close { background: #162030; border: 1px solid #20344b; color: var(--text); padding: 4px 10px; border-radius: 8px; cursor: pointer; } .drawer-body { padding: 12px 16px 16px; overflow: auto; display: flex; flex-direction: column; gap: 12px; } .detail-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 8px 12px; font-size: 0.9rem; } .detail-label { color: var(--muted); } .detail-section-title { font-size: 0.85rem; color: var(--muted); text-transform: uppercase; letter-spacing: 0.08em; } #detailSpectrogram { height: 90px; } .clips-empty { color: var(--muted); font-size: 0.9rem; } #status { color: var(--muted); } @media (max-width: 820px) { main { grid-template-columns: 1fr; grid-template-rows: 1fr 1fr 1fr; } .timeline-panel { grid-row: auto; grid-column: auto; } .drawer { left: 12px; right: 12px; width: auto; top: auto; bottom: 12px; height: 45vh; } }