/**
 * editor.css - レトロネオン風エディタースタイル
 * 
 * レーダースクリーン風のサイバーネオンデザイン。
 * ホームページのレトロ8bitテイストと調和しながらプロフェッショナルな編集体験を提供。
 */




.editor-panel {
    display: flex;
    flex-direction: column;
    overflow: hidden;
    position: relative;
    min-height: 50px;
    /* 最小高さ確保 */
}

/* ★FIX: エディター画面の高さ制限（ビューポートからはみ出し防止） */
/* NOTE: display:none は .view-section のデフォルト。activeの時だけflexを適用 */
#view-editor.active {
    display: flex !important;
    flex-direction: column;
    /* ★FIX: コンテンツエリア全体の中でエディターが利用可能な高さを「完全固定」する */
    /* padding(30+30=60) と header(約60) を引いた残りの領域を 100% 占有させる */
    height: var(--editor-view-height, calc(100vh - var(--player-height, 90px) - 120px));
    overflow: hidden;
}

#view-editor .section-header {
    flex-shrink: 0;
}

#view-editor .editor-footer {
    flex-shrink: 0;
}

.editor-launch-panel {
    flex: 1;
    min-height: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 24px;
}

.editor-launch-panel[hidden] {
    display: none !important;
}

.editor-launch-card {
    width: min(640px, 100%);
    padding: 32px;
    border-radius: 24px;
    border: 1px solid rgba(84, 214, 255, 0.22);
    background:
        radial-gradient(circle at top left, rgba(0, 198, 255, 0.18), transparent 38%),
        linear-gradient(180deg, rgba(7, 16, 31, 0.96) 0%, rgba(6, 12, 24, 0.98) 100%);
    box-shadow:
        0 18px 60px rgba(2, 8, 20, 0.45),
        inset 0 1px 0 rgba(255, 255, 255, 0.05);
}

.editor-launch-eyebrow {
    margin: 0 0 10px;
    color: #6ddcff;
    font-size: 0.74rem;
    font-weight: 700;
    letter-spacing: 0.16em;
}

.editor-launch-card h3 {
    margin: 0 0 12px;
    color: #f6fbff;
    font-size: 1.7rem;
    line-height: 1.2;
}

.editor-launch-card p {
    margin: 0;
    color: rgba(226, 238, 255, 0.86);
    line-height: 1.7;
}

.editor-launch-note {
    margin-top: 12px !important;
    color: rgba(153, 188, 215, 0.92) !important;
    font-size: 0.94rem;
}

.editor-launch-btn {
    margin-top: 22px;
    min-width: 200px;
    font-size: 0.98rem;
    padding: 12px 18px;
}

.editor-layout-container {
    width: 100%;
    flex: 1;
    min-height: 0;
    /* ★FIX: flexbox overflow fix */
    display: flex;
    flex-direction: column;
    overflow: hidden;
    position: relative;
}

/* ============================================= */
/* 旧・固定高さ設定の破棄 (3画面分割レイアウトに移行済み) */
/* ============================================= */
#editor-panel-top {
    border-bottom: 1px solid rgba(0, 255, 255, 0.2);
}

#editor-panel-bottom {
    display: none !important;
    border-top: 1px solid rgba(0, 255, 255, 0.2);
}

.full-editor-container {
    width: 100%;
    height: 100%;
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    overflow: hidden;
}

