From 3917f0a3d1a7ddf1c1485976a97ade3d3832dc3c Mon Sep 17 00:00:00 2001 From: Martin Ziegler Date: Wed, 3 Dec 2025 20:07:30 +0100 Subject: [PATCH] Wired motion and extruder controls --- backend/app/api/routes/printer_control.py | 26 + backend/app/api/routes/printers.py | 1 + backend/app/schemas/printer.py | 2 + backend/app/services/bambu_mqtt.py | 66 ++ frontend/public/icons/dual-extruder-left.png | Bin 0 -> 25118 bytes frontend/public/icons/dual-extruder-right.png | Bin 0 -> 19716 bytes frontend/src/api/client.ts | 7 + .../src/components/control/BedControls.tsx | 16 +- .../components/control/ExtruderControls.tsx | 56 +- frontend/src/components/control/JogPad.tsx | 189 +++-- .../src/components/control/SpeedModal.tsx | 2 +- frontend/src/index.css | 2 +- static/assets/index-BAV1KG6Z.css | 1 + static/assets/index-DyjgQh1m.css | 1 - .../{index-BGXbFbC2.js => index-KY24LvJj.js} | 783 +++++++++--------- static/icons/dual-extruder-left.png | Bin 0 -> 25118 bytes static/icons/dual-extruder-right.png | Bin 0 -> 19716 bytes static/index.html | 4 +- 18 files changed, 677 insertions(+), 479 deletions(-) create mode 100644 frontend/public/icons/dual-extruder-left.png create mode 100644 frontend/public/icons/dual-extruder-right.png create mode 100644 static/assets/index-BAV1KG6Z.css delete mode 100644 static/assets/index-DyjgQh1m.css rename static/assets/{index-BGXbFbC2.js => index-KY24LvJj.js} (66%) create mode 100644 static/icons/dual-extruder-left.png create mode 100644 static/icons/dual-extruder-right.png diff --git a/backend/app/api/routes/printer_control.py b/backend/app/api/routes/printer_control.py index c0dc1f28e..c340653bc 100644 --- a/backend/app/api/routes/printer_control.py +++ b/backend/app/api/routes/printer_control.py @@ -105,6 +105,10 @@ class SpeedRequest(BaseModel): mode: int = Field(..., ge=1, le=4, description="Speed mode: 1=silent, 2=standard, 3=sport, 4=ludicrous") +class ExtruderRequest(BaseModel): + extruder: int = Field(..., ge=0, le=1, description="Extruder index (0=right, 1=left for H2D)") + + class FanRequest(BaseModel): speed: int = Field(..., ge=0, le=100, description="Fan speed percentage (0-100)") @@ -324,6 +328,28 @@ async def set_print_speed( ) +# ============================================================================= +# Extruder Control Endpoint +# ============================================================================= + +@router.post("/{printer_id}/control/extruder", response_model=ControlResponse) +async def select_extruder( + printer_id: int, + request: ExtruderRequest, + db: AsyncSession = Depends(get_db), +): + """Select the active extruder for dual-nozzle printers.""" + await get_printer_or_404(printer_id, db) + client = get_mqtt_client_or_503(printer_id) + + extruder_names = {0: "Right", 1: "Left"} + success = client.select_extruder(request.extruder) + return ControlResponse( + success=success, + message=f"Selected {extruder_names[request.extruder]} extruder" if success else "Failed to select extruder" + ) + + # ============================================================================= # Fan Control Endpoints # ============================================================================= diff --git a/backend/app/api/routes/printers.py b/backend/app/api/routes/printers.py index 59c18e764..b08c572c8 100644 --- a/backend/app/api/routes/printers.py +++ b/backend/app/api/routes/printers.py @@ -244,6 +244,7 @@ async def get_printer_status(printer_id: int, db: AsyncSession = Depends(get_db) airduct_mode=state.airduct_mode, speed_level=state.speed_level, chamber_light=state.chamber_light, + active_extruder=state.active_extruder, ) diff --git a/backend/app/schemas/printer.py b/backend/app/schemas/printer.py index 2c3c243a6..94ab1ef2b 100644 --- a/backend/app/schemas/printer.py +++ b/backend/app/schemas/printer.py @@ -118,3 +118,5 @@ class PrinterStatus(BaseModel): speed_level: int = 2 # Chamber light on/off chamber_light: bool = False + # Active extruder for dual nozzle (0=right, 1=left) + active_extruder: int = 0 diff --git a/backend/app/services/bambu_mqtt.py b/backend/app/services/bambu_mqtt.py index 3a90b5bed..8c67f8922 100644 --- a/backend/app/services/bambu_mqtt.py +++ b/backend/app/services/bambu_mqtt.py @@ -109,6 +109,8 @@ class PrinterState: speed_level: int = 2 # Chamber light on/off chamber_light: bool = False + # Active extruder for dual nozzle (0=right, 1=left) - from device.extruder.info[X].hnow + active_extruder: int = 0 # Stage name mapping from BambuStudio DeviceManager.cpp @@ -278,6 +280,10 @@ class BambuMQTTClient: # Track last message time - receiving a message proves we're connected self._last_message_time = time.time() self.state.connected = True + # TEMP: Dump full payload once to find extruder state field + if not hasattr(self, '_payload_dumped'): + self._payload_dumped = True + logger.info(f"[{self.serial_number}] FULL MQTT PAYLOAD DUMP:\n{json.dumps(payload, indent=2)}") # Log message if logging is enabled if self._logging_enabled: self._message_log.append(MQTTLogEntry( @@ -647,6 +653,33 @@ class BambuMQTTClient: if nozzle_fields and not hasattr(self, '_nozzle_fields_logged'): logger.info(f"[{self.serial_number}] Nozzle/hardware fields in MQTT data: {nozzle_fields}") self._nozzle_fields_logged = True + # Parse active extruder from device.extruder.state bit 8 + # bit 8 = 0 → RIGHT extruder (active_extruder=0) + # bit 8 = 1 → LEFT extruder (active_extruder=1) + if "device" in data and isinstance(data.get("device"), dict): + device = data["device"] + if "extruder" in device and "state" in device["extruder"]: + state_val = device["extruder"]["state"] + # Extract bit 8 for extruder position + new_extruder = (state_val >> 8) & 0x1 + if new_extruder != self.state.active_extruder: + logger.info(f"[{self.serial_number}] ACTIVE EXTRUDER CHANGED (state bit 8): {self.state.active_extruder} -> {new_extruder} (0=right, 1=left) [state={state_val}]") + self.state.active_extruder = new_extruder + + # Log device.extruder structure for active extruder + if "device" in data and isinstance(data.get("device"), dict): + device = data["device"] + if "extruder" in device: + ext_data = device["extruder"] + # Log 'state' field - OrcaSlicer uses bits 12-14 for switch state + if "state" in ext_data: + state_val = ext_data["state"] + # Extract bits 12-14 (3 bits) for switch state + switch_state = (state_val >> 12) & 0x7 + logger.info(f"[{self.serial_number}] device.extruder.state={state_val} (switch_state bits 12-14: {switch_state})") + # Log 'cur' field if present (might indicate current/active extruder) + if "cur" in ext_data: + logger.info(f"[{self.serial_number}] device.extruder.cur: {ext_data['cur']}") if "bed_temper" in data: temps["bed"] = float(data["bed_temper"]) if "bed_target_temper" in data: @@ -2058,6 +2091,39 @@ class BambuMQTTClient: logger.info(f"[{self.serial_number}] Set chamber lights {'on' if on else 'off'} (seq={self._sequence_id})") return True + def select_extruder(self, extruder: int) -> bool: + """Select the active extruder for dual-nozzle printers (H2D). + + Args: + extruder: Extruder index (0=right, 1=left for H2D) + + Returns: + True if command was sent, False otherwise + """ + if extruder not in (0, 1): + logger.warning(f"[{self.serial_number}] Invalid extruder: {extruder}") + return False + + if not self._client or not self.state.connected: + logger.warning(f"[{self.serial_number}] Cannot switch extruder: not connected") + return False + + # H2D extruder switching via select_extruder command + # Command format captured from OrcaSlicer: + # {"print": {"command": "select_extruder", "extruder_index": 0, "sequence_id": "..."}} + # extruder_index: 0 = RIGHT, 1 = LEFT + self._sequence_id += 1 + command = { + "print": { + "command": "select_extruder", + "extruder_index": extruder, + "sequence_id": str(self._sequence_id) + } + } + self._client.publish(self.topic_publish, json.dumps(command), qos=1) + logger.info(f"[{self.serial_number}] Sent select_extruder command: extruder_index={extruder} (0=right, 1=left)") + return True + def home_axes(self, axes: str = "XYZ") -> bool: """Home the specified axes. diff --git a/frontend/public/icons/dual-extruder-left.png b/frontend/public/icons/dual-extruder-left.png new file mode 100644 index 0000000000000000000000000000000000000000..8aded69111b9c651268780e3db35443e419b5565 GIT binary patch literal 25118 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 R;k^I=002ovPDHLkV1gfz8%F>D literal 0 HcmV?d00001 diff --git a/frontend/public/icons/dual-extruder-right.png b/frontend/public/icons/dual-extruder-right.png new file mode 100644 index 0000000000000000000000000000000000000000..52f02eb4be5a4e2dfbd1ffd9cfd57a71b84609ec GIT binary patch literal 19716 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 XIwv*OIt`Mk00000NkvXXu0mjfTCnx8 literal 0 HcmV?d00001 diff --git a/frontend/src/api/client.ts b/frontend/src/api/client.ts index c4a7b6d61..b4e789bdd 100644 --- a/frontend/src/api/client.ts +++ b/frontend/src/api/client.ts @@ -121,6 +121,8 @@ export interface PrinterStatus { speed_level: number; // Chamber light on/off chamber_light: boolean; + // Active extruder for dual nozzle (0=right, 1=left) + active_extruder: number; } export interface PrinterCreate { @@ -1179,6 +1181,11 @@ export const api = { method: 'POST', body: JSON.stringify({ on }), }), + selectExtruder: (printerId: number, extruder: number) => + request(`/printers/${printerId}/control/extruder`, { + method: 'POST', + body: JSON.stringify({ extruder }), + }), homeAxes: (printerId: number, axes = 'XYZ', confirmToken?: string) => request(`/printers/${printerId}/control/home`, { method: 'POST', diff --git a/frontend/src/components/control/BedControls.tsx b/frontend/src/components/control/BedControls.tsx index 9f30da4e7..aea4b5849 100644 --- a/frontend/src/components/control/BedControls.tsx +++ b/frontend/src/components/control/BedControls.tsx @@ -50,35 +50,35 @@ export function BedControls({ printerId, status, disabled = false }: BedControls <>
Bed diff --git a/frontend/src/components/control/ExtruderControls.tsx b/frontend/src/components/control/ExtruderControls.tsx index 69146ec88..ee9a5a283 100644 --- a/frontend/src/components/control/ExtruderControls.tsx +++ b/frontend/src/components/control/ExtruderControls.tsx @@ -1,5 +1,5 @@ import { useState } from 'react'; -import { useMutation } from '@tanstack/react-query'; +import { useMutation, useQueryClient } from '@tanstack/react-query'; import { api, isConfirmationRequired } from '../../api/client'; import type { PrinterStatus } from '../../api/client'; import { ChevronUp, ChevronDown } from 'lucide-react'; @@ -13,23 +13,43 @@ interface ExtruderControlsProps { } export function ExtruderControls({ printerId, status, nozzleCount, disabled = false }: ExtruderControlsProps) { + const queryClient = useQueryClient(); const isConnected = (status?.connected ?? false) && !disabled; const isPrinting = status?.state === 'RUNNING' || status?.state === 'PAUSE'; const isDualNozzle = nozzleCount > 1; - const [selectedNozzle, setSelectedNozzle] = useState<'left' | 'right'>('left'); + // Active extruder from live status: 0=right, 1=left + const activeExtruder = status?.active_extruder ?? 0; + const [confirmModal, setConfirmModal] = useState<{ token: string; warning: string; distance: number; } | null>(null); + const selectExtruderMutation = useMutation({ + mutationFn: (extruder: number) => { + console.log('selectExtruder called with:', extruder); + return api.selectExtruder(printerId, extruder); + }, + onSuccess: (data) => { + console.log('selectExtruder success:', data); + // Invalidate printer statuses to refresh the active extruder display + // Add a small delay to allow the printer to process the switch and MQTT to update + setTimeout(() => { + queryClient.invalidateQueries({ queryKey: ['printerStatuses'] }); + }, 2000); + }, + onError: (error) => { + console.error('selectExtruder error:', error); + }, + }); + const extrudeMutation = useMutation({ mutationFn: ({ distance, token }: { distance: number; token?: string }) => { // G-code for extrusion: relative mode, extrude, back to absolute - // T0/T1 selects the tool for dual nozzle - const toolSelect = isDualNozzle ? `T${selectedNozzle === 'left' ? 0 : 1}\n` : ''; - const gcode = `${toolSelect}G91\nG1 E${distance} F300\nG90`; + // Uses currently active extruder + const gcode = `G91\nG1 E${distance} F300\nG90`; return api.sendGcode(printerId, gcode, token); }, onSuccess: (result, variables) => { @@ -55,18 +75,26 @@ export function ExtruderControls({ printerId, status, nozzleCount, disabled = fa }; const isDisabled = !isConnected || isPrinting || extrudeMutation.isPending; + const isSwitching = selectExtruderMutation.isPending; + + // Get extruder image based on active state + const getExtruderImage = () => { + if (!isDualNozzle) return "/icons/single-extruder1.png"; + // activeExtruder: 0=right, 1=left + return activeExtruder === 1 ? "/icons/dual-extruder-left.png" : "/icons/dual-extruder-right.png"; + }; return ( <>
{/* Left/Right Toggle - only for dual nozzle */} {isDualNozzle && ( -
+
{/* Confirmation Modal */} diff --git a/frontend/src/components/control/SpeedModal.tsx b/frontend/src/components/control/SpeedModal.tsx index 781da2825..8c5b55c27 100644 --- a/frontend/src/components/control/SpeedModal.tsx +++ b/frontend/src/components/control/SpeedModal.tsx @@ -63,7 +63,7 @@ export function SpeedModal({ printer, status, onClose }: SpeedModalProps) { onClick={onClose} >
e.stopPropagation()} > {/* Header */} diff --git a/frontend/src/index.css b/frontend/src/index.css index 436a019c0..61c43b649 100644 --- a/frontend/src/index.css +++ b/frontend/src/index.css @@ -120,5 +120,5 @@ body { } .dark .jogpad-theme { - filter: brightness(0.7) contrast(1.1); + filter: brightness(0.35) contrast(1.2); } diff --git a/static/assets/index-BAV1KG6Z.css b/static/assets/index-BAV1KG6Z.css new file mode 100644 index 000000000..a5348c523 --- /dev/null +++ b/static/assets/index-BAV1KG6Z.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-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-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-400:oklch(70.7% .022 261.325);--color-gray-500:oklch(55.1% .027 264.364);--color-gray-700:oklch(37.3% .034 259.733);--color-gray-800:oklch(27.8% .033 256.848);--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;--drop-shadow-sm:0 1px 2px #00000026;--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-28{height:calc(var(--spacing)*28)}.h-64{height:calc(var(--spacing)*64)}.h-\[30px\]{height:30px}.h-\[50px\]{height:50px}.h-\[70px\]{height:70px}.h-\[80vh\]{height:80vh}.h-\[120px\]{height:120px}.h-\[160px\]{height:160px}.h-\[220px\]{height:220px}.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-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-\[220px\]{width:220px}.w-\[680px\]{width:680px}.w-auto{width:auto}.w-fit{width:fit-content}.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}.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)}.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-dashed{--tw-border-style:dashed;border-style:dashed}.border-\[\#d4a84b\]{border-color:#d4a84b}.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-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-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\/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-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-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-800{color:var(--color-gray-800)}.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)}.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,)}.drop-shadow-sm{--tw-drop-shadow-size:drop-shadow(0 1px 2px var(--tw-drop-shadow-color,#00000026));--tw-drop-shadow:drop-shadow(var(--drop-shadow-sm));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-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-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\/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-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}@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))}}.\[\&\:\:-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-DyjgQh1m.css b/static/assets/index-DyjgQh1m.css deleted file mode 100644 index dd97cb11c..000000000 --- a/static/assets/index-DyjgQh1m.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-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-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-400:oklch(70.7% .022 261.325);--color-gray-500:oklch(55.1% .027 264.364);--color-gray-700:oklch(37.3% .034 259.733);--color-gray-800:oklch(27.8% .033 256.848);--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;--drop-shadow-sm:0 1px 2px #00000026;--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-\[8px\]{top:8px}.top-\[42px\]{top:42px}.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)}.right-\[8px\]{right:8px}.right-\[42px\]{right:42px}.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)}.bottom-\[8px\]{bottom:8px}.bottom-\[42px\]{bottom:42px}.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}.left-\[8px\]{left:8px}.left-\[42px\]{left:42px}.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-28{height:calc(var(--spacing)*28)}.h-64{height:calc(var(--spacing)*64)}.h-\[25px\]{height:25px}.h-\[30px\]{height:30px}.h-\[35px\]{height:35px}.h-\[40px\]{height:40px}.h-\[50px\]{height:50px}.h-\[70px\]{height:70px}.h-\[80vh\]{height:80vh}.h-\[120px\]{height:120px}.h-\[160px\]{height:160px}.h-\[220px\]{height:220px}.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-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-\[25px\]{width:25px}.w-\[30px\]{width:30px}.w-\[35px\]{width:35px}.w-\[40px\]{width:40px}.w-\[50px\]{width:50px}.w-\[220px\]{width:220px}.w-\[680px\]{width:680px}.w-auto{width:auto}.w-fit{width:fit-content}.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}.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)}.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-dashed{--tw-border-style:dashed;border-style:dashed}.border-\[\#d4a84b\]{border-color:#d4a84b}.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-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-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\/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-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-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-800{color:var(--color-gray-800)}.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)}.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,)}.drop-shadow-sm{--tw-drop-shadow-size:drop-shadow(0 1px 2px var(--tw-drop-shadow-color,#00000026));--tw-drop-shadow:drop-shadow(var(--drop-shadow-sm));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-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-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\/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-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-white:hover{background-color:var(--color-white)}.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-10:hover{opacity:.1}.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}@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))}}.\[\&\:\:-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(.7)contrast(1.1)}@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-BGXbFbC2.js b/static/assets/index-KY24LvJj.js similarity index 66% rename from static/assets/index-BGXbFbC2.js rename to static/assets/index-KY24LvJj.js index 918938c9f..0391d22b2 100644 --- a/static/assets/index-BGXbFbC2.js +++ b/static/assets/index-KY24LvJj.js @@ -1,18 +1,18 @@ -function Wte(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 Mb=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function Zs(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}var vA={exports:{}},Eg={};var zU;function qte(){if(zU)return Eg;zU=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 Eg.Fragment=e,Eg.jsx=n,Eg.jsxs=n,Eg}var BU;function Xte(){return BU||(BU=1,vA.exports=qte()),vA.exports}var h=Xte(),bA={exports:{}},Yt={};var HU;function Kte(){if(HU)return Yt;HU=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(B){return B===null||typeof B!="object"?null:(B=m&&B[m]||B["@@iterator"],typeof B=="function"?B:null)}var b={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},y=Object.assign,v={};function x(B,X,ae){this.props=B,this.context=X,this.refs=v,this.updater=ae||b}x.prototype.isReactComponent={},x.prototype.setState=function(B,X){if(typeof B!="object"&&typeof B!="function"&&B!=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,B,X,"setState")},x.prototype.forceUpdate=function(B){this.updater.enqueueForceUpdate(this,B,"forceUpdate")};function M(){}M.prototype=x.prototype;function w(B,X,ae){this.props=B,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(B,X,ae){var ce=ae.ref;return{$$typeof:t,type:B,key:X,ref:ce!==void 0?ce:null,props:ae}}function k(B,X){return C(B.type,X,B.props)}function F(B){return typeof B=="object"&&B!==null&&B.$$typeof===t}function I(B){var X={"=":"=0",":":"=2"};return"$"+B.replace(/[=:]/g,function(ae){return X[ae]})}var W=/\/+/g;function O(B,X){return typeof B=="object"&&B!==null&&B.key!=null?I(""+B.key):X.toString(36)}function H(B){switch(B.status){case"fulfilled":return B.value;case"rejected":throw B.reason;default:switch(typeof B.status=="string"?B.then(R,R):(B.status="pending",B.then(function(X){B.status==="pending"&&(B.status="fulfilled",B.value=X)},function(X){B.status==="pending"&&(B.status="rejected",B.reason=X)})),B.status){case"fulfilled":return B.value;case"rejected":throw B.reason}}throw B}function V(B,X,ae,ce,xe){var ee=typeof B;(ee==="undefined"||ee==="boolean")&&(B=null);var ve=!1;if(B===null)ve=!0;else switch(ee){case"bigint":case"string":case"number":ve=!0;break;case"object":switch(B.$$typeof){case t:case e:ve=!0;break;case u:return ve=B._init,V(ve(B._payload),X,ae,ce,xe)}}if(ve)return xe=xe(B),ve=ce===""?"."+O(B,0):ce,T(xe)?(ae="",ve!=null&&(ae=ve.replace(W,"$&/")+"/"),V(xe,X,ae,"",function(we){return we})):xe!=null&&(F(xe)&&(xe=k(xe,ae+(xe.key==null||B&&B.key===xe.key?"":(""+xe.key).replace(W,"$&/")+"/")+ve)),X.push(xe)),1;ve=0;var Pe=ce===""?".":ce+":";if(T(B))for(var pe=0;pe>>1,se=V[Y];if(0>>1;Yr(ae,K))cer(xe,ae)?(V[Y]=xe,V[ce]=K,Y=ce):(V[Y]=ae,V[X]=K,Y=X);else if(cer(xe,K))V[Y]=xe,V[ce]=K,Y=ce;else break e}}return $}function r(V,$){var K=V.sortIndex-$.sortIndex;return K!==0?K:V.id-$.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(V){for(var $=n(c);$!==null;){if($.callback===null)i(c);else if($.startTime<=V)i(c),$.sortIndex=$.expirationTime,e(l,$);else break;$=n(c)}}function T(V){if(y=!1,A(V),!b)if(n(l)!==null)b=!0,R||(R=!0,I());else{var $=n(c);$!==null&&H(T,$.startTime-V)}}var R=!1,N=-1,j=5,C=-1;function k(){return v?!0:!(t.unstable_now()-CV&&k());){var Y=f.callback;if(typeof Y=="function"){f.callback=null,m=f.priorityLevel;var se=Y(f.expirationTime<=V);if(V=t.unstable_now(),typeof se=="function"){f.callback=se,A(V),$=!0;break t}f===n(l)&&i(l),A(V)}else i(l);f=n(l)}if(f!==null)$=!0;else{var B=n(c);B!==null&&H(T,B.startTime-V),$=!1}}break e}finally{f=null,m=K,g=!1}$=void 0}}finally{$?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 H(V,$){N=x(function(){V(t.unstable_now())},$)}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(V){V.callback=null},t.unstable_forceFrameRate=function(V){0>V||125Y?(V.sortIndex=K,e(c,V),n(l)===null&&V===n(c)&&(y?(M(N),N=-1):y=!0,H(T,K-Y))):(V.sortIndex=se,e(l,V),b||g||(b=!0,R||(R=!0,I()))),V},t.unstable_shouldYield=k,t.unstable_wrapCallback=function(V){var $=m;return function(){var K=m;m=$;try{return V.apply(this,arguments)}finally{m=K}}}})(SA)),SA}var GU;function Qte(){return GU||(GU=1,_A.exports=Zte()),_A.exports}var wA={exports:{}},qr={};var WU;function Jte(){if(WU)return qr;WU=1;var t=fm();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(),wA.exports=Jte(),wA.exports}var XU;function ene(){if(XU)return Ag;XU=1;var t=Qte(),e=fm(),n=sG();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 ce=B(null),xe=B(null),ee=B(null),ve=B(null);function Pe(d,p){switch(ae(ee,p),ae(xe,d),ae(ce,null),p.nodeType){case 9:case 11:d=(d=p.documentElement)&&(d=d.namespaceURI)?cU(d):0;break;default:if(d=p.tagName,p=p.namespaceURI)p=cU(p),d=uU(p,d);else switch(d){case"svg":d=1;break;case"math":d=2;break;default:d=0}}X(ce),ae(ce,d)}function pe(){X(ce),X(xe),X(ee)}function we(d){d.memoizedState!==null&&ae(ve,d);var p=ce.current,_=uU(p,d.type);p!==_&&(ae(xe,d),ae(ce,_))}function ze(d){xe.current===d&&(X(ce),X(xe)),ve.current===d&&(X(ve),_g._currentValue=K)}var ue,ht;function z(d){if(ue===void 0)try{throw Error()}catch(_){var p=_.stack.trim().match(/\n( *(at )?)/);ue=p&&p[1]||"",ht=-1<_.stack.indexOf(` +function Jte(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 Cb=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 MA={exports:{}},Ng={};var WU;function ene(){if(WU)return Ng;WU=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 qU;function tne(){return qU||(qU=1,MA.exports=ene()),MA.exports}var h=tne(),EA={exports:{}},Yt={};var XU;function nne(){if(XU)return Yt;XU=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(B){return B===null||typeof B!="object"?null:(B=m&&B[m]||B["@@iterator"],typeof B=="function"?B:null)}var b={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},y=Object.assign,v={};function x(B,X,ae){this.props=B,this.context=X,this.refs=v,this.updater=ae||b}x.prototype.isReactComponent={},x.prototype.setState=function(B,X){if(typeof B!="object"&&typeof B!="function"&&B!=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,B,X,"setState")},x.prototype.forceUpdate=function(B){this.updater.enqueueForceUpdate(this,B,"forceUpdate")};function M(){}M.prototype=x.prototype;function w(B,X,ae){this.props=B,this.context=X,this.refs=v,this.updater=ae||b}var E=w.prototype=new M;E.constructor=w,y(E,x.prototype),E.isPureReactComponent=!0;var T=Array.isArray;function R(){}var N={H:null,A:null,T:null,S:null},j=Object.prototype.hasOwnProperty;function C(B,X,ae){var ce=ae.ref;return{$$typeof:t,type:B,key:X,ref:ce!==void 0?ce:null,props:ae}}function k(B,X){return C(B.type,X,B.props)}function F(B){return typeof B=="object"&&B!==null&&B.$$typeof===t}function I(B){var X={"=":"=0",":":"=2"};return"$"+B.replace(/[=:]/g,function(ae){return X[ae]})}var W=/\/+/g;function O(B,X){return typeof B=="object"&&B!==null&&B.key!=null?I(""+B.key):X.toString(36)}function H(B){switch(B.status){case"fulfilled":return B.value;case"rejected":throw B.reason;default:switch(typeof B.status=="string"?B.then(R,R):(B.status="pending",B.then(function(X){B.status==="pending"&&(B.status="fulfilled",B.value=X)},function(X){B.status==="pending"&&(B.status="rejected",B.reason=X)})),B.status){case"fulfilled":return B.value;case"rejected":throw B.reason}}throw B}function V(B,X,ae,ce,xe){var ee=typeof B;(ee==="undefined"||ee==="boolean")&&(B=null);var ve=!1;if(B===null)ve=!0;else switch(ee){case"bigint":case"string":case"number":ve=!0;break;case"object":switch(B.$$typeof){case t:case e:ve=!0;break;case u:return ve=B._init,V(ve(B._payload),X,ae,ce,xe)}}if(ve)return xe=xe(B),ve=ce===""?"."+O(B,0):ce,T(xe)?(ae="",ve!=null&&(ae=ve.replace(W,"$&/")+"/"),V(xe,X,ae,"",function(we){return we})):xe!=null&&(F(xe)&&(xe=k(xe,ae+(xe.key==null||B&&B.key===xe.key?"":(""+xe.key).replace(W,"$&/")+"/")+ve)),X.push(xe)),1;ve=0;var Pe=ce===""?".":ce+":";if(T(B))for(var pe=0;pe>>1,se=V[Y];if(0>>1;Yr(ae,K))cer(xe,ae)?(V[Y]=xe,V[ce]=K,Y=ce):(V[Y]=ae,V[X]=K,Y=X);else if(cer(xe,K))V[Y]=xe,V[ce]=K,Y=ce;else break e}}return $}function r(V,$){var K=V.sortIndex-$.sortIndex;return K!==0?K:V.id-$.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 E(V){for(var $=n(c);$!==null;){if($.callback===null)i(c);else if($.startTime<=V)i(c),$.sortIndex=$.expirationTime,e(l,$);else break;$=n(c)}}function T(V){if(y=!1,E(V),!b)if(n(l)!==null)b=!0,R||(R=!0,I());else{var $=n(c);$!==null&&H(T,$.startTime-V)}}var R=!1,N=-1,j=5,C=-1;function k(){return v?!0:!(t.unstable_now()-CV&&k());){var Y=f.callback;if(typeof Y=="function"){f.callback=null,m=f.priorityLevel;var se=Y(f.expirationTime<=V);if(V=t.unstable_now(),typeof se=="function"){f.callback=se,E(V),$=!0;break t}f===n(l)&&i(l),E(V)}else i(l);f=n(l)}if(f!==null)$=!0;else{var B=n(c);B!==null&&H(T,B.startTime-V),$=!1}}break e}finally{f=null,m=K,g=!1}$=void 0}}finally{$?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 H(V,$){N=x(function(){V(t.unstable_now())},$)}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(V){V.callback=null},t.unstable_forceFrameRate=function(V){0>V||125Y?(V.sortIndex=K,e(c,V),n(l)===null&&V===n(c)&&(y?(M(N),N=-1):y=!0,H(T,K-Y))):(V.sortIndex=se,e(l,V),b||g||(b=!0,R||(R=!0,I()))),V},t.unstable_shouldYield=k,t.unstable_wrapCallback=function(V){var $=m;return function(){var K=m;m=$;try{return V.apply(this,arguments)}finally{m=K}}}})(CA)),CA}var ZU;function ane(){return ZU||(ZU=1,TA.exports=rne()),TA.exports}var NA={exports:{}},Xr={};var QU;function sne(){if(QU)return Xr;QU=1;var t=gm();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(),NA.exports=sne(),NA.exports}var e4;function one(){if(e4)return Rg;e4=1;var t=ane(),e=gm(),n=hG();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 ce=B(null),xe=B(null),ee=B(null),ve=B(null);function Pe(d,p){switch(ae(ee,p),ae(xe,d),ae(ce,null),p.nodeType){case 9:case 11:d=(d=p.documentElement)&&(d=d.namespaceURI)?mU(d):0;break;default:if(d=p.tagName,p=p.namespaceURI)p=mU(p),d=gU(p,d);else switch(d){case"svg":d=1;break;case"math":d=2;break;default:d=0}}X(ce),ae(ce,d)}function pe(){X(ce),X(xe),X(ee)}function we(d){d.memoizedState!==null&&ae(ve,d);var p=ce.current,_=gU(p,d.type);p!==_&&(ae(xe,d),ae(ce,_))}function Be(d){xe.current===d&&(X(ce),X(xe)),ve.current===d&&(X(ve),Eg._currentValue=K)}var ue,ht;function z(d){if(ue===void 0)try{throw Error()}catch(_){var p=_.stack.trim().match(/\n( *(at )?)/);ue=p&&p[1]||"",ht=-1<_.stack.indexOf(` at`)?" ()":-1<_.stack.indexOf("@")?"@unknown:0:0":""}return` `+ue+d+ht}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 $e=Ye}Reflect.construct(d,[],ot)}else{try{ot.call()}catch(Ye){$e=Ye}d.call(ot.prototype)}}else{try{throw Error()}catch(Ye){$e=Ye}(ot=d())&&typeof ot.catch=="function"&&ot.catch(function(){})}}catch(Ye){if(Ye&&$e&&typeof Ye.stack=="string")return[Ye.stack,$e.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 _e=G.split(` `),Fe=ie.split(` `);for(P=S=0;S<_e.length&&!_e[S].includes("DetermineComponentFrameRoot");)S++;for(;PP||_e[S]!==Fe[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 J(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+=J(d,_),_=d,d=d.return;while(d);return p}catch(S){return` Error generating stack: `+S.message+` -`+S.stack}}var oe=Object.prototype.hasOwnProperty,ke=t.unstable_scheduleCallback,Ne=t.unstable_cancelCallback,ne=t.unstable_shouldYield,U=t.unstable_requestPaint,L=t.unstable_now,Z=t.unstable_getCurrentPriorityLevel,me=t.unstable_ImmediatePriority,be=t.unstable_UserBlockingPriority,he=t.unstable_NormalPriority,Ze=t.unstable_LowPriority,Le=t.unstable_IdlePriority,Xe=t.log,st=t.unstable_setDisableYieldValue,Ie=null,Re=null;function pt(d){if(typeof Xe=="function"&&st(d),Re&&typeof Re.setStrictMode=="function")try{Re.setStrictMode(Ie,d)}catch{}}var nt=Math.clz32?Math.clz32:de,tt=Math.log,ut=Math.LN2;function de(d){return d>>>=0,d===0?32:31-(tt(d)/ut|0)|0}var it=256,fe=262144,Oe=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 ge(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 Be(d,p){return(d.pendingLanes&~(d.suspendedLanes&~d.pingedLanes)&p)===0}function ct(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=Oe;return Oe<<=1,(Oe&62914560)===0&&(Oe=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,_e=d.expirationTimes,Fe=d.hiddenUpdates;for(_=G&~_;0<_;){var Je=31-nt(_),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 eo(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 Pn(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"),vM=!1;if(dl)try{var Fm={};Object.defineProperty(Fm,"passive",{get:function(){vM=!0}}),window.addEventListener("test",Fm,Fm),window.removeEventListener("test",Fm,Fm)}catch{vM=!1}var Dc=null,bM=null,gv=null;function uL(){if(gv)return gv;var d,p=bM,_=p.length,S,P="value"in Dc?Dc.value:Dc.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 gv=P.slice(d,1=Hm),gL=" ",xL=!1;function vL(d,p){switch(d){case"keyup":return pee.indexOf(p.keyCode)!==-1;case"keydown":return p.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function bL(d){return d=d.detail,typeof d=="object"&&"data"in d?d.data:null}var Kf=!1;function gee(d,p){switch(d){case"compositionend":return bL(p);case"keypress":return p.which!==32?null:(xL=!0,gL);case"textInput":return d=p.data,d===gL&&xL?null:d;default:return null}}function xee(d,p){if(Kf)return d==="compositionend"||!MM&&vL(d,p)?(d=uL(),gv=bM=Dc=null,Kf=!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}_=TL(_)}}function NL(d,p){return d&&p?d===p?!0:d&&d.nodeType===3?!1:p&&p.nodeType===3?NL(d,p.parentNode):"contains"in d?d.contains(p):d.compareDocumentPosition?!!(d.compareDocumentPosition(p)&16):!1:!1}function RL(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 TM(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 Eee=dl&&"documentMode"in document&&11>=document.documentMode,Yf=null,CM=null,Wm=null,NM=!1;function PL(d,p,_){var S=_.window===_?_.document:_.nodeType===9?_:_.ownerDocument;NM||Yf==null||Yf!==bi(S)||(S=Yf,"selectionStart"in S&&TM(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}),Wm&&Gm(Wm,S)||(Wm=S,S=cb(CM,"onSelect"),0>=G,P-=G,Co=1<<32-nt(p)+P|_<Jt?(xn=kt,kt=null):xn=kt.sibling;var Mn=$e(De,kt,Ue[Jt],rt);if(Mn===null){kt===null&&(kt=xn);break}d&&kt&&Mn.alternate===null&&p(De,kt),Ee=D(Mn,Ee,Jt),wn===null?jt=Mn:wn.sibling=Mn,wn=Mn,kt=xn}if(Jt===Ue.length)return _(De,kt),yn&&hl(De,Jt),jt;if(kt===null){for(;JtJt?(xn=kt,kt=null):xn=kt.sibling;var tu=$e(De,kt,Mn.value,rt);if(tu===null){kt===null&&(kt=xn);break}d&&kt&&tu.alternate===null&&p(De,kt),Ee=D(tu,Ee,Jt),wn===null?jt=tu:wn.sibling=tu,wn=tu,kt=xn}if(Mn.done)return _(De,kt),yn&&hl(De,Jt),jt;if(kt===null){for(;!Mn.done;Jt++,Mn=Ue.next())Mn=ot(De,Mn.value,rt),Mn!==null&&(Ee=D(Mn,Ee,Jt),wn===null?jt=Mn:wn.sibling=Mn,wn=Mn);return yn&&hl(De,Jt),jt}for(kt=S(kt);!Mn.done;Jt++,Mn=Ue.next())Mn=Ye(kt,De,Jt,Mn.value,rt),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(Gte){return p(De,Gte)}),yn&&hl(De,Jt),jt}function Un(De,Ee,Ue,rt){if(typeof Ue=="object"&&Ue!==null&&Ue.type===y&&Ue.key===null&&(Ue=Ue.props.children),typeof Ue=="object"&&Ue!==null){switch(Ue.$$typeof){case g:e:{for(var jt=Ue.key;Ee!==null;){if(Ee.key===jt){if(jt=Ue.type,jt===y){if(Ee.tag===7){_(De,Ee.sibling),rt=P(Ee,Ue.props.children),rt.return=De,De=rt;break e}}else if(Ee.elementType===jt||typeof jt=="object"&&jt!==null&&jt.$$typeof===j&&yd(jt)===Ee.type){_(De,Ee.sibling),rt=P(Ee,Ue.props),Qm(rt,Ue),rt.return=De,De=rt;break e}_(De,Ee);break}else p(De,Ee);Ee=Ee.sibling}Ue.type===y?(rt=md(Ue.props.children,De.mode,rt,Ue.key),rt.return=De,De=rt):(rt=Av(Ue.type,Ue.key,Ue.props,null,De.mode,rt),Qm(rt,Ue),rt.return=De,De=rt)}return G(De);case b:e:{for(jt=Ue.key;Ee!==null;){if(Ee.key===jt)if(Ee.tag===4&&Ee.stateNode.containerInfo===Ue.containerInfo&&Ee.stateNode.implementation===Ue.implementation){_(De,Ee.sibling),rt=P(Ee,Ue.children||[]),rt.return=De,De=rt;break e}else{_(De,Ee);break}else p(De,Ee);Ee=Ee.sibling}rt=IM(Ue,De.mode,rt),rt.return=De,De=rt}return G(De);case j:return Ue=yd(Ue),Un(De,Ee,Ue,rt)}if(H(Ue))return Nt(De,Ee,Ue,rt);if(I(Ue)){if(jt=I(Ue),typeof jt!="function")throw Error(i(150));return Ue=jt.call(Ue),Bt(De,Ee,Ue,rt)}if(typeof Ue.then=="function")return Un(De,Ee,Dv(Ue),rt);if(Ue.$$typeof===w)return Un(De,Ee,Nv(De,Ue),rt);Ov(De,Ue)}return typeof Ue=="string"&&Ue!==""||typeof Ue=="number"||typeof Ue=="bigint"?(Ue=""+Ue,Ee!==null&&Ee.tag===6?(_(De,Ee.sibling),rt=P(Ee,Ue),rt.return=De,De=rt):(_(De,Ee),rt=LM(Ue,De.mode,rt),rt.return=De,De=rt),G(De)):_(De,Ee)}return function(De,Ee,Ue,rt){try{Zm=0;var jt=Un(De,Ee,Ue,rt);return oh=null,jt}catch(kt){if(kt===sh||kt===Pv)throw kt;var wn=qa(29,kt,null,De.mode);return wn.lanes=rt,wn.return=De,wn}finally{}}}var Sd=eI(!0),tI=eI(!1),Uc=!1;function XM(d){d.updateQueue={baseState:d.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,lanes:0,hiddenCallbacks:null},callbacks:null}}function KM(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 Fc(d){return{lane:d,tag:0,payload:null,callback:null,next:null}}function zc(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=Ev(d),UL(d,null,_),p}return Mv(d,S,p,_),Ev(d)}function Jm(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 YM(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 ZM=!1;function eg(){if(ZM){var d=ah;if(d!==null)throw d}}function tg(d,p,_,S){ZM=!1;var P=d.updateQueue;Uc=!1;var D=P.firstBaseUpdate,G=P.lastBaseUpdate,ie=P.shared.pending;if(ie!==null){P.shared.pending=null;var _e=ie,Fe=_e.next;_e.next=null,G===null?D=Fe:G.next=Fe,G=_e;var Je=d.alternate;Je!==null&&(Je=Je.updateQueue,ie=Je.lastBaseUpdate,ie!==G&&(ie===null?Je.firstBaseUpdate=Fe:ie.next=Fe,Je.lastBaseUpdate=_e))}if(D!==null){var ot=P.baseState;G=0,Je=Fe=_e=null,ie=D;do{var $e=ie.lane&-536870913,Ye=$e!==ie.lane;if(Ye?(gn&$e)===$e:(S&$e)===$e){$e!==0&&$e===rh&&(ZM=!0),Je!==null&&(Je=Je.next={lane:0,tag:ie.tag,payload:ie.payload,callback:null,next:null});e:{var Nt=d,Bt=ie;$e=p;var Un=_;switch(Bt.tag){case 1:if(Nt=Bt.payload,typeof Nt=="function"){ot=Nt.call(Un,ot,$e);break e}ot=Nt;break e;case 3:Nt.flags=Nt.flags&-65537|128;case 0:if(Nt=Bt.payload,$e=typeof Nt=="function"?Nt.call(Un,ot,$e):Nt,$e==null)break e;ot=f({},ot,$e);break e;case 2:Uc=!0}}$e=ie.callback,$e!==null&&(d.flags|=64,Ye&&(d.flags|=8192),Ye=P.callbacks,Ye===null?P.callbacks=[$e]:Ye.push($e))}else Ye={lane:$e,tag:ie.tag,payload:ie.payload,callback:ie.callback,next:null},Je===null?(Fe=Je=Ye,_e=ot):Je=Je.next=Ye,G|=$e;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&&(_e=ot),P.baseState=_e,P.firstBaseUpdate=Fe,P.lastBaseUpdate=Je,D===null&&(P.shared.lanes=0),Gc|=G,d.lanes=G,d.memoizedState=ot}}function nI(d,p){if(typeof d!="function")throw Error(i(191,d));d.call(p)}function iI(d,p){var _=d.callbacks;if(_!==null)for(d.callbacks=null,d=0;d<_.length;d++)nI(_[d],p)}var lh=B(null),Lv=B(0);function rI(d,p){d=Ml,ae(Lv,d),ae(lh,p),Ml=d|p.baseLanes}function QM(){ae(Lv,Ml),ae(lh,lh.current)}function JM(){Ml=Lv.current,X(lh),X(Lv)}var Xa=B(null),_s=null;function Bc(d){var p=d.alternate;ae(Ci,Ci.current&1),ae(Xa,d),_s===null&&(p===null||lh.current!==null||p.memoizedState!==null)&&(_s=d)}function eE(d){ae(Ci,Ci.current),ae(Xa,d),_s===null&&(_s=d)}function aI(d){d.tag===22?(ae(Ci,Ci.current),ae(Xa,d),_s===null&&(_s=d)):Hc()}function Hc(){ae(Ci,Ci.current),ae(Xa,Xa.current)}function Ka(d){X(Xa),_s===d&&(_s=null),X(Ci)}var Ci=B(0);function Iv(d){for(var p=d;p!==null;){if(p.tag===13){var _=p.memoizedState;if(_!==null&&(_=_.dehydrated,_===null||sA(_)||oA(_)))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 gl=0,Qt=null,In=null,ji=null,jv=!1,ch=!1,wd=!1,Uv=0,ng=0,uh=null,Lee=0;function yi(){throw Error(i(321))}function tE(d,p){if(p===null)return!1;for(var _=0;_D?D:8;var G=V.T,ie={};V.T=ie,gE(d,!1,p,_);try{var _e=P(),Fe=V.S;if(Fe!==null&&Fe(ie,_e),_e!==null&&typeof _e=="object"&&typeof _e.then=="function"){var Je=Oee(_e,S);rg(d,p,Je,Qa(d))}else rg(d,p,S,Qa(d))}catch(ot){rg(d,p,{then:function(){},status:"rejected",reason:ot},Qa())}finally{$.p=D,G!==null&&ie.types!==null&&(G.types=ie.types),V.T=G}}function zee(){}function pE(d,p,_,S){if(d.tag!==5)throw Error(i(476));var P=LI(d).queue;OI(d,P,p,K,_===null?zee:function(){return II(d),_(S)})}function LI(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:xl,lastRenderedState:K},next:null};var _={};return p.next={memoizedState:_,baseState:_,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:xl,lastRenderedState:_},next:null},d.memoizedState=p,d=d.alternate,d!==null&&(d.memoizedState=p),p}function II(d){var p=LI(d);p.next===null&&(p=d.alternate.memoizedState),rg(d,p.next.queue,{},Qa())}function mE(){return Dr(_g)}function jI(){return Ni().memoizedState}function UI(){return Ni().memoizedState}function Bee(d){for(var p=d.return;p!==null;){switch(p.tag){case 24:case 3:var _=Qa();d=Fc(_);var S=zc(p,d,_);S!==null&&(Ra(S,p,_),Jm(S,p,_)),p={cache:$M()},d.payload=p;return}p=p.return}}function Hee(d,p,_){var S=Qa();_={lane:S,revertLane:0,gesture:null,action:_,hasEagerState:!1,eagerState:null,next:null},$v(d)?zI(p,_):(_=DM(d,p,_,S),_!==null&&(Ra(_,d,S),BI(_,p,S)))}function FI(d,p,_){var S=Qa();rg(d,p,_,S)}function rg(d,p,_,S){var P={lane:S,revertLane:0,gesture:null,action:_,hasEagerState:!1,eagerState:null,next:null};if($v(d))zI(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,Wa(ie,G))return Mv(d,p,P,0),Xn===null&&wv(),!1}catch{}finally{}if(_=DM(d,p,P,S),_!==null)return Ra(_,d,S),BI(_,p,S),!0}return!1}function gE(d,p,_,S){if(S={lane:2,revertLane:XE(),gesture:null,action:S,hasEagerState:!1,eagerState:null,next:null},$v(d)){if(p)throw Error(i(479))}else p=DM(d,_,S,2),p!==null&&Ra(p,d,2)}function $v(d){var p=d.alternate;return d===Qt||p!==null&&p===Qt}function zI(d,p){ch=jv=!0;var _=d.pending;_===null?p.next=p:(p.next=_.next,_.next=p),d.pending=p}function BI(d,p,_){if((_&4194048)!==0){var S=p.lanes;S&=d.pendingLanes,_|=S,p.lanes=_,qn(d,_)}}var ag={readContext:Dr,use:zv,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};ag.useEffectEvent=yi;var HI={readContext:Dr,use:zv,useCallback:function(d,p){return la().memoizedState=[d,p===void 0?null:p],d},useContext:Dr,useEffect:EI,useImperativeHandle:function(d,p,_){_=_!=null?_.concat([d]):null,Hv(4194308,4,NI.bind(null,p,d),_)},useLayoutEffect:function(d,p){return Hv(4194308,4,d,p)},useInsertionEffect:function(d,p){Hv(4,2,d,p)},useMemo:function(d,p){var _=la();p=p===void 0?null:p;var S=d();if(wd){pt(!0);try{d()}finally{pt(!1)}}return _.memoizedState=[S,p],S},useReducer:function(d,p,_){var S=la();if(_!==void 0){var P=_(p);if(wd){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=Hee.bind(null,Qt,d),[S.memoizedState,d]},useRef:function(d){var p=la();return d={current:d},p.memoizedState=d},useState:function(d){d=cE(d);var p=d.queue,_=FI.bind(null,Qt,p);return p.dispatch=_,[d.memoizedState,_]},useDebugValue:fE,useDeferredValue:function(d,p){var _=la();return hE(_,d,p)},useTransition:function(){var d=cE(!1);return d=OI.bind(null,Qt,d.queue,!0,!1),la().memoizedState=d,[!1,d]},useSyncExternalStore:function(d,p,_){var S=Qt,P=la();if(yn){if(_===void 0)throw Error(i(407));_=_()}else{if(_=p(),Xn===null)throw Error(i(349));(gn&127)!==0||cI(S,p,_)}P.memoizedState=_;var D={value:_,getSnapshot:p};return P.queue=D,EI(dI.bind(null,S,D,d),[d]),S.flags|=2048,dh(9,{destroy:void 0},uI.bind(null,S,D,_,p),null),_},useId:function(){var d=la(),p=Xn.identifierPrefix;if(yn){var _=No,S=Co;_=(S&~(1<<32-nt(S)-1)).toString(32)+_,p="_"+p+"R_"+_,_=Uv++,0<_&&(p+="H"+_.toString(32)),p+="_"}else _=Lee++,p="_"+p+"r_"+_.toString(32)+"_";return d.memoizedState=p},useHostTransitionStatus:mE,useFormState:yI,useActionState:yI,useOptimistic:function(d){var p=la();p.memoizedState=p.baseState=d;var _={pending:null,lanes:0,dispatch:null,lastRenderedReducer:null,lastRenderedState:null};return p.queue=_,p=gE.bind(null,Qt,!0,_),_.dispatch=p,[d,p]},useMemoCache:sE,useCacheRefresh:function(){return la().memoizedState=Bee.bind(null,Qt)},useEffectEvent:function(d){var p=la(),_={impl:d};return p.memoizedState=_,function(){if((Cn&2)!==0)throw Error(i(440));return _.impl.apply(void 0,arguments)}}},xE={readContext:Dr,use:zv,useCallback:PI,useContext:Dr,useEffect:dE,useImperativeHandle:RI,useInsertionEffect:TI,useLayoutEffect:CI,useMemo:kI,useReducer:Bv,useRef:MI,useState:function(){return Bv(xl)},useDebugValue:fE,useDeferredValue:function(d,p){var _=Ni();return DI(_,In.memoizedState,d,p)},useTransition:function(){var d=Bv(xl)[0],p=Ni().memoizedState;return[typeof d=="boolean"?d:ig(d),p]},useSyncExternalStore:lI,useId:jI,useHostTransitionStatus:mE,useFormState:_I,useActionState:_I,useOptimistic:function(d,p){var _=Ni();return pI(_,In,d,p)},useMemoCache:sE,useCacheRefresh:UI};xE.useEffectEvent=AI;var VI={readContext:Dr,use:zv,useCallback:PI,useContext:Dr,useEffect:dE,useImperativeHandle:RI,useInsertionEffect:TI,useLayoutEffect:CI,useMemo:kI,useReducer:lE,useRef:MI,useState:function(){return lE(xl)},useDebugValue:fE,useDeferredValue:function(d,p){var _=Ni();return In===null?hE(_,d,p):DI(_,In.memoizedState,d,p)},useTransition:function(){var d=lE(xl)[0],p=Ni().memoizedState;return[typeof d=="boolean"?d:ig(d),p]},useSyncExternalStore:lI,useId:jI,useHostTransitionStatus:mE,useFormState:wI,useActionState:wI,useOptimistic:function(d,p){var _=Ni();return In!==null?pI(_,In,d,p):(_.baseState=d,[d,_.queue.dispatch])},useMemoCache:sE,useCacheRefresh:UI};VI.useEffectEvent=AI;function vE(d,p,_,S){p=d.memoizedState,_=_(S,p),_=_==null?p:f({},p,_),d.memoizedState=_,d.lanes===0&&(d.updateQueue.baseState=_)}var bE={enqueueSetState:function(d,p,_){d=d._reactInternals;var S=Qa(),P=Fc(S);P.payload=p,_!=null&&(P.callback=_),p=zc(d,P,S),p!==null&&(Ra(p,d,S),Jm(p,d,S))},enqueueReplaceState:function(d,p,_){d=d._reactInternals;var S=Qa(),P=Fc(S);P.tag=1,P.payload=p,_!=null&&(P.callback=_),p=zc(d,P,S),p!==null&&(Ra(p,d,S),Jm(p,d,S))},enqueueForceUpdate:function(d,p){d=d._reactInternals;var _=Qa(),S=Fc(_);S.tag=2,p!=null&&(S.callback=p),p=zc(d,S,_),p!==null&&(Ra(p,d,_),Jm(p,d,_))}};function $I(d,p,_,S,P,D,G){return d=d.stateNode,typeof d.shouldComponentUpdate=="function"?d.shouldComponentUpdate(S,D,G):p.prototype&&p.prototype.isPureReactComponent?!Gm(_,S)||!Gm(P,D):!0}function GI(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&&bE.enqueueReplaceState(p,p.state,null)}function Md(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 WI(d){Sv(d)}function qI(d){console.error(d)}function XI(d){Sv(d)}function Gv(d,p){try{var _=d.onUncaughtError;_(p.value,{componentStack:p.stack})}catch(S){setTimeout(function(){throw S})}}function KI(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 yE(d,p,_){return _=Fc(_),_.tag=3,_.payload={element:null},_.callback=function(){Gv(d,p)},_}function YI(d){return d=Fc(d),d.tag=3,d}function ZI(d,p,_,S){var P=_.type.getDerivedStateFromError;if(typeof P=="function"){var D=S.value;d.payload=function(){return P(D)},d.callback=function(){KI(p,_,S)}}var G=_.stateNode;G!==null&&typeof G.componentDidCatch=="function"&&(d.callback=function(){KI(p,_,S),typeof P!="function"&&(Wc===null?Wc=new Set([this]):Wc.add(this));var ie=S.stack;this.componentDidCatch(S.value,{componentStack:ie!==null?ie:""})})}function Vee(d,p,_,S,P){if(_.flags|=32768,S!==null&&typeof S=="object"&&typeof S.then=="function"){if(p=_.alternate,p!==null&&ih(p,_,P,!0),_=Xa.current,_!==null){switch(_.tag){case 31:case 13:return _s===null?ib():_.alternate===null&&_i===0&&(_i=3),_.flags&=-257,_.flags|=65536,_.lanes=P,S===kv?_.flags|=16384:(p=_.updateQueue,p===null?_.updateQueue=new Set([S]):p.add(S),GE(d,S,P)),!1;case 22:return _.flags|=65536,S===kv?_.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)),GE(d,S,P)),!1}throw Error(i(435,_.tag))}return GE(d,S,P),ib(),!1}if(yn)return p=Xa.current,p!==null?((p.flags&65536)===0&&(p.flags|=256),p.flags|=65536,p.lanes=P,S!==FM&&(d=Error(i(422),{cause:S}),Xm(xs(d,_)))):(S!==FM&&(p=Error(i(423),{cause:S}),Xm(xs(p,_))),d=d.current.alternate,d.flags|=65536,P&=-P,d.lanes|=P,S=xs(S,_),P=yE(d.stateNode,S,P),YM(d,P),_i!==4&&(_i=2)),!1;var D=Error(i(520),{cause:S});if(D=xs(D,_),hg===null?hg=[D]:hg.push(D),_i!==4&&(_i=2),p===null)return!0;S=xs(S,_),_=p;do{switch(_.tag){case 3:return _.flags|=65536,d=P&-P,_.lanes|=d,d=yE(_.stateNode,S,d),YM(_,d),!1;case 1:if(p=_.type,D=_.stateNode,(_.flags&128)===0&&(typeof p.getDerivedStateFromError=="function"||D!==null&&typeof D.componentDidCatch=="function"&&(Wc===null||!Wc.has(D))))return _.flags|=65536,P&=-P,_.lanes|=P,P=YI(P),ZI(P,d,_,S),YM(_,P),!1}_=_.return}while(_!==null);return!1}var _E=Error(i(461)),Ui=!1;function Or(d,p,_,S){p.child=d===null?tI(p,null,_,S):Sd(p,d.child,_,S)}function QI(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 vd(p),S=nE(d,p,_,G,D,P),ie=iE(),d!==null&&!Ui?(rE(d,p,P),vl(d,p,P)):(yn&&ie&&jM(p),p.flags|=1,Or(d,p,S,P),p.child)}function JI(d,p,_,S,P){if(d===null){var D=_.type;return typeof D=="function"&&!OM(D)&&D.defaultProps===void 0&&_.compare===null?(p.tag=15,p.type=D,ej(d,p,D,S,P)):(d=Av(_.type,null,S,p,p.mode,P),d.ref=p.ref,d.return=p,p.child=d)}if(D=d.child,!NE(d,P)){var G=D.memoizedProps;if(_=_.compare,_=_!==null?_:Gm,_(G,S)&&d.ref===p.ref)return vl(d,p,P)}return p.flags|=1,d=fl(D,S),d.ref=p.ref,d.return=p,p.child=d}function ej(d,p,_,S,P){if(d!==null){var D=d.memoizedProps;if(Gm(D,S)&&d.ref===p.ref)if(Ui=!1,p.pendingProps=S=D,NE(d,P))(d.flags&131072)!==0&&(Ui=!0);else return p.lanes=d.lanes,vl(d,p,P)}return SE(d,p,_,S,P)}function tj(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 nj(d,p,D,_,S)}if((_&536870912)!==0)p.memoizedState={baseLanes:0,cachePool:null},d!==null&&Rv(p,D!==null?D.cachePool:null),D!==null?rI(p,D):QM(),aI(p);else return S=p.lanes=536870912,nj(d,p,D!==null?D.baseLanes|_:_,_,S)}else D!==null?(Rv(p,D.cachePool),rI(p,D),Hc(),p.memoizedState=null):(d!==null&&Rv(p,null),QM(),Hc());return Or(d,p,P,_),p.child}function sg(d,p){return d!==null&&d.tag===22||p.stateNode!==null||(p.stateNode={_visibility:1,_pendingMarkers:null,_retryCache:null,_transitions:null}),p.sibling}function nj(d,p,_,S,P){var D=WM();return D=D===null?null:{parent:Ii._currentValue,pool:D},p.memoizedState={baseLanes:_,cachePool:D},d!==null&&Rv(p,null),QM(),aI(p),d!==null&&ih(d,p,S,!0),p.childLanes=P,null}function Wv(d,p){return p=Xv({mode:p.mode,children:p.children},d.mode),p.ref=d.ref,d.child=p,p.return=d,p}function ij(d,p,_){return Sd(p,d.child,null,_),d=Wv(p,p.pendingProps),d.flags|=2,Ka(p),p.memoizedState=null,d}function $ee(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=Wv(p,S),p.lanes=536870912,sg(null,d);if(eE(p),(d=ti)?(d=mU(d,ys),d=d!==null&&d.data==="&"?d:null,d!==null&&(p.memoizedState={dehydrated:d,treeContext:Oc!==null?{id:Co,overflow:No}:null,retryLane:536870912,hydrationErrors:null},_=zL(d),_.return=p,p.child=_,kr=p,ti=null)):d=null,d===null)throw Ic(p);return p.lanes=536870912,null}return Wv(p,S)}var D=d.memoizedState;if(D!==null){var G=D.dehydrated;if(eE(p),P)if(p.flags&256)p.flags&=-257,p=ij(d,p,_);else if(p.memoizedState!==null)p.child=d.child,p.flags|=128,p=null;else throw Error(i(558));else if(Ui||ih(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,pd(d,G),Ra(S,d,G),_E;ib(),p=ij(d,p,_)}else d=D.treeContext,ti=Ss(G.nextSibling),kr=p,yn=!0,Lc=null,ys=!1,d!==null&&VL(p,d),p=Wv(p,S),p.flags|=4096;return p}return d=fl(d.child,{mode:S.mode,children:S.children}),d.ref=p.ref,p.child=d,d.return=p,d}function qv(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 SE(d,p,_,S,P){return vd(p),_=nE(d,p,_,S,void 0,P),S=iE(),d!==null&&!Ui?(rE(d,p,P),vl(d,p,P)):(yn&&S&&jM(p),p.flags|=1,Or(d,p,_,P),p.child)}function rj(d,p,_,S,P,D){return vd(p),p.updateQueue=null,_=oI(p,S,_,P),sI(d),S=iE(),d!==null&&!Ui?(rE(d,p,D),vl(d,p,D)):(yn&&S&&jM(p),p.flags|=1,Or(d,p,_,D),p.child)}function aj(d,p,_,S,P){if(vd(p),p.stateNode===null){var D=Jf,G=_.contextType;typeof G=="object"&&G!==null&&(D=Dr(G)),D=new _(S,D),p.memoizedState=D.state!==null&&D.state!==void 0?D.state:null,D.updater=bE,p.stateNode=D,D._reactInternals=p,D=p.stateNode,D.props=S,D.state=p.memoizedState,D.refs={},XM(p),G=_.contextType,D.context=typeof G=="object"&&G!==null?Dr(G):Jf,D.state=p.memoizedState,G=_.getDerivedStateFromProps,typeof G=="function"&&(vE(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&&bE.enqueueReplaceState(D,D.state,null),tg(p,S,D,P),eg(),D.state=p.memoizedState),typeof D.componentDidMount=="function"&&(p.flags|=4194308),S=!0}else if(d===null){D=p.stateNode;var ie=p.memoizedProps,_e=Md(_,ie);D.props=_e;var Fe=D.context,Je=_.contextType;G=Jf,typeof Je=="object"&&Je!==null&&(G=Dr(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||Fe!==G)&&GI(p,D,S,G),Uc=!1;var $e=p.memoizedState;D.state=$e,tg(p,S,D,P),eg(),Fe=p.memoizedState,ie||$e!==Fe||Uc?(typeof ot=="function"&&(vE(p,_,ot,S),Fe=p.memoizedState),(_e=Uc||$I(p,_,_e,S,$e,Fe,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=Fe),D.props=S,D.state=Fe,D.context=G,S=_e):(typeof D.componentDidMount=="function"&&(p.flags|=4194308),S=!1)}else{D=p.stateNode,KM(d,p),G=p.memoizedProps,Je=Md(_,G),D.props=Je,ot=p.pendingProps,$e=D.context,Fe=_.contextType,_e=Jf,typeof Fe=="object"&&Fe!==null&&(_e=Dr(Fe)),ie=_.getDerivedStateFromProps,(Fe=typeof ie=="function"||typeof D.getSnapshotBeforeUpdate=="function")||typeof D.UNSAFE_componentWillReceiveProps!="function"&&typeof D.componentWillReceiveProps!="function"||(G!==ot||$e!==_e)&&GI(p,D,S,_e),Uc=!1,$e=p.memoizedState,D.state=$e,tg(p,S,D,P),eg();var Ye=p.memoizedState;G!==ot||$e!==Ye||Uc||d!==null&&d.dependencies!==null&&Cv(d.dependencies)?(typeof ie=="function"&&(vE(p,_,ie,S),Ye=p.memoizedState),(Je=Uc||$I(p,_,Je,S,$e,Ye,_e)||d!==null&&d.dependencies!==null&&Cv(d.dependencies))?(Fe||typeof D.UNSAFE_componentWillUpdate!="function"&&typeof D.componentWillUpdate!="function"||(typeof D.componentWillUpdate=="function"&&D.componentWillUpdate(S,Ye,_e),typeof D.UNSAFE_componentWillUpdate=="function"&&D.UNSAFE_componentWillUpdate(S,Ye,_e)),typeof D.componentDidUpdate=="function"&&(p.flags|=4),typeof D.getSnapshotBeforeUpdate=="function"&&(p.flags|=1024)):(typeof D.componentDidUpdate!="function"||G===d.memoizedProps&&$e===d.memoizedState||(p.flags|=4),typeof D.getSnapshotBeforeUpdate!="function"||G===d.memoizedProps&&$e===d.memoizedState||(p.flags|=1024),p.memoizedProps=S,p.memoizedState=Ye),D.props=S,D.state=Ye,D.context=_e,S=Je):(typeof D.componentDidUpdate!="function"||G===d.memoizedProps&&$e===d.memoizedState||(p.flags|=4),typeof D.getSnapshotBeforeUpdate!="function"||G===d.memoizedProps&&$e===d.memoizedState||(p.flags|=1024),S=!1)}return D=S,qv(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=Sd(p,d.child,null,P),p.child=Sd(p,null,_,P)):Or(d,p,_,P),p.memoizedState=D.state,d=p.child):d=vl(d,p,P),d}function sj(d,p,_,S){return gd(),p.flags|=256,Or(d,p,_,S),p.child}var wE={dehydrated:null,treeContext:null,retryLane:0,hydrationErrors:null};function ME(d){return{baseLanes:d,cachePool:KL()}}function EE(d,p,_){return d=d!==null?d.childLanes&~_:0,p&&(d|=Za),d}function oj(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?Bc(p):Hc(),(d=ti)?(d=mU(d,ys),d=d!==null&&d.data!=="&"?d:null,d!==null&&(p.memoizedState={dehydrated:d,treeContext:Oc!==null?{id:Co,overflow:No}:null,retryLane:536870912,hydrationErrors:null},_=zL(d),_.return=p,p.child=_,kr=p,ti=null)):d=null,d===null)throw Ic(p);return oA(d)?p.lanes=32:p.lanes=536870912,null}var ie=S.children;return S=S.fallback,P?(Hc(),P=p.mode,ie=Xv({mode:"hidden",children:ie},P),S=md(S,P,_,null),ie.return=p,S.return=p,ie.sibling=S,p.child=ie,S=p.child,S.memoizedState=ME(_),S.childLanes=EE(d,G,_),p.memoizedState=wE,sg(null,S)):(Bc(p),AE(p,ie))}var _e=d.memoizedState;if(_e!==null&&(ie=_e.dehydrated,ie!==null)){if(D)p.flags&256?(Bc(p),p.flags&=-257,p=TE(d,p,_)):p.memoizedState!==null?(Hc(),p.child=d.child,p.flags|=128,p=null):(Hc(),ie=S.fallback,P=p.mode,S=Xv({mode:"visible",children:S.children},P),ie=md(ie,P,_,null),ie.flags|=2,S.return=p,ie.return=p,S.sibling=ie,p.child=S,Sd(p,d.child,null,_),S=p.child,S.memoizedState=ME(_),S.childLanes=EE(d,G,_),p.memoizedState=wE,p=sg(null,S));else if(Bc(p),oA(ie)){if(G=ie.nextSibling&&ie.nextSibling.dataset,G)var Fe=G.dgst;G=Fe,S=Error(i(419)),S.stack="",S.digest=G,Xm({value:S,source:null,stack:null}),p=TE(d,p,_)}else if(Ui||ih(d,p,_,!1),G=(_&d.childLanes)!==0,Ui||G){if(G=Xn,G!==null&&(S=pr(G,_),S!==0&&S!==_e.retryLane))throw _e.retryLane=S,pd(d,S),Ra(G,d,S),_E;sA(ie)||ib(),p=TE(d,p,_)}else sA(ie)?(p.flags|=192,p.child=d.child,p=null):(d=_e.treeContext,ti=Ss(ie.nextSibling),kr=p,yn=!0,Lc=null,ys=!1,d!==null&&VL(p,d),p=AE(p,S.children),p.flags|=4096);return p}return P?(Hc(),ie=S.fallback,P=p.mode,_e=d.child,Fe=_e.sibling,S=fl(_e,{mode:"hidden",children:S.children}),S.subtreeFlags=_e.subtreeFlags&65011712,Fe!==null?ie=fl(Fe,ie):(ie=md(ie,P,_,null),ie.flags|=2),ie.return=p,S.return=p,S.sibling=ie,p.child=S,sg(null,S),S=p.child,ie=d.child.memoizedState,ie===null?ie=ME(_):(P=ie.cachePool,P!==null?(_e=Ii._currentValue,P=P.parent!==_e?{parent:_e,pool:_e}:P):P=KL(),ie={baseLanes:ie.baseLanes|_,cachePool:P}),S.memoizedState=ie,S.childLanes=EE(d,G,_),p.memoizedState=wE,sg(d.child,S)):(Bc(p),_=d.child,d=_.sibling,_=fl(_,{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 AE(d,p){return p=Xv({mode:"visible",children:p},d.mode),p.return=d,d.child=p}function Xv(d,p){return d=qa(22,d,null,p),d.lanes=0,d}function TE(d,p,_){return Sd(p,d.child,null,_),d=AE(p,p.pendingProps.children),d.flags|=2,p.memoizedState=null,d}function lj(d,p,_){d.lanes|=p;var S=d.alternate;S!==null&&(S.lanes|=p),HM(d.return,p,_)}function CE(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 cj(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,ae(Ci,G),Or(d,p,S,_),S=yn?qm:0,!ie&&d!==null&&(d.flags&128)!==0)e:for(d=p.child;d!==null;){if(d.tag===13)d.memoizedState!==null&&lj(d,_,p);else if(d.tag===19)lj(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&&Iv(d)===null&&(P=_),_=_.sibling;_=P,_===null?(P=p.child,p.child=null):(P=_.sibling,_.sibling=null),CE(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&&Iv(d)===null){p.child=P;break}d=P.sibling,P.sibling=_,_=P,P=d}CE(p,!0,_,null,D,S);break;case"together":CE(p,!1,null,null,void 0,S);break;default:p.memoizedState=null}return p.child}function vl(d,p,_){if(d!==null&&(p.dependencies=d.dependencies),Gc|=p.lanes,(_&p.childLanes)===0)if(d!==null){if(ih(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,_=fl(d,d.pendingProps),p.child=_,_.return=p;d.sibling!==null;)d=d.sibling,_=_.sibling=fl(d,d.pendingProps),_.return=p;_.sibling=null}return p.child}function NE(d,p){return(d.lanes&p)!==0?!0:(d=d.dependencies,!!(d!==null&&Cv(d)))}function Gee(d,p,_){switch(p.tag){case 3:Pe(p,p.stateNode.containerInfo),jc(p,Ii,d.memoizedState.cache),gd();break;case 27:case 5:we(p);break;case 4:Pe(p,p.stateNode.containerInfo);break;case 10:jc(p,p.type,p.memoizedProps.value);break;case 31:if(p.memoizedState!==null)return p.flags|=128,eE(p),null;break;case 13:var S=p.memoizedState;if(S!==null)return S.dehydrated!==null?(Bc(p),p.flags|=128,null):(_&p.child.childLanes)!==0?oj(d,p,_):(Bc(p),d=vl(d,p,_),d!==null?d.sibling:null);Bc(p);break;case 19:var P=(d.flags&128)!==0;if(S=(_&p.childLanes)!==0,S||(ih(d,p,_,!1),S=(_&p.childLanes)!==0),P){if(S)return cj(d,p,_);p.flags|=128}if(P=p.memoizedState,P!==null&&(P.rendering=null,P.tail=null,P.lastEffect=null),ae(Ci,Ci.current),S)break;return null;case 22:return p.lanes=0,tj(d,p,_,p.pendingProps);case 24:jc(p,Ii,d.memoizedState.cache)}return vl(d,p,_)}function uj(d,p,_){if(d!==null)if(d.memoizedProps!==p.pendingProps)Ui=!0;else{if(!NE(d,_)&&(p.flags&128)===0)return Ui=!1,Gee(d,p,_);Ui=(d.flags&131072)!==0}else Ui=!1,yn&&(p.flags&1048576)!==0&&HL(p,qm,p.index);switch(p.lanes=0,p.tag){case 16:e:{var S=p.pendingProps;if(d=yd(p.elementType),p.type=d,typeof d=="function")OM(d)?(S=Md(d,S),p.tag=1,p=aj(null,p,d,S,_)):(p.tag=0,p=SE(null,p,d,S,_));else{if(d!=null){var P=d.$$typeof;if(P===A){p.tag=11,p=QI(null,p,d,S,_);break e}else if(P===N){p.tag=14,p=JI(null,p,d,S,_);break e}}throw p=O(d)||d,Error(i(306,p,""))}}return p;case 0:return SE(d,p,p.type,p.pendingProps,_);case 1:return S=p.type,P=Md(S,p.pendingProps),aj(d,p,S,P,_);case 3:e:{if(Pe(p,p.stateNode.containerInfo),d===null)throw Error(i(387));S=p.pendingProps;var D=p.memoizedState;P=D.element,KM(d,p),tg(p,S,null,_);var G=p.memoizedState;if(S=G.cache,jc(p,Ii,S),S!==D.cache&&VM(p,[Ii],_,!0),eg(),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=sj(d,p,S,_);break e}else if(S!==P){P=xs(Error(i(424)),p),Xm(P),p=sj(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=Ss(d.firstChild),kr=p,yn=!0,Lc=null,ys=!0,_=tI(p,null,S,_),p.child=_;_;)_.flags=_.flags&-3|4096,_=_.sibling}else{if(gd(),S===P){p=vl(d,p,_);break e}Or(d,p,S,_)}p=p.child}return p;case 26:return qv(d,p),d===null?(_=_U(p.type,null,p.pendingProps,null))?p.memoizedState=_:yn||(_=p.type,d=p.pendingProps,S=ub(ee.current).createElement(_),S[hi]=p,S[Ai]=d,Lr(S,_,d),Te(S),p.stateNode=S):p.memoizedState=_U(p.type,d.memoizedProps,p.pendingProps,d.memoizedState),null;case 27:return we(p),d===null&&yn&&(S=p.stateNode=vU(p.type,p.pendingProps,ee.current),kr=p,ys=!0,P=ti,Yc(p.type)?(lA=P,ti=Ss(S.firstChild)):ti=P),Or(d,p,p.pendingProps.children,_),qv(d,p),d===null&&(p.flags|=4194304),p.child;case 5:return d===null&&yn&&((P=S=ti)&&(S=_te(S,p.type,p.pendingProps,ys),S!==null?(p.stateNode=S,kr=p,ti=Ss(S.firstChild),ys=!1,P=!0):P=!1),P||Ic(p)),we(p),P=p.type,D=p.pendingProps,G=d!==null?d.memoizedProps:null,S=D.children,iA(P,D)?S=null:G!==null&&iA(P,G)&&(p.flags|=32),p.memoizedState!==null&&(P=nE(d,p,Iee,null,null,_),_g._currentValue=P),qv(d,p),Or(d,p,S,_),p.child;case 6:return d===null&&yn&&((d=_=ti)&&(_=Ste(_,p.pendingProps,ys),_!==null?(p.stateNode=_,kr=p,ti=null,d=!0):d=!1),d||Ic(p)),null;case 13:return oj(d,p,_);case 4:return Pe(p,p.stateNode.containerInfo),S=p.pendingProps,d===null?p.child=Sd(p,null,S,_):Or(d,p,S,_),p.child;case 11:return QI(d,p,p.type,p.pendingProps,_);case 7:return Or(d,p,p.pendingProps,_),p.child;case 8:return Or(d,p,p.pendingProps.children,_),p.child;case 12:return Or(d,p,p.pendingProps.children,_),p.child;case 10:return S=p.pendingProps,jc(p,p.type,S.value),Or(d,p,S.children,_),p.child;case 9:return P=p.type._context,S=p.pendingProps.children,vd(p),P=Dr(P),S=S(P),p.flags|=1,Or(d,p,S,_),p.child;case 14:return JI(d,p,p.type,p.pendingProps,_);case 15:return ej(d,p,p.type,p.pendingProps,_);case 19:return cj(d,p,_);case 31:return $ee(d,p,_);case 22:return tj(d,p,_,p.pendingProps);case 24:return vd(p),S=Dr(Ii),d===null?(P=WM(),P===null&&(P=Xn,D=$M(),P.pooledCache=D,D.refCount++,D!==null&&(P.pooledCacheLanes|=_),P=D),p.memoizedState={parent:S,cache:P},XM(p),jc(p,Ii,P)):((d.lanes&_)!==0&&(KM(d,p),tg(p,null,null,_),eg()),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),jc(p,Ii,S)):(S=D.cache,jc(p,Ii,S),S!==P.cache&&VM(p,[Ii],_,!0))),Or(d,p,p.pendingProps.children,_),p.child;case 29:throw p.pendingProps}throw Error(i(156,p.tag))}function bl(d){d.flags|=4}function RE(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(jj())d.flags|=8192;else throw _d=kv,qM}else d.flags&=-16777217}function dj(d,p){if(p.type!=="stylesheet"||(p.state.loading&4)!==0)d.flags&=-16777217;else if(d.flags|=16777216,!AU(p))if(jj())d.flags|=8192;else throw _d=kv,qM}function Kv(d,p){p!==null&&(d.flags|=4),d.flags&16384&&(p=d.tag!==22?_t():536870912,d.lanes|=p,mh|=p)}function og(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 Wee(d,p,_){var S=p.pendingProps;switch(UM(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),ml(Ii),pe(),_.pendingContext&&(_.context=_.pendingContext,_.pendingContext=null),(d===null||d.child===null)&&(nh(p)?bl(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?(bl(p),D!==null?(ni(p),dj(p,D)):(ni(p),RE(p,P,null,S,_))):D?D!==d.memoizedState?(bl(p),ni(p),dj(p,D)):(ni(p),p.flags&=-16777217):(d=d.memoizedProps,d!==S&&bl(p),ni(p),RE(p,P,d,S,_)),null;case 27:if(ze(p),_=ee.current,P=p.type,d!==null&&p.stateNode!=null)d.memoizedProps!==S&&bl(p);else{if(!S){if(p.stateNode===null)throw Error(i(166));return ni(p),null}d=ce.current,nh(p)?$L(p):(d=vU(P,S,_),p.stateNode=d,bl(p))}return ni(p),null;case 5:if(ze(p),P=p.type,d!==null&&p.stateNode!=null)d.memoizedProps!==S&&bl(p);else{if(!S){if(p.stateNode===null)throw Error(i(166));return ni(p),null}if(D=ce.current,nh(p))$L(p);else{var G=ub(ee.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=" - + +