/* FPV CamBuddy dark theme for the hosted FreeCLinker configurator. */
:root{color-scheme:dark}body{background:#090d14!important;color:#e6edf7!important}header{background:#0d131d!important;border-bottom-color:#253247!important}.brand{color:#b78cff!important}.nav-link{color:#b78cff!important}.hdr-label{color:#9aa8bb!important}select,button,.num-wrap input[type=number],.tpl-input,input[type=number]{background:#111a27!important;color:#e6edf7!important;border-color:#4c3d67!important}button:hover:not(:disabled){background:#201a31!important}button.primary{background:#7c3aed!important;border-color:#9b6cff!important;color:#fff!important}button.danger{background:#30171b!important;border-color:#7f3038!important;color:#ff7b86!important}.tab-bar,.input-bar{background:#0d131d!important;border-color:#302642!important}.tab-bar .tab{background:transparent!important;color:#9486a8!important;border:0!important;border-bottom:2px solid transparent!important;border-radius:0!important;box-shadow:none!important;font:inherit!important;font-size:13px!important;padding:8px 16px!important;margin:0 0 -1px!important}.tab-bar .tab:hover:not(:disabled),.tab-bar .tab:focus,.tab-bar .tab:active{background:transparent!important;color:#eee7f8!important;outline:none!important}.tab-bar .tab.active{background:transparent!important;color:#c29cff!important;border-bottom-color:#8b5cf6!important}.config-card,.cam-table{background:#0e151f!important;border-color:#34294a!important}.card-header,.card-footer{border-color:#34294a!important}.card-header h2{color:#a89bb9!important}.cfg-field{border-color:#281f39!important}.cfg-field-name{color:#f3edfb!important}.cfg-field-desc,.token-ref,.num-unit,.cam-empty,.wifi-scan-msg{color:#a397b5!important}.token-ref code{color:#c29cff!important}.track{background:#433750!important}.thumb{background:#eee7f8!important}.switch input:checked~.track{background:#7c3aed!important}.cam-table th{background:#111a27!important;color:#a89bb9!important;border-color:#34294a!important}.cam-table td{border-color:#281f39!important}.cam-table tr:hover td{background:#191426!important}.cam-badge{background:#2d1d49!important;color:#c29cff!important}.cam-badge.last{background:#123527!important;color:#65d69b!important}.cam-badge.sel{background:#3b3114!important;color:#f0cb62!important}.wifi-results{background:#111a27!important;border-color:#4c3d67!important}.wifi-net{border-color:#281f39!important}.wifi-net:hover{background:#21172f!important}.wifi-net-rssi,.wifi-net-lock{color:#91869e!important}#terminal{background:#070a0f!important;color:#dcd4e7!important}.line.sys{color:#8d819b!important}.line.cmd,#cmdInput{color:#c29cff!important}#cmdInput{caret-color:#c29cff!important}#cmdInput::placeholder{color:#645773!important}#noSerial{background:#090d14f2!important;color:#ff7b86!important}#statusText{color:#998da6!important}.dot{background:#554663!important}.saved-msg,#statusText.connected{color:#45d483!important}

/* FPSteVe V1 uses one explicit top-level READ and SAVE/APPLY transaction.
   Hide the original per-card Apply footers so there is only one user-facing save path. */
#panel-config .card-footer{display:none!important}
#fpsApplyAll{display:none!important}

/* Custom Message rows stay compact until that individual destination is enabled. */
.fps-section:has(#fpsMsg1:not(:checked)) .fps-section-desc,
.fps-section:has(#fpsMsg1:not(:checked)) .fps-section-body,
.fps-section:has(#fpsMsg2:not(:checked)) .fps-section-desc,
.fps-section:has(#fpsMsg2:not(:checked)) .fps-section-body,
.fps-section:has(#fpsMsg3:not(:checked)) .fps-section-desc,
.fps-section:has(#fpsMsg3:not(:checked)) .fps-section-body,
.fps-section:has(#fpsMsg4:not(:checked)) .fps-section-desc,
.fps-section:has(#fpsMsg4:not(:checked)) .fps-section-body{display:none!important}

/* Secondary GoPro connection guidance: intentionally quieter than a setting row. */
#fpsGoProConnectionNote{padding:6px 26px 12px!important;border:0!important;background:transparent!important;color:#8f849e!important;font-size:11px!important;line-height:1.45!important;font-weight:400!important}

/* Stage 3 integrated OSD preview alignment */
#fpsOsdWorkspace{width:100%!important;max-width:460px!important;margin-left:auto!important;margin-right:auto!important;transition:max-width .42s cubic-bezier(.22,.8,.24,1),grid-template-columns .42s cubic-bezier(.22,.8,.24,1),gap .42s ease!important}
#fpsOsdWorkspace>.config-card{width:100%!important;max-width:none!important}
#fpsOsdWorkspace.fps-preview-open{max-width:1120px!important;grid-template-columns:minmax(0,1fr) minmax(390px,.82fr)!important;gap:18px!important}
#fpsOsdWorkspace.fps-preview-open>.config-card:first-child{transform:none!important}
#fpsIntegratedPreview{width:100%!important;max-width:none!important;align-self:start!important}
@media(max-width:1050px){#fpsOsdWorkspace,#fpsOsdWorkspace.fps-preview-open{max-width:460px!important;grid-template-columns:1fr!important}#fpsOsdWorkspace.fps-preview-open{gap:18px!important}#fpsIntegratedPreview{width:100%!important}}

@media(max-width:760px){body{overflow-x:hidden!important}header{gap:8px!important;padding:8px 10px!important;flex-wrap:wrap!important;min-width:0!important;max-width:100vw!important}.brand{flex:1 0 100%!important;margin-right:0!important}.tab-bar{padding:0!important;width:100%!important;max-width:100vw!important;overflow:hidden!important}.tab-bar .tab{flex:1 1 25%!important;width:25%!important;min-width:0!important;padding:8px 2px!important;text-align:center!important;white-space:nowrap!important;font-size:11px!important}.panels,#panel-config{width:100%!important;max-width:100vw!important}.config-card{max-width:100%!important}.cfg-field{min-width:0!important}.cfg-field>div{min-width:0!important}select{max-width:100%!important}#fpsOsdWorkspace,#fpsOsdWorkspace.fps-preview-open{max-width:100%!important}}