.score-editor-container {
    display: flex;
    flex-direction: column;
    height: 100%;
    max-height: 100%;
    /* 親を超えない */
    min-height: 100px;
    /* 最小高さを大幅縮小してオーバーフロー防止 */
    background: linear-gradient(180deg, #0a1628 0%, #0d1f3c 100%);
    border: 2px solid rgba(0, 200, 255, 0.3);
    border-radius: 12px;
    overflow: hidden;
    box-shadow:
        0 0 20px rgba(0, 200, 255, 0.2),
        inset 0 0 60px rgba(0, 100, 200, 0.05);
}

/* ============================================= */
/* ツールバー */
/* ============================================= */

.console-view-container {
    width: 100%;
    height: 100%;
    position: relative;
    overflow: hidden;
    background: #0a0e14;
    /* 読み込み前の背景色 */
}

.score-editor-toolbar {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 10px 15px;
    background: linear-gradient(90deg, rgba(0, 50, 100, 0.6) 0%, rgba(0, 80, 120, 0.4) 50%, rgba(0, 50, 100, 0.6) 100%);
    border-bottom: 1px solid rgba(0, 200, 255, 0.4);
}

.toolbar-left,
.toolbar-right {
    display: flex;
    gap: 8px;
    align-items: center;
}

.toolbar-center {
    flex: 1;
    text-align: center;
    display: flex;
    flex-direction: column;
    gap: 4px;
}

.se-title {
    font-family: 'Press Start 2P', monospace;
    font-size: 10px;
    color: #00e5ff;
    text-shadow: 0 0 10px rgba(0, 229, 255, 0.8);
    letter-spacing: 1px;
}

.se-btn {
    background: linear-gradient(180deg, rgba(0, 100, 150, 0.6) 0%, rgba(0, 60, 100, 0.8) 100%);
    border: 1px solid rgba(0, 200, 255, 0.5);
    border-radius: 6px;
    padding: 8px 12px;
    font-size: 14px;
    cursor: pointer;
    transition: all 0.2s ease;
    color: #fff;
}

.se-btn:hover {
    background: linear-gradient(180deg, rgba(0, 150, 200, 0.8) 0%, rgba(0, 100, 150, 0.9) 100%);
    border-color: #00e5ff;
    box-shadow: 0 0 15px rgba(0, 229, 255, 0.5);
    transform: translateY(-1px);
}

.se-btn:active {
    transform: translateY(1px);
}

.se-btn-mini {
    min-width: 42px;
    padding: 8px 10px;
}

.se-btn:disabled,
.se-btn.disabled {
    opacity: 0.38;
    cursor: not-allowed;
    filter: saturate(0.35) brightness(0.72);
    box-shadow: none;
}

.se-btn:disabled:hover,
.se-btn.disabled:hover,
.se-btn:disabled:active,
.se-btn.disabled:active {
    background: linear-gradient(180deg, rgba(0, 100, 150, 0.6) 0%, rgba(0, 60, 100, 0.8) 100%);
    border-color: rgba(0, 200, 255, 0.22);
    box-shadow: none;
    transform: none;
}

.se-btn-fit {
    font-size: 12px;
    letter-spacing: 0.04em;
}

.se-harmony-hint {
    font-size: 11px;
    color: rgba(255, 255, 255, 0.76);
}


.se-harmony-inline {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    gap: 8px;
    align-items: center;
}

.se-write-inline {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 6px;
}

.se-write-modes,
.se-write-options {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    align-items: center;
    gap: 8px;
}

.se-inline-badge {
    padding: 4px 8px;
    border-radius: 999px;
    background: rgba(0, 229, 255, 0.12);
    border: 1px solid rgba(0, 229, 255, 0.28);
    color: rgba(255, 255, 255, 0.82);
    font-size: 10px;
    letter-spacing: 0.08em;
    text-transform: uppercase;
}

.se-mode-chip {
    padding: 5px 10px;
    border-radius: 999px;
    border: 1px solid rgba(0, 200, 255, 0.3);
    background: rgba(8, 27, 44, 0.78);
    color: rgba(255, 255, 255, 0.76);
    cursor: pointer;
    transition: all 0.18s ease;
}

.se-mode-chip:hover {
    border-color: rgba(0, 229, 255, 0.68);
    color: #fff;
}

.se-mode-chip.is-active {
    border-color: #00e5ff;
    background: rgba(0, 229, 255, 0.18);
    color: #fff;
    box-shadow: 0 0 12px rgba(0, 229, 255, 0.22);
}

.se-btn.is-active {
    box-shadow: 0 0 16px rgba(0, 229, 255, 0.35);
}

.se-write-hint {
    max-width: min(520px, 100%);
    font-size: 11px;
    color: rgba(255, 255, 255, 0.72);
}

.se-inline-field {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    font-size: 10px;
    color: rgba(255, 255, 255, 0.78);
}

.se-inline-field span {
    letter-spacing: 0.04em;
}

.se-inline-select {
    min-width: 88px;
    height: 30px;
    padding: 0 8px;
    border-radius: 6px;
    border: 1px solid rgba(0, 200, 255, 0.35);
    background: rgba(5, 18, 32, 0.92);
    color: #e9faff;
    font-size: 11px;
}

.se-inline-select:focus {
    outline: none;
    border-color: #00e5ff;
    box-shadow: 0 0 0 2px rgba(0, 229, 255, 0.14);
}

.se-guide-toggle.is-active {
    border-color: rgba(255, 214, 102, 0.72);
    box-shadow: 0 0 12px rgba(255, 214, 102, 0.24);
}

/* ============================================= */
/* メインエリア */
/* ============================================= */

/* ============================================= */
/* メインエリア（上下分割対応） */
/* ============================================= */

.score-editor-main {
    flex: 1;
    display: flex;
    flex-direction: column;
    /* 上下分割 */
    height: 100%;
    /* 親の高さを継承 */
    position: relative;
    overflow: hidden;
}

.score-editor-top-pane {
    flex: 1;
    /* 上段（スコア）残りのスペースを全部使う */
    display: flex;
    position: relative;
    overflow-y: auto;
    /* Allow scrolling if content overflows */
    min-height: 100px;
    /* 縮小可能な最小高さ */
}

.score-editor-canvas-wrapper {
    flex: 1;
    position: relative;
    overflow: hidden;
    background: rgba(0, 0, 0, 0.2);
}

.score-editor-canvas {
    display: block;
    width: 100%;
    height: 100%;
    cursor: crosshair;
    /* ★FIX: JS側のshadowBlur除去の代替。CSSフィルタで全体に薄いグロー効果を適用。
       これにより毎ノート×毎フレームのブラー計算が不要になり劇的に高速化。 */
    filter: drop-shadow(0 0 4px rgba(0, 229, 255, 0.4));
}

/* ============================================= */
/* 下段：パラメータエディタ（Automation/Velocity） */
/* ============================================= */

.score-editor-bottom-pane {
    /* 下段（パラメータ）の高さを柔軟に縮小可能にする */
    flex: 0 1 180px;
    min-height: 80px;
    /* 見切れ防止の縮小下限 */
    display: flex;
    flex-direction: column;
    background: rgba(10, 20, 35, 0.95);
    border-top: 2px solid rgba(0, 200, 255, 0.3);
    position: relative;
    overflow-y: auto;
    /* Allow scrolling if content overflows */
}

/* パラメータタブ */
.parameter-tabs {
    display: flex;
    gap: 2px;
    background: rgba(0, 30, 60, 0.8);
    border-bottom: 1px solid rgba(0, 200, 255, 0.2);
    padding: 0 10px;
}

.param-tab-btn {
    background: transparent;
    border: 1px solid transparent;
    border-bottom: none;
    color: rgba(0, 200, 255, 0.6);
    font-family: 'Press Start 2P', monospace;
    font-size: 9px;
    padding: 6px 12px;
    cursor: pointer;
    transition: all 0.2s;
    border-radius: 4px 4px 0 0;
    margin-top: 4px;
}

.param-tab-btn:hover {
    background: rgba(0, 200, 255, 0.1);
    color: #fff;
}

.param-tab-btn.active {
    background: rgba(0, 200, 255, 0.2);
    border-color: rgba(0, 200, 255, 0.3);
    color: #00e5ff;
    text-shadow: 0 0 5px rgba(0, 229, 255, 0.5);
    padding-bottom: 8px;
    /* アクティブ時は少し大きく */
    margin-top: 2px;
}

/* パラメータキャンバスエリア */
.parameter-editor-wrapper {
    flex: 1;
    position: relative;
    overflow: hidden;
    /* スクロールバーは上段と同期するため非表示 */
}

.parameter-canvas {
    display: block;
    width: 100%;
    height: 100%;
    cursor: crosshair;
}

/* 上下分割リサイズハンドル（上書き） */
.editor-split-handle {
    height: 6px;
    background: rgba(0, 0, 0, 0.5);
    cursor: ns-resize;
    position: relative;
    z-index: 10;
    border-top: 1px solid rgba(255, 255, 255, 0.1);
    border-bottom: 1px solid rgba(0, 0, 0, 0.3);
}

.editor-split-handle:hover {
    background: rgba(0, 200, 255, 0.4);
}

/* ============================================= */
/* スライダー（横：下部 / 縦：右部） */
/* ============================================= */

.score-editor-slider-x {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 10px 15px;
    background: rgba(0, 30, 60, 0.8);
    border-top: 1px solid rgba(0, 200, 255, 0.3);
}

.score-editor-slider-x label {
    font-family: 'Press Start 2P', monospace;
    font-size: 8px;
    color: rgba(0, 200, 255, 0.7);
    white-space: nowrap;
}

.score-editor-slider-x input[type="range"] {
    flex: 1;
    max-width: 200px;
}

.score-editor-slider-y {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 8px;
    padding: 15px 10px;
    background: rgba(0, 30, 60, 0.8);
    border-left: 1px solid rgba(0, 200, 255, 0.3);
}

.score-editor-slider-y label {
    font-family: 'Press Start 2P', monospace;
    font-size: 8px;
    color: rgba(0, 200, 255, 0.7);
}

.score-editor-slider-y input[type="range"] {
    writing-mode: vertical-lr;
    direction: rtl;
    height: 150px;
    width: 20px;
}

/* ============================================= */
/* カスタムスライダースタイル */
/* ============================================= */

input[type="range"] {
    -webkit-appearance: none;
    appearance: none;
    background: transparent;
}

input[type="range"]::-webkit-slider-track {
    background: linear-gradient(90deg, rgba(0, 100, 150, 0.4), rgba(0, 200, 255, 0.3));
    height: 6px;
    border-radius: 3px;
    border: 1px solid rgba(0, 200, 255, 0.4);
}

input[type="range"]::-webkit-slider-thumb {
    -webkit-appearance: none;
    appearance: none;
    width: 18px;
    height: 18px;
    background: radial-gradient(circle, #00e5ff 0%, #0080aa 100%);
    border: 2px solid #00e5ff;
    border-radius: 50%;
    cursor: pointer;
    box-shadow: 0 0 10px rgba(0, 229, 255, 0.6);
    margin-top: -6px;
}

input[type="range"]::-webkit-slider-thumb:hover {
    box-shadow: 0 0 20px rgba(0, 229, 255, 0.9);
    transform: scale(1.1);
}

/* Firefox */
input[type="range"]::-moz-range-track {
    background: linear-gradient(90deg, rgba(0, 100, 150, 0.4), rgba(0, 200, 255, 0.3));
    height: 6px;
    border-radius: 3px;
    border: 1px solid rgba(0, 200, 255, 0.4);
}

input[type="range"]::-moz-range-thumb {
    width: 16px;
    height: 16px;
    background: radial-gradient(circle, #00e5ff 0%, #0080aa 100%);
    border: 2px solid #00e5ff;
    border-radius: 50%;
    cursor: pointer;
    box-shadow: 0 0 10px rgba(0, 229, 255, 0.6);
}

/* ============================================= */
/* エンベロープエディター */
/* ============================================= */

.envelope-editor-container {
    display: flex;
    flex-direction: column;
    height: 100%;
    min-height: 100px;
    background: linear-gradient(180deg, #0a1628 0%, #0d1f3c 100%);
    border: 2px solid rgba(255, 100, 255, 0.3);
    border-radius: 12px;
    overflow: hidden;
    box-shadow:
        0 0 20px rgba(255, 100, 255, 0.2),
        inset 0 0 60px rgba(100, 50, 100, 0.05);
}

.envelope-editor-toolbar {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 10px 15px;
    background: linear-gradient(90deg, rgba(80, 20, 80, 0.6) 0%, rgba(100, 40, 100, 0.4) 50%, rgba(80, 20, 80, 0.6) 100%);
    border-bottom: 1px solid rgba(255, 100, 255, 0.4);
}

.envelope-editor-toolbar .se-title {
    color: #ff66ff;
    text-shadow: 0 0 10px rgba(255, 100, 255, 0.8);
}

.envelope-canvas-wrapper {
    flex: 1;
    padding: 20px;
    position: relative;
    height: 100% !important;
    /* 強制的に親要素に合わせる */
    overflow: hidden;
    /* スクロールバー抑制 */
}

.envelope-canvas {
    display: block;
    width: 100%;
    height: 200px;
    background: rgba(0, 20, 40, 0.8);
    border: 1px solid rgba(255, 100, 255, 0.3);
    border-radius: 8px;
    cursor: pointer;
}

.envelope-presets {
    display: flex;
    gap: 8px;
    padding: 10px 15px;
    background: rgba(40, 10, 40, 0.6);
    border-top: 1px solid rgba(255, 100, 255, 0.3);
    flex-wrap: wrap;
}

.preset-btn {
    background: linear-gradient(180deg, rgba(100, 50, 100, 0.6) 0%, rgba(60, 30, 60, 0.8) 100%);
    border: 1px solid rgba(255, 100, 255, 0.5);
    border-radius: 6px;
    padding: 6px 12px;
    font-family: 'Press Start 2P', monospace;
    font-size: 8px;
    color: #ff88ff;
    cursor: pointer;
    transition: all 0.2s ease;
}

.preset-btn:hover {
    background: linear-gradient(180deg, rgba(150, 80, 150, 0.8) 0%, rgba(100, 50, 100, 0.9) 100%);
    border-color: #ff66ff;
    box-shadow: 0 0 15px rgba(255, 100, 255, 0.5);
}

.preset-btn.active {
    background: linear-gradient(180deg, rgba(180, 100, 180, 0.9) 0%, rgba(120, 60, 120, 1) 100%);
    border-color: #ff33ff;
    box-shadow: 0 0 20px rgba(255, 100, 255, 0.7);
}

.env-param-group {
    display: flex;
    gap: 4px;
    background: rgba(0, 0, 0, 0.3);
    padding: 2px;
    border-radius: 4px;
    border: 1px solid rgba(255, 100, 255, 0.2);
}

.env-param-btn {
    background: transparent;
    border: 1px solid transparent;
    color: #888;
    font-family: 'Press Start 2P', monospace;
    font-size: 8px;
    padding: 4px 8px;
    cursor: pointer;
    border-radius: 2px;
    transition: all 0.2s;
}

.env-param-btn:hover {
    color: #ffccff;
}

.env-param-btn.active {
    background: rgba(255, 100, 255, 0.2);
    border-color: rgba(255, 100, 255, 0.5);
    color: #00e5ff;
    box-shadow: 0 0 5px rgba(0, 229, 255, 0.4);
}

/* ============================================= */
/* パターンエディター */
/* ============================================= */

.pattern-editor-container {
    display: flex;
    flex-direction: column;
    height: 100%;
    /* min-height: 300px;  削除: Flexで制御するため */
    background: linear-gradient(180deg, #0a1628 0%, #0d1f3c 100%);
    border: 2px solid rgba(100, 255, 100, 0.3);
    border-radius: 12px;
    overflow: hidden;
    box-shadow:
        0 0 20px rgba(100, 255, 100, 0.2),
        inset 0 0 60px rgba(50, 100, 50, 0.05);
}

.pattern-editor-toolbar {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 10px 15px;
    background: linear-gradient(90deg, rgba(20, 80, 20, 0.6) 0%, rgba(40, 100, 40, 0.4) 50%, rgba(20, 80, 20, 0.6) 100%);
    border-bottom: 1px solid rgba(100, 255, 100, 0.4);
}

.pattern-editor-toolbar .se-title {
    color: #66ff66;
    text-shadow: 0 0 10px rgba(100, 255, 100, 0.8);
}

/* ============================================= */
/* エディタータブ（index.html統合用） */
/* ============================================= */

#tab-motif,
#tab-pattern {
    padding: 15px;
    height: 100%;
    box-sizing: border-box;
}

.global-settings-panel-mount,
#tab-global {
    height: 100%;
    min-height: 0;
    overflow: hidden;
    box-sizing: border-box;
}

.global-settings-panel {
    display: flex;
    flex-direction: column;
    gap: 16px;
    height: 100%;
    min-height: 0;
    overflow: hidden;
    color: #d7e6f3;
}

.gsp-topbar {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 16px;
    flex-wrap: wrap;
}

.gsp-segmented {
    display: inline-flex;
    padding: 4px;
    border-radius: 999px;
    background: rgba(7, 16, 30, 0.85);
    border: 1px solid rgba(0, 255, 255, 0.16);
}

.gsp-segment-btn {
    border: 0;
    background: transparent;
    color: #7ea3c5;
    padding: 10px 16px;
    border-radius: 999px;
    cursor: pointer;
    font-size: 0.86rem;
    font-weight: 600;
}

.gsp-segment-btn.is-active {
    background: linear-gradient(135deg, rgba(0, 200, 255, 0.24), rgba(0, 255, 160, 0.2));
    color: #f2fbff;
    box-shadow: 0 0 16px rgba(0, 255, 255, 0.14);
}

.gsp-summary-inline {
    color: #8bb6d8;
    font-size: 0.82rem;
}

.gsp-panel {
    min-height: 0;
    flex: 1;
    overflow-y: auto;
    overflow-x: hidden;
    padding-right: 4px;
    overscroll-behavior: contain;
}

.gsp-panel-grid {
    display: grid;
    grid-template-columns: minmax(360px, 1.1fr) minmax(280px, 0.9fr);
    gap: 16px;
    min-height: 100%;
    align-content: start;
}

.gsp-panel-grid-harmony {
    grid-template-columns: minmax(500px, 1.35fr) minmax(260px, 0.65fr);
}

.gsp-card {
    display: flex;
    flex-direction: column;
    gap: 14px;
    min-height: 0;
    padding: 18px;
    border-radius: 16px;
    background: linear-gradient(180deg, rgba(7, 17, 32, 0.94), rgba(4, 11, 22, 0.94));
    border: 1px solid rgba(0, 255, 255, 0.14);
    box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.03), 0 18px 40px rgba(0, 0, 0, 0.2);
}

.gsp-card-header h3,
.gsp-section-title,
.gsp-modal-title {
    margin: 0;
    color: #f4fbff;
}

.gsp-card-header p,
.gsp-preview-meta,
.gsp-empty-state,
.gsp-import-status,
.gsp-chord-meta,
.gsp-selected-grid,
.gsp-label,
.gsp-summary-inline,
.gsp-key {
    color: #8bb6d8;
}

.gsp-card-header p,
.gsp-preview-meta,
.gsp-empty-state,
.gsp-import-status,
.gsp-chord-meta,
.gsp-selected-grid,
.gsp-label,
.gsp-summary-inline {
    margin: 0;
    font-size: 0.82rem;
    line-height: 1.45;
}

.gsp-eyebrow {
    margin: 0 0 4px;
    color: #31d8ff;
    font-size: 0.75rem;
    text-transform: uppercase;
    letter-spacing: 0.08em;
}

.gsp-field-grid,
.gsp-grid-two {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 14px;
}

.gsp-field-span {
    grid-column: 1 / -1;
}

.gsp-field {
    display: flex;
    flex-direction: column;
    gap: 8px;
}

.gsp-label {
    font-weight: 600;
}

.gsp-input,
.gsp-select,
.gsp-textarea {
    width: 100%;
    border-radius: 10px;
    border: 1px solid rgba(0, 255, 255, 0.16);
    background: rgba(4, 11, 22, 0.92);
    color: #eefaff;
    padding: 10px 12px;
    box-sizing: border-box;
}

.gsp-textarea {
    min-height: 96px;
    resize: vertical;
}

.gsp-tempo-control {
    display: grid;
    grid-template-columns: minmax(0, 1fr) 96px;
    gap: 12px;
    align-items: center;
}

.gsp-tempo-number {
    text-align: right;
}

.gsp-toggle {
    display: inline-flex;
    align-items: center;
    gap: 10px;
    min-height: 42px;
    padding: 10px 12px;
    border-radius: 10px;
    border: 1px solid rgba(0, 255, 255, 0.12);
    background: rgba(5, 14, 27, 0.72);
}

.gsp-stat-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 12px;
}

.gsp-stat-card {
    display: flex;
    flex-direction: column;
    gap: 4px;
    padding: 14px;
    border-radius: 12px;
    background: rgba(6, 15, 28, 0.78);
    border: 1px solid rgba(0, 255, 255, 0.1);
}

.gsp-stat-label {
    color: #7ca0be;
    font-size: 0.75rem;
    text-transform: uppercase;
    letter-spacing: 0.05em;
}

.gsp-stat-card strong,
.gsp-selected-label,
.gsp-preview-label {
    color: #f5fbff;
    font-size: 1.05rem;
}

.gsp-progression-preview,
.gsp-token-list {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
}

.gsp-preview-chip,
.gsp-token,
.gsp-chip {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 34px;
    padding: 6px 12px;
    border-radius: 999px;
    border: 1px solid rgba(0, 255, 255, 0.12);
    background: rgba(8, 18, 33, 0.75);
    color: #d7efff;
    box-sizing: border-box;
}

.gsp-chip {
    cursor: pointer;
    font-size: 0.82rem;
}

.gsp-chip.is-active {
    border-color: rgba(65, 255, 198, 0.58);
    background: linear-gradient(135deg, rgba(0, 200, 255, 0.18), rgba(0, 255, 160, 0.18));
    color: #ffffff;
    box-shadow: 0 0 14px rgba(0, 255, 255, 0.14);
}

.gsp-toolbar {
    display: flex;
    gap: 10px;
    flex-wrap: wrap;
}

.gsp-list {
    display: flex;
    flex-direction: column;
    gap: 10px;
    min-height: 0;
    overflow: auto;
}

.gsp-chord-row {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    gap: 10px;
    align-items: center;
    padding: 10px;
    border-radius: 14px;
    border: 1px solid rgba(0, 255, 255, 0.1);
    background: rgba(5, 14, 27, 0.75);
}

.gsp-chord-row.is-selected {
    border-color: rgba(65, 255, 198, 0.52);
    box-shadow: inset 0 0 0 1px rgba(65, 255, 198, 0.2);
}

.gsp-chord-select {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 4px;
    width: 100%;
    padding: 0;
    border: 0;
    background: transparent;
    color: inherit;
    cursor: pointer;
    text-align: left;
}

.gsp-chord-label {
    color: #f4fbff;
    font-size: 1rem;
    font-weight: 700;
}

.gsp-row-actions {
    display: flex;
    gap: 8px;
    flex-wrap: wrap;
    justify-content: flex-end;
}

.gsp-mini-btn,
.gsp-icon-btn {
    border: 1px solid rgba(0, 255, 255, 0.14);
    background: rgba(8, 18, 33, 0.84);
    color: #e7f7ff;
    border-radius: 10px;
    padding: 8px 10px;
    cursor: pointer;
}

.gsp-mini-btn.danger {
    border-color: rgba(255, 110, 110, 0.22);
    color: #ffb4b4;
}

.gsp-mini-btn:disabled {
    opacity: 0.45;
    cursor: not-allowed;
}

.gsp-selected-card {
    display: flex;
    flex-direction: column;
    gap: 14px;
    min-height: 200px;
}

.gsp-selected-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 12px;
}

.gsp-selected-grid strong {
    display: block;
    margin-top: 4px;
    color: #f5fbff;
}

.gsp-key {
    display: inline-block;
    font-size: 0.74rem;
    text-transform: uppercase;
    letter-spacing: 0.06em;
}

.gsp-import-box {
    display: flex;
    flex-direction: column;
    gap: 12px;
    padding: 14px;
    border-radius: 12px;
    background: rgba(5, 14, 27, 0.74);
    border: 1px solid rgba(0, 255, 255, 0.12);
}

.gsp-import-status.is-ok {
    color: #97ffd6;
}

.gsp-import-status.has-errors,
.gsp-token.is-error {
    color: #ffb7b7;
}

.gsp-token.is-error {
    border-color: rgba(255, 110, 110, 0.24);
}

.gsp-chip-grid {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
}

.gsp-preview-card {
    display: flex;
    flex-direction: column;
    gap: 6px;
    padding: 16px;
    border-radius: 12px;
    background: rgba(5, 14, 27, 0.74);
    border: 1px solid rgba(0, 255, 255, 0.12);
}

.gsp-modal {
    position: fixed;
    inset: 0;
    z-index: 10020;
}

.gsp-modal-backdrop {
    position: absolute;
    inset: 0;
    background: rgba(2, 7, 14, 0.76);
    backdrop-filter: blur(6px);
}

.gsp-modal-card {
    position: relative;
    display: flex;
    flex-direction: column;
    gap: 14px;
    width: min(860px, calc(100vw - 32px));
    max-height: calc(100vh - 32px);
    margin: 16px auto;
    padding: 18px;
    border-radius: 18px;
    background: linear-gradient(180deg, rgba(8, 19, 35, 0.98), rgba(4, 11, 22, 0.98));
    border: 1px solid rgba(0, 255, 255, 0.18);
    overflow: hidden;
}

.gsp-modal-header,
.gsp-modal-footer {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
}

.gsp-modal-body {
    display: flex;
    flex-direction: column;
    gap: 14px;
    overflow: auto;
    padding-right: 4px;
}

.gsp-section {
    display: flex;
    flex-direction: column;
    gap: 10px;
}

.gsp-icon-btn {
    min-width: 40px;
    min-height: 40px;
    padding: 0;
    font-size: 1.25rem;
}

body.gsp-modal-open {
    overflow: hidden;
}

.gsp-harmony-editor {
    display: grid;
    grid-template-columns: minmax(460px, 1.3fr) minmax(320px, 0.9fr);
    gap: 16px;
    min-height: 0;
    align-content: start;
}

.gsp-toolbar-wrap {
    align-items: center;
}

.gsp-metric-summary {
    padding: 10px 12px;
    border-radius: 12px;
    background: rgba(5, 14, 27, 0.72);
    border: 1px solid rgba(0, 255, 255, 0.12);
    color: #9fd7f7;
    font-size: 0.82rem;
}

.gsp-harmony-grid-wrap {
    display: flex;
    flex-direction: column;
    gap: 12px;
    min-height: 0;
    max-height: min(68vh, 720px);
    overflow: auto;
    padding-right: 4px;
}

.gsp-harmony-bar {
    display: flex;
    flex-direction: column;
    gap: 10px;
    padding: 14px;
    border-radius: 14px;
    background: rgba(5, 14, 27, 0.78);
    border: 1px solid rgba(0, 255, 255, 0.1);
}

.gsp-harmony-bar-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    color: #9ec6e4;
    font-size: 0.82rem;
}

.gsp-harmony-bar-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(88px, 1fr));
    gap: 10px;
}

.gsp-harmony-cell {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    justify-content: space-between;
    gap: 8px;
    min-height: 82px;
    padding: 12px;
    border-radius: 14px;
    border: 1px solid rgba(0, 255, 255, 0.12);
    background: rgba(8, 18, 33, 0.82);
    color: #eff9ff;
    cursor: pointer;
    text-align: left;
    transition: transform 120ms ease, border-color 120ms ease, box-shadow 120ms ease;
}

.gsp-harmony-cell:hover {
    transform: translateY(-1px);
    border-color: rgba(114, 232, 255, 0.32);
}

.gsp-harmony-cell.is-selected {
    border-color: rgba(255, 214, 102, 0.6);
    box-shadow: 0 0 0 1px rgba(255, 214, 102, 0.22), 0 0 22px rgba(255, 214, 102, 0.08);
}

.gsp-harmony-cell.is-occupied {
    background: linear-gradient(180deg, rgba(14, 35, 58, 0.92), rgba(7, 18, 32, 0.88));
}

.gsp-harmony-cell.is-continuation {
    border-style: dashed;
    color: #b8d1e7;
}

.gsp-harmony-cell-label {
    font-size: 0.95rem;
    font-weight: 700;
    line-height: 1.3;
}

.gsp-harmony-cell-meta,
.gsp-builder-meta,
.gsp-inline-note {
    color: #89afcb;
    font-size: 0.78rem;
    line-height: 1.4;
}

.gsp-builder-card {
    min-height: min(68vh, 720px);
    overflow: auto;
    padding-right: 4px;
}

.gsp-builder-header {
    display: flex;
    flex-direction: column;
    gap: 6px;
}

.gsp-inline-note {
    padding: 10px 12px;
    border-radius: 10px;
    border: 1px solid rgba(255, 214, 102, 0.2);
    background: rgba(255, 214, 102, 0.08);
}

.gsp-chip-grid-compact {
    gap: 6px;
}

.gsp-chip-grid-compact .gsp-chip {
    min-height: 32px;
    padding: 5px 10px;
    font-size: 0.78rem;
}

.gsp-toggle-btn {
    width: 100%;
    min-height: 44px;
    border-radius: 12px;
    border: 1px solid rgba(0, 255, 255, 0.14);
    background: rgba(8, 18, 33, 0.84);
    color: #d7efff;
    cursor: pointer;
}

.gsp-toggle-btn.is-active {
    border-color: rgba(65, 255, 198, 0.58);
    background: linear-gradient(135deg, rgba(0, 200, 255, 0.18), rgba(0, 255, 160, 0.18));
    color: #ffffff;
    box-shadow: 0 0 14px rgba(0, 255, 255, 0.14);
}

/* ============================================= */
/* モバイル対応 */
/* ============================================= */

@media (max-width: 768px) {
    .gsp-harmony-editor,
    .gsp-panel-grid,
    .gsp-panel-grid-harmony,
    .gsp-field-grid,
    .gsp-grid-two,
    .gsp-selected-grid,
    .gsp-stat-grid {
        grid-template-columns: minmax(0, 1fr);
    }

    .gsp-tempo-control,
    .gsp-chord-row {
        grid-template-columns: minmax(0, 1fr);
    }

    .gsp-row-actions {
        justify-content: flex-start;
    }

    .gsp-modal-card {
        width: calc(100vw - 16px);
        max-height: calc(100vh - 16px);
        margin: 8px auto;
        padding: 14px;
    }

    .gsp-harmony-bar-grid {
        grid-template-columns: repeat(auto-fit, minmax(72px, 1fr));
    }

    .score-editor-toolbar {
        flex-wrap: wrap;
        gap: 8px;
    }

    .toolbar-center {
        order: -1;
        width: 100%;
        margin-bottom: 8px;
    }

    .se-title {
        font-size: 8px;
    }

    .se-btn {
        padding: 10px 14px;
        font-size: 16px;
    }

    .score-editor-slider-x {
        flex-wrap: wrap;
    }

    .score-editor-slider-x input[type="range"] {
        max-width: none;
        flex: 1;
    }

    .score-editor-slider-y {
        display: none;
        /* モバイルでは縦スクロールでカバー */
    }

    .envelope-presets {
        justify-content: center;
    }
}

@media (max-width: 480px) {

    .score-editor-container,
    .envelope-editor-container,
    .pattern-editor-container {
        min-height: 300px;
        border-radius: 8px;
    }

    .se-btn {
        padding: 12px 16px;
    }
}

/* ============================================= */
/* スキャンラインエフェクト（オプション） */
/* ============================================= */

.score-editor-canvas-wrapper::after {
    content: '';
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    background: repeating-linear-gradient(0deg,
            transparent,
            transparent 2px,
            rgba(0, 0, 0, 0.03) 2px,
            rgba(0, 0, 0, 0.03) 4px);
    pointer-events: none;
}

/* ============================================= */
/* グロー・パルスアニメーション */
/* ============================================= */

@keyframes neonPulse {

    0%,
    100% {
        box-shadow: 0 0 10px rgba(0, 229, 255, 0.4);
    }

    50% {
        box-shadow: 0 0 20px rgba(0, 229, 255, 0.7);
    }
}

/* ============================================= */
/* Vocal Editor Styles (Expression Automation)   */
/* ============================================= */

.vocal-editor-layout {
    display: flex;
    flex-direction: column;
    height: 100% !important;
    /* 強制的に親要素に合わせる */
    width: 100%;
    background: #0a1628;
    color: #e0e6ed;
    font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
    position: relative;
    overflow: hidden;
    /* スクロールバー抑制 */
    border: 1px solid rgba(0, 255, 255, 0.2);
    border-radius: 8px;
    color: #eee;
}

.ve-toolbar {
    display: flex;
    justify-content: space-between;
    align-items: center;
    background: rgba(30, 30, 40, 0.6);
    padding: 10px;
    border-radius: 6px;
    border: 1px solid #333;
    flex-wrap: wrap;
    gap: 10px;
}

.param-selector {
    display: flex;
    gap: 5px;
    flex-wrap: wrap;
}

.ve-param-btn {
    background: #2a2a2a;
    border: 1px solid #444;
    color: #aaa;
    padding: 6px 12px;
    border-radius: 4px;
    cursor: pointer;
    font-size: 0.8rem;
    font-family: 'Press Start 2P', monospace;
    transition: all 0.2s;
    display: flex;
    align-items: center;
    gap: 6px;
}

.ve-param-btn:hover {
    background: #3a3a3a;
    color: #fff;
    border-color: #666;
}

.ve-param-btn.active {
    background: rgba(0, 200, 255, 0.2);
    color: #fff;
    border-color: #00ffff;
    text-shadow: 0 0 5px rgba(0, 255, 255, 0.5);
    box-shadow: 0 0 10px rgba(0, 255, 255, 0.1);
}

/* Param Specific Colors */
.ve-param-btn[data-param="breath"].active {
    background: rgba(85, 170, 85, 0.2);
    border-color: #aaffaa;
    text-shadow: 0 0 5px rgba(170, 255, 170, 0.5);
}

.ve-param-btn[data-param="vibrato"].active {
    background: rgba(255, 170, 238, 0.2);
    border-color: #ffaaee;
    text-shadow: 0 0 5px rgba(255, 170, 238, 0.5);
}

.ve-param-btn[data-param="pitchSnap"].active {
    background: rgba(255, 170, 0, 0.2);
    border-color: #ffaa00;
    text-shadow: 0 0 5px rgba(255, 170, 0, 0.5);
}

.ve-param-btn[data-param="brightness"].active {
    background: rgba(255, 255, 170, 0.2);
    border-color: #ffffaa;
    text-shadow: 0 0 5px rgba(255, 255, 170, 0.5);
}

.ve-graph-container {
    flex: 1;
    min-height: 250px;
    background: #08080c;
    border: 1px solid #333;
    border-radius: 6px;
    position: relative;
    overflow: hidden;
    box-shadow: inset 0 0 20px rgba(0, 0, 0, 0.5);
}

/* Grid overlay for graph (optional CSS grid) */
.ve-graph-container::before {
    content: '';
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    pointer-events: none;
    background-image:
        linear-gradient(rgba(255, 255, 255, 0.03) 1px, transparent 1px),
        linear-gradient(90deg, rgba(255, 255, 255, 0.03) 1px, transparent 1px);
    background-size: 20px 20px;
}

.ve-footer {
    display: flex;
    justify-content: space-between;
    align-items: center;
    height: 60px;
    background: rgba(20, 20, 30, 0.5);
    padding: 10px;
    border-top: 1px solid #333;
    border-radius: 0 0 8px 8px;
    gap: 20px;
}

.ve-lyrics-preview {
    flex: 1;
    height: 40px;
    background: #000;
    border: 1px solid #333;
    border-radius: 4px;
    display: flex;
    align-items: center;
    padding: 0 10px;
    overflow-x: auto;
    white-space: nowrap;
    color: #888;
    font-family: monospace;
    font-size: 0.8rem;
}

.ve-actions {
    display: flex;
    gap: 10px;
    align-items: center;
    flex-shrink: 0;
}

.ve-save-load {
    display: flex;
    gap: 5px;
    align-items: center;
    background: #222;
    padding: 4px 8px;
    border-radius: 4px;
    border: 1px solid #444;
}

#ve-automation-chart {
    width: 100%;
    height: 100%;
    cursor: crosshair;
    touch-action: none;
    /* Prevent scroll on touch */
}

/* ============================================= */
/* ★NEW: 全画面表示スタイル */
/* ============================================= */

.score-editor-container.fullscreen,
.pattern-editor-container.fullscreen {
    position: fixed !important;
    top: 0 !important;
    left: 0 !important;
    width: 100vw !important;
    height: 100vh !important;
    z-index: 9999 !important;
    border-radius: 0 !important;
    margin: 0 !important;
    max-width: none !important;
    max-height: none !important;
    animation: fullscreenIn 0.3s ease-out;
}

.score-editor-container.fullscreen .score-editor-main,
.pattern-editor-container.fullscreen .pattern-editor-main {
    height: calc(100vh - 80px);
}

@keyframes fullscreenIn {
    from {
        opacity: 0;
        transform: scale(0.95);
    }

    to {
        opacity: 1;
        transform: scale(1);
    }
}

/* 全画面時のボタン変化 */
.fullscreen #se-fullscreen-btn,
.fullscreen #pe-fullscreen-btn {
    background: linear-gradient(180deg, rgba(255, 100, 100, 0.6) 0%, rgba(150, 50, 50, 0.8) 100%);
    border-color: #ff6666;
}

/* ============================================= */
/* ★NEW: リサイズハンドル (ドラッグでサイズ調整) */
/* ============================================= */

.editor-resize-handle {
    position: absolute;
    bottom: 0;
    left: 0;
    right: 0;
    height: 12px;
    background: linear-gradient(180deg, transparent 0%, rgba(0, 200, 255, 0.2) 50%, rgba(0, 200, 255, 0.4) 100%);
    cursor: ns-resize;
    border-radius: 0 0 12px 12px;
    transition: background 0.2s;
    z-index: 10;
}

.editor-resize-handle:hover {
    background: linear-gradient(180deg, transparent 0%, rgba(0, 200, 255, 0.3) 30%, rgba(0, 229, 255, 0.6) 100%);
}

.editor-resize-handle::after {
    content: '⋮⋮⋮';
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%) rotate(90deg);
    color: rgba(0, 200, 255, 0.6);
    font-size: 10px;
    letter-spacing: 2px;
}

.pattern-editor-container .editor-resize-handle {
    background: linear-gradient(180deg, transparent 0%, rgba(100, 255, 100, 0.2) 50%, rgba(100, 255, 100, 0.4) 100%);
}

.pattern-editor-container .editor-resize-handle:hover {
    background: linear-gradient(180deg, transparent 0%, rgba(100, 255, 100, 0.3) 30%, rgba(100, 255, 100, 0.6) 100%);
}

.pattern-editor-container .editor-resize-handle::after {
    color: rgba(100, 255, 100, 0.6);
}

/* 全画面時はリサイズハンドル非表示 */
.fullscreen .editor-resize-handle {
    display: none;
}

/* ============================================= */
/* ★NEW: シークバー・縦スクロール */
/* ============================================= */

.score-editor-seekbar,
.pattern-editor-seekbar {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 8px 15px;
    background: rgba(0, 30, 60, 0.8);
    border-top: 1px solid rgba(0, 200, 255, 0.3);
}

.score-editor-seekbar label,
.pattern-editor-seekbar label {
    font-family: 'Press Start 2P', monospace;
    font-size: 8px;
    color: rgba(0, 200, 255, 0.7);
    white-space: nowrap;
}

.score-editor-seekbar input[type="range"],
.pattern-editor-seekbar input[type="range"] {
    flex: 1;
}

.score-editor-vscroll {
    display: flex;
    flex-direction: column;
    align-items: center;
    padding: 10px 8px;
    background: rgba(0, 30, 60, 0.8);
    border-left: 1px solid rgba(0, 200, 255, 0.3);
}

.score-editor-vscroll input[type="range"] {
    writing-mode: vertical-lr;
    direction: rtl;
    height: 100%;
    min-height: 100px;
    width: 16px;
}

/* ミニズーム */
.zoom-mini {
    width: 60px !important;
    height: 16px !important;
}

/* ============================================= */
/* ★NEW: 共通セーブ/ロードコントロール */
/* ============================================= */

.editor-data-control {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 8px 15px;
    background: linear-gradient(90deg, rgba(0, 50, 100, 0.5), rgba(0, 80, 120, 0.3));
    border-bottom: 1px solid rgba(0, 200, 255, 0.3);
}

.editor-data-control.editor-json-control {
    gap: 8px;
}

.editor-data-label {
    font-size: 0.58rem;
    font-weight: 700;
    letter-spacing: 0.14em;
    text-transform: uppercase;
    color: rgba(0, 200, 255, 0.7);
    white-space: nowrap;
}

.editor-data-control .se-btn.primary {
    background: linear-gradient(135deg, #00aaff 0%, #0077cc 100%);
    border-color: #00ccff;
}

.editor-data-control .se-btn.primary:hover {
    background: linear-gradient(135deg, #00ccff 0%, #0099ee 100%);
    box-shadow: 0 0 10px rgba(0, 200, 255, 0.5);
}

.editor-data-control .se-btn.danger {
    background: linear-gradient(135deg, #ff5555 0%, #cc3333 100%);
    border-color: #ff6666;
}

.editor-data-control .se-btn.danger:hover {
    background: linear-gradient(135deg, #ff7777 0%, #ee4444 100%);
    box-shadow: 0 0 10px rgba(255, 100, 100, 0.5);
}

.editor-data-control .se-btn.utility {
    background: linear-gradient(135deg, #2e4f79 0%, #20344f 100%);
    border-color: #7eb7ff;
}

.editor-data-control .se-btn.utility:hover {
    background: linear-gradient(135deg, #3b6393 0%, #294366 100%);
    box-shadow: 0 0 10px rgba(126, 183, 255, 0.35);
}

/* トースト通知 */
.editor-status-toast {
    padding: 4px 12px;
    border-radius: 4px;
    font-size: 0.8rem;
    opacity: 0;
    transition: opacity 0.3s ease;
}

.editor-status-toast.success {
    background: rgba(0, 255, 100, 0.2);
    color: #0f0;
    border: 1px solid rgba(0, 255, 100, 0.4);
    opacity: 1;
}

.editor-status-toast.error {
    background: rgba(255, 50, 50, 0.2);
    color: #f55;
    border: 1px solid rgba(255, 50, 50, 0.4);
    opacity: 1;
}



/* ============================================= */
/* ★NEW: 統合レイアウト (3画面分割) */
/* ============================================= */

.editor-layout-container {
    display: flex;
    flex-direction: column;
    height: 100%;
    width: 100%;
    overflow: hidden;
    background: #050a10;
}

#view-editor[data-layout-mode="mobile-landscape"] .section-header,
#view-editor[data-layout-mode="mobile-landscape"] .editor-footer {
    display: none !important;
}

#view-editor[data-layout-mode="mobile-landscape"] {
    height: 100%;
    min-height: 100%;
    display: flex;
    flex-direction: column;
    overflow: hidden;
}

.editor-panel {
    position: relative;
    overflow: hidden;
    min-height: 0;
    /* Flexbox overflow fix (コンテンツの膨張を防ぐ重要なおまじない) */
    flex-basis: 0;
    /* 初期幅を0%から計算させ比率を順守させる */
    display: flex;
    flex-direction: column;
}

/* 上段: Console View */
#editor-panel-top {
    flex: 1;
    /* デフォルト比率均等化 */
    border-bottom: 1px solid rgba(0, 200, 255, 0.2);
    min-height: 100px;
    display: flex;
}

/* 中段: Score/Pattern Editor */
#editor-panel-middle {
    flex: 1;
    border-bottom: 1px solid rgba(0, 200, 255, 0.2);
    min-height: 150px;
    display: flex;
}

.editor-layout-container[data-layout-mode="mobile-landscape"] {
    padding:
        calc(env(safe-area-inset-top, 0px) + 8px)
        calc(env(safe-area-inset-right, 0px) + 76px)
        calc(env(safe-area-inset-bottom, 0px) + 8px)
        calc(env(safe-area-inset-left, 0px) + 76px);
    box-sizing: border-box;
    height: 100%;
    min-height: 100%;
    overscroll-behavior: none;
}

.editor-layout-container[data-layout-mode="mobile-landscape"] #splitter-top-middle,
.editor-layout-container[data-layout-mode="mobile-landscape"] #editor-bottom-resize-handle,
.editor-layout-container[data-layout-mode="mobile-landscape"] .editor-tabs {
    display: none !important;
}

.editor-layout-container[data-layout-mode="mobile-landscape"] #editor-panel-top,
.editor-layout-container[data-layout-mode="mobile-landscape"] #editor-panel-middle {
    min-height: 0;
    height: 100%;
    border-radius: 16px;
    border: 1px solid rgba(114, 232, 255, 0.18);
    box-shadow: inset 0 0 0 1px rgba(114, 232, 255, 0.06);
}

.editor-layout-container[data-layout-mode="mobile-landscape"] #editor-panel-top:not(.panel-hidden),
.editor-layout-container[data-layout-mode="mobile-landscape"] #editor-panel-middle:not(.panel-hidden) {
    flex: 1 1 auto !important;
    height: auto !important;
    max-height: none !important;
}

