diff --git a/CHANGELOG.md b/CHANGELOG.md index 90a2e1d8e..7a898a786 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,18 @@ All notable changes to Bambuddy will be documented in this file. +## [0.1.6b10] - 2026-01-11 + +### Added +- **AMS color mapping** - Manually select which AMS slot to use for each filament: + - ReprintModal: Click dropdown to override auto-matched slots + - AddToQueueModal: Collapsible filament mapping section with slot selection + - Mapping stored with queued prints and used when print starts + - Blue ring indicator shows manually selected slots vs auto-matched + - Status indicators: green (match), yellow (type only), orange (not found) + - Re-read button to refresh AMS status if spools were swapped + - Color names shown in dropdowns (decoded from Bambu filament codes or derived from hex) + ## [0.1.6b9] - 2026-01-09 ### Added diff --git a/backend/app/api/routes/print_queue.py b/backend/app/api/routes/print_queue.py index a7460d5b1..db06e428d 100644 --- a/backend/app/api/routes/print_queue.py +++ b/backend/app/api/routes/print_queue.py @@ -1,5 +1,6 @@ """API routes for print queue management.""" +import json import logging from datetime import datetime @@ -27,6 +28,12 @@ router = APIRouter(prefix="/queue", tags=["queue"]) def _enrich_response(item: PrintQueueItem) -> PrintQueueItemResponse: """Add nested archive/printer info to response.""" response = PrintQueueItemResponse.model_validate(item) + # Parse ams_mapping from JSON string + if item.ams_mapping: + try: + response.ams_mapping = json.loads(item.ams_mapping) + except json.JSONDecodeError: + response.ams_mapping = None if item.archive: response.archive_name = item.archive.print_name or item.archive.filename response.archive_thumbnail = item.archive.thumbnail_path @@ -90,6 +97,7 @@ async def add_to_queue( require_previous_success=data.require_previous_success, auto_off_after=data.auto_off_after, manual_start=data.manual_start, + ams_mapping=json.dumps(data.ams_mapping) if data.ams_mapping else None, position=max_pos + 1, status="pending", ) diff --git a/backend/app/core/database.py b/backend/app/core/database.py index 89434f9d2..b8aa973d1 100644 --- a/backend/app/core/database.py +++ b/backend/app/core/database.py @@ -393,6 +393,12 @@ async def run_migrations(conn): except Exception: pass + # Migration: Add ams_mapping column to print_queue for storing filament slot assignments + try: + await conn.execute(text("ALTER TABLE print_queue ADD COLUMN ams_mapping TEXT")) + except Exception: + pass + async def seed_notification_templates(): """Seed default notification templates if they don't exist.""" diff --git a/backend/app/models/print_queue.py b/backend/app/models/print_queue.py index 7130a885e..900c763cd 100644 --- a/backend/app/models/print_queue.py +++ b/backend/app/models/print_queue.py @@ -29,6 +29,10 @@ class PrintQueueItem(Base): # Power management auto_off_after: Mapped[bool] = mapped_column(Boolean, default=False) # Power off printer after print + # AMS mapping: JSON array of global tray IDs for each filament slot + # Format: "[5, -1, 2, -1]" where position = slot_id-1, value = global tray ID (-1 = unused) + ams_mapping: Mapped[str | None] = mapped_column(Text, nullable=True) + # Status: pending, printing, completed, failed, skipped, cancelled status: Mapped[str] = mapped_column(String(20), default="pending") diff --git a/backend/app/schemas/print_queue.py b/backend/app/schemas/print_queue.py index 5f7cd9a07..b902bbdce 100644 --- a/backend/app/schemas/print_queue.py +++ b/backend/app/schemas/print_queue.py @@ -22,6 +22,9 @@ class PrintQueueItemCreate(BaseModel): require_previous_success: bool = False auto_off_after: bool = False # Power off printer after print completes manual_start: bool = False # Requires manual trigger to start (staged) + # AMS mapping: list of global tray IDs for each filament slot + # Format: [5, -1, 2, -1] where position = slot_id-1, value = global tray ID (-1 = unused) + ams_mapping: list[int] | None = None class PrintQueueItemUpdate(BaseModel): @@ -42,6 +45,7 @@ class PrintQueueItemResponse(BaseModel): require_previous_success: bool auto_off_after: bool manual_start: bool + ams_mapping: list[int] | None = None status: Literal["pending", "printing", "completed", "failed", "skipped", "cancelled"] started_at: UTCDatetime completed_at: UTCDatetime diff --git a/backend/app/services/print_scheduler.py b/backend/app/services/print_scheduler.py index fa38e7ab6..bd6f5c128 100644 --- a/backend/app/services/print_scheduler.py +++ b/backend/app/services/print_scheduler.py @@ -315,8 +315,22 @@ class PrintScheduler: register_expected_print(item.printer_id, remote_filename, archive.id) - # Start the print - started = printer_manager.start_print(item.printer_id, remote_filename) + # Parse AMS mapping if stored + ams_mapping = None + if item.ams_mapping: + try: + import json + + ams_mapping = json.loads(item.ams_mapping) + except json.JSONDecodeError: + logger.warning(f"Queue item {item.id}: Invalid AMS mapping JSON, ignoring") + + # Start the print with AMS mapping if available + started = printer_manager.start_print( + item.printer_id, + remote_filename, + ams_mapping=ams_mapping, + ) if started: item.status = "printing" diff --git a/frontend/public/sw.js b/frontend/public/sw.js index 12d5fe8fc..7c8cdb17c 100644 --- a/frontend/public/sw.js +++ b/frontend/public/sw.js @@ -1,6 +1,6 @@ // Bambuddy Service Worker -const CACHE_NAME = 'bambuddy-v17'; -const STATIC_CACHE = 'bambuddy-static-v17'; +const CACHE_NAME = 'bambuddy-v19'; +const STATIC_CACHE = 'bambuddy-static-v19'; // Static assets to cache on install const STATIC_ASSETS = [ diff --git a/frontend/src/api/client.ts b/frontend/src/api/client.ts index f4cbf44d8..984897ea6 100644 --- a/frontend/src/api/client.ts +++ b/frontend/src/api/client.ts @@ -796,6 +796,7 @@ export interface PrintQueueItem { require_previous_success: boolean; auto_off_after: boolean; manual_start: boolean; // Requires manual trigger to start (staged) + ams_mapping: number[] | null; // AMS slot mapping for multi-color prints status: 'pending' | 'printing' | 'completed' | 'failed' | 'skipped' | 'cancelled'; started_at: string | null; completed_at: string | null; @@ -814,6 +815,7 @@ export interface PrintQueueItemCreate { require_previous_success?: boolean; auto_off_after?: boolean; manual_start?: boolean; // Requires manual trigger to start (staged) + ams_mapping?: number[] | null; // AMS slot mapping for multi-color prints } export interface PrintQueueItemUpdate { diff --git a/frontend/src/components/AddToQueueModal.tsx b/frontend/src/components/AddToQueueModal.tsx index c7dabe434..ae9db2906 100644 --- a/frontend/src/components/AddToQueueModal.tsx +++ b/frontend/src/components/AddToQueueModal.tsx @@ -1,12 +1,88 @@ -import { useState, useEffect } from 'react'; +import { useState, useEffect, useMemo } from 'react'; import { useQuery, useMutation, useQueryClient } from '@tanstack/react-query'; -import { Calendar, Clock, X, AlertCircle, Power, Hand } from 'lucide-react'; +import { Calendar, Clock, X, AlertCircle, Power, Hand, Check, AlertTriangle, Circle, RefreshCw, ChevronDown, ChevronUp } from 'lucide-react'; import { api } from '../api/client'; import type { PrintQueueItemCreate } from '../api/client'; import { Card, CardContent } from './Card'; import { Button } from './Button'; import { useToast } from '../contexts/ToastContext'; +// Bambu Lab filament color mapping by tray_id_name (subset of most common) +const BAMBU_COLORS: Record = { + 'A00-W1': 'Jade White', 'A00-Y2': 'Sunflower Yellow', 'A00-R0': 'Red', 'A00-K0': 'Black', + 'A00-G1': 'Bambu Green', 'A00-B3': 'Cobalt Blue', 'A00-D0': 'Gray', 'A00-D3': 'Dark Gray', + 'A01-W2': 'Ivory White', 'A01-R1': 'Scarlet Red', 'A01-G1': 'Grass Green', 'A01-B3': 'Marine Blue', + 'G02-W0': 'White', 'G02-K0': 'Black', 'G02-R0': 'Red', 'G02-D0': 'Gray', 'G02-B0': 'Blue', + 'B00-W0': 'White', 'B00-K0': 'Black', 'B00-R0': 'Red', +}; + +// Fallback color codes +const COLOR_CODE_FALLBACK: Record = { + 'W0': 'White', 'W1': 'Jade White', 'K0': 'Black', 'R0': 'Red', 'B0': 'Blue', + 'G0': 'Green', 'G1': 'Green', 'Y0': 'Yellow', 'Y2': 'Yellow', 'D0': 'Gray', + 'D1': 'Silver', 'D3': 'Dark Gray', 'A0': 'Orange', 'P0': 'Purple', 'N0': 'Brown', +}; + +// Get color name from Bambu tray_id_name or hex +function getColorName(trayIdName: string | null | undefined, hexColor: string): string { + // Try exact Bambu lookup first + if (trayIdName && BAMBU_COLORS[trayIdName]) { + return BAMBU_COLORS[trayIdName]; + } + // Try color code fallback (e.g., "A00-Y2" -> "Y2") + if (trayIdName) { + const parts = trayIdName.split('-'); + if (parts.length >= 2 && COLOR_CODE_FALLBACK[parts[1]]) { + return COLOR_CODE_FALLBACK[parts[1]]; + } + } + // Fall back to hex-based name + return hexToColorName(hexColor); +} + +// Convert hex color to basic color name using HSL +function hexToColorName(hex: string | null | undefined): string { + if (!hex || hex.length < 6) return 'Unknown'; + const cleanHex = hex.replace('#', ''); + const r = parseInt(cleanHex.substring(0, 2), 16); + const g = parseInt(cleanHex.substring(2, 4), 16); + const b = parseInt(cleanHex.substring(4, 6), 16); + + const max = Math.max(r, g, b) / 255; + const min = Math.min(r, g, b) / 255; + const l = (max + min) / 2; + + let h = 0; + let s = 0; + + if (max !== min) { + const d = max - min; + s = l > 0.5 ? d / (2 - max - min) : d / (max + min); + const rNorm = r / 255, gNorm = g / 255, bNorm = b / 255; + if (max === rNorm) h = ((gNorm - bNorm) / d + (gNorm < bNorm ? 6 : 0)) / 6; + else if (max === gNorm) h = ((bNorm - rNorm) / d + 2) / 6; + else h = ((rNorm - gNorm) / d + 4) / 6; + } + h = h * 360; + + if (l < 0.15) return 'Black'; + if (l > 0.85) return 'White'; + if (s < 0.15) { + if (l < 0.4) return 'Dark Gray'; + if (l > 0.6) return 'Light Gray'; + return 'Gray'; + } + if (h < 15 || h >= 345) return 'Red'; + if (h < 45) return 'Orange'; + if (h < 70) return 'Yellow'; + if (h < 150) return 'Green'; + if (h < 200) return 'Cyan'; + if (h < 260) return 'Blue'; + if (h < 290) return 'Purple'; + if (h < 345) return 'Pink'; + return 'Unknown'; +} + interface AddToQueueModalProps { archiveId: number; archiveName: string; @@ -22,12 +98,29 @@ export function AddToQueueModal({ archiveId, archiveName, onClose }: AddToQueueM const [scheduledTime, setScheduledTime] = useState(''); const [requirePreviousSuccess, setRequirePreviousSuccess] = useState(false); const [autoOffAfter, setAutoOffAfter] = useState(false); + const [showFilamentMapping, setShowFilamentMapping] = useState(false); + const [isRefreshing, setIsRefreshing] = useState(false); + // Manual slot overrides: slot_id (1-indexed) -> globalTrayId + const [manualMappings, setManualMappings] = useState>({}); const { data: printers } = useQuery({ queryKey: ['printers'], queryFn: () => api.getPrinters(), }); + // Fetch filament requirements from the archived 3MF + const { data: filamentReqs } = useQuery({ + queryKey: ['archive-filaments', archiveId], + queryFn: () => api.getArchiveFilamentRequirements(archiveId), + }); + + // Fetch printer status when a printer is selected + const { data: printerStatus } = useQuery({ + queryKey: ['printer-status', printerId], + queryFn: () => api.getPrinterStatus(printerId!), + enabled: !!printerId, + }); + // Set default printer if only one available useEffect(() => { if (printers?.length === 1 && !printerId) { @@ -35,6 +128,11 @@ export function AddToQueueModal({ archiveId, archiveName, onClose }: AddToQueueM } }, [printers, printerId]); + // Clear manual mappings when printer changes + useEffect(() => { + setManualMappings({}); + }, [printerId]); + // Close on Escape key useEffect(() => { const handleKeyDown = (e: KeyboardEvent) => { @@ -44,6 +142,207 @@ export function AddToQueueModal({ archiveId, archiveName, onClose }: AddToQueueM return () => window.removeEventListener('keydown', handleKeyDown); }, [onClose]); + // Helper to normalize color format (API returns "RRGGBBAA", 3MF uses "#RRGGBB") + const normalizeColor = (color: string | null | undefined): string => { + if (!color) return '#808080'; + const hex = color.replace('#', '').substring(0, 6); + return `#${hex}`; + }; + + // Helper to format slot label for display + const formatSlotLabel = (amsId: number, trayId: number, isHt: boolean, isExternal: boolean): string => { + if (isExternal) return 'External'; + const letter = String.fromCharCode(65 + (amsId >= 128 ? amsId - 128 : amsId)); + if (isHt) return `HT-${letter}`; + return `AMS-${letter} Slot ${trayId + 1}`; + }; + + // Calculate global tray ID for MQTT command + const getGlobalTrayId = (amsId: number, trayId: number, isExternal: boolean): number => { + if (isExternal) return 254; + return amsId * 4 + trayId; + }; + + // Build a list of all loaded filaments from printer's AMS/HT/External + const loadedFilaments = useMemo(() => { + const filaments: Array<{ + type: string; + color: string; + colorName: string; + amsId: number; + trayId: number; + isHt: boolean; + isExternal: boolean; + label: string; + globalTrayId: number; + }> = []; + + printerStatus?.ams?.forEach((amsUnit) => { + const isHt = amsUnit.tray.length === 1; + amsUnit.tray.forEach((tray) => { + if (tray.tray_type) { + const color = normalizeColor(tray.tray_color); + filaments.push({ + type: tray.tray_type, + color, + colorName: getColorName(tray.tray_id_name, color), + amsId: amsUnit.id, + trayId: tray.id, + isHt, + isExternal: false, + label: formatSlotLabel(amsUnit.id, tray.id, isHt, false), + globalTrayId: getGlobalTrayId(amsUnit.id, tray.id, false), + }); + } + }); + }); + + if (printerStatus?.vt_tray?.tray_type) { + const color = normalizeColor(printerStatus.vt_tray.tray_color); + filaments.push({ + type: printerStatus.vt_tray.tray_type, + color, + colorName: getColorName(printerStatus.vt_tray.tray_id_name, color), + amsId: -1, + trayId: 0, + isHt: false, + isExternal: true, + label: 'External', + globalTrayId: 254, + }); + } + + return filaments; + }, [printerStatus]); + + // Compare required filaments with loaded filaments + const filamentComparison = useMemo(() => { + if (!filamentReqs?.filaments || filamentReqs.filaments.length === 0) return []; + + const normalizeColorForCompare = (color: string | undefined): string => { + if (!color) return ''; + return color.replace('#', '').toLowerCase().substring(0, 6); + }; + + const colorsAreSimilar = (color1: string | undefined, color2: string | undefined, threshold = 40): boolean => { + const hex1 = normalizeColorForCompare(color1); + const hex2 = normalizeColorForCompare(color2); + if (!hex1 || !hex2 || hex1.length < 6 || hex2.length < 6) return false; + + const r1 = parseInt(hex1.substring(0, 2), 16); + const g1 = parseInt(hex1.substring(2, 4), 16); + const b1 = parseInt(hex1.substring(4, 6), 16); + const r2 = parseInt(hex2.substring(0, 2), 16); + const g2 = parseInt(hex2.substring(2, 4), 16); + const b2 = parseInt(hex2.substring(4, 6), 16); + + return Math.abs(r1 - r2) <= threshold && + Math.abs(g1 - g2) <= threshold && + Math.abs(b1 - b2) <= threshold; + }; + + const usedTrayIds = new Set(Object.values(manualMappings)); + + return filamentReqs.filaments.map((req) => { + const slotId = req.slot_id || 0; + + // Check if there's a manual override for this slot + if (slotId > 0 && manualMappings[slotId] !== undefined) { + const manualTrayId = manualMappings[slotId]; + const manualLoaded = loadedFilaments.find((f) => f.globalTrayId === manualTrayId); + + if (manualLoaded) { + const typeMatch = manualLoaded.type?.toUpperCase() === req.type?.toUpperCase(); + const colorMatch = normalizeColorForCompare(manualLoaded.color) === normalizeColorForCompare(req.color) || + colorsAreSimilar(manualLoaded.color, req.color); + + let status: 'match' | 'type_only' | 'mismatch' | 'empty'; + if (typeMatch && colorMatch) { + status = 'match'; + } else if (typeMatch) { + status = 'type_only'; + } else { + status = 'mismatch'; + } + + return { + ...req, + loaded: manualLoaded, + hasFilament: true, + typeMatch, + colorMatch, + status, + isManual: true, + }; + } + } + + // Auto-match + const exactMatch = loadedFilaments.find( + (f) => !usedTrayIds.has(f.globalTrayId) && + f.type?.toUpperCase() === req.type?.toUpperCase() && + normalizeColorForCompare(f.color) === normalizeColorForCompare(req.color) + ); + const similarMatch = !exactMatch && loadedFilaments.find( + (f) => !usedTrayIds.has(f.globalTrayId) && + f.type?.toUpperCase() === req.type?.toUpperCase() && + colorsAreSimilar(f.color, req.color) + ); + const typeOnlyMatch = !exactMatch && !similarMatch && loadedFilaments.find( + (f) => !usedTrayIds.has(f.globalTrayId) && + f.type?.toUpperCase() === req.type?.toUpperCase() + ); + const loaded = exactMatch || similarMatch || typeOnlyMatch || undefined; + + if (loaded) { + usedTrayIds.add(loaded.globalTrayId); + } + + const hasFilament = !!loaded; + const typeMatch = hasFilament; + const colorMatch = !!exactMatch || !!similarMatch; + + let status: 'match' | 'type_only' | 'mismatch' | 'empty'; + if (exactMatch || similarMatch) { + status = 'match'; + } else if (typeOnlyMatch) { + status = 'type_only'; + } else { + status = 'mismatch'; + } + + return { + ...req, + loaded, + hasFilament, + typeMatch, + colorMatch, + status, + isManual: false, + }; + }); + }, [filamentReqs, loadedFilaments, manualMappings]); + + // Build AMS mapping array + const amsMapping = useMemo(() => { + if (filamentComparison.length === 0) return undefined; + + const maxSlotId = Math.max(...filamentComparison.map((f) => f.slot_id || 0)); + if (maxSlotId <= 0) return undefined; + + const mapping = new Array(maxSlotId).fill(-1); + + filamentComparison.forEach((f) => { + if (f.slot_id && f.slot_id > 0) { + mapping[f.slot_id - 1] = f.loaded?.globalTrayId ?? -1; + } + }); + + return mapping; + }, [filamentComparison]); + + const hasFilamentReqs = filamentReqs?.filaments && filamentReqs.filaments.length > 0; + const addMutation = useMutation({ mutationFn: (data: PrintQueueItemCreate) => api.addToQueue(data), onSuccess: () => { @@ -69,6 +368,7 @@ export function AddToQueueModal({ archiveId, archiveName, onClose }: AddToQueueM require_previous_success: requirePreviousSuccess, auto_off_after: autoOffAfter, manual_start: scheduleType === 'manual', + ams_mapping: amsMapping, }; if (scheduleType === 'scheduled' && scheduledTime) { @@ -90,7 +390,7 @@ export function AddToQueueModal({ archiveId, archiveName, onClose }: AddToQueueM className="fixed inset-0 bg-black/50 flex items-center justify-center z-50 p-4" onClick={onClose} > - e.stopPropagation()}> + e.stopPropagation()}> {/* Header */}
@@ -137,6 +437,123 @@ export function AddToQueueModal({ archiveId, archiveName, onClose }: AddToQueueM )}
+ {/* Filament Mapping Section */} + {printerId && hasFilamentReqs && ( +
+ + + {showFilamentMapping && ( +
+
+ Click to change slot assignment + +
+ {filamentComparison.map((item, idx) => ( +
+ + + + + {item.type} ({item.used_grams}g) + + → + + {item.status === 'match' ? ( + + ) : item.status === 'type_only' ? ( + + + + ) : ( + + + + )} +
+ ))} +
+ )} +
+ )} + {/* Schedule type */}
diff --git a/frontend/src/components/ReprintModal.tsx b/frontend/src/components/ReprintModal.tsx index d577c343e..dd8443bf3 100644 --- a/frontend/src/components/ReprintModal.tsx +++ b/frontend/src/components/ReprintModal.tsx @@ -29,12 +29,95 @@ const DEFAULT_PRINT_OPTIONS: PrintOptions = { timelapse: false, }; +// Bambu Lab filament color mapping by tray_id_name (subset of most common) +const BAMBU_COLORS: Record = { + 'A00-W1': 'Jade White', 'A00-Y2': 'Sunflower Yellow', 'A00-R0': 'Red', 'A00-K0': 'Black', + 'A00-G1': 'Bambu Green', 'A00-B3': 'Cobalt Blue', 'A00-D0': 'Gray', 'A00-D3': 'Dark Gray', + 'A01-W2': 'Ivory White', 'A01-R1': 'Scarlet Red', 'A01-G1': 'Grass Green', 'A01-B3': 'Marine Blue', + 'G02-W0': 'White', 'G02-K0': 'Black', 'G02-R0': 'Red', 'G02-D0': 'Gray', 'G02-B0': 'Blue', + 'B00-W0': 'White', 'B00-K0': 'Black', 'B00-R0': 'Red', +}; + +// Fallback color codes +const COLOR_CODE_FALLBACK: Record = { + 'W0': 'White', 'W1': 'Jade White', 'K0': 'Black', 'R0': 'Red', 'B0': 'Blue', + 'G0': 'Green', 'G1': 'Green', 'Y0': 'Yellow', 'Y2': 'Yellow', 'D0': 'Gray', + 'D1': 'Silver', 'D3': 'Dark Gray', 'A0': 'Orange', 'P0': 'Purple', 'N0': 'Brown', +}; + +// Get color name from Bambu tray_id_name or hex +function getColorName(trayIdName: string | null | undefined, hexColor: string): string { + // Try exact Bambu lookup first + if (trayIdName && BAMBU_COLORS[trayIdName]) { + return BAMBU_COLORS[trayIdName]; + } + // Try color code fallback (e.g., "A00-Y2" -> "Y2") + if (trayIdName) { + const parts = trayIdName.split('-'); + if (parts.length >= 2 && COLOR_CODE_FALLBACK[parts[1]]) { + return COLOR_CODE_FALLBACK[parts[1]]; + } + } + // Fall back to hex-based name + return hexToColorName(hexColor); +} + +// Convert hex color to basic color name using HSL +function hexToColorName(hex: string | null | undefined): string { + if (!hex || hex.length < 6) return 'Unknown'; + const cleanHex = hex.replace('#', ''); + const r = parseInt(cleanHex.substring(0, 2), 16); + const g = parseInt(cleanHex.substring(2, 4), 16); + const b = parseInt(cleanHex.substring(4, 6), 16); + + const max = Math.max(r, g, b) / 255; + const min = Math.min(r, g, b) / 255; + const l = (max + min) / 2; + + let h = 0; + let s = 0; + + if (max !== min) { + const d = max - min; + s = l > 0.5 ? d / (2 - max - min) : d / (max + min); + const rNorm = r / 255, gNorm = g / 255, bNorm = b / 255; + if (max === rNorm) h = ((gNorm - bNorm) / d + (gNorm < bNorm ? 6 : 0)) / 6; + else if (max === gNorm) h = ((bNorm - rNorm) / d + 2) / 6; + else h = ((rNorm - gNorm) / d + 4) / 6; + } + h = h * 360; + + if (l < 0.15) return 'Black'; + if (l > 0.85) return 'White'; + if (s < 0.15) { + if (l < 0.4) return 'Dark Gray'; + if (l > 0.6) return 'Light Gray'; + return 'Gray'; + } + if (h < 15 || h >= 345) return 'Red'; + if (h < 45) return 'Orange'; + if (h < 70) return 'Yellow'; + if (h < 150) return 'Green'; + if (h < 200) return 'Cyan'; + if (h < 260) return 'Blue'; + if (h < 290) return 'Purple'; + if (h < 345) return 'Pink'; + return 'Unknown'; +} + export function ReprintModal({ archiveId, archiveName, onClose, onSuccess }: ReprintModalProps) { const queryClient = useQueryClient(); const [selectedPrinter, setSelectedPrinter] = useState(null); const [isRefreshing, setIsRefreshing] = useState(false); const [showOptions, setShowOptions] = useState(false); const [printOptions, setPrintOptions] = useState(DEFAULT_PRINT_OPTIONS); + // Manual slot overrides: slot_id (1-indexed) -> globalTrayId + const [manualMappings, setManualMappings] = useState>({}); + + // Clear manual mappings when printer changes + useEffect(() => { + setManualMappings({}); + }, [selectedPrinter]); // Close on Escape key useEffect(() => { @@ -107,6 +190,7 @@ export function ReprintModal({ archiveId, archiveName, onClose, onSuccess }: Rep const filaments: Array<{ type: string; color: string; + colorName: string; amsId: number; trayId: number; isHt: boolean; @@ -120,9 +204,11 @@ export function ReprintModal({ archiveId, archiveName, onClose, onSuccess }: Rep const isHt = amsUnit.tray.length === 1; // AMS-HT has single tray amsUnit.tray.forEach((tray) => { if (tray.tray_type) { + const color = normalizeColor(tray.tray_color); filaments.push({ type: tray.tray_type, - color: normalizeColor(tray.tray_color), + color, + colorName: getColorName(tray.tray_id_name, color), amsId: amsUnit.id, trayId: tray.id, isHt, @@ -136,9 +222,11 @@ export function ReprintModal({ archiveId, archiveName, onClose, onSuccess }: Rep // Add external spool if loaded if (printerStatus?.vt_tray?.tray_type) { + const color = normalizeColor(printerStatus.vt_tray.tray_color); filaments.push({ type: printerStatus.vt_tray.tray_type, - color: normalizeColor(printerStatus.vt_tray.tray_color), + color, + colorName: getColorName(printerStatus.vt_tray.tray_id_name, color), amsId: -1, trayId: 0, isHt: false, @@ -153,6 +241,7 @@ export function ReprintModal({ archiveId, archiveName, onClose, onSuccess }: Rep // Compare required filaments with loaded filaments // Match by filament TYPE (not slot), since the printer dynamically maps slots + // Respects manual overrides when set const filamentComparison = useMemo(() => { if (!filamentReqs?.filaments || filamentReqs.filaments.length === 0) return []; @@ -182,12 +271,46 @@ export function ReprintModal({ archiveId, archiveName, onClose, onSuccess }: Rep }; // Track which trays have been assigned to avoid duplicates - const usedTrayIds = new Set(); + // First, mark all manually assigned trays as used + const usedTrayIds = new Set(Object.values(manualMappings)); return filamentReqs.filaments.map((req) => { - // Find a loaded filament that matches by TYPE (printer will auto-map the slot) + const slotId = req.slot_id || 0; + + // Check if there's a manual override for this slot + if (slotId > 0 && manualMappings[slotId] !== undefined) { + const manualTrayId = manualMappings[slotId]; + const manualLoaded = loadedFilaments.find((f) => f.globalTrayId === manualTrayId); + + if (manualLoaded) { + const typeMatch = manualLoaded.type?.toUpperCase() === req.type?.toUpperCase(); + const colorMatch = normalizeColorForCompare(manualLoaded.color) === normalizeColorForCompare(req.color) || + colorsAreSimilar(manualLoaded.color, req.color); + + let status: 'match' | 'type_only' | 'mismatch' | 'empty'; + if (typeMatch && colorMatch) { + status = 'match'; + } else if (typeMatch) { + status = 'type_only'; + } else { + status = 'mismatch'; + } + + return { + ...req, + loaded: manualLoaded, + hasFilament: true, + typeMatch, + colorMatch, + status, + isManual: true, + }; + } + } + + // Auto-match: Find a loaded filament that matches by TYPE // Priority: exact color match > similar color match > type-only match - // IMPORTANT: Exclude trays that are already assigned to another slot + // IMPORTANT: Exclude trays that are already assigned (manually or auto) const exactMatch = loadedFilaments.find( (f) => !usedTrayIds.has(f.globalTrayId) && f.type?.toUpperCase() === req.type?.toUpperCase() && @@ -230,9 +353,10 @@ export function ReprintModal({ archiveId, archiveName, onClose, onSuccess }: Rep typeMatch, colorMatch, status, + isManual: false, }; }); - }, [filamentReqs, loadedFilaments]); + }, [filamentReqs, loadedFilaments, manualMappings]); // Build AMS mapping from auto-matched filaments // Format: array matching 3MF filament slot structure @@ -371,7 +495,7 @@ export function ReprintModal({ archiveId, archiveName, onClose, onSuccess }: Rep
{/* Required color */} @@ -387,30 +511,50 @@ export function ReprintModal({ archiveId, archiveName, onClose, onSuccess }: Rep {/* Arrow */} → - {/* Loaded color */} - {item.loaded ? ( - - - - ) : ( - - )} - {/* Loaded type + slot */} - - {item.loaded ? ( - <>{item.loaded.type} ({item.loaded.label}) - ) : ( - 'Not loaded' - )} - + {/* Slot selector dropdown */} + {/* Status icon */} {item.status === 'match' ? ( diff --git a/static/assets/index-48h_gFgJ.css b/static/assets/index-48h_gFgJ.css deleted file mode 100644 index 2e522c485..000000000 --- a/static/assets/index-48h_gFgJ.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-50:oklch(97.1% .013 17.38);--color-red-100:oklch(93.6% .032 17.717);--color-red-200:oklch(88.5% .062 18.334);--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-200:oklch(90.1% .076 70.697);--color-orange-300:oklch(83.7% .128 66.29);--color-orange-400:oklch(75% .183 55.934);--color-orange-500:oklch(70.5% .213 47.604);--color-orange-600:oklch(64.6% .222 41.116);--color-orange-700:oklch(55.3% .195 38.402);--color-amber-50:oklch(98.7% .022 95.277);--color-amber-200:oklch(92.4% .12 95.746);--color-amber-300:oklch(87.9% .169 91.605);--color-amber-400:oklch(82.8% .189 84.429);--color-amber-500:oklch(76.9% .188 70.08);--color-amber-600:oklch(66.6% .179 58.318);--color-yellow-200:oklch(94.5% .129 101.54);--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-100:oklch(96.2% .044 156.743);--color-green-300:oklch(87.1% .15 154.449);--color-green-400:oklch(79.2% .209 151.711);--color-green-500:oklch(72.3% .219 149.579);--color-green-600:oklch(62.7% .194 149.214);--color-emerald-400:oklch(76.5% .177 163.223);--color-emerald-500:oklch(69.6% .17 162.48);--color-cyan-300:oklch(86.5% .127 207.078);--color-cyan-400:oklch(78.9% .154 211.53);--color-cyan-500:oklch(71.5% .143 215.221);--color-cyan-600:oklch(60.9% .126 221.723);--color-blue-50:oklch(97% .014 254.604);--color-blue-100:oklch(93.2% .032 255.585);--color-blue-200:oklch(88.2% .059 254.128);--color-blue-300:oklch(80.9% .105 251.813);--color-blue-400:oklch(70.7% .165 254.624);--color-blue-500:oklch(62.3% .214 259.815);--color-blue-600:oklch(54.6% .245 262.881);--color-blue-700:oklch(48.8% .243 264.376);--color-indigo-400:oklch(67.3% .182 276.935);--color-indigo-500:oklch(58.5% .233 277.117);--color-purple-400:oklch(71.4% .203 305.504);--color-purple-500:oklch(62.7% .265 303.9);--color-rose-400:oklch(71.2% .194 13.428);--color-rose-500:oklch(64.5% .246 16.439);--color-gray-50:oklch(98.5% .002 247.839);--color-gray-100:oklch(96.7% .003 264.542);--color-gray-200:oklch(92.8% .006 264.531);--color-gray-300:oklch(87.2% .01 258.338);--color-gray-400:oklch(70.7% .022 261.325);--color-gray-500:oklch(55.1% .027 264.364);--color-gray-600:oklch(44.6% .03 256.802);--color-gray-700:oklch(37.3% .034 259.733);--color-gray-900:oklch(21% .034 264.665);--color-black:#000;--color-white:#fff;--spacing:.25rem;--container-sm:24rem;--container-md:28rem;--container-lg:32rem;--container-xl:36rem;--container-2xl:42rem;--container-3xl:48rem;--container-4xl:56rem;--container-5xl:64rem;--container-6xl:72rem;--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);--text-3xl:1.875rem;--text-3xl--line-height: 1.2 ;--font-weight-normal:400;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--tracking-wide:.025em;--tracking-wider:.05em;--tracking-widest:.1em;--radius-sm:.25rem;--radius-md:.375rem;--radius-lg:.5rem;--radius-xl:.75rem;--radius-2xl:1rem;--ease-out:cubic-bezier(0,0,.2,1);--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:var(--accent);--color-bambu-green-light:var(--accent-light);--color-bambu-green-dark:var(--accent-dark);--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}.static{position:static}.sticky{position:sticky}.inset-0{inset:calc(var(--spacing)*0)}.inset-x-0{inset-inline:calc(var(--spacing)*0)}.inset-y-0{inset-block:calc(var(--spacing)*0)}.-top-1{top:calc(var(--spacing)*-1)}.top-0{top:calc(var(--spacing)*0)}.top-0\.5{top:calc(var(--spacing)*.5)}.top-1{top:calc(var(--spacing)*1)}.top-1\.5{top:calc(var(--spacing)*1.5)}.top-1\/2{top:50%}.top-2{top:calc(var(--spacing)*2)}.top-4{top:calc(var(--spacing)*4)}.top-8{top:calc(var(--spacing)*8)}.top-\[2px\]{top:2px}.top-\[3px\]{top:3px}.top-full{top:100%}.-right-1{right:calc(var(--spacing)*-1)}.right-0{right:calc(var(--spacing)*0)}.right-1{right:calc(var(--spacing)*1)}.right-1\.5{right:calc(var(--spacing)*1.5)}.right-2{right:calc(var(--spacing)*2)}.right-3{right:calc(var(--spacing)*3)}.right-4{right:calc(var(--spacing)*4)}.right-6{right:calc(var(--spacing)*6)}.right-12{right:calc(var(--spacing)*12)}.right-full{right:100%}.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-full{bottom:100%}.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-10{left:calc(var(--spacing)*10)}.left-12{left:calc(var(--spacing)*12)}.left-\[2px\]{left:2px}.left-\[3px\]{left:3px}.left-full{left:100%}.z-0{z-index:0}.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-3{grid-column:span 3/span 3}.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}}.-mx-4{margin-inline:calc(var(--spacing)*-4)}.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-0\.5{margin-top:calc(var(--spacing)*.5)}.mt-1{margin-top:calc(var(--spacing)*1)}.mt-1\.5{margin-top:calc(var(--spacing)*1.5)}.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)}.mt-14{margin-top:calc(var(--spacing)*14)}.mr-1{margin-right:calc(var(--spacing)*1)}.mr-2{margin-right:calc(var(--spacing)*2)}.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-3{margin-bottom:calc(var(--spacing)*3)}.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-2{margin-left:calc(var(--spacing)*-2)}.ml-0\.5{margin-left:calc(var(--spacing)*.5)}.ml-1{margin-left:calc(var(--spacing)*1)}.ml-1\.5{margin-left:calc(var(--spacing)*1.5)}.ml-2{margin-left:calc(var(--spacing)*2)}.ml-3{margin-left:calc(var(--spacing)*3)}.ml-4{margin-left:calc(var(--spacing)*4)}.ml-14{margin-left:calc(var(--spacing)*14)}.ml-16{margin-left:calc(var(--spacing)*16)}.ml-64{margin-left:calc(var(--spacing)*64)}.ml-auto{margin-left:auto}.line-clamp-1{-webkit-line-clamp:1;-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}.table{display:table}.aspect-square{aspect-ratio:1}.aspect-video{aspect-ratio:var(--aspect-video)}.h-0{height:calc(var(--spacing)*0)}.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-7{height:calc(var(--spacing)*7)}.h-8{height:calc(var(--spacing)*8)}.h-10{height:calc(var(--spacing)*10)}.h-12{height:calc(var(--spacing)*12)}.h-14{height:calc(var(--spacing)*14)}.h-16{height:calc(var(--spacing)*16)}.h-20{height:calc(var(--spacing)*20)}.h-64{height:calc(var(--spacing)*64)}.h-80{height:calc(var(--spacing)*80)}.h-\[80vh\]{height:80vh}.h-\[160px\]{height:160px}.h-\[300px\]{height:300px}.h-full{height:100%}.h-px{height:1px}.max-h-40{max-height:calc(var(--spacing)*40)}.max-h-60{max-height:calc(var(--spacing)*60)}.max-h-64{max-height:calc(var(--spacing)*64)}.max-h-80{max-height:calc(var(--spacing)*80)}.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-\[300px\]{max-height:300px}.max-h-\[400px\]{max-height:400px}.max-h-\[calc\(90vh-80px\)\]{max-height:calc(90vh - 80px)}.max-h-\[calc\(100vh-320px\)\]{max-height:calc(100vh - 320px)}.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{width:calc(var(--spacing)*0)}.w-0\.5{width:calc(var(--spacing)*.5)}.w-1\.5{width:calc(var(--spacing)*1.5)}.w-1\/3{width:33.3333%}.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-7{width:calc(var(--spacing)*7)}.w-8{width:calc(var(--spacing)*8)}.w-9{width:calc(var(--spacing)*9)}.w-10{width:calc(var(--spacing)*10)}.w-11{width:calc(var(--spacing)*11)}.w-12{width:calc(var(--spacing)*12)}.w-14{width:calc(var(--spacing)*14)}.w-16{width:calc(var(--spacing)*16)}.w-20{width:calc(var(--spacing)*20)}.w-24{width:calc(var(--spacing)*24)}.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-52{width:calc(var(--spacing)*52)}.w-56{width:calc(var(--spacing)*56)}.w-64{width:calc(var(--spacing)*64)}.w-72{width:calc(var(--spacing)*72)}.w-\[560px\]{width:560px}.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-5xl{max-width:var(--container-5xl)}.max-w-6xl{max-width:var(--container-6xl)}.max-w-32{max-width:calc(var(--spacing)*32)}.max-w-\[40\%\]{max-width:40%}.max-w-\[80px\]{max-width:80px}.max-w-\[90vw\]{max-width:90vw}.max-w-\[100px\]{max-width:100px}.max-w-\[120px\]{max-width:120px}.max-w-\[150px\]{max-width:150px}.max-w-\[160px\]{max-width:160px}.max-w-\[200px\]{max-width:200px}.max-w-\[280px\]{max-width:280px}.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)}.min-w-0{min-width:calc(var(--spacing)*0)}.min-w-48{min-width:calc(var(--spacing)*48)}.min-w-\[16px\]{min-width:16px}.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}.flex-1{flex:1}.flex-shrink{flex-shrink: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-full{--tw-translate-x:-100%;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-3\.5{--tw-translate-x:calc(var(--spacing)*3.5);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-6{--tw-translate-x:calc(var(--spacing)*6);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)}.scale-\[1\.02\]{scale:1.02}.-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-ew-resize{cursor:ew-resize}.cursor-grab{cursor:grab}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.touch-manipulation{touch-action:manipulation}.resize{resize:both}.resize-none{resize:none}.resize-y{resize:vertical}.list-inside{list-style-position:inside}.list-decimal{list-style-type:decimal}.list-disc{list-style-type:disc}.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-row{flex-direction:row}.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}.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-3{gap:calc(var(--spacing)*3)}.gap-4{gap:calc(var(--spacing)*4)}.gap-6{gap:calc(var(--spacing)*6)}.gap-8{gap:calc(var(--spacing)*8)}:where(.space-y-0\.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-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-2\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*2.5)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*2.5)*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-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)))}.gap-x-6{column-gap:calc(var(--spacing)*6)}.gap-y-1{row-gap:calc(var(--spacing)*1)}.gap-y-3{row-gap:calc(var(--spacing)*3)}: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)}:where(.divide-bambu-gray\/20>:not(:last-child)){border-color:var(--color-bambu-gray)}@supports (color:color-mix(in lab,red,red)){:where(.divide-bambu-gray\/20>:not(:last-child)){border-color:color-mix(in oklab,var(--color-bambu-gray)20%,transparent)}}.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-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-lg{border-top-left-radius:var(--radius-lg);border-top-right-radius:var(--radius-lg)}.rounded-t-xl{border-top-left-radius:var(--radius-xl);border-top-right-radius:var(--radius-xl)}.rounded-l{border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.rounded-l-lg{border-top-left-radius:var(--radius-lg);border-bottom-left-radius:var(--radius-lg)}.rounded-r{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}.rounded-r-lg{border-top-right-radius:var(--radius-lg);border-bottom-right-radius:var(--radius-lg)}.rounded-b-lg{border-bottom-right-radius:var(--radius-lg);border-bottom-left-radius:var(--radius-lg)}.border{border-style:var(--tw-border-style);border-width:1px}.border-0{border-style:var(--tw-border-style);border-width:0}.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-t-\[5px\]{border-top-style:var(--tw-border-style);border-top-width:5px}.border-t-\[6px\]{border-top-style:var(--tw-border-style);border-top-width:6px}.border-r{border-right-style:var(--tw-border-style);border-right-width:1px}.border-r-\[5px\]{border-right-style:var(--tw-border-style);border-right-width:5px}.border-r-\[6px\]{border-right-style:var(--tw-border-style);border-right-width:6px}.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-b-\[6px\]{border-bottom-style:var(--tw-border-style);border-bottom-width:6px}.border-l{border-left-style:var(--tw-border-style);border-left-width:1px}.border-l-2{border-left-style:var(--tw-border-style);border-left-width:2px}.border-l-4{border-left-style:var(--tw-border-style);border-left-width:4px}.border-l-\[5px\]{border-left-style:var(--tw-border-style);border-left-width:5px}.border-l-\[6px\]{border-left-style:var(--tw-border-style);border-left-width:6px}.border-dashed{--tw-border-style:dashed;border-style:dashed}.border-amber-500\/20{border-color:#f99c0033}@supports (color:color-mix(in lab,red,red)){.border-amber-500\/20{border-color:color-mix(in oklab,var(--color-amber-500)20%,transparent)}}.border-amber-500\/30{border-color:#f99c004d}@supports (color:color-mix(in lab,red,red)){.border-amber-500\/30{border-color:color-mix(in oklab,var(--color-amber-500)30%,transparent)}}.border-bambu-dark-tertiary,.border-bambu-dark-tertiary\/30{border-color:var(--color-bambu-dark-tertiary)}@supports (color:color-mix(in lab,red,red)){.border-bambu-dark-tertiary\/30{border-color:color-mix(in oklab,var(--color-bambu-dark-tertiary)30%,transparent)}}.border-bambu-gray,.border-bambu-gray\/30{border-color:var(--color-bambu-gray)}@supports (color:color-mix(in lab,red,red)){.border-bambu-gray\/30{border-color:color-mix(in oklab,var(--color-bambu-gray)30%,transparent)}}.border-bambu-green,.border-bambu-green\/20{border-color:var(--color-bambu-green)}@supports (color:color-mix(in lab,red,red)){.border-bambu-green\/20{border-color:color-mix(in oklab,var(--color-bambu-green)20%,transparent)}}.border-bambu-green\/30{border-color:var(--color-bambu-green)}@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:var(--color-bambu-green)}@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-400\/20{border-color:#54a2ff33}@supports (color:color-mix(in lab,red,red)){.border-blue-400\/20{border-color:color-mix(in oklab,var(--color-blue-400)20%,transparent)}}.border-blue-500\/20{border-color:#3080ff33}@supports (color:color-mix(in lab,red,red)){.border-blue-500\/20{border-color:color-mix(in oklab,var(--color-blue-500)20%,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-blue-500\/50{border-color:#3080ff80}@supports (color:color-mix(in lab,red,red)){.border-blue-500\/50{border-color:color-mix(in oklab,var(--color-blue-500)50%,transparent)}}.border-gray-200{border-color:var(--color-gray-200)}.border-gray-300{border-color:var(--color-gray-300)}.border-gray-400\/20{border-color:#99a1af33}@supports (color:color-mix(in lab,red,red)){.border-gray-400\/20{border-color:color-mix(in oklab,var(--color-gray-400)20%,transparent)}}.border-gray-500\/20{border-color:#6a728233}@supports (color:color-mix(in lab,red,red)){.border-gray-500\/20{border-color:color-mix(in oklab,var(--color-gray-500)20%,transparent)}}.border-gray-700{border-color:var(--color-gray-700)}.border-green-300{border-color:var(--color-green-300)}.border-green-400\/20{border-color:#05df7233}@supports (color:color-mix(in lab,red,red)){.border-green-400\/20{border-color:color-mix(in oklab,var(--color-green-400)20%,transparent)}}.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-orange-400\/20{border-color:#ff8b1a33}@supports (color:color-mix(in lab,red,red)){.border-orange-400\/20{border-color:color-mix(in oklab,var(--color-orange-400)20%,transparent)}}.border-orange-400\/50{border-color:#ff8b1a80}@supports (color:color-mix(in lab,red,red)){.border-orange-400\/50{border-color:color-mix(in oklab,var(--color-orange-400)50%,transparent)}}.border-orange-500\/20{border-color:#fe6e0033}@supports (color:color-mix(in lab,red,red)){.border-orange-500\/20{border-color:color-mix(in oklab,var(--color-orange-500)20%,transparent)}}.border-orange-500\/30{border-color:#fe6e004d}@supports (color:color-mix(in lab,red,red)){.border-orange-500\/30{border-color:color-mix(in oklab,var(--color-orange-500)30%,transparent)}}.border-purple-500\/20{border-color:#ac4bff33}@supports (color:color-mix(in lab,red,red)){.border-purple-500\/20{border-color:color-mix(in oklab,var(--color-purple-500)20%,transparent)}}.border-red-300{border-color:var(--color-red-300)}.border-red-400\/20{border-color:#ff656833}@supports (color:color-mix(in lab,red,red)){.border-red-400\/20{border-color:color-mix(in oklab,var(--color-red-400)20%,transparent)}}.border-red-500{border-color:var(--color-red-500)}.border-red-500\/20{border-color:#fb2c3633}@supports (color:color-mix(in lab,red,red)){.border-red-500\/20{border-color:color-mix(in oklab,var(--color-red-500)20%,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-400\/20{border-color:#fac80033}@supports (color:color-mix(in lab,red,red)){.border-yellow-400\/20{border-color:color-mix(in oklab,var(--color-yellow-400)20%,transparent)}}.border-yellow-500{border-color:var(--color-yellow-500)}.border-yellow-500\/20{border-color:#edb20033}@supports (color:color-mix(in lab,red,red)){.border-yellow-500\/20{border-color:color-mix(in oklab,var(--color-yellow-500)20%,transparent)}}.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-bambu-dark-tertiary{border-top-color:var(--color-bambu-dark-tertiary)}.border-t-transparent{border-top-color:#0000}.border-r-transparent{border-right-color:#0000}.border-b-bambu-dark-tertiary{border-bottom-color:var(--color-bambu-dark-tertiary)}.border-l-transparent{border-left-color:#0000}.border-l-yellow-500{border-left-color:var(--color-yellow-500)}.bg-amber-50{background-color:var(--color-amber-50)}.bg-amber-500{background-color:var(--color-amber-500)}.bg-amber-500\/5{background-color:#f99c000d}@supports (color:color-mix(in lab,red,red)){.bg-amber-500\/5{background-color:color-mix(in oklab,var(--color-amber-500)5%,transparent)}}.bg-amber-500\/10{background-color:#f99c001a}@supports (color:color-mix(in lab,red,red)){.bg-amber-500\/10{background-color:color-mix(in oklab,var(--color-amber-500)10%,transparent)}}.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-amber-600\/20{background-color:#dd740033}@supports (color:color-mix(in lab,red,red)){.bg-amber-600\/20{background-color:color-mix(in oklab,var(--color-amber-600)20%,transparent)}}.bg-bambu-dark{background-color:var(--color-bambu-dark)}.bg-bambu-dark-secondary,.bg-bambu-dark-secondary\/50{background-color:var(--color-bambu-dark-secondary)}@supports (color:color-mix(in lab,red,red)){.bg-bambu-dark-secondary\/50{background-color:color-mix(in oklab,var(--color-bambu-dark-secondary)50%,transparent)}}.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\/30{background-color:var(--color-bambu-dark-tertiary)}@supports (color:color-mix(in lab,red,red)){.bg-bambu-dark-tertiary\/30{background-color:color-mix(in oklab,var(--color-bambu-dark-tertiary)30%,transparent)}}.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-tertiary\/80{background-color:var(--color-bambu-dark-tertiary)}@supports (color:color-mix(in lab,red,red)){.bg-bambu-dark-tertiary\/80{background-color:color-mix(in oklab,var(--color-bambu-dark-tertiary)80%,transparent)}}.bg-bambu-dark\/20{background-color:var(--color-bambu-dark)}@supports (color:color-mix(in lab,red,red)){.bg-bambu-dark\/20{background-color:color-mix(in oklab,var(--color-bambu-dark)20%,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\/10{background-color:var(--color-bambu-gray)}@supports (color:color-mix(in lab,red,red)){.bg-bambu-gray\/10{background-color:color-mix(in oklab,var(--color-bambu-gray)10%,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-green,.bg-bambu-green\/5{background-color:var(--color-bambu-green)}@supports (color:color-mix(in lab,red,red)){.bg-bambu-green\/5{background-color:color-mix(in oklab,var(--color-bambu-green)5%,transparent)}}.bg-bambu-green\/10{background-color:var(--color-bambu-green)}@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:var(--color-bambu-green)}@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:var(--color-bambu-green)}@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:var(--color-bambu-green)}@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:var(--color-bambu-green)}@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\/30{background-color:#0000004d}@supports (color:color-mix(in lab,red,red)){.bg-black\/30{background-color:color-mix(in oklab,var(--color-black)30%,transparent)}}.bg-black\/40{background-color:#0006}@supports (color:color-mix(in lab,red,red)){.bg-black\/40{background-color:color-mix(in oklab,var(--color-black)40%,transparent)}}.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-50{background-color:var(--color-blue-50)}.bg-blue-100{background-color:var(--color-blue-100)}.bg-blue-400{background-color:var(--color-blue-400)}.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-blue-500\/30{background-color:#3080ff4d}@supports (color:color-mix(in lab,red,red)){.bg-blue-500\/30{background-color:color-mix(in oklab,var(--color-blue-500)30%,transparent)}}.bg-blue-600{background-color:var(--color-blue-600)}.bg-blue-600\/20{background-color:#155dfc33}@supports (color:color-mix(in lab,red,red)){.bg-blue-600\/20{background-color:color-mix(in oklab,var(--color-blue-600)20%,transparent)}}.bg-cyan-500\/10{background-color:#00b7d71a}@supports (color:color-mix(in lab,red,red)){.bg-cyan-500\/10{background-color:color-mix(in oklab,var(--color-cyan-500)10%,transparent)}}.bg-cyan-500\/20{background-color:#00b7d733}@supports (color:color-mix(in lab,red,red)){.bg-cyan-500\/20{background-color:color-mix(in oklab,var(--color-cyan-500)20%,transparent)}}.bg-cyan-600\/20{background-color:#0092b533}@supports (color:color-mix(in lab,red,red)){.bg-cyan-600\/20{background-color:color-mix(in oklab,var(--color-cyan-600)20%,transparent)}}.bg-emerald-500\/20{background-color:#00bb7f33}@supports (color:color-mix(in lab,red,red)){.bg-emerald-500\/20{background-color:color-mix(in oklab,var(--color-emerald-500)20%,transparent)}}.bg-gray-50{background-color:var(--color-gray-50)}.bg-gray-100{background-color:var(--color-gray-100)}.bg-gray-400{background-color:var(--color-gray-400)}.bg-gray-400\/10{background-color:#99a1af1a}@supports (color:color-mix(in lab,red,red)){.bg-gray-400\/10{background-color:color-mix(in oklab,var(--color-gray-400)10%,transparent)}}.bg-gray-500{background-color:var(--color-gray-500)}.bg-gray-500\/20{background-color:#6a728233}@supports (color:color-mix(in lab,red,red)){.bg-gray-500\/20{background-color:color-mix(in oklab,var(--color-gray-500)20%,transparent)}}.bg-gray-900{background-color:var(--color-gray-900)}.bg-green-100{background-color:var(--color-green-100)}.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-indigo-500\/20{background-color:#625fff33}@supports (color:color-mix(in lab,red,red)){.bg-indigo-500\/20{background-color:color-mix(in oklab,var(--color-indigo-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\/10{background-color:#fe6e001a}@supports (color:color-mix(in lab,red,red)){.bg-orange-500\/10{background-color:color-mix(in oklab,var(--color-orange-500)10%,transparent)}}.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-orange-600{background-color:var(--color-orange-600)}.bg-orange-600\/20{background-color:#f0510033}@supports (color:color-mix(in lab,red,red)){.bg-orange-600\/20{background-color:color-mix(in oklab,var(--color-orange-600)20%,transparent)}}.bg-purple-500\/10{background-color:#ac4bff1a}@supports (color:color-mix(in lab,red,red)){.bg-purple-500\/10{background-color:color-mix(in oklab,var(--color-purple-500)10%,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-50{background-color:var(--color-red-50)}.bg-red-100{background-color:var(--color-red-100)}.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\/5{background-color:#fb2c360d}@supports (color:color-mix(in lab,red,red)){.bg-red-500\/5{background-color:color-mix(in oklab,var(--color-red-500)5%,transparent)}}.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\/40{background-color:#fb2c3666}@supports (color:color-mix(in lab,red,red)){.bg-red-500\/40{background-color:color-mix(in oklab,var(--color-red-500)40%,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-rose-500\/20{background-color:#ff235733}@supports (color:color-mix(in lab,red,red)){.bg-rose-500\/20{background-color:color-mix(in oklab,var(--color-rose-500)20%,transparent)}}.bg-transparent{background-color:#0000}.bg-white{background-color:var(--color-white)}.bg-white\/50{background-color:#ffffff80}@supports (color:color-mix(in lab,red,red)){.bg-white\/50{background-color:color-mix(in oklab,var(--color-white)50%,transparent)}}.bg-white\/90{background-color:#ffffffe6}@supports (color:color-mix(in lab,red,red)){.bg-white\/90{background-color:color-mix(in oklab,var(--color-white)90%,transparent)}}.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\/5{background-color:#edb2000d}@supports (color:color-mix(in lab,red,red)){.bg-yellow-500\/5{background-color:color-mix(in oklab,var(--color-yellow-500)5%,transparent)}}.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-gradient-to-b{--tw-gradient-position:to bottom in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.bg-gradient-to-br{--tw-gradient-position:to bottom right in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.bg-gradient-to-r{--tw-gradient-position:to right in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.bg-gradient-to-t{--tw-gradient-position:to top in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.from-bambu-green\/10{--tw-gradient-from:var(--color-bambu-green)}@supports (color:color-mix(in lab,red,red)){.from-bambu-green\/10{--tw-gradient-from:color-mix(in oklab,var(--color-bambu-green)10%,transparent)}}.from-bambu-green\/10{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.from-black\/80{--tw-gradient-from:#000c}@supports (color:color-mix(in lab,red,red)){.from-black\/80{--tw-gradient-from:color-mix(in oklab,var(--color-black)80%,transparent)}}.from-black\/80{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.from-blue-500{--tw-gradient-from:var(--color-blue-500);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.from-blue-500\/5{--tw-gradient-from:#3080ff0d}@supports (color:color-mix(in lab,red,red)){.from-blue-500\/5{--tw-gradient-from:color-mix(in oklab,var(--color-blue-500)5%,transparent)}}.from-blue-500\/5{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.from-blue-500\/10{--tw-gradient-from:#3080ff1a}@supports (color:color-mix(in lab,red,red)){.from-blue-500\/10{--tw-gradient-from:color-mix(in oklab,var(--color-blue-500)10%,transparent)}}.from-blue-500\/10{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.from-gray-500\/10{--tw-gradient-from:#6a72821a}@supports (color:color-mix(in lab,red,red)){.from-gray-500\/10{--tw-gradient-from:color-mix(in oklab,var(--color-gray-500)10%,transparent)}}.from-gray-500\/10{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.from-white\/10{--tw-gradient-from:#ffffff1a}@supports (color:color-mix(in lab,red,red)){.from-white\/10{--tw-gradient-from:color-mix(in oklab,var(--color-white)10%,transparent)}}.from-white\/10{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.from-yellow-500\/10{--tw-gradient-from:#edb2001a}@supports (color:color-mix(in lab,red,red)){.from-yellow-500\/10{--tw-gradient-from:color-mix(in oklab,var(--color-yellow-500)10%,transparent)}}.from-yellow-500\/10{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.to-bambu-dark-secondary{--tw-gradient-to:var(--color-bambu-dark-secondary);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.to-blue-400{--tw-gradient-to:var(--color-blue-400);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.to-transparent{--tw-gradient-to:transparent;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.bg-cover{background-size:cover}.bg-center{background-position:50%}.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-0\.5{padding:calc(var(--spacing)*.5)}.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-3{padding-inline:calc(var(--spacing)*3)!important}.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-4{padding-inline:calc(var(--spacing)*4)}.px-6{padding-inline:calc(var(--spacing)*6)}.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-6{padding-block:calc(var(--spacing)*6)}.py-8{padding-block:calc(var(--spacing)*8)}.py-12{padding-block:calc(var(--spacing)*12)}.py-16{padding-block:calc(var(--spacing)*16)}.py-20{padding-block:calc(var(--spacing)*20)}.py-24{padding-block:calc(var(--spacing)*24)}.pt-0{padding-top:calc(var(--spacing)*0)}.pt-1{padding-top:calc(var(--spacing)*1)}.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-1{padding-right:calc(var(--spacing)*1)}.pr-2{padding-right:calc(var(--spacing)*2)}.pr-3{padding-right:calc(var(--spacing)*3)}.pr-4{padding-right:calc(var(--spacing)*4)}.pr-8{padding-right:calc(var(--spacing)*8)}.pr-10{padding-right:calc(var(--spacing)*10)}.pb-1{padding-bottom:calc(var(--spacing)*1)}.pb-2{padding-bottom:calc(var(--spacing)*2)}.pb-4{padding-bottom:calc(var(--spacing)*4)}.pl-4{padding-left:calc(var(--spacing)*4)}.pl-6{padding-left:calc(var(--spacing)*6)}.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)}.font-sans{font-family:var(--font-sans)}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-3xl{font-size:var(--text-3xl);line-height:var(--tw-leading,var(--text-3xl--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-\[8px\]{font-size:8px}.text-\[9px\]{font-size:9px}.text-\[10px\]{font-size:10px}.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-normal{--tw-font-weight:var(--font-weight-normal);font-weight:var(--font-weight-normal)}.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-wider{--tw-tracking:var(--tracking-wider);letter-spacing:var(--tracking-wider)}.tracking-widest{--tw-tracking:var(--tracking-widest);letter-spacing:var(--tracking-widest)}.break-all{word-break:break-all}.whitespace-nowrap{white-space:nowrap}.whitespace-pre-wrap{white-space:pre-wrap}.text-amber-200{color:var(--color-amber-200)}.text-amber-300{color:var(--color-amber-300)}.text-amber-300\/60{color:#ffd23699}@supports (color:color-mix(in lab,red,red)){.text-amber-300\/60{color:color-mix(in oklab,var(--color-amber-300)60%,transparent)}}.text-amber-300\/70{color:#ffd236b3}@supports (color:color-mix(in lab,red,red)){.text-amber-300\/70{color:color-mix(in oklab,var(--color-amber-300)70%,transparent)}}.text-amber-300\/80{color:#ffd236cc}@supports (color:color-mix(in lab,red,red)){.text-amber-300\/80{color:color-mix(in oklab,var(--color-amber-300)80%,transparent)}}.text-amber-400{color:var(--color-amber-400)}.text-amber-400\/70{color:#fcbb00b3}@supports (color:color-mix(in lab,red,red)){.text-amber-400\/70{color:color-mix(in oklab,var(--color-amber-400)70%,transparent)}}.text-amber-500{color:var(--color-amber-500)}.text-amber-600{color:var(--color-amber-600)}.text-bambu-dark-tertiary{color:var(--color-bambu-dark-tertiary)}.text-bambu-gray{color:var(--color-bambu-gray)}.text-bambu-gray-dark{color:var(--color-bambu-gray-dark)}.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\/60{color:var(--color-bambu-gray)}@supports (color:color-mix(in lab,red,red)){.text-bambu-gray\/60{color:color-mix(in oklab,var(--color-bambu-gray)60%,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-gray\/80{color:var(--color-bambu-gray)}@supports (color:color-mix(in lab,red,red)){.text-bambu-gray\/80{color:color-mix(in oklab,var(--color-bambu-gray)80%,transparent)}}.text-bambu-green,.text-bambu-green\/70{color:var(--color-bambu-green)}@supports (color:color-mix(in lab,red,red)){.text-bambu-green\/70{color:color-mix(in oklab,var(--color-bambu-green)70%,transparent)}}.text-black{color:var(--color-black)}.text-black\/80{color:#000c}@supports (color:color-mix(in lab,red,red)){.text-black\/80{color:color-mix(in oklab,var(--color-black)80%,transparent)}}.text-blue-300{color:var(--color-blue-300)}.text-blue-300\/80{color:#90c5ffcc}@supports (color:color-mix(in lab,red,red)){.text-blue-300\/80{color:color-mix(in oklab,var(--color-blue-300)80%,transparent)}}.text-blue-400{color:var(--color-blue-400)}.text-blue-500{color:var(--color-blue-500)}.text-blue-500\/70{color:#3080ffb3}@supports (color:color-mix(in lab,red,red)){.text-blue-500\/70{color:color-mix(in oklab,var(--color-blue-500)70%,transparent)}}.text-blue-600{color:var(--color-blue-600)}.text-blue-700{color:var(--color-blue-700)}.text-cyan-300{color:var(--color-cyan-300)}.text-cyan-400{color:var(--color-cyan-400)}.text-emerald-400{color:var(--color-emerald-400)}.text-gray-300{color:var(--color-gray-300)}.text-gray-400{color:var(--color-gray-400)}.text-gray-500{color:var(--color-gray-500)}.text-gray-600{color:var(--color-gray-600)}.text-gray-700{color:var(--color-gray-700)}.text-gray-900{color:var(--color-gray-900)}.text-green-300{color:var(--color-green-300)}.text-green-400{color:var(--color-green-400)}.text-green-500{color:var(--color-green-500)}.text-green-500\/60{color:#00c75899}@supports (color:color-mix(in lab,red,red)){.text-green-500\/60{color:color-mix(in oklab,var(--color-green-500)60%,transparent)}}.text-green-600{color:var(--color-green-600)}.text-indigo-400{color:var(--color-indigo-400)}.text-orange-300{color:var(--color-orange-300)}.text-orange-400{color:var(--color-orange-400)}.text-orange-500{color:var(--color-orange-500)}.text-orange-600{color:var(--color-orange-600)}.text-orange-700{color:var(--color-orange-700)}.text-purple-400{color:var(--color-purple-400)}.text-red-300{color:var(--color-red-300)}.text-red-300\/80{color:#ffa3a3cc}@supports (color:color-mix(in lab,red,red)){.text-red-300\/80{color:color-mix(in oklab,var(--color-red-300)80%,transparent)}}.text-red-400{color:var(--color-red-400)}.text-red-400\/60{color:#ff656899}@supports (color:color-mix(in lab,red,red)){.text-red-400\/60{color:color-mix(in oklab,var(--color-red-400)60%,transparent)}}.text-red-400\/70{color:#ff6568b3}@supports (color:color-mix(in lab,red,red)){.text-red-400\/70{color:color-mix(in oklab,var(--color-red-400)70%,transparent)}}.text-red-500{color:var(--color-red-500)}.text-red-600{color:var(--color-red-600)}.text-rose-400{color:var(--color-rose-400)}.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-white\/90{color:#ffffffe6}@supports (color:color-mix(in lab,red,red)){.text-white\/90{color:color-mix(in oklab,var(--color-white)90%,transparent)}}.text-yellow-200{color:var(--color-yellow-200)}.text-yellow-400{color:var(--color-yellow-400)}.text-yellow-500{color:var(--color-yellow-500)}.text-yellow-500\/70{color:#edb200b3}@supports (color:color-mix(in lab,red,red)){.text-yellow-500\/70{color:color-mix(in oklab,var(--color-yellow-500)70%,transparent)}}.text-yellow-600{color:var(--color-yellow-600)}.text-yellow-700{color:var(--color-yellow-700)}.capitalize{text-transform:capitalize}.uppercase{text-transform:uppercase}.italic{font-style:italic}.tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal,)var(--tw-slashed-zero,)var(--tw-numeric-figure,)var(--tw-numeric-spacing,)var(--tw-numeric-fraction,)}.line-through{text-decoration-line:line-through}.underline{text-decoration-line:underline}.placeholder-bambu-gray::placeholder{color:var(--color-bambu-gray)}.placeholder-bambu-gray-dark::placeholder{color:var(--color-bambu-gray-dark)}.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-40{opacity:.4}.opacity-50{opacity:.5}.opacity-60{opacity:.6}.opacity-70{opacity:.7}.opacity-80{opacity:.8}.opacity-100{opacity:1}.opacity-\[0\.65\]{opacity:.65}.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-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-sm{--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-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-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)}.shadow-bambu-green\/25{--tw-shadow-color:var(--color-bambu-green)}@supports (color:color-mix(in lab,red,red)){.shadow-bambu-green\/25{--tw-shadow-color:color-mix(in oklab,color-mix(in oklab,var(--color-bambu-green)25%,transparent)var(--tw-shadow-alpha),transparent)}}.ring-bambu-green{--tw-ring-color:var(--color-bambu-green)}.ring-white{--tw-ring-color:var(--color-white)}.ring-offset-1{--tw-ring-offset-width:1px;--tw-ring-offset-shadow:var(--tw-ring-inset,)0 0 0 var(--tw-ring-offset-width)var(--tw-ring-offset-color)}.ring-offset-2{--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)}.ring-offset-bambu-dark{--tw-ring-offset-color:var(--color-bambu-dark)}.ring-offset-bambu-dark-secondary{--tw-ring-offset-color:var(--color-bambu-dark-secondary)}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.blur{--tw-blur:blur(8px);filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.invert{--tw-invert:invert(100%);filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.filter{filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.backdrop-blur-sm{--tw-backdrop-blur:blur(var(--blur-sm));-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-150{--tw-duration:.15s;transition-duration:.15s}.duration-200{--tw-duration:.2s;transition-duration:.2s}.duration-300{--tw-duration:.3s;transition-duration:.3s}.duration-500{--tw-duration:.5s;transition-duration:.5s}.ease-in-out{--tw-ease:var(--ease-in-out);transition-timing-function:var(--ease-in-out)}.ease-out{--tw-ease:var(--ease-out);transition-timing-function:var(--ease-out)}@media(hover:hover){.group-hover\:bg-bambu-green\/20:is(:where(.group):hover *){background-color:var(--color-bambu-green)}@supports (color:color-mix(in lab,red,red)){.group-hover\:bg-bambu-green\/20:is(:where(.group):hover *){background-color:color-mix(in oklab,var(--color-bambu-green)20%,transparent)}}.group-hover\:text-bambu-gray:is(:where(.group):hover *){color:var(--color-bambu-gray)}.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)}.last\:border-0:last-child{border-style:var(--tw-border-style);border-width:0}@media(hover:hover){.hover\:border-bambu-dark-tertiary\/80:hover{border-color:var(--color-bambu-dark-tertiary)}@supports (color:color-mix(in lab,red,red)){.hover\:border-bambu-dark-tertiary\/80:hover{border-color:color-mix(in oklab,var(--color-bambu-dark-tertiary)80%,transparent)}}.hover\:border-bambu-gray:hover{border-color:var(--color-bambu-gray)}.hover\:border-bambu-gray-dark:hover{border-color:var(--color-bambu-gray-dark)}.hover\:border-bambu-green:hover,.hover\:border-bambu-green\/50:hover{border-color:var(--color-bambu-green)}@supports (color:color-mix(in lab,red,red)){.hover\:border-bambu-green\/50:hover{border-color:color-mix(in oklab,var(--color-bambu-green)50%,transparent)}}.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-amber-500\/30:hover{background-color:#f99c004d}@supports (color:color-mix(in lab,red,red)){.hover\:bg-amber-500\/30:hover{background-color:color-mix(in oklab,var(--color-amber-500)30%,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-dark\/50:hover{background-color:var(--color-bambu-dark)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-bambu-dark\/50:hover{background-color:color-mix(in oklab,var(--color-bambu-dark)50%,transparent)}}.hover\:bg-bambu-gray-dark:hover{background-color:var(--color-bambu-gray-dark)}.hover\:bg-bambu-green:hover{background-color:var(--color-bambu-green)}.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\/10:hover{background-color:var(--color-bambu-green)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-bambu-green\/10:hover{background-color:color-mix(in oklab,var(--color-bambu-green)10%,transparent)}}.hover\:bg-bambu-green\/20:hover{background-color:var(--color-bambu-green)}@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:var(--color-bambu-green)}@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\/80:hover{background-color:var(--color-bambu-green)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-bambu-green\/80:hover{background-color:color-mix(in oklab,var(--color-bambu-green)80%,transparent)}}.hover\:bg-black\/40:hover{background-color:#0006}@supports (color:color-mix(in lab,red,red)){.hover\:bg-black\/40:hover{background-color:color-mix(in oklab,var(--color-black)40%,transparent)}}.hover\:bg-black\/70:hover{background-color:#000000b3}@supports (color:color-mix(in lab,red,red)){.hover\:bg-black\/70:hover{background-color:color-mix(in oklab,var(--color-black)70%,transparent)}}.hover\:bg-black\/80:hover{background-color:#000c}@supports (color:color-mix(in lab,red,red)){.hover\:bg-black\/80:hover{background-color:color-mix(in oklab,var(--color-black)80%,transparent)}}.hover\:bg-gray-50:hover{background-color:var(--color-gray-50)}.hover\:bg-gray-100:hover{background-color:var(--color-gray-100)}.hover\:bg-gray-700:hover{background-color:var(--color-gray-700)}.hover\:bg-orange-400\/20:hover{background-color:#ff8b1a33}@supports (color:color-mix(in lab,red,red)){.hover\:bg-orange-400\/20:hover{background-color:color-mix(in oklab,var(--color-orange-400)20%,transparent)}}.hover\:bg-red-200:hover{background-color:var(--color-red-200)}.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\/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\/20:hover{background-color:#fb2c3633}@supports (color:color-mix(in lab,red,red)){.hover\:bg-red-500\/20:hover{background-color:color-mix(in oklab,var(--color-red-500)20%,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\/10:hover{background-color:#ffffff1a}@supports (color:color-mix(in lab,red,red)){.hover\:bg-white\/10:hover{background-color:color-mix(in oklab,var(--color-white)10%,transparent)}}.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\:text-amber-300:hover{color:var(--color-amber-300)}.hover\:text-bambu-green:hover{color:var(--color-bambu-green)}.hover\:text-bambu-green-light:hover{color:var(--color-bambu-green-light)}.hover\:text-bambu-green\/70:hover{color:var(--color-bambu-green)}@supports (color:color-mix(in lab,red,red)){.hover\:text-bambu-green\/70:hover{color:color-mix(in oklab,var(--color-bambu-green)70%,transparent)}}.hover\:text-bambu-green\/80:hover{color:var(--color-bambu-green)}@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-blue-300:hover{color:var(--color-blue-300)}.hover\:text-gray-900:hover{color:var(--color-gray-900)}.hover\:text-orange-300:hover{color:var(--color-orange-300)}.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}.hover\:shadow-lg:hover{--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)}.hover\:shadow-bambu-green\/5:hover{--tw-shadow-color:var(--color-bambu-green)}@supports (color:color-mix(in lab,red,red)){.hover\:shadow-bambu-green\/5:hover{--tw-shadow-color:color-mix(in oklab,color-mix(in oklab,var(--color-bambu-green)5%,transparent)var(--tw-shadow-alpha),transparent)}}}.focus\:border-bambu-green:focus{border-color:var(--color-bambu-green)}.focus\:border-red-500:focus{border-color:var(--color-red-500)}.focus\:ring-1:focus{--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)}.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-50:disabled{opacity:.5}@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\:w-auto{width:auto}.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\:flex-row{flex-direction:row}.sm\:items-center{align-items:center}.sm\:p-1\.5{padding:calc(var(--spacing)*1.5)}}@media(min-width:48rem){.md\:top-\[2px\]{top:2px}.md\:left-\[2px\]{left:2px}.md\:mx-0{margin-inline:calc(var(--spacing)*0)}.md\:block{display:block}.md\:inline{display:inline}.md\:h-4{height:calc(var(--spacing)*4)}.md\:h-5{height:calc(var(--spacing)*5)}.md\:h-8{height:calc(var(--spacing)*8)}.md\:min-h-0{min-height:calc(var(--spacing)*0)}.md\:w-4{width:calc(var(--spacing)*4)}.md\:w-8{width:calc(var(--spacing)*8)}.md\:w-9{width:calc(var(--spacing)*9)}.md\:min-w-\[200px\]{min-width:200px}.md\:flex-1{flex:1}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.md\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.md\:grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.md\:flex-row{flex-direction:row}.md\:flex-wrap{flex-wrap:wrap}.md\:items-center{align-items:center}.md\:gap-4{gap:calc(var(--spacing)*4)}.md\:p-8{padding:calc(var(--spacing)*8)}.md\:px-0{padding-inline:calc(var(--spacing)*0)}.md\:py-2{padding-block:calc(var(--spacing)*2)}.md\:pb-0{padding-bottom:calc(var(--spacing)*0)}}@media(min-width:64rem){.lg\:col-span-2{grid-column:span 2/span 2}.lg\:w-80{width:calc(var(--spacing)*80)}.lg\:w-\[480px\]{width:480px}.lg\:max-w-md{max-width:var(--container-md)}.lg\:max-w-sm{max-width:var(--container-sm)}.lg\:max-w-xl{max-width:var(--container-xl)}.lg\:flex-shrink-0{flex-shrink:0}.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\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.lg\:grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.lg\:flex-row{flex-direction:row}.lg\:gap-8{gap:calc(var(--spacing)*8)}.lg\:p-8{padding:calc(var(--spacing)*8)}}@media(min-width:80rem){.xl\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.xl\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.xl\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.xl\:grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.xl\:grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}}.dark\:border-bambu-dark-tertiary:where(.dark,.dark *),.dark\:border-bambu-dark-tertiary\/50:where(.dark,.dark *){border-color:var(--color-bambu-dark-tertiary)}@supports (color:color-mix(in lab,red,red)){.dark\:border-bambu-dark-tertiary\/50:where(.dark,.dark *){border-color:color-mix(in oklab,var(--color-bambu-dark-tertiary)50%,transparent)}}.dark\:border-bambu-green\/40:where(.dark,.dark *){border-color:var(--color-bambu-green)}@supports (color:color-mix(in lab,red,red)){.dark\:border-bambu-green\/40:where(.dark,.dark *){border-color:color-mix(in oklab,var(--color-bambu-green)40%,transparent)}}.dark\:border-gray-600:where(.dark,.dark *){border-color:var(--color-gray-600)}.dark\:border-red-500\/30:where(.dark,.dark *){border-color:#fb2c364d}@supports (color:color-mix(in lab,red,red)){.dark\:border-red-500\/30:where(.dark,.dark *){border-color:color-mix(in oklab,var(--color-red-500)30%,transparent)}}.dark\:border-red-500\/40:where(.dark,.dark *){border-color:#fb2c3666}@supports (color:color-mix(in lab,red,red)){.dark\:border-red-500\/40:where(.dark,.dark *){border-color:color-mix(in oklab,var(--color-red-500)40%,transparent)}}.dark\:bg-amber-500\/10:where(.dark,.dark *){background-color:#f99c001a}@supports (color:color-mix(in lab,red,red)){.dark\:bg-amber-500\/10:where(.dark,.dark *){background-color:color-mix(in oklab,var(--color-amber-500)10%,transparent)}}.dark\:bg-bambu-dark:where(.dark,.dark *){background-color:var(--color-bambu-dark)}.dark\:bg-bambu-dark-secondary:where(.dark,.dark *){background-color:var(--color-bambu-dark-secondary)}.dark\:bg-bambu-green\/20:where(.dark,.dark *){background-color:var(--color-bambu-green)}@supports (color:color-mix(in lab,red,red)){.dark\:bg-bambu-green\/20:where(.dark,.dark *){background-color:color-mix(in oklab,var(--color-bambu-green)20%,transparent)}}.dark\:bg-black\/80:where(.dark,.dark *){background-color:#000c}@supports (color:color-mix(in lab,red,red)){.dark\:bg-black\/80:where(.dark,.dark *){background-color:color-mix(in oklab,var(--color-black)80%,transparent)}}.dark\:bg-blue-500\/10:where(.dark,.dark *){background-color:#3080ff1a}@supports (color:color-mix(in lab,red,red)){.dark\:bg-blue-500\/10:where(.dark,.dark *){background-color:color-mix(in oklab,var(--color-blue-500)10%,transparent)}}.dark\:bg-blue-500\/20:where(.dark,.dark *){background-color:#3080ff33}@supports (color:color-mix(in lab,red,red)){.dark\:bg-blue-500\/20:where(.dark,.dark *){background-color:color-mix(in oklab,var(--color-blue-500)20%,transparent)}}.dark\:bg-gray-500\/40:where(.dark,.dark *){background-color:#6a728266}@supports (color:color-mix(in lab,red,red)){.dark\:bg-gray-500\/40:where(.dark,.dark *){background-color:color-mix(in oklab,var(--color-gray-500)40%,transparent)}}.dark\:bg-gray-900:where(.dark,.dark *){background-color:var(--color-gray-900)}.dark\:bg-red-500\/10:where(.dark,.dark *){background-color:#fb2c361a}@supports (color:color-mix(in lab,red,red)){.dark\:bg-red-500\/10:where(.dark,.dark *){background-color:color-mix(in oklab,var(--color-red-500)10%,transparent)}}.dark\:bg-red-500\/20:where(.dark,.dark *){background-color:#fb2c3633}@supports (color:color-mix(in lab,red,red)){.dark\:bg-red-500\/20:where(.dark,.dark *){background-color:color-mix(in oklab,var(--color-red-500)20%,transparent)}}.dark\:text-amber-400:where(.dark,.dark *){color:var(--color-amber-400)}.dark\:text-bambu-gray:where(.dark,.dark *),.dark\:text-bambu-gray\/30:where(.dark,.dark *){color:var(--color-bambu-gray)}@supports (color:color-mix(in lab,red,red)){.dark\:text-bambu-gray\/30:where(.dark,.dark *){color:color-mix(in oklab,var(--color-bambu-gray)30%,transparent)}}.dark\:text-bambu-gray\/50:where(.dark,.dark *){color:var(--color-bambu-gray)}@supports (color:color-mix(in lab,red,red)){.dark\:text-bambu-gray\/50:where(.dark,.dark *){color:color-mix(in oklab,var(--color-bambu-gray)50%,transparent)}}.dark\:text-bambu-green:where(.dark,.dark *),.dark\:text-bambu-green\/60:where(.dark,.dark *){color:var(--color-bambu-green)}@supports (color:color-mix(in lab,red,red)){.dark\:text-bambu-green\/60:where(.dark,.dark *){color:color-mix(in oklab,var(--color-bambu-green)60%,transparent)}}.dark\:text-blue-200:where(.dark,.dark *){color:var(--color-blue-200)}.dark\:text-blue-200\/80:where(.dark,.dark *){color:#bedbffcc}@supports (color:color-mix(in lab,red,red)){.dark\:text-blue-200\/80:where(.dark,.dark *){color:color-mix(in oklab,var(--color-blue-200)80%,transparent)}}.dark\:text-blue-300:where(.dark,.dark *){color:var(--color-blue-300)}.dark\:text-blue-300\/60:where(.dark,.dark *){color:#90c5ff99}@supports (color:color-mix(in lab,red,red)){.dark\:text-blue-300\/60:where(.dark,.dark *){color:color-mix(in oklab,var(--color-blue-300)60%,transparent)}}.dark\:text-blue-400:where(.dark,.dark *){color:var(--color-blue-400)}.dark\:text-orange-200:where(.dark,.dark *){color:var(--color-orange-200)}.dark\:text-orange-400:where(.dark,.dark *){color:var(--color-orange-400)}.dark\:text-red-400:where(.dark,.dark *){color:var(--color-red-400)}.dark\:text-red-400\/70:where(.dark,.dark *){color:#ff6568b3}@supports (color:color-mix(in lab,red,red)){.dark\:text-red-400\/70:where(.dark,.dark *){color:color-mix(in oklab,var(--color-red-400)70%,transparent)}}.dark\:text-white:where(.dark,.dark *){color:var(--color-white)}.dark\:text-yellow-200:where(.dark,.dark *){color:var(--color-yellow-200)}.dark\:text-yellow-200\/70:where(.dark,.dark *){color:#fff085b3}@supports (color:color-mix(in lab,red,red)){.dark\:text-yellow-200\/70:where(.dark,.dark *){color:color-mix(in oklab,var(--color-yellow-200)70%,transparent)}}@media(hover:hover){.dark\:hover\:bg-bambu-dark-tertiary:where(.dark,.dark *):hover{background-color:var(--color-bambu-dark-tertiary)}.dark\:hover\:bg-bambu-dark\/50:where(.dark,.dark *):hover{background-color:var(--color-bambu-dark)}@supports (color:color-mix(in lab,red,red)){.dark\:hover\:bg-bambu-dark\/50:where(.dark,.dark *):hover{background-color:color-mix(in oklab,var(--color-bambu-dark)50%,transparent)}}.dark\:hover\:bg-red-500\/30:where(.dark,.dark *):hover{background-color:#fb2c364d}@supports (color:color-mix(in lab,red,red)){.dark\:hover\:bg-red-500\/30:where(.dark,.dark *):hover{background-color:color-mix(in oklab,var(--color-red-500)30%,transparent)}}.dark\:hover\:text-white:where(.dark,.dark *):hover{color:var(--color-white)}}.\[\&\:\:-webkit-slider-thumb\]\:h-3::-webkit-slider-thumb{height:calc(var(--spacing)*3)}.\[\&\:\:-webkit-slider-thumb\]\:w-3::-webkit-slider-thumb{width:calc(var(--spacing)*3)}.\[\&\:\:-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{--accent:#00ae42;--accent-light:#00c64d;--accent-dark:#009438;--bg-primary:#f5f5f5;--bg-secondary:#fff;--bg-tertiary:#e5e5e5;--text-primary:#1a1a1a;--text-secondary:#4a4a4a;--text-muted:#6b6b6b;--text-tertiary:gray;--border-color:#d4d4d4;--card-shadow:0 2px 8px #00000014;--glow-color:transparent;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;--card-shadow:0 4px 16px #0006}.bg-warm{--bg-primary:#faf8f5;--bg-secondary:#fffefa;--bg-tertiary:#e8e4dd;--text-primary:#2d2a26;--text-secondary:#5c5750;--text-muted:#7a756c;--text-tertiary:#9a9590;--border-color:#d8d4cc}.bg-cool{--bg-primary:#f0f4f8;--bg-secondary:#fff;--bg-tertiary:#dce4ec;--text-primary:#1a2530;--text-secondary:#4a5568;--text-muted:#6b7a8a;--text-tertiary:#8a9aaa;--border-color:#c8d4e0}.dark.bg-neutral{--bg-primary:#1a1a1a;--bg-secondary:#2d2d2d;--bg-tertiary:#3d3d3d;--text-primary:#fff;--text-secondary:#a0a0a0;--text-muted:gray;--text-tertiary:#4a4a4a;--border-color:#3d3d3d}.dark.bg-warm{--bg-primary:#1c1a18;--bg-secondary:#2e2a26;--bg-tertiary:#3e3a36;--text-primary:#f5f0ea;--text-secondary:#b0a898;--text-muted:#8a8278;--text-tertiary:#5a5248;--border-color:#3e3a36}.dark.bg-cool{--bg-primary:#181c20;--bg-secondary:#262c32;--bg-tertiary:#363e46;--text-primary:#f0f4f8;--text-secondary:#98a8b8;--text-muted:#788898;--text-tertiary:#4a5a6a;--border-color:#363e46}.dark.bg-oled{--bg-primary:#000;--bg-secondary:#141414;--bg-tertiary:#1f1f1f;--text-primary:#fff;--text-secondary:#a0a0a0;--text-muted:#707070;--text-tertiary:#404040;--border-color:#2a2a2a}.dark.bg-slate{--bg-primary:#0f172a;--bg-secondary:#1e293b;--bg-tertiary:#334155;--text-primary:#f1f5f9;--text-secondary:#94a3b8;--text-muted:#64748b;--text-tertiary:#475569;--border-color:#334155}.dark.bg-forest{--bg-primary:#121a16;--bg-secondary:#1c2a22;--bg-tertiary:#2a3d30;--text-primary:#e8f5ec;--text-secondary:#8aa894;--text-muted:#6a8874;--text-tertiary:#4a6854;--border-color:#2a3d30}.style-glow{--card-shadow:0 2px 8px #00000014,0 0 25px var(--accent)}@supports (color:color-mix(in lab,red,red)){.style-glow{--card-shadow:0 2px 8px #00000014,0 0 25px color-mix(in srgb,var(--accent)12%,transparent)}}.dark.style-glow{--card-shadow:0 4px 20px #00000080,0 0 40px var(--accent)}@supports (color:color-mix(in lab,red,red)){.dark.style-glow{--card-shadow:0 4px 20px #00000080,0 0 40px color-mix(in srgb,var(--accent)15%,transparent)}}.style-vibrant{--card-shadow:0 8px 30px #00000026,0 2px 8px #0000001a}.dark.style-vibrant{--card-shadow:0 10px 40px #0009,0 4px 12px #0006}.accent-green{--accent:#00ae42;--accent-light:#00c64d;--accent-dark:#009438}.accent-teal{--accent:#14b8a6;--accent-light:#2dd4bf;--accent-dark:#0d9488}.accent-blue{--accent:#3b82f6;--accent-light:#60a5fa;--accent-dark:#2563eb}.accent-orange{--accent:#f97316;--accent-light:#fb923c;--accent-dark:#ea580c}.accent-purple{--accent:#8b5cf6;--accent-light:#a78bfa;--accent-dark:#7c3aed}.accent-red{--accent:#ef4444;--accent-light:#f87171;--accent-dark:#dc2626}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)}.ams-empty-slot{background:repeating-linear-gradient(45deg,#444,#444 2px,#222 2px 4px)}.dark .ams-empty-slot{background:repeating-linear-gradient(45deg,#555,#555 2px,#333 2px 4px)}.touch-manipulation{touch-action:manipulation}.safe-area-bottom{padding-bottom:env(safe-area-inset-bottom,0)}.safe-area-top{padding-top:env(safe-area-inset-top,0)}.scrollbar-hide{-ms-overflow-style:none;scrollbar-width:none}.scrollbar-hide::-webkit-scrollbar{display:none}@keyframes slide-in-left{0%{transform:translate(-100%)}to{transform:translate(0)}}.animate-slide-in-left{animation:.3s ease-out slide-in-left}.card-shadow{box-shadow:var(--card-shadow)}@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-gradient-position{syntax:"*";inherits:false}@property --tw-gradient-from{syntax:"";inherits:false;initial-value:#0000}@property --tw-gradient-via{syntax:"";inherits:false;initial-value:#0000}@property --tw-gradient-to{syntax:"";inherits:false;initial-value:#0000}@property --tw-gradient-stops{syntax:"*";inherits:false}@property --tw-gradient-via-stops{syntax:"*";inherits:false}@property --tw-gradient-from-position{syntax:"";inherits:false;initial-value:0%}@property --tw-gradient-via-position{syntax:"";inherits:false;initial-value:50%}@property --tw-gradient-to-position{syntax:"";inherits:false;initial-value:100%}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-ordinal{syntax:"*";inherits:false}@property --tw-slashed-zero{syntax:"*";inherits:false}@property --tw-numeric-figure{syntax:"*";inherits:false}@property --tw-numeric-spacing{syntax:"*";inherits:false}@property --tw-numeric-fraction{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-outline-style{syntax:"*";inherits:false;initial-value:solid}@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-gradient-position:initial;--tw-gradient-from:#0000;--tw-gradient-via:#0000;--tw-gradient-to:#0000;--tw-gradient-stops:initial;--tw-gradient-via-stops:initial;--tw-gradient-from-position:0%;--tw-gradient-via-position:50%;--tw-gradient-to-position:100%;--tw-font-weight:initial;--tw-tracking:initial;--tw-ordinal:initial;--tw-slashed-zero:initial;--tw-numeric-figure:initial;--tw-numeric-spacing:initial;--tw-numeric-fraction: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-outline-style:solid;--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-B03CK04P.js b/static/assets/index-C_Su2_85.js similarity index 50% rename from static/assets/index-B03CK04P.js rename to static/assets/index-C_Su2_85.js index 4c1f79b0c..51742afb0 100644 --- a/static/assets/index-B03CK04P.js +++ b/static/assets/index-C_Su2_85.js @@ -1,20 +1,20 @@ -function yie(t,e){for(var n=0;nr[i]})}}}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 i of document.querySelectorAll('link[rel="modulepreload"]'))r(i);new MutationObserver(i=>{for(const a of i)if(a.type==="childList")for(const o of a.addedNodes)o.tagName==="LINK"&&o.rel==="modulepreload"&&r(o)}).observe(document,{childList:!0,subtree:!0});function n(i){const a={};return i.integrity&&(a.integrity=i.integrity),i.referrerPolicy&&(a.referrerPolicy=i.referrerPolicy),i.crossOrigin==="use-credentials"?a.credentials="include":i.crossOrigin==="anonymous"?a.credentials="omit":a.credentials="same-origin",a}function r(i){if(i.ep)return;i.ep=!0;const a=n(i);fetch(i.href,a)}})();var Cv=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function wo(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}var VA={exports:{}},_x={};var RF;function vie(){if(RF)return _x;RF=1;var t=Symbol.for("react.transitional.element"),e=Symbol.for("react.fragment");function n(r,i,a){var o=null;if(a!==void 0&&(o=""+a),i.key!==void 0&&(o=""+i.key),"key"in i){a={};for(var l in i)l!=="key"&&(a[l]=i[l])}else a=i;return i=a.ref,{$$typeof:t,type:r,key:o,ref:i!==void 0?i:null,props:a}}return _x.Fragment=e,_x.jsx=n,_x.jsxs=n,_x}var DF;function _ie(){return DF||(DF=1,VA.exports=vie()),VA.exports}var s=_ie(),GA={exports:{}},ln={};var OF;function wie(){if(OF)return ln;OF=1;var t=Symbol.for("react.transitional.element"),e=Symbol.for("react.portal"),n=Symbol.for("react.fragment"),r=Symbol.for("react.strict_mode"),i=Symbol.for("react.profiler"),a=Symbol.for("react.consumer"),o=Symbol.for("react.context"),l=Symbol.for("react.forward_ref"),c=Symbol.for("react.suspense"),u=Symbol.for("react.memo"),d=Symbol.for("react.lazy"),f=Symbol.for("react.activity"),g=Symbol.iterator;function p(U){return U===null||typeof U!="object"?null:(U=g&&U[g]||U["@@iterator"],typeof U=="function"?U:null)}var b={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},y=Object.assign,x={};function v(U,G,J){this.props=U,this.context=G,this.refs=x,this.updater=J||b}v.prototype.isReactComponent={},v.prototype.setState=function(U,G){if(typeof U!="object"&&typeof U!="function"&&U!=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,U,G,"setState")},v.prototype.forceUpdate=function(U){this.updater.enqueueForceUpdate(this,U,"forceUpdate")};function E(){}E.prototype=v.prototype;function w(U,G,J){this.props=U,this.context=G,this.refs=x,this.updater=J||b}var N=w.prototype=new E;N.constructor=w,y(N,v.prototype),N.isPureReactComponent=!0;var A=Array.isArray;function C(){}var T={H:null,A:null,T:null,S:null},L=Object.prototype.hasOwnProperty;function k(U,G,J){var ie=J.ref;return{$$typeof:t,type:U,key:G,ref:ie!==void 0?ie:null,props:J}}function j(U,G){return k(U.type,G,U.props)}function F(U){return typeof U=="object"&&U!==null&&U.$$typeof===t}function I(U){var G={"=":"=0",":":"=2"};return"$"+U.replace(/[=:]/g,function(J){return G[J]})}var W=/\/+/g;function D(U,G){return typeof U=="object"&&U!==null&&U.key!=null?I(""+U.key):G.toString(36)}function q(U){switch(U.status){case"fulfilled":return U.value;case"rejected":throw U.reason;default:switch(typeof U.status=="string"?U.then(C,C):(U.status="pending",U.then(function(G){U.status==="pending"&&(U.status="fulfilled",U.value=G)},function(G){U.status==="pending"&&(U.status="rejected",U.reason=G)})),U.status){case"fulfilled":return U.value;case"rejected":throw U.reason}}throw U}function K(U,G,J,ie,ae){var he=typeof U;(he==="undefined"||he==="boolean")&&(U=null);var ue=!1;if(U===null)ue=!0;else switch(he){case"bigint":case"string":case"number":ue=!0;break;case"object":switch(U.$$typeof){case t:case e:ue=!0;break;case d:return ue=U._init,K(ue(U._payload),G,J,ie,ae)}}if(ue)return ae=ae(U),ue=ie===""?"."+D(U,0):ie,A(ae)?(J="",ue!=null&&(J=ue.replace(W,"$&/")+"/"),K(ae,G,J,"",function(ge){return ge})):ae!=null&&(F(ae)&&(ae=j(ae,J+(ae.key==null||U&&U.key===ae.key?"":(""+ae.key).replace(W,"$&/")+"/")+ue)),G.push(ae)),1;ue=0;var le=ie===""?".":ie+":";if(A(U))for(var fe=0;fe>>1,X=K[ee];if(0>>1;eei(J,Q))iei(ae,J)?(K[ee]=ae,K[ie]=Q,ee=ie):(K[ee]=J,K[G]=Q,ee=G);else if(iei(ae,Q))K[ee]=ae,K[ie]=Q,ee=ie;else break e}}return V}function i(K,V){var Q=K.sortIndex-V.sortIndex;return Q!==0?Q:K.id-V.id}if(t.unstable_now=void 0,typeof performance=="object"&&typeof performance.now=="function"){var a=performance;t.unstable_now=function(){return a.now()}}else{var o=Date,l=o.now();t.unstable_now=function(){return o.now()-l}}var c=[],u=[],d=1,f=null,g=3,p=!1,b=!1,y=!1,x=!1,v=typeof setTimeout=="function"?setTimeout:null,E=typeof clearTimeout=="function"?clearTimeout:null,w=typeof setImmediate<"u"?setImmediate:null;function N(K){for(var V=n(u);V!==null;){if(V.callback===null)r(u);else if(V.startTime<=K)r(u),V.sortIndex=V.expirationTime,e(c,V);else break;V=n(u)}}function A(K){if(y=!1,N(K),!b)if(n(c)!==null)b=!0,C||(C=!0,I());else{var V=n(u);V!==null&&q(A,V.startTime-K)}}var C=!1,T=-1,L=5,k=-1;function j(){return x?!0:!(t.unstable_now()-kK&&j());){var ee=f.callback;if(typeof ee=="function"){f.callback=null,g=f.priorityLevel;var X=ee(f.expirationTime<=K);if(K=t.unstable_now(),typeof X=="function"){f.callback=X,N(K),V=!0;break t}f===n(c)&&r(c),N(K)}else r(c);f=n(c)}if(f!==null)V=!0;else{var U=n(u);U!==null&&q(A,U.startTime-K),V=!1}}break e}finally{f=null,g=Q,p=!1}V=void 0}}finally{V?I():C=!1}}}var I;if(typeof w=="function")I=function(){w(F)};else if(typeof MessageChannel<"u"){var W=new MessageChannel,D=W.port2;W.port1.onmessage=F,I=function(){D.postMessage(null)}}else I=function(){v(F,0)};function q(K,V){T=v(function(){K(t.unstable_now())},V)}t.unstable_IdlePriority=5,t.unstable_ImmediatePriority=1,t.unstable_LowPriority=4,t.unstable_NormalPriority=3,t.unstable_Profiling=null,t.unstable_UserBlockingPriority=2,t.unstable_cancelCallback=function(K){K.callback=null},t.unstable_forceFrameRate=function(K){0>K||125ee?(K.sortIndex=Q,e(u,K),n(c)===null&&K===n(u)&&(y?(E(T),T=-1):y=!0,q(A,Q-ee))):(K.sortIndex=X,e(c,K),b||p||(b=!0,C||(C=!0,I()))),K},t.unstable_shouldYield=j,t.unstable_wrapCallback=function(K){var V=g;return function(){var Q=g;g=V;try{return K.apply(this,arguments)}finally{g=Q}}}})(KA)),KA}var FF;function Eie(){return FF||(FF=1,qA.exports=Mie()),qA.exports}var XA={exports:{}},ma={};var UF;function Aie(){if(UF)return ma;UF=1;var t=sg();function e(c){var u="https://react.dev/errors/"+c;if(1"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(t)}catch(e){console.error(e)}}return t(),XA.exports=Aie(),XA.exports}var BF;function Nie(){if(BF)return wx;BF=1;var t=Eie(),e=sg(),n=s9();function r(h){var m="https://react.dev/errors/"+h;if(1X||(h.current=ee[X],ee[X]=null,X--)}function J(h,m){X++,ee[X]=h.current,h.current=m}var ie=U(null),ae=U(null),he=U(null),ue=U(null);function le(h,m){switch(J(he,m),J(ae,h),J(ie,null),m.nodeType){case 9:case 11:h=(h=m.documentElement)&&(h=h.namespaceURI)?nF(h):0;break;default:if(h=m.tagName,m=m.namespaceURI)m=nF(m),h=rF(m,h);else switch(h){case"svg":h=1;break;case"math":h=2;break;default:h=0}}G(ie),J(ie,h)}function fe(){G(ie),G(ae),G(he)}function ge(h){h.memoizedState!==null&&J(ue,h);var m=ie.current,_=rF(m,h.type);m!==_&&(J(ae,h),J(ie,_))}function Ee(h){ae.current===h&&(G(ie),G(ae)),ue.current===h&&(G(ue),xx._currentValue=Q)}var re,Xe;function z(h){if(re===void 0)try{throw Error()}catch(_){var m=_.stack.trim().match(/\n( *(at )?)/);re=m&&m[1]||"",Xe=-1<_.stack.indexOf(` +function Eie(t,e){for(var n=0;nr[i]})}}}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 i of document.querySelectorAll('link[rel="modulepreload"]'))r(i);new MutationObserver(i=>{for(const a of i)if(a.type==="childList")for(const o of a.addedNodes)o.tagName==="LINK"&&o.rel==="modulepreload"&&r(o)}).observe(document,{childList:!0,subtree:!0});function n(i){const a={};return i.integrity&&(a.integrity=i.integrity),i.referrerPolicy&&(a.referrerPolicy=i.referrerPolicy),i.crossOrigin==="use-credentials"?a.credentials="include":i.crossOrigin==="anonymous"?a.credentials="omit":a.credentials="same-origin",a}function r(i){if(i.ep)return;i.ep=!0;const a=n(i);fetch(i.href,a)}})();var Cv=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function wo(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}var VA={exports:{}},_x={};var DF;function Aie(){if(DF)return _x;DF=1;var t=Symbol.for("react.transitional.element"),e=Symbol.for("react.fragment");function n(r,i,a){var o=null;if(a!==void 0&&(o=""+a),i.key!==void 0&&(o=""+i.key),"key"in i){a={};for(var l in i)l!=="key"&&(a[l]=i[l])}else a=i;return i=a.ref,{$$typeof:t,type:r,key:o,ref:i!==void 0?i:null,props:a}}return _x.Fragment=e,_x.jsx=n,_x.jsxs=n,_x}var OF;function Nie(){return OF||(OF=1,VA.exports=Aie()),VA.exports}var s=Nie(),GA={exports:{}},ln={};var LF;function Tie(){if(LF)return ln;LF=1;var t=Symbol.for("react.transitional.element"),e=Symbol.for("react.portal"),n=Symbol.for("react.fragment"),r=Symbol.for("react.strict_mode"),i=Symbol.for("react.profiler"),a=Symbol.for("react.consumer"),o=Symbol.for("react.context"),l=Symbol.for("react.forward_ref"),c=Symbol.for("react.suspense"),u=Symbol.for("react.memo"),d=Symbol.for("react.lazy"),f=Symbol.for("react.activity"),g=Symbol.iterator;function p(F){return F===null||typeof F!="object"?null:(F=g&&F[g]||F["@@iterator"],typeof F=="function"?F:null)}var x={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},y=Object.assign,b={};function v(F,W,ee){this.props=F,this.context=W,this.refs=b,this.updater=ee||x}v.prototype.isReactComponent={},v.prototype.setState=function(F,W){if(typeof F!="object"&&typeof F!="function"&&F!=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,F,W,"setState")},v.prototype.forceUpdate=function(F){this.updater.enqueueForceUpdate(this,F,"forceUpdate")};function E(){}E.prototype=v.prototype;function w(F,W,ee){this.props=F,this.context=W,this.refs=b,this.updater=ee||x}var N=w.prototype=new E;N.constructor=w,y(N,v.prototype),N.isPureReactComponent=!0;var A=Array.isArray;function C(){}var T={H:null,A:null,T:null,S:null},L=Object.prototype.hasOwnProperty;function k(F,W,ee){var ie=ee.ref;return{$$typeof:t,type:F,key:W,ref:ie!==void 0?ie:null,props:ee}}function D(F,W){return k(F.type,W,F.props)}function U(F){return typeof F=="object"&&F!==null&&F.$$typeof===t}function O(F){var W={"=":"=0",":":"=2"};return"$"+F.replace(/[=:]/g,function(ee){return W[ee]})}var q=/\/+/g;function R(F,W){return typeof F=="object"&&F!==null&&F.key!=null?O(""+F.key):W.toString(36)}function G(F){switch(F.status){case"fulfilled":return F.value;case"rejected":throw F.reason;default:switch(typeof F.status=="string"?F.then(C,C):(F.status="pending",F.then(function(W){F.status==="pending"&&(F.status="fulfilled",F.value=W)},function(W){F.status==="pending"&&(F.status="rejected",F.reason=W)})),F.status){case"fulfilled":return F.value;case"rejected":throw F.reason}}throw F}function Y(F,W,ee,ie,ae){var de=typeof F;(de==="undefined"||de==="boolean")&&(F=null);var ue=!1;if(F===null)ue=!0;else switch(de){case"bigint":case"string":case"number":ue=!0;break;case"object":switch(F.$$typeof){case t:case e:ue=!0;break;case d:return ue=F._init,Y(ue(F._payload),W,ee,ie,ae)}}if(ue)return ae=ae(F),ue=ie===""?"."+R(F,0):ie,A(ae)?(ee="",ue!=null&&(ee=ue.replace(q,"$&/")+"/"),Y(ae,W,ee,"",function(pe){return pe})):ae!=null&&(U(ae)&&(ae=D(ae,ee+(ae.key==null||F&&F.key===ae.key?"":(""+ae.key).replace(q,"$&/")+"/")+ue)),W.push(ae)),1;ue=0;var le=ie===""?".":ie+":";if(A(F))for(var he=0;he>>1,X=Y[J];if(0>>1;Ji(ee,K))iei(ae,ee)?(Y[J]=ae,Y[ie]=K,J=ie):(Y[J]=ee,Y[W]=K,J=W);else if(iei(ae,K))Y[J]=ae,Y[ie]=K,J=ie;else break e}}return V}function i(Y,V){var K=Y.sortIndex-V.sortIndex;return K!==0?K:Y.id-V.id}if(t.unstable_now=void 0,typeof performance=="object"&&typeof performance.now=="function"){var a=performance;t.unstable_now=function(){return a.now()}}else{var o=Date,l=o.now();t.unstable_now=function(){return o.now()-l}}var c=[],u=[],d=1,f=null,g=3,p=!1,x=!1,y=!1,b=!1,v=typeof setTimeout=="function"?setTimeout:null,E=typeof clearTimeout=="function"?clearTimeout:null,w=typeof setImmediate<"u"?setImmediate:null;function N(Y){for(var V=n(u);V!==null;){if(V.callback===null)r(u);else if(V.startTime<=Y)r(u),V.sortIndex=V.expirationTime,e(c,V);else break;V=n(u)}}function A(Y){if(y=!1,N(Y),!x)if(n(c)!==null)x=!0,C||(C=!0,O());else{var V=n(u);V!==null&&G(A,V.startTime-Y)}}var C=!1,T=-1,L=5,k=-1;function D(){return b?!0:!(t.unstable_now()-kY&&D());){var J=f.callback;if(typeof J=="function"){f.callback=null,g=f.priorityLevel;var X=J(f.expirationTime<=Y);if(Y=t.unstable_now(),typeof X=="function"){f.callback=X,N(Y),V=!0;break t}f===n(c)&&r(c),N(Y)}else r(c);f=n(c)}if(f!==null)V=!0;else{var F=n(u);F!==null&&G(A,F.startTime-Y),V=!1}}break e}finally{f=null,g=K,p=!1}V=void 0}}finally{V?O():C=!1}}}var O;if(typeof w=="function")O=function(){w(U)};else if(typeof MessageChannel<"u"){var q=new MessageChannel,R=q.port2;q.port1.onmessage=U,O=function(){R.postMessage(null)}}else O=function(){v(U,0)};function G(Y,V){T=v(function(){Y(t.unstable_now())},V)}t.unstable_IdlePriority=5,t.unstable_ImmediatePriority=1,t.unstable_LowPriority=4,t.unstable_NormalPriority=3,t.unstable_Profiling=null,t.unstable_UserBlockingPriority=2,t.unstable_cancelCallback=function(Y){Y.callback=null},t.unstable_forceFrameRate=function(Y){0>Y||125J?(Y.sortIndex=K,e(u,Y),n(c)===null&&Y===n(u)&&(y?(E(T),T=-1):y=!0,G(A,K-J))):(Y.sortIndex=X,e(c,Y),x||p||(x=!0,C||(C=!0,O()))),Y},t.unstable_shouldYield=D,t.unstable_wrapCallback=function(Y){var V=g;return function(){var K=g;g=V;try{return Y.apply(this,arguments)}finally{g=K}}}})(KA)),KA}var UF;function Pie(){return UF||(UF=1,qA.exports=kie()),qA.exports}var XA={exports:{}},ma={};var zF;function jie(){if(zF)return ma;zF=1;var t=og();function e(c){var u="https://react.dev/errors/"+c;if(1"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(t)}catch(e){console.error(e)}}return t(),XA.exports=jie(),XA.exports}var HF;function Rie(){if(HF)return wx;HF=1;var t=Pie(),e=og(),n=h9();function r(h){var m="https://react.dev/errors/"+h;if(1X||(h.current=J[X],J[X]=null,X--)}function ee(h,m){X++,J[X]=h.current,h.current=m}var ie=F(null),ae=F(null),de=F(null),ue=F(null);function le(h,m){switch(ee(de,m),ee(ae,h),ee(ie,null),m.nodeType){case 9:case 11:h=(h=m.documentElement)&&(h=h.namespaceURI)?rF(h):0;break;default:if(h=m.tagName,m=m.namespaceURI)m=rF(m),h=iF(m,h);else switch(h){case"svg":h=1;break;case"math":h=2;break;default:h=0}}W(ie),ee(ie,h)}function he(){W(ie),W(ae),W(de)}function pe(h){h.memoizedState!==null&&ee(ue,h);var m=ie.current,_=iF(m,h.type);m!==_&&(ee(ae,h),ee(ie,_))}function Me(h){ae.current===h&&(W(ie),W(ae)),ue.current===h&&(W(ue),xx._currentValue=K)}var re,We;function z(h){if(re===void 0)try{throw Error()}catch(_){var m=_.stack.trim().match(/\n( *(at )?)/);re=m&&m[1]||"",We=-1<_.stack.indexOf(` at`)?" ()":-1<_.stack.indexOf("@")?"@unknown:0:0":""}return` -`+re+h+Xe}var $=!1;function se(h,m){if(!h||$)return"";$=!0;var _=Error.prepareStackTrace;Error.prepareStackTrace=void 0;try{var M={DetermineComponentFrameRoot:function(){try{if(m){var mt=function(){throw Error()};if(Object.defineProperty(mt.prototype,"props",{set:function(){throw Error()}}),typeof Reflect=="object"&&Reflect.construct){try{Reflect.construct(mt,[])}catch(ot){var it=ot}Reflect.construct(h,[],mt)}else{try{mt.call()}catch(ot){it=ot}h.call(mt.prototype)}}else{try{throw Error()}catch(ot){it=ot}(mt=h())&&typeof mt.catch=="function"&&mt.catch(function(){})}}catch(ot){if(ot&&it&&typeof ot.stack=="string")return[ot.stack,it.stack]}return[null,null]}};M.DetermineComponentFrameRoot.displayName="DetermineComponentFrameRoot";var P=Object.getOwnPropertyDescriptor(M.DetermineComponentFrameRoot,"name");P&&P.configurable&&Object.defineProperty(M.DetermineComponentFrameRoot,"name",{value:"DetermineComponentFrameRoot"});var O=M.DetermineComponentFrameRoot(),Y=O[0],de=O[1];if(Y&&de){var Te=Y.split(` -`),nt=de.split(` +`+re+h+We}var H=!1;function se(h,m){if(!h||H)return"";H=!0;var _=Error.prepareStackTrace;Error.prepareStackTrace=void 0;try{var M={DetermineComponentFrameRoot:function(){try{if(m){var pt=function(){throw Error()};if(Object.defineProperty(pt.prototype,"props",{set:function(){throw Error()}}),typeof Reflect=="object"&&Reflect.construct){try{Reflect.construct(pt,[])}catch(ot){var it=ot}Reflect.construct(h,[],pt)}else{try{pt.call()}catch(ot){it=ot}h.call(pt.prototype)}}else{try{throw Error()}catch(ot){it=ot}(pt=h())&&typeof pt.catch=="function"&&pt.catch(function(){})}}catch(ot){if(ot&&it&&typeof ot.stack=="string")return[ot.stack,it.stack]}return[null,null]}};M.DetermineComponentFrameRoot.displayName="DetermineComponentFrameRoot";var P=Object.getOwnPropertyDescriptor(M.DetermineComponentFrameRoot,"name");P&&P.configurable&&Object.defineProperty(M.DetermineComponentFrameRoot,"name",{value:"DetermineComponentFrameRoot"});var I=M.DetermineComponentFrameRoot(),Z=I[0],fe=I[1];if(Z&&fe){var Te=Z.split(` +`),nt=fe.split(` `);for(P=M=0;MP||Te[M]!==nt[P]){var lt=` -`+Te[M].replace(" at new "," at ");return h.displayName&<.includes("")&&(lt=lt.replace("",h.displayName)),lt}while(1<=M&&0<=P);break}}}finally{$=!1,Error.prepareStackTrace=_}return(_=h?h.displayName||h.name:"")?z(_):""}function B(h,m){switch(h.tag){case 26:case 27:case 5:return z(h.type);case 16:return z("Lazy");case 13:return h.child!==m&&m!==null?z("Suspense Fallback"):z("Suspense");case 19:return z("SuspenseList");case 0:case 15:return se(h.type,!1);case 11:return se(h.type.render,!1);case 1:return se(h.type,!0);case 31:return z("Activity");default:return""}}function Z(h){try{var m="",_=null;do m+=B(h,_),_=h,h=h.return;while(h);return m}catch(M){return` +`+Te[M].replace(" at new "," at ");return h.displayName&<.includes("")&&(lt=lt.replace("",h.displayName)),lt}while(1<=M&&0<=P);break}}}finally{H=!1,Error.prepareStackTrace=_}return(_=h?h.displayName||h.name:"")?z(_):""}function B(h,m){switch(h.tag){case 26:case 27:case 5:return z(h.type);case 16:return z("Lazy");case 13:return h.child!==m&&m!==null?z("Suspense Fallback"):z("Suspense");case 19:return z("SuspenseList");case 0:case 15:return se(h.type,!1);case 11:return se(h.type.render,!1);case 1:return se(h.type,!0);case 31:return z("Activity");default:return""}}function Q(h){try{var m="",_=null;do m+=B(h,_),_=h,h=h.return;while(h);return m}catch(M){return` Error generating stack: `+M.message+` -`+M.stack}}var ce=Object.prototype.hasOwnProperty,Ce=t.unstable_scheduleCallback,_e=t.unstable_cancelCallback,Me=t.unstable_shouldYield,H=t.unstable_requestPaint,R=t.unstable_now,ne=t.unstable_getCurrentPriorityLevel,be=t.unstable_ImmediatePriority,we=t.unstable_UserBlockingPriority,ve=t.unstable_NormalPriority,$e=t.unstable_LowPriority,Ge=t.unstable_IdlePriority,Ke=t.log,ut=t.unstable_setDisableYieldValue,He=null,me=null;function Je(h){if(typeof Ke=="function"&&ut(h),me&&typeof me.setStrictMode=="function")try{me.setStrictMode(He,h)}catch{}}var qe=Math.clz32?Math.clz32:te,Ze=Math.log,ct=Math.LN2;function te(h){return h>>>=0,h===0?32:31-(Ze(h)/ct|0)|0}var Fe=256,xe=262144,ze=4194304;function Pe(h){var m=h&42;if(m!==0)return m;switch(h&-h){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 h&261888;case 262144:case 524288:case 1048576:case 2097152:return h&3932160;case 4194304:case 8388608:case 16777216:case 33554432:return h&62914560;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return h}}function Se(h,m,_){var M=h.pendingLanes;if(M===0)return 0;var P=0,O=h.suspendedLanes,Y=h.pingedLanes;h=h.warmLanes;var de=M&134217727;return de!==0?(M=de&~O,M!==0?P=Pe(M):(Y&=de,Y!==0?P=Pe(Y):_||(_=de&~h,_!==0&&(P=Pe(_))))):(de=M&~O,de!==0?P=Pe(de):Y!==0?P=Pe(Y):_||(_=M&~h,_!==0&&(P=Pe(_)))),P===0?0:m!==0&&m!==P&&(m&O)===0&&(O=P&-P,_=m&-m,O>=_||O===32&&(_&4194048)!==0)?m:P}function Ye(h,m){return(h.pendingLanes&~(h.suspendedLanes&~h.pingedLanes)&m)===0}function dt(h,m){switch(h){case 1:case 2:case 4:case 8:case 64:return m+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 m+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 Tt(){var h=ze;return ze<<=1,(ze&62914560)===0&&(ze=4194304),h}function Et(h){for(var m=[],_=0;31>_;_++)m.push(h);return m}function Zt(h,m){h.pendingLanes|=m,m!==268435456&&(h.suspendedLanes=0,h.pingedLanes=0,h.warmLanes=0)}function Rt(h,m,_,M,P,O){var Y=h.pendingLanes;h.pendingLanes=_,h.suspendedLanes=0,h.pingedLanes=0,h.warmLanes=0,h.expiredLanes&=_,h.entangledLanes&=_,h.errorRecoveryDisabledLanes&=_,h.shellSuspendCounter=0;var de=h.entanglements,Te=h.expirationTimes,nt=h.hiddenUpdates;for(_=Y&~_;0<_;){var lt=31-qe(_),mt=1<"u")return null;try{return h.activeElement||h.body}catch{return h.body}}var Xr=/[\n"\\]/g;function Vn(h){return h.replace(Xr,function(m){return"\\"+m.charCodeAt(0).toString(16)+" "})}function Mo(h,m,_,M,P,O,Y,de){h.name="",Y!=null&&typeof Y!="function"&&typeof Y!="symbol"&&typeof Y!="boolean"?h.type=Y:h.removeAttribute("type"),m!=null?Y==="number"?(m===0&&h.value===""||h.value!=m)&&(h.value=""+wn(m)):h.value!==""+wn(m)&&(h.value=""+wn(m)):Y!=="submit"&&Y!=="reset"||h.removeAttribute("value"),m!=null?Li(h,Y,wn(m)):_!=null?Li(h,Y,wn(_)):M!=null&&h.removeAttribute("value"),P==null&&O!=null&&(h.defaultChecked=!!O),P!=null&&(h.checked=P&&typeof P!="function"&&typeof P!="symbol"),de!=null&&typeof de!="function"&&typeof de!="symbol"&&typeof de!="boolean"?h.name=""+wn(de):h.removeAttribute("name")}function qn(h,m,_,M,P,O,Y,de){if(O!=null&&typeof O!="function"&&typeof O!="symbol"&&typeof O!="boolean"&&(h.type=O),m!=null||_!=null){if(!(O!=="submit"&&O!=="reset"||m!=null)){on(h);return}_=_!=null?""+wn(_):"",m=m!=null?""+wn(m):_,de||m===h.value||(h.value=m),h.defaultValue=m}M=M??P,M=typeof M!="function"&&typeof M!="symbol"&&!!M,h.checked=de?h.checked:!!M,h.defaultChecked=!!M,Y!=null&&typeof Y!="function"&&typeof Y!="symbol"&&typeof Y!="boolean"&&(h.name=Y),on(h)}function Li(h,m,_){m==="number"&&Ur(h.ownerDocument)===h||h.defaultValue===""+_||(h.defaultValue=""+_)}function xi(h,m,_,M){if(h=h.options,m){m={};for(var P=0;P<_.length;P++)m["$"+_[P]]=!0;for(_=0;_"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),V2=!1;if(Hl)try{var Og={};Object.defineProperty(Og,"passive",{get:function(){V2=!0}}),window.addEventListener("test",Og,Og),window.removeEventListener("test",Og,Og)}catch{V2=!1}var su=null,G2=null,_y=null;function rL(){if(_y)return _y;var h,m=G2,_=m.length,M,P="value"in su?su.value:su.textContent,O=P.length;for(h=0;h<_&&m[h]===P[h];h++);var Y=_-h;for(M=1;M<=Y&&m[_-M]===P[O-M];M++);return _y=P.slice(h,1=Fg),cL=" ",uL=!1;function dL(h,m){switch(h){case"keyup":return Bne.indexOf(m.keyCode)!==-1;case"keydown":return m.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function hL(h){return h=h.detail,typeof h=="object"&&"data"in h?h.data:null}var Lf=!1;function $ne(h,m){switch(h){case"compositionend":return hL(m);case"keypress":return m.which!==32?null:(uL=!0,cL);case"textInput":return h=m.data,h===cL&&uL?null:h;default:return null}}function Vne(h,m){if(Lf)return h==="compositionend"||!Y2&&dL(h,m)?(h=rL(),_y=G2=su=null,Lf=!1,h):null;switch(h){case"paste":return null;case"keypress":if(!(m.ctrlKey||m.altKey||m.metaKey)||m.ctrlKey&&m.altKey){if(m.char&&1=m)return{node:_,offset:m-h};h=M}e:{for(;_;){if(_.nextSibling){_=_.nextSibling;break e}_=_.parentNode}_=void 0}_=vL(_)}}function wL(h,m){return h&&m?h===m?!0:h&&h.nodeType===3?!1:m&&m.nodeType===3?wL(h,m.parentNode):"contains"in h?h.contains(m):h.compareDocumentPosition?!!(h.compareDocumentPosition(m)&16):!1:!1}function SL(h){h=h!=null&&h.ownerDocument!=null&&h.ownerDocument.defaultView!=null?h.ownerDocument.defaultView:window;for(var m=Ur(h.document);m instanceof h.HTMLIFrameElement;){try{var _=typeof m.contentWindow.location.href=="string"}catch{_=!1}if(_)h=m.contentWindow;else break;m=Ur(h.document)}return m}function J2(h){var m=h&&h.nodeName&&h.nodeName.toLowerCase();return m&&(m==="input"&&(h.type==="text"||h.type==="search"||h.type==="tel"||h.type==="url"||h.type==="password")||m==="textarea"||h.contentEditable==="true")}var Qne=Hl&&"documentMode"in document&&11>=document.documentMode,If=null,eE=null,Hg=null,tE=!1;function ML(h,m,_){var M=_.window===_?_.document:_.nodeType===9?_:_.ownerDocument;tE||If==null||If!==Ur(M)||(M=If,"selectionStart"in M&&J2(M)?M={start:M.selectionStart,end:M.selectionEnd}:(M=(M.ownerDocument&&M.ownerDocument.defaultView||window).getSelection(),M={anchorNode:M.anchorNode,anchorOffset:M.anchorOffset,focusNode:M.focusNode,focusOffset:M.focusOffset}),Hg&&Bg(Hg,M)||(Hg=M,M=mv(eE,"onSelect"),0>=Y,P-=Y,tl=1<<32-qe(m)+P|_<fn?(Pn=zt,zt=null):Pn=zt.sibling;var Fn=it(Ve,zt,et[fn],ht);if(Fn===null){zt===null&&(zt=Pn);break}h&&zt&&Fn.alternate===null&&m(Ve,zt),Le=O(Fn,Le,fn),In===null?Wt=Fn:In.sibling=Fn,In=Fn,zt=Pn}if(fn===et.length)return _(Ve,zt),jn&&Vl(Ve,fn),Wt;if(zt===null){for(;fnfn?(Pn=zt,zt=null):Pn=zt.sibling;var Tu=it(Ve,zt,Fn.value,ht);if(Tu===null){zt===null&&(zt=Pn);break}h&&zt&&Tu.alternate===null&&m(Ve,zt),Le=O(Tu,Le,fn),In===null?Wt=Tu:In.sibling=Tu,In=Tu,zt=Pn}if(Fn.done)return _(Ve,zt),jn&&Vl(Ve,fn),Wt;if(zt===null){for(;!Fn.done;fn++,Fn=et.next())Fn=mt(Ve,Fn.value,ht),Fn!==null&&(Le=O(Fn,Le,fn),In===null?Wt=Fn:In.sibling=Fn,In=Fn);return jn&&Vl(Ve,fn),Wt}for(zt=M(zt);!Fn.done;fn++,Fn=et.next())Fn=ot(zt,Ve,fn,Fn.value,ht),Fn!==null&&(h&&Fn.alternate!==null&&zt.delete(Fn.key===null?fn:Fn.key),Le=O(Fn,Le,fn),In===null?Wt=Fn:In.sibling=Fn,In=Fn);return h&&zt.forEach(function(bie){return m(Ve,bie)}),jn&&Vl(Ve,fn),Wt}function ir(Ve,Le,et,ht){if(typeof et=="object"&&et!==null&&et.type===y&&et.key===null&&(et=et.props.children),typeof et=="object"&&et!==null){switch(et.$$typeof){case p:e:{for(var Wt=et.key;Le!==null;){if(Le.key===Wt){if(Wt=et.type,Wt===y){if(Le.tag===7){_(Ve,Le.sibling),ht=P(Le,et.props.children),ht.return=Ve,Ve=ht;break e}}else if(Le.elementType===Wt||typeof Wt=="object"&&Wt!==null&&Wt.$$typeof===L&&th(Wt)===Le.type){_(Ve,Le.sibling),ht=P(Le,et.props),Kg(ht,et),ht.return=Ve,Ve=ht;break e}_(Ve,Le);break}else m(Ve,Le);Le=Le.sibling}et.type===y?(ht=Yd(et.props.children,Ve.mode,ht,et.key),ht.return=Ve,Ve=ht):(ht=Py(et.type,et.key,et.props,null,Ve.mode,ht),Kg(ht,et),ht.return=Ve,Ve=ht)}return Y(Ve);case b:e:{for(Wt=et.key;Le!==null;){if(Le.key===Wt)if(Le.tag===4&&Le.stateNode.containerInfo===et.containerInfo&&Le.stateNode.implementation===et.implementation){_(Ve,Le.sibling),ht=P(Le,et.children||[]),ht.return=Ve,Ve=ht;break e}else{_(Ve,Le);break}else m(Ve,Le);Le=Le.sibling}ht=lE(et,Ve.mode,ht),ht.return=Ve,Ve=ht}return Y(Ve);case L:return et=th(et),ir(Ve,Le,et,ht)}if(q(et))return Ft(Ve,Le,et,ht);if(I(et)){if(Wt=I(et),typeof Wt!="function")throw Error(r(150));return et=Wt.call(et),Jt(Ve,Le,et,ht)}if(typeof et.then=="function")return ir(Ve,Le,Fy(et),ht);if(et.$$typeof===w)return ir(Ve,Le,Dy(Ve,et),ht);Uy(Ve,et)}return typeof et=="string"&&et!==""||typeof et=="number"||typeof et=="bigint"?(et=""+et,Le!==null&&Le.tag===6?(_(Ve,Le.sibling),ht=P(Le,et),ht.return=Ve,Ve=ht):(_(Ve,Le),ht=oE(et,Ve.mode,ht),ht.return=Ve,Ve=ht),Y(Ve)):_(Ve,Le)}return function(Ve,Le,et,ht){try{qg=0;var Wt=ir(Ve,Le,et,ht);return Kf=null,Wt}catch(zt){if(zt===qf||zt===Ly)throw zt;var In=gs(29,zt,null,Ve.mode);return In.lanes=ht,In.return=Ve,In}finally{}}}var rh=qL(!0),KL=qL(!1),du=!1;function vE(h){h.updateQueue={baseState:h.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,lanes:0,hiddenCallbacks:null},callbacks:null}}function _E(h,m){h=h.updateQueue,m.updateQueue===h&&(m.updateQueue={baseState:h.baseState,firstBaseUpdate:h.firstBaseUpdate,lastBaseUpdate:h.lastBaseUpdate,shared:h.shared,callbacks:null})}function hu(h){return{lane:h,tag:0,payload:null,callback:null,next:null}}function fu(h,m,_){var M=h.updateQueue;if(M===null)return null;if(M=M.shared,(Bn&2)!==0){var P=M.pending;return P===null?m.next=m:(m.next=P.next,P.next=m),M.pending=m,m=ky(h),PL(h,null,_),m}return Cy(h,M,m,_),ky(h)}function Xg(h,m,_){if(m=m.updateQueue,m!==null&&(m=m.shared,(_&4194048)!==0)){var M=m.lanes;M&=h.pendingLanes,_|=M,m.lanes=_,Ln(h,_)}}function wE(h,m){var _=h.updateQueue,M=h.alternate;if(M!==null&&(M=M.updateQueue,_===M)){var P=null,O=null;if(_=_.firstBaseUpdate,_!==null){do{var Y={lane:_.lane,tag:_.tag,payload:_.payload,callback:null,next:null};O===null?P=O=Y:O=O.next=Y,_=_.next}while(_!==null);O===null?P=O=m:O=O.next=m}else P=O=m;_={baseState:M.baseState,firstBaseUpdate:P,lastBaseUpdate:O,shared:M.shared,callbacks:M.callbacks},h.updateQueue=_;return}h=_.lastBaseUpdate,h===null?_.firstBaseUpdate=m:h.next=m,_.lastBaseUpdate=m}var SE=!1;function Yg(){if(SE){var h=Wf;if(h!==null)throw h}}function Zg(h,m,_,M){SE=!1;var P=h.updateQueue;du=!1;var O=P.firstBaseUpdate,Y=P.lastBaseUpdate,de=P.shared.pending;if(de!==null){P.shared.pending=null;var Te=de,nt=Te.next;Te.next=null,Y===null?O=nt:Y.next=nt,Y=Te;var lt=h.alternate;lt!==null&&(lt=lt.updateQueue,de=lt.lastBaseUpdate,de!==Y&&(de===null?lt.firstBaseUpdate=nt:de.next=nt,lt.lastBaseUpdate=Te))}if(O!==null){var mt=P.baseState;Y=0,lt=nt=Te=null,de=O;do{var it=de.lane&-536870913,ot=it!==de.lane;if(ot?(kn&it)===it:(M&it)===it){it!==0&&it===Gf&&(SE=!0),lt!==null&&(lt=lt.next={lane:0,tag:de.tag,payload:de.payload,callback:null,next:null});e:{var Ft=h,Jt=de;it=m;var ir=_;switch(Jt.tag){case 1:if(Ft=Jt.payload,typeof Ft=="function"){mt=Ft.call(ir,mt,it);break e}mt=Ft;break e;case 3:Ft.flags=Ft.flags&-65537|128;case 0:if(Ft=Jt.payload,it=typeof Ft=="function"?Ft.call(ir,mt,it):Ft,it==null)break e;mt=f({},mt,it);break e;case 2:du=!0}}it=de.callback,it!==null&&(h.flags|=64,ot&&(h.flags|=8192),ot=P.callbacks,ot===null?P.callbacks=[it]:ot.push(it))}else ot={lane:it,tag:de.tag,payload:de.payload,callback:de.callback,next:null},lt===null?(nt=lt=ot,Te=mt):lt=lt.next=ot,Y|=it;if(de=de.next,de===null){if(de=P.shared.pending,de===null)break;ot=de,de=ot.next,ot.next=null,P.lastBaseUpdate=ot,P.shared.pending=null}}while(!0);lt===null&&(Te=mt),P.baseState=Te,P.firstBaseUpdate=nt,P.lastBaseUpdate=lt,O===null&&(P.shared.lanes=0),bu|=Y,h.lanes=Y,h.memoizedState=mt}}function XL(h,m){if(typeof h!="function")throw Error(r(191,h));h.call(m)}function YL(h,m){var _=h.callbacks;if(_!==null)for(h.callbacks=null,h=0;h<_.length;h++)XL(_[h],m)}var Xf=U(null),zy=U(0);function ZL(h,m){h=tc,J(zy,h),J(Xf,m),tc=h|m.baseLanes}function ME(){J(zy,tc),J(Xf,Xf.current)}function EE(){tc=zy.current,G(Xf),G(zy)}var xs=U(null),$s=null;function mu(h){var m=h.alternate;J(Yr,Yr.current&1),J(xs,h),$s===null&&(m===null||Xf.current!==null||m.memoizedState!==null)&&($s=h)}function AE(h){J(Yr,Yr.current),J(xs,h),$s===null&&($s=h)}function QL(h){h.tag===22?(J(Yr,Yr.current),J(xs,h),$s===null&&($s=h)):pu()}function pu(){J(Yr,Yr.current),J(xs,xs.current)}function bs(h){G(xs),$s===h&&($s=null),G(Yr)}var Yr=U(0);function By(h){for(var m=h;m!==null;){if(m.tag===13){var _=m.memoizedState;if(_!==null&&(_=_.dehydrated,_===null||jA(_)||RA(_)))return m}else if(m.tag===19&&(m.memoizedProps.revealOrder==="forwards"||m.memoizedProps.revealOrder==="backwards"||m.memoizedProps.revealOrder==="unstable_legacy-backwards"||m.memoizedProps.revealOrder==="together")){if((m.flags&128)!==0)return m}else if(m.child!==null){m.child.return=m,m=m.child;continue}if(m===h)break;for(;m.sibling===null;){if(m.return===null||m.return===h)return null;m=m.return}m.sibling.return=m.return,m=m.sibling}return null}var ql=0,hn=null,nr=null,ii=null,Hy=!1,Yf=!1,ih=!1,$y=0,Qg=0,Zf=null,lre=0;function zr(){throw Error(r(321))}function NE(h,m){if(m===null)return!1;for(var _=0;_O?O:8;var Y=K.T,de={};K.T=de,HE(h,!1,m,_);try{var Te=P(),nt=K.S;if(nt!==null&&nt(de,Te),Te!==null&&typeof Te=="object"&&typeof Te.then=="function"){var lt=ore(Te,M);ex(h,m,lt,_s(h))}else ex(h,m,M,_s(h))}catch(mt){ex(h,m,{then:function(){},status:"rejected",reason:mt},_s())}finally{V.p=O,Y!==null&&de.types!==null&&(Y.types=de.types),K.T=Y}}function fre(){}function zE(h,m,_,M){if(h.tag!==5)throw Error(r(476));var P=TI(h).queue;NI(h,P,m,Q,_===null?fre:function(){return CI(h),_(M)})}function TI(h){var m=h.memoizedState;if(m!==null)return m;m={memoizedState:Q,baseState:Q,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:Kl,lastRenderedState:Q},next:null};var _={};return m.next={memoizedState:_,baseState:_,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:Kl,lastRenderedState:_},next:null},h.memoizedState=m,h=h.alternate,h!==null&&(h.memoizedState=m),m}function CI(h){var m=TI(h);m.next===null&&(m=h.alternate.memoizedState),ex(h,m.next.queue,{},_s())}function BE(){return Ji(xx)}function kI(){return Zr().memoizedState}function PI(){return Zr().memoizedState}function mre(h){for(var m=h.return;m!==null;){switch(m.tag){case 24:case 3:var _=_s();h=hu(_);var M=fu(m,h,_);M!==null&&(Ya(M,m,_),Xg(M,m,_)),m={cache:gE()},h.payload=m;return}m=m.return}}function pre(h,m,_){var M=_s();_={lane:M,revertLane:0,gesture:null,action:_,hasEagerState:!1,eagerState:null,next:null},Xy(h)?RI(m,_):(_=aE(h,m,_,M),_!==null&&(Ya(_,h,M),DI(_,m,M)))}function jI(h,m,_){var M=_s();ex(h,m,_,M)}function ex(h,m,_,M){var P={lane:M,revertLane:0,gesture:null,action:_,hasEagerState:!1,eagerState:null,next:null};if(Xy(h))RI(m,P);else{var O=h.alternate;if(h.lanes===0&&(O===null||O.lanes===0)&&(O=m.lastRenderedReducer,O!==null))try{var Y=m.lastRenderedState,de=O(Y,_);if(P.hasEagerState=!0,P.eagerState=de,ps(de,Y))return Cy(h,m,P,0),mr===null&&Ty(),!1}catch{}finally{}if(_=aE(h,m,P,M),_!==null)return Ya(_,h,M),DI(_,m,M),!0}return!1}function HE(h,m,_,M){if(M={lane:2,revertLane:vA(),gesture:null,action:M,hasEagerState:!1,eagerState:null,next:null},Xy(h)){if(m)throw Error(r(479))}else m=aE(h,_,M,2),m!==null&&Ya(m,h,2)}function Xy(h){var m=h.alternate;return h===hn||m!==null&&m===hn}function RI(h,m){Yf=Hy=!0;var _=h.pending;_===null?m.next=m:(m.next=_.next,_.next=m),h.pending=m}function DI(h,m,_){if((_&4194048)!==0){var M=m.lanes;M&=h.pendingLanes,_|=M,m.lanes=_,Ln(h,_)}}var tx={readContext:Ji,use:Gy,useCallback:zr,useContext:zr,useEffect:zr,useImperativeHandle:zr,useLayoutEffect:zr,useInsertionEffect:zr,useMemo:zr,useReducer:zr,useRef:zr,useState:zr,useDebugValue:zr,useDeferredValue:zr,useTransition:zr,useSyncExternalStore:zr,useId:zr,useHostTransitionStatus:zr,useFormState:zr,useActionState:zr,useOptimistic:zr,useMemoCache:zr,useCacheRefresh:zr};tx.useEffectEvent=zr;var OI={readContext:Ji,use:Gy,useCallback:function(h,m){return ka().memoizedState=[h,m===void 0?null:m],h},useContext:Ji,useEffect:bI,useImperativeHandle:function(h,m,_){_=_!=null?_.concat([h]):null,qy(4194308,4,wI.bind(null,m,h),_)},useLayoutEffect:function(h,m){return qy(4194308,4,h,m)},useInsertionEffect:function(h,m){qy(4,2,h,m)},useMemo:function(h,m){var _=ka();m=m===void 0?null:m;var M=h();if(ih){Je(!0);try{h()}finally{Je(!1)}}return _.memoizedState=[M,m],M},useReducer:function(h,m,_){var M=ka();if(_!==void 0){var P=_(m);if(ih){Je(!0);try{_(m)}finally{Je(!1)}}}else P=m;return M.memoizedState=M.baseState=P,h={pending:null,lanes:0,dispatch:null,lastRenderedReducer:h,lastRenderedState:P},M.queue=h,h=h.dispatch=pre.bind(null,hn,h),[M.memoizedState,h]},useRef:function(h){var m=ka();return h={current:h},m.memoizedState=h},useState:function(h){h=OE(h);var m=h.queue,_=jI.bind(null,hn,m);return m.dispatch=_,[h.memoizedState,_]},useDebugValue:FE,useDeferredValue:function(h,m){var _=ka();return UE(_,h,m)},useTransition:function(){var h=OE(!1);return h=NI.bind(null,hn,h.queue,!0,!1),ka().memoizedState=h,[!1,h]},useSyncExternalStore:function(h,m,_){var M=hn,P=ka();if(jn){if(_===void 0)throw Error(r(407));_=_()}else{if(_=m(),mr===null)throw Error(r(349));(kn&127)!==0||nI(M,m,_)}P.memoizedState=_;var O={value:_,getSnapshot:m};return P.queue=O,bI(iI.bind(null,M,O,h),[h]),M.flags|=2048,Qf(9,{destroy:void 0},rI.bind(null,M,O,_,m),null),_},useId:function(){var h=ka(),m=mr.identifierPrefix;if(jn){var _=nl,M=tl;_=(M&~(1<<32-qe(M)-1)).toString(32)+_,m="_"+m+"R_"+_,_=$y++,0<_&&(m+="H"+_.toString(32)),m+="_"}else _=lre++,m="_"+m+"r_"+_.toString(32)+"_";return h.memoizedState=m},useHostTransitionStatus:BE,useFormState:fI,useActionState:fI,useOptimistic:function(h){var m=ka();m.memoizedState=m.baseState=h;var _={pending:null,lanes:0,dispatch:null,lastRenderedReducer:null,lastRenderedState:null};return m.queue=_,m=HE.bind(null,hn,!0,_),_.dispatch=m,[h,m]},useMemoCache:jE,useCacheRefresh:function(){return ka().memoizedState=mre.bind(null,hn)},useEffectEvent:function(h){var m=ka(),_={impl:h};return m.memoizedState=_,function(){if((Bn&2)!==0)throw Error(r(440));return _.impl.apply(void 0,arguments)}}},$E={readContext:Ji,use:Gy,useCallback:MI,useContext:Ji,useEffect:IE,useImperativeHandle:SI,useInsertionEffect:vI,useLayoutEffect:_I,useMemo:EI,useReducer:Wy,useRef:xI,useState:function(){return Wy(Kl)},useDebugValue:FE,useDeferredValue:function(h,m){var _=Zr();return AI(_,nr.memoizedState,h,m)},useTransition:function(){var h=Wy(Kl)[0],m=Zr().memoizedState;return[typeof h=="boolean"?h:Jg(h),m]},useSyncExternalStore:tI,useId:kI,useHostTransitionStatus:BE,useFormState:mI,useActionState:mI,useOptimistic:function(h,m){var _=Zr();return oI(_,nr,h,m)},useMemoCache:jE,useCacheRefresh:PI};$E.useEffectEvent=yI;var LI={readContext:Ji,use:Gy,useCallback:MI,useContext:Ji,useEffect:IE,useImperativeHandle:SI,useInsertionEffect:vI,useLayoutEffect:_I,useMemo:EI,useReducer:DE,useRef:xI,useState:function(){return DE(Kl)},useDebugValue:FE,useDeferredValue:function(h,m){var _=Zr();return nr===null?UE(_,h,m):AI(_,nr.memoizedState,h,m)},useTransition:function(){var h=DE(Kl)[0],m=Zr().memoizedState;return[typeof h=="boolean"?h:Jg(h),m]},useSyncExternalStore:tI,useId:kI,useHostTransitionStatus:BE,useFormState:gI,useActionState:gI,useOptimistic:function(h,m){var _=Zr();return nr!==null?oI(_,nr,h,m):(_.baseState=h,[h,_.queue.dispatch])},useMemoCache:jE,useCacheRefresh:PI};LI.useEffectEvent=yI;function VE(h,m,_,M){m=h.memoizedState,_=_(M,m),_=_==null?m:f({},m,_),h.memoizedState=_,h.lanes===0&&(h.updateQueue.baseState=_)}var GE={enqueueSetState:function(h,m,_){h=h._reactInternals;var M=_s(),P=hu(M);P.payload=m,_!=null&&(P.callback=_),m=fu(h,P,M),m!==null&&(Ya(m,h,M),Xg(m,h,M))},enqueueReplaceState:function(h,m,_){h=h._reactInternals;var M=_s(),P=hu(M);P.tag=1,P.payload=m,_!=null&&(P.callback=_),m=fu(h,P,M),m!==null&&(Ya(m,h,M),Xg(m,h,M))},enqueueForceUpdate:function(h,m){h=h._reactInternals;var _=_s(),M=hu(_);M.tag=2,m!=null&&(M.callback=m),m=fu(h,M,_),m!==null&&(Ya(m,h,_),Xg(m,h,_))}};function II(h,m,_,M,P,O,Y){return h=h.stateNode,typeof h.shouldComponentUpdate=="function"?h.shouldComponentUpdate(M,O,Y):m.prototype&&m.prototype.isPureReactComponent?!Bg(_,M)||!Bg(P,O):!0}function FI(h,m,_,M){h=m.state,typeof m.componentWillReceiveProps=="function"&&m.componentWillReceiveProps(_,M),typeof m.UNSAFE_componentWillReceiveProps=="function"&&m.UNSAFE_componentWillReceiveProps(_,M),m.state!==h&&GE.enqueueReplaceState(m,m.state,null)}function ah(h,m){var _=m;if("ref"in m){_={};for(var M in m)M!=="ref"&&(_[M]=m[M])}if(h=h.defaultProps){_===m&&(_=f({},_));for(var P in h)_[P]===void 0&&(_[P]=h[P])}return _}function UI(h){Ny(h)}function zI(h){console.error(h)}function BI(h){Ny(h)}function Yy(h,m){try{var _=h.onUncaughtError;_(m.value,{componentStack:m.stack})}catch(M){setTimeout(function(){throw M})}}function HI(h,m,_){try{var M=h.onCaughtError;M(_.value,{componentStack:_.stack,errorBoundary:m.tag===1?m.stateNode:null})}catch(P){setTimeout(function(){throw P})}}function WE(h,m,_){return _=hu(_),_.tag=3,_.payload={element:null},_.callback=function(){Yy(h,m)},_}function $I(h){return h=hu(h),h.tag=3,h}function VI(h,m,_,M){var P=_.type.getDerivedStateFromError;if(typeof P=="function"){var O=M.value;h.payload=function(){return P(O)},h.callback=function(){HI(m,_,M)}}var Y=_.stateNode;Y!==null&&typeof Y.componentDidCatch=="function"&&(h.callback=function(){HI(m,_,M),typeof P!="function"&&(yu===null?yu=new Set([this]):yu.add(this));var de=M.stack;this.componentDidCatch(M.value,{componentStack:de!==null?de:""})})}function gre(h,m,_,M,P){if(_.flags|=32768,M!==null&&typeof M=="object"&&typeof M.then=="function"){if(m=_.alternate,m!==null&&Vf(m,_,P,!0),_=xs.current,_!==null){switch(_.tag){case 31:case 13:return $s===null?lv():_.alternate===null&&Br===0&&(Br=3),_.flags&=-257,_.flags|=65536,_.lanes=P,M===Iy?_.flags|=16384:(m=_.updateQueue,m===null?_.updateQueue=new Set([M]):m.add(M),xA(h,M,P)),!1;case 22:return _.flags|=65536,M===Iy?_.flags|=16384:(m=_.updateQueue,m===null?(m={transitions:null,markerInstances:null,retryQueue:new Set([M])},_.updateQueue=m):(_=m.retryQueue,_===null?m.retryQueue=new Set([M]):_.add(M)),xA(h,M,P)),!1}throw Error(r(435,_.tag))}return xA(h,M,P),lv(),!1}if(jn)return m=xs.current,m!==null?((m.flags&65536)===0&&(m.flags|=256),m.flags|=65536,m.lanes=P,M!==dE&&(h=Error(r(422),{cause:M}),Vg(Us(h,_)))):(M!==dE&&(m=Error(r(423),{cause:M}),Vg(Us(m,_))),h=h.current.alternate,h.flags|=65536,P&=-P,h.lanes|=P,M=Us(M,_),P=WE(h.stateNode,M,P),wE(h,P),Br!==4&&(Br=2)),!1;var O=Error(r(520),{cause:M});if(O=Us(O,_),cx===null?cx=[O]:cx.push(O),Br!==4&&(Br=2),m===null)return!0;M=Us(M,_),_=m;do{switch(_.tag){case 3:return _.flags|=65536,h=P&-P,_.lanes|=h,h=WE(_.stateNode,M,h),wE(_,h),!1;case 1:if(m=_.type,O=_.stateNode,(_.flags&128)===0&&(typeof m.getDerivedStateFromError=="function"||O!==null&&typeof O.componentDidCatch=="function"&&(yu===null||!yu.has(O))))return _.flags|=65536,P&=-P,_.lanes|=P,P=$I(P),VI(P,h,_,M),wE(_,P),!1}_=_.return}while(_!==null);return!1}var qE=Error(r(461)),ai=!1;function ea(h,m,_,M){m.child=h===null?KL(m,null,_,M):rh(m,h.child,_,M)}function GI(h,m,_,M,P){_=_.render;var O=m.ref;if("ref"in M){var Y={};for(var de in M)de!=="ref"&&(Y[de]=M[de])}else Y=M;return Jd(m),M=TE(h,m,_,Y,O,P),de=CE(),h!==null&&!ai?(kE(h,m,P),Xl(h,m,P)):(jn&&de&&cE(m),m.flags|=1,ea(h,m,M,P),m.child)}function WI(h,m,_,M,P){if(h===null){var O=_.type;return typeof O=="function"&&!sE(O)&&O.defaultProps===void 0&&_.compare===null?(m.tag=15,m.type=O,qI(h,m,O,M,P)):(h=Py(_.type,null,M,m,m.mode,P),h.ref=m.ref,h.return=m,m.child=h)}if(O=h.child,!tA(h,P)){var Y=O.memoizedProps;if(_=_.compare,_=_!==null?_:Bg,_(Y,M)&&h.ref===m.ref)return Xl(h,m,P)}return m.flags|=1,h=$l(O,M),h.ref=m.ref,h.return=m,m.child=h}function qI(h,m,_,M,P){if(h!==null){var O=h.memoizedProps;if(Bg(O,M)&&h.ref===m.ref)if(ai=!1,m.pendingProps=M=O,tA(h,P))(h.flags&131072)!==0&&(ai=!0);else return m.lanes=h.lanes,Xl(h,m,P)}return KE(h,m,_,M,P)}function KI(h,m,_,M){var P=M.children,O=h!==null?h.memoizedState:null;if(h===null&&m.stateNode===null&&(m.stateNode={_visibility:1,_pendingMarkers:null,_retryCache:null,_transitions:null}),M.mode==="hidden"){if((m.flags&128)!==0){if(O=O!==null?O.baseLanes|_:_,h!==null){for(M=m.child=h.child,P=0;M!==null;)P=P|M.lanes|M.childLanes,M=M.sibling;M=P&~O}else M=0,m.child=null;return XI(h,m,O,_,M)}if((_&536870912)!==0)m.memoizedState={baseLanes:0,cachePool:null},h!==null&&Oy(m,O!==null?O.cachePool:null),O!==null?ZL(m,O):ME(),QL(m);else return M=m.lanes=536870912,XI(h,m,O!==null?O.baseLanes|_:_,_,M)}else O!==null?(Oy(m,O.cachePool),ZL(m,O),pu(),m.memoizedState=null):(h!==null&&Oy(m,null),ME(),pu());return ea(h,m,P,_),m.child}function nx(h,m){return h!==null&&h.tag===22||m.stateNode!==null||(m.stateNode={_visibility:1,_pendingMarkers:null,_retryCache:null,_transitions:null}),m.sibling}function XI(h,m,_,M,P){var O=bE();return O=O===null?null:{parent:ri._currentValue,pool:O},m.memoizedState={baseLanes:_,cachePool:O},h!==null&&Oy(m,null),ME(),QL(m),h!==null&&Vf(h,m,M,!0),m.childLanes=P,null}function Zy(h,m){return m=Jy({mode:m.mode,children:m.children},h.mode),m.ref=h.ref,h.child=m,m.return=h,m}function YI(h,m,_){return rh(m,h.child,null,_),h=Zy(m,m.pendingProps),h.flags|=2,bs(m),m.memoizedState=null,h}function xre(h,m,_){var M=m.pendingProps,P=(m.flags&128)!==0;if(m.flags&=-129,h===null){if(jn){if(M.mode==="hidden")return h=Zy(m,M),m.lanes=536870912,nx(null,h);if(AE(m),(h=_r)?(h=lF(h,Hs),h=h!==null&&h.data==="&"?h:null,h!==null&&(m.memoizedState={dehydrated:h,treeContext:ou!==null?{id:tl,overflow:nl}:null,retryLane:536870912,hydrationErrors:null},_=RL(h),_.return=m,m.child=_,Qi=m,_r=null)):h=null,h===null)throw cu(m);return m.lanes=536870912,null}return Zy(m,M)}var O=h.memoizedState;if(O!==null){var Y=O.dehydrated;if(AE(m),P)if(m.flags&256)m.flags&=-257,m=YI(h,m,_);else if(m.memoizedState!==null)m.child=h.child,m.flags|=128,m=null;else throw Error(r(558));else if(ai||Vf(h,m,_,!1),P=(_&h.childLanes)!==0,ai||P){if(M=mr,M!==null&&(Y=$n(M,_),Y!==0&&Y!==O.retryLane))throw O.retryLane=Y,Xd(h,Y),Ya(M,h,Y),qE;lv(),m=YI(h,m,_)}else h=O.treeContext,_r=Vs(Y.nextSibling),Qi=m,jn=!0,lu=null,Hs=!1,h!==null&&LL(m,h),m=Zy(m,M),m.flags|=4096;return m}return h=$l(h.child,{mode:M.mode,children:M.children}),h.ref=m.ref,m.child=h,h.return=m,h}function Qy(h,m){var _=m.ref;if(_===null)h!==null&&h.ref!==null&&(m.flags|=4194816);else{if(typeof _!="function"&&typeof _!="object")throw Error(r(284));(h===null||h.ref!==_)&&(m.flags|=4194816)}}function KE(h,m,_,M,P){return Jd(m),_=TE(h,m,_,M,void 0,P),M=CE(),h!==null&&!ai?(kE(h,m,P),Xl(h,m,P)):(jn&&M&&cE(m),m.flags|=1,ea(h,m,_,P),m.child)}function ZI(h,m,_,M,P,O){return Jd(m),m.updateQueue=null,_=eI(m,M,_,P),JL(h),M=CE(),h!==null&&!ai?(kE(h,m,O),Xl(h,m,O)):(jn&&M&&cE(m),m.flags|=1,ea(h,m,_,O),m.child)}function QI(h,m,_,M,P){if(Jd(m),m.stateNode===null){var O=zf,Y=_.contextType;typeof Y=="object"&&Y!==null&&(O=Ji(Y)),O=new _(M,O),m.memoizedState=O.state!==null&&O.state!==void 0?O.state:null,O.updater=GE,m.stateNode=O,O._reactInternals=m,O=m.stateNode,O.props=M,O.state=m.memoizedState,O.refs={},vE(m),Y=_.contextType,O.context=typeof Y=="object"&&Y!==null?Ji(Y):zf,O.state=m.memoizedState,Y=_.getDerivedStateFromProps,typeof Y=="function"&&(VE(m,_,Y,M),O.state=m.memoizedState),typeof _.getDerivedStateFromProps=="function"||typeof O.getSnapshotBeforeUpdate=="function"||typeof O.UNSAFE_componentWillMount!="function"&&typeof O.componentWillMount!="function"||(Y=O.state,typeof O.componentWillMount=="function"&&O.componentWillMount(),typeof O.UNSAFE_componentWillMount=="function"&&O.UNSAFE_componentWillMount(),Y!==O.state&&GE.enqueueReplaceState(O,O.state,null),Zg(m,M,O,P),Yg(),O.state=m.memoizedState),typeof O.componentDidMount=="function"&&(m.flags|=4194308),M=!0}else if(h===null){O=m.stateNode;var de=m.memoizedProps,Te=ah(_,de);O.props=Te;var nt=O.context,lt=_.contextType;Y=zf,typeof lt=="object"&<!==null&&(Y=Ji(lt));var mt=_.getDerivedStateFromProps;lt=typeof mt=="function"||typeof O.getSnapshotBeforeUpdate=="function",de=m.pendingProps!==de,lt||typeof O.UNSAFE_componentWillReceiveProps!="function"&&typeof O.componentWillReceiveProps!="function"||(de||nt!==Y)&&FI(m,O,M,Y),du=!1;var it=m.memoizedState;O.state=it,Zg(m,M,O,P),Yg(),nt=m.memoizedState,de||it!==nt||du?(typeof mt=="function"&&(VE(m,_,mt,M),nt=m.memoizedState),(Te=du||II(m,_,Te,M,it,nt,Y))?(lt||typeof O.UNSAFE_componentWillMount!="function"&&typeof O.componentWillMount!="function"||(typeof O.componentWillMount=="function"&&O.componentWillMount(),typeof O.UNSAFE_componentWillMount=="function"&&O.UNSAFE_componentWillMount()),typeof O.componentDidMount=="function"&&(m.flags|=4194308)):(typeof O.componentDidMount=="function"&&(m.flags|=4194308),m.memoizedProps=M,m.memoizedState=nt),O.props=M,O.state=nt,O.context=Y,M=Te):(typeof O.componentDidMount=="function"&&(m.flags|=4194308),M=!1)}else{O=m.stateNode,_E(h,m),Y=m.memoizedProps,lt=ah(_,Y),O.props=lt,mt=m.pendingProps,it=O.context,nt=_.contextType,Te=zf,typeof nt=="object"&&nt!==null&&(Te=Ji(nt)),de=_.getDerivedStateFromProps,(nt=typeof de=="function"||typeof O.getSnapshotBeforeUpdate=="function")||typeof O.UNSAFE_componentWillReceiveProps!="function"&&typeof O.componentWillReceiveProps!="function"||(Y!==mt||it!==Te)&&FI(m,O,M,Te),du=!1,it=m.memoizedState,O.state=it,Zg(m,M,O,P),Yg();var ot=m.memoizedState;Y!==mt||it!==ot||du||h!==null&&h.dependencies!==null&&Ry(h.dependencies)?(typeof de=="function"&&(VE(m,_,de,M),ot=m.memoizedState),(lt=du||II(m,_,lt,M,it,ot,Te)||h!==null&&h.dependencies!==null&&Ry(h.dependencies))?(nt||typeof O.UNSAFE_componentWillUpdate!="function"&&typeof O.componentWillUpdate!="function"||(typeof O.componentWillUpdate=="function"&&O.componentWillUpdate(M,ot,Te),typeof O.UNSAFE_componentWillUpdate=="function"&&O.UNSAFE_componentWillUpdate(M,ot,Te)),typeof O.componentDidUpdate=="function"&&(m.flags|=4),typeof O.getSnapshotBeforeUpdate=="function"&&(m.flags|=1024)):(typeof O.componentDidUpdate!="function"||Y===h.memoizedProps&&it===h.memoizedState||(m.flags|=4),typeof O.getSnapshotBeforeUpdate!="function"||Y===h.memoizedProps&&it===h.memoizedState||(m.flags|=1024),m.memoizedProps=M,m.memoizedState=ot),O.props=M,O.state=ot,O.context=Te,M=lt):(typeof O.componentDidUpdate!="function"||Y===h.memoizedProps&&it===h.memoizedState||(m.flags|=4),typeof O.getSnapshotBeforeUpdate!="function"||Y===h.memoizedProps&&it===h.memoizedState||(m.flags|=1024),M=!1)}return O=M,Qy(h,m),M=(m.flags&128)!==0,O||M?(O=m.stateNode,_=M&&typeof _.getDerivedStateFromError!="function"?null:O.render(),m.flags|=1,h!==null&&M?(m.child=rh(m,h.child,null,P),m.child=rh(m,null,_,P)):ea(h,m,_,P),m.memoizedState=O.state,h=m.child):h=Xl(h,m,P),h}function JI(h,m,_,M){return Zd(),m.flags|=256,ea(h,m,_,M),m.child}var XE={dehydrated:null,treeContext:null,retryLane:0,hydrationErrors:null};function YE(h){return{baseLanes:h,cachePool:HL()}}function ZE(h,m,_){return h=h!==null?h.childLanes&~_:0,m&&(h|=vs),h}function e5(h,m,_){var M=m.pendingProps,P=!1,O=(m.flags&128)!==0,Y;if((Y=O)||(Y=h!==null&&h.memoizedState===null?!1:(Yr.current&2)!==0),Y&&(P=!0,m.flags&=-129),Y=(m.flags&32)!==0,m.flags&=-33,h===null){if(jn){if(P?mu(m):pu(),(h=_r)?(h=lF(h,Hs),h=h!==null&&h.data!=="&"?h:null,h!==null&&(m.memoizedState={dehydrated:h,treeContext:ou!==null?{id:tl,overflow:nl}:null,retryLane:536870912,hydrationErrors:null},_=RL(h),_.return=m,m.child=_,Qi=m,_r=null)):h=null,h===null)throw cu(m);return RA(h)?m.lanes=32:m.lanes=536870912,null}var de=M.children;return M=M.fallback,P?(pu(),P=m.mode,de=Jy({mode:"hidden",children:de},P),M=Yd(M,P,_,null),de.return=m,M.return=m,de.sibling=M,m.child=de,M=m.child,M.memoizedState=YE(_),M.childLanes=ZE(h,Y,_),m.memoizedState=XE,nx(null,M)):(mu(m),QE(m,de))}var Te=h.memoizedState;if(Te!==null&&(de=Te.dehydrated,de!==null)){if(O)m.flags&256?(mu(m),m.flags&=-257,m=JE(h,m,_)):m.memoizedState!==null?(pu(),m.child=h.child,m.flags|=128,m=null):(pu(),de=M.fallback,P=m.mode,M=Jy({mode:"visible",children:M.children},P),de=Yd(de,P,_,null),de.flags|=2,M.return=m,de.return=m,M.sibling=de,m.child=M,rh(m,h.child,null,_),M=m.child,M.memoizedState=YE(_),M.childLanes=ZE(h,Y,_),m.memoizedState=XE,m=nx(null,M));else if(mu(m),RA(de)){if(Y=de.nextSibling&&de.nextSibling.dataset,Y)var nt=Y.dgst;Y=nt,M=Error(r(419)),M.stack="",M.digest=Y,Vg({value:M,source:null,stack:null}),m=JE(h,m,_)}else if(ai||Vf(h,m,_,!1),Y=(_&h.childLanes)!==0,ai||Y){if(Y=mr,Y!==null&&(M=$n(Y,_),M!==0&&M!==Te.retryLane))throw Te.retryLane=M,Xd(h,M),Ya(Y,h,M),qE;jA(de)||lv(),m=JE(h,m,_)}else jA(de)?(m.flags|=192,m.child=h.child,m=null):(h=Te.treeContext,_r=Vs(de.nextSibling),Qi=m,jn=!0,lu=null,Hs=!1,h!==null&&LL(m,h),m=QE(m,M.children),m.flags|=4096);return m}return P?(pu(),de=M.fallback,P=m.mode,Te=h.child,nt=Te.sibling,M=$l(Te,{mode:"hidden",children:M.children}),M.subtreeFlags=Te.subtreeFlags&65011712,nt!==null?de=$l(nt,de):(de=Yd(de,P,_,null),de.flags|=2),de.return=m,M.return=m,M.sibling=de,m.child=M,nx(null,M),M=m.child,de=h.child.memoizedState,de===null?de=YE(_):(P=de.cachePool,P!==null?(Te=ri._currentValue,P=P.parent!==Te?{parent:Te,pool:Te}:P):P=HL(),de={baseLanes:de.baseLanes|_,cachePool:P}),M.memoizedState=de,M.childLanes=ZE(h,Y,_),m.memoizedState=XE,nx(h.child,M)):(mu(m),_=h.child,h=_.sibling,_=$l(_,{mode:"visible",children:M.children}),_.return=m,_.sibling=null,h!==null&&(Y=m.deletions,Y===null?(m.deletions=[h],m.flags|=16):Y.push(h)),m.child=_,m.memoizedState=null,_)}function QE(h,m){return m=Jy({mode:"visible",children:m},h.mode),m.return=h,h.child=m}function Jy(h,m){return h=gs(22,h,null,m),h.lanes=0,h}function JE(h,m,_){return rh(m,h.child,null,_),h=QE(m,m.pendingProps.children),h.flags|=2,m.memoizedState=null,h}function t5(h,m,_){h.lanes|=m;var M=h.alternate;M!==null&&(M.lanes|=m),mE(h.return,m,_)}function eA(h,m,_,M,P,O){var Y=h.memoizedState;Y===null?h.memoizedState={isBackwards:m,rendering:null,renderingStartTime:0,last:M,tail:_,tailMode:P,treeForkCount:O}:(Y.isBackwards=m,Y.rendering=null,Y.renderingStartTime=0,Y.last=M,Y.tail=_,Y.tailMode=P,Y.treeForkCount=O)}function n5(h,m,_){var M=m.pendingProps,P=M.revealOrder,O=M.tail;M=M.children;var Y=Yr.current,de=(Y&2)!==0;if(de?(Y=Y&1|2,m.flags|=128):Y&=1,J(Yr,Y),ea(h,m,M,_),M=jn?$g:0,!de&&h!==null&&(h.flags&128)!==0)e:for(h=m.child;h!==null;){if(h.tag===13)h.memoizedState!==null&&t5(h,_,m);else if(h.tag===19)t5(h,_,m);else if(h.child!==null){h.child.return=h,h=h.child;continue}if(h===m)break e;for(;h.sibling===null;){if(h.return===null||h.return===m)break e;h=h.return}h.sibling.return=h.return,h=h.sibling}switch(P){case"forwards":for(_=m.child,P=null;_!==null;)h=_.alternate,h!==null&&By(h)===null&&(P=_),_=_.sibling;_=P,_===null?(P=m.child,m.child=null):(P=_.sibling,_.sibling=null),eA(m,!1,P,_,O,M);break;case"backwards":case"unstable_legacy-backwards":for(_=null,P=m.child,m.child=null;P!==null;){if(h=P.alternate,h!==null&&By(h)===null){m.child=P;break}h=P.sibling,P.sibling=_,_=P,P=h}eA(m,!0,_,null,O,M);break;case"together":eA(m,!1,null,null,void 0,M);break;default:m.memoizedState=null}return m.child}function Xl(h,m,_){if(h!==null&&(m.dependencies=h.dependencies),bu|=m.lanes,(_&m.childLanes)===0)if(h!==null){if(Vf(h,m,_,!1),(_&m.childLanes)===0)return null}else return null;if(h!==null&&m.child!==h.child)throw Error(r(153));if(m.child!==null){for(h=m.child,_=$l(h,h.pendingProps),m.child=_,_.return=m;h.sibling!==null;)h=h.sibling,_=_.sibling=$l(h,h.pendingProps),_.return=m;_.sibling=null}return m.child}function tA(h,m){return(h.lanes&m)!==0?!0:(h=h.dependencies,!!(h!==null&&Ry(h)))}function bre(h,m,_){switch(m.tag){case 3:le(m,m.stateNode.containerInfo),uu(m,ri,h.memoizedState.cache),Zd();break;case 27:case 5:ge(m);break;case 4:le(m,m.stateNode.containerInfo);break;case 10:uu(m,m.type,m.memoizedProps.value);break;case 31:if(m.memoizedState!==null)return m.flags|=128,AE(m),null;break;case 13:var M=m.memoizedState;if(M!==null)return M.dehydrated!==null?(mu(m),m.flags|=128,null):(_&m.child.childLanes)!==0?e5(h,m,_):(mu(m),h=Xl(h,m,_),h!==null?h.sibling:null);mu(m);break;case 19:var P=(h.flags&128)!==0;if(M=(_&m.childLanes)!==0,M||(Vf(h,m,_,!1),M=(_&m.childLanes)!==0),P){if(M)return n5(h,m,_);m.flags|=128}if(P=m.memoizedState,P!==null&&(P.rendering=null,P.tail=null,P.lastEffect=null),J(Yr,Yr.current),M)break;return null;case 22:return m.lanes=0,KI(h,m,_,m.pendingProps);case 24:uu(m,ri,h.memoizedState.cache)}return Xl(h,m,_)}function r5(h,m,_){if(h!==null)if(h.memoizedProps!==m.pendingProps)ai=!0;else{if(!tA(h,_)&&(m.flags&128)===0)return ai=!1,bre(h,m,_);ai=(h.flags&131072)!==0}else ai=!1,jn&&(m.flags&1048576)!==0&&OL(m,$g,m.index);switch(m.lanes=0,m.tag){case 16:e:{var M=m.pendingProps;if(h=th(m.elementType),m.type=h,typeof h=="function")sE(h)?(M=ah(h,M),m.tag=1,m=QI(null,m,h,M,_)):(m.tag=0,m=KE(null,m,h,M,_));else{if(h!=null){var P=h.$$typeof;if(P===N){m.tag=11,m=GI(null,m,h,M,_);break e}else if(P===T){m.tag=14,m=WI(null,m,h,M,_);break e}}throw m=D(h)||h,Error(r(306,m,""))}}return m;case 0:return KE(h,m,m.type,m.pendingProps,_);case 1:return M=m.type,P=ah(M,m.pendingProps),QI(h,m,M,P,_);case 3:e:{if(le(m,m.stateNode.containerInfo),h===null)throw Error(r(387));M=m.pendingProps;var O=m.memoizedState;P=O.element,_E(h,m),Zg(m,M,null,_);var Y=m.memoizedState;if(M=Y.cache,uu(m,ri,M),M!==O.cache&&pE(m,[ri],_,!0),Yg(),M=Y.element,O.isDehydrated)if(O={element:M,isDehydrated:!1,cache:Y.cache},m.updateQueue.baseState=O,m.memoizedState=O,m.flags&256){m=JI(h,m,M,_);break e}else if(M!==P){P=Us(Error(r(424)),m),Vg(P),m=JI(h,m,M,_);break e}else{switch(h=m.stateNode.containerInfo,h.nodeType){case 9:h=h.body;break;default:h=h.nodeName==="HTML"?h.ownerDocument.body:h}for(_r=Vs(h.firstChild),Qi=m,jn=!0,lu=null,Hs=!0,_=KL(m,null,M,_),m.child=_;_;)_.flags=_.flags&-3|4096,_=_.sibling}else{if(Zd(),M===P){m=Xl(h,m,_);break e}ea(h,m,M,_)}m=m.child}return m;case 26:return Qy(h,m),h===null?(_=mF(m.type,null,m.pendingProps,null))?m.memoizedState=_:jn||(_=m.type,h=m.pendingProps,M=pv(he.current).createElement(_),M[Kt]=m,M[dn]=h,ta(M,_,h),Oe(M),m.stateNode=M):m.memoizedState=mF(m.type,h.memoizedProps,m.pendingProps,h.memoizedState),null;case 27:return ge(m),h===null&&jn&&(M=m.stateNode=dF(m.type,m.pendingProps,he.current),Qi=m,Hs=!0,P=_r,Su(m.type)?(DA=P,_r=Vs(M.firstChild)):_r=P),ea(h,m,m.pendingProps.children,_),Qy(h,m),h===null&&(m.flags|=4194304),m.child;case 5:return h===null&&jn&&((P=M=_r)&&(M=Kre(M,m.type,m.pendingProps,Hs),M!==null?(m.stateNode=M,Qi=m,_r=Vs(M.firstChild),Hs=!1,P=!0):P=!1),P||cu(m)),ge(m),P=m.type,O=m.pendingProps,Y=h!==null?h.memoizedProps:null,M=O.children,CA(P,O)?M=null:Y!==null&&CA(P,Y)&&(m.flags|=32),m.memoizedState!==null&&(P=TE(h,m,cre,null,null,_),xx._currentValue=P),Qy(h,m),ea(h,m,M,_),m.child;case 6:return h===null&&jn&&((h=_=_r)&&(_=Xre(_,m.pendingProps,Hs),_!==null?(m.stateNode=_,Qi=m,_r=null,h=!0):h=!1),h||cu(m)),null;case 13:return e5(h,m,_);case 4:return le(m,m.stateNode.containerInfo),M=m.pendingProps,h===null?m.child=rh(m,null,M,_):ea(h,m,M,_),m.child;case 11:return GI(h,m,m.type,m.pendingProps,_);case 7:return ea(h,m,m.pendingProps,_),m.child;case 8:return ea(h,m,m.pendingProps.children,_),m.child;case 12:return ea(h,m,m.pendingProps.children,_),m.child;case 10:return M=m.pendingProps,uu(m,m.type,M.value),ea(h,m,M.children,_),m.child;case 9:return P=m.type._context,M=m.pendingProps.children,Jd(m),P=Ji(P),M=M(P),m.flags|=1,ea(h,m,M,_),m.child;case 14:return WI(h,m,m.type,m.pendingProps,_);case 15:return qI(h,m,m.type,m.pendingProps,_);case 19:return n5(h,m,_);case 31:return xre(h,m,_);case 22:return KI(h,m,_,m.pendingProps);case 24:return Jd(m),M=Ji(ri),h===null?(P=bE(),P===null&&(P=mr,O=gE(),P.pooledCache=O,O.refCount++,O!==null&&(P.pooledCacheLanes|=_),P=O),m.memoizedState={parent:M,cache:P},vE(m),uu(m,ri,P)):((h.lanes&_)!==0&&(_E(h,m),Zg(m,null,null,_),Yg()),P=h.memoizedState,O=m.memoizedState,P.parent!==M?(P={parent:M,cache:M},m.memoizedState=P,m.lanes===0&&(m.memoizedState=m.updateQueue.baseState=P),uu(m,ri,M)):(M=O.cache,uu(m,ri,M),M!==P.cache&&pE(m,[ri],_,!0))),ea(h,m,m.pendingProps.children,_),m.child;case 29:throw m.pendingProps}throw Error(r(156,m.tag))}function Yl(h){h.flags|=4}function nA(h,m,_,M,P){if((m=(h.mode&32)!==0)&&(m=!1),m){if(h.flags|=16777216,(P&335544128)===P)if(h.stateNode.complete)h.flags|=8192;else if(k5())h.flags|=8192;else throw nh=Iy,yE}else h.flags&=-16777217}function i5(h,m){if(m.type!=="stylesheet"||(m.state.loading&4)!==0)h.flags&=-16777217;else if(h.flags|=16777216,!yF(m))if(k5())h.flags|=8192;else throw nh=Iy,yE}function ev(h,m){m!==null&&(h.flags|=4),h.flags&16384&&(m=h.tag!==22?Tt():536870912,h.lanes|=m,nm|=m)}function rx(h,m){if(!jn)switch(h.tailMode){case"hidden":m=h.tail;for(var _=null;m!==null;)m.alternate!==null&&(_=m),m=m.sibling;_===null?h.tail=null:_.sibling=null;break;case"collapsed":_=h.tail;for(var M=null;_!==null;)_.alternate!==null&&(M=_),_=_.sibling;M===null?m||h.tail===null?h.tail=null:h.tail.sibling=null:M.sibling=null}}function wr(h){var m=h.alternate!==null&&h.alternate.child===h.child,_=0,M=0;if(m)for(var P=h.child;P!==null;)_|=P.lanes|P.childLanes,M|=P.subtreeFlags&65011712,M|=P.flags&65011712,P.return=h,P=P.sibling;else for(P=h.child;P!==null;)_|=P.lanes|P.childLanes,M|=P.subtreeFlags,M|=P.flags,P.return=h,P=P.sibling;return h.subtreeFlags|=M,h.childLanes=_,m}function yre(h,m,_){var M=m.pendingProps;switch(uE(m),m.tag){case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return wr(m),null;case 1:return wr(m),null;case 3:return _=m.stateNode,M=null,h!==null&&(M=h.memoizedState.cache),m.memoizedState.cache!==M&&(m.flags|=2048),Wl(ri),fe(),_.pendingContext&&(_.context=_.pendingContext,_.pendingContext=null),(h===null||h.child===null)&&($f(m)?Yl(m):h===null||h.memoizedState.isDehydrated&&(m.flags&256)===0||(m.flags|=1024,hE())),wr(m),null;case 26:var P=m.type,O=m.memoizedState;return h===null?(Yl(m),O!==null?(wr(m),i5(m,O)):(wr(m),nA(m,P,null,M,_))):O?O!==h.memoizedState?(Yl(m),wr(m),i5(m,O)):(wr(m),m.flags&=-16777217):(h=h.memoizedProps,h!==M&&Yl(m),wr(m),nA(m,P,h,M,_)),null;case 27:if(Ee(m),_=he.current,P=m.type,h!==null&&m.stateNode!=null)h.memoizedProps!==M&&Yl(m);else{if(!M){if(m.stateNode===null)throw Error(r(166));return wr(m),null}h=ie.current,$f(m)?IL(m):(h=dF(P,M,_),m.stateNode=h,Yl(m))}return wr(m),null;case 5:if(Ee(m),P=m.type,h!==null&&m.stateNode!=null)h.memoizedProps!==M&&Yl(m);else{if(!M){if(m.stateNode===null)throw Error(r(166));return wr(m),null}if(O=ie.current,$f(m))IL(m);else{var Y=pv(he.current);switch(O){case 1:O=Y.createElementNS("http://www.w3.org/2000/svg",P);break;case 2:O=Y.createElementNS("http://www.w3.org/1998/Math/MathML",P);break;default:switch(P){case"svg":O=Y.createElementNS("http://www.w3.org/2000/svg",P);break;case"math":O=Y.createElementNS("http://www.w3.org/1998/Math/MathML",P);break;case"script":O=Y.createElement("div"),O.innerHTML=" - + +
diff --git a/static/sw.js b/static/sw.js index 2cc272b2f..7c8cdb17c 100644 --- a/static/sw.js +++ b/static/sw.js @@ -1,6 +1,6 @@ // Bambuddy Service Worker -const CACHE_NAME = 'bambuddy-v16'; -const STATIC_CACHE = 'bambuddy-static-v16'; +const CACHE_NAME = 'bambuddy-v19'; +const STATIC_CACHE = 'bambuddy-static-v19'; // Static assets to cache on install const STATIC_ASSETS = [