From 879a68fea05774f8289e476fe10471e8e14eb95b Mon Sep 17 00:00:00 2001 From: Martin Ziegler Date: Fri, 5 Dec 2025 11:21:03 +0100 Subject: [PATCH] Wiring up AMS module --- backend/app/api/routes/printer_control.py | 7 +- backend/app/api/routes/printers.py | 3 + backend/app/schemas/printer.py | 15 + backend/app/services/bambu_mqtt.py | 132 ++- frontend/src/api/client.ts | 6 + .../src/components/control/AMSSectionDual.tsx | 334 +++++--- static/assets/index-BEhbt1yZ.css | 1 - static/assets/index-BREH29lW.css | 1 + .../{index-BMICGIP2.js => index-CLt_WkAI.js} | 768 +++++++++--------- static/index.html | 4 +- 10 files changed, 769 insertions(+), 502 deletions(-) delete mode 100644 static/assets/index-BEhbt1yZ.css create mode 100644 static/assets/index-BREH29lW.css rename static/assets/{index-BMICGIP2.js => index-CLt_WkAI.js} (54%) diff --git a/backend/app/api/routes/printer_control.py b/backend/app/api/routes/printer_control.py index e74f1f0a9..c99e6fe39 100644 --- a/backend/app/api/routes/printer_control.py +++ b/backend/app/api/routes/printer_control.py @@ -631,11 +631,8 @@ async def ams_refresh_tray( await get_printer_or_404(printer_id, db) client = get_mqtt_client_or_503(printer_id) - success = client.ams_refresh_tray(request.ams_id, request.tray_id) - return ControlResponse( - success=success, - message=f"Refreshing AMS {request.ams_id} tray {request.tray_id}" if success else "Failed to refresh tray" - ) + success, message = client.ams_refresh_tray(request.ams_id, request.tray_id) + return ControlResponse(success=success, message=message) # ============================================================================= diff --git a/backend/app/api/routes/printers.py b/backend/app/api/routes/printers.py index 22909acd0..28134b175 100644 --- a/backend/app/api/routes/printers.py +++ b/backend/app/api/routes/printers.py @@ -306,6 +306,9 @@ async def get_printer_status(printer_id: int, db: AsyncSession = Depends(get_db) ams_mapping=ams_mapping, ams_extruder_map=ams_extruder_map, tray_now=tray_now, + ams_status_main=state.ams_status_main, + ams_status_sub=state.ams_status_sub, + mc_print_sub_stage=state.mc_print_sub_stage, ) diff --git a/backend/app/schemas/printer.py b/backend/app/schemas/printer.py index 8dc0625cd..038fdad3b 100644 --- a/backend/app/schemas/printer.py +++ b/backend/app/schemas/printer.py @@ -48,8 +48,15 @@ class AMSTray(BaseModel): id: int tray_color: str | None = None tray_type: str | None = None + tray_sub_brands: str | None = None # Full name like "PLA Basic", "PETG HF" + tray_id_name: str | None = None # Bambu filament ID like "A00-Y2" (can decode to color) + tray_info_idx: str | None = None # Filament preset ID like "GFA00" remain: int = 0 k: float | None = None # Pressure advance value + tag_uid: str | None = None # RFID tag UID (any tag) + tray_uuid: str | None = None # Bambu Lab spool UUID (32-char hex) + nozzle_temp_min: int | None = None # Min nozzle temperature + nozzle_temp_max: int | None = None # Max nozzle temperature class AMSUnit(BaseModel): @@ -127,3 +134,11 @@ class PrinterStatus(BaseModel): ams_extruder_map: dict[str, int] = {} # Currently loaded tray (global ID): 254 = external spool, 255 = no filament tray_now: int = 255 + # AMS status for filament change tracking + # Main status: 0=idle, 1=filament_change, 2=rfid_identifying, 3=assist, 4=calibration + ams_status_main: int = 0 + # Sub status: specific step within filament change (when main=1) + # Known values: 4=retraction, 6=load verification, 7=purge + ams_status_sub: int = 0 + # mc_print_sub_stage - filament change step indicator used by OrcaSlicer/BambuStudio + mc_print_sub_stage: int = 0 diff --git a/backend/app/services/bambu_mqtt.py b/backend/app/services/bambu_mqtt.py index 4b2f7bf38..f7518a10f 100644 --- a/backend/app/services/bambu_mqtt.py +++ b/backend/app/services/bambu_mqtt.py @@ -116,6 +116,15 @@ class PrinterState: tray_now: int = 255 # Pending load target - used to track what tray we're loading for H2D disambiguation pending_tray_target: int | None = None + # AMS status for filament change tracking (from print.ams.ams_status field) + # ams_status is a combined value: lower 8 bits = sub status, bits 8-15 = main status + # Main status: 0=idle, 1=filament_change, 2=rfid_identifying, 3=assist, 4=calibration, etc. + ams_status: int = 0 + ams_status_main: int = 0 # (ams_status >> 8) & 0xFF + ams_status_sub: int = 0 # ams_status & 0xFF + # mc_print_sub_stage - filament change step indicator from print.mc_print_sub_stage + # Used by OrcaSlicer/BambuStudio to track progress during filament load/unload + mc_print_sub_stage: int = 0 # Stage name mapping from BambuStudio DeviceManager.cpp @@ -362,6 +371,30 @@ class BambuMQTTClient: logger.info(f"[{self.serial_number}] vt_tray data: {vt_tray}") self._vt_tray_logged = True + # Parse ams_status directly from print data (NOT from print.ams) + # ams_status is a combined value: lower 8 bits = sub status, bits 8-15 = main status + # Main status: 0=idle, 1=filament_change, 2=rfid_identifying, 3=assist, 4=calibration + # Sub status (when main=1): 2=heating, 3=AMS feeding, 4=retract, 6=push, 7=purge + if "ams_status" in print_data: + raw_ams_status = print_data["ams_status"] + if isinstance(raw_ams_status, str): + try: + self.state.ams_status = int(raw_ams_status) + except ValueError: + self.state.ams_status = 0 + else: + self.state.ams_status = raw_ams_status if raw_ams_status is not None else 0 + + # Compute main and sub status + self.state.ams_status_sub = self.state.ams_status & 0xFF + self.state.ams_status_main = (self.state.ams_status >> 8) & 0xFF + + # Log when ams_status changes (for filament change tracking debug) + logger.debug( + f"[{self.serial_number}] ams_status: {self.state.ams_status} " + f"(main={self.state.ams_status_main}, sub={self.state.ams_status_sub})" + ) + # Check for K-profile response (extrusion_cali) if "command" in print_data: logger.debug(f"[{self.serial_number}] Received command response: {print_data.get('command')}") @@ -590,6 +623,26 @@ class BambuMQTTClient: non_list_fields = {k: v for k, v in ams_data.items() if k != "ams"} if non_list_fields: logger.info(f"[{self.serial_number}] AMS dict fields: {non_list_fields}") + + # IMPORTANT: Parse ams_status FIRST before tray_now, so we have fresh status + # when checking if we're in filament change mode for tray_now disambiguation + if "ams_status" in ams_data: + raw_ams_status = ams_data["ams_status"] + if isinstance(raw_ams_status, str): + try: + self.state.ams_status = int(raw_ams_status) + except ValueError: + self.state.ams_status = 0 + else: + self.state.ams_status = raw_ams_status if raw_ams_status is not None else 0 + # Compute main and sub status + self.state.ams_status_sub = self.state.ams_status & 0xFF + self.state.ams_status_main = (self.state.ams_status >> 8) & 0xFF + logger.debug( + f"[{self.serial_number}] ams_status: {self.state.ams_status} " + f"(main={self.state.ams_status_main}, sub={self.state.ams_status_sub})" + ) + # Parse tray_now from AMS dict - this is the currently loaded tray global ID if "tray_now" in ams_data: raw_tray_now = ams_data["tray_now"] @@ -628,21 +681,35 @@ class BambuMQTTClient: # Clear pending target since it's stale self.state.pending_tray_target = None else: - # No pending target, use slot number as-is - # This happens when filament was loaded before app started or via printer touchscreen - logger.debug( - f"[{self.serial_number}] H2D tray_now: no pending_tray_target, " - f"using slot {parsed_tray_now} as global ID (may be incorrect for H2D)" - ) - self.state.tray_now = parsed_tray_now + # No pending target - check if we already have a resolved global ID + # that matches this slot (from a previous successful disambiguation) + current_tray = self.state.tray_now + if current_tray > 3 and current_tray != 255 and (current_tray % 4) == parsed_tray_now: + # Current tray_now is already a valid global ID that matches this slot + # Keep it (don't overwrite with raw slot number) + logger.debug( + f"[{self.serial_number}] H2D tray_now: keeping existing global ID {current_tray} " + f"(matches incoming slot {parsed_tray_now})" + ) + else: + # No match or no existing global ID, use slot number as-is + # This happens when filament was loaded before app started or via printer touchscreen + logger.debug( + f"[{self.serial_number}] H2D tray_now: no pending_tray_target, " + f"using slot {parsed_tray_now} as global ID (may be incorrect for H2D)" + ) + self.state.tray_now = parsed_tray_now else: # tray_now > 3 means it's already a global ID, or 255 means unloaded - if parsed_tray_now == 255: - # Filament unloaded - clear pending target - self.state.pending_tray_target = None + # Note: Do NOT clear pending_tray_target on tray_now=255 here. + # During filament change, the printer sends 255 first (unload), then the slot. + # We only clear pending_tray_target explicitly in ams_unload_filament(). self.state.tray_now = parsed_tray_now logger.debug(f"[{self.serial_number}] tray_now updated: {self.state.tray_now}") + + # NOTE: ams_status is parsed BEFORE tray_now (see above) to ensure correct + # state when checking filament change mode for H2D disambiguation elif isinstance(ams_data, list): ams_list = ams_data else: @@ -721,6 +788,14 @@ class BambuMQTTClient: self.state.progress = float(data["mc_percent"]) if "mc_remaining_time" in data: self.state.remaining_time = int(data["mc_remaining_time"]) + if "mc_print_sub_stage" in data: + new_sub_stage = int(data["mc_print_sub_stage"]) + if new_sub_stage != self.state.mc_print_sub_stage: + logger.debug( + f"[{self.serial_number}] mc_print_sub_stage changed: " + f"{self.state.mc_print_sub_stage} -> {new_sub_stage}" + ) + self.state.mc_print_sub_stage = new_sub_stage if "layer_num" in data: self.state.layer_num = int(data["layer_num"]) if "total_layer_num" in data: @@ -729,10 +804,10 @@ class BambuMQTTClient: # Calibration stage tracking if "stg_cur" in data: new_stg = data["stg_cur"] + # Always log ANY stg_cur change for debugging filament operations if new_stg != self.state.stg_cur: logger.info( - f"[{self.serial_number}] Calibration stage changed: " - f"{self.state.stg_cur} -> {new_stg} ({get_stage_name(new_stg)})" + f"[{self.serial_number}] stg_cur changed: {self.state.stg_cur} -> {new_stg} ({get_stage_name(new_stg)})" ) self.state.stg_cur = new_stg if "stg" in data: @@ -2314,10 +2389,11 @@ class BambuMQTTClient: slot_id = tray_id % 4 # Slot within AMS (0, 1, 2, 3) # Build command with ams_id and slot_id format (per HA-Bambulab integration) + # Note: curr_nozzle is NOT included - ha-bambulab doesn't use it and it may cause issues command = { "print": { "command": "ams_change_filament", - "target": tray_id, # Keep target for compatibility + "target": tray_id, # Global tray ID (ams_id * 4 + slot_id) "ams_id": ams_id, "slot_id": slot_id, "curr_temp": 220, @@ -2326,8 +2402,10 @@ class BambuMQTTClient: } } - self._client.publish(self.topic_publish, json.dumps(command)) - logger.info(f"[{self.serial_number}] Loading filament from AMS {ams_id} slot {slot_id} (global tray {tray_id})") + command_json = json.dumps(command) + logger.info(f"[{self.serial_number}] Publishing ams_change_filament command: {command_json}") + self._client.publish(self.topic_publish, command_json) + logger.info(f"[{self.serial_number}] Loading filament from AMS {ams_id} slot {slot_id} (global tray {tray_id}) to extruder {curr_nozzle}") # Track this load request for H2D dual-nozzle disambiguation # H2D reports only slot number (0-3) in tray_now, so we use our tracked value @@ -2392,7 +2470,7 @@ class BambuMQTTClient: logger.info(f"[{self.serial_number}] AMS control: {action}") return True - def ams_refresh_tray(self, ams_id: int, tray_id: int) -> bool: + def ams_refresh_tray(self, ams_id: int, tray_id: int) -> tuple[bool, str]: """Trigger RFID re-read for a specific AMS tray. Args: @@ -2400,11 +2478,27 @@ class BambuMQTTClient: tray_id: Tray ID within the AMS (0-3) Returns: - True if command was sent, False otherwise + Tuple of (success, message) """ if not self._client or not self.state.connected: logger.warning(f"[{self.serial_number}] Cannot refresh AMS tray: not connected") - return False + return False, "Printer not connected" + + # Check if filament is currently loaded (tray_now != 255) + # RFID refresh requires the AMS to move filament, which can't happen if one is loaded + tray_now = self.state.tray_now + if tray_now != 255: + # Decode which tray is loaded for the message + if tray_now == 254: + loaded_tray = "external spool" + elif tray_now >= 0 and tray_now < 128: + loaded_ams = tray_now // 4 + loaded_slot = tray_now % 4 + loaded_tray = f"AMS {loaded_ams + 1} slot {loaded_slot + 1}" + else: + loaded_tray = f"tray {tray_now}" + logger.warning(f"[{self.serial_number}] Cannot refresh AMS tray: filament loaded from {loaded_tray}") + return False, f"Please unload filament first. Currently loaded: {loaded_tray}" # Use ams_get_rfid command to trigger RFID re-read # This command is used by Bambu Studio to re-read the RFID tag @@ -2418,7 +2512,7 @@ class BambuMQTTClient: } self._client.publish(self.topic_publish, json.dumps(command)) logger.info(f"[{self.serial_number}] Triggering RFID re-read: AMS {ams_id}, slot {tray_id}") - return True + return True, f"Refreshing AMS {ams_id} tray {tray_id}" def set_timelapse(self, enable: bool) -> bool: """Enable or disable timelapse recording. diff --git a/frontend/src/api/client.ts b/frontend/src/api/client.ts index 13a4cbee9..cc9f0b9b3 100644 --- a/frontend/src/api/client.ts +++ b/frontend/src/api/client.ts @@ -140,6 +140,12 @@ export interface PrinterStatus { ams_extruder_map: Record; // Currently loaded tray (global tray ID, 255 = no filament loaded, 254 = external spool) tray_now: number; + // AMS status for filament change tracking (0=idle, 1=filament_change, 2=rfid_identifying, 3=assist, 4=calibration) + ams_status_main: number; + // AMS sub-status for filament change step (when main=1): 4=retraction, 6=load verification, 7=purge + ams_status_sub: number; + // mc_print_sub_stage - filament change step indicator used by OrcaSlicer/BambuStudio + mc_print_sub_stage: number; } export interface PrinterCreate { diff --git a/frontend/src/components/control/AMSSectionDual.tsx b/frontend/src/components/control/AMSSectionDual.tsx index 8f664b81b..0817231f5 100644 --- a/frontend/src/components/control/AMSSectionDual.tsx +++ b/frontend/src/components/control/AMSSectionDual.tsx @@ -5,12 +5,8 @@ import type { PrinterStatus, AMSUnit, AMSTray } from '../../api/client'; import { Loader2, ChevronDown, ChevronUp, RotateCw } from 'lucide-react'; import { AMSHumidityModal } from './AMSHumidityModal'; import { AMSMaterialsModal } from './AMSMaterialsModal'; +import { useToast } from '../../contexts/ToastContext'; -// Filament change stages from MQTT stg_cur -const STAGE_HEATING_NOZZLE = 7; -const STAGE_FILAMENT_UNLOADING = 22; -const STAGE_FILAMENT_LOADING = 24; -const STAGE_CHANGING_FILAMENT = 4; interface AMSSectionDualProps { printerId: number; @@ -70,7 +66,11 @@ function HumidityIcon({ humidity }: { humidity: number }) { // Filament change progress card - appears during load/unload operations interface FilamentChangeCardProps { isLoading: boolean; // true = loading, false = unloading - currentStage: number; + amsStatusMain: number; // AMS status: 0=idle, 1=filament_change, 2=rfid_identifying, etc. + amsStatusSub: number; // ams_status_sub from MQTT - step within filament change operation + trayNow: number; // Currently loaded tray (255 = none, 254 = external) + targetTrayId: number | null; // Target tray we're trying to load (null for unload) + onComplete: () => void; // Called when operation completes onRetry?: () => void; } @@ -80,69 +80,137 @@ interface StepInfo { stepNumber: number; } -function FilamentChangeCard({ isLoading, currentStage, onRetry }: FilamentChangeCardProps) { +function FilamentChangeCard({ isLoading, amsStatusMain, amsStatusSub, trayNow, targetTrayId, onComplete, onRetry }: FilamentChangeCardProps) { const [isCollapsed, setIsCollapsed] = useState(false); - // Track the highest progress step reached to show proper progression - // 0 = initial, 1 = push started, 2 = heating, 3 = purging - const [progressStep, setProgressStep] = useState(0); - const prevStageRef = useRef(currentStage); + const [isCompleted, setIsCompleted] = useState(false); + const prevAmsStatusRef = useRef(amsStatusMain); + const prevTrayNowRef = useRef(trayNow); + const completionTimeoutRef = useRef(null); - // Update progress based on stage transitions + // ams_status_sub values for filament change steps + // Observed progression: 5 -> 6 -> 2 -> 7 -> 0 + // 2: Heating nozzle + // 3: AMS feeding filament to hub + // 4: Retraction / extruder pulling filament + // 5: Initial filament push / preparation + // 6: Load verification / extruder pushing + // 7: Purging + const SUB_HEATING = 2; + const SUB_FEEDING = 3; + const SUB_RETRACT = 4; + const SUB_PUSH_PREP = 5; + const SUB_PUSH = 6; + const SUB_PURGE = 7; + + // Log status updates for debugging useEffect(() => { - // For loading: track progression through stages - if (isLoading) { - if (currentStage === STAGE_FILAMENT_LOADING || currentStage === STAGE_CHANGING_FILAMENT) { - // Push/loading stage - at least step 1 - if (progressStep < 1) setProgressStep(1); - } else if (currentStage === STAGE_HEATING_NOZZLE) { - // Heating stage - at least step 2 - if (progressStep < 2) setProgressStep(2); - } else if (progressStep >= 2 && currentStage === STAGE_CHANGING_FILAMENT) { - // After heating, back to changing = purge stage - setProgressStep(3); - } - } else { - // For unloading: track heating -> unloading - if (currentStage === STAGE_HEATING_NOZZLE || currentStage === STAGE_CHANGING_FILAMENT) { - if (progressStep < 1) setProgressStep(1); - } else if (currentStage === STAGE_FILAMENT_UNLOADING) { - if (progressStep < 2) setProgressStep(2); + console.log(`[FilamentChangeCard] Status: main=${amsStatusMain}, sub=${amsStatusSub}, trayNow=${trayNow}, isLoading=${isLoading}`); + }, [amsStatusMain, amsStatusSub, trayNow, isLoading]); + + // Detect completion via ams_status_main transition from 1 (filament_change) to 0 (idle) + // Also use tray_now as a secondary indicator + useEffect(() => { + const wasActive = prevAmsStatusRef.current === 1; + const isNowIdle = amsStatusMain === 0; + const trayChanged = trayNow !== prevTrayNowRef.current; + + // Primary completion detection: ams_status_main transitions from 1 to 0 + if (wasActive && isNowIdle) { + console.log(`[FilamentChangeCard] ams_status_main transitioned 1->0, operation complete!`); + setIsCompleted(true); + // Auto-close after brief delay + completionTimeoutRef.current = setTimeout(() => { + onComplete(); + }, 1500); + } + // Secondary completion detection: tray_now matches target (for load) or becomes 255 (for unload) + else if (trayChanged) { + if (isLoading && targetTrayId !== null && trayNow === targetTrayId) { + console.log(`[FilamentChangeCard] Load completed! tray_now=${trayNow} matches target=${targetTrayId}`); + setIsCompleted(true); + completionTimeoutRef.current = setTimeout(() => { + onComplete(); + }, 1500); + } else if (!isLoading && trayNow === 255) { + console.log(`[FilamentChangeCard] Unload completed! tray_now=255 (no filament)`); + setIsCompleted(true); + completionTimeoutRef.current = setTimeout(() => { + onComplete(); + }, 1500); } } - // Reset progress when stage returns to idle - if (currentStage === -1 && prevStageRef.current !== -1) { - // Operation completed, reset for next time - setProgressStep(0); - } + prevAmsStatusRef.current = amsStatusMain; + prevTrayNowRef.current = trayNow; + }, [amsStatusMain, trayNow, isLoading, targetTrayId, onComplete]); - prevStageRef.current = currentStage; - }, [currentStage, isLoading, progressStep]); - - // Initialize progress to step 1 when card first shows + // Cleanup timeout on unmount useEffect(() => { - if (progressStep === 0) { - setProgressStep(1); - } + return () => { + if (completionTimeoutRef.current) { + clearTimeout(completionTimeoutRef.current); + } + }; }, []); - // Determine step status based on tracked progress + // Determine step based on ams_status_sub from MQTT + // ams_status_sub values indicate the current step in filament change: + // Load sequence (actual order): 3/6 (push) -> 2 (heating) -> 7 (purging) + // Unload sequence: 2 (heating) -> 4 (retracting) + const getStepFromAmsStatusSub = (): number => { + if (isCompleted) return 99; // All done + + // If not in filament change mode, not started + if (amsStatusMain !== 1) return 0; + + if (isLoading) { + // Loading sequence: Push -> Heat -> Purge (matches Bambu Studio/OrcaSlicer display) + // Observed progression: 5 -> 6 -> 2 -> 7 + // Map sub status to steps: 5/6 -> step 1, 2 -> step 2, 7 -> step 3 + if (amsStatusSub === SUB_PUSH_PREP || amsStatusSub === SUB_PUSH || amsStatusSub === SUB_FEEDING) return 1; // Step 1: Pushing + if (amsStatusSub === SUB_HEATING) return 2; // Step 2: Heating + if (amsStatusSub === SUB_PURGE) return 3; // Step 3: Purging + // Default to step 1 when in filament_change mode + return 1; + } else { + // Unloading sequence: Heat -> Retract + // Map sub status to steps: 2 -> step 1, 4 -> step 2 + if (amsStatusSub === SUB_HEATING) return 1; // Step 1: Heating + if (amsStatusSub === SUB_RETRACT) return 2; // Step 2: Retracting + // Default to step 1 when in filament_change mode + return 1; + } + }; + + // Get current step from ams_status_sub + const currentStep = getStepFromAmsStatusSub(); + + // Debug: log step calculation + console.log(`[FilamentChangeCard] Step calculation: currentStep=${currentStep}, amsStatusSub=${amsStatusSub}`); + + // Determine step status based on ams_status_sub const getLoadingSteps = (): StepInfo[] => { - // Loading sequence: Push filament -> Heat nozzle -> Purge + // Loading sequence: Push -> Heat -> Purge (matches Bambu Studio/OrcaSlicer display order) + // ams_status_sub progression: 3/6 (push) -> 2 (heating) -> 7 (purging) let step1Status: 'completed' | 'in_progress' | 'pending' = 'pending'; let step2Status: 'completed' | 'in_progress' | 'pending' = 'pending'; let step3Status: 'completed' | 'in_progress' | 'pending' = 'pending'; - if (progressStep >= 3) { + if (currentStep >= 99) { + // All completed + step1Status = 'completed'; + step2Status = 'completed'; + step3Status = 'completed'; + } else if (currentStep >= 3) { // Purging - steps 1 & 2 done, step 3 active step1Status = 'completed'; step2Status = 'completed'; step3Status = 'in_progress'; - } else if (progressStep >= 2) { + } else if (currentStep >= 2) { // Heating - step 1 done, step 2 active step1Status = 'completed'; step2Status = 'in_progress'; - } else if (progressStep >= 1) { + } else if (currentStep >= 1) { // Pushing - step 1 active step1Status = 'in_progress'; } @@ -158,11 +226,15 @@ function FilamentChangeCard({ isLoading, currentStage, onRetry }: FilamentChange let step1Status: 'completed' | 'in_progress' | 'pending' = 'pending'; let step2Status: 'completed' | 'in_progress' | 'pending' = 'pending'; - if (progressStep >= 2) { - // Unloading - step 1 done, step 2 active + if (currentStep >= 99) { + // All completed + step1Status = 'completed'; + step2Status = 'completed'; + } else if (currentStep >= 2) { + // Retracting - step 1 done, step 2 active step1Status = 'completed'; step2Status = 'in_progress'; - } else if (progressStep >= 1) { + } else if (currentStep >= 1) { // Heating - step 1 active step1Status = 'in_progress'; } @@ -263,6 +335,7 @@ interface AMSPanelContentProps { onHumidityClick: (humidity: number, temp: number) => void; onSlotRefresh: (amsId: number, slotId: number) => void; onEyeClick: (tray: AMSTray, slotLabel: string, amsId: number) => void; + refreshingSlot: { amsId: number; trayId: number } | null; } // Panel content - NO wiring, just slots and info @@ -300,6 +373,7 @@ function AMSPanelContent({ onHumidityClick, onSlotRefresh, onEyeClick, + refreshingSlot, }: AMSPanelContentProps) { const selectedUnit = units[selectedAmsIndex]; const isHT = selectedUnit ? isAmsHT(selectedUnit.id) : false; @@ -359,14 +433,22 @@ function AMSPanelContent({
{selectedUnit.tray.map((tray, index) => { const slotLabel = getSlotLabel(selectedUnit.id, index); + const isRefreshing = refreshingSlot?.amsId === selectedUnit.id && refreshingSlot?.trayId === tray.id; return ( ); })} @@ -677,6 +759,7 @@ function WiringLayer({ } export function AMSSectionDual({ printerId, printerModel, status, nozzleCount }: AMSSectionDualProps) { + const { showToast } = useToast(); const isConnected = status?.connected ?? false; const isPrinting = status?.state === 'RUNNING'; const isDualNozzle = nozzleCount > 1; @@ -688,26 +771,27 @@ export function AMSSectionDual({ printerId, printerModel, status, nozzleCount }: // Distribute AMS units based on ams_extruder_map // Each AMS unit's info field tells us which extruder it's connected to: - // In Bambu slicer convention: extruder 0 = left nozzle, extruder 1 = right nozzle + // UI layout: Left panel shows extruder 0 AMS units, Right panel shows extruder 1 AMS units + // Note: Internal nozzle IDs are different (T0=right physical nozzle, T1=left physical nozzle) const leftUnits = (() => { if (!isDualNozzle) return amsUnits; if (Object.keys(amsExtruderMap).length > 0) { - // Filter AMS units assigned to extruder 0 (left nozzle in slicer convention) + // Filter AMS units assigned to extruder 0 (left UI panel) // JSON keys are strings, so convert unit.id to string return amsUnits.filter(unit => amsExtruderMap[String(unit.id)] === 0); } - // Fallback: even indices go to left (extruder 0) + // Fallback: even indices go to left return amsUnits.filter((_, i) => i % 2 === 0); })(); const rightUnits = (() => { if (!isDualNozzle) return []; if (Object.keys(amsExtruderMap).length > 0) { - // Filter AMS units assigned to extruder 1 (right nozzle in slicer convention) + // Filter AMS units assigned to extruder 1 (right UI panel) // JSON keys are strings, so convert unit.id to string return amsUnits.filter(unit => amsExtruderMap[String(unit.id)] === 1); } - // Fallback: odd indices go to right (extruder 1) + // Fallback: odd indices go to right return amsUnits.filter((_, i) => i % 2 === 1); })(); @@ -719,10 +803,12 @@ export function AMSSectionDual({ printerId, printerModel, status, nozzleCount }: const [humidityModal, setHumidityModal] = useState<{ humidity: number; temp: number } | null>(null); const [materialsModal, setMaterialsModal] = useState<{ tray: AMSTray; slotLabel: string; amsId: number } | null>(null); + // Track refreshing slot - cleared when tray data updates from MQTT + const [refreshingSlotState, setRefreshingSlotState] = useState<{ amsId: number; trayId: number; startTime: number } | null>(null); + // Track user-initiated filament change operations (for showing progress card immediately) - const [userFilamentChange, setUserFilamentChange] = useState<{ isLoading: boolean } | null>(null); - // Track the previous stage for detecting when operation completes - const prevStageRef = useRef(-1); + // Store both the operation type (load/unload) and the target tray ID for load operations + const [userFilamentChange, setUserFilamentChange] = useState<{ isLoading: boolean; targetTrayId: number | null } | null>(null); // Track if we've done initial sync from tray_now const initialSyncDone = useRef(false); @@ -747,6 +833,40 @@ export function AMSSectionDual({ printerId, printerModel, status, nozzleCount }: } }, [status?.tray_now]); + // Watch for AMS data updates to clear the refresh spinner + // When the printer reports updated tray data after RFID read, clear the spinner + const prevAmsDataRef = useRef(''); + useEffect(() => { + if (!refreshingSlotState) return; + + // Find the refreshing slot's current data + const { amsId, trayId, startTime } = refreshingSlotState; + const unit = amsUnits.find(u => u.id === amsId); + const tray = unit?.tray?.find(t => t.id === trayId); + + if (!tray) return; + + // Create a signature of the tray data to detect changes + const traySignature = JSON.stringify({ + tag_uid: tray.tag_uid, + tray_uuid: tray.tray_uuid, + tray_id_name: tray.tray_id_name, + tray_type: tray.tray_type, + tray_color: tray.tray_color, + }); + + // If we have previous data and it changed, the refresh is complete + // Also require at least 500ms to have passed (to avoid false positives from initial render) + const elapsed = Date.now() - startTime; + if (prevAmsDataRef.current && prevAmsDataRef.current !== traySignature && elapsed > 500) { + console.log(`[AMSSectionDual] RFID refresh complete for AMS ${amsId} tray ${trayId} (took ${elapsed}ms)`); + setRefreshingSlotState(null); + } + + // Update the ref for next comparison + prevAmsDataRef.current = traySignature; + }, [refreshingSlotState, amsUnits]); + const loadMutation = useMutation({ mutationFn: ({ trayId, extruderId }: { trayId: number; extruderId?: number }) => api.amsLoadFilament(printerId, trayId, extruderId), @@ -801,17 +921,23 @@ export function AMSSectionDual({ printerId, printerModel, status, nozzleCount }: const extruderId = getExtruderIdForTray(selectedTray); console.log(`[AMSSectionDual] Calling loadMutation.mutate(tray: ${selectedTray}, extruder: ${extruderId})`); // Show filament change card immediately - setUserFilamentChange({ isLoading: true }); + setUserFilamentChange({ isLoading: true, targetTrayId: selectedTray }); loadMutation.mutate({ trayId: selectedTray, extruderId }); } }; const handleUnload = () => { - // Show filament change card immediately - setUserFilamentChange({ isLoading: false }); + // Show filament change card immediately (no target tray for unload) + setUserFilamentChange({ isLoading: false, targetTrayId: null }); unloadMutation.mutate(); }; + // Callback for FilamentChangeCard to close itself + const handleFilamentChangeComplete = () => { + console.log(`[AMSSectionDual] FilamentChangeCard completed, closing card`); + setUserFilamentChange(null); + }; + const isLoading = loadMutation.isPending || unloadMutation.isPending; // Handlers for modals and actions @@ -823,63 +949,79 @@ export function AMSSectionDual({ printerId, printerModel, status, nozzleCount }: mutationFn: ({ amsId, trayId }: { amsId: number; trayId: number }) => api.refreshAmsTray(printerId, amsId, trayId), onSuccess: (data, variables) => { - console.log(`[AMSSectionDual] Tray refresh success (AMS ${variables.amsId}, Tray ${variables.trayId}):`, data); + console.log(`[AMSSectionDual] Tray refresh response (AMS ${variables.amsId}, Tray ${variables.trayId}):`, data); + if (data.success) { + showToast(data.message || 'RFID refresh started', 'success'); + } else { + showToast(data.message || 'Failed to refresh tray', 'error'); + } }, onError: (error, variables) => { console.error(`[AMSSectionDual] Tray refresh error (AMS ${variables.amsId}, Tray ${variables.trayId}):`, error); + showToast('Failed to refresh tray', 'error'); }, }); const handleSlotRefresh = (amsId: number, slotId: number) => { // Trigger RFID re-read for the specific tray console.log(`[AMSSectionDual] Slot refresh triggered: AMS ${amsId}, Slot ${slotId}, printerId: ${printerId}`); + // Reset the previous data ref so we can detect the next change + prevAmsDataRef.current = ''; + // Show spinner immediately - will be cleared when AMS data updates from MQTT + const startTime = Date.now(); + setRefreshingSlotState({ amsId, trayId: slotId, startTime }); refreshMutation.mutate({ amsId, trayId: slotId }); + // Fallback timeout (15s) in case data doesn't change (e.g., same spool re-read) + setTimeout(() => { + setRefreshingSlotState(prev => { + if (prev && prev.startTime === startTime) { + console.log(`[AMSSectionDual] RFID refresh timeout for AMS ${amsId} tray ${slotId}`); + return null; + } + return prev; + }); + }, 15000); }; const handleEyeClick = (tray: AMSTray, slotLabel: string, amsId: number) => { setMaterialsModal({ tray, slotLabel, amsId }); }; - // Determine if we're in a filament change stage (from MQTT) - const currentStage = status?.stg_cur ?? -1; - const isMqttFilamentChangeActive = [ - STAGE_HEATING_NOZZLE, - STAGE_FILAMENT_UNLOADING, - STAGE_FILAMENT_LOADING, - STAGE_CHANGING_FILAMENT, - ].includes(currentStage); + // Determine if we're in a filament change state (from MQTT ams_status) + // ams_status_main: 0=idle, 1=filament_change, 2=rfid_identifying, 3=assist, 4=calibration + // mc_print_sub_stage: step indicator used by BambuStudio/OrcaSlicer for filament change progress + const amsStatusMain = status?.ams_status_main ?? 0; + const isMqttFilamentChangeActive = amsStatusMain === 1; // Auto-close card when operation completes - // Track when we transition from an active filament change stage back to idle + // Track when we transition from filament change active to idle (ams_status_main 1 -> 0) + const prevAmsStatusMainRef = useRef(amsStatusMain); useEffect(() => { - const wasInFilamentChange = [ - STAGE_HEATING_NOZZLE, - STAGE_FILAMENT_UNLOADING, - STAGE_FILAMENT_LOADING, - STAGE_CHANGING_FILAMENT, - ].includes(prevStageRef.current); + const wasActive = prevAmsStatusMainRef.current === 1; if (isMqttFilamentChangeActive) { - // MQTT is now reporting a stage, clear user-triggered state + // MQTT is now reporting filament change, clear user-triggered state // Card will continue showing because isMqttFilamentChangeActive is true setUserFilamentChange(null); - } else if (wasInFilamentChange && !isMqttFilamentChangeActive) { - // Transition from active stage to idle (any non-filament-change stage, not just -1) + } else if (wasActive && !isMqttFilamentChangeActive) { + // Transition from active (1) to idle (0) // Close the card by clearing user state + console.log(`[AMSSectionDual] ams_status_main transitioned 1->0, closing card`); setUserFilamentChange(null); } - // Update previous stage for next comparison - prevStageRef.current = currentStage; - }, [isMqttFilamentChangeActive, currentStage]); + // Update previous status for next comparison + prevAmsStatusMainRef.current = amsStatusMain; + }, [isMqttFilamentChangeActive, amsStatusMain]); - // Show FilamentChangeCard when either MQTT reports active stage OR user just clicked load/unload + // Show FilamentChangeCard when either MQTT reports active ams_status OR user just clicked load/unload const showFilamentChangeCard = isMqttFilamentChangeActive || userFilamentChange !== null; // Determine if loading or unloading for the card display + // Use user intent if available, otherwise default to loading (most common operation) const isFilamentLoading = userFilamentChange !== null ? userFilamentChange.isLoading - : (currentStage === STAGE_FILAMENT_LOADING || currentStage === STAGE_HEATING_NOZZLE); + : true; // Default to loading when detected via MQTT // Get the loaded tray info for wire coloring // Wire coloring should show the path from the currently loaded filament to the extruder @@ -905,7 +1047,8 @@ export function AMSSectionDual({ printerId, printerModel, status, nozzleCount }: const tray = unit.tray[slotIndex]; const color = tray?.tray_color ?? null; - // Determine if this AMS is on left or right side + // Determine if this AMS is on left or right UI panel + // UI layout: extruder 0 = left panel, extruder 1 = right panel const extruderId = amsExtruderMap[String(unit.id)]; // Check if this AMS unit is the one currently displayed in the panel @@ -913,7 +1056,7 @@ export function AMSSectionDual({ printerId, printerModel, status, nozzleCount }: const currentRightUnit = rightUnits[rightAmsIndex]; if (extruderId === 0) { - // Left side (extruder 0) - leftUnits filters for amsExtruderMap === 0 + // Left UI panel (extruder 0) - leftUnits filters for amsExtruderMap === 0 // Only show colored wiring if the currently displayed AMS unit is the one with loaded filament const isDisplayed = currentLeftUnit?.id === unit.id; return { @@ -923,7 +1066,7 @@ export function AMSSectionDual({ printerId, printerModel, status, nozzleCount }: rightFilamentColor: null }; } else { - // Right side (extruder 1) - rightUnits filters for amsExtruderMap === 1 + // Right UI panel (extruder 1) - rightUnits filters for amsExtruderMap === 1 const isDisplayed = currentRightUnit?.id === unit.id; return { leftActiveSlot: null, @@ -940,6 +1083,9 @@ export function AMSSectionDual({ printerId, printerModel, status, nozzleCount }: const { leftActiveSlot, rightActiveSlot, leftFilamentColor, rightFilamentColor } = getLoadedTrayInfo(); + // Use state-based refreshing slot for spinner visibility (minimum 1.5s display time) + const refreshingSlot = refreshingSlotState; + return (
{/* Dual Panel Layout - just the panels, no wiring */} @@ -955,6 +1101,7 @@ export function AMSSectionDual({ printerId, printerModel, status, nozzleCount }: onHumidityClick={handleHumidityClick} onSlotRefresh={handleSlotRefresh} onEyeClick={handleEyeClick} + refreshingSlot={refreshingSlot} /> {isDualNozzle && ( @@ -969,6 +1116,7 @@ export function AMSSectionDual({ printerId, printerModel, status, nozzleCount }: onHumidityClick={handleHumidityClick} onSlotRefresh={handleSlotRefresh} onEyeClick={handleEyeClick} + refreshingSlot={refreshingSlot} /> )}
@@ -1044,7 +1192,11 @@ export function AMSSectionDual({ printerId, printerModel, status, nozzleCount }: {showFilamentChangeCard && ( )} diff --git a/static/assets/index-BEhbt1yZ.css b/static/assets/index-BEhbt1yZ.css deleted file mode 100644 index ba92659ac..000000000 --- a/static/assets/index-BEhbt1yZ.css +++ /dev/null @@ -1 +0,0 @@ -@import"https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap";@layer properties,theme,base,components,utilities;@layer theme{:root,:host{--font-sans:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--color-red-300:oklch(80.8% .114 19.571);--color-red-400:oklch(70.4% .191 22.216);--color-red-500:oklch(63.7% .237 25.331);--color-red-600:oklch(57.7% .245 27.325);--color-red-700:oklch(50.5% .213 27.518);--color-orange-400:oklch(75% .183 55.934);--color-orange-500:oklch(70.5% .213 47.604);--color-amber-400:oklch(82.8% .189 84.429);--color-amber-500:oklch(76.9% .188 70.08);--color-yellow-100:oklch(97.3% .071 103.193);--color-yellow-400:oklch(85.2% .199 91.936);--color-yellow-500:oklch(79.5% .184 86.047);--color-yellow-600:oklch(68.1% .162 75.834);--color-yellow-700:oklch(55.4% .135 66.442);--color-yellow-900:oklch(42.1% .095 57.708);--color-green-400:oklch(79.2% .209 151.711);--color-green-500:oklch(72.3% .219 149.579);--color-blue-400:oklch(70.7% .165 254.624);--color-blue-500:oklch(62.3% .214 259.815);--color-purple-400:oklch(71.4% .203 305.504);--color-purple-500:oklch(62.7% .265 303.9);--color-gray-50:oklch(98.5% .002 247.839);--color-gray-100:oklch(96.7% .003 264.542);--color-gray-200:oklch(92.8% .006 264.531);--color-gray-300:oklch(87.2% .01 258.338);--color-gray-400:oklch(70.7% .022 261.325);--color-gray-500:oklch(55.1% .027 264.364);--color-gray-600:oklch(44.6% .03 256.802);--color-gray-700:oklch(37.3% .034 259.733);--color-gray-900:oklch(21% .034 264.665);--color-black:#000;--color-white:#fff;--spacing:.25rem;--container-sm:24rem;--container-md:28rem;--container-lg:32rem;--container-xl:36rem;--container-2xl:42rem;--container-3xl:48rem;--container-4xl:56rem;--text-xs:.75rem;--text-xs--line-height:calc(1/.75);--text-sm:.875rem;--text-sm--line-height:calc(1.25/.875);--text-base:1rem;--text-base--line-height: 1.5 ;--text-lg:1.125rem;--text-lg--line-height:calc(1.75/1.125);--text-xl:1.25rem;--text-xl--line-height:calc(1.75/1.25);--text-2xl:1.5rem;--text-2xl--line-height:calc(2/1.5);--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--tracking-wide:.025em;--tracking-widest:.1em;--radius-sm:.25rem;--radius-md:.375rem;--radius-lg:.5rem;--radius-xl:.75rem;--radius-2xl:1rem;--ease-in-out:cubic-bezier(.4,0,.2,1);--animate-spin:spin 1s linear infinite;--animate-pulse:pulse 2s cubic-bezier(.4,0,.6,1)infinite;--blur-sm:8px;--aspect-video:16/9;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4,0,.2,1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono);--color-bambu-green:#00ae42;--color-bambu-green-light:#00c64d;--color-bambu-green-dark:#009438;--color-bambu-dark:var(--bg-primary);--color-bambu-dark-secondary:var(--bg-secondary);--color-bambu-dark-tertiary:var(--bg-tertiary);--color-bambu-gray:var(--text-muted);--color-bambu-gray-light:var(--text-secondary);--color-bambu-gray-dark:var(--text-tertiary)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer utilities{.pointer-events-none{pointer-events:none}.visible{visibility:visible}.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.inset-0{inset:calc(var(--spacing)*0)}.inset-y-0{inset-block:calc(var(--spacing)*0)}.-top-1{top:calc(var(--spacing)*-1)}.top-0\.5{top:calc(var(--spacing)*.5)}.top-1{top:calc(var(--spacing)*1)}.top-1\/2{top:50%}.top-2{top:calc(var(--spacing)*2)}.top-4{top:calc(var(--spacing)*4)}.top-\[2px\]{top:2px}.top-full{top:100%}.-right-1{right:calc(var(--spacing)*-1)}.right-0{right:calc(var(--spacing)*0)}.right-2{right:calc(var(--spacing)*2)}.right-4{right:calc(var(--spacing)*4)}.right-12{right:calc(var(--spacing)*12)}.bottom-0{bottom:calc(var(--spacing)*0)}.bottom-1{bottom:calc(var(--spacing)*1)}.bottom-2{bottom:calc(var(--spacing)*2)}.bottom-4{bottom:calc(var(--spacing)*4)}.bottom-6{bottom:calc(var(--spacing)*6)}.left-0{left:calc(var(--spacing)*0)}.left-1{left:calc(var(--spacing)*1)}.left-1\/2{left:50%}.left-2{left:calc(var(--spacing)*2)}.left-2\.5{left:calc(var(--spacing)*2.5)}.left-3{left:calc(var(--spacing)*3)}.left-4{left:calc(var(--spacing)*4)}.left-7{left:calc(var(--spacing)*7)}.left-12{left:calc(var(--spacing)*12)}.left-\[2px\]{left:2px}.z-10{z-index:10}.z-20{z-index:20}.z-30{z-index:30}.z-40{z-index:40}.z-50{z-index:50}.z-60,.z-\[60\]{z-index:60}.col-span-1{grid-column:span 1/span 1}.col-span-2{grid-column:span 2/span 2}.col-span-4{grid-column:span 4/span 4}.container{width:100%}@media(min-width:40rem){.container{max-width:40rem}}@media(min-width:48rem){.container{max-width:48rem}}@media(min-width:64rem){.container{max-width:64rem}}@media(min-width:80rem){.container{max-width:80rem}}@media(min-width:96rem){.container{max-width:96rem}}.m-3{margin:calc(var(--spacing)*3)}.m-4{margin:calc(var(--spacing)*4)}.m-auto{margin:auto}.mx-1{margin-inline:calc(var(--spacing)*1)}.mx-2{margin-inline:calc(var(--spacing)*2)}.mx-4{margin-inline:calc(var(--spacing)*4)}.mx-auto{margin-inline:auto}.my-1{margin-block:calc(var(--spacing)*1)}.my-8{margin-block:calc(var(--spacing)*8)}.-mt-2{margin-top:calc(var(--spacing)*-2)}.-mt-\[50px\]{margin-top:-50px}.mt-0\.5{margin-top:calc(var(--spacing)*.5)}.mt-1{margin-top:calc(var(--spacing)*1)}.mt-2{margin-top:calc(var(--spacing)*2)}.mt-3{margin-top:calc(var(--spacing)*3)}.mt-4{margin-top:calc(var(--spacing)*4)}.mt-6{margin-top:calc(var(--spacing)*6)}.mr-1{margin-right:calc(var(--spacing)*1)}.mr-3{margin-right:calc(var(--spacing)*3)}.mr-4{margin-right:calc(var(--spacing)*4)}.-mb-px{margin-bottom:-1px}.mb-0\.5{margin-bottom:calc(var(--spacing)*.5)}.mb-1{margin-bottom:calc(var(--spacing)*1)}.mb-1\.5{margin-bottom:calc(var(--spacing)*1.5)}.mb-2{margin-bottom:calc(var(--spacing)*2)}.mb-2\.5{margin-bottom:calc(var(--spacing)*2.5)}.mb-3{margin-bottom:calc(var(--spacing)*3)}.mb-3\.5{margin-bottom:calc(var(--spacing)*3.5)}.mb-4{margin-bottom:calc(var(--spacing)*4)}.mb-5{margin-bottom:calc(var(--spacing)*5)}.mb-6{margin-bottom:calc(var(--spacing)*6)}.mb-8{margin-bottom:calc(var(--spacing)*8)}.-ml-1{margin-left:calc(var(--spacing)*-1)}.ml-0\.5{margin-left:calc(var(--spacing)*.5)}.ml-1\.5{margin-left:calc(var(--spacing)*1.5)}.ml-2{margin-left:calc(var(--spacing)*2)}.ml-8{margin-left:calc(var(--spacing)*8)}.ml-16{margin-left:calc(var(--spacing)*16)}.ml-64{margin-left:calc(var(--spacing)*64)}.ml-auto{margin-left:auto}.line-clamp-3{-webkit-line-clamp:3;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.block{display:block}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.aspect-square{aspect-ratio:1}.aspect-video{aspect-ratio:var(--aspect-video)}.h-1{height:calc(var(--spacing)*1)}.h-1\.5{height:calc(var(--spacing)*1.5)}.h-2{height:calc(var(--spacing)*2)}.h-2\.5{height:calc(var(--spacing)*2.5)}.h-3{height:calc(var(--spacing)*3)}.h-3\.5{height:calc(var(--spacing)*3.5)}.h-4{height:calc(var(--spacing)*4)}.h-5{height:calc(var(--spacing)*5)}.h-6{height:calc(var(--spacing)*6)}.h-8{height:calc(var(--spacing)*8)}.h-9{height:calc(var(--spacing)*9)}.h-10{height:calc(var(--spacing)*10)}.h-12{height:calc(var(--spacing)*12)}.h-16{height:calc(var(--spacing)*16)}.h-20{height:calc(var(--spacing)*20)}.h-24{height:calc(var(--spacing)*24)}.h-28{height:calc(var(--spacing)*28)}.h-64{height:calc(var(--spacing)*64)}.h-\[8px\]{height:8px}.h-\[14px\]{height:14px}.h-\[30px\]{height:30px}.h-\[50px\]{height:50px}.h-\[80px\]{height:80px}.h-\[80vh\]{height:80vh}.h-\[120px\]{height:120px}.h-\[160px\]{height:160px}.h-\[220px\]{height:220px}.h-auto{height:auto}.h-full{height:100%}.h-screen{height:100vh}.max-h-40{max-height:calc(var(--spacing)*40)}.max-h-60{max-height:calc(var(--spacing)*60)}.max-h-96{max-height:calc(var(--spacing)*96)}.max-h-\[60vh\]{max-height:60vh}.max-h-\[80vh\]{max-height:80vh}.max-h-\[85vh\]{max-height:85vh}.max-h-\[90vh\]{max-height:90vh}.max-h-full{max-height:100%}.min-h-0{min-height:calc(var(--spacing)*0)}.min-h-\[44px\]{min-height:44px}.min-h-\[48px\]{min-height:48px}.min-h-\[120px\]{min-height:120px}.min-h-\[400px\]{min-height:400px}.min-h-full{min-height:100%}.min-h-screen{min-height:100vh}.w-0\.5{width:calc(var(--spacing)*.5)}.w-2{width:calc(var(--spacing)*2)}.w-2\.5{width:calc(var(--spacing)*2.5)}.w-3{width:calc(var(--spacing)*3)}.w-3\.5{width:calc(var(--spacing)*3.5)}.w-4{width:calc(var(--spacing)*4)}.w-5{width:calc(var(--spacing)*5)}.w-6{width:calc(var(--spacing)*6)}.w-8{width:calc(var(--spacing)*8)}.w-9{width:calc(var(--spacing)*9)}.w-10{width:calc(var(--spacing)*10)}.w-11{width:calc(var(--spacing)*11)}.w-12{width:calc(var(--spacing)*12)}.w-14{width:calc(var(--spacing)*14)}.w-16{width:calc(var(--spacing)*16)}.w-20{width:calc(var(--spacing)*20)}.w-28{width:calc(var(--spacing)*28)}.w-32{width:calc(var(--spacing)*32)}.w-36{width:calc(var(--spacing)*36)}.w-40{width:calc(var(--spacing)*40)}.w-48{width:calc(var(--spacing)*48)}.w-64{width:calc(var(--spacing)*64)}.w-80{width:calc(var(--spacing)*80)}.w-\[8px\]{width:8px}.w-\[39px\]{width:39px}.w-\[150px\]{width:150px}.w-\[220px\]{width:220px}.w-\[680px\]{width:680px}.w-auto{width:auto}.w-full{width:100%}.w-px{width:1px}.max-w-2xl{max-width:var(--container-2xl)}.max-w-3xl{max-width:var(--container-3xl)}.max-w-4xl{max-width:var(--container-4xl)}.max-w-\[90vw\]{max-width:90vw}.max-w-\[100px\]{max-width:100px}.max-w-\[200px\]{max-width:200px}.max-w-full{max-width:100%}.max-w-lg{max-width:var(--container-lg)}.max-w-md{max-width:var(--container-md)}.max-w-none{max-width:none}.max-w-sm{max-width:var(--container-sm)}.max-w-xl{max-width:var(--container-xl)}.min-w-0{min-width:calc(var(--spacing)*0)}.min-w-48{min-width:calc(var(--spacing)*48)}.min-w-\[18px\]{min-width:18px}.min-w-\[70px\]{min-width:70px}.min-w-\[80px\]{min-width:80px}.min-w-\[100px\]{min-width:100px}.min-w-\[120px\]{min-width:120px}.min-w-\[150px\]{min-width:150px}.min-w-\[160px\]{min-width:160px}.min-w-\[180px\]{min-width:180px}.min-w-\[200px\]{min-width:200px}.flex-1{flex:1}.flex-shrink-0,.shrink-0{flex-shrink:0}.-translate-x-1\/2{--tw-translate-x: -50% ;translate:var(--tw-translate-x)var(--tw-translate-y)}.translate-x-0{--tw-translate-x:calc(var(--spacing)*0);translate:var(--tw-translate-x)var(--tw-translate-y)}.translate-x-0\.5{--tw-translate-x:calc(var(--spacing)*.5);translate:var(--tw-translate-x)var(--tw-translate-y)}.translate-x-1{--tw-translate-x:calc(var(--spacing)*1);translate:var(--tw-translate-x)var(--tw-translate-y)}.translate-x-4{--tw-translate-x:calc(var(--spacing)*4);translate:var(--tw-translate-x)var(--tw-translate-y)}.translate-x-5{--tw-translate-x:calc(var(--spacing)*5);translate:var(--tw-translate-x)var(--tw-translate-y)}.translate-x-7{--tw-translate-x:calc(var(--spacing)*7);translate:var(--tw-translate-x)var(--tw-translate-y)}.-translate-y-1\/2{--tw-translate-y: -50% ;translate:var(--tw-translate-x)var(--tw-translate-y)}.scale-110{--tw-scale-x:110%;--tw-scale-y:110%;--tw-scale-z:110%;scale:var(--tw-scale-x)var(--tw-scale-y)}.-rotate-90{rotate:-90deg}.rotate-180{rotate:180deg}.transform{transform:var(--tw-rotate-x,)var(--tw-rotate-y,)var(--tw-rotate-z,)var(--tw-skew-x,)var(--tw-skew-y,)}.animate-pulse{animation:var(--animate-pulse)}.animate-spin{animation:var(--animate-spin)}.cursor-default{cursor:default}.cursor-grab{cursor:grab}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.resize{resize:both}.resize-none{resize:none}.\[appearance\:textfield\]{appearance:textfield}.appearance-none{appearance:none}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.grid-cols-7{grid-template-columns:repeat(7,minmax(0,1fr))}.grid-cols-12{grid-template-columns:repeat(12,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.items-end{align-items:flex-end}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.justify-evenly{justify-content:space-evenly}.justify-start{justify-content:flex-start}.gap-0\.5{gap:calc(var(--spacing)*.5)}.gap-1{gap:calc(var(--spacing)*1)}.gap-1\.5{gap:calc(var(--spacing)*1.5)}.gap-2{gap:calc(var(--spacing)*2)}.gap-2\.5{gap:calc(var(--spacing)*2.5)}.gap-3{gap:calc(var(--spacing)*3)}.gap-4{gap:calc(var(--spacing)*4)}.gap-5{gap:calc(var(--spacing)*5)}.gap-6{gap:calc(var(--spacing)*6)}.gap-8{gap:calc(var(--spacing)*8)}:where(.space-y-0>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*0)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*0)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-1>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*1)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*1)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*2)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*2)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*3)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*3)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*4)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*4)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*5)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*5)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-6>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*6)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*6)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-8>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*8)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*8)*calc(1 - var(--tw-space-y-reverse)))}:where(.divide-y>:not(:last-child)){--tw-divide-y-reverse:0;border-bottom-style:var(--tw-border-style);border-top-style:var(--tw-border-style);border-top-width:calc(1px*var(--tw-divide-y-reverse));border-bottom-width:calc(1px*calc(1 - var(--tw-divide-y-reverse)))}:where(.divide-bambu-dark-tertiary>:not(:last-child)){border-color:var(--color-bambu-dark-tertiary)}.self-center{align-self:center}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:var(--radius-2xl)}.rounded-\[8px\]{border-radius:8px}.rounded-\[10px\]{border-radius:10px}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-md{border-radius:var(--radius-md)}.rounded-sm{border-radius:var(--radius-sm)}.rounded-xl{border-radius:var(--radius-xl)}.rounded-t-xl{border-top-left-radius:var(--radius-xl);border-top-right-radius:var(--radius-xl)}.rounded-r-lg{border-top-right-radius:var(--radius-lg);border-bottom-right-radius:var(--radius-lg)}.border{border-style:var(--tw-border-style);border-width:1px}.border-2{border-style:var(--tw-border-style);border-width:2px}.border-4{border-style:var(--tw-border-style);border-width:4px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-r{border-right-style:var(--tw-border-style);border-right-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-b-2{border-bottom-style:var(--tw-border-style);border-bottom-width:2px}.border-l{border-left-style:var(--tw-border-style);border-left-width:1px}.border-l-2{border-left-style:var(--tw-border-style);border-left-width:2px}.border-l-4{border-left-style:var(--tw-border-style);border-left-width:4px}.border-dashed{--tw-border-style:dashed;border-style:dashed}.border-bambu-dark-tertiary,.border-bambu-dark-tertiary\/50{border-color:var(--color-bambu-dark-tertiary)}@supports (color:color-mix(in lab,red,red)){.border-bambu-dark-tertiary\/50{border-color:color-mix(in oklab,var(--color-bambu-dark-tertiary)50%,transparent)}}.border-bambu-gray{border-color:var(--color-bambu-gray)}.border-bambu-green{border-color:var(--color-bambu-green)}.border-bambu-green\/30{border-color:#00ae424d}@supports (color:color-mix(in lab,red,red)){.border-bambu-green\/30{border-color:color-mix(in oklab,var(--color-bambu-green)30%,transparent)}}.border-bambu-green\/50{border-color:#00ae4280}@supports (color:color-mix(in lab,red,red)){.border-bambu-green\/50{border-color:color-mix(in oklab,var(--color-bambu-green)50%,transparent)}}.border-blue-500\/30{border-color:#3080ff4d}@supports (color:color-mix(in lab,red,red)){.border-blue-500\/30{border-color:color-mix(in oklab,var(--color-blue-500)30%,transparent)}}.border-gray-200{border-color:var(--color-gray-200)}.border-gray-300{border-color:var(--color-gray-300)}.border-gray-400{border-color:var(--color-gray-400)}.border-gray-700{border-color:var(--color-gray-700)}.border-green-500\/30{border-color:#00c7584d}@supports (color:color-mix(in lab,red,red)){.border-green-500\/30{border-color:color-mix(in oklab,var(--color-green-500)30%,transparent)}}.border-green-500\/50{border-color:#00c75880}@supports (color:color-mix(in lab,red,red)){.border-green-500\/50{border-color:color-mix(in oklab,var(--color-green-500)50%,transparent)}}.border-red-500\/30{border-color:#fb2c364d}@supports (color:color-mix(in lab,red,red)){.border-red-500\/30{border-color:color-mix(in oklab,var(--color-red-500)30%,transparent)}}.border-red-500\/50{border-color:#fb2c3680}@supports (color:color-mix(in lab,red,red)){.border-red-500\/50{border-color:color-mix(in oklab,var(--color-red-500)50%,transparent)}}.border-transparent{border-color:#0000}.border-white\/10{border-color:#ffffff1a}@supports (color:color-mix(in lab,red,red)){.border-white\/10{border-color:color-mix(in oklab,var(--color-white)10%,transparent)}}.border-white\/20{border-color:#fff3}@supports (color:color-mix(in lab,red,red)){.border-white\/20{border-color:color-mix(in oklab,var(--color-white)20%,transparent)}}.border-yellow-500{border-color:var(--color-yellow-500)}.border-yellow-500\/30{border-color:#edb2004d}@supports (color:color-mix(in lab,red,red)){.border-yellow-500\/30{border-color:color-mix(in oklab,var(--color-yellow-500)30%,transparent)}}.border-yellow-500\/50{border-color:#edb20080}@supports (color:color-mix(in lab,red,red)){.border-yellow-500\/50{border-color:color-mix(in oklab,var(--color-yellow-500)50%,transparent)}}.border-t-transparent{border-top-color:#0000}.bg-amber-500\/20{background-color:#f99c0033}@supports (color:color-mix(in lab,red,red)){.bg-amber-500\/20{background-color:color-mix(in oklab,var(--color-amber-500)20%,transparent)}}.bg-bambu-dark{background-color:var(--color-bambu-dark)}.bg-bambu-dark-secondary,.bg-bambu-dark-secondary\/90{background-color:var(--color-bambu-dark-secondary)}@supports (color:color-mix(in lab,red,red)){.bg-bambu-dark-secondary\/90{background-color:color-mix(in oklab,var(--color-bambu-dark-secondary)90%,transparent)}}.bg-bambu-dark-tertiary,.bg-bambu-dark-tertiary\/50{background-color:var(--color-bambu-dark-tertiary)}@supports (color:color-mix(in lab,red,red)){.bg-bambu-dark-tertiary\/50{background-color:color-mix(in oklab,var(--color-bambu-dark-tertiary)50%,transparent)}}.bg-bambu-dark\/30{background-color:var(--color-bambu-dark)}@supports (color:color-mix(in lab,red,red)){.bg-bambu-dark\/30{background-color:color-mix(in oklab,var(--color-bambu-dark)30%,transparent)}}.bg-bambu-dark\/50{background-color:var(--color-bambu-dark)}@supports (color:color-mix(in lab,red,red)){.bg-bambu-dark\/50{background-color:color-mix(in oklab,var(--color-bambu-dark)50%,transparent)}}.bg-bambu-dark\/80{background-color:var(--color-bambu-dark)}@supports (color:color-mix(in lab,red,red)){.bg-bambu-dark\/80{background-color:color-mix(in oklab,var(--color-bambu-dark)80%,transparent)}}.bg-bambu-dark\/90{background-color:var(--color-bambu-dark)}@supports (color:color-mix(in lab,red,red)){.bg-bambu-dark\/90{background-color:color-mix(in oklab,var(--color-bambu-dark)90%,transparent)}}.bg-bambu-gray\/20{background-color:var(--color-bambu-gray)}@supports (color:color-mix(in lab,red,red)){.bg-bambu-gray\/20{background-color:color-mix(in oklab,var(--color-bambu-gray)20%,transparent)}}.bg-bambu-gray\/30{background-color:var(--color-bambu-gray)}@supports (color:color-mix(in lab,red,red)){.bg-bambu-gray\/30{background-color:color-mix(in oklab,var(--color-bambu-gray)30%,transparent)}}.bg-bambu-gray\/50{background-color:var(--color-bambu-gray)}@supports (color:color-mix(in lab,red,red)){.bg-bambu-gray\/50{background-color:color-mix(in oklab,var(--color-bambu-gray)50%,transparent)}}.bg-bambu-green{background-color:var(--color-bambu-green)}.bg-bambu-green\/10{background-color:#00ae421a}@supports (color:color-mix(in lab,red,red)){.bg-bambu-green\/10{background-color:color-mix(in oklab,var(--color-bambu-green)10%,transparent)}}.bg-bambu-green\/20{background-color:#00ae4233}@supports (color:color-mix(in lab,red,red)){.bg-bambu-green\/20{background-color:color-mix(in oklab,var(--color-bambu-green)20%,transparent)}}.bg-bambu-green\/30{background-color:#00ae424d}@supports (color:color-mix(in lab,red,red)){.bg-bambu-green\/30{background-color:color-mix(in oklab,var(--color-bambu-green)30%,transparent)}}.bg-bambu-green\/50{background-color:#00ae4280}@supports (color:color-mix(in lab,red,red)){.bg-bambu-green\/50{background-color:color-mix(in oklab,var(--color-bambu-green)50%,transparent)}}.bg-bambu-green\/75{background-color:#00ae42bf}@supports (color:color-mix(in lab,red,red)){.bg-bambu-green\/75{background-color:color-mix(in oklab,var(--color-bambu-green)75%,transparent)}}.bg-black{background-color:var(--color-black)}.bg-black\/50{background-color:#00000080}@supports (color:color-mix(in lab,red,red)){.bg-black\/50{background-color:color-mix(in oklab,var(--color-black)50%,transparent)}}.bg-black\/60{background-color:#0009}@supports (color:color-mix(in lab,red,red)){.bg-black\/60{background-color:color-mix(in oklab,var(--color-black)60%,transparent)}}.bg-black\/70{background-color:#000000b3}@supports (color:color-mix(in lab,red,red)){.bg-black\/70{background-color:color-mix(in oklab,var(--color-black)70%,transparent)}}.bg-black\/80{background-color:#000c}@supports (color:color-mix(in lab,red,red)){.bg-black\/80{background-color:color-mix(in oklab,var(--color-black)80%,transparent)}}.bg-black\/90{background-color:#000000e6}@supports (color:color-mix(in lab,red,red)){.bg-black\/90{background-color:color-mix(in oklab,var(--color-black)90%,transparent)}}.bg-blue-400\/10{background-color:#54a2ff1a}@supports (color:color-mix(in lab,red,red)){.bg-blue-400\/10{background-color:color-mix(in oklab,var(--color-blue-400)10%,transparent)}}.bg-blue-500{background-color:var(--color-blue-500)}.bg-blue-500\/10{background-color:#3080ff1a}@supports (color:color-mix(in lab,red,red)){.bg-blue-500\/10{background-color:color-mix(in oklab,var(--color-blue-500)10%,transparent)}}.bg-blue-500\/20{background-color:#3080ff33}@supports (color:color-mix(in lab,red,red)){.bg-blue-500\/20{background-color:color-mix(in oklab,var(--color-blue-500)20%,transparent)}}.bg-gray-100{background-color:var(--color-gray-100)}.bg-gray-200{background-color:var(--color-gray-200)}.bg-gray-300{background-color:var(--color-gray-300)}.bg-gray-400{background-color:var(--color-gray-400)}.bg-gray-400\/10{background-color:#99a1af1a}@supports (color:color-mix(in lab,red,red)){.bg-gray-400\/10{background-color:color-mix(in oklab,var(--color-gray-400)10%,transparent)}}.bg-gray-500{background-color:var(--color-gray-500)}.bg-gray-500\/20{background-color:#6a728233}@supports (color:color-mix(in lab,red,red)){.bg-gray-500\/20{background-color:color-mix(in oklab,var(--color-gray-500)20%,transparent)}}.bg-green-400{background-color:var(--color-green-400)}.bg-green-400\/10{background-color:#05df721a}@supports (color:color-mix(in lab,red,red)){.bg-green-400\/10{background-color:color-mix(in oklab,var(--color-green-400)10%,transparent)}}.bg-green-500{background-color:var(--color-green-500)}.bg-green-500\/10{background-color:#00c7581a}@supports (color:color-mix(in lab,red,red)){.bg-green-500\/10{background-color:color-mix(in oklab,var(--color-green-500)10%,transparent)}}.bg-green-500\/20{background-color:#00c75833}@supports (color:color-mix(in lab,red,red)){.bg-green-500\/20{background-color:color-mix(in oklab,var(--color-green-500)20%,transparent)}}.bg-orange-400\/10{background-color:#ff8b1a1a}@supports (color:color-mix(in lab,red,red)){.bg-orange-400\/10{background-color:color-mix(in oklab,var(--color-orange-400)10%,transparent)}}.bg-orange-500{background-color:var(--color-orange-500)}.bg-orange-500\/20{background-color:#fe6e0033}@supports (color:color-mix(in lab,red,red)){.bg-orange-500\/20{background-color:color-mix(in oklab,var(--color-orange-500)20%,transparent)}}.bg-purple-500\/20{background-color:#ac4bff33}@supports (color:color-mix(in lab,red,red)){.bg-purple-500\/20{background-color:color-mix(in oklab,var(--color-purple-500)20%,transparent)}}.bg-purple-500\/80{background-color:#ac4bffcc}@supports (color:color-mix(in lab,red,red)){.bg-purple-500\/80{background-color:color-mix(in oklab,var(--color-purple-500)80%,transparent)}}.bg-red-400{background-color:var(--color-red-400)}.bg-red-400\/10{background-color:#ff65681a}@supports (color:color-mix(in lab,red,red)){.bg-red-400\/10{background-color:color-mix(in oklab,var(--color-red-400)10%,transparent)}}.bg-red-500{background-color:var(--color-red-500)}.bg-red-500\/10{background-color:#fb2c361a}@supports (color:color-mix(in lab,red,red)){.bg-red-500\/10{background-color:color-mix(in oklab,var(--color-red-500)10%,transparent)}}.bg-red-500\/15{background-color:#fb2c3626}@supports (color:color-mix(in lab,red,red)){.bg-red-500\/15{background-color:color-mix(in oklab,var(--color-red-500)15%,transparent)}}.bg-red-500\/20{background-color:#fb2c3633}@supports (color:color-mix(in lab,red,red)){.bg-red-500\/20{background-color:color-mix(in oklab,var(--color-red-500)20%,transparent)}}.bg-red-500\/30{background-color:#fb2c364d}@supports (color:color-mix(in lab,red,red)){.bg-red-500\/30{background-color:color-mix(in oklab,var(--color-red-500)30%,transparent)}}.bg-red-500\/80{background-color:#fb2c36cc}@supports (color:color-mix(in lab,red,red)){.bg-red-500\/80{background-color:color-mix(in oklab,var(--color-red-500)80%,transparent)}}.bg-red-600{background-color:var(--color-red-600)}.bg-transparent{background-color:#0000}.bg-white{background-color:var(--color-white)}.bg-yellow-100{background-color:var(--color-yellow-100)}.bg-yellow-400{background-color:var(--color-yellow-400)}.bg-yellow-400\/10{background-color:#fac8001a}@supports (color:color-mix(in lab,red,red)){.bg-yellow-400\/10{background-color:color-mix(in oklab,var(--color-yellow-400)10%,transparent)}}.bg-yellow-400\/20{background-color:#fac80033}@supports (color:color-mix(in lab,red,red)){.bg-yellow-400\/20{background-color:color-mix(in oklab,var(--color-yellow-400)20%,transparent)}}.bg-yellow-500{background-color:var(--color-yellow-500)}.bg-yellow-500\/10{background-color:#edb2001a}@supports (color:color-mix(in lab,red,red)){.bg-yellow-500\/10{background-color:color-mix(in oklab,var(--color-yellow-500)10%,transparent)}}.bg-yellow-500\/20{background-color:#edb20033}@supports (color:color-mix(in lab,red,red)){.bg-yellow-500\/20{background-color:color-mix(in oklab,var(--color-yellow-500)20%,transparent)}}.bg-yellow-600{background-color:var(--color-yellow-600)}.fill-yellow-400{fill:var(--color-yellow-400)}.object-contain{object-fit:contain}.object-cover{object-fit:cover}.object-left{object-position:left}.p-0{padding:calc(var(--spacing)*0)}.p-1{padding:calc(var(--spacing)*1)}.p-1\.5{padding:calc(var(--spacing)*1.5)}.p-2{padding:calc(var(--spacing)*2)}.p-2\.5{padding:calc(var(--spacing)*2.5)}.p-3{padding:calc(var(--spacing)*3)}.p-4{padding:calc(var(--spacing)*4)}.p-5{padding:calc(var(--spacing)*5)}.p-6{padding:calc(var(--spacing)*6)}.p-8{padding:calc(var(--spacing)*8)}.p-12{padding:calc(var(--spacing)*12)}.px-1{padding-inline:calc(var(--spacing)*1)}.px-1\.5{padding-inline:calc(var(--spacing)*1.5)}.px-2{padding-inline:calc(var(--spacing)*2)}.px-2\.5{padding-inline:calc(var(--spacing)*2.5)}.px-3{padding-inline:calc(var(--spacing)*3)}.px-3\.5{padding-inline:calc(var(--spacing)*3.5)}.px-4{padding-inline:calc(var(--spacing)*4)}.px-5{padding-inline:calc(var(--spacing)*5)}.px-6{padding-inline:calc(var(--spacing)*6)}.px-7{padding-inline:calc(var(--spacing)*7)}.px-\[18px\]{padding-inline:18px}.py-0\.5{padding-block:calc(var(--spacing)*.5)}.py-1{padding-block:calc(var(--spacing)*1)}.py-1\.5{padding-block:calc(var(--spacing)*1.5)}.py-2{padding-block:calc(var(--spacing)*2)}.py-2\.5{padding-block:calc(var(--spacing)*2.5)}.py-3{padding-block:calc(var(--spacing)*3)}.py-4{padding-block:calc(var(--spacing)*4)}.py-8{padding-block:calc(var(--spacing)*8)}.py-12{padding-block:calc(var(--spacing)*12)}.py-\[3px\]{padding-block:3px}.pt-0{padding-top:calc(var(--spacing)*0)}.pt-0\.5{padding-top:calc(var(--spacing)*.5)}.pt-2{padding-top:calc(var(--spacing)*2)}.pt-3{padding-top:calc(var(--spacing)*3)}.pt-4{padding-top:calc(var(--spacing)*4)}.pr-3{padding-right:calc(var(--spacing)*3)}.pr-4{padding-right:calc(var(--spacing)*4)}.pr-5{padding-right:calc(var(--spacing)*5)}.pr-8{padding-right:calc(var(--spacing)*8)}.pb-2{padding-bottom:calc(var(--spacing)*2)}.pb-4{padding-bottom:calc(var(--spacing)*4)}.pb-\[5px\]{padding-bottom:5px}.pl-2{padding-left:calc(var(--spacing)*2)}.pl-4{padding-left:calc(var(--spacing)*4)}.pl-8{padding-left:calc(var(--spacing)*8)}.pl-10{padding-left:calc(var(--spacing)*10)}.text-center{text-align:center}.text-left{text-align:left}.text-right{text-align:right}.font-mono{font-family:var(--font-mono)}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\[10px\]{font-size:10px}.text-\[11px\]{font-size:11px}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-wide{--tw-tracking:var(--tracking-wide);letter-spacing:var(--tracking-wide)}.tracking-widest{--tw-tracking:var(--tracking-widest);letter-spacing:var(--tracking-widest)}.whitespace-nowrap{white-space:nowrap}.whitespace-pre-line{white-space:pre-line}.whitespace-pre-wrap{white-space:pre-wrap}.text-amber-400{color:var(--color-amber-400)}.text-bambu-dark-tertiary{color:var(--color-bambu-dark-tertiary)}.text-bambu-gray{color:var(--color-bambu-gray)}.text-bambu-gray-light{color:var(--color-bambu-gray-light)}.text-bambu-gray\/30{color:var(--color-bambu-gray)}@supports (color:color-mix(in lab,red,red)){.text-bambu-gray\/30{color:color-mix(in oklab,var(--color-bambu-gray)30%,transparent)}}.text-bambu-gray\/50{color:var(--color-bambu-gray)}@supports (color:color-mix(in lab,red,red)){.text-bambu-gray\/50{color:color-mix(in oklab,var(--color-bambu-gray)50%,transparent)}}.text-bambu-gray\/70{color:var(--color-bambu-gray)}@supports (color:color-mix(in lab,red,red)){.text-bambu-gray\/70{color:color-mix(in oklab,var(--color-bambu-gray)70%,transparent)}}.text-bambu-green{color:var(--color-bambu-green)}.text-blue-400{color:var(--color-blue-400)}.text-gray-400{color:var(--color-gray-400)}.text-gray-500{color:var(--color-gray-500)}.text-gray-600{color:var(--color-gray-600)}.text-gray-700{color:var(--color-gray-700)}.text-gray-900{color:var(--color-gray-900)}.text-green-400{color:var(--color-green-400)}.text-green-500{color:var(--color-green-500)}.text-orange-400{color:var(--color-orange-400)}.text-purple-400{color:var(--color-purple-400)}.text-red-400{color:var(--color-red-400)}.text-red-500{color:var(--color-red-500)}.text-white{color:var(--color-white)}.text-white\/80{color:#fffc}@supports (color:color-mix(in lab,red,red)){.text-white\/80{color:color-mix(in oklab,var(--color-white)80%,transparent)}}.text-yellow-400{color:var(--color-yellow-400)}.text-yellow-500{color:var(--color-yellow-500)}.text-yellow-600{color:var(--color-yellow-600)}.capitalize{text-transform:capitalize}.uppercase{text-transform:uppercase}.italic{font-style:italic}.underline{text-decoration-line:underline}.placeholder-bambu-gray::placeholder,.placeholder-bambu-gray\/50::placeholder{color:var(--color-bambu-gray)}@supports (color:color-mix(in lab,red,red)){.placeholder-bambu-gray\/50::placeholder{color:color-mix(in oklab,var(--color-bambu-gray)50%,transparent)}}.accent-bambu-green{accent-color:var(--color-bambu-green)}.opacity-0{opacity:0}.opacity-20{opacity:.2}.opacity-30{opacity:.3}.opacity-50{opacity:.5}.opacity-60{opacity:.6}.opacity-80{opacity:.8}.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-2xl{--tw-shadow:0 25px 50px -12px var(--tw-shadow-color,#00000040);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-inner{--tw-shadow:inset 0 2px 4px 0 var(--tw-shadow-color,#0000000d);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a),0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-md{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a),0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-xl{--tw-shadow:0 20px 25px -5px var(--tw-shadow-color,#0000001a),0 8px 10px -6px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring,.ring-1{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(1px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring-2{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring-bambu-green{--tw-ring-color:var(--color-bambu-green)}.ring-white{--tw-ring-color:var(--color-white)}.blur{--tw-blur:blur(8px);filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.invert{--tw-invert:invert(100%);filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.filter{filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.backdrop-blur-sm{--tw-backdrop-blur:blur(var(--blur-sm));-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-200{--tw-duration:.2s;transition-duration:.2s}.duration-300{--tw-duration:.3s;transition-duration:.3s}.ease-in-out{--tw-ease:var(--ease-in-out);transition-timing-function:var(--ease-in-out)}@media(hover:hover){.group-hover\:text-bambu-green:is(:where(.group):hover *){color:var(--color-bambu-green)}.group-hover\:opacity-50:is(:where(.group):hover *){opacity:.5}.group-hover\:opacity-100:is(:where(.group):hover *){opacity:1}}.peer-checked\:bg-bambu-green:is(:where(.peer):checked~*){background-color:var(--color-bambu-green)}.peer-focus\:outline-none:is(:where(.peer):focus~*){--tw-outline-style:none;outline-style:none}.before\:absolute:before{content:var(--tw-content);position:absolute}.before\:top-0:before{content:var(--tw-content);top:calc(var(--spacing)*0)}.before\:right-0:before{content:var(--tw-content);right:calc(var(--spacing)*0)}.before\:left-0:before{content:var(--tw-content);left:calc(var(--spacing)*0)}.before\:h-0\.5:before{content:var(--tw-content);height:calc(var(--spacing)*.5)}.before\:bg-bambu-green:before{content:var(--tw-content);background-color:var(--color-bambu-green)}.after\:absolute:after{content:var(--tw-content);position:absolute}.after\:top-\[2px\]:after{content:var(--tw-content);top:2px}.after\:left-\[2px\]:after{content:var(--tw-content);left:2px}.after\:h-4:after{content:var(--tw-content);height:calc(var(--spacing)*4)}.after\:h-5:after{content:var(--tw-content);height:calc(var(--spacing)*5)}.after\:w-4:after{content:var(--tw-content);width:calc(var(--spacing)*4)}.after\:w-5:after{content:var(--tw-content);width:calc(var(--spacing)*5)}.after\:rounded-full:after{content:var(--tw-content);border-radius:3.40282e38px}.after\:bg-white:after{content:var(--tw-content);background-color:var(--color-white)}.after\:transition-all:after{content:var(--tw-content);transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.after\:content-\[\'\'\]:after{--tw-content:"";content:var(--tw-content)}.peer-checked\:after\:translate-x-full:is(:where(.peer):checked~*):after{content:var(--tw-content);--tw-translate-x:100%;translate:var(--tw-translate-x)var(--tw-translate-y)}.peer-checked\:after\:border-white:is(:where(.peer):checked~*):after{content:var(--tw-content);border-color:var(--color-white)}@media(hover:hover){.hover\:border-bambu-gray:hover{border-color:var(--color-bambu-gray)}.hover\:border-bambu-green:hover{border-color:var(--color-bambu-green)}.hover\:border-bambu-green-dark:hover{border-color:var(--color-bambu-green-dark)}.hover\:border-white\/40:hover{border-color:#fff6}@supports (color:color-mix(in lab,red,red)){.hover\:border-white\/40:hover{border-color:color-mix(in oklab,var(--color-white)40%,transparent)}}.hover\:bg-bambu-dark:hover{background-color:var(--color-bambu-dark)}.hover\:bg-bambu-dark-secondary:hover{background-color:var(--color-bambu-dark-secondary)}.hover\:bg-bambu-dark-tertiary:hover,.hover\:bg-bambu-dark-tertiary\/30:hover{background-color:var(--color-bambu-dark-tertiary)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-bambu-dark-tertiary\/30:hover{background-color:color-mix(in oklab,var(--color-bambu-dark-tertiary)30%,transparent)}}.hover\:bg-bambu-dark-tertiary\/50:hover{background-color:var(--color-bambu-dark-tertiary)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-bambu-dark-tertiary\/50:hover{background-color:color-mix(in oklab,var(--color-bambu-dark-tertiary)50%,transparent)}}.hover\:bg-bambu-dark-tertiary\/70:hover{background-color:var(--color-bambu-dark-tertiary)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-bambu-dark-tertiary\/70:hover{background-color:color-mix(in oklab,var(--color-bambu-dark-tertiary)70%,transparent)}}.hover\:bg-bambu-dark-tertiary\/80:hover{background-color:var(--color-bambu-dark-tertiary)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-bambu-dark-tertiary\/80:hover{background-color:color-mix(in oklab,var(--color-bambu-dark-tertiary)80%,transparent)}}.hover\:bg-bambu-gray-dark:hover{background-color:var(--color-bambu-gray-dark)}.hover\:bg-bambu-green-dark:hover{background-color:var(--color-bambu-green-dark)}.hover\:bg-bambu-green-light:hover{background-color:var(--color-bambu-green-light)}.hover\:bg-bambu-green\/20:hover{background-color:#00ae4233}@supports (color:color-mix(in lab,red,red)){.hover\:bg-bambu-green\/20:hover{background-color:color-mix(in oklab,var(--color-bambu-green)20%,transparent)}}.hover\:bg-bambu-green\/30:hover{background-color:#00ae424d}@supports (color:color-mix(in lab,red,red)){.hover\:bg-bambu-green\/30:hover{background-color:color-mix(in oklab,var(--color-bambu-green)30%,transparent)}}.hover\:bg-bambu-green\/90:hover{background-color:#00ae42e6}@supports (color:color-mix(in lab,red,red)){.hover\:bg-bambu-green\/90:hover{background-color:color-mix(in oklab,var(--color-bambu-green)90%,transparent)}}.hover\:bg-black\/20:hover{background-color:#0003}@supports (color:color-mix(in lab,red,red)){.hover\:bg-black\/20:hover{background-color:color-mix(in oklab,var(--color-black)20%,transparent)}}.hover\:bg-black\/70:hover{background-color:#000000b3}@supports (color:color-mix(in lab,red,red)){.hover\:bg-black\/70:hover{background-color:color-mix(in oklab,var(--color-black)70%,transparent)}}.hover\:bg-black\/80:hover{background-color:#000c}@supports (color:color-mix(in lab,red,red)){.hover\:bg-black\/80:hover{background-color:color-mix(in oklab,var(--color-black)80%,transparent)}}.hover\:bg-gray-50:hover{background-color:var(--color-gray-50)}.hover\:bg-gray-100:hover{background-color:var(--color-gray-100)}.hover\:bg-gray-300:hover{background-color:var(--color-gray-300)}.hover\:bg-gray-400:hover{background-color:var(--color-gray-400)}.hover\:bg-gray-700:hover{background-color:var(--color-gray-700)}.hover\:bg-red-400\/10:hover{background-color:#ff65681a}@supports (color:color-mix(in lab,red,red)){.hover\:bg-red-400\/10:hover{background-color:color-mix(in oklab,var(--color-red-400)10%,transparent)}}.hover\:bg-red-500:hover{background-color:var(--color-red-500)}.hover\:bg-red-500\/10:hover{background-color:#fb2c361a}@supports (color:color-mix(in lab,red,red)){.hover\:bg-red-500\/10:hover{background-color:color-mix(in oklab,var(--color-red-500)10%,transparent)}}.hover\:bg-red-500\/30:hover{background-color:#fb2c364d}@supports (color:color-mix(in lab,red,red)){.hover\:bg-red-500\/30:hover{background-color:color-mix(in oklab,var(--color-red-500)30%,transparent)}}.hover\:bg-red-600:hover{background-color:var(--color-red-600)}.hover\:bg-red-700:hover{background-color:var(--color-red-700)}.hover\:bg-yellow-500\/30:hover{background-color:#edb2004d}@supports (color:color-mix(in lab,red,red)){.hover\:bg-yellow-500\/30:hover{background-color:color-mix(in oklab,var(--color-yellow-500)30%,transparent)}}.hover\:bg-yellow-600:hover{background-color:var(--color-yellow-600)}.hover\:bg-yellow-700:hover{background-color:var(--color-yellow-700)}.hover\:text-bambu-green:hover{color:var(--color-bambu-green)}.hover\:text-bambu-green\/80:hover{color:#00ae42cc}@supports (color:color-mix(in lab,red,red)){.hover\:text-bambu-green\/80:hover{color:color-mix(in oklab,var(--color-bambu-green)80%,transparent)}}.hover\:text-red-300:hover{color:var(--color-red-300)}.hover\:text-red-400:hover{color:var(--color-red-400)}.hover\:text-white:hover{color:var(--color-white)}.hover\:underline:hover{text-decoration-line:underline}.hover\:opacity-70:hover{opacity:.7}.hover\:opacity-80:hover{opacity:.8}}.focus\:border-bambu-green:focus{border-color:var(--color-bambu-green)}.focus\:ring-2:focus{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus\:ring-bambu-gray:focus{--tw-ring-color:var(--color-bambu-gray)}.focus\:ring-bambu-green:focus{--tw-ring-color:var(--color-bambu-green)}.focus\:ring-red-500:focus{--tw-ring-color:var(--color-red-500)}.focus\:ring-offset-0:focus{--tw-ring-offset-width:0px;--tw-ring-offset-shadow:var(--tw-ring-inset,)0 0 0 var(--tw-ring-offset-width)var(--tw-ring-offset-color)}.focus\:ring-offset-2:focus{--tw-ring-offset-width:2px;--tw-ring-offset-shadow:var(--tw-ring-inset,)0 0 0 var(--tw-ring-offset-width)var(--tw-ring-offset-color)}.focus\:ring-offset-bambu-dark:focus{--tw-ring-offset-color:var(--color-bambu-dark)}.focus\:outline-none:focus{--tw-outline-style:none;outline-style:none}.active\:cursor-grabbing:active{cursor:grabbing}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-30:disabled{opacity:.3}.disabled\:opacity-40:disabled{opacity:.4}.disabled\:opacity-50:disabled{opacity:.5}.disabled\:opacity-60:disabled{opacity:.6}@media(hover:hover){.disabled\:hover\:bg-bambu-dark-secondary:disabled:hover{background-color:var(--color-bambu-dark-secondary)}.disabled\:hover\:text-bambu-gray:disabled:hover{color:var(--color-bambu-gray)}}@media(min-width:40rem){.sm\:inline{display:inline}.sm\:h-4{height:calc(var(--spacing)*4)}.sm\:w-4{width:calc(var(--spacing)*4)}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.sm\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.sm\:p-1\.5{padding:calc(var(--spacing)*1.5)}}@media(min-width:48rem){.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}}@media(min-width:64rem){.lg\:w-80{width:calc(var(--spacing)*80)}.lg\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\:flex-row{flex-direction:row}}@media(min-width:80rem){.xl\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}}.dark\:border-bambu-dark-tertiary:where(.dark,.dark *){border-color:var(--color-bambu-dark-tertiary)}.dark\:border-gray-500:where(.dark,.dark *){border-color:var(--color-gray-500)}.dark\:bg-bambu-dark:where(.dark,.dark *){background-color:var(--color-bambu-dark)}.dark\:bg-bambu-dark-secondary:where(.dark,.dark *){background-color:var(--color-bambu-dark-secondary)}.dark\:bg-bambu-dark-tertiary:where(.dark,.dark *){background-color:var(--color-bambu-dark-tertiary)}.dark\:bg-yellow-900\/20:where(.dark,.dark *){background-color:#733e0a33}@supports (color:color-mix(in lab,red,red)){.dark\:bg-yellow-900\/20:where(.dark,.dark *){background-color:color-mix(in oklab,var(--color-yellow-900)20%,transparent)}}.dark\:text-bambu-gray:where(.dark,.dark *){color:var(--color-bambu-gray)}.dark\:text-gray-400:where(.dark,.dark *){color:var(--color-gray-400)}.dark\:text-gray-500:where(.dark,.dark *){color:var(--color-gray-500)}.dark\:text-white:where(.dark,.dark *){color:var(--color-white)}.dark\:text-yellow-400:where(.dark,.dark *){color:var(--color-yellow-400)}@media(hover:hover){.dark\:hover\:bg-bambu-dark-tertiary:where(.dark,.dark *):hover{background-color:var(--color-bambu-dark-tertiary)}}.\[\&\:\:-moz-range-thumb\]\:h-4::-moz-range-thumb{height:calc(var(--spacing)*4)}.\[\&\:\:-moz-range-thumb\]\:w-4::-moz-range-thumb{width:calc(var(--spacing)*4)}.\[\&\:\:-moz-range-thumb\]\:cursor-pointer::-moz-range-thumb{cursor:pointer}.\[\&\:\:-moz-range-thumb\]\:rounded-full::-moz-range-thumb{border-radius:3.40282e38px}.\[\&\:\:-moz-range-thumb\]\:border-0::-moz-range-thumb{border-style:var(--tw-border-style);border-width:0}.\[\&\:\:-moz-range-thumb\]\:bg-bambu-green::-moz-range-thumb{background-color:var(--color-bambu-green)}.\[\&\:\:-webkit-slider-thumb\]\:h-3::-webkit-slider-thumb{height:calc(var(--spacing)*3)}.\[\&\:\:-webkit-slider-thumb\]\:h-4::-webkit-slider-thumb{height:calc(var(--spacing)*4)}.\[\&\:\:-webkit-slider-thumb\]\:w-3::-webkit-slider-thumb{width:calc(var(--spacing)*3)}.\[\&\:\:-webkit-slider-thumb\]\:w-4::-webkit-slider-thumb{width:calc(var(--spacing)*4)}.\[\&\:\:-webkit-slider-thumb\]\:cursor-pointer::-webkit-slider-thumb{cursor:pointer}.\[\&\:\:-webkit-slider-thumb\]\:appearance-none::-webkit-slider-thumb{appearance:none}.\[\&\:\:-webkit-slider-thumb\]\:rounded-full::-webkit-slider-thumb{border-radius:3.40282e38px}.\[\&\:\:-webkit-slider-thumb\]\:bg-bambu-green::-webkit-slider-thumb{background-color:var(--color-bambu-green)}}:root{--bg-primary:#f5f5f5;--bg-secondary:#fff;--bg-tertiary:#e5e5e5;--text-primary:#1a1a1a;--text-secondary:#4a4a4a;--text-muted:#6b6b6b;--text-tertiary:gray;--border-color:#d4d4d4;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:Inter,system-ui,sans-serif;font-weight:400;line-height:1.5}.dark{--bg-primary:#1a1a1a;--bg-secondary:#2d2d2d;--bg-tertiary:#3d3d3d;--text-primary:#fff;--text-secondary:#a0a0a0;--text-muted:gray;--text-tertiary:#4a4a4a;--border-color:#3d3d3d}body{background-color:var(--bg-primary);color:var(--text-primary);min-height:100vh;margin:0;transition:background-color .2s,color .2s}#root{min-height:100vh}.text-white{color:var(--text-primary)}.bg-bambu-dark,.bg-bambu-dark-secondary,.bg-bambu-dark-tertiary,.border-bambu-dark-tertiary{transition:background-color .2s,border-color .2s}@keyframes slide-in{0%{opacity:0;transform:translate(100%)}to{opacity:1;transform:translate(0)}}.animate-slide-in{animation:.2s ease-out slide-in}.icon-theme{opacity:.5}.dark .icon-theme{filter:invert();opacity:.4}.icon-green{filter:invert(48%)sepia(89%)saturate(459%)hue-rotate(93deg)brightness(95%)contrast(92%);opacity:1}.icon-heating{filter:invert(50%)sepia()saturate(1000%)hue-rotate(360deg)brightness()contrast();opacity:1}.dark .jogpad-theme{filter:brightness(.35)contrast(1.2)}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-scale-x{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-y{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-z{syntax:"*";inherits:false;initial-value:1}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-divide-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}@property --tw-content{syntax:"*";inherits:false;initial-value:""}@keyframes spin{to{transform:rotate(360deg)}}@keyframes pulse{50%{opacity:.5}}@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-scale-x:1;--tw-scale-y:1;--tw-scale-z:1;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-space-y-reverse:0;--tw-divide-y-reverse:0;--tw-border-style:solid;--tw-font-weight:initial;--tw-tracking:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-duration:initial;--tw-ease:initial;--tw-content:""}}} diff --git a/static/assets/index-BREH29lW.css b/static/assets/index-BREH29lW.css new file mode 100644 index 000000000..9edbaab34 --- /dev/null +++ b/static/assets/index-BREH29lW.css @@ -0,0 +1 @@ +@import"https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap";@layer properties,theme,base,components,utilities;@layer theme{:root,:host{--font-sans:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--color-red-300:oklch(80.8% .114 19.571);--color-red-400:oklch(70.4% .191 22.216);--color-red-500:oklch(63.7% .237 25.331);--color-red-600:oklch(57.7% .245 27.325);--color-red-700:oklch(50.5% .213 27.518);--color-orange-400:oklch(75% .183 55.934);--color-orange-500:oklch(70.5% .213 47.604);--color-amber-400:oklch(82.8% .189 84.429);--color-amber-500:oklch(76.9% .188 70.08);--color-yellow-100:oklch(97.3% .071 103.193);--color-yellow-400:oklch(85.2% .199 91.936);--color-yellow-500:oklch(79.5% .184 86.047);--color-yellow-600:oklch(68.1% .162 75.834);--color-yellow-700:oklch(55.4% .135 66.442);--color-yellow-900:oklch(42.1% .095 57.708);--color-green-400:oklch(79.2% .209 151.711);--color-green-500:oklch(72.3% .219 149.579);--color-blue-400:oklch(70.7% .165 254.624);--color-blue-500:oklch(62.3% .214 259.815);--color-purple-400:oklch(71.4% .203 305.504);--color-purple-500:oklch(62.7% .265 303.9);--color-gray-50:oklch(98.5% .002 247.839);--color-gray-100:oklch(96.7% .003 264.542);--color-gray-200:oklch(92.8% .006 264.531);--color-gray-300:oklch(87.2% .01 258.338);--color-gray-400:oklch(70.7% .022 261.325);--color-gray-500:oklch(55.1% .027 264.364);--color-gray-600:oklch(44.6% .03 256.802);--color-gray-700:oklch(37.3% .034 259.733);--color-gray-900:oklch(21% .034 264.665);--color-black:#000;--color-white:#fff;--spacing:.25rem;--container-sm:24rem;--container-md:28rem;--container-lg:32rem;--container-xl:36rem;--container-2xl:42rem;--container-3xl:48rem;--container-4xl:56rem;--text-xs:.75rem;--text-xs--line-height:calc(1/.75);--text-sm:.875rem;--text-sm--line-height:calc(1.25/.875);--text-base:1rem;--text-base--line-height: 1.5 ;--text-lg:1.125rem;--text-lg--line-height:calc(1.75/1.125);--text-xl:1.25rem;--text-xl--line-height:calc(1.75/1.25);--text-2xl:1.5rem;--text-2xl--line-height:calc(2/1.5);--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--tracking-wide:.025em;--tracking-widest:.1em;--radius-sm:.25rem;--radius-md:.375rem;--radius-lg:.5rem;--radius-xl:.75rem;--radius-2xl:1rem;--ease-in-out:cubic-bezier(.4,0,.2,1);--animate-spin:spin 1s linear infinite;--animate-pulse:pulse 2s cubic-bezier(.4,0,.6,1)infinite;--blur-sm:8px;--aspect-video:16/9;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4,0,.2,1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono);--color-bambu-green:#00ae42;--color-bambu-green-light:#00c64d;--color-bambu-green-dark:#009438;--color-bambu-dark:var(--bg-primary);--color-bambu-dark-secondary:var(--bg-secondary);--color-bambu-dark-tertiary:var(--bg-tertiary);--color-bambu-gray:var(--text-muted);--color-bambu-gray-light:var(--text-secondary);--color-bambu-gray-dark:var(--text-tertiary)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer utilities{.pointer-events-none{pointer-events:none}.visible{visibility:visible}.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.inset-0{inset:calc(var(--spacing)*0)}.inset-y-0{inset-block:calc(var(--spacing)*0)}.-top-1{top:calc(var(--spacing)*-1)}.top-0\.5{top:calc(var(--spacing)*.5)}.top-1{top:calc(var(--spacing)*1)}.top-1\/2{top:50%}.top-2{top:calc(var(--spacing)*2)}.top-4{top:calc(var(--spacing)*4)}.top-\[2px\]{top:2px}.top-full{top:100%}.-right-1{right:calc(var(--spacing)*-1)}.right-0{right:calc(var(--spacing)*0)}.right-2{right:calc(var(--spacing)*2)}.right-4{right:calc(var(--spacing)*4)}.right-12{right:calc(var(--spacing)*12)}.bottom-0{bottom:calc(var(--spacing)*0)}.bottom-1{bottom:calc(var(--spacing)*1)}.bottom-2{bottom:calc(var(--spacing)*2)}.bottom-4{bottom:calc(var(--spacing)*4)}.bottom-6{bottom:calc(var(--spacing)*6)}.left-0{left:calc(var(--spacing)*0)}.left-1{left:calc(var(--spacing)*1)}.left-1\/2{left:50%}.left-2{left:calc(var(--spacing)*2)}.left-2\.5{left:calc(var(--spacing)*2.5)}.left-3{left:calc(var(--spacing)*3)}.left-4{left:calc(var(--spacing)*4)}.left-7{left:calc(var(--spacing)*7)}.left-12{left:calc(var(--spacing)*12)}.left-\[2px\]{left:2px}.z-10{z-index:10}.z-20{z-index:20}.z-30{z-index:30}.z-40{z-index:40}.z-50{z-index:50}.z-60,.z-\[60\]{z-index:60}.col-span-1{grid-column:span 1/span 1}.col-span-2{grid-column:span 2/span 2}.col-span-4{grid-column:span 4/span 4}.container{width:100%}@media(min-width:40rem){.container{max-width:40rem}}@media(min-width:48rem){.container{max-width:48rem}}@media(min-width:64rem){.container{max-width:64rem}}@media(min-width:80rem){.container{max-width:80rem}}@media(min-width:96rem){.container{max-width:96rem}}.m-3{margin:calc(var(--spacing)*3)}.m-4{margin:calc(var(--spacing)*4)}.m-auto{margin:auto}.mx-1{margin-inline:calc(var(--spacing)*1)}.mx-2{margin-inline:calc(var(--spacing)*2)}.mx-4{margin-inline:calc(var(--spacing)*4)}.mx-auto{margin-inline:auto}.my-1{margin-block:calc(var(--spacing)*1)}.my-8{margin-block:calc(var(--spacing)*8)}.-mt-2{margin-top:calc(var(--spacing)*-2)}.-mt-\[50px\]{margin-top:-50px}.mt-0\.5{margin-top:calc(var(--spacing)*.5)}.mt-1{margin-top:calc(var(--spacing)*1)}.mt-2{margin-top:calc(var(--spacing)*2)}.mt-3{margin-top:calc(var(--spacing)*3)}.mt-4{margin-top:calc(var(--spacing)*4)}.mt-6{margin-top:calc(var(--spacing)*6)}.mr-1{margin-right:calc(var(--spacing)*1)}.mr-3{margin-right:calc(var(--spacing)*3)}.mr-4{margin-right:calc(var(--spacing)*4)}.-mb-px{margin-bottom:-1px}.mb-0\.5{margin-bottom:calc(var(--spacing)*.5)}.mb-1{margin-bottom:calc(var(--spacing)*1)}.mb-1\.5{margin-bottom:calc(var(--spacing)*1.5)}.mb-2{margin-bottom:calc(var(--spacing)*2)}.mb-2\.5{margin-bottom:calc(var(--spacing)*2.5)}.mb-3{margin-bottom:calc(var(--spacing)*3)}.mb-3\.5{margin-bottom:calc(var(--spacing)*3.5)}.mb-4{margin-bottom:calc(var(--spacing)*4)}.mb-5{margin-bottom:calc(var(--spacing)*5)}.mb-6{margin-bottom:calc(var(--spacing)*6)}.mb-8{margin-bottom:calc(var(--spacing)*8)}.-ml-1{margin-left:calc(var(--spacing)*-1)}.ml-0\.5{margin-left:calc(var(--spacing)*.5)}.ml-1\.5{margin-left:calc(var(--spacing)*1.5)}.ml-2{margin-left:calc(var(--spacing)*2)}.ml-8{margin-left:calc(var(--spacing)*8)}.ml-16{margin-left:calc(var(--spacing)*16)}.ml-64{margin-left:calc(var(--spacing)*64)}.ml-auto{margin-left:auto}.line-clamp-3{-webkit-line-clamp:3;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.block{display:block}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.aspect-square{aspect-ratio:1}.aspect-video{aspect-ratio:var(--aspect-video)}.h-1{height:calc(var(--spacing)*1)}.h-1\.5{height:calc(var(--spacing)*1.5)}.h-2{height:calc(var(--spacing)*2)}.h-2\.5{height:calc(var(--spacing)*2.5)}.h-3{height:calc(var(--spacing)*3)}.h-3\.5{height:calc(var(--spacing)*3.5)}.h-4{height:calc(var(--spacing)*4)}.h-5{height:calc(var(--spacing)*5)}.h-6{height:calc(var(--spacing)*6)}.h-8{height:calc(var(--spacing)*8)}.h-9{height:calc(var(--spacing)*9)}.h-10{height:calc(var(--spacing)*10)}.h-12{height:calc(var(--spacing)*12)}.h-16{height:calc(var(--spacing)*16)}.h-20{height:calc(var(--spacing)*20)}.h-24{height:calc(var(--spacing)*24)}.h-28{height:calc(var(--spacing)*28)}.h-64{height:calc(var(--spacing)*64)}.h-\[8px\]{height:8px}.h-\[14px\]{height:14px}.h-\[30px\]{height:30px}.h-\[50px\]{height:50px}.h-\[80px\]{height:80px}.h-\[80vh\]{height:80vh}.h-\[120px\]{height:120px}.h-\[160px\]{height:160px}.h-\[220px\]{height:220px}.h-auto{height:auto}.h-full{height:100%}.h-screen{height:100vh}.max-h-40{max-height:calc(var(--spacing)*40)}.max-h-60{max-height:calc(var(--spacing)*60)}.max-h-96{max-height:calc(var(--spacing)*96)}.max-h-\[60vh\]{max-height:60vh}.max-h-\[80vh\]{max-height:80vh}.max-h-\[85vh\]{max-height:85vh}.max-h-\[90vh\]{max-height:90vh}.max-h-full{max-height:100%}.min-h-0{min-height:calc(var(--spacing)*0)}.min-h-\[44px\]{min-height:44px}.min-h-\[48px\]{min-height:48px}.min-h-\[120px\]{min-height:120px}.min-h-\[400px\]{min-height:400px}.min-h-full{min-height:100%}.min-h-screen{min-height:100vh}.w-0\.5{width:calc(var(--spacing)*.5)}.w-2{width:calc(var(--spacing)*2)}.w-2\.5{width:calc(var(--spacing)*2.5)}.w-3{width:calc(var(--spacing)*3)}.w-3\.5{width:calc(var(--spacing)*3.5)}.w-4{width:calc(var(--spacing)*4)}.w-5{width:calc(var(--spacing)*5)}.w-6{width:calc(var(--spacing)*6)}.w-8{width:calc(var(--spacing)*8)}.w-9{width:calc(var(--spacing)*9)}.w-10{width:calc(var(--spacing)*10)}.w-11{width:calc(var(--spacing)*11)}.w-12{width:calc(var(--spacing)*12)}.w-14{width:calc(var(--spacing)*14)}.w-16{width:calc(var(--spacing)*16)}.w-20{width:calc(var(--spacing)*20)}.w-28{width:calc(var(--spacing)*28)}.w-32{width:calc(var(--spacing)*32)}.w-36{width:calc(var(--spacing)*36)}.w-40{width:calc(var(--spacing)*40)}.w-48{width:calc(var(--spacing)*48)}.w-64{width:calc(var(--spacing)*64)}.w-80{width:calc(var(--spacing)*80)}.w-\[8px\]{width:8px}.w-\[39px\]{width:39px}.w-\[150px\]{width:150px}.w-\[220px\]{width:220px}.w-\[680px\]{width:680px}.w-auto{width:auto}.w-full{width:100%}.w-px{width:1px}.max-w-2xl{max-width:var(--container-2xl)}.max-w-3xl{max-width:var(--container-3xl)}.max-w-4xl{max-width:var(--container-4xl)}.max-w-\[90vw\]{max-width:90vw}.max-w-\[100px\]{max-width:100px}.max-w-\[200px\]{max-width:200px}.max-w-full{max-width:100%}.max-w-lg{max-width:var(--container-lg)}.max-w-md{max-width:var(--container-md)}.max-w-none{max-width:none}.max-w-sm{max-width:var(--container-sm)}.max-w-xl{max-width:var(--container-xl)}.min-w-0{min-width:calc(var(--spacing)*0)}.min-w-48{min-width:calc(var(--spacing)*48)}.min-w-\[18px\]{min-width:18px}.min-w-\[70px\]{min-width:70px}.min-w-\[80px\]{min-width:80px}.min-w-\[100px\]{min-width:100px}.min-w-\[120px\]{min-width:120px}.min-w-\[150px\]{min-width:150px}.min-w-\[160px\]{min-width:160px}.min-w-\[180px\]{min-width:180px}.min-w-\[200px\]{min-width:200px}.flex-1{flex:1}.flex-shrink-0,.shrink-0{flex-shrink:0}.-translate-x-1\/2{--tw-translate-x: -50% ;translate:var(--tw-translate-x)var(--tw-translate-y)}.translate-x-0{--tw-translate-x:calc(var(--spacing)*0);translate:var(--tw-translate-x)var(--tw-translate-y)}.translate-x-0\.5{--tw-translate-x:calc(var(--spacing)*.5);translate:var(--tw-translate-x)var(--tw-translate-y)}.translate-x-1{--tw-translate-x:calc(var(--spacing)*1);translate:var(--tw-translate-x)var(--tw-translate-y)}.translate-x-4{--tw-translate-x:calc(var(--spacing)*4);translate:var(--tw-translate-x)var(--tw-translate-y)}.translate-x-5{--tw-translate-x:calc(var(--spacing)*5);translate:var(--tw-translate-x)var(--tw-translate-y)}.translate-x-7{--tw-translate-x:calc(var(--spacing)*7);translate:var(--tw-translate-x)var(--tw-translate-y)}.-translate-y-1\/2{--tw-translate-y: -50% ;translate:var(--tw-translate-x)var(--tw-translate-y)}.scale-110{--tw-scale-x:110%;--tw-scale-y:110%;--tw-scale-z:110%;scale:var(--tw-scale-x)var(--tw-scale-y)}.-rotate-90{rotate:-90deg}.rotate-180{rotate:180deg}.transform{transform:var(--tw-rotate-x,)var(--tw-rotate-y,)var(--tw-rotate-z,)var(--tw-skew-x,)var(--tw-skew-y,)}.animate-pulse{animation:var(--animate-pulse)}.animate-spin{animation:var(--animate-spin)}.cursor-default{cursor:default}.cursor-grab{cursor:grab}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.cursor-wait{cursor:wait}.resize{resize:both}.resize-none{resize:none}.\[appearance\:textfield\]{appearance:textfield}.appearance-none{appearance:none}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.grid-cols-7{grid-template-columns:repeat(7,minmax(0,1fr))}.grid-cols-12{grid-template-columns:repeat(12,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.items-end{align-items:flex-end}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.justify-evenly{justify-content:space-evenly}.justify-start{justify-content:flex-start}.gap-0\.5{gap:calc(var(--spacing)*.5)}.gap-1{gap:calc(var(--spacing)*1)}.gap-1\.5{gap:calc(var(--spacing)*1.5)}.gap-2{gap:calc(var(--spacing)*2)}.gap-2\.5{gap:calc(var(--spacing)*2.5)}.gap-3{gap:calc(var(--spacing)*3)}.gap-4{gap:calc(var(--spacing)*4)}.gap-5{gap:calc(var(--spacing)*5)}.gap-6{gap:calc(var(--spacing)*6)}.gap-8{gap:calc(var(--spacing)*8)}:where(.space-y-0>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*0)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*0)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-1>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*1)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*1)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*2)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*2)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*3)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*3)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*4)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*4)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*5)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*5)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-6>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*6)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*6)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-8>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*8)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*8)*calc(1 - var(--tw-space-y-reverse)))}:where(.divide-y>:not(:last-child)){--tw-divide-y-reverse:0;border-bottom-style:var(--tw-border-style);border-top-style:var(--tw-border-style);border-top-width:calc(1px*var(--tw-divide-y-reverse));border-bottom-width:calc(1px*calc(1 - var(--tw-divide-y-reverse)))}:where(.divide-bambu-dark-tertiary>:not(:last-child)){border-color:var(--color-bambu-dark-tertiary)}.self-center{align-self:center}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:var(--radius-2xl)}.rounded-\[8px\]{border-radius:8px}.rounded-\[10px\]{border-radius:10px}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-md{border-radius:var(--radius-md)}.rounded-sm{border-radius:var(--radius-sm)}.rounded-xl{border-radius:var(--radius-xl)}.rounded-t-xl{border-top-left-radius:var(--radius-xl);border-top-right-radius:var(--radius-xl)}.rounded-r-lg{border-top-right-radius:var(--radius-lg);border-bottom-right-radius:var(--radius-lg)}.border{border-style:var(--tw-border-style);border-width:1px}.border-2{border-style:var(--tw-border-style);border-width:2px}.border-4{border-style:var(--tw-border-style);border-width:4px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-r{border-right-style:var(--tw-border-style);border-right-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-b-2{border-bottom-style:var(--tw-border-style);border-bottom-width:2px}.border-l{border-left-style:var(--tw-border-style);border-left-width:1px}.border-l-2{border-left-style:var(--tw-border-style);border-left-width:2px}.border-l-4{border-left-style:var(--tw-border-style);border-left-width:4px}.border-dashed{--tw-border-style:dashed;border-style:dashed}.border-bambu-dark-tertiary,.border-bambu-dark-tertiary\/50{border-color:var(--color-bambu-dark-tertiary)}@supports (color:color-mix(in lab,red,red)){.border-bambu-dark-tertiary\/50{border-color:color-mix(in oklab,var(--color-bambu-dark-tertiary)50%,transparent)}}.border-bambu-gray{border-color:var(--color-bambu-gray)}.border-bambu-green{border-color:var(--color-bambu-green)}.border-bambu-green\/30{border-color:#00ae424d}@supports (color:color-mix(in lab,red,red)){.border-bambu-green\/30{border-color:color-mix(in oklab,var(--color-bambu-green)30%,transparent)}}.border-bambu-green\/50{border-color:#00ae4280}@supports (color:color-mix(in lab,red,red)){.border-bambu-green\/50{border-color:color-mix(in oklab,var(--color-bambu-green)50%,transparent)}}.border-blue-500\/30{border-color:#3080ff4d}@supports (color:color-mix(in lab,red,red)){.border-blue-500\/30{border-color:color-mix(in oklab,var(--color-blue-500)30%,transparent)}}.border-gray-200{border-color:var(--color-gray-200)}.border-gray-300{border-color:var(--color-gray-300)}.border-gray-400{border-color:var(--color-gray-400)}.border-gray-700{border-color:var(--color-gray-700)}.border-green-500\/30{border-color:#00c7584d}@supports (color:color-mix(in lab,red,red)){.border-green-500\/30{border-color:color-mix(in oklab,var(--color-green-500)30%,transparent)}}.border-green-500\/50{border-color:#00c75880}@supports (color:color-mix(in lab,red,red)){.border-green-500\/50{border-color:color-mix(in oklab,var(--color-green-500)50%,transparent)}}.border-red-500\/30{border-color:#fb2c364d}@supports (color:color-mix(in lab,red,red)){.border-red-500\/30{border-color:color-mix(in oklab,var(--color-red-500)30%,transparent)}}.border-red-500\/50{border-color:#fb2c3680}@supports (color:color-mix(in lab,red,red)){.border-red-500\/50{border-color:color-mix(in oklab,var(--color-red-500)50%,transparent)}}.border-transparent{border-color:#0000}.border-white\/10{border-color:#ffffff1a}@supports (color:color-mix(in lab,red,red)){.border-white\/10{border-color:color-mix(in oklab,var(--color-white)10%,transparent)}}.border-white\/20{border-color:#fff3}@supports (color:color-mix(in lab,red,red)){.border-white\/20{border-color:color-mix(in oklab,var(--color-white)20%,transparent)}}.border-yellow-500{border-color:var(--color-yellow-500)}.border-yellow-500\/30{border-color:#edb2004d}@supports (color:color-mix(in lab,red,red)){.border-yellow-500\/30{border-color:color-mix(in oklab,var(--color-yellow-500)30%,transparent)}}.border-yellow-500\/50{border-color:#edb20080}@supports (color:color-mix(in lab,red,red)){.border-yellow-500\/50{border-color:color-mix(in oklab,var(--color-yellow-500)50%,transparent)}}.border-t-transparent{border-top-color:#0000}.bg-amber-500\/20{background-color:#f99c0033}@supports (color:color-mix(in lab,red,red)){.bg-amber-500\/20{background-color:color-mix(in oklab,var(--color-amber-500)20%,transparent)}}.bg-bambu-dark{background-color:var(--color-bambu-dark)}.bg-bambu-dark-secondary,.bg-bambu-dark-secondary\/90{background-color:var(--color-bambu-dark-secondary)}@supports (color:color-mix(in lab,red,red)){.bg-bambu-dark-secondary\/90{background-color:color-mix(in oklab,var(--color-bambu-dark-secondary)90%,transparent)}}.bg-bambu-dark-tertiary,.bg-bambu-dark-tertiary\/50{background-color:var(--color-bambu-dark-tertiary)}@supports (color:color-mix(in lab,red,red)){.bg-bambu-dark-tertiary\/50{background-color:color-mix(in oklab,var(--color-bambu-dark-tertiary)50%,transparent)}}.bg-bambu-dark\/30{background-color:var(--color-bambu-dark)}@supports (color:color-mix(in lab,red,red)){.bg-bambu-dark\/30{background-color:color-mix(in oklab,var(--color-bambu-dark)30%,transparent)}}.bg-bambu-dark\/50{background-color:var(--color-bambu-dark)}@supports (color:color-mix(in lab,red,red)){.bg-bambu-dark\/50{background-color:color-mix(in oklab,var(--color-bambu-dark)50%,transparent)}}.bg-bambu-dark\/80{background-color:var(--color-bambu-dark)}@supports (color:color-mix(in lab,red,red)){.bg-bambu-dark\/80{background-color:color-mix(in oklab,var(--color-bambu-dark)80%,transparent)}}.bg-bambu-dark\/90{background-color:var(--color-bambu-dark)}@supports (color:color-mix(in lab,red,red)){.bg-bambu-dark\/90{background-color:color-mix(in oklab,var(--color-bambu-dark)90%,transparent)}}.bg-bambu-gray\/20{background-color:var(--color-bambu-gray)}@supports (color:color-mix(in lab,red,red)){.bg-bambu-gray\/20{background-color:color-mix(in oklab,var(--color-bambu-gray)20%,transparent)}}.bg-bambu-gray\/30{background-color:var(--color-bambu-gray)}@supports (color:color-mix(in lab,red,red)){.bg-bambu-gray\/30{background-color:color-mix(in oklab,var(--color-bambu-gray)30%,transparent)}}.bg-bambu-gray\/50{background-color:var(--color-bambu-gray)}@supports (color:color-mix(in lab,red,red)){.bg-bambu-gray\/50{background-color:color-mix(in oklab,var(--color-bambu-gray)50%,transparent)}}.bg-bambu-green{background-color:var(--color-bambu-green)}.bg-bambu-green\/10{background-color:#00ae421a}@supports (color:color-mix(in lab,red,red)){.bg-bambu-green\/10{background-color:color-mix(in oklab,var(--color-bambu-green)10%,transparent)}}.bg-bambu-green\/20{background-color:#00ae4233}@supports (color:color-mix(in lab,red,red)){.bg-bambu-green\/20{background-color:color-mix(in oklab,var(--color-bambu-green)20%,transparent)}}.bg-bambu-green\/30{background-color:#00ae424d}@supports (color:color-mix(in lab,red,red)){.bg-bambu-green\/30{background-color:color-mix(in oklab,var(--color-bambu-green)30%,transparent)}}.bg-bambu-green\/50{background-color:#00ae4280}@supports (color:color-mix(in lab,red,red)){.bg-bambu-green\/50{background-color:color-mix(in oklab,var(--color-bambu-green)50%,transparent)}}.bg-bambu-green\/75{background-color:#00ae42bf}@supports (color:color-mix(in lab,red,red)){.bg-bambu-green\/75{background-color:color-mix(in oklab,var(--color-bambu-green)75%,transparent)}}.bg-black{background-color:var(--color-black)}.bg-black\/50{background-color:#00000080}@supports (color:color-mix(in lab,red,red)){.bg-black\/50{background-color:color-mix(in oklab,var(--color-black)50%,transparent)}}.bg-black\/60{background-color:#0009}@supports (color:color-mix(in lab,red,red)){.bg-black\/60{background-color:color-mix(in oklab,var(--color-black)60%,transparent)}}.bg-black\/70{background-color:#000000b3}@supports (color:color-mix(in lab,red,red)){.bg-black\/70{background-color:color-mix(in oklab,var(--color-black)70%,transparent)}}.bg-black\/80{background-color:#000c}@supports (color:color-mix(in lab,red,red)){.bg-black\/80{background-color:color-mix(in oklab,var(--color-black)80%,transparent)}}.bg-black\/90{background-color:#000000e6}@supports (color:color-mix(in lab,red,red)){.bg-black\/90{background-color:color-mix(in oklab,var(--color-black)90%,transparent)}}.bg-blue-400\/10{background-color:#54a2ff1a}@supports (color:color-mix(in lab,red,red)){.bg-blue-400\/10{background-color:color-mix(in oklab,var(--color-blue-400)10%,transparent)}}.bg-blue-500{background-color:var(--color-blue-500)}.bg-blue-500\/10{background-color:#3080ff1a}@supports (color:color-mix(in lab,red,red)){.bg-blue-500\/10{background-color:color-mix(in oklab,var(--color-blue-500)10%,transparent)}}.bg-blue-500\/20{background-color:#3080ff33}@supports (color:color-mix(in lab,red,red)){.bg-blue-500\/20{background-color:color-mix(in oklab,var(--color-blue-500)20%,transparent)}}.bg-gray-100{background-color:var(--color-gray-100)}.bg-gray-200{background-color:var(--color-gray-200)}.bg-gray-300{background-color:var(--color-gray-300)}.bg-gray-400{background-color:var(--color-gray-400)}.bg-gray-400\/10{background-color:#99a1af1a}@supports (color:color-mix(in lab,red,red)){.bg-gray-400\/10{background-color:color-mix(in oklab,var(--color-gray-400)10%,transparent)}}.bg-gray-500{background-color:var(--color-gray-500)}.bg-gray-500\/20{background-color:#6a728233}@supports (color:color-mix(in lab,red,red)){.bg-gray-500\/20{background-color:color-mix(in oklab,var(--color-gray-500)20%,transparent)}}.bg-green-400{background-color:var(--color-green-400)}.bg-green-400\/10{background-color:#05df721a}@supports (color:color-mix(in lab,red,red)){.bg-green-400\/10{background-color:color-mix(in oklab,var(--color-green-400)10%,transparent)}}.bg-green-500{background-color:var(--color-green-500)}.bg-green-500\/10{background-color:#00c7581a}@supports (color:color-mix(in lab,red,red)){.bg-green-500\/10{background-color:color-mix(in oklab,var(--color-green-500)10%,transparent)}}.bg-green-500\/20{background-color:#00c75833}@supports (color:color-mix(in lab,red,red)){.bg-green-500\/20{background-color:color-mix(in oklab,var(--color-green-500)20%,transparent)}}.bg-orange-400\/10{background-color:#ff8b1a1a}@supports (color:color-mix(in lab,red,red)){.bg-orange-400\/10{background-color:color-mix(in oklab,var(--color-orange-400)10%,transparent)}}.bg-orange-500{background-color:var(--color-orange-500)}.bg-orange-500\/20{background-color:#fe6e0033}@supports (color:color-mix(in lab,red,red)){.bg-orange-500\/20{background-color:color-mix(in oklab,var(--color-orange-500)20%,transparent)}}.bg-purple-500\/20{background-color:#ac4bff33}@supports (color:color-mix(in lab,red,red)){.bg-purple-500\/20{background-color:color-mix(in oklab,var(--color-purple-500)20%,transparent)}}.bg-purple-500\/80{background-color:#ac4bffcc}@supports (color:color-mix(in lab,red,red)){.bg-purple-500\/80{background-color:color-mix(in oklab,var(--color-purple-500)80%,transparent)}}.bg-red-400{background-color:var(--color-red-400)}.bg-red-400\/10{background-color:#ff65681a}@supports (color:color-mix(in lab,red,red)){.bg-red-400\/10{background-color:color-mix(in oklab,var(--color-red-400)10%,transparent)}}.bg-red-500{background-color:var(--color-red-500)}.bg-red-500\/10{background-color:#fb2c361a}@supports (color:color-mix(in lab,red,red)){.bg-red-500\/10{background-color:color-mix(in oklab,var(--color-red-500)10%,transparent)}}.bg-red-500\/15{background-color:#fb2c3626}@supports (color:color-mix(in lab,red,red)){.bg-red-500\/15{background-color:color-mix(in oklab,var(--color-red-500)15%,transparent)}}.bg-red-500\/20{background-color:#fb2c3633}@supports (color:color-mix(in lab,red,red)){.bg-red-500\/20{background-color:color-mix(in oklab,var(--color-red-500)20%,transparent)}}.bg-red-500\/30{background-color:#fb2c364d}@supports (color:color-mix(in lab,red,red)){.bg-red-500\/30{background-color:color-mix(in oklab,var(--color-red-500)30%,transparent)}}.bg-red-500\/80{background-color:#fb2c36cc}@supports (color:color-mix(in lab,red,red)){.bg-red-500\/80{background-color:color-mix(in oklab,var(--color-red-500)80%,transparent)}}.bg-red-600{background-color:var(--color-red-600)}.bg-transparent{background-color:#0000}.bg-white{background-color:var(--color-white)}.bg-yellow-100{background-color:var(--color-yellow-100)}.bg-yellow-400{background-color:var(--color-yellow-400)}.bg-yellow-400\/10{background-color:#fac8001a}@supports (color:color-mix(in lab,red,red)){.bg-yellow-400\/10{background-color:color-mix(in oklab,var(--color-yellow-400)10%,transparent)}}.bg-yellow-400\/20{background-color:#fac80033}@supports (color:color-mix(in lab,red,red)){.bg-yellow-400\/20{background-color:color-mix(in oklab,var(--color-yellow-400)20%,transparent)}}.bg-yellow-500{background-color:var(--color-yellow-500)}.bg-yellow-500\/10{background-color:#edb2001a}@supports (color:color-mix(in lab,red,red)){.bg-yellow-500\/10{background-color:color-mix(in oklab,var(--color-yellow-500)10%,transparent)}}.bg-yellow-500\/20{background-color:#edb20033}@supports (color:color-mix(in lab,red,red)){.bg-yellow-500\/20{background-color:color-mix(in oklab,var(--color-yellow-500)20%,transparent)}}.bg-yellow-600{background-color:var(--color-yellow-600)}.fill-yellow-400{fill:var(--color-yellow-400)}.object-contain{object-fit:contain}.object-cover{object-fit:cover}.object-left{object-position:left}.p-0{padding:calc(var(--spacing)*0)}.p-1{padding:calc(var(--spacing)*1)}.p-1\.5{padding:calc(var(--spacing)*1.5)}.p-2{padding:calc(var(--spacing)*2)}.p-2\.5{padding:calc(var(--spacing)*2.5)}.p-3{padding:calc(var(--spacing)*3)}.p-4{padding:calc(var(--spacing)*4)}.p-5{padding:calc(var(--spacing)*5)}.p-6{padding:calc(var(--spacing)*6)}.p-8{padding:calc(var(--spacing)*8)}.p-12{padding:calc(var(--spacing)*12)}.px-1{padding-inline:calc(var(--spacing)*1)}.px-1\.5{padding-inline:calc(var(--spacing)*1.5)}.px-2{padding-inline:calc(var(--spacing)*2)}.px-2\.5{padding-inline:calc(var(--spacing)*2.5)}.px-3{padding-inline:calc(var(--spacing)*3)}.px-3\.5{padding-inline:calc(var(--spacing)*3.5)}.px-4{padding-inline:calc(var(--spacing)*4)}.px-5{padding-inline:calc(var(--spacing)*5)}.px-6{padding-inline:calc(var(--spacing)*6)}.px-7{padding-inline:calc(var(--spacing)*7)}.px-\[18px\]{padding-inline:18px}.py-0\.5{padding-block:calc(var(--spacing)*.5)}.py-1{padding-block:calc(var(--spacing)*1)}.py-1\.5{padding-block:calc(var(--spacing)*1.5)}.py-2{padding-block:calc(var(--spacing)*2)}.py-2\.5{padding-block:calc(var(--spacing)*2.5)}.py-3{padding-block:calc(var(--spacing)*3)}.py-4{padding-block:calc(var(--spacing)*4)}.py-8{padding-block:calc(var(--spacing)*8)}.py-12{padding-block:calc(var(--spacing)*12)}.py-\[3px\]{padding-block:3px}.pt-0{padding-top:calc(var(--spacing)*0)}.pt-0\.5{padding-top:calc(var(--spacing)*.5)}.pt-2{padding-top:calc(var(--spacing)*2)}.pt-3{padding-top:calc(var(--spacing)*3)}.pt-4{padding-top:calc(var(--spacing)*4)}.pr-3{padding-right:calc(var(--spacing)*3)}.pr-4{padding-right:calc(var(--spacing)*4)}.pr-5{padding-right:calc(var(--spacing)*5)}.pr-8{padding-right:calc(var(--spacing)*8)}.pb-2{padding-bottom:calc(var(--spacing)*2)}.pb-4{padding-bottom:calc(var(--spacing)*4)}.pb-\[5px\]{padding-bottom:5px}.pl-2{padding-left:calc(var(--spacing)*2)}.pl-4{padding-left:calc(var(--spacing)*4)}.pl-8{padding-left:calc(var(--spacing)*8)}.pl-10{padding-left:calc(var(--spacing)*10)}.text-center{text-align:center}.text-left{text-align:left}.text-right{text-align:right}.font-mono{font-family:var(--font-mono)}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\[10px\]{font-size:10px}.text-\[11px\]{font-size:11px}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-wide{--tw-tracking:var(--tracking-wide);letter-spacing:var(--tracking-wide)}.tracking-widest{--tw-tracking:var(--tracking-widest);letter-spacing:var(--tracking-widest)}.whitespace-nowrap{white-space:nowrap}.whitespace-pre-line{white-space:pre-line}.whitespace-pre-wrap{white-space:pre-wrap}.text-amber-400{color:var(--color-amber-400)}.text-bambu-dark-tertiary{color:var(--color-bambu-dark-tertiary)}.text-bambu-gray{color:var(--color-bambu-gray)}.text-bambu-gray-light{color:var(--color-bambu-gray-light)}.text-bambu-gray\/30{color:var(--color-bambu-gray)}@supports (color:color-mix(in lab,red,red)){.text-bambu-gray\/30{color:color-mix(in oklab,var(--color-bambu-gray)30%,transparent)}}.text-bambu-gray\/50{color:var(--color-bambu-gray)}@supports (color:color-mix(in lab,red,red)){.text-bambu-gray\/50{color:color-mix(in oklab,var(--color-bambu-gray)50%,transparent)}}.text-bambu-gray\/70{color:var(--color-bambu-gray)}@supports (color:color-mix(in lab,red,red)){.text-bambu-gray\/70{color:color-mix(in oklab,var(--color-bambu-gray)70%,transparent)}}.text-bambu-green{color:var(--color-bambu-green)}.text-blue-400{color:var(--color-blue-400)}.text-gray-400{color:var(--color-gray-400)}.text-gray-500{color:var(--color-gray-500)}.text-gray-600{color:var(--color-gray-600)}.text-gray-700{color:var(--color-gray-700)}.text-gray-900{color:var(--color-gray-900)}.text-green-400{color:var(--color-green-400)}.text-green-500{color:var(--color-green-500)}.text-orange-400{color:var(--color-orange-400)}.text-purple-400{color:var(--color-purple-400)}.text-red-400{color:var(--color-red-400)}.text-red-500{color:var(--color-red-500)}.text-white{color:var(--color-white)}.text-white\/80{color:#fffc}@supports (color:color-mix(in lab,red,red)){.text-white\/80{color:color-mix(in oklab,var(--color-white)80%,transparent)}}.text-yellow-400{color:var(--color-yellow-400)}.text-yellow-500{color:var(--color-yellow-500)}.text-yellow-600{color:var(--color-yellow-600)}.capitalize{text-transform:capitalize}.uppercase{text-transform:uppercase}.italic{font-style:italic}.underline{text-decoration-line:underline}.placeholder-bambu-gray::placeholder,.placeholder-bambu-gray\/50::placeholder{color:var(--color-bambu-gray)}@supports (color:color-mix(in lab,red,red)){.placeholder-bambu-gray\/50::placeholder{color:color-mix(in oklab,var(--color-bambu-gray)50%,transparent)}}.accent-bambu-green{accent-color:var(--color-bambu-green)}.opacity-0{opacity:0}.opacity-20{opacity:.2}.opacity-30{opacity:.3}.opacity-50{opacity:.5}.opacity-60{opacity:.6}.opacity-70{opacity:.7}.opacity-80{opacity:.8}.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-2xl{--tw-shadow:0 25px 50px -12px var(--tw-shadow-color,#00000040);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-inner{--tw-shadow:inset 0 2px 4px 0 var(--tw-shadow-color,#0000000d);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a),0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-md{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a),0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-xl{--tw-shadow:0 20px 25px -5px var(--tw-shadow-color,#0000001a),0 8px 10px -6px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring,.ring-1{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(1px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring-2{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring-bambu-green{--tw-ring-color:var(--color-bambu-green)}.ring-white{--tw-ring-color:var(--color-white)}.blur{--tw-blur:blur(8px);filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.invert{--tw-invert:invert(100%);filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.filter{filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.backdrop-blur-sm{--tw-backdrop-blur:blur(var(--blur-sm));-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-200{--tw-duration:.2s;transition-duration:.2s}.duration-300{--tw-duration:.3s;transition-duration:.3s}.ease-in-out{--tw-ease:var(--ease-in-out);transition-timing-function:var(--ease-in-out)}@media(hover:hover){.group-hover\:text-bambu-green:is(:where(.group):hover *){color:var(--color-bambu-green)}.group-hover\:opacity-50:is(:where(.group):hover *){opacity:.5}.group-hover\:opacity-100:is(:where(.group):hover *){opacity:1}}.peer-checked\:bg-bambu-green:is(:where(.peer):checked~*){background-color:var(--color-bambu-green)}.peer-focus\:outline-none:is(:where(.peer):focus~*){--tw-outline-style:none;outline-style:none}.before\:absolute:before{content:var(--tw-content);position:absolute}.before\:top-0:before{content:var(--tw-content);top:calc(var(--spacing)*0)}.before\:right-0:before{content:var(--tw-content);right:calc(var(--spacing)*0)}.before\:left-0:before{content:var(--tw-content);left:calc(var(--spacing)*0)}.before\:h-0\.5:before{content:var(--tw-content);height:calc(var(--spacing)*.5)}.before\:bg-bambu-green:before{content:var(--tw-content);background-color:var(--color-bambu-green)}.after\:absolute:after{content:var(--tw-content);position:absolute}.after\:top-\[2px\]:after{content:var(--tw-content);top:2px}.after\:left-\[2px\]:after{content:var(--tw-content);left:2px}.after\:h-4:after{content:var(--tw-content);height:calc(var(--spacing)*4)}.after\:h-5:after{content:var(--tw-content);height:calc(var(--spacing)*5)}.after\:w-4:after{content:var(--tw-content);width:calc(var(--spacing)*4)}.after\:w-5:after{content:var(--tw-content);width:calc(var(--spacing)*5)}.after\:rounded-full:after{content:var(--tw-content);border-radius:3.40282e38px}.after\:bg-white:after{content:var(--tw-content);background-color:var(--color-white)}.after\:transition-all:after{content:var(--tw-content);transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.after\:content-\[\'\'\]:after{--tw-content:"";content:var(--tw-content)}.peer-checked\:after\:translate-x-full:is(:where(.peer):checked~*):after{content:var(--tw-content);--tw-translate-x:100%;translate:var(--tw-translate-x)var(--tw-translate-y)}.peer-checked\:after\:border-white:is(:where(.peer):checked~*):after{content:var(--tw-content);border-color:var(--color-white)}@media(hover:hover){.hover\:border-bambu-gray:hover{border-color:var(--color-bambu-gray)}.hover\:border-bambu-green:hover{border-color:var(--color-bambu-green)}.hover\:border-bambu-green-dark:hover{border-color:var(--color-bambu-green-dark)}.hover\:border-white\/40:hover{border-color:#fff6}@supports (color:color-mix(in lab,red,red)){.hover\:border-white\/40:hover{border-color:color-mix(in oklab,var(--color-white)40%,transparent)}}.hover\:bg-bambu-dark:hover{background-color:var(--color-bambu-dark)}.hover\:bg-bambu-dark-secondary:hover{background-color:var(--color-bambu-dark-secondary)}.hover\:bg-bambu-dark-tertiary:hover,.hover\:bg-bambu-dark-tertiary\/30:hover{background-color:var(--color-bambu-dark-tertiary)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-bambu-dark-tertiary\/30:hover{background-color:color-mix(in oklab,var(--color-bambu-dark-tertiary)30%,transparent)}}.hover\:bg-bambu-dark-tertiary\/50:hover{background-color:var(--color-bambu-dark-tertiary)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-bambu-dark-tertiary\/50:hover{background-color:color-mix(in oklab,var(--color-bambu-dark-tertiary)50%,transparent)}}.hover\:bg-bambu-dark-tertiary\/70:hover{background-color:var(--color-bambu-dark-tertiary)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-bambu-dark-tertiary\/70:hover{background-color:color-mix(in oklab,var(--color-bambu-dark-tertiary)70%,transparent)}}.hover\:bg-bambu-dark-tertiary\/80:hover{background-color:var(--color-bambu-dark-tertiary)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-bambu-dark-tertiary\/80:hover{background-color:color-mix(in oklab,var(--color-bambu-dark-tertiary)80%,transparent)}}.hover\:bg-bambu-gray-dark:hover{background-color:var(--color-bambu-gray-dark)}.hover\:bg-bambu-green-dark:hover{background-color:var(--color-bambu-green-dark)}.hover\:bg-bambu-green-light:hover{background-color:var(--color-bambu-green-light)}.hover\:bg-bambu-green\/20:hover{background-color:#00ae4233}@supports (color:color-mix(in lab,red,red)){.hover\:bg-bambu-green\/20:hover{background-color:color-mix(in oklab,var(--color-bambu-green)20%,transparent)}}.hover\:bg-bambu-green\/30:hover{background-color:#00ae424d}@supports (color:color-mix(in lab,red,red)){.hover\:bg-bambu-green\/30:hover{background-color:color-mix(in oklab,var(--color-bambu-green)30%,transparent)}}.hover\:bg-bambu-green\/90:hover{background-color:#00ae42e6}@supports (color:color-mix(in lab,red,red)){.hover\:bg-bambu-green\/90:hover{background-color:color-mix(in oklab,var(--color-bambu-green)90%,transparent)}}.hover\:bg-black\/20:hover{background-color:#0003}@supports (color:color-mix(in lab,red,red)){.hover\:bg-black\/20:hover{background-color:color-mix(in oklab,var(--color-black)20%,transparent)}}.hover\:bg-black\/70:hover{background-color:#000000b3}@supports (color:color-mix(in lab,red,red)){.hover\:bg-black\/70:hover{background-color:color-mix(in oklab,var(--color-black)70%,transparent)}}.hover\:bg-black\/80:hover{background-color:#000c}@supports (color:color-mix(in lab,red,red)){.hover\:bg-black\/80:hover{background-color:color-mix(in oklab,var(--color-black)80%,transparent)}}.hover\:bg-gray-50:hover{background-color:var(--color-gray-50)}.hover\:bg-gray-100:hover{background-color:var(--color-gray-100)}.hover\:bg-gray-300:hover{background-color:var(--color-gray-300)}.hover\:bg-gray-400:hover{background-color:var(--color-gray-400)}.hover\:bg-gray-700:hover{background-color:var(--color-gray-700)}.hover\:bg-red-400\/10:hover{background-color:#ff65681a}@supports (color:color-mix(in lab,red,red)){.hover\:bg-red-400\/10:hover{background-color:color-mix(in oklab,var(--color-red-400)10%,transparent)}}.hover\:bg-red-500:hover{background-color:var(--color-red-500)}.hover\:bg-red-500\/10:hover{background-color:#fb2c361a}@supports (color:color-mix(in lab,red,red)){.hover\:bg-red-500\/10:hover{background-color:color-mix(in oklab,var(--color-red-500)10%,transparent)}}.hover\:bg-red-500\/30:hover{background-color:#fb2c364d}@supports (color:color-mix(in lab,red,red)){.hover\:bg-red-500\/30:hover{background-color:color-mix(in oklab,var(--color-red-500)30%,transparent)}}.hover\:bg-red-600:hover{background-color:var(--color-red-600)}.hover\:bg-red-700:hover{background-color:var(--color-red-700)}.hover\:bg-yellow-500\/30:hover{background-color:#edb2004d}@supports (color:color-mix(in lab,red,red)){.hover\:bg-yellow-500\/30:hover{background-color:color-mix(in oklab,var(--color-yellow-500)30%,transparent)}}.hover\:bg-yellow-600:hover{background-color:var(--color-yellow-600)}.hover\:bg-yellow-700:hover{background-color:var(--color-yellow-700)}.hover\:text-bambu-green:hover{color:var(--color-bambu-green)}.hover\:text-bambu-green\/80:hover{color:#00ae42cc}@supports (color:color-mix(in lab,red,red)){.hover\:text-bambu-green\/80:hover{color:color-mix(in oklab,var(--color-bambu-green)80%,transparent)}}.hover\:text-red-300:hover{color:var(--color-red-300)}.hover\:text-red-400:hover{color:var(--color-red-400)}.hover\:text-white:hover{color:var(--color-white)}.hover\:underline:hover{text-decoration-line:underline}.hover\:opacity-70:hover{opacity:.7}.hover\:opacity-80:hover{opacity:.8}}.focus\:border-bambu-green:focus{border-color:var(--color-bambu-green)}.focus\:ring-2:focus{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus\:ring-bambu-gray:focus{--tw-ring-color:var(--color-bambu-gray)}.focus\:ring-bambu-green:focus{--tw-ring-color:var(--color-bambu-green)}.focus\:ring-red-500:focus{--tw-ring-color:var(--color-red-500)}.focus\:ring-offset-0:focus{--tw-ring-offset-width:0px;--tw-ring-offset-shadow:var(--tw-ring-inset,)0 0 0 var(--tw-ring-offset-width)var(--tw-ring-offset-color)}.focus\:ring-offset-2:focus{--tw-ring-offset-width:2px;--tw-ring-offset-shadow:var(--tw-ring-inset,)0 0 0 var(--tw-ring-offset-width)var(--tw-ring-offset-color)}.focus\:ring-offset-bambu-dark:focus{--tw-ring-offset-color:var(--color-bambu-dark)}.focus\:outline-none:focus{--tw-outline-style:none;outline-style:none}.active\:cursor-grabbing:active{cursor:grabbing}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-30:disabled{opacity:.3}.disabled\:opacity-40:disabled{opacity:.4}.disabled\:opacity-50:disabled{opacity:.5}.disabled\:opacity-60:disabled{opacity:.6}@media(hover:hover){.disabled\:hover\:bg-bambu-dark-secondary:disabled:hover{background-color:var(--color-bambu-dark-secondary)}.disabled\:hover\:text-bambu-gray:disabled:hover{color:var(--color-bambu-gray)}}@media(min-width:40rem){.sm\:inline{display:inline}.sm\:h-4{height:calc(var(--spacing)*4)}.sm\:w-4{width:calc(var(--spacing)*4)}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.sm\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.sm\:p-1\.5{padding:calc(var(--spacing)*1.5)}}@media(min-width:48rem){.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}}@media(min-width:64rem){.lg\:w-80{width:calc(var(--spacing)*80)}.lg\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\:flex-row{flex-direction:row}}@media(min-width:80rem){.xl\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}}.dark\:border-bambu-dark-tertiary:where(.dark,.dark *){border-color:var(--color-bambu-dark-tertiary)}.dark\:border-gray-500:where(.dark,.dark *){border-color:var(--color-gray-500)}.dark\:bg-bambu-dark:where(.dark,.dark *){background-color:var(--color-bambu-dark)}.dark\:bg-bambu-dark-secondary:where(.dark,.dark *){background-color:var(--color-bambu-dark-secondary)}.dark\:bg-bambu-dark-tertiary:where(.dark,.dark *){background-color:var(--color-bambu-dark-tertiary)}.dark\:bg-yellow-900\/20:where(.dark,.dark *){background-color:#733e0a33}@supports (color:color-mix(in lab,red,red)){.dark\:bg-yellow-900\/20:where(.dark,.dark *){background-color:color-mix(in oklab,var(--color-yellow-900)20%,transparent)}}.dark\:text-bambu-gray:where(.dark,.dark *){color:var(--color-bambu-gray)}.dark\:text-gray-400:where(.dark,.dark *){color:var(--color-gray-400)}.dark\:text-gray-500:where(.dark,.dark *){color:var(--color-gray-500)}.dark\:text-white:where(.dark,.dark *){color:var(--color-white)}.dark\:text-yellow-400:where(.dark,.dark *){color:var(--color-yellow-400)}@media(hover:hover){.dark\:hover\:bg-bambu-dark-tertiary:where(.dark,.dark *):hover{background-color:var(--color-bambu-dark-tertiary)}}.\[\&\:\:-moz-range-thumb\]\:h-4::-moz-range-thumb{height:calc(var(--spacing)*4)}.\[\&\:\:-moz-range-thumb\]\:w-4::-moz-range-thumb{width:calc(var(--spacing)*4)}.\[\&\:\:-moz-range-thumb\]\:cursor-pointer::-moz-range-thumb{cursor:pointer}.\[\&\:\:-moz-range-thumb\]\:rounded-full::-moz-range-thumb{border-radius:3.40282e38px}.\[\&\:\:-moz-range-thumb\]\:border-0::-moz-range-thumb{border-style:var(--tw-border-style);border-width:0}.\[\&\:\:-moz-range-thumb\]\:bg-bambu-green::-moz-range-thumb{background-color:var(--color-bambu-green)}.\[\&\:\:-webkit-slider-thumb\]\:h-3::-webkit-slider-thumb{height:calc(var(--spacing)*3)}.\[\&\:\:-webkit-slider-thumb\]\:h-4::-webkit-slider-thumb{height:calc(var(--spacing)*4)}.\[\&\:\:-webkit-slider-thumb\]\:w-3::-webkit-slider-thumb{width:calc(var(--spacing)*3)}.\[\&\:\:-webkit-slider-thumb\]\:w-4::-webkit-slider-thumb{width:calc(var(--spacing)*4)}.\[\&\:\:-webkit-slider-thumb\]\:cursor-pointer::-webkit-slider-thumb{cursor:pointer}.\[\&\:\:-webkit-slider-thumb\]\:appearance-none::-webkit-slider-thumb{appearance:none}.\[\&\:\:-webkit-slider-thumb\]\:rounded-full::-webkit-slider-thumb{border-radius:3.40282e38px}.\[\&\:\:-webkit-slider-thumb\]\:bg-bambu-green::-webkit-slider-thumb{background-color:var(--color-bambu-green)}}:root{--bg-primary:#f5f5f5;--bg-secondary:#fff;--bg-tertiary:#e5e5e5;--text-primary:#1a1a1a;--text-secondary:#4a4a4a;--text-muted:#6b6b6b;--text-tertiary:gray;--border-color:#d4d4d4;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:Inter,system-ui,sans-serif;font-weight:400;line-height:1.5}.dark{--bg-primary:#1a1a1a;--bg-secondary:#2d2d2d;--bg-tertiary:#3d3d3d;--text-primary:#fff;--text-secondary:#a0a0a0;--text-muted:gray;--text-tertiary:#4a4a4a;--border-color:#3d3d3d}body{background-color:var(--bg-primary);color:var(--text-primary);min-height:100vh;margin:0;transition:background-color .2s,color .2s}#root{min-height:100vh}.text-white{color:var(--text-primary)}.bg-bambu-dark,.bg-bambu-dark-secondary,.bg-bambu-dark-tertiary,.border-bambu-dark-tertiary{transition:background-color .2s,border-color .2s}@keyframes slide-in{0%{opacity:0;transform:translate(100%)}to{opacity:1;transform:translate(0)}}.animate-slide-in{animation:.2s ease-out slide-in}.icon-theme{opacity:.5}.dark .icon-theme{filter:invert();opacity:.4}.icon-green{filter:invert(48%)sepia(89%)saturate(459%)hue-rotate(93deg)brightness(95%)contrast(92%);opacity:1}.icon-heating{filter:invert(50%)sepia()saturate(1000%)hue-rotate(360deg)brightness()contrast();opacity:1}.dark .jogpad-theme{filter:brightness(.35)contrast(1.2)}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-scale-x{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-y{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-z{syntax:"*";inherits:false;initial-value:1}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-divide-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}@property --tw-content{syntax:"*";inherits:false;initial-value:""}@keyframes spin{to{transform:rotate(360deg)}}@keyframes pulse{50%{opacity:.5}}@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-scale-x:1;--tw-scale-y:1;--tw-scale-z:1;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-space-y-reverse:0;--tw-divide-y-reverse:0;--tw-border-style:solid;--tw-font-weight:initial;--tw-tracking:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-duration:initial;--tw-ease:initial;--tw-content:""}}} diff --git a/static/assets/index-BMICGIP2.js b/static/assets/index-CLt_WkAI.js similarity index 54% rename from static/assets/index-BMICGIP2.js rename to static/assets/index-CLt_WkAI.js index e8d659ceb..d6940d4a9 100644 --- a/static/assets/index-BMICGIP2.js +++ b/static/assets/index-CLt_WkAI.js @@ -1,18 +1,18 @@ -function lne(t,e){for(var n=0;ni[r]})}}}return Object.freeze(Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}))}(function(){const e=document.createElement("link").relList;if(e&&e.supports&&e.supports("modulepreload"))return;for(const r of document.querySelectorAll('link[rel="modulepreload"]'))i(r);new MutationObserver(r=>{for(const a of r)if(a.type==="childList")for(const s of a.addedNodes)s.tagName==="LINK"&&s.rel==="modulepreload"&&i(s)}).observe(document,{childList:!0,subtree:!0});function n(r){const a={};return r.integrity&&(a.integrity=r.integrity),r.referrerPolicy&&(a.referrerPolicy=r.referrerPolicy),r.crossOrigin==="use-credentials"?a.credentials="include":r.crossOrigin==="anonymous"?a.credentials="omit":a.credentials="same-origin",a}function i(r){if(r.ep)return;r.ep=!0;const a=n(r);fetch(r.href,a)}})();var Pb=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function Js(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}var NA={exports:{}},Ng={};var eU;function cne(){if(eU)return Ng;eU=1;var t=Symbol.for("react.transitional.element"),e=Symbol.for("react.fragment");function n(i,r,a){var s=null;if(a!==void 0&&(s=""+a),r.key!==void 0&&(s=""+r.key),"key"in r){a={};for(var o in r)o!=="key"&&(a[o]=r[o])}else a=r;return r=a.ref,{$$typeof:t,type:i,key:s,ref:r!==void 0?r:null,props:a}}return Ng.Fragment=e,Ng.jsx=n,Ng.jsxs=n,Ng}var tU;function une(){return tU||(tU=1,NA.exports=cne()),NA.exports}var h=une(),RA={exports:{}},Yt={};var nU;function dne(){if(nU)return Yt;nU=1;var t=Symbol.for("react.transitional.element"),e=Symbol.for("react.portal"),n=Symbol.for("react.fragment"),i=Symbol.for("react.strict_mode"),r=Symbol.for("react.profiler"),a=Symbol.for("react.consumer"),s=Symbol.for("react.context"),o=Symbol.for("react.forward_ref"),l=Symbol.for("react.suspense"),c=Symbol.for("react.memo"),u=Symbol.for("react.lazy"),f=Symbol.for("react.activity"),m=Symbol.iterator;function g(H){return H===null||typeof H!="object"?null:(H=m&&H[m]||H["@@iterator"],typeof H=="function"?H:null)}var b={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},y=Object.assign,v={};function x(H,X,se){this.props=H,this.context=X,this.refs=v,this.updater=se||b}x.prototype.isReactComponent={},x.prototype.setState=function(H,X){if(typeof H!="object"&&typeof H!="function"&&H!=null)throw Error("takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,H,X,"setState")},x.prototype.forceUpdate=function(H){this.updater.enqueueForceUpdate(this,H,"forceUpdate")};function M(){}M.prototype=x.prototype;function w(H,X,se){this.props=H,this.context=X,this.refs=v,this.updater=se||b}var A=w.prototype=new M;A.constructor=w,y(A,x.prototype),A.isPureReactComponent=!0;var T=Array.isArray;function R(){}var N={H:null,A:null,T:null,S:null},j=Object.prototype.hasOwnProperty;function C(H,X,se){var ce=se.ref;return{$$typeof:t,type:H,key:X,ref:ce!==void 0?ce:null,props:se}}function k(H,X){return C(H.type,X,H.props)}function F(H){return typeof H=="object"&&H!==null&&H.$$typeof===t}function I(H){var X={"=":"=0",":":"=2"};return"$"+H.replace(/[=:]/g,function(se){return X[se]})}var W=/\/+/g;function O(H,X){return typeof H=="object"&&H!==null&&H.key!=null?I(""+H.key):X.toString(36)}function B(H){switch(H.status){case"fulfilled":return H.value;case"rejected":throw H.reason;default:switch(typeof H.status=="string"?H.then(R,R):(H.status="pending",H.then(function(X){H.status==="pending"&&(H.status="fulfilled",H.value=X)},function(X){H.status==="pending"&&(H.status="rejected",H.reason=X)})),H.status){case"fulfilled":return H.value;case"rejected":throw H.reason}}throw H}function $(H,X,se,ce,de){var Q=typeof H;(Q==="undefined"||Q==="boolean")&&(H=null);var ve=!1;if(H===null)ve=!0;else switch(Q){case"bigint":case"string":case"number":ve=!0;break;case"object":switch(H.$$typeof){case t:case e:ve=!0;break;case u:return ve=H._init,$(ve(H._payload),X,se,ce,de)}}if(ve)return de=de(H),ve=ce===""?"."+O(H,0):ce,T(de)?(se="",ve!=null&&(se=ve.replace(W,"$&/")+"/"),$(de,X,se,"",function(ge){return ge})):de!=null&&(F(de)&&(de=k(de,se+(de.key==null||H&&H.key===de.key?"":(""+de.key).replace(W,"$&/")+"/")+ve)),X.push(de)),1;ve=0;var Re=ce===""?".":ce+":";if(T(H))for(var pe=0;pe>>1,ae=$[Y];if(0>>1;Yr(se,K))cer(de,se)?($[Y]=de,$[ce]=K,Y=ce):($[Y]=se,$[X]=K,Y=X);else if(cer(de,K))$[Y]=de,$[ce]=K,Y=ce;else break e}}return V}function r($,V){var K=$.sortIndex-V.sortIndex;return K!==0?K:$.id-V.id}if(t.unstable_now=void 0,typeof performance=="object"&&typeof performance.now=="function"){var a=performance;t.unstable_now=function(){return a.now()}}else{var s=Date,o=s.now();t.unstable_now=function(){return s.now()-o}}var l=[],c=[],u=1,f=null,m=3,g=!1,b=!1,y=!1,v=!1,x=typeof setTimeout=="function"?setTimeout:null,M=typeof clearTimeout=="function"?clearTimeout:null,w=typeof setImmediate<"u"?setImmediate:null;function A($){for(var V=n(c);V!==null;){if(V.callback===null)i(c);else if(V.startTime<=$)i(c),V.sortIndex=V.expirationTime,e(l,V);else break;V=n(c)}}function T($){if(y=!1,A($),!b)if(n(l)!==null)b=!0,R||(R=!0,I());else{var V=n(c);V!==null&&B(T,V.startTime-$)}}var R=!1,N=-1,j=5,C=-1;function k(){return v?!0:!(t.unstable_now()-C$&&k());){var Y=f.callback;if(typeof Y=="function"){f.callback=null,m=f.priorityLevel;var ae=Y(f.expirationTime<=$);if($=t.unstable_now(),typeof ae=="function"){f.callback=ae,A($),V=!0;break t}f===n(l)&&i(l),A($)}else i(l);f=n(l)}if(f!==null)V=!0;else{var H=n(c);H!==null&&B(T,H.startTime-$),V=!1}}break e}finally{f=null,m=K,g=!1}V=void 0}}finally{V?I():R=!1}}}var I;if(typeof w=="function")I=function(){w(F)};else if(typeof MessageChannel<"u"){var W=new MessageChannel,O=W.port2;W.port1.onmessage=F,I=function(){O.postMessage(null)}}else I=function(){x(F,0)};function B($,V){N=x(function(){$(t.unstable_now())},V)}t.unstable_IdlePriority=5,t.unstable_ImmediatePriority=1,t.unstable_LowPriority=4,t.unstable_NormalPriority=3,t.unstable_Profiling=null,t.unstable_UserBlockingPriority=2,t.unstable_cancelCallback=function($){$.callback=null},t.unstable_forceFrameRate=function($){0>$||125<$?console.error("forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported"):j=0<$?Math.floor(1e3/$):5},t.unstable_getCurrentPriorityLevel=function(){return m},t.unstable_next=function($){switch(m){case 1:case 2:case 3:var V=3;break;default:V=m}var K=m;m=V;try{return $()}finally{m=K}},t.unstable_requestPaint=function(){v=!0},t.unstable_runWithPriority=function($,V){switch($){case 1:case 2:case 3:case 4:case 5:break;default:$=3}var K=m;m=$;try{return V()}finally{m=K}},t.unstable_scheduleCallback=function($,V,K){var Y=t.unstable_now();switch(typeof K=="object"&&K!==null?(K=K.delay,K=typeof K=="number"&&0Y?($.sortIndex=K,e(c,$),n(l)===null&&$===n(c)&&(y?(M(N),N=-1):y=!0,B(T,K-Y))):($.sortIndex=ae,e(l,$),b||g||(b=!0,R||(R=!0,I()))),$},t.unstable_shouldYield=k,t.unstable_wrapCallback=function($){var V=m;return function(){var K=m;m=V;try{return $.apply(this,arguments)}finally{m=K}}}})(DA)),DA}var aU;function pne(){return aU||(aU=1,kA.exports=hne()),kA.exports}var OA={exports:{}},Xr={};var sU;function mne(){if(sU)return Xr;sU=1;var t=xm();function e(l){var c="https://react.dev/errors/"+l;if(1"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(t)}catch(e){console.error(e)}}return t(),OA.exports=mne(),OA.exports}var lU;function gne(){if(lU)return Rg;lU=1;var t=pne(),e=xm(),n=_G();function i(d){var p="https://react.dev/errors/"+d;if(1ae||(d.current=Y[ae],Y[ae]=null,ae--)}function se(d,p){ae++,Y[ae]=d.current,d.current=p}var ce=H(null),de=H(null),Q=H(null),ve=H(null);function Re(d,p){switch(se(Q,p),se(de,d),se(ce,null),p.nodeType){case 9:case 11:d=(d=p.documentElement)&&(d=d.namespaceURI)?w4(d):0;break;default:if(d=p.tagName,p=p.namespaceURI)p=w4(p),d=M4(p,d);else switch(d){case"svg":d=1;break;case"math":d=2;break;default:d=0}}X(ce),se(ce,d)}function pe(){X(ce),X(de),X(Q)}function ge(d){d.memoizedState!==null&&se(ve,d);var p=ce.current,_=M4(p,d.type);p!==_&&(se(de,d),se(ce,_))}function Ce(d){de.current===d&&(X(ce),X(de)),ve.current===d&&(X(ve),Eg._currentValue=K)}var oe,ct;function z(d){if(oe===void 0)try{throw Error()}catch(_){var p=_.stack.trim().match(/\n( *(at )?)/);oe=p&&p[1]||"",ct=-1<_.stack.indexOf(` +function rne(t,e){for(var n=0;ni[r]})}}}return Object.freeze(Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}))}(function(){const e=document.createElement("link").relList;if(e&&e.supports&&e.supports("modulepreload"))return;for(const r of document.querySelectorAll('link[rel="modulepreload"]'))i(r);new MutationObserver(r=>{for(const a of r)if(a.type==="childList")for(const s of a.addedNodes)s.tagName==="LINK"&&s.rel==="modulepreload"&&i(s)}).observe(document,{childList:!0,subtree:!0});function n(r){const a={};return r.integrity&&(a.integrity=r.integrity),r.referrerPolicy&&(a.referrerPolicy=r.referrerPolicy),r.crossOrigin==="use-credentials"?a.credentials="include":r.crossOrigin==="anonymous"?a.credentials="omit":a.credentials="same-origin",a}function i(r){if(r.ep)return;r.ep=!0;const a=n(r);fetch(r.href,a)}})();var Nb=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function Js(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}var AA={exports:{}},Ng={};var Y4;function ane(){if(Y4)return Ng;Y4=1;var t=Symbol.for("react.transitional.element"),e=Symbol.for("react.fragment");function n(i,r,a){var s=null;if(a!==void 0&&(s=""+a),r.key!==void 0&&(s=""+r.key),"key"in r){a={};for(var o in r)o!=="key"&&(a[o]=r[o])}else a=r;return r=a.ref,{$$typeof:t,type:i,key:s,ref:r!==void 0?r:null,props:a}}return Ng.Fragment=e,Ng.jsx=n,Ng.jsxs=n,Ng}var Z4;function sne(){return Z4||(Z4=1,AA.exports=ane()),AA.exports}var h=sne(),TA={exports:{}},Yt={};var Q4;function one(){if(Q4)return Yt;Q4=1;var t=Symbol.for("react.transitional.element"),e=Symbol.for("react.portal"),n=Symbol.for("react.fragment"),i=Symbol.for("react.strict_mode"),r=Symbol.for("react.profiler"),a=Symbol.for("react.consumer"),s=Symbol.for("react.context"),o=Symbol.for("react.forward_ref"),l=Symbol.for("react.suspense"),c=Symbol.for("react.memo"),u=Symbol.for("react.lazy"),f=Symbol.for("react.activity"),m=Symbol.iterator;function g(H){return H===null||typeof H!="object"?null:(H=m&&H[m]||H["@@iterator"],typeof H=="function"?H:null)}var b={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},y=Object.assign,v={};function x(H,X,ae){this.props=H,this.context=X,this.refs=v,this.updater=ae||b}x.prototype.isReactComponent={},x.prototype.setState=function(H,X){if(typeof H!="object"&&typeof H!="function"&&H!=null)throw Error("takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,H,X,"setState")},x.prototype.forceUpdate=function(H){this.updater.enqueueForceUpdate(this,H,"forceUpdate")};function M(){}M.prototype=x.prototype;function w(H,X,ae){this.props=H,this.context=X,this.refs=v,this.updater=ae||b}var A=w.prototype=new M;A.constructor=w,y(A,x.prototype),A.isPureReactComponent=!0;var T=Array.isArray;function R(){}var N={H:null,A:null,T:null,S:null},j=Object.prototype.hasOwnProperty;function C(H,X,ae){var le=ae.ref;return{$$typeof:t,type:H,key:X,ref:le!==void 0?le:null,props:ae}}function k(H,X){return C(H.type,X,H.props)}function F(H){return typeof H=="object"&&H!==null&&H.$$typeof===t}function I(H){var X={"=":"=0",":":"=2"};return"$"+H.replace(/[=:]/g,function(ae){return X[ae]})}var G=/\/+/g;function O(H,X){return typeof H=="object"&&H!==null&&H.key!=null?I(""+H.key):X.toString(36)}function B(H){switch(H.status){case"fulfilled":return H.value;case"rejected":throw H.reason;default:switch(typeof H.status=="string"?H.then(R,R):(H.status="pending",H.then(function(X){H.status==="pending"&&(H.status="fulfilled",H.value=X)},function(X){H.status==="pending"&&(H.status="rejected",H.reason=X)})),H.status){case"fulfilled":return H.value;case"rejected":throw H.reason}}throw H}function $(H,X,ae,le,de){var ee=typeof H;(ee==="undefined"||ee==="boolean")&&(H=null);var xe=!1;if(H===null)xe=!0;else switch(ee){case"bigint":case"string":case"number":xe=!0;break;case"object":switch(H.$$typeof){case t:case e:xe=!0;break;case u:return xe=H._init,$(xe(H._payload),X,ae,le,de)}}if(xe)return de=de(H),xe=le===""?"."+O(H,0):le,T(de)?(ae="",xe!=null&&(ae=xe.replace(G,"$&/")+"/"),$(de,X,ae,"",function(we){return we})):de!=null&&(F(de)&&(de=k(de,ae+(de.key==null||H&&H.key===de.key?"":(""+de.key).replace(G,"$&/")+"/")+xe)),X.push(de)),1;xe=0;var Pe=le===""?".":le+":";if(T(H))for(var fe=0;fe>>1,se=$[Y];if(0>>1;Yr(ae,K))ler(de,ae)?($[Y]=de,$[le]=K,Y=le):($[Y]=ae,$[X]=K,Y=X);else if(ler(de,K))$[Y]=de,$[le]=K,Y=le;else break e}}return V}function r($,V){var K=$.sortIndex-V.sortIndex;return K!==0?K:$.id-V.id}if(t.unstable_now=void 0,typeof performance=="object"&&typeof performance.now=="function"){var a=performance;t.unstable_now=function(){return a.now()}}else{var s=Date,o=s.now();t.unstable_now=function(){return s.now()-o}}var l=[],c=[],u=1,f=null,m=3,g=!1,b=!1,y=!1,v=!1,x=typeof setTimeout=="function"?setTimeout:null,M=typeof clearTimeout=="function"?clearTimeout:null,w=typeof setImmediate<"u"?setImmediate:null;function A($){for(var V=n(c);V!==null;){if(V.callback===null)i(c);else if(V.startTime<=$)i(c),V.sortIndex=V.expirationTime,e(l,V);else break;V=n(c)}}function T($){if(y=!1,A($),!b)if(n(l)!==null)b=!0,R||(R=!0,I());else{var V=n(c);V!==null&&B(T,V.startTime-$)}}var R=!1,N=-1,j=5,C=-1;function k(){return v?!0:!(t.unstable_now()-C$&&k());){var Y=f.callback;if(typeof Y=="function"){f.callback=null,m=f.priorityLevel;var se=Y(f.expirationTime<=$);if($=t.unstable_now(),typeof se=="function"){f.callback=se,A($),V=!0;break t}f===n(l)&&i(l),A($)}else i(l);f=n(l)}if(f!==null)V=!0;else{var H=n(c);H!==null&&B(T,H.startTime-$),V=!1}}break e}finally{f=null,m=K,g=!1}V=void 0}}finally{V?I():R=!1}}}var I;if(typeof w=="function")I=function(){w(F)};else if(typeof MessageChannel<"u"){var G=new MessageChannel,O=G.port2;G.port1.onmessage=F,I=function(){O.postMessage(null)}}else I=function(){x(F,0)};function B($,V){N=x(function(){$(t.unstable_now())},V)}t.unstable_IdlePriority=5,t.unstable_ImmediatePriority=1,t.unstable_LowPriority=4,t.unstable_NormalPriority=3,t.unstable_Profiling=null,t.unstable_UserBlockingPriority=2,t.unstable_cancelCallback=function($){$.callback=null},t.unstable_forceFrameRate=function($){0>$||125<$?console.error("forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported"):j=0<$?Math.floor(1e3/$):5},t.unstable_getCurrentPriorityLevel=function(){return m},t.unstable_next=function($){switch(m){case 1:case 2:case 3:var V=3;break;default:V=m}var K=m;m=V;try{return $()}finally{m=K}},t.unstable_requestPaint=function(){v=!0},t.unstable_runWithPriority=function($,V){switch($){case 1:case 2:case 3:case 4:case 5:break;default:$=3}var K=m;m=$;try{return V()}finally{m=K}},t.unstable_scheduleCallback=function($,V,K){var Y=t.unstable_now();switch(typeof K=="object"&&K!==null?(K=K.delay,K=typeof K=="number"&&0Y?($.sortIndex=K,e(c,$),n(l)===null&&$===n(c)&&(y?(M(N),N=-1):y=!0,B(T,K-Y))):($.sortIndex=se,e(l,$),b||g||(b=!0,R||(R=!0,I()))),$},t.unstable_shouldYield=k,t.unstable_wrapCallback=function($){var V=m;return function(){var K=m;m=V;try{return $.apply(this,arguments)}finally{m=K}}}})(RA)),RA}var tU;function une(){return tU||(tU=1,NA.exports=cne()),NA.exports}var PA={exports:{}},Xr={};var nU;function dne(){if(nU)return Xr;nU=1;var t=xm();function e(l){var c="https://react.dev/errors/"+l;if(1"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(t)}catch(e){console.error(e)}}return t(),PA.exports=dne(),PA.exports}var rU;function fne(){if(rU)return Rg;rU=1;var t=une(),e=xm(),n=xG();function i(d){var p="https://react.dev/errors/"+d;if(1se||(d.current=Y[se],Y[se]=null,se--)}function ae(d,p){se++,Y[se]=d.current,d.current=p}var le=H(null),de=H(null),ee=H(null),xe=H(null);function Pe(d,p){switch(ae(ee,p),ae(de,d),ae(le,null),p.nodeType){case 9:case 11:d=(d=p.documentElement)&&(d=d.namespaceURI)?b4(d):0;break;default:if(d=p.tagName,p=p.namespaceURI)p=b4(p),d=y4(p,d);else switch(d){case"svg":d=1;break;case"math":d=2;break;default:d=0}}X(le),ae(le,d)}function fe(){X(le),X(de),X(ee)}function we(d){d.memoizedState!==null&&ae(xe,d);var p=le.current,_=y4(p,d.type);p!==_&&(ae(de,d),ae(le,_))}function Ie(d){de.current===d&&(X(le),X(de)),xe.current===d&&(X(xe),Eg._currentValue=K)}var ce,dt;function z(d){if(ce===void 0)try{throw Error()}catch(_){var p=_.stack.trim().match(/\n( *(at )?)/);ce=p&&p[1]||"",dt=-1<_.stack.indexOf(` at`)?" ()":-1<_.stack.indexOf("@")?"@unknown:0:0":""}return` -`+oe+d+ct}var q=!1;function re(d,p){if(!d||q)return"";q=!0;var _=Error.prepareStackTrace;Error.prepareStackTrace=void 0;try{var S={DetermineComponentFrameRoot:function(){try{if(p){var ot=function(){throw Error()};if(Object.defineProperty(ot.prototype,"props",{set:function(){throw Error()}}),typeof Reflect=="object"&&Reflect.construct){try{Reflect.construct(ot,[])}catch(Ye){var Ve=Ye}Reflect.construct(d,[],ot)}else{try{ot.call()}catch(Ye){Ve=Ye}d.call(ot.prototype)}}else{try{throw Error()}catch(Ye){Ve=Ye}(ot=d())&&typeof ot.catch=="function"&&ot.catch(function(){})}}catch(Ye){if(Ye&&Ve&&typeof Ye.stack=="string")return[Ye.stack,Ve.stack]}return[null,null]}};S.DetermineComponentFrameRoot.displayName="DetermineComponentFrameRoot";var P=Object.getOwnPropertyDescriptor(S.DetermineComponentFrameRoot,"name");P&&P.configurable&&Object.defineProperty(S.DetermineComponentFrameRoot,"name",{value:"DetermineComponentFrameRoot"});var D=S.DetermineComponentFrameRoot(),G=D[0],ie=D[1];if(G&&ie){var Se=G.split(` -`),Be=ie.split(` -`);for(P=S=0;SP||Se[S]!==Be[P]){var Je=` -`+Se[S].replace(" at new "," at ");return d.displayName&&Je.includes("")&&(Je=Je.replace("",d.displayName)),Je}while(1<=S&&0<=P);break}}}finally{q=!1,Error.prepareStackTrace=_}return(_=d?d.displayName||d.name:"")?z(_):""}function ee(d,p){switch(d.tag){case 26:case 27:case 5:return z(d.type);case 16:return z("Lazy");case 13:return d.child!==p&&p!==null?z("Suspense Fallback"):z("Suspense");case 19:return z("SuspenseList");case 0:case 15:return re(d.type,!1);case 11:return re(d.type.render,!1);case 1:return re(d.type,!0);case 31:return z("Activity");default:return""}}function te(d){try{var p="",_=null;do p+=ee(d,_),_=d,d=d.return;while(d);return p}catch(S){return` +`+ce+d+dt}var q=!1;function J(d,p){if(!d||q)return"";q=!0;var _=Error.prepareStackTrace;Error.prepareStackTrace=void 0;try{var S={DetermineComponentFrameRoot:function(){try{if(p){var ot=function(){throw Error()};if(Object.defineProperty(ot.prototype,"props",{set:function(){throw Error()}}),typeof Reflect=="object"&&Reflect.construct){try{Reflect.construct(ot,[])}catch(Ye){var Ve=Ye}Reflect.construct(d,[],ot)}else{try{ot.call()}catch(Ye){Ve=Ye}d.call(ot.prototype)}}else{try{throw Error()}catch(Ye){Ve=Ye}(ot=d())&&typeof ot.catch=="function"&&ot.catch(function(){})}}catch(Ye){if(Ye&&Ve&&typeof Ye.stack=="string")return[Ye.stack,Ve.stack]}return[null,null]}};S.DetermineComponentFrameRoot.displayName="DetermineComponentFrameRoot";var P=Object.getOwnPropertyDescriptor(S.DetermineComponentFrameRoot,"name");P&&P.configurable&&Object.defineProperty(S.DetermineComponentFrameRoot,"name",{value:"DetermineComponentFrameRoot"});var D=S.DetermineComponentFrameRoot(),W=D[0],re=D[1];if(W&&re){var _e=W.split(` +`),Be=re.split(` +`);for(P=S=0;S<_e.length&&!_e[S].includes("DetermineComponentFrameRoot");)S++;for(;PP||_e[S]!==Be[P]){var Je=` +`+_e[S].replace(" at new "," at ");return d.displayName&&Je.includes("")&&(Je=Je.replace("",d.displayName)),Je}while(1<=S&&0<=P);break}}}finally{q=!1,Error.prepareStackTrace=_}return(_=d?d.displayName||d.name:"")?z(_):""}function Z(d,p){switch(d.tag){case 26:case 27:case 5:return z(d.type);case 16:return z("Lazy");case 13:return d.child!==p&&p!==null?z("Suspense Fallback"):z("Suspense");case 19:return z("SuspenseList");case 0:case 15:return J(d.type,!1);case 11:return J(d.type.render,!1);case 1:return J(d.type,!0);case 31:return z("Activity");default:return""}}function ne(d){try{var p="",_=null;do p+=Z(d,_),_=d,d=d.return;while(d);return p}catch(S){return` Error generating stack: `+S.message+` -`+S.stack}}var le=Object.prototype.hasOwnProperty,De=t.unstable_scheduleCallback,Pe=t.unstable_cancelCallback,ne=t.unstable_shouldYield,U=t.unstable_requestPaint,L=t.unstable_now,Z=t.unstable_getCurrentPriorityLevel,xe=t.unstable_ImmediatePriority,ye=t.unstable_UserBlockingPriority,me=t.unstable_NormalPriority,Ze=t.unstable_LowPriority,Ie=t.unstable_IdlePriority,Xe=t.log,st=t.unstable_setDisableYieldValue,je=null,ke=null;function pt(d){if(typeof Xe=="function"&&st(d),ke&&typeof ke.setStrictMode=="function")try{ke.setStrictMode(je,d)}catch{}}var it=Math.clz32?Math.clz32:fe,nt=Math.log,dt=Math.LN2;function fe(d){return d>>>=0,d===0?32:31-(nt(d)/dt|0)|0}var rt=256,he=262144,Le=4194304;function Me(d){var p=d&42;if(p!==0)return p;switch(d&-d){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:return 64;case 128:return 128;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:return d&261888;case 262144:case 524288:case 1048576:case 2097152:return d&3932160;case 4194304:case 8388608:case 16777216:case 33554432:return d&62914560;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return d}}function be(d,p,_){var S=d.pendingLanes;if(S===0)return 0;var P=0,D=d.suspendedLanes,G=d.pingedLanes;d=d.warmLanes;var ie=S&134217727;return ie!==0?(S=ie&~D,S!==0?P=Me(S):(G&=ie,G!==0?P=Me(G):_||(_=ie&~d,_!==0&&(P=Me(_))))):(ie=S&~D,ie!==0?P=Me(ie):G!==0?P=Me(G):_||(_=S&~d,_!==0&&(P=Me(_)))),P===0?0:p!==0&&p!==P&&(p&D)===0&&(D=P&-P,_=p&-p,D>=_||D===32&&(_&4194048)!==0)?p:P}function He(d,p){return(d.pendingLanes&~(d.suspendedLanes&~d.pingedLanes)&p)===0}function ut(d,p){switch(d){case 1:case 2:case 4:case 8:case 64:return p+250;case 16:case 32:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return p+5e3;case 4194304:case 8388608:case 16777216:case 33554432:return-1;case 67108864:case 134217728:case 268435456:case 536870912:case 1073741824:return-1;default:return-1}}function _t(){var d=Le;return Le<<=1,(Le&62914560)===0&&(Le=4194304),d}function Rt(d){for(var p=[],_=0;31>_;_++)p.push(d);return p}function ln(d,p){d.pendingLanes|=p,p!==268435456&&(d.suspendedLanes=0,d.pingedLanes=0,d.warmLanes=0)}function Dt(d,p,_,S,P,D){var G=d.pendingLanes;d.pendingLanes=_,d.suspendedLanes=0,d.pingedLanes=0,d.warmLanes=0,d.expiredLanes&=_,d.entangledLanes&=_,d.errorRecoveryDisabledLanes&=_,d.shellSuspendCounter=0;var ie=d.entanglements,Se=d.expirationTimes,Be=d.hiddenUpdates;for(_=G&~_;0<_;){var Je=31-it(_),ot=1<"u")return null;try{return d.activeElement||d.body}catch{return d.body}}var Ti=/[\n"\\]/g;function Nn(d){return d.replace(Ti,function(p){return"\\"+p.charCodeAt(0).toString(16)+" "})}function no(d,p,_,S,P,D,G,ie){d.name="",G!=null&&typeof G!="function"&&typeof G!="symbol"&&typeof G!="boolean"?d.type=G:d.removeAttribute("type"),p!=null?G==="number"?(p===0&&d.value===""||d.value!=p)&&(d.value=""+un(p)):d.value!==""+un(p)&&(d.value=""+un(p)):G!=="submit"&&G!=="reset"||d.removeAttribute("value"),p!=null?gr(d,G,un(p)):_!=null?gr(d,G,un(_)):S!=null&&d.removeAttribute("value"),P==null&&D!=null&&(d.defaultChecked=!!D),P!=null&&(d.checked=P&&typeof P!="function"&&typeof P!="symbol"),ie!=null&&typeof ie!="function"&&typeof ie!="symbol"&&typeof ie!="boolean"?d.name=""+un(ie):d.removeAttribute("name")}function kn(d,p,_,S,P,D,G,ie){if(D!=null&&typeof D!="function"&&typeof D!="symbol"&&typeof D!="boolean"&&(d.type=D),p!=null||_!=null){if(!(D!=="submit"&&D!=="reset"||p!=null)){Kt(d);return}_=_!=null?""+un(_):"",p=p!=null?""+un(p):_,ie||p===d.value||(d.value=p),d.defaultValue=p}S=S??P,S=typeof S!="function"&&typeof S!="symbol"&&!!S,d.checked=ie?d.checked:!!S,d.defaultChecked=!!S,G!=null&&typeof G!="function"&&typeof G!="symbol"&&typeof G!="boolean"&&(d.name=G),Kt(d)}function gr(d,p,_){p==="number"&&bi(d.ownerDocument)===d||d.defaultValue===""+_||(d.defaultValue=""+_)}function Qi(d,p,_,S){if(d=d.options,p){p={};for(var P=0;P<_.length;P++)p["$"+_[P]]=!0;for(_=0;_"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),NM=!1;if(pl)try{var $m={};Object.defineProperty($m,"passive",{get:function(){NM=!0}}),window.addEventListener("test",$m,$m),window.removeEventListener("test",$m,$m)}catch{NM=!1}var Lc=null,RM=null,wv=null;function ML(){if(wv)return wv;var d,p=RM,_=p.length,S,P="value"in Lc?Lc.value:Lc.textContent,D=P.length;for(d=0;d<_&&p[d]===P[d];d++);var G=_-d;for(S=1;S<=G&&p[_-S]===P[D-S];S++);return wv=P.slice(d,1=Wm),RL=" ",PL=!1;function kL(d,p){switch(d){case"keyup":return Ree.indexOf(p.keyCode)!==-1;case"keydown":return p.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function DL(d){return d=d.detail,typeof d=="object"&&"data"in d?d.data:null}var eh=!1;function kee(d,p){switch(d){case"compositionend":return DL(p);case"keypress":return p.which!==32?null:(PL=!0,RL);case"textInput":return d=p.data,d===RL&&PL?null:d;default:return null}}function Dee(d,p){if(eh)return d==="compositionend"||!LM&&kL(d,p)?(d=ML(),wv=RM=Lc=null,eh=!1,d):null;switch(d){case"paste":return null;case"keypress":if(!(p.ctrlKey||p.altKey||p.metaKey)||p.ctrlKey&&p.altKey){if(p.char&&1=p)return{node:_,offset:p-d};d=S}e:{for(;_;){if(_.nextSibling){_=_.nextSibling;break e}_=_.parentNode}_=void 0}_=BL(_)}}function $L(d,p){return d&&p?d===p?!0:d&&d.nodeType===3?!1:p&&p.nodeType===3?$L(d,p.parentNode):"contains"in d?d.contains(p):d.compareDocumentPosition?!!(d.compareDocumentPosition(p)&16):!1:!1}function VL(d){d=d!=null&&d.ownerDocument!=null&&d.ownerDocument.defaultView!=null?d.ownerDocument.defaultView:window;for(var p=bi(d.document);p instanceof d.HTMLIFrameElement;){try{var _=typeof p.contentWindow.location.href=="string"}catch{_=!1}if(_)d=p.contentWindow;else break;p=bi(d.document)}return p}function UM(d){var p=d&&d.nodeName&&d.nodeName.toLowerCase();return p&&(p==="input"&&(d.type==="text"||d.type==="search"||d.type==="tel"||d.type==="url"||d.type==="password")||p==="textarea"||d.contentEditable==="true")}var Bee=pl&&"documentMode"in document&&11>=document.documentMode,th=null,FM=null,Ym=null,zM=!1;function GL(d,p,_){var S=_.window===_?_.document:_.nodeType===9?_:_.ownerDocument;zM||th==null||th!==bi(S)||(S=th,"selectionStart"in S&&UM(S)?S={start:S.selectionStart,end:S.selectionEnd}:(S=(S.ownerDocument&&S.ownerDocument.defaultView||window).getSelection(),S={anchorNode:S.anchorNode,anchorOffset:S.anchorOffset,focusNode:S.focusNode,focusOffset:S.focusOffset}),Ym&&Km(Ym,S)||(Ym=S,S=gb(FM,"onSelect"),0>=G,P-=G,Ro=1<<32-it(p)+P|_<Jt?(vn=kt,kt=null):vn=kt.sibling;var Mn=Ve(Oe,kt,ze[Jt],at);if(Mn===null){kt===null&&(kt=vn);break}d&&kt&&Mn.alternate===null&&p(Oe,kt),Ee=D(Mn,Ee,Jt),wn===null?jt=Mn:wn.sibling=Mn,wn=Mn,kt=vn}if(Jt===ze.length)return _(Oe,kt),yn&&gl(Oe,Jt),jt;if(kt===null){for(;JtJt?(vn=kt,kt=null):vn=kt.sibling;var iu=Ve(Oe,kt,Mn.value,at);if(iu===null){kt===null&&(kt=vn);break}d&&kt&&iu.alternate===null&&p(Oe,kt),Ee=D(iu,Ee,Jt),wn===null?jt=iu:wn.sibling=iu,wn=iu,kt=vn}if(Mn.done)return _(Oe,kt),yn&&gl(Oe,Jt),jt;if(kt===null){for(;!Mn.done;Jt++,Mn=ze.next())Mn=ot(Oe,Mn.value,at),Mn!==null&&(Ee=D(Mn,Ee,Jt),wn===null?jt=Mn:wn.sibling=Mn,wn=Mn);return yn&&gl(Oe,Jt),jt}for(kt=S(kt);!Mn.done;Jt++,Mn=ze.next())Mn=Ye(kt,Oe,Jt,Mn.value,at),Mn!==null&&(d&&Mn.alternate!==null&&kt.delete(Mn.key===null?Jt:Mn.key),Ee=D(Mn,Ee,Jt),wn===null?jt=Mn:wn.sibling=Mn,wn=Mn);return d&&kt.forEach(function(one){return p(Oe,one)}),yn&&gl(Oe,Jt),jt}function Fn(Oe,Ee,ze,at){if(typeof ze=="object"&&ze!==null&&ze.type===y&&ze.key===null&&(ze=ze.props.children),typeof ze=="object"&&ze!==null){switch(ze.$$typeof){case g:e:{for(var jt=ze.key;Ee!==null;){if(Ee.key===jt){if(jt=ze.type,jt===y){if(Ee.tag===7){_(Oe,Ee.sibling),at=P(Ee,ze.props.children),at.return=Oe,Oe=at;break e}}else if(Ee.elementType===jt||typeof jt=="object"&&jt!==null&&jt.$$typeof===j&&Md(jt)===Ee.type){_(Oe,Ee.sibling),at=P(Ee,ze.props),ng(at,ze),at.return=Oe,Oe=at;break e}_(Oe,Ee);break}else p(Oe,Ee);Ee=Ee.sibling}ze.type===y?(at=bd(ze.props.children,Oe.mode,at,ze.key),at.return=Oe,Oe=at):(at=Dv(ze.type,ze.key,ze.props,null,Oe.mode,at),ng(at,ze),at.return=Oe,Oe=at)}return G(Oe);case b:e:{for(jt=ze.key;Ee!==null;){if(Ee.key===jt)if(Ee.tag===4&&Ee.stateNode.containerInfo===ze.containerInfo&&Ee.stateNode.implementation===ze.implementation){_(Oe,Ee.sibling),at=P(Ee,ze.children||[]),at.return=Oe,Oe=at;break e}else{_(Oe,Ee);break}else p(Oe,Ee);Ee=Ee.sibling}at=qM(ze,Oe.mode,at),at.return=Oe,Oe=at}return G(Oe);case j:return ze=Md(ze),Fn(Oe,Ee,ze,at)}if(B(ze))return Nt(Oe,Ee,ze,at);if(I(ze)){if(jt=I(ze),typeof jt!="function")throw Error(i(150));return ze=jt.call(ze),Ht(Oe,Ee,ze,at)}if(typeof ze.then=="function")return Fn(Oe,Ee,zv(ze),at);if(ze.$$typeof===w)return Fn(Oe,Ee,Iv(Oe,ze),at);Bv(Oe,ze)}return typeof ze=="string"&&ze!==""||typeof ze=="number"||typeof ze=="bigint"?(ze=""+ze,Ee!==null&&Ee.tag===6?(_(Oe,Ee.sibling),at=P(Ee,ze),at.return=Oe,Oe=at):(_(Oe,Ee),at=WM(ze,Oe.mode,at),at.return=Oe,Oe=at),G(Oe)):_(Oe,Ee)}return function(Oe,Ee,ze,at){try{tg=0;var jt=Fn(Oe,Ee,ze,at);return fh=null,jt}catch(kt){if(kt===dh||kt===Uv)throw kt;var wn=Ka(29,kt,null,Oe.mode);return wn.lanes=at,wn.return=Oe,wn}finally{}}}var Ad=pI(!0),mI=pI(!1),zc=!1;function aE(d){d.updateQueue={baseState:d.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,lanes:0,hiddenCallbacks:null},callbacks:null}}function sE(d,p){d=d.updateQueue,p.updateQueue===d&&(p.updateQueue={baseState:d.baseState,firstBaseUpdate:d.firstBaseUpdate,lastBaseUpdate:d.lastBaseUpdate,shared:d.shared,callbacks:null})}function Bc(d){return{lane:d,tag:0,payload:null,callback:null,next:null}}function Hc(d,p,_){var S=d.updateQueue;if(S===null)return null;if(S=S.shared,(Cn&2)!==0){var P=S.pending;return P===null?p.next=p:(p.next=P.next,P.next=p),S.pending=p,p=kv(d),QL(d,null,_),p}return Pv(d,S,p,_),kv(d)}function ig(d,p,_){if(p=p.updateQueue,p!==null&&(p=p.shared,(_&4194048)!==0)){var S=p.lanes;S&=d.pendingLanes,_|=S,p.lanes=_,qn(d,_)}}function oE(d,p){var _=d.updateQueue,S=d.alternate;if(S!==null&&(S=S.updateQueue,_===S)){var P=null,D=null;if(_=_.firstBaseUpdate,_!==null){do{var G={lane:_.lane,tag:_.tag,payload:_.payload,callback:null,next:null};D===null?P=D=G:D=D.next=G,_=_.next}while(_!==null);D===null?P=D=p:D=D.next=p}else P=D=p;_={baseState:S.baseState,firstBaseUpdate:P,lastBaseUpdate:D,shared:S.shared,callbacks:S.callbacks},d.updateQueue=_;return}d=_.lastBaseUpdate,d===null?_.firstBaseUpdate=p:d.next=p,_.lastBaseUpdate=p}var lE=!1;function rg(){if(lE){var d=uh;if(d!==null)throw d}}function ag(d,p,_,S){lE=!1;var P=d.updateQueue;zc=!1;var D=P.firstBaseUpdate,G=P.lastBaseUpdate,ie=P.shared.pending;if(ie!==null){P.shared.pending=null;var Se=ie,Be=Se.next;Se.next=null,G===null?D=Be:G.next=Be,G=Se;var Je=d.alternate;Je!==null&&(Je=Je.updateQueue,ie=Je.lastBaseUpdate,ie!==G&&(ie===null?Je.firstBaseUpdate=Be:ie.next=Be,Je.lastBaseUpdate=Se))}if(D!==null){var ot=P.baseState;G=0,Je=Be=Se=null,ie=D;do{var Ve=ie.lane&-536870913,Ye=Ve!==ie.lane;if(Ye?(xn&Ve)===Ve:(S&Ve)===Ve){Ve!==0&&Ve===ch&&(lE=!0),Je!==null&&(Je=Je.next={lane:0,tag:ie.tag,payload:ie.payload,callback:null,next:null});e:{var Nt=d,Ht=ie;Ve=p;var Fn=_;switch(Ht.tag){case 1:if(Nt=Ht.payload,typeof Nt=="function"){ot=Nt.call(Fn,ot,Ve);break e}ot=Nt;break e;case 3:Nt.flags=Nt.flags&-65537|128;case 0:if(Nt=Ht.payload,Ve=typeof Nt=="function"?Nt.call(Fn,ot,Ve):Nt,Ve==null)break e;ot=f({},ot,Ve);break e;case 2:zc=!0}}Ve=ie.callback,Ve!==null&&(d.flags|=64,Ye&&(d.flags|=8192),Ye=P.callbacks,Ye===null?P.callbacks=[Ve]:Ye.push(Ve))}else Ye={lane:Ve,tag:ie.tag,payload:ie.payload,callback:ie.callback,next:null},Je===null?(Be=Je=Ye,Se=ot):Je=Je.next=Ye,G|=Ve;if(ie=ie.next,ie===null){if(ie=P.shared.pending,ie===null)break;Ye=ie,ie=Ye.next,Ye.next=null,P.lastBaseUpdate=Ye,P.shared.pending=null}}while(!0);Je===null&&(Se=ot),P.baseState=Se,P.firstBaseUpdate=Be,P.lastBaseUpdate=Je,D===null&&(P.shared.lanes=0),qc|=G,d.lanes=G,d.memoizedState=ot}}function gI(d,p){if(typeof d!="function")throw Error(i(191,d));d.call(p)}function xI(d,p){var _=d.callbacks;if(_!==null)for(d.callbacks=null,d=0;d<_.length;d++)gI(_[d],p)}var hh=H(null),Hv=H(0);function vI(d,p){d=Tl,se(Hv,d),se(hh,p),Tl=d|p.baseLanes}function cE(){se(Hv,Tl),se(hh,hh.current)}function uE(){Tl=Hv.current,X(hh),X(Hv)}var Ya=H(null),ws=null;function $c(d){var p=d.alternate;se(Ci,Ci.current&1),se(Ya,d),ws===null&&(p===null||hh.current!==null||p.memoizedState!==null)&&(ws=d)}function dE(d){se(Ci,Ci.current),se(Ya,d),ws===null&&(ws=d)}function bI(d){d.tag===22?(se(Ci,Ci.current),se(Ya,d),ws===null&&(ws=d)):Vc()}function Vc(){se(Ci,Ci.current),se(Ya,Ya.current)}function Za(d){X(Ya),ws===d&&(ws=null),X(Ci)}var Ci=H(0);function $v(d){for(var p=d;p!==null;){if(p.tag===13){var _=p.memoizedState;if(_!==null&&(_=_.dehydrated,_===null||xA(_)||vA(_)))return p}else if(p.tag===19&&(p.memoizedProps.revealOrder==="forwards"||p.memoizedProps.revealOrder==="backwards"||p.memoizedProps.revealOrder==="unstable_legacy-backwards"||p.memoizedProps.revealOrder==="together")){if((p.flags&128)!==0)return p}else if(p.child!==null){p.child.return=p,p=p.child;continue}if(p===d)break;for(;p.sibling===null;){if(p.return===null||p.return===d)return null;p=p.return}p.sibling.return=p.return,p=p.sibling}return null}var bl=0,Qt=null,jn=null,ji=null,Vv=!1,ph=!1,Td=!1,Gv=0,sg=0,mh=null,Zee=0;function yi(){throw Error(i(321))}function fE(d,p){if(p===null)return!1;for(var _=0;_D?D:8;var G=$.T,ie={};$.T=ie,TE(d,!1,p,_);try{var Se=P(),Be=$.S;if(Be!==null&&Be(ie,Se),Se!==null&&typeof Se=="object"&&typeof Se.then=="function"){var Je=Yee(Se,S);lg(d,p,Je,es(d))}else lg(d,p,S,es(d))}catch(ot){lg(d,p,{then:function(){},status:"rejected",reason:ot},es())}finally{V.p=D,G!==null&&ie.types!==null&&(G.types=ie.types),$.T=G}}function nte(){}function EE(d,p,_,S){if(d.tag!==5)throw Error(i(476));var P=KI(d).queue;XI(d,P,p,K,_===null?nte:function(){return YI(d),_(S)})}function KI(d){var p=d.memoizedState;if(p!==null)return p;p={memoizedState:K,baseState:K,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:yl,lastRenderedState:K},next:null};var _={};return p.next={memoizedState:_,baseState:_,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:yl,lastRenderedState:_},next:null},d.memoizedState=p,d=d.alternate,d!==null&&(d.memoizedState=p),p}function YI(d){var p=KI(d);p.next===null&&(p=d.alternate.memoizedState),lg(d,p.next.queue,{},es())}function AE(){return Or(Eg)}function ZI(){return Ni().memoizedState}function QI(){return Ni().memoizedState}function ite(d){for(var p=d.return;p!==null;){switch(p.tag){case 24:case 3:var _=es();d=Bc(_);var S=Hc(p,d,_);S!==null&&(ka(S,p,_),ig(S,p,_)),p={cache:tE()},d.payload=p;return}p=p.return}}function rte(d,p,_){var S=es();_={lane:S,revertLane:0,gesture:null,action:_,hasEagerState:!1,eagerState:null,next:null},Zv(d)?ej(p,_):(_=VM(d,p,_,S),_!==null&&(ka(_,d,S),tj(_,p,S)))}function JI(d,p,_){var S=es();lg(d,p,_,S)}function lg(d,p,_,S){var P={lane:S,revertLane:0,gesture:null,action:_,hasEagerState:!1,eagerState:null,next:null};if(Zv(d))ej(p,P);else{var D=d.alternate;if(d.lanes===0&&(D===null||D.lanes===0)&&(D=p.lastRenderedReducer,D!==null))try{var G=p.lastRenderedState,ie=D(G,_);if(P.hasEagerState=!0,P.eagerState=ie,Xa(ie,G))return Pv(d,p,P,0),Xn===null&&Rv(),!1}catch{}finally{}if(_=VM(d,p,P,S),_!==null)return ka(_,d,S),tj(_,p,S),!0}return!1}function TE(d,p,_,S){if(S={lane:2,revertLane:aA(),gesture:null,action:S,hasEagerState:!1,eagerState:null,next:null},Zv(d)){if(p)throw Error(i(479))}else p=VM(d,_,S,2),p!==null&&ka(p,d,2)}function Zv(d){var p=d.alternate;return d===Qt||p!==null&&p===Qt}function ej(d,p){ph=Vv=!0;var _=d.pending;_===null?p.next=p:(p.next=_.next,_.next=p),d.pending=p}function tj(d,p,_){if((_&4194048)!==0){var S=p.lanes;S&=d.pendingLanes,_|=S,p.lanes=_,qn(d,_)}}var cg={readContext:Or,use:qv,useCallback:yi,useContext:yi,useEffect:yi,useImperativeHandle:yi,useLayoutEffect:yi,useInsertionEffect:yi,useMemo:yi,useReducer:yi,useRef:yi,useState:yi,useDebugValue:yi,useDeferredValue:yi,useTransition:yi,useSyncExternalStore:yi,useId:yi,useHostTransitionStatus:yi,useFormState:yi,useActionState:yi,useOptimistic:yi,useMemoCache:yi,useCacheRefresh:yi};cg.useEffectEvent=yi;var nj={readContext:Or,use:qv,useCallback:function(d,p){return ua().memoizedState=[d,p===void 0?null:p],d},useContext:Or,useEffect:FI,useImperativeHandle:function(d,p,_){_=_!=null?_.concat([d]):null,Kv(4194308,4,$I.bind(null,p,d),_)},useLayoutEffect:function(d,p){return Kv(4194308,4,d,p)},useInsertionEffect:function(d,p){Kv(4,2,d,p)},useMemo:function(d,p){var _=ua();p=p===void 0?null:p;var S=d();if(Td){pt(!0);try{d()}finally{pt(!1)}}return _.memoizedState=[S,p],S},useReducer:function(d,p,_){var S=ua();if(_!==void 0){var P=_(p);if(Td){pt(!0);try{_(p)}finally{pt(!1)}}}else P=p;return S.memoizedState=S.baseState=P,d={pending:null,lanes:0,dispatch:null,lastRenderedReducer:d,lastRenderedState:P},S.queue=d,d=d.dispatch=rte.bind(null,Qt,d),[S.memoizedState,d]},useRef:function(d){var p=ua();return d={current:d},p.memoizedState=d},useState:function(d){d=yE(d);var p=d.queue,_=JI.bind(null,Qt,p);return p.dispatch=_,[d.memoizedState,_]},useDebugValue:wE,useDeferredValue:function(d,p){var _=ua();return ME(_,d,p)},useTransition:function(){var d=yE(!1);return d=XI.bind(null,Qt,d.queue,!0,!1),ua().memoizedState=d,[!1,d]},useSyncExternalStore:function(d,p,_){var S=Qt,P=ua();if(yn){if(_===void 0)throw Error(i(407));_=_()}else{if(_=p(),Xn===null)throw Error(i(349));(xn&127)!==0||wI(S,p,_)}P.memoizedState=_;var D={value:_,getSnapshot:p};return P.queue=D,FI(EI.bind(null,S,D,d),[d]),S.flags|=2048,gh(9,{destroy:void 0},MI.bind(null,S,D,_,p),null),_},useId:function(){var d=ua(),p=Xn.identifierPrefix;if(yn){var _=Po,S=Ro;_=(S&~(1<<32-it(S)-1)).toString(32)+_,p="_"+p+"R_"+_,_=Gv++,0<_&&(p+="H"+_.toString(32)),p+="_"}else _=Zee++,p="_"+p+"r_"+_.toString(32)+"_";return d.memoizedState=p},useHostTransitionStatus:AE,useFormState:OI,useActionState:OI,useOptimistic:function(d){var p=ua();p.memoizedState=p.baseState=d;var _={pending:null,lanes:0,dispatch:null,lastRenderedReducer:null,lastRenderedState:null};return p.queue=_,p=TE.bind(null,Qt,!0,_),_.dispatch=p,[d,p]},useMemoCache:xE,useCacheRefresh:function(){return ua().memoizedState=ite.bind(null,Qt)},useEffectEvent:function(d){var p=ua(),_={impl:d};return p.memoizedState=_,function(){if((Cn&2)!==0)throw Error(i(440));return _.impl.apply(void 0,arguments)}}},CE={readContext:Or,use:qv,useCallback:GI,useContext:Or,useEffect:SE,useImperativeHandle:VI,useInsertionEffect:BI,useLayoutEffect:HI,useMemo:WI,useReducer:Xv,useRef:UI,useState:function(){return Xv(yl)},useDebugValue:wE,useDeferredValue:function(d,p){var _=Ni();return qI(_,jn.memoizedState,d,p)},useTransition:function(){var d=Xv(yl)[0],p=Ni().memoizedState;return[typeof d=="boolean"?d:og(d),p]},useSyncExternalStore:SI,useId:ZI,useHostTransitionStatus:AE,useFormState:LI,useActionState:LI,useOptimistic:function(d,p){var _=Ni();return CI(_,jn,d,p)},useMemoCache:xE,useCacheRefresh:QI};CE.useEffectEvent=zI;var ij={readContext:Or,use:qv,useCallback:GI,useContext:Or,useEffect:SE,useImperativeHandle:VI,useInsertionEffect:BI,useLayoutEffect:HI,useMemo:WI,useReducer:bE,useRef:UI,useState:function(){return bE(yl)},useDebugValue:wE,useDeferredValue:function(d,p){var _=Ni();return jn===null?ME(_,d,p):qI(_,jn.memoizedState,d,p)},useTransition:function(){var d=bE(yl)[0],p=Ni().memoizedState;return[typeof d=="boolean"?d:og(d),p]},useSyncExternalStore:SI,useId:ZI,useHostTransitionStatus:AE,useFormState:jI,useActionState:jI,useOptimistic:function(d,p){var _=Ni();return jn!==null?CI(_,jn,d,p):(_.baseState=d,[d,_.queue.dispatch])},useMemoCache:xE,useCacheRefresh:QI};ij.useEffectEvent=zI;function NE(d,p,_,S){p=d.memoizedState,_=_(S,p),_=_==null?p:f({},p,_),d.memoizedState=_,d.lanes===0&&(d.updateQueue.baseState=_)}var RE={enqueueSetState:function(d,p,_){d=d._reactInternals;var S=es(),P=Bc(S);P.payload=p,_!=null&&(P.callback=_),p=Hc(d,P,S),p!==null&&(ka(p,d,S),ig(p,d,S))},enqueueReplaceState:function(d,p,_){d=d._reactInternals;var S=es(),P=Bc(S);P.tag=1,P.payload=p,_!=null&&(P.callback=_),p=Hc(d,P,S),p!==null&&(ka(p,d,S),ig(p,d,S))},enqueueForceUpdate:function(d,p){d=d._reactInternals;var _=es(),S=Bc(_);S.tag=2,p!=null&&(S.callback=p),p=Hc(d,S,_),p!==null&&(ka(p,d,_),ig(p,d,_))}};function rj(d,p,_,S,P,D,G){return d=d.stateNode,typeof d.shouldComponentUpdate=="function"?d.shouldComponentUpdate(S,D,G):p.prototype&&p.prototype.isPureReactComponent?!Km(_,S)||!Km(P,D):!0}function aj(d,p,_,S){d=p.state,typeof p.componentWillReceiveProps=="function"&&p.componentWillReceiveProps(_,S),typeof p.UNSAFE_componentWillReceiveProps=="function"&&p.UNSAFE_componentWillReceiveProps(_,S),p.state!==d&&RE.enqueueReplaceState(p,p.state,null)}function Cd(d,p){var _=p;if("ref"in p){_={};for(var S in p)S!=="ref"&&(_[S]=p[S])}if(d=d.defaultProps){_===p&&(_=f({},_));for(var P in d)_[P]===void 0&&(_[P]=d[P])}return _}function sj(d){Nv(d)}function oj(d){console.error(d)}function lj(d){Nv(d)}function Qv(d,p){try{var _=d.onUncaughtError;_(p.value,{componentStack:p.stack})}catch(S){setTimeout(function(){throw S})}}function cj(d,p,_){try{var S=d.onCaughtError;S(_.value,{componentStack:_.stack,errorBoundary:p.tag===1?p.stateNode:null})}catch(P){setTimeout(function(){throw P})}}function PE(d,p,_){return _=Bc(_),_.tag=3,_.payload={element:null},_.callback=function(){Qv(d,p)},_}function uj(d){return d=Bc(d),d.tag=3,d}function dj(d,p,_,S){var P=_.type.getDerivedStateFromError;if(typeof P=="function"){var D=S.value;d.payload=function(){return P(D)},d.callback=function(){cj(p,_,S)}}var G=_.stateNode;G!==null&&typeof G.componentDidCatch=="function"&&(d.callback=function(){cj(p,_,S),typeof P!="function"&&(Xc===null?Xc=new Set([this]):Xc.add(this));var ie=S.stack;this.componentDidCatch(S.value,{componentStack:ie!==null?ie:""})})}function ate(d,p,_,S,P){if(_.flags|=32768,S!==null&&typeof S=="object"&&typeof S.then=="function"){if(p=_.alternate,p!==null&&lh(p,_,P,!0),_=Ya.current,_!==null){switch(_.tag){case 31:case 13:return ws===null?ub():_.alternate===null&&_i===0&&(_i=3),_.flags&=-257,_.flags|=65536,_.lanes=P,S===Fv?_.flags|=16384:(p=_.updateQueue,p===null?_.updateQueue=new Set([S]):p.add(S),nA(d,S,P)),!1;case 22:return _.flags|=65536,S===Fv?_.flags|=16384:(p=_.updateQueue,p===null?(p={transitions:null,markerInstances:null,retryQueue:new Set([S])},_.updateQueue=p):(_=p.retryQueue,_===null?p.retryQueue=new Set([S]):_.add(S)),nA(d,S,P)),!1}throw Error(i(435,_.tag))}return nA(d,S,P),ub(),!1}if(yn)return p=Ya.current,p!==null?((p.flags&65536)===0&&(p.flags|=256),p.flags|=65536,p.lanes=P,S!==YM&&(d=Error(i(422),{cause:S}),Qm(bs(d,_)))):(S!==YM&&(p=Error(i(423),{cause:S}),Qm(bs(p,_))),d=d.current.alternate,d.flags|=65536,P&=-P,d.lanes|=P,S=bs(S,_),P=PE(d.stateNode,S,P),oE(d,P),_i!==4&&(_i=2)),!1;var D=Error(i(520),{cause:S});if(D=bs(D,_),xg===null?xg=[D]:xg.push(D),_i!==4&&(_i=2),p===null)return!0;S=bs(S,_),_=p;do{switch(_.tag){case 3:return _.flags|=65536,d=P&-P,_.lanes|=d,d=PE(_.stateNode,S,d),oE(_,d),!1;case 1:if(p=_.type,D=_.stateNode,(_.flags&128)===0&&(typeof p.getDerivedStateFromError=="function"||D!==null&&typeof D.componentDidCatch=="function"&&(Xc===null||!Xc.has(D))))return _.flags|=65536,P&=-P,_.lanes|=P,P=uj(P),dj(P,d,_,S),oE(_,P),!1}_=_.return}while(_!==null);return!1}var kE=Error(i(461)),Ui=!1;function Lr(d,p,_,S){p.child=d===null?mI(p,null,_,S):Ad(p,d.child,_,S)}function fj(d,p,_,S,P){_=_.render;var D=p.ref;if("ref"in S){var G={};for(var ie in S)ie!=="ref"&&(G[ie]=S[ie])}else G=S;return Sd(p),S=hE(d,p,_,G,D,P),ie=pE(),d!==null&&!Ui?(mE(d,p,P),_l(d,p,P)):(yn&&ie&&XM(p),p.flags|=1,Lr(d,p,S,P),p.child)}function hj(d,p,_,S,P){if(d===null){var D=_.type;return typeof D=="function"&&!GM(D)&&D.defaultProps===void 0&&_.compare===null?(p.tag=15,p.type=D,pj(d,p,D,S,P)):(d=Dv(_.type,null,S,p,p.mode,P),d.ref=p.ref,d.return=p,p.child=d)}if(D=d.child,!zE(d,P)){var G=D.memoizedProps;if(_=_.compare,_=_!==null?_:Km,_(G,S)&&d.ref===p.ref)return _l(d,p,P)}return p.flags|=1,d=ml(D,S),d.ref=p.ref,d.return=p,p.child=d}function pj(d,p,_,S,P){if(d!==null){var D=d.memoizedProps;if(Km(D,S)&&d.ref===p.ref)if(Ui=!1,p.pendingProps=S=D,zE(d,P))(d.flags&131072)!==0&&(Ui=!0);else return p.lanes=d.lanes,_l(d,p,P)}return DE(d,p,_,S,P)}function mj(d,p,_,S){var P=S.children,D=d!==null?d.memoizedState:null;if(d===null&&p.stateNode===null&&(p.stateNode={_visibility:1,_pendingMarkers:null,_retryCache:null,_transitions:null}),S.mode==="hidden"){if((p.flags&128)!==0){if(D=D!==null?D.baseLanes|_:_,d!==null){for(S=p.child=d.child,P=0;S!==null;)P=P|S.lanes|S.childLanes,S=S.sibling;S=P&~D}else S=0,p.child=null;return gj(d,p,D,_,S)}if((_&536870912)!==0)p.memoizedState={baseLanes:0,cachePool:null},d!==null&&jv(p,D!==null?D.cachePool:null),D!==null?vI(p,D):cE(),bI(p);else return S=p.lanes=536870912,gj(d,p,D!==null?D.baseLanes|_:_,_,S)}else D!==null?(jv(p,D.cachePool),vI(p,D),Vc(),p.memoizedState=null):(d!==null&&jv(p,null),cE(),Vc());return Lr(d,p,P,_),p.child}function ug(d,p){return d!==null&&d.tag===22||p.stateNode!==null||(p.stateNode={_visibility:1,_pendingMarkers:null,_retryCache:null,_transitions:null}),p.sibling}function gj(d,p,_,S,P){var D=iE();return D=D===null?null:{parent:Ii._currentValue,pool:D},p.memoizedState={baseLanes:_,cachePool:D},d!==null&&jv(p,null),cE(),bI(p),d!==null&&lh(d,p,S,!0),p.childLanes=P,null}function Jv(d,p){return p=tb({mode:p.mode,children:p.children},d.mode),p.ref=d.ref,d.child=p,p.return=d,p}function xj(d,p,_){return Ad(p,d.child,null,_),d=Jv(p,p.pendingProps),d.flags|=2,Za(p),p.memoizedState=null,d}function ste(d,p,_){var S=p.pendingProps,P=(p.flags&128)!==0;if(p.flags&=-129,d===null){if(yn){if(S.mode==="hidden")return d=Jv(p,S),p.lanes=536870912,ug(null,d);if(dE(p),(d=ti)?(d=N4(d,Ss),d=d!==null&&d.data==="&"?d:null,d!==null&&(p.memoizedState={dehydrated:d,treeContext:Ic!==null?{id:Ro,overflow:Po}:null,retryLane:536870912,hydrationErrors:null},_=eI(d),_.return=p,p.child=_,Dr=p,ti=null)):d=null,d===null)throw Uc(p);return p.lanes=536870912,null}return Jv(p,S)}var D=d.memoizedState;if(D!==null){var G=D.dehydrated;if(dE(p),P)if(p.flags&256)p.flags&=-257,p=xj(d,p,_);else if(p.memoizedState!==null)p.child=d.child,p.flags|=128,p=null;else throw Error(i(558));else if(Ui||lh(d,p,_,!1),P=(_&d.childLanes)!==0,Ui||P){if(S=Xn,S!==null&&(G=pr(S,_),G!==0&&G!==D.retryLane))throw D.retryLane=G,vd(d,G),ka(S,d,G),kE;ub(),p=xj(d,p,_)}else d=D.treeContext,ti=Ms(G.nextSibling),Dr=p,yn=!0,jc=null,Ss=!1,d!==null&&iI(p,d),p=Jv(p,S),p.flags|=4096;return p}return d=ml(d.child,{mode:S.mode,children:S.children}),d.ref=p.ref,p.child=d,d.return=p,d}function eb(d,p){var _=p.ref;if(_===null)d!==null&&d.ref!==null&&(p.flags|=4194816);else{if(typeof _!="function"&&typeof _!="object")throw Error(i(284));(d===null||d.ref!==_)&&(p.flags|=4194816)}}function DE(d,p,_,S,P){return Sd(p),_=hE(d,p,_,S,void 0,P),S=pE(),d!==null&&!Ui?(mE(d,p,P),_l(d,p,P)):(yn&&S&&XM(p),p.flags|=1,Lr(d,p,_,P),p.child)}function vj(d,p,_,S,P,D){return Sd(p),p.updateQueue=null,_=_I(p,S,_,P),yI(d),S=pE(),d!==null&&!Ui?(mE(d,p,D),_l(d,p,D)):(yn&&S&&XM(p),p.flags|=1,Lr(d,p,_,D),p.child)}function bj(d,p,_,S,P){if(Sd(p),p.stateNode===null){var D=rh,G=_.contextType;typeof G=="object"&&G!==null&&(D=Or(G)),D=new _(S,D),p.memoizedState=D.state!==null&&D.state!==void 0?D.state:null,D.updater=RE,p.stateNode=D,D._reactInternals=p,D=p.stateNode,D.props=S,D.state=p.memoizedState,D.refs={},aE(p),G=_.contextType,D.context=typeof G=="object"&&G!==null?Or(G):rh,D.state=p.memoizedState,G=_.getDerivedStateFromProps,typeof G=="function"&&(NE(p,_,G,S),D.state=p.memoizedState),typeof _.getDerivedStateFromProps=="function"||typeof D.getSnapshotBeforeUpdate=="function"||typeof D.UNSAFE_componentWillMount!="function"&&typeof D.componentWillMount!="function"||(G=D.state,typeof D.componentWillMount=="function"&&D.componentWillMount(),typeof D.UNSAFE_componentWillMount=="function"&&D.UNSAFE_componentWillMount(),G!==D.state&&RE.enqueueReplaceState(D,D.state,null),ag(p,S,D,P),rg(),D.state=p.memoizedState),typeof D.componentDidMount=="function"&&(p.flags|=4194308),S=!0}else if(d===null){D=p.stateNode;var ie=p.memoizedProps,Se=Cd(_,ie);D.props=Se;var Be=D.context,Je=_.contextType;G=rh,typeof Je=="object"&&Je!==null&&(G=Or(Je));var ot=_.getDerivedStateFromProps;Je=typeof ot=="function"||typeof D.getSnapshotBeforeUpdate=="function",ie=p.pendingProps!==ie,Je||typeof D.UNSAFE_componentWillReceiveProps!="function"&&typeof D.componentWillReceiveProps!="function"||(ie||Be!==G)&&aj(p,D,S,G),zc=!1;var Ve=p.memoizedState;D.state=Ve,ag(p,S,D,P),rg(),Be=p.memoizedState,ie||Ve!==Be||zc?(typeof ot=="function"&&(NE(p,_,ot,S),Be=p.memoizedState),(Se=zc||rj(p,_,Se,S,Ve,Be,G))?(Je||typeof D.UNSAFE_componentWillMount!="function"&&typeof D.componentWillMount!="function"||(typeof D.componentWillMount=="function"&&D.componentWillMount(),typeof D.UNSAFE_componentWillMount=="function"&&D.UNSAFE_componentWillMount()),typeof D.componentDidMount=="function"&&(p.flags|=4194308)):(typeof D.componentDidMount=="function"&&(p.flags|=4194308),p.memoizedProps=S,p.memoizedState=Be),D.props=S,D.state=Be,D.context=G,S=Se):(typeof D.componentDidMount=="function"&&(p.flags|=4194308),S=!1)}else{D=p.stateNode,sE(d,p),G=p.memoizedProps,Je=Cd(_,G),D.props=Je,ot=p.pendingProps,Ve=D.context,Be=_.contextType,Se=rh,typeof Be=="object"&&Be!==null&&(Se=Or(Be)),ie=_.getDerivedStateFromProps,(Be=typeof ie=="function"||typeof D.getSnapshotBeforeUpdate=="function")||typeof D.UNSAFE_componentWillReceiveProps!="function"&&typeof D.componentWillReceiveProps!="function"||(G!==ot||Ve!==Se)&&aj(p,D,S,Se),zc=!1,Ve=p.memoizedState,D.state=Ve,ag(p,S,D,P),rg();var Ye=p.memoizedState;G!==ot||Ve!==Ye||zc||d!==null&&d.dependencies!==null&&Lv(d.dependencies)?(typeof ie=="function"&&(NE(p,_,ie,S),Ye=p.memoizedState),(Je=zc||rj(p,_,Je,S,Ve,Ye,Se)||d!==null&&d.dependencies!==null&&Lv(d.dependencies))?(Be||typeof D.UNSAFE_componentWillUpdate!="function"&&typeof D.componentWillUpdate!="function"||(typeof D.componentWillUpdate=="function"&&D.componentWillUpdate(S,Ye,Se),typeof D.UNSAFE_componentWillUpdate=="function"&&D.UNSAFE_componentWillUpdate(S,Ye,Se)),typeof D.componentDidUpdate=="function"&&(p.flags|=4),typeof D.getSnapshotBeforeUpdate=="function"&&(p.flags|=1024)):(typeof D.componentDidUpdate!="function"||G===d.memoizedProps&&Ve===d.memoizedState||(p.flags|=4),typeof D.getSnapshotBeforeUpdate!="function"||G===d.memoizedProps&&Ve===d.memoizedState||(p.flags|=1024),p.memoizedProps=S,p.memoizedState=Ye),D.props=S,D.state=Ye,D.context=Se,S=Je):(typeof D.componentDidUpdate!="function"||G===d.memoizedProps&&Ve===d.memoizedState||(p.flags|=4),typeof D.getSnapshotBeforeUpdate!="function"||G===d.memoizedProps&&Ve===d.memoizedState||(p.flags|=1024),S=!1)}return D=S,eb(d,p),S=(p.flags&128)!==0,D||S?(D=p.stateNode,_=S&&typeof _.getDerivedStateFromError!="function"?null:D.render(),p.flags|=1,d!==null&&S?(p.child=Ad(p,d.child,null,P),p.child=Ad(p,null,_,P)):Lr(d,p,_,P),p.memoizedState=D.state,d=p.child):d=_l(d,p,P),d}function yj(d,p,_,S){return yd(),p.flags|=256,Lr(d,p,_,S),p.child}var OE={dehydrated:null,treeContext:null,retryLane:0,hydrationErrors:null};function LE(d){return{baseLanes:d,cachePool:cI()}}function IE(d,p,_){return d=d!==null?d.childLanes&~_:0,p&&(d|=Ja),d}function _j(d,p,_){var S=p.pendingProps,P=!1,D=(p.flags&128)!==0,G;if((G=D)||(G=d!==null&&d.memoizedState===null?!1:(Ci.current&2)!==0),G&&(P=!0,p.flags&=-129),G=(p.flags&32)!==0,p.flags&=-33,d===null){if(yn){if(P?$c(p):Vc(),(d=ti)?(d=N4(d,Ss),d=d!==null&&d.data!=="&"?d:null,d!==null&&(p.memoizedState={dehydrated:d,treeContext:Ic!==null?{id:Ro,overflow:Po}:null,retryLane:536870912,hydrationErrors:null},_=eI(d),_.return=p,p.child=_,Dr=p,ti=null)):d=null,d===null)throw Uc(p);return vA(d)?p.lanes=32:p.lanes=536870912,null}var ie=S.children;return S=S.fallback,P?(Vc(),P=p.mode,ie=tb({mode:"hidden",children:ie},P),S=bd(S,P,_,null),ie.return=p,S.return=p,ie.sibling=S,p.child=ie,S=p.child,S.memoizedState=LE(_),S.childLanes=IE(d,G,_),p.memoizedState=OE,ug(null,S)):($c(p),jE(p,ie))}var Se=d.memoizedState;if(Se!==null&&(ie=Se.dehydrated,ie!==null)){if(D)p.flags&256?($c(p),p.flags&=-257,p=UE(d,p,_)):p.memoizedState!==null?(Vc(),p.child=d.child,p.flags|=128,p=null):(Vc(),ie=S.fallback,P=p.mode,S=tb({mode:"visible",children:S.children},P),ie=bd(ie,P,_,null),ie.flags|=2,S.return=p,ie.return=p,S.sibling=ie,p.child=S,Ad(p,d.child,null,_),S=p.child,S.memoizedState=LE(_),S.childLanes=IE(d,G,_),p.memoizedState=OE,p=ug(null,S));else if($c(p),vA(ie)){if(G=ie.nextSibling&&ie.nextSibling.dataset,G)var Be=G.dgst;G=Be,S=Error(i(419)),S.stack="",S.digest=G,Qm({value:S,source:null,stack:null}),p=UE(d,p,_)}else if(Ui||lh(d,p,_,!1),G=(_&d.childLanes)!==0,Ui||G){if(G=Xn,G!==null&&(S=pr(G,_),S!==0&&S!==Se.retryLane))throw Se.retryLane=S,vd(d,S),ka(G,d,S),kE;xA(ie)||ub(),p=UE(d,p,_)}else xA(ie)?(p.flags|=192,p.child=d.child,p=null):(d=Se.treeContext,ti=Ms(ie.nextSibling),Dr=p,yn=!0,jc=null,Ss=!1,d!==null&&iI(p,d),p=jE(p,S.children),p.flags|=4096);return p}return P?(Vc(),ie=S.fallback,P=p.mode,Se=d.child,Be=Se.sibling,S=ml(Se,{mode:"hidden",children:S.children}),S.subtreeFlags=Se.subtreeFlags&65011712,Be!==null?ie=ml(Be,ie):(ie=bd(ie,P,_,null),ie.flags|=2),ie.return=p,S.return=p,S.sibling=ie,p.child=S,ug(null,S),S=p.child,ie=d.child.memoizedState,ie===null?ie=LE(_):(P=ie.cachePool,P!==null?(Se=Ii._currentValue,P=P.parent!==Se?{parent:Se,pool:Se}:P):P=cI(),ie={baseLanes:ie.baseLanes|_,cachePool:P}),S.memoizedState=ie,S.childLanes=IE(d,G,_),p.memoizedState=OE,ug(d.child,S)):($c(p),_=d.child,d=_.sibling,_=ml(_,{mode:"visible",children:S.children}),_.return=p,_.sibling=null,d!==null&&(G=p.deletions,G===null?(p.deletions=[d],p.flags|=16):G.push(d)),p.child=_,p.memoizedState=null,_)}function jE(d,p){return p=tb({mode:"visible",children:p},d.mode),p.return=d,d.child=p}function tb(d,p){return d=Ka(22,d,null,p),d.lanes=0,d}function UE(d,p,_){return Ad(p,d.child,null,_),d=jE(p,p.pendingProps.children),d.flags|=2,p.memoizedState=null,d}function Sj(d,p,_){d.lanes|=p;var S=d.alternate;S!==null&&(S.lanes|=p),JM(d.return,p,_)}function FE(d,p,_,S,P,D){var G=d.memoizedState;G===null?d.memoizedState={isBackwards:p,rendering:null,renderingStartTime:0,last:S,tail:_,tailMode:P,treeForkCount:D}:(G.isBackwards=p,G.rendering=null,G.renderingStartTime=0,G.last=S,G.tail=_,G.tailMode=P,G.treeForkCount=D)}function wj(d,p,_){var S=p.pendingProps,P=S.revealOrder,D=S.tail;S=S.children;var G=Ci.current,ie=(G&2)!==0;if(ie?(G=G&1|2,p.flags|=128):G&=1,se(Ci,G),Lr(d,p,S,_),S=yn?Zm:0,!ie&&d!==null&&(d.flags&128)!==0)e:for(d=p.child;d!==null;){if(d.tag===13)d.memoizedState!==null&&Sj(d,_,p);else if(d.tag===19)Sj(d,_,p);else if(d.child!==null){d.child.return=d,d=d.child;continue}if(d===p)break e;for(;d.sibling===null;){if(d.return===null||d.return===p)break e;d=d.return}d.sibling.return=d.return,d=d.sibling}switch(P){case"forwards":for(_=p.child,P=null;_!==null;)d=_.alternate,d!==null&&$v(d)===null&&(P=_),_=_.sibling;_=P,_===null?(P=p.child,p.child=null):(P=_.sibling,_.sibling=null),FE(p,!1,P,_,D,S);break;case"backwards":case"unstable_legacy-backwards":for(_=null,P=p.child,p.child=null;P!==null;){if(d=P.alternate,d!==null&&$v(d)===null){p.child=P;break}d=P.sibling,P.sibling=_,_=P,P=d}FE(p,!0,_,null,D,S);break;case"together":FE(p,!1,null,null,void 0,S);break;default:p.memoizedState=null}return p.child}function _l(d,p,_){if(d!==null&&(p.dependencies=d.dependencies),qc|=p.lanes,(_&p.childLanes)===0)if(d!==null){if(lh(d,p,_,!1),(_&p.childLanes)===0)return null}else return null;if(d!==null&&p.child!==d.child)throw Error(i(153));if(p.child!==null){for(d=p.child,_=ml(d,d.pendingProps),p.child=_,_.return=p;d.sibling!==null;)d=d.sibling,_=_.sibling=ml(d,d.pendingProps),_.return=p;_.sibling=null}return p.child}function zE(d,p){return(d.lanes&p)!==0?!0:(d=d.dependencies,!!(d!==null&&Lv(d)))}function ote(d,p,_){switch(p.tag){case 3:Re(p,p.stateNode.containerInfo),Fc(p,Ii,d.memoizedState.cache),yd();break;case 27:case 5:ge(p);break;case 4:Re(p,p.stateNode.containerInfo);break;case 10:Fc(p,p.type,p.memoizedProps.value);break;case 31:if(p.memoizedState!==null)return p.flags|=128,dE(p),null;break;case 13:var S=p.memoizedState;if(S!==null)return S.dehydrated!==null?($c(p),p.flags|=128,null):(_&p.child.childLanes)!==0?_j(d,p,_):($c(p),d=_l(d,p,_),d!==null?d.sibling:null);$c(p);break;case 19:var P=(d.flags&128)!==0;if(S=(_&p.childLanes)!==0,S||(lh(d,p,_,!1),S=(_&p.childLanes)!==0),P){if(S)return wj(d,p,_);p.flags|=128}if(P=p.memoizedState,P!==null&&(P.rendering=null,P.tail=null,P.lastEffect=null),se(Ci,Ci.current),S)break;return null;case 22:return p.lanes=0,mj(d,p,_,p.pendingProps);case 24:Fc(p,Ii,d.memoizedState.cache)}return _l(d,p,_)}function Mj(d,p,_){if(d!==null)if(d.memoizedProps!==p.pendingProps)Ui=!0;else{if(!zE(d,_)&&(p.flags&128)===0)return Ui=!1,ote(d,p,_);Ui=(d.flags&131072)!==0}else Ui=!1,yn&&(p.flags&1048576)!==0&&nI(p,Zm,p.index);switch(p.lanes=0,p.tag){case 16:e:{var S=p.pendingProps;if(d=Md(p.elementType),p.type=d,typeof d=="function")GM(d)?(S=Cd(d,S),p.tag=1,p=bj(null,p,d,S,_)):(p.tag=0,p=DE(null,p,d,S,_));else{if(d!=null){var P=d.$$typeof;if(P===A){p.tag=11,p=fj(null,p,d,S,_);break e}else if(P===N){p.tag=14,p=hj(null,p,d,S,_);break e}}throw p=O(d)||d,Error(i(306,p,""))}}return p;case 0:return DE(d,p,p.type,p.pendingProps,_);case 1:return S=p.type,P=Cd(S,p.pendingProps),bj(d,p,S,P,_);case 3:e:{if(Re(p,p.stateNode.containerInfo),d===null)throw Error(i(387));S=p.pendingProps;var D=p.memoizedState;P=D.element,sE(d,p),ag(p,S,null,_);var G=p.memoizedState;if(S=G.cache,Fc(p,Ii,S),S!==D.cache&&eE(p,[Ii],_,!0),rg(),S=G.element,D.isDehydrated)if(D={element:S,isDehydrated:!1,cache:G.cache},p.updateQueue.baseState=D,p.memoizedState=D,p.flags&256){p=yj(d,p,S,_);break e}else if(S!==P){P=bs(Error(i(424)),p),Qm(P),p=yj(d,p,S,_);break e}else{switch(d=p.stateNode.containerInfo,d.nodeType){case 9:d=d.body;break;default:d=d.nodeName==="HTML"?d.ownerDocument.body:d}for(ti=Ms(d.firstChild),Dr=p,yn=!0,jc=null,Ss=!0,_=mI(p,null,S,_),p.child=_;_;)_.flags=_.flags&-3|4096,_=_.sibling}else{if(yd(),S===P){p=_l(d,p,_);break e}Lr(d,p,S,_)}p=p.child}return p;case 26:return eb(d,p),d===null?(_=L4(p.type,null,p.pendingProps,null))?p.memoizedState=_:yn||(_=p.type,d=p.pendingProps,S=xb(Q.current).createElement(_),S[hi]=p,S[Ai]=d,Ir(S,_,d),Te(S),p.stateNode=S):p.memoizedState=L4(p.type,d.memoizedProps,p.pendingProps,d.memoizedState),null;case 27:return ge(p),d===null&&yn&&(S=p.stateNode=k4(p.type,p.pendingProps,Q.current),Dr=p,Ss=!0,P=ti,Qc(p.type)?(bA=P,ti=Ms(S.firstChild)):ti=P),Lr(d,p,p.pendingProps.children,_),eb(d,p),d===null&&(p.flags|=4194304),p.child;case 5:return d===null&&yn&&((P=S=ti)&&(S=jte(S,p.type,p.pendingProps,Ss),S!==null?(p.stateNode=S,Dr=p,ti=Ms(S.firstChild),Ss=!1,P=!0):P=!1),P||Uc(p)),ge(p),P=p.type,D=p.pendingProps,G=d!==null?d.memoizedProps:null,S=D.children,pA(P,D)?S=null:G!==null&&pA(P,G)&&(p.flags|=32),p.memoizedState!==null&&(P=hE(d,p,Qee,null,null,_),Eg._currentValue=P),eb(d,p),Lr(d,p,S,_),p.child;case 6:return d===null&&yn&&((d=_=ti)&&(_=Ute(_,p.pendingProps,Ss),_!==null?(p.stateNode=_,Dr=p,ti=null,d=!0):d=!1),d||Uc(p)),null;case 13:return _j(d,p,_);case 4:return Re(p,p.stateNode.containerInfo),S=p.pendingProps,d===null?p.child=Ad(p,null,S,_):Lr(d,p,S,_),p.child;case 11:return fj(d,p,p.type,p.pendingProps,_);case 7:return Lr(d,p,p.pendingProps,_),p.child;case 8:return Lr(d,p,p.pendingProps.children,_),p.child;case 12:return Lr(d,p,p.pendingProps.children,_),p.child;case 10:return S=p.pendingProps,Fc(p,p.type,S.value),Lr(d,p,S.children,_),p.child;case 9:return P=p.type._context,S=p.pendingProps.children,Sd(p),P=Or(P),S=S(P),p.flags|=1,Lr(d,p,S,_),p.child;case 14:return hj(d,p,p.type,p.pendingProps,_);case 15:return pj(d,p,p.type,p.pendingProps,_);case 19:return wj(d,p,_);case 31:return ste(d,p,_);case 22:return mj(d,p,_,p.pendingProps);case 24:return Sd(p),S=Or(Ii),d===null?(P=iE(),P===null&&(P=Xn,D=tE(),P.pooledCache=D,D.refCount++,D!==null&&(P.pooledCacheLanes|=_),P=D),p.memoizedState={parent:S,cache:P},aE(p),Fc(p,Ii,P)):((d.lanes&_)!==0&&(sE(d,p),ag(p,null,null,_),rg()),P=d.memoizedState,D=p.memoizedState,P.parent!==S?(P={parent:S,cache:S},p.memoizedState=P,p.lanes===0&&(p.memoizedState=p.updateQueue.baseState=P),Fc(p,Ii,S)):(S=D.cache,Fc(p,Ii,S),S!==P.cache&&eE(p,[Ii],_,!0))),Lr(d,p,p.pendingProps.children,_),p.child;case 29:throw p.pendingProps}throw Error(i(156,p.tag))}function Sl(d){d.flags|=4}function BE(d,p,_,S,P){if((p=(d.mode&32)!==0)&&(p=!1),p){if(d.flags|=16777216,(P&335544128)===P)if(d.stateNode.complete)d.flags|=8192;else if(Zj())d.flags|=8192;else throw Ed=Fv,rE}else d.flags&=-16777217}function Ej(d,p){if(p.type!=="stylesheet"||(p.state.loading&4)!==0)d.flags&=-16777217;else if(d.flags|=16777216,!z4(p))if(Zj())d.flags|=8192;else throw Ed=Fv,rE}function nb(d,p){p!==null&&(d.flags|=4),d.flags&16384&&(p=d.tag!==22?_t():536870912,d.lanes|=p,yh|=p)}function dg(d,p){if(!yn)switch(d.tailMode){case"hidden":p=d.tail;for(var _=null;p!==null;)p.alternate!==null&&(_=p),p=p.sibling;_===null?d.tail=null:_.sibling=null;break;case"collapsed":_=d.tail;for(var S=null;_!==null;)_.alternate!==null&&(S=_),_=_.sibling;S===null?p||d.tail===null?d.tail=null:d.tail.sibling=null:S.sibling=null}}function ni(d){var p=d.alternate!==null&&d.alternate.child===d.child,_=0,S=0;if(p)for(var P=d.child;P!==null;)_|=P.lanes|P.childLanes,S|=P.subtreeFlags&65011712,S|=P.flags&65011712,P.return=d,P=P.sibling;else for(P=d.child;P!==null;)_|=P.lanes|P.childLanes,S|=P.subtreeFlags,S|=P.flags,P.return=d,P=P.sibling;return d.subtreeFlags|=S,d.childLanes=_,p}function lte(d,p,_){var S=p.pendingProps;switch(KM(p),p.tag){case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return ni(p),null;case 1:return ni(p),null;case 3:return _=p.stateNode,S=null,d!==null&&(S=d.memoizedState.cache),p.memoizedState.cache!==S&&(p.flags|=2048),vl(Ii),pe(),_.pendingContext&&(_.context=_.pendingContext,_.pendingContext=null),(d===null||d.child===null)&&(oh(p)?Sl(p):d===null||d.memoizedState.isDehydrated&&(p.flags&256)===0||(p.flags|=1024,ZM())),ni(p),null;case 26:var P=p.type,D=p.memoizedState;return d===null?(Sl(p),D!==null?(ni(p),Ej(p,D)):(ni(p),BE(p,P,null,S,_))):D?D!==d.memoizedState?(Sl(p),ni(p),Ej(p,D)):(ni(p),p.flags&=-16777217):(d=d.memoizedProps,d!==S&&Sl(p),ni(p),BE(p,P,d,S,_)),null;case 27:if(Ce(p),_=Q.current,P=p.type,d!==null&&p.stateNode!=null)d.memoizedProps!==S&&Sl(p);else{if(!S){if(p.stateNode===null)throw Error(i(166));return ni(p),null}d=ce.current,oh(p)?rI(p):(d=k4(P,S,_),p.stateNode=d,Sl(p))}return ni(p),null;case 5:if(Ce(p),P=p.type,d!==null&&p.stateNode!=null)d.memoizedProps!==S&&Sl(p);else{if(!S){if(p.stateNode===null)throw Error(i(166));return ni(p),null}if(D=ce.current,oh(p))rI(p);else{var G=xb(Q.current);switch(D){case 1:D=G.createElementNS("http://www.w3.org/2000/svg",P);break;case 2:D=G.createElementNS("http://www.w3.org/1998/Math/MathML",P);break;default:switch(P){case"svg":D=G.createElementNS("http://www.w3.org/2000/svg",P);break;case"math":D=G.createElementNS("http://www.w3.org/1998/Math/MathML",P);break;case"script":D=G.createElement("div"),D.innerHTML=" - + +