.editor-layout-container[data-layout-mode="mobile-landscape"] #editor-panel-middle {
    border-bottom: 1px solid rgba(114, 232, 255, 0.18);
}

.editor-layout-container[data-layout-mode="mobile-landscape"] #editor-content-middle {
    flex: 1;
    min-height: 0;
}

.editor-layout-container[data-layout-mode="mobile-landscape"] #tab-global {
    height: 100%;
    padding: 8px !important;
    box-sizing: border-box;
    overflow: auto;
}

.editor-layout-container[data-layout-mode="mobile-portrait"] #editor-panel-top,
.editor-layout-container[data-layout-mode="mobile-portrait"] #editor-panel-middle {
    display: none !important;
}

.mobile-editor-shell {
    position: absolute;
    inset: 0;
    z-index: 80;
    pointer-events: none;
    display: none;
}

.mobile-editor-shell.is-active {
    display: block;
}

.mobile-editor-menu {
    position: absolute;
    left: calc(env(safe-area-inset-left, 0px) + 8px);
    top: calc(env(safe-area-inset-top, 0px) + 8px);
    pointer-events: auto;
    z-index: 2;
}

.mobile-editor-rail,
.mobile-editor-dock {
    position: absolute;
    top: calc(env(safe-area-inset-top, 0px) + 8px);
    bottom: calc(env(safe-area-inset-bottom, 0px) + 8px);
    display: flex;
    flex-direction: column;
    gap: 10px;
    pointer-events: auto;
}

.mobile-editor-rail {
    left: calc(env(safe-area-inset-left, 0px) + 8px);
    top: calc(env(safe-area-inset-top, 0px) + 72px);
}

.mobile-editor-dock {
    right: calc(env(safe-area-inset-right, 0px) + 8px);
}

.mobile-editor-menu-btn,
.mobile-editor-rail-btn,
.mobile-editor-dock-btn {
    width: 52px;
    min-height: 52px;
    padding: 8px 6px;
    border: 1px solid rgba(114, 232, 255, 0.26);
    border-radius: 14px;
    background: linear-gradient(180deg, rgba(8, 18, 29, 0.96) 0%, rgba(5, 12, 20, 0.96) 100%);
    color: #e7fbff;
    box-shadow: 0 0 14px rgba(0, 0, 0, 0.18);
}

.mobile-editor-menu-btn {
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 24px;
    line-height: 1;
}

.mobile-editor-rail-btn {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 4px;
}

.mobile-editor-rail-btn.is-active {
    border-color: rgba(114, 232, 255, 0.82);
    box-shadow: 0 0 18px rgba(114, 232, 255, 0.22);
}

.mobile-editor-rail-icon {
    font-size: 16px;
    font-weight: 700;
    line-height: 1;
}

.mobile-editor-rail-label {
    font-size: 10px;
    line-height: 1.1;
}

.mobile-editor-dock-btn {
    font-size: 11px;
    font-weight: 700;
}

.mobile-editor-dock-btn.is-primary {
    min-height: 60px;
    border-color: rgba(114, 232, 255, 0.62);
    background: linear-gradient(180deg, rgba(14, 44, 66, 0.98) 0%, rgba(8, 26, 38, 0.98) 100%);
}

.mobile-editor-dock-btn:disabled {
    opacity: 0.34;
}

.mobile-editor-overlay {
    position: absolute;
    inset: 0;
    display: none;
    align-items: center;
    justify-content: center;
    padding: 24px;
    background: rgba(4, 9, 16, 0.92);
    pointer-events: none;
}

.mobile-editor-shell.is-portrait .mobile-editor-overlay {
    display: flex;
    pointer-events: auto;
}

.mobile-editor-overlay-card {
    max-width: 320px;
    padding: 20px 22px;
    border-radius: 18px;
    border: 1px solid rgba(114, 232, 255, 0.26);
    background: linear-gradient(180deg, rgba(8, 18, 29, 0.98) 0%, rgba(6, 12, 20, 0.98) 100%);
    text-align: center;
    box-shadow: 0 0 24px rgba(114, 232, 255, 0.14);
}

.mobile-editor-overlay-title {
    font-family: 'Press Start 2P', monospace;
    font-size: 12px;
    line-height: 1.7;
    color: #f3fbff;
}

.mobile-editor-overlay-copy {
    margin-top: 12px;
    font-size: 13px;
    line-height: 1.5;
    color: rgba(226, 241, 248, 0.8);
}

#editor-panel-middle.editor-panel-flash {
    animation: editor-panel-flash 520ms ease-out;
}

@keyframes editor-panel-flash {
    0% {
        box-shadow: inset 0 0 0 1px rgba(114, 232, 255, 0.18), 0 0 0 rgba(114, 232, 255, 0);
    }
    35% {
        box-shadow: inset 0 0 0 1px rgba(114, 232, 255, 0.58), 0 0 26px rgba(114, 232, 255, 0.18);
    }
    100% {
        box-shadow: inset 0 0 0 1px rgba(114, 232, 255, 0.18), 0 0 0 rgba(114, 232, 255, 0);
    }
}

/* 下段: Vocal/Envelope Editor */
#editor-panel-bottom {
    flex: 1;
    min-height: 80px;
    display: none !important;
}

/* スプリッター (リサイズハンドル) */
.splitter-horizontal {
    height: 8px;
    background: #000;
    border-top: 1px solid #333;
    border-bottom: 1px solid #333;
    cursor: ns-resize;
    z-index: 100;
    position: relative;
    flex-shrink: 0;
    display: flex;
    justify-content: center;
    align-items: center;
}

.splitter-horizontal::after {
    content: '';
    width: 30px;
    height: 2px;
    background: #444;
    border-radius: 1px;
}

.splitter-horizontal:hover {
    background: #111;
    border-color: #00aaff;
}

.splitter-horizontal:hover::after {
    background: #00aaff;
}

.editor-bottom-resize-handle {
    height: 14px;
    flex-shrink: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    cursor: ns-resize;
    background: linear-gradient(180deg, rgba(0, 0, 0, 0.96) 0%, rgba(8, 18, 34, 0.98) 100%);
    border-top: 1px solid rgba(0, 200, 255, 0.25);
}

.editor-bottom-resize-handle::after {
    content: '';
    width: 72px;
    height: 6px;
    border-radius: 999px;
    background: repeating-linear-gradient(90deg,
            rgba(0, 229, 255, 0.28) 0 8px,
            rgba(0, 229, 255, 0.9) 8px 12px);
    box-shadow: 0 0 12px rgba(0, 229, 255, 0.28);
}

.editor-bottom-resize-handle:hover,
.editor-bottom-resize-handle.dragging {
    border-top-color: rgba(0, 229, 255, 0.7);
    background: linear-gradient(180deg, rgba(6, 22, 38, 0.98) 0%, rgba(10, 36, 54, 0.98) 100%);
}

.editor-bottom-resize-handle:hover::after,
.editor-bottom-resize-handle.dragging::after {
    box-shadow: 0 0 18px rgba(0, 229, 255, 0.45);
}

/* パネル非表示用 */
.panel-hidden {
    display: none !important;
}

/* ============================================= */
/* Console View Styles */
/* ============================================= */

.console-view-container {
    display: flex;
    flex-direction: column;
    height: 100%;
    background: #0a0e14;
    color: #eee;
}

.cv-header {
    height: 30px;
    background: #111;
    border-bottom: 1px solid #333;
    display: flex;
    align-items: center;
    padding: 0 10px;
}

.cv-body {
    flex: 1;
    display: flex;
    overflow: hidden;
    position: relative;
}

/* 左側: トラックリスト */
.cv-track-list {
    width: 200px;
    /* 初期幅 */
    background: #151a21;
    border-right: 1px solid #333;
    overflow-y: hidden;
    /* メインエリアと同期スクロール */
    flex-shrink: 0;
}

.cv-track-header {
    height: 60px;
    /* トラックの高さ */
    border-bottom: 1px solid #2a2a2a;
    padding: 5px;
    display: flex;
    flex-direction: column;
    justify-content: center;
    position: relative;
    background: #1a2029;
}

.cv-track-header.selected {
    background: #253040;
    border-left: 3px solid #00aaff;
}

