/* ── Dock Panel System ── */

/* ──────────────────────────────────────────────────────────
   Dock/Panel 전용 시맨틱 변수 → 리디자인 디자인 토큰에 매핑.
   (구: MudBlazor 팔레트. design-tokens.css 의 data-theme 로 라이트/다크 전환)
   매핑표: docs/design/DESIGN-TOKENS.md
   ────────────────────────────────────────────────────────── */
:root {
    --fc-bg-card: var(--surface);
    --fc-bg-surface: var(--surface-2);
    --fc-border: var(--border);
    --fc-text-primary: var(--text);
    --fc-text-secondary: var(--text-muted);
    --fc-brand: var(--accent);
    --fc-hover-bg: var(--surface-2);
    --fc-divider: var(--border-soft);
}

.dock-container {
    position: relative;
    display: grid;
    /* grid-template는 DockContainer.razor에서 동적으로 설정됨 */
    grid-template-rows: 0px 0px 1fr 0px 0px;
    grid-template-columns: 0px 0px 1fr 0px 0px;
    height: calc(100vh - var(--ix-content-offset)); /* design-tokens.css --ix-content-offset (132px) */
    overflow: hidden;
}

.dock-center {
    position: relative;
    overflow: hidden;
    min-width: 0;
    min-height: 0;
}

/* ── Floating Overlay — 도킹 영역 위에 떠오르는 플로팅 패널 컨테이너 ── */
.floating-overlay {
    position: absolute;
    inset: 0;
    pointer-events: none;
    z-index: 50;
}

.floating-overlay .floating-panel {
    pointer-events: auto;
}

/* ── Dock Zones ── */
.dock-zone {
    display: flex;
    flex-direction: column;
    background: var(--fc-bg-card);
    border: 1px solid var(--fc-border);
    overflow: hidden;
}

/* ── Dock Splitter ── */
.dock-splitter {
    display: flex;
    align-items: center;
    justify-content: center;
    background: var(--fc-bg-surface);
    z-index: 20;
    flex-shrink: 0;
    transition: background 0.15s;
}

.dock-splitter:hover,
.dock-splitter:active {
    background: rgba(34, 211, 238, 0.25);
}

/* 수평 스플리터 (top/bottom zone 사이) — 상하 리사이즈 */
.dock-splitter-h {
    height: 5px;
    cursor: row-resize;
}

/* 수직 스플리터 (left/right zone 사이) — 좌우 리사이즈 */
.dock-splitter-v {
    width: 5px;
    cursor: col-resize;
}

/* 스플리터 그립 (시각적 핸들) */
.splitter-grip {
    border-radius: 2px;
}

.dock-splitter-h .splitter-grip {
    width: 40px;
    height: 3px;
    background: var(--mud-palette-action-disabled);
}

.dock-splitter-v .splitter-grip {
    width: 3px;
    height: 40px;
    background: var(--mud-palette-action-disabled);
}

.dock-splitter:hover .splitter-grip,
.dock-splitter:active .splitter-grip {
    background: rgba(34, 211, 238, 0.6);
}

/* ── Dock Tab Strip ── */
.dock-tab-strip {
    display: flex;
    background: var(--fc-bg-surface);
    border-bottom: 1px solid var(--fc-border);
    overflow-x: auto;
    flex-shrink: 0;
}

.dock-tab {
    display: flex;
    align-items: center;
    gap: 6px;
    padding: 6px 12px;
    font-size: 12px;
    color: var(--fc-text-secondary);
    cursor: pointer;
    border-right: 1px solid var(--fc-border);
    white-space: nowrap;
    user-select: none;
}

.dock-tab:hover {
    background: var(--fc-hover-bg);
}

.dock-tab.active {
    color: var(--fc-text-primary);
    background: var(--fc-bg-card);
    border-bottom: 2px solid var(--fc-brand);
}

.dock-tab .tab-close {
    font-size: 14px;
    opacity: 0;
    cursor: pointer;
    transition: opacity 0.15s;
}

.dock-tab:hover .tab-close {
    opacity: 0.7;
}

.dock-tab-content {
    flex: 1;
    overflow: auto;
}

/* ── Floating Panel ── */
.floating-panel {
    position: absolute;
    display: flex;
    flex-direction: column;
    background: var(--fc-bg-card);
    border: 1px solid var(--fc-border);
    border-radius: 8px;
    box-shadow: 0 8px 32px rgba(0,0,0,0.4);
    min-width: 300px;
    min-height: 200px;
    overflow: hidden;
}

.floating-panel.maximized {
    left: 0 !important;
    top: 0 !important;
    width: 100% !important;
    height: 100% !important;
    border-radius: 0;
}

/* ── Panel Header ── */
.panel-header {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 6px 8px 6px 12px;
    background: var(--fc-bg-surface);
    cursor: grab;
    user-select: none;
    flex-shrink: 0;
}

.panel-header:active {
    cursor: grabbing;
}

.panel-header-icon {
    font-size: 16px;
    color: var(--fc-brand);
}

