/* ============================================================================
   Serial Dev Tools Page
   ============================================================================ */

/* Override for sdev page */
.sdev-dashboard {
    display: flex;
    flex-direction: column;
    height: 100vh;
    padding: 1rem;
    gap: 1rem;
    max-width: 1800px;
    margin: 0 auto;
}

.sdev-dashboard .header {
    flex-shrink: 0;
}

.sdev-content {
    display: flex;
    gap: 1rem;
    flex: 1;
    min-height: 0;
    overflow: hidden;
}

.sdev-column {
    flex: 1;
    display: flex;
    flex-direction: column;
    gap: 1rem;
    min-width: 0;
    overflow: hidden;
}

/* ============================================================================
   Serial Connection
   ============================================================================ */

.serial-panel {
    flex-shrink: 0;
}

.serial-status {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    padding: 0.5rem 0.75rem;
    background: var(--card-hover);
    border-radius: 8px;
    font-size: 0.85rem;
}

.serial-status .status-dot {
    width: 8px;
    height: 8px;
    border-radius: 50%;
    background: var(--text-muted);
}

.serial-status .status-dot.connected {
    background: var(--accent-green);
    box-shadow: 0 0 8px var(--accent-green);
}

.firmware-panel .panel-hint {
    font-size: 0.75rem;
    color: var(--accent-orange);
    margin: 0.75rem 0 1rem 0;
    padding: 0.5rem 0.75rem;
    background: rgba(254, 202, 87, 0.1);
    border-radius: 6px;
    border-left: 3px solid var(--accent-orange);
}

/* ============================================================================
   Robot Info Panel
   ============================================================================ */

.info-panel {
    flex-shrink: 0;
}

.info-panel h2 {
    display: flex;
    align-items: center;
    gap: 0.5rem;
}

.info-panel h2 .btn-small {
    margin-left: auto;
    font-size: 0.7rem;
    padding: 0.25rem 0.5rem;
}

.info-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 0.75rem;
    margin-bottom: 1rem;
}

.info-item {
    background: var(--card-hover);
    border-radius: 8px;
    padding: 0.75rem;
}

.info-item.full-width {
    grid-column: span 2;
}

.info-item label {
    display: block;
    font-size: 0.7rem;
    color: var(--text-muted);
    text-transform: uppercase;
    letter-spacing: 0.5px;
    margin-bottom: 0.25rem;
}

.info-item .value {
    font-family: 'Consolas', 'Monaco', 'Ubuntu Mono', 'Liberation Mono', 'DejaVu Sans Mono', 'Courier New', monospace;
    font-size: 0.95rem;
    font-weight: 600;
    color: var(--accent-blue);
}

.info-item .value.ble-name {
    color: var(--accent-purple);
}

.name-change {
    padding-top: 1rem;
    border-top: 1px solid var(--card-border);
}

.name-change > label {
    display: block;
    font-size: 0.8rem;
    color: var(--text-secondary);
    margin-bottom: 0.5rem;
}

.name-input-row {
    display: flex;
    gap: 0.5rem;
}

.name-input-row input {
    flex: 1;
}

.name-preview {
    font-size: 0.8rem;
    color: var(--text-muted);
    margin-top: 0.5rem;
}

.name-preview span {
    color: var(--accent-purple);
    font-family: 'Consolas', 'Monaco', 'Ubuntu Mono', 'Liberation Mono', 'DejaVu Sans Mono', 'Courier New', monospace;
    font-weight: 500;
}

.name-note {
    font-size: 0.75rem;
    color: var(--text-muted);
    margin: 0.5rem 0 0 0;
    font-style: italic;
}

/* ============================================================================
   Firmware Update Panel
   ============================================================================ */

.firmware-panel {
    flex-shrink: 0;
}

.firmware-controls {
    display: flex;
    flex-direction: column;
    gap: 0.75rem;
}

.firmware-row {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 0.75rem;
}

.firmware-field {
    display: flex;
    flex-direction: column;
    gap: 0.25rem;
}

.firmware-field label {
    font-size: 0.7rem;
    color: var(--text-muted);
    text-transform: uppercase;
    letter-spacing: 0.5px;
}

.firmware-field input,
.firmware-field select {
    padding: 0.5rem 0.75rem;
    background: var(--card-hover);
    border: 1px solid var(--card-border);
    border-radius: 6px;
    color: var(--text-primary);
    font-family: 'Consolas', 'Monaco', 'Ubuntu Mono', 'Liberation Mono', 'DejaVu Sans Mono', 'Courier New', monospace;
    font-size: 0.85rem;
}