.cv-track-name {
    font-family: 'Press Start 2P', monospace;
    font-size: 10px;
    color: #ccc;
    margin-bottom: 4px;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.cv-track-controls {
    display: flex;
    gap: 4px;
}

.cv-btn-small {
    font-size: 9px;
    padding: 2px 4px;
    background: #333;
    border: 1px solid #555;
    color: #aaa;
    cursor: pointer;
    border-radius: 2px;
}

.cv-btn-small.active {
    background: #00aaff;
    color: #fff;
    border-color: #0088cc;
}

.cv-btn-mute.active {
    background: #ff4444;
    border-color: #cc0000;
}

.cv-btn-solo.active {
    background: #ffaa00;
    border-color: #cc8800;
}

/* 右側: タイムライン */
.cv-timeline-area {
    flex: 1;
    position: relative;
    overflow: hidden;
    background: #0c1016;
}

/* タイムルーラー */
.cv-ruler {
    height: 30px;
    background: #111;
    border-bottom: 1px solid #333;
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    z-index: 10;
}

/* レーン領域 */
.cv-lanes-container {
    position: absolute;
    top: 30px;
    /* Ruler height */
    left: 0;
    right: 0;
    bottom: 0;
    overflow: hidden;
}

.console-shell {
    display: flex;
    flex-direction: column;
    width: 100%;
    height: 100%;
    min-height: 0;
    background:
        radial-gradient(circle at top left, rgba(0, 229, 255, 0.14), transparent 35%),
        linear-gradient(180deg, #07111b 0%, #081018 100%);
}

.console-toolbar {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 14px;
    padding: 10px 16px;
    border-bottom: 1px solid rgba(114, 232, 255, 0.22);
    background: linear-gradient(180deg, rgba(9, 24, 37, 0.98) 0%, rgba(8, 18, 29, 0.94) 100%);
    flex-shrink: 0;
}

.console-toolbar-group,
.console-toolbar-sliders {
    display: flex;
    align-items: center;
    gap: 10px;
}

.console-toolbar-spacer {
    flex: 1;
}

.console-toolbar-status {
    min-height: 36px;
    padding: 0 12px;
    border-radius: 999px;
    border: 1px solid rgba(114, 232, 255, 0.18);
    background: rgba(7, 14, 22, 0.72);
    color: rgba(226, 241, 248, 0.82);
    font-size: 11px;
    white-space: nowrap;
}

.console-mobile-compact {
    display: none;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    width: 100%;
}

.console-mobile-compact-copy {
    min-width: 0;
    display: flex;
    flex-direction: column;
    gap: 4px;
}

.console-mobile-compact-track {
    font-family: 'Press Start 2P', monospace;
    font-size: 9px;
    line-height: 1.4;
    color: #f2fbff;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.console-mobile-compact-bar {
    font-size: 11px;
    color: rgba(226, 241, 248, 0.74);
}

.console-mobile-inspector-btn {
    flex: 0 0 auto;
    border: 1px solid rgba(114, 232, 255, 0.24);
    background: rgba(10, 20, 31, 0.9);
    color: #e6fbff;
    border-radius: 10px;
    padding: 10px 14px;
    font-size: 12px;
    font-weight: 700;
}

.console-mobile-inspector-btn.is-active {
    border-color: rgba(114, 232, 255, 0.72);
    box-shadow: 0 0 16px rgba(114, 232, 255, 0.16);
}

.console-toolbar-sliders label {
    font-family: 'Press Start 2P', monospace;
    font-size: 8px;
    color: rgba(114, 232, 255, 0.7);
}

.console-toolbar-sliders input[type="range"] {
    width: 92px;
}

.console-toolbar-recording {
    flex-wrap: wrap;
    align-items: flex-end;
    gap: 8px 10px;
}

.console-toolbar-field {
    display: flex;
    flex-direction: column;
    gap: 4px;
    min-width: 92px;
}

.console-toolbar-field-label {
    font-family: 'Press Start 2P', monospace;
    font-size: 8px;
    color: rgba(114, 232, 255, 0.7);
    letter-spacing: 0.06em;
}

.console-toolbar-btn {
    border: 1px solid rgba(114, 232, 255, 0.28);
    background: linear-gradient(180deg, rgba(14, 40, 58, 0.95) 0%, rgba(10, 25, 37, 0.95) 100%);
    color: #dffcff;
    border-radius: 8px;
    padding: 8px 14px;
    cursor: pointer;
    font-size: 12px;
    letter-spacing: 0.03em;
}

.console-toolbar-btn:hover {
    border-color: rgba(114, 232, 255, 0.6);
    box-shadow: 0 0 18px rgba(114, 232, 255, 0.12);
}

.console-toolbar-select {
    min-height: 36px;
    appearance: none;
    padding-right: 24px;
}

.console-toolbar-record-btn.is-armed,
.console-toolbar-record-btn.is-active {
    color: #fff4f4;
    border-color: rgba(255, 120, 120, 0.82);
    background: linear-gradient(180deg, rgba(110, 28, 38, 0.94) 0%, rgba(72, 18, 26, 0.98) 100%);
    box-shadow: 0 0 18px rgba(255, 112, 112, 0.18);
}

.console-toolbar-record-status {
    min-width: 180px;
}

.console-toolbar-tools {
    flex-wrap: wrap;
    gap: 8px;
}

.console-toolbar-tool-btn {
    min-width: 72px;
    padding: 8px 12px;
    font-weight: 700;
}

.console-toolbar-tool-btn.is-active {
    border-color: rgba(114, 232, 255, 0.82);
    background: linear-gradient(180deg, rgba(24, 74, 104, 0.96) 0%, rgba(12, 40, 60, 0.98) 100%);
    box-shadow: 0 0 20px rgba(114, 232, 255, 0.18);
}

.console-toolbar-btn:disabled,
.console-toolbar-btn.is-disabled {
    opacity: 0.38;
    cursor: not-allowed;
    filter: saturate(0.35) brightness(0.72);
    border-color: rgba(114, 232, 255, 0.14);
    box-shadow: none;
}

.console-toolbar-btn:disabled:hover,
.console-toolbar-btn.is-disabled:hover {
    border-color: rgba(114, 232, 255, 0.14);
    box-shadow: none;
}

.console-toolbar-divider {
    width: 1px;
    align-self: stretch;
    background: linear-gradient(180deg, transparent 0%, rgba(114, 232, 255, 0.35) 50%, transparent 100%);
}

.console-main {
    flex: 1;
    min-height: 0;
    display: flex;
    position: relative;
}

.console-track-column {
    width: 268px;
    min-width: 268px;
    max-width: 268px;
    border-right: 1px solid rgba(114, 232, 255, 0.16);
    background: linear-gradient(180deg, rgba(8, 18, 29, 0.98) 0%, rgba(7, 14, 23, 0.98) 100%);
    position: relative;
    overflow: hidden;
}

.console-track-column-ruler {
    display: flex;
    flex-direction: column;
    justify-content: center;
    flex: 0 0 auto;
    gap: 6px;
    padding: 12px 16px;
    font-family: 'Press Start 2P', monospace;
    font-size: 8px;
    letter-spacing: 0.12em;
    text-transform: uppercase;
    color: rgba(114, 232, 255, 0.74);
    border-bottom: 1px solid rgba(114, 232, 255, 0.14);
    box-sizing: border-box;
    position: relative;
    z-index: 2;
}

.console-track-column-ruler-title {
    width: 100%;
}

.console-track-column-ruler-subtitle {
    width: 100%;
    font-family: sans-serif;
    font-size: 11px;
    letter-spacing: 0.02em;
    text-transform: none;
    color: rgba(226, 241, 248, 0.72);
    line-height: 1.35;
}

.console-track-column-body {
    position: absolute;
    left: 0;
    right: 0;
    bottom: 0;
    overflow: hidden;
    z-index: 1;
}

.console-track-column-scroll {
    position: relative;
    will-change: transform;
}

.console-track-row {
    --track-accent: #72e8ff;
    padding: 8px 10px;
    border-bottom: 1px solid rgba(255, 255, 255, 0.04);
    box-sizing: border-box;
    display: flex;
    flex-direction: column;
    gap: 6px;
    cursor: pointer;
    overflow: hidden;
    background: linear-gradient(180deg, rgba(255, 255, 255, 0.01) 0%, rgba(255, 255, 255, 0) 100%);
}

.console-track-row.is-selected {
    background:
        linear-gradient(90deg, rgba(114, 232, 255, 0.16) 0%, transparent 100%),
        linear-gradient(180deg, rgba(255, 255, 255, 0.03) 0%, rgba(255, 255, 255, 0) 100%);
    box-shadow: inset 3px 0 0 var(--track-accent);
}

.console-track-row.is-muted {
    background:
        linear-gradient(90deg, rgba(255, 110, 120, 0.08) 0%, transparent 100%),
        linear-gradient(180deg, rgba(255, 255, 255, 0.03) 0%, rgba(255, 255, 255, 0) 100%);
}

.console-track-row.is-ghosted {
    background:
        linear-gradient(90deg, rgba(255, 255, 255, 0.04) 0%, transparent 100%),
        linear-gradient(180deg, rgba(255, 255, 255, 0.02) 0%, rgba(255, 255, 255, 0) 100%);
}

.console-track-row.is-record-armed {
    background:
        linear-gradient(90deg, rgba(255, 120, 120, 0.1) 0%, transparent 100%),
        linear-gradient(180deg, rgba(255, 255, 255, 0.03) 0%, rgba(255, 255, 255, 0) 100%);
}

.console-track-row.is-recording {
    background:
        linear-gradient(90deg, rgba(255, 120, 120, 0.18) 0%, transparent 100%),
        linear-gradient(180deg, rgba(255, 255, 255, 0.05) 0%, rgba(255, 255, 255, 0) 100%);
    box-shadow: inset 3px 0 0 rgba(255, 138, 138, 0.92);
}

.console-track-row-top,
.console-track-row-middle,
.console-track-meta-line {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 10px;
}

.console-track-row-top {
    align-items: flex-start;
}

.console-track-row-middle-compact {
    justify-content: flex-start;
}

.console-track-meta-line {
    justify-content: flex-start;
    flex-wrap: wrap;
    gap: 6px;
}

.console-track-row-copy {
    min-width: 0;
    flex: 1;
    display: flex;
    flex-direction: column;
    gap: 4px;
}

.console-track-row.is-muted .console-track-row-copy,
.console-track-row.is-muted .console-track-route-list,
.console-track-row.is-muted .console-track-state-pill {
    opacity: 0.62;
}

.console-track-row.is-ghosted .console-track-row-copy,
.console-track-row.is-ghosted .console-track-route-list,
.console-track-row.is-ghosted .console-track-state-pill {
    opacity: 0.76;
}

.console-track-name {
    font-family: 'Press Start 2P', monospace;
    font-size: 9px;
    line-height: 1.4;
    color: #f2fbff;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.console-track-role,
.console-track-state,
.console-track-route,
.console-inspector-subtitle,
.console-inspector-kv span,
.console-capability-chip {
    font-size: 11px;
    color: rgba(226, 241, 248, 0.7);
}

.console-track-state-pill,
.console-track-badge,
.console-inspector-pill {
    display: inline-flex;
    align-items: center;
    border-radius: 999px;
    padding: 3px 9px;
    background: rgba(255, 255, 255, 0.06);
    border: 1px solid rgba(114, 232, 255, 0.18);
    color: #f2fbff;
    font-size: 10px;
}

.console-track-state-pill {
    text-transform: uppercase;
    letter-spacing: 0.05em;
}

.console-track-actions {
    display: grid;
    grid-template-columns: repeat(3, 32px);
    gap: 6px;
    flex: 0 0 auto;
    align-self: flex-start;
}

.console-track-btn {
    min-width: 32px;
    height: 26px;
    border-radius: 7px;
    border: 1px solid rgba(114, 232, 255, 0.16);
    background: rgba(10, 20, 31, 0.9);
    color: rgba(226, 241, 248, 0.78);
    cursor: pointer;
    font-size: 10px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: 0;
}

.console-track-btn:hover:not(:disabled) {
    border-color: rgba(114, 232, 255, 0.46);
    box-shadow: 0 0 10px rgba(114, 232, 255, 0.12);
}

.console-track-btn-ai {
    border-color: rgba(255, 193, 92, 0.34);
    color: #ffe3a0;
    font-size: 9px;
    letter-spacing: 0.05em;
}

.console-track-btn-record {
    border-color: rgba(255, 120, 120, 0.34);
    color: #ffd8d8;
}

.console-track-btn-record.is-active {
    color: #fff7f7;
    border-color: rgba(255, 120, 120, 0.9);
    background: rgba(255, 120, 120, 0.2);
    box-shadow: 0 0 16px rgba(255, 112, 112, 0.2);
}

.console-track-btn-ai:hover:not(:disabled) {
    border-color: rgba(255, 193, 92, 0.72);
    box-shadow: 0 0 14px rgba(255, 170, 64, 0.18);
}

.console-track-btn:active:not(:disabled) {
    transform: translateY(1px);
    background: rgba(17, 36, 52, 0.96);
}

.console-track-btn.is-active {
    color: #ffffff;
    border-color: rgba(114, 232, 255, 0.68);
    background: rgba(114, 232, 255, 0.22);
    box-shadow: 0 0 14px rgba(114, 232, 255, 0.18);
}

.console-track-btn[data-track-action="mute"].is-active {
    border-color: rgba(255, 110, 120, 0.65);
    background: rgba(255, 110, 120, 0.18);
}

.console-track-btn[data-track-action="solo"].is-active {
    color: #1e1400;
    border-color: rgba(255, 229, 138, 0.96);
    background: linear-gradient(180deg, rgba(255, 223, 125, 0.92) 0%, rgba(255, 178, 59, 0.76) 100%);
    box-shadow: 0 0 18px rgba(255, 205, 97, 0.34);
}

.console-track-btn[data-track-action="editor"] {
    font-size: 9px;
    letter-spacing: 0.04em;
}

.console-track-btn[data-track-action="editor"].is-active {
    color: #f4fff8;
    border-color: rgba(134, 241, 167, 0.82);
    background: rgba(134, 241, 167, 0.24);
    box-shadow: 0 0 16px rgba(134, 241, 167, 0.22);
}

.console-track-btn-ai {
    min-width: 38px;
    padding: 0 8px;
}

.console-track-btn:disabled {
    opacity: 0.45;
    cursor: default;
}

.console-track-route-list {
    display: flex;
    flex-wrap: wrap;
    gap: 5px;
    pointer-events: none;
}

.console-track-route-chip {
    display: inline-flex;
    align-items: center;
    min-height: 20px;
    border-radius: 999px;
    border: 1px solid rgba(114, 232, 255, 0.14);
    background: rgba(7, 14, 22, 0.82);
    padding: 2px 7px;
    font-size: 10px;
    color: rgba(226, 241, 248, 0.78);
}

.console-timeline-viewport {
    flex: 1;
    min-width: 0;
    position: relative;
    overflow: hidden;
    background:
        linear-gradient(180deg, rgba(255, 255, 255, 0.02) 0%, rgba(255, 255, 255, 0) 100%),
        #070e15;
}

.console-grid-canvas,
.console-overlay-canvas {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
}

.console-inspector {
    width: 320px;
    min-width: 320px;
    max-width: 320px;
    border-left: 1px solid rgba(114, 232, 255, 0.16);
    background: linear-gradient(180deg, rgba(8, 18, 29, 0.98) 0%, rgba(7, 12, 20, 0.98) 100%);
    padding: 14px;
    box-sizing: border-box;
    overflow-y: auto;
}

.console-inspector-scrim {
    display: none;
    position: absolute;
    inset: 0;
    border: none;
    background: rgba(3, 8, 14, 0.58);
    opacity: 0;
    transition: opacity 180ms ease;
    z-index: 3;
}

.console-inspector-header,
.console-inspector-tabs,
.console-inspector-actions,
.console-capability-list {
    display: flex;
    align-items: center;
    gap: 10px;
}

.console-inspector-header {
    justify-content: space-between;
    margin-bottom: 12px;
}

.console-inspector-close {
    display: none;
    border: 1px solid rgba(114, 232, 255, 0.18);
    background: rgba(10, 20, 31, 0.88);
    color: rgba(226, 241, 248, 0.82);
    border-radius: 999px;
    padding: 6px 10px;
    font-size: 11px;
    cursor: pointer;
}

.console-inspector-title {
    font-family: 'Press Start 2P', monospace;
    font-size: 10px;
    line-height: 1.6;
    color: #f2fbff;
}

.console-inspector-tabs {
    margin-bottom: 12px;
}

.console-inspector-tab,
.console-inspector-action {
    border: 1px solid rgba(114, 232, 255, 0.18);
    background: rgba(10, 20, 31, 0.88);
    color: rgba(226, 241, 248, 0.82);
    border-radius: 8px;
    padding: 7px 12px;
    cursor: pointer;
    font-size: 12px;
}

.console-inspector-action:disabled {
    cursor: not-allowed;
    opacity: 0.45;
    box-shadow: none;
}

.console-inspector-tab.is-active {
    border-color: rgba(114, 232, 255, 0.56);
    color: #ffffff;
    box-shadow: 0 0 16px rgba(114, 232, 255, 0.12);
}

.console-inspector-content {
    display: flex;
    flex-direction: column;
    gap: 14px;
}

.console-inspector-section {
    display: flex;
    flex-direction: column;
    gap: 10px;
    padding: 12px;
    border-radius: 12px;
    border: 1px solid rgba(114, 232, 255, 0.12);
    background: rgba(255, 255, 255, 0.02);
}

.console-harmony-confirm {
    border-color: rgba(255, 193, 92, 0.28);
    background: linear-gradient(180deg, rgba(54, 32, 10, 0.34) 0%, rgba(24, 16, 9, 0.28) 100%);
}

.console-harmony-confirm.is-pending {
    border-color: rgba(255, 193, 92, 0.74);
    box-shadow: 0 0 0 1px rgba(255, 193, 92, 0.18), 0 0 28px rgba(255, 170, 64, 0.14);
}

.console-harmony-confirm-head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
}

.console-harmony-confirm-count {
    padding: 4px 8px;
    border-radius: 999px;
    background: rgba(255, 193, 92, 0.18);
    color: #ffe3a0;
    font-size: 10px;
    letter-spacing: 0.04em;
    text-transform: uppercase;
}

.console-harmony-confirm-btn {
    display: flex;
    width: 100%;
    justify-content: center;
    padding: 11px 12px;
    border-color: rgba(255, 193, 92, 0.32);
    background: linear-gradient(180deg, rgba(62, 36, 8, 0.92) 0%, rgba(39, 24, 7, 0.94) 100%);
    color: #fff6dc;
    font-weight: 700;
}

.console-harmony-confirm-btn.is-armed {
    border-color: rgba(255, 193, 92, 0.88);
    box-shadow: 0 0 24px rgba(255, 170, 64, 0.18);
}

.console-ai-regen-section {
    border-color: rgba(255, 193, 92, 0.28);
    background: linear-gradient(180deg, rgba(42, 28, 9, 0.34) 0%, rgba(19, 14, 9, 0.28) 100%);
}

.console-ai-regen-actions {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
}

.console-ai-primary-action {
    border-color: rgba(255, 193, 92, 0.44);
    background: linear-gradient(180deg, rgba(76, 48, 13, 0.92) 0%, rgba(51, 31, 9, 0.94) 100%);
    color: #fff3cf;
    font-weight: 700;
}

.console-ai-restore-list {
    display: flex;
    flex-direction: column;
    gap: 8px;
}

.console-ai-restore-item {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 10px;
    padding: 10px 12px;
    border-radius: 10px;
    border: 1px solid rgba(114, 232, 255, 0.1);
    background: rgba(255, 255, 255, 0.025);
}

.console-ai-restore-item.is-track-match {
    border-color: rgba(255, 193, 92, 0.34);
    box-shadow: 0 0 0 1px rgba(255, 193, 92, 0.08);
}

.console-ai-restore-copy {
    display: flex;
    flex-direction: column;
    gap: 4px;
    min-width: 0;
}

.console-ai-restore-title {
    font-size: 12px;
    color: #ffffff;
    font-weight: 600;
}

.console-ai-restore-meta {
    font-size: 11px;
    color: rgba(226, 241, 248, 0.62);
    line-height: 1.45;
}

.console-ai-modal {
    position: absolute;
    inset: 0;
    z-index: 70;
    display: grid;
    place-items: center;
}

.console-ai-modal[hidden] {
    display: none;
}

.console-ai-modal-backdrop {
    position: absolute;
    inset: 0;
    border: 0;
    background: rgba(2, 8, 18, 0.74);
    backdrop-filter: blur(8px);
    cursor: pointer;
}

.console-ai-modal-dialog {
    position: relative;
    z-index: 1;
    width: min(680px, calc(100% - 32px));
    max-height: calc(100% - 32px);
    overflow: auto;
    display: flex;
    flex-direction: column;
    gap: 16px;
    padding: 18px;
    border-radius: 18px;
    border: 1px solid rgba(255, 193, 92, 0.28);
    background: linear-gradient(180deg, rgba(21, 14, 8, 0.96) 0%, rgba(8, 12, 20, 0.98) 100%);
    box-shadow: 0 24px 70px rgba(0, 0, 0, 0.48), 0 0 0 1px rgba(255, 193, 92, 0.1);
}

.console-ai-modal-header,
.console-ai-modal-restore-head,
.console-ai-modal-footer {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 12px;
}

.console-ai-modal-copy {
    display: flex;
    flex-direction: column;
    gap: 6px;
    min-width: 0;
}

.console-ai-modal-title {
    font-size: 22px;
    font-weight: 700;
    color: #fff5d5;
    line-height: 1.1;
}

.console-ai-modal-subtitle {
    font-size: 12px;
    color: rgba(226, 241, 248, 0.68);
}

.console-ai-modal-close {
    appearance: none;
    border: 1px solid rgba(255, 255, 255, 0.12);
    background: rgba(255, 255, 255, 0.04);
    color: rgba(255, 255, 255, 0.82);
    width: 34px;
    height: 34px;
    border-radius: 999px;
    font-size: 20px;
    line-height: 1;
    cursor: pointer;
}

.console-ai-modal-body {
    display: flex;
    flex-direction: column;
    gap: 14px;
}

.console-ai-modal-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 12px;
}

.console-ai-modal-mode-help {
    min-height: 38px;
    padding: 10px 12px;
    border-radius: 12px;
    border: 1px solid rgba(255, 193, 92, 0.16);
    background: rgba(255, 193, 92, 0.06);
}

.console-ai-modal-advanced {
    border: 1px solid rgba(114, 232, 255, 0.12);
    border-radius: 12px;
    background: rgba(255, 255, 255, 0.025);
    padding: 10px 12px;
}

.console-ai-modal-advanced summary {
    cursor: pointer;
    color: rgba(226, 241, 248, 0.84);
    font-size: 12px;
    font-weight: 600;
    list-style: none;
}

.console-ai-modal-advanced summary::-webkit-details-marker {
    display: none;
}

.console-ai-modal-advanced[open] summary {
    margin-bottom: 10px;
}

.console-ai-modal textarea,
.console-ai-modal select {
    width: 100%;
}

.console-ai-modal textarea {
    resize: vertical;
    min-height: 82px;
    padding: 10px 12px;
    border-radius: 10px;
    border: 1px solid rgba(114, 232, 255, 0.14);
    background: rgba(255, 255, 255, 0.04);
    color: #f2fbff;
}

.console-ai-modal-footer {
    justify-content: flex-end;
}

@media (max-width: 720px) {
    .console-ai-modal-dialog {
        width: calc(100% - 20px);
        max-height: calc(100% - 20px);
        padding: 14px;
    }

    .console-ai-modal-grid {
        grid-template-columns: 1fr;
    }

    .console-ai-modal-restore-head,
    .console-ai-modal-footer {
        flex-direction: column;
    }

    .console-ai-modal-footer .console-inspector-action,
    .console-ai-modal-restore-head .console-inspector-action {
        width: 100%;
    }
}

.console-inspector-section-title {
    font-family: 'Press Start 2P', monospace;
    font-size: 8px;
    letter-spacing: 0.08em;
    color: rgba(114, 232, 255, 0.74);
    text-transform: uppercase;
}

.console-inspector-kv {
    display: flex;
    justify-content: space-between;
    gap: 16px;
}

.console-inspector-kv strong {
    color: #ffffff;
    font-size: 12px;
    text-align: right;
}

.console-field {
    display: flex;
    flex-direction: column;
    gap: 6px;
}

.console-field span {
    font-size: 11px;
    color: rgba(226, 241, 248, 0.72);
}

.console-field-help {
    font-size: 11px;
    line-height: 1.45;
    color: rgba(226, 241, 248, 0.62);
}

.console-field input,
.console-field select {
    border-radius: 8px;
    border: 1px solid rgba(114, 232, 255, 0.18);
    background: rgba(7, 14, 22, 0.96);
    color: #f2fbff;
    padding: 8px 10px;
}

.console-capability-list {
    flex-wrap: wrap;
}

.console-capability-chip {
    border-radius: 999px;
    border: 1px solid rgba(255, 255, 255, 0.08);
    padding: 4px 8px;
}

.console-capability-chip.is-enabled {
    border-color: rgba(114, 232, 255, 0.34);
    color: #f2fbff;
}

.console-empty-state {
    padding: 16px;
    border-radius: 10px;
    border: 1px dashed rgba(114, 232, 255, 0.14);
    color: rgba(226, 241, 248, 0.6);
    font-size: 12px;
    background: rgba(255, 255, 255, 0.02);
}

.console-shell[data-mobile-arrange="true"] .console-toolbar {
    gap: 0;
    padding: 8px 12px;
}

.console-shell[data-mobile-arrange="true"] .console-main {
    flex-direction: row;
    overscroll-behavior: none;
}

.console-shell[data-mobile-arrange="true"] .console-toolbar-group:not(.console-toolbar-status),
.console-shell[data-mobile-arrange="true"] .console-toolbar-sliders,
.console-shell[data-mobile-arrange="true"] .console-toolbar-divider,
.console-shell[data-mobile-arrange="true"] .console-toolbar-spacer,
.console-shell[data-mobile-arrange="true"] .console-toolbar-status {
    display: none;
}

.console-shell[data-mobile-arrange="true"] .console-mobile-compact {
    display: flex;
}

.console-shell[data-mobile-arrange="true"] .console-track-column {
    width: 176px;
    min-width: 176px;
    max-width: 176px;
}

.console-shell[data-mobile-arrange="true"] .console-timeline-viewport,
.console-shell[data-mobile-arrange="true"] .console-grid-canvas,
.console-shell[data-mobile-arrange="true"] .console-overlay-canvas {
    touch-action: none;
    overscroll-behavior: none;
}

.console-shell[data-mobile-arrange="true"] .console-track-column-ruler {
    padding: 10px 12px;
}

.console-shell[data-mobile-arrange="true"] .console-track-row {
    padding: 8px;
}

.console-shell[data-mobile-arrange="true"] .console-track-actions {
    grid-template-columns: repeat(3, 30px);
}

.console-shell[data-mobile-arrange="true"] .console-track-row-middle,
.console-shell[data-mobile-arrange="true"] .console-track-route-list {
    display: none;
}

.console-shell[data-mobile-arrange="true"] .console-inspector-scrim {
    display: block;
    pointer-events: none;
}

.console-shell[data-mobile-arrange="true"][data-mobile-inspector-open="true"] .console-inspector-scrim {
    opacity: 1;
    pointer-events: auto;
}

.console-shell[data-mobile-arrange="true"] .console-inspector {
    position: absolute;
    left: 10px;
    right: 10px;
    bottom: 10px;
    width: auto;
    min-width: 0;
    max-width: none;
    max-height: min(58%, 380px);
    border-left: none;
    border-top: 1px solid rgba(114, 232, 255, 0.22);
    border-radius: 18px;
    transform: translateY(calc(100% + 24px));
    transition: transform 220ms ease, opacity 220ms ease;
    opacity: 0;
    pointer-events: none;
    z-index: 4;
    box-shadow: 0 -12px 32px rgba(0, 0, 0, 0.28);
}

.console-shell[data-mobile-arrange="true"][data-mobile-inspector-open="true"] .console-inspector {
    transform: translateY(0);
    opacity: 1;
    pointer-events: auto;
}

.console-shell[data-mobile-arrange="true"] .console-inspector-close {
    display: inline-flex;
    align-items: center;
    justify-content: center;
}

.console-shell[data-mobile-arrange="true"] .console-inspector-header {
    align-items: flex-start;
}

@media (max-width: 1180px) {
    .console-main {
        flex-direction: column;
    }

    .console-track-column,
    .console-inspector {
        width: 100%;
        min-width: 0;
        max-width: none;
    }

    .console-track-column {
        max-height: 280px;
    }

    .console-inspector {
        border-left: none;
        border-top: 1px solid rgba(114, 232, 255, 0.16);
    }
}

/* ============================================= */
/* Vocal Editor Integration (from vocal_editor_styles.css) */
/* ============================================= */

/* --- Vocal Editor (Radar Chart UI) --- */
.vocal-editor-layout {
    display: flex;
    flex-direction: column;
    flex: 1;
    gap: 10px;
    padding: 10px;
    background: #080c14;
    color: #fff;
    min-height: 0;
    /* Flex fix */
    overflow-y: auto;
}

/* FIX: Remove restrictive global container styles to allow proper Flexbox behavior */
#vocal-editor-mount {
    flex: 1;
    min-height: 0;
    display: flex;
    flex-direction: column;
    overflow: hidden;
}