.panel-header-title {
    flex: 1;
    font-size: 12px;
    font-weight: 600;
    color: var(--fc-text-primary);
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.panel-header-actions {
    display: flex;
    gap: 2px;
}

.panel-btn {
    width: 24px;
    height: 24px;
    display: flex;
    align-items: center;
    justify-content: center;
    border: none;
    background: transparent;
    color: var(--fc-text-secondary);
    border-radius: 4px;
    cursor: pointer;
    font-size: 14px;
    transition: background 0.15s;
}

.panel-btn:hover {
    background: var(--fc-hover-bg);
    color: var(--fc-text-primary);
}

.panel-btn.close:hover {
    background: var(--danger);
    color: white;
}

/* ── Panel Body ── */
.panel-body {
    flex: 1;
    overflow: auto;
    padding: 8px;
}

/* ── Resize Handles ── */
.resize-handle {
    position: absolute;
    z-index: 10;
}

.resize-handle-e  { right: 0;  top: 0; width: 6px; height: 100%; cursor: e-resize; }
.resize-handle-s  { bottom: 0; left: 0; width: 100%; height: 6px; cursor: s-resize; }
.resize-handle-se { right: 0;  bottom: 0; width: 12px; height: 12px; cursor: se-resize; }
.resize-handle-w  { left: 0;   top: 0; width: 6px; height: 100%; cursor: w-resize; }
.resize-handle-n  { top: 0;    left: 0; width: 100%; height: 6px; cursor: n-resize; }

/* ── Dock Preview Overlay ── */
.dock-preview-overlay {
    position: absolute;
    background: rgba(34, 211, 238, 0.15);
    border: 2px dashed rgba(34, 211, 238, 0.5);
    border-radius: 4px;
    z-index: 9999;
    pointer-events: none;
    display: none;
    transition: all 0.15s ease;
}

.dock-preview-top    { top: 0; left: 0; right: 0; height: 40%; }
.dock-preview-bottom { bottom: 0; left: 0; right: 0; height: 40%; }
.dock-preview-left   { top: 0; left: 0; bottom: 0; width: 35%; }
.dock-preview-right  { top: 0; right: 0; bottom: 0; width: 35%; }
.dock-preview-center { top: 5%; left: 5%; right: 5%; bottom: 5%; }

/* ── Monitoring Toolbar ── */
/* ── Minimized Panel Chips ── */
.minimized-bar {
    position: fixed;
    bottom: 0;
    left: 0;
    right: 0;
    display: flex;
    gap: 6px;
    padding: 4px 16px;
    background: var(--fc-bg-surface);
    border-top: 1px solid var(--fc-border);
    z-index: 9999;
    flex-shrink: 0;
}

.minimized-chip {
    display: flex;
    align-items: center;
    gap: 4px;
    padding: 4px 10px;
    font-size: 11px;
    background: var(--fc-bg-card);
    border: 1px solid var(--fc-border);
    border-radius: 4px;
    color: var(--fc-text-secondary);
    cursor: pointer;
    transition: background 0.15s;
}

.minimized-chip:hover {
    background: var(--fc-hover-bg);
    color: var(--fc-text-primary);
}

/* ── Live Dot (실시간 수신 표시) ── */
.fc-live-dot {
    display: inline-block;
    width: 8px;
    height: 8px;
    border-radius: 50%;
    background: var(--ok-dot);
    animation: fc-live-pulse 1.5s ease-in-out infinite;
    margin-right: 6px;
    vertical-align: middle;
}

@keyframes fc-live-pulse {
    0%, 100% { opacity: 1; transform: scale(1); }
    50% { opacity: 0.4; transform: scale(0.8); }
}

/* ── Panel Split Layout ── */
.panel-split {
    flex: 1;
    display: flex;
    min-height: 0;
}

.panel-tree-pane {
    width: 35%;
    overflow-y: auto;
    border-right: 1px solid var(--fc-border);
    padding: 8px;
}

.panel-detail-pane {
    width: 65%;
    overflow-y: auto;
    padding: 12px;
}

/* ── Summary Cards (장비 요약 카드) ── */
.panel-summary-cards {
    display: flex;
    gap: 8px;
    padding: 8px;
    flex-shrink: 0;
    border-bottom: 1px solid var(--fc-border);
}

.panel-summary-card {
    flex: 1;
    background: var(--fc-bg-surface);
    border: 1px solid var(--fc-border);
    border-radius: 6px;
    padding: 8px 12px;
    text-align: center;
}

.panel-summary-card .summary-value {
    font-size: 18px;
    font-weight: 700;
    line-height: 1.2;
}

.panel-summary-card .summary-label {
    font-size: 10px;
    color: var(--fc-text-secondary);
    margin-top: 2px;
}

/* ── Device 필터 행 (장비 타입 / 상태 콤보) ──
   MudSelect 최외곽 래퍼(.mud-select)는 기본 flex:1 1 auto 라 여유 공간을 먹어
   두 콤보가 멀리 떨어진다. MudSelect의 Style 파라미터는 안쪽 .mud-input-control 로
   가서 이 래퍼를 못 잡으므로, 부모 클래스로 최외곽 래퍼를 직접 고정폭 제약한다. */
.ds-filter-row > .mud-select {
    flex: 0 0 170px;
    width: 170px;
}

/* ── Device Status Summary Chips ── */
.ds-summary-chip {
    display: inline-flex;
    align-items: center;
    gap: 3px;
    padding: 3px 8px;
    border-radius: 6px;
    background: var(--fc-hover-bg);
    border: 1px solid var(--fc-border);
    font-size: 11px;
    white-space: nowrap;
}

.ds-chip-label {
    color: var(--fc-text-secondary);
    font-size: 10px;
}

.ds-chip-val {
    font-weight: 600;
    font-size: 12px;
    color: var(--fc-text-primary);
}

.ds-chip-val.ds-ok { color: var(--ok); }
.ds-chip-val.ds-err { color: var(--danger); }
.ds-chip-val.ds-warn { color: var(--warn); }

.ds-chip-sep {
    color: var(--mud-palette-action-disabled);
    font-size: 10px;
}