.firmware-field input[readonly] {
    opacity: 0.7;
    cursor: not-allowed;
}

.firmware-field select {
    cursor: pointer;
}

.btn-warning {
    background: linear-gradient(135deg, var(--accent-orange), #f59e0b);
    color: #000;
    font-weight: 600;
}

.btn-warning:hover:not(:disabled) {
    box-shadow: 0 5px 20px rgba(254, 202, 87, 0.4);
    transform: translateY(-1px);
}

.btn-warning:disabled {
    opacity: 0.6;
    cursor: not-allowed;
}

.btn-full {
    width: 100%;
}

.firmware-select-row {
    display: flex;
    flex-direction: column;
    gap: 0.35rem;
}

.firmware-select-row label {
    font-size: 0.75rem;
    color: var(--text-muted);
    text-transform: uppercase;
    letter-spacing: 0.5px;
}

.firmware-select-row select {
    padding: 0.6rem 0.75rem;
    background: var(--card-hover);
    border: 1px solid var(--card-border);
    border-radius: 8px;
    color: var(--text-primary);
    font-size: 0.9rem;
    font-weight: 500;
    cursor: pointer;
    transition: border-color 0.2s, box-shadow 0.2s;
}

.firmware-select-row select:hover {
    border-color: var(--accent-blue);
}

.firmware-select-row select:focus {
    outline: none;
    border-color: var(--accent-blue);
    box-shadow: 0 0 0 3px rgba(77, 171, 247, 0.2);
}

.firmware-progress {
    display: flex;
    align-items: center;
    gap: 0.75rem;
}

.firmware-progress progress {
    flex: 1;
    height: 20px;
    border-radius: 10px;
    overflow: hidden;
    background: var(--card-hover);
    border: none;
}

.firmware-progress progress::-webkit-progress-bar {
    background: var(--card-hover);
    border-radius: 10px;
}

.firmware-progress progress::-webkit-progress-value {
    background: linear-gradient(90deg, var(--accent-green), #10b981);
    border-radius: 10px;
    transition: width 0.2s ease;
}

/* Firefox */
.firmware-progress progress::-moz-progress-bar {
    background: linear-gradient(90deg, var(--accent-green), #10b981);
    border-radius: 10px;
}

/* Firefox progress background */
.firmware-progress progress {
    -moz-appearance: none;
    appearance: none;
}

#flashProgressText {
    font-family: 'Consolas', 'Monaco', 'Ubuntu Mono', 'Liberation Mono', 'DejaVu Sans Mono', 'Courier New', monospace;
    font-size: 0.85rem;
    font-weight: 600;
    color: var(--accent-green);
    min-width: 3.5rem;
    text-align: right;
}

.firmware-log-container {
    margin-top: 0.75rem;
}

.firmware-log-container > label {
    display: block;
    font-size: 0.7rem;
    color: var(--text-muted);
    text-transform: uppercase;
    letter-spacing: 0.5px;
    margin-bottom: 0.25rem;
}

#flashLog {
    background: var(--bg-primary);
    border: 1px solid var(--card-border);
    border-radius: 8px;
    padding: 0.75rem;
    font-family: 'Consolas', 'Monaco', 'Ubuntu Mono', 'Liberation Mono', 'DejaVu Sans Mono', 'Courier New', monospace;
    font-size: 0.75rem;
    line-height: 1.4;
    color: var(--text-secondary);
    max-height: 150px;
    overflow-y: auto;
    white-space: pre-wrap;
    word-break: break-word;
    margin: 0;
}

/* ============================================================================
   Instructions Panel
   ============================================================================ */

.instructions-panel {
    flex: 1;
    overflow-y: auto;
}

.instructions-content {
    font-size: 0.85rem;
    color: var(--text-secondary);
    line-height: 1.6;
}

.instructions-content h3 {
    font-size: 0.9rem;
    color: var(--text-primary);
    margin: 1rem 0 0.5rem 0;
}

.instructions-content h3:first-child {
    margin-top: 0;
}

.instructions-content ol {
    margin: 0;
    padding-left: 1.25rem;
}

.instructions-content li {
    margin-bottom: 0.25rem;
}

/* ============================================================================
   Log Panel
   ============================================================================ */

.sdev-column .log-panel {
    flex: 1;
    min-height: 200px;
}

/* ============================================================================
   Navigation Button Variants
   ============================================================================ */

.nav-btn-ble {
    background: linear-gradient(135deg, var(--accent-blue), var(--accent-purple));
}

.nav-btn-ble:hover {
    box-shadow: 0 5px 20px rgba(77, 171, 247, 0.4);
}

.nav-btn-serial {
    background: linear-gradient(135deg, var(--accent-orange), var(--accent-red));
}

.nav-btn-serial:hover {
    box-shadow: 0 5px 20px rgba(254, 202, 87, 0.4);
}

.nav-btn-cmap {
    background: linear-gradient(135deg, var(--accent-green), #10b981);
}

.nav-btn-cmap:hover {
    box-shadow: 0 5px 20px rgba(38, 222, 129, 0.4);
}

.nav-btn-active {
    box-shadow: 0 0 0 2px var(--text-primary);
}

/* ============================================================================
   Light Theme Overrides
   ============================================================================ */

[data-theme="light"] .firmware-panel .panel-hint {
    background: rgba(192, 138, 69, 0.12);
    border-left-color: var(--accent-orange);
    color: #6a4d15;
}

[data-theme="light"] .btn-warning {
    background: linear-gradient(145deg, #c08a45, #cc9a58);
    color: #fff;
    box-shadow: 0 2px 8px rgba(192, 138, 69, 0.25);
}

[data-theme="light"] .btn-warning:hover:not(:disabled) {
    background: linear-gradient(145deg, #b07a35, #c08a45);
    box-shadow: 0 3px 14px rgba(192, 138, 69, 0.35);
}

[data-theme="light"] .firmware-progress progress {
    background: rgba(248, 246, 242, 0.95);
    border: 1px solid rgba(140, 125, 105, 0.15);
}

[data-theme="light"] .firmware-progress progress::-webkit-progress-bar {
    background: rgba(248, 246, 242, 0.95);
}

[data-theme="light"] .firmware-progress progress::-webkit-progress-value {
    background: linear-gradient(90deg, #4a9964, #5aa875);
}

[data-theme="light"] .firmware-progress progress::-moz-progress-bar {
    background: linear-gradient(90deg, #4a9964, #5aa875);
}

[data-theme="light"] .nav-btn-ble {
    background: linear-gradient(145deg, #5089b5, #6098c2);
    color: #fff;
}

[data-theme="light"] .nav-btn-ble:hover {
    box-shadow: 0 3px 14px rgba(80, 137, 181, 0.3);
}

[data-theme="light"] .nav-btn-serial {
    background: linear-gradient(145deg, #c08a45, #cc9a58);
    color: #fff;
}

[data-theme="light"] .nav-btn-serial:hover {
    box-shadow: 0 3px 14px rgba(192, 138, 69, 0.3);
}

[data-theme="light"] .nav-btn-cmap {
    background: linear-gradient(145deg, #4a9964, #5aa875);
    color: #fff;
}

[data-theme="light"] .nav-btn-cmap:hover {
    box-shadow: 0 3px 14px rgba(74, 153, 100, 0.3);
}

[data-theme="light"] #flashLog {
    background: rgba(248, 246, 242, 0.98);
    border-color: rgba(140, 125, 105, 0.18);
}

[data-theme="light"] #flashProgressText {
    color: #2d7045;
}

[data-theme="light"] .firmware-field input,
[data-theme="light"] .firmware-field select {
    background: rgba(255, 255, 255, 0.95);
    border-color: rgba(140, 125, 105, 0.28);
}

[data-theme="light"] .firmware-select-row select {
    background: rgba(255, 255, 255, 0.95);
    border-color: rgba(140, 125, 105, 0.28);
}

[data-theme="light"] .firmware-select-row select:hover {
    border-color: var(--accent-blue);
}

[data-theme="light"] .firmware-select-row select:focus {
    box-shadow: 0 0 0 3px rgba(80, 137, 181, 0.2);
}

[data-theme="light"] .info-grid .info-item {
    background: rgba(255, 255, 255, 0.85);
    border: 1px solid rgba(140, 125, 105, 0.1);
}

[data-theme="light"] .instructions-panel {
    background: rgba(255, 255, 255, 0.95);
    border-color: rgba(140, 125, 105, 0.2);
}

[data-theme="light"] .instructions-content h3 {
    color: var(--text-primary);
}

[data-theme="light"] .serial-panel,
[data-theme="light"] .info-panel,
[data-theme="light"] .firmware-panel {
    background: rgba(255, 255, 255, 0.95);
}

/* ============================================================================
   Responsive
   ============================================================================ */

@media (max-width: 900px) {
    .sdev-content {
        flex-direction: column;
    }
    
    .sdev-column {
        flex: none;
    }
}