.ve-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-bottom: 5px;
    padding-bottom: 5px;
    border-bottom: 1px solid #333;
}

.ve-header h2 {
    font-size: 1.0rem;
    margin: 0;
    color: #fff;
    border-left: 3px solid #f0f;
    padding-left: 8px;
}

.ve-radar-container-large {
    position: relative;
    width: 100%;
    flex: 1;
    min-height: 0;
    /* Flexbox無限増殖を食い止める必須設定 */
    background: rgba(255, 255, 255, 0.02);
    border-radius: 4px;
    padding: 5px;
}

.ve-sliders {
    display: flex;
    flex-wrap: wrap;
    /* 横並び可能に */
    gap: 10px;
    padding: 10px;
    background: #111;
    border-radius: 4px;
    border: 1px solid #333;
}

.ve-slider-row {
    display: flex;
    align-items: center;
    gap: 5px;
    flex: 1 1 300px;
    /* レスポンシブ */
}

.ve-slider-label {
    width: 70px;
    font-size: 0.8rem;
    color: #0ff;
    font-weight: bold;
}

.ve-range {
    flex: 1;
    cursor: pointer;
    height: 4px;
}

.ve-slider-val {
    width: 30px;
    text-align: right;
    font-family: monospace;
    color: #fff;
    font-size: 0.8rem;
}

/* ============================================= */
/* Vocal Editor Final Override (2026-03 stable)  */
/* ============================================= */

.vocal-editor-host {
    width: 100%;
    height: 100%;
    min-height: 0;
    display: flex;
    flex-direction: column;
    overflow: hidden;
}

#vocal-editor-mount {
    width: 100%;
    height: 100%;
    min-height: 0;
    display: flex;
    flex-direction: column;
    overflow: hidden;
}

.vocal-editor-layout {
    display: flex !important;
    flex-direction: column !important;
    width: 100% !important;
    height: 100% !important;
    min-height: 0 !important;
    box-sizing: border-box;
    gap: 10px;
    padding: 10px;
    background: #080c14;
    color: #fff;
    overflow: hidden !important;
    border: 1px solid rgba(0, 255, 255, 0.2);
    border-radius: 8px;
}

.ve-main-content {
    width: 100%;
    flex: 1 1 auto;
    min-height: 0;
    display: flex;
    flex-direction: column;
    overflow: hidden;
}

.ve-header {
    flex: 0 0 auto;
}

.ve-radar-container-large {
    position: relative;
    width: 100%;
    flex: 0 0 auto !important;
    min-height: 260px !important;
    height: clamp(260px, 38vh, 420px);
    padding: 8px;
    box-sizing: border-box;
    overflow: hidden !important;
    background: rgba(255, 255, 255, 0.02);
    border: 1px solid #333;
    border-radius: 6px;
}

#ve-radar-chart {
    display: block;
    width: 100% !important;
    height: 100% !important;
}

.ve-sliders {
    display: flex;
    flex-wrap: wrap;
    flex: 0 0 auto !important;
    min-height: 120px;
    max-height: none !important;
    overflow: visible !important;
    gap: 10px;
    padding: 10px;
    box-sizing: border-box;
    background: #111;
    border: 1px solid #333;
    border-radius: 6px;
}

.ve-sliders.ve-sliders-ai-bias {
    border-color: rgba(255, 208, 0, 0.45);
    box-shadow: inset 0 0 0 1px rgba(255, 208, 0, 0.08);
}

.ve-slider-row {
    display: flex;
    align-items: center;
    gap: 8px;
    flex: 1 1 320px;
    min-width: 280px;
}

.ve-slider-label {
    width: 72px;
    flex: 0 0 72px;
    font-size: 0.8rem;
    color: #0ff;
    font-weight: bold;
}

.ve-slider-min,
.ve-slider-max {
    color: #8aa;
    font-size: 0.75rem;
    white-space: nowrap;
}

.ve-range {
    flex: 1 1 auto;
    min-width: 120px;
    cursor: pointer;
}

.ve-slider-val {
    width: 42px;
    flex: 0 0 42px;
    text-align: right;
    font-family: monospace;
    color: #fff;
    font-size: 0.8rem;
}

.ve-footer {
    flex: 0 0 auto;
    min-height: 60px;
    height: auto;
    display: flex;
    justify-content: space-between;
    align-items: flex-start;
    gap: 12px;
    flex-wrap: wrap;
    background: rgba(20, 20, 30, 0.5);
    padding: 10px;
    border-top: 1px solid #333;
    border-radius: 0 0 8px 8px;
}

.preset-selector {
    display: flex;
    align-items: center;
    gap: 10px;
    flex-wrap: wrap;
}

.ve-ai-assist {
    flex: 1 1 360px;
    min-width: 320px;
    display: flex;
    flex-direction: column;
    gap: 8px;
    padding: 10px 12px;
    background: linear-gradient(180deg, rgba(16, 28, 48, 0.9), rgba(9, 14, 24, 0.95));
    border: 1px solid rgba(72, 132, 214, 0.35);
    border-radius: 6px;
}

.ve-persona-controls {
    flex: 1 1 280px;
    min-width: 240px;
    display: flex;
    flex-direction: column;
    gap: 8px;
    padding: 10px 12px;
    background: linear-gradient(180deg, rgba(28, 20, 42, 0.88), rgba(12, 11, 24, 0.94));
    border: 1px solid rgba(183, 120, 235, 0.24);
    border-radius: 6px;
}

.ve-persona-mods {
    display: flex;
    gap: 8px;
    flex-wrap: wrap;
}

.ve-persona-controls .retro-select,
.ve-persona-mods .retro-select {
    flex: 1 1 160px;
    min-width: 150px;
}

.ve-ai-row {
    display: flex;
    align-items: center;
    gap: 10px;
    flex-wrap: wrap;
}

.ve-ai-row label {
    color: #8fd3ff;
    font-size: 0.82rem;
    font-weight: bold;
}

.ve-ai-request {
    width: 100%;
    min-height: 72px;
    resize: vertical;
    padding: 9px 10px;
    box-sizing: border-box;
    border-radius: 6px;
    border: 1px solid rgba(94, 136, 187, 0.45);
    background: rgba(5, 10, 16, 0.92);
    color: #eef6ff;
    font-family: inherit;
    font-size: 0.82rem;
    line-height: 1.45;
}

.ve-ai-request-secondary {
    min-height: 64px;
}

.ve-ai-request:disabled {
    opacity: 0.5;
    cursor: not-allowed;
}

.ve-ai-status {
    margin: 0;
    color: #9fb7d4;
    font-size: 0.76rem;
    line-height: 1.45;
}

.ve-actions {
    display: flex;
    align-items: center;
    gap: 10px;
    flex-wrap: wrap;
    flex-shrink: 0;
}

@media (max-width: 768px) {
    .ve-radar-container-large {
        height: 280px;
    }

    .ve-slider-row {
        min-width: 100%;
    }

    .ve-ai-assist {
        min-width: 100%;
    }

    .ve-persona-controls {
        min-width: 100%;
    }
}

/*
 * レシピボタン削除に伴う調整
 * editor-footerを非表示にし、エディター領域を最大化する
 */
.editor-footer {
    display: none !important;
}

.editor-panel {
    flex: 1;
    min-height: 0;
}
