diff --git a/backend/app/api/routes/settings.py b/backend/app/api/routes/settings.py index 0aded5596..691fefbda 100644 --- a/backend/app/api/routes/settings.py +++ b/backend/app/api/routes/settings.py @@ -1,15 +1,25 @@ +import io import json +import zipfile from datetime import datetime +from pathlib import Path +from typing import Optional -from fastapi import APIRouter, Depends, UploadFile, File -from fastapi.responses import JSONResponse +from fastapi import APIRouter, Depends, UploadFile, File, Query +from fastapi.responses import JSONResponse, StreamingResponse from sqlalchemy.ext.asyncio import AsyncSession from sqlalchemy import select +from backend.app.core.config import settings as app_settings from backend.app.core.database import get_db from backend.app.models.settings import Settings from backend.app.models.notification import NotificationProvider +from backend.app.models.notification_template import NotificationTemplate from backend.app.models.smart_plug import SmartPlug +from backend.app.models.printer import Printer +from backend.app.models.filament import Filament +from backend.app.models.maintenance import MaintenanceType, PrinterMaintenance, MaintenanceHistory +from backend.app.models.archive import PrintArchive from backend.app.schemas.settings import AppSettings, AppSettingsUpdate @@ -149,62 +159,267 @@ async def update_spoolman_settings( @router.get("/backup") -async def export_backup(db: AsyncSession = Depends(get_db)): - """Export all settings, notification providers, and smart plugs as JSON backup.""" - # Get all settings - result = await db.execute(select(Settings)) - db_settings = result.scalars().all() - settings_data = {s.key: s.value for s in db_settings} - - # Get notification providers - result = await db.execute(select(NotificationProvider)) - providers = result.scalars().all() - providers_data = [] - for p in providers: - providers_data.append({ - "name": p.name, - "provider_type": p.provider_type, - "enabled": p.enabled, - "config": json.loads(p.config) if isinstance(p.config, str) else p.config, - "on_print_start": p.on_print_start, - "on_print_complete": p.on_print_complete, - "on_print_failed": p.on_print_failed, - "on_print_stopped": p.on_print_stopped, - "on_print_progress": p.on_print_progress, - "on_printer_offline": p.on_printer_offline, - "on_printer_error": p.on_printer_error, - "on_filament_low": p.on_filament_low, - "on_maintenance_due": p.on_maintenance_due, - "quiet_hours_enabled": p.quiet_hours_enabled, - "quiet_hours_start": p.quiet_hours_start, - "quiet_hours_end": p.quiet_hours_end, - }) - - # Get smart plugs - result = await db.execute(select(SmartPlug)) - plugs = result.scalars().all() - plugs_data = [] - for plug in plugs: - plugs_data.append({ - "name": plug.name, - "ip_address": plug.ip_address, - "enabled": plug.enabled, - "auto_off_enabled": plug.auto_off_enabled, - "auto_off_delay_minutes": plug.auto_off_delay_minutes, - }) - - backup = { - "version": "1.0", +async def export_backup( + db: AsyncSession = Depends(get_db), + include_settings: bool = Query(True, description="Include app settings"), + include_notifications: bool = Query(True, description="Include notification providers"), + include_templates: bool = Query(True, description="Include notification templates"), + include_smart_plugs: bool = Query(True, description="Include smart plugs"), + include_printers: bool = Query(False, description="Include printers (without access codes)"), + include_filaments: bool = Query(False, description="Include filament inventory"), + include_maintenance: bool = Query(False, description="Include maintenance types and records"), + include_archives: bool = Query(False, description="Include print archive metadata"), +): + """Export selected data as JSON backup.""" + backup: dict = { + "version": "2.0", "exported_at": datetime.utcnow().isoformat(), - "settings": settings_data, - "notification_providers": providers_data, - "smart_plugs": plugs_data, + "included": [], } + # Settings + if include_settings: + result = await db.execute(select(Settings)) + db_settings = result.scalars().all() + backup["settings"] = {s.key: s.value for s in db_settings} + backup["included"].append("settings") + + # Notification providers + if include_notifications: + result = await db.execute(select(NotificationProvider)) + providers = result.scalars().all() + backup["notification_providers"] = [] + for p in providers: + backup["notification_providers"].append({ + "name": p.name, + "provider_type": p.provider_type, + "enabled": p.enabled, + "config": json.loads(p.config) if isinstance(p.config, str) else p.config, + "on_print_start": p.on_print_start, + "on_print_complete": p.on_print_complete, + "on_print_failed": p.on_print_failed, + "on_print_stopped": p.on_print_stopped, + "on_print_progress": p.on_print_progress, + "on_printer_offline": p.on_printer_offline, + "on_printer_error": p.on_printer_error, + "on_filament_low": p.on_filament_low, + "on_maintenance_due": p.on_maintenance_due, + "quiet_hours_enabled": p.quiet_hours_enabled, + "quiet_hours_start": p.quiet_hours_start, + "quiet_hours_end": p.quiet_hours_end, + "daily_digest_enabled": getattr(p, 'daily_digest_enabled', False), + "daily_digest_time": getattr(p, 'daily_digest_time', None), + "printer_id": getattr(p, 'printer_id', None), + }) + backup["included"].append("notification_providers") + + # Notification templates + if include_templates: + result = await db.execute(select(NotificationTemplate)) + templates = result.scalars().all() + backup["notification_templates"] = [] + for t in templates: + backup["notification_templates"].append({ + "event_type": t.event_type, + "name": t.name, + "title_template": t.title_template, + "body_template": t.body_template, + "is_default": t.is_default, + }) + backup["included"].append("notification_templates") + + # Smart plugs + if include_smart_plugs: + result = await db.execute(select(SmartPlug)) + plugs = result.scalars().all() + backup["smart_plugs"] = [] + for plug in plugs: + backup["smart_plugs"].append({ + "name": plug.name, + "ip_address": plug.ip_address, + "printer_id": plug.printer_id, + "enabled": plug.enabled, + "auto_on": plug.auto_on, + "auto_off": plug.auto_off, + "off_delay_mode": plug.off_delay_mode, + "off_delay_minutes": plug.off_delay_minutes, + "off_temp_threshold": plug.off_temp_threshold, + "username": plug.username, + "password": plug.password, + "power_alert_enabled": plug.power_alert_enabled, + "power_alert_high": plug.power_alert_high, + "power_alert_low": plug.power_alert_low, + "schedule_enabled": plug.schedule_enabled, + "schedule_on_time": plug.schedule_on_time, + "schedule_off_time": plug.schedule_off_time, + }) + backup["included"].append("smart_plugs") + + # Printers (without access codes for security) + if include_printers: + result = await db.execute(select(Printer)) + printers = result.scalars().all() + backup["printers"] = [] + for printer in printers: + backup["printers"].append({ + "name": printer.name, + "serial_number": printer.serial_number, + "ip_address": printer.ip_address, + # access_code intentionally excluded for security + "model": printer.model, + "location": printer.location, + "nozzle_count": printer.nozzle_count, + "is_active": printer.is_active, + "auto_archive": printer.auto_archive, + "print_hours_offset": printer.print_hours_offset, + }) + backup["included"].append("printers") + + # Filaments + if include_filaments: + result = await db.execute(select(Filament)) + filaments = result.scalars().all() + backup["filaments"] = [] + for f in filaments: + backup["filaments"].append({ + "name": f.name, + "type": f.type, + "brand": f.brand, + "color": f.color, + "color_hex": f.color_hex, + "cost_per_kg": f.cost_per_kg, + "spool_weight_g": f.spool_weight_g, + "currency": f.currency, + "density": f.density, + "print_temp_min": f.print_temp_min, + "print_temp_max": f.print_temp_max, + "bed_temp_min": f.bed_temp_min, + "bed_temp_max": f.bed_temp_max, + }) + backup["included"].append("filaments") + + # Maintenance types and records + if include_maintenance: + # Maintenance types + result = await db.execute(select(MaintenanceType)) + types = result.scalars().all() + backup["maintenance_types"] = [] + for mt in types: + backup["maintenance_types"].append({ + "name": mt.name, + "description": mt.description, + "default_interval_hours": mt.default_interval_hours, + "interval_type": mt.interval_type, + "icon": mt.icon, + "is_system": mt.is_system, + }) + backup["included"].append("maintenance_types") + + # Print archives with file paths for ZIP + archive_files: list[tuple[str, Path]] = [] # (zip_path, local_path) + if include_archives: + result = await db.execute(select(PrintArchive)) + archives = result.scalars().all() + backup["archives"] = [] + base_dir = app_settings.base_dir + + for a in archives: + archive_data = { + "filename": a.filename, + "file_size": a.file_size, + "content_hash": a.content_hash, + "print_name": a.print_name, + "print_time_seconds": a.print_time_seconds, + "filament_used_grams": a.filament_used_grams, + "filament_type": a.filament_type, + "filament_color": a.filament_color, + "layer_height": a.layer_height, + "total_layers": a.total_layers, + "nozzle_diameter": a.nozzle_diameter, + "bed_temperature": a.bed_temperature, + "nozzle_temperature": a.nozzle_temperature, + "status": a.status, + "started_at": a.started_at.isoformat() if a.started_at else None, + "completed_at": a.completed_at.isoformat() if a.completed_at else None, + "makerworld_url": a.makerworld_url, + "designer": a.designer, + "is_favorite": a.is_favorite, + "tags": a.tags, + "notes": a.notes, + "cost": a.cost, + "failure_reason": a.failure_reason, + "energy_kwh": a.energy_kwh, + "energy_cost": a.energy_cost, + "extra_data": a.extra_data, + "photos": a.photos, + } + + # Collect file paths for ZIP + if a.file_path: + file_path = base_dir / a.file_path + if file_path.exists(): + archive_data["file_path"] = a.file_path + archive_files.append((a.file_path, file_path)) + + if a.thumbnail_path: + thumb_path = base_dir / a.thumbnail_path + if thumb_path.exists(): + archive_data["thumbnail_path"] = a.thumbnail_path + archive_files.append((a.thumbnail_path, thumb_path)) + + if a.timelapse_path: + timelapse_path = base_dir / a.timelapse_path + if timelapse_path.exists(): + archive_data["timelapse_path"] = a.timelapse_path + archive_files.append((a.timelapse_path, timelapse_path)) + + if a.source_3mf_path: + source_path = base_dir / a.source_3mf_path + if source_path.exists(): + archive_data["source_3mf_path"] = a.source_3mf_path + archive_files.append((a.source_3mf_path, source_path)) + + # Include photos + if a.photos: + for photo in a.photos: + photo_path = base_dir / "archive" / "photos" / photo + if photo_path.exists(): + zip_photo_path = f"archive/photos/{photo}" + archive_files.append((zip_photo_path, photo_path)) + + backup["archives"].append(archive_data) + backup["included"].append("archives") + + # If archives included, create ZIP file with all files + if include_archives and archive_files: + zip_buffer = io.BytesIO() + with zipfile.ZipFile(zip_buffer, 'w', zipfile.ZIP_DEFLATED) as zf: + # Add backup.json + zf.writestr("backup.json", json.dumps(backup, indent=2)) + + # Add all archive files + added_files = set() + for zip_path, local_path in archive_files: + if zip_path not in added_files and local_path.exists(): + try: + zf.write(local_path, zip_path) + added_files.add(zip_path) + except Exception: + pass # Skip files that can't be read + + zip_buffer.seek(0) + filename = f"bambusy-backup-{datetime.now().strftime('%Y%m%d-%H%M%S')}.zip" + return StreamingResponse( + zip_buffer, + media_type="application/zip", + headers={"Content-Disposition": f"attachment; filename={filename}"} + ) + + # Otherwise return JSON return JSONResponse( content=backup, headers={ - "Content-Disposition": f"attachment; filename=bambutrack-backup-{datetime.now().strftime('%Y%m%d-%H%M%S')}.json" + "Content-Disposition": f"attachment; filename=bambusy-backup-{datetime.now().strftime('%Y%m%d-%H%M%S')}.json" } ) @@ -214,14 +429,54 @@ async def import_backup( file: UploadFile = File(...), db: AsyncSession = Depends(get_db), ): - """Restore settings, notification providers, and smart plugs from JSON backup.""" + """Restore data from JSON or ZIP backup. Skips duplicates.""" try: content = await file.read() - backup = json.loads(content.decode("utf-8")) + base_dir = app_settings.base_dir + files_restored = 0 + + # Check if it's a ZIP file + if file.filename and file.filename.endswith('.zip'): + try: + zip_buffer = io.BytesIO(content) + with zipfile.ZipFile(zip_buffer, 'r') as zf: + # Extract backup.json + if 'backup.json' not in zf.namelist(): + return {"success": False, "message": "Invalid ZIP: missing backup.json"} + + backup_content = zf.read('backup.json') + backup = json.loads(backup_content.decode("utf-8")) + + # Extract all other files to base_dir + for zip_path in zf.namelist(): + if zip_path == 'backup.json': + continue + # Ensure path is safe (no path traversal) + if '..' in zip_path or zip_path.startswith('/'): + continue + target_path = base_dir / zip_path + target_path.parent.mkdir(parents=True, exist_ok=True) + with zf.open(zip_path) as src, open(target_path, 'wb') as dst: + dst.write(src.read()) + files_restored += 1 + except zipfile.BadZipFile: + return {"success": False, "message": "Invalid ZIP file"} + else: + backup = json.loads(content.decode("utf-8")) + except json.JSONDecodeError as e: + return {"success": False, "message": f"Invalid JSON: {str(e)}"} except Exception as e: return {"success": False, "message": f"Invalid backup file: {str(e)}"} - restored = {"settings": 0, "notification_providers": 0, "smart_plugs": 0} + restored = { + "settings": 0, + "notification_providers": 0, + "notification_templates": 0, + "smart_plugs": 0, + "printers": 0, + "filaments": 0, + "maintenance_types": 0, + } # Restore settings if "settings" in backup: @@ -232,7 +487,6 @@ async def import_backup( # Restore notification providers (skip duplicates by name) if "notification_providers" in backup: for provider_data in backup["notification_providers"]: - # Check if provider with same name exists result = await db.execute( select(NotificationProvider).where(NotificationProvider.name == provider_data["name"]) ) @@ -255,14 +509,42 @@ async def import_backup( quiet_hours_enabled=provider_data.get("quiet_hours_enabled", False), quiet_hours_start=provider_data.get("quiet_hours_start"), quiet_hours_end=provider_data.get("quiet_hours_end"), + daily_digest_enabled=provider_data.get("daily_digest_enabled", False), + daily_digest_time=provider_data.get("daily_digest_time"), + printer_id=provider_data.get("printer_id"), ) db.add(provider) restored["notification_providers"] += 1 + # Restore notification templates (update existing by event_type) + if "notification_templates" in backup: + for template_data in backup["notification_templates"]: + result = await db.execute( + select(NotificationTemplate).where( + NotificationTemplate.event_type == template_data["event_type"] + ) + ) + existing = result.scalar_one_or_none() + if existing: + # Update existing template + existing.name = template_data.get("name", existing.name) + existing.title_template = template_data.get("title_template", existing.title_template) + existing.body_template = template_data.get("body_template", existing.body_template) + existing.is_default = template_data.get("is_default", False) + else: + template = NotificationTemplate( + event_type=template_data["event_type"], + name=template_data["name"], + title_template=template_data["title_template"], + body_template=template_data["body_template"], + is_default=template_data.get("is_default", False), + ) + db.add(template) + restored["notification_templates"] += 1 + # Restore smart plugs (skip duplicates by IP) if "smart_plugs" in backup: for plug_data in backup["smart_plugs"]: - # Check if plug with same IP exists result = await db.execute( select(SmartPlug).where(SmartPlug.ip_address == plug_data["ip_address"]) ) @@ -271,17 +553,161 @@ async def import_backup( plug = SmartPlug( name=plug_data["name"], ip_address=plug_data["ip_address"], + printer_id=plug_data.get("printer_id"), enabled=plug_data.get("enabled", True), - auto_off_enabled=plug_data.get("auto_off_enabled", False), - auto_off_delay_minutes=plug_data.get("auto_off_delay_minutes", 5), + auto_on=plug_data.get("auto_on", True), + auto_off=plug_data.get("auto_off", True), + off_delay_mode=plug_data.get("off_delay_mode", "time"), + off_delay_minutes=plug_data.get("off_delay_minutes", 5), + off_temp_threshold=plug_data.get("off_temp_threshold", 70), + username=plug_data.get("username"), + password=plug_data.get("password"), + power_alert_enabled=plug_data.get("power_alert_enabled", False), + power_alert_high=plug_data.get("power_alert_high"), + power_alert_low=plug_data.get("power_alert_low"), + schedule_enabled=plug_data.get("schedule_enabled", False), + schedule_on_time=plug_data.get("schedule_on_time"), + schedule_off_time=plug_data.get("schedule_off_time"), ) db.add(plug) restored["smart_plugs"] += 1 + # Restore printers (skip duplicates by serial_number, requires access_code to be set manually) + if "printers" in backup: + for printer_data in backup["printers"]: + result = await db.execute( + select(Printer).where(Printer.serial_number == printer_data["serial_number"]) + ) + existing = result.scalar_one_or_none() + if not existing: + printer = Printer( + name=printer_data["name"], + serial_number=printer_data["serial_number"], + ip_address=printer_data["ip_address"], + access_code="CHANGE_ME", # Must be set manually for security + model=printer_data.get("model"), + location=printer_data.get("location"), + nozzle_count=printer_data.get("nozzle_count", 1), + is_active=False, # Disabled until access_code is set + auto_archive=printer_data.get("auto_archive", True), + print_hours_offset=printer_data.get("print_hours_offset", 0.0), + ) + db.add(printer) + restored["printers"] += 1 + + # Restore filaments (skip duplicates by name+type+brand) + if "filaments" in backup: + for filament_data in backup["filaments"]: + result = await db.execute( + select(Filament).where( + Filament.name == filament_data["name"], + Filament.type == filament_data["type"], + Filament.brand == filament_data.get("brand"), + ) + ) + existing = result.scalar_one_or_none() + if not existing: + filament = Filament( + name=filament_data["name"], + type=filament_data["type"], + brand=filament_data.get("brand"), + color=filament_data.get("color"), + color_hex=filament_data.get("color_hex"), + cost_per_kg=filament_data.get("cost_per_kg", 25.0), + spool_weight_g=filament_data.get("spool_weight_g", 1000.0), + currency=filament_data.get("currency", "USD"), + density=filament_data.get("density"), + print_temp_min=filament_data.get("print_temp_min"), + print_temp_max=filament_data.get("print_temp_max"), + bed_temp_min=filament_data.get("bed_temp_min"), + bed_temp_max=filament_data.get("bed_temp_max"), + ) + db.add(filament) + restored["filaments"] += 1 + + # Restore maintenance types (skip duplicates by name) + if "maintenance_types" in backup: + for mt_data in backup["maintenance_types"]: + result = await db.execute( + select(MaintenanceType).where(MaintenanceType.name == mt_data["name"]) + ) + existing = result.scalar_one_or_none() + if not existing: + mt = MaintenanceType( + name=mt_data["name"], + description=mt_data.get("description"), + default_interval_hours=mt_data.get("default_interval_hours", 100.0), + interval_type=mt_data.get("interval_type", "hours"), + icon=mt_data.get("icon"), + is_system=mt_data.get("is_system", False), + ) + db.add(mt) + restored["maintenance_types"] += 1 + + # Restore archives (skip duplicates by content_hash) + if "archives" in backup: + for archive_data in backup["archives"]: + # Skip if no content_hash or already exists + content_hash = archive_data.get("content_hash") + if content_hash: + result = await db.execute( + select(PrintArchive).where(PrintArchive.content_hash == content_hash) + ) + existing = result.scalar_one_or_none() + if existing: + continue + + # Only restore if file exists (from ZIP extraction) + file_path = archive_data.get("file_path") + if file_path and (base_dir / file_path).exists(): + archive = PrintArchive( + filename=archive_data["filename"], + file_path=file_path, + file_size=archive_data.get("file_size", 0), + content_hash=content_hash, + thumbnail_path=archive_data.get("thumbnail_path"), + timelapse_path=archive_data.get("timelapse_path"), + source_3mf_path=archive_data.get("source_3mf_path"), + print_name=archive_data.get("print_name"), + print_time_seconds=archive_data.get("print_time_seconds"), + filament_used_grams=archive_data.get("filament_used_grams"), + filament_type=archive_data.get("filament_type"), + filament_color=archive_data.get("filament_color"), + layer_height=archive_data.get("layer_height"), + total_layers=archive_data.get("total_layers"), + nozzle_diameter=archive_data.get("nozzle_diameter"), + bed_temperature=archive_data.get("bed_temperature"), + nozzle_temperature=archive_data.get("nozzle_temperature"), + status=archive_data.get("status", "completed"), + makerworld_url=archive_data.get("makerworld_url"), + designer=archive_data.get("designer"), + is_favorite=archive_data.get("is_favorite", False), + tags=archive_data.get("tags"), + notes=archive_data.get("notes"), + cost=archive_data.get("cost"), + failure_reason=archive_data.get("failure_reason"), + energy_kwh=archive_data.get("energy_kwh"), + energy_cost=archive_data.get("energy_cost"), + extra_data=archive_data.get("extra_data"), + photos=archive_data.get("photos"), + ) + db.add(archive) + restored["archives"] = restored.get("archives", 0) + 1 + await db.commit() + # Build summary message + parts = [] + for key, count in restored.items(): + if count > 0: + parts.append(f"{count} {key.replace('_', ' ')}") + + if files_restored > 0: + parts.append(f"{files_restored} files") + return { "success": True, - "message": f"Restored {restored['settings']} settings, {restored['notification_providers']} notification providers, {restored['smart_plugs']} smart plugs", + "message": f"Restored: {', '.join(parts)}" if parts else "Nothing to restore", "restored": restored, + "files_restored": files_restored, } diff --git a/frontend/src/api/client.ts b/frontend/src/api/client.ts index 9810b6537..e081476db 100644 --- a/frontend/src/api/client.ts +++ b/frontend/src/api/client.ts @@ -1149,9 +1149,31 @@ export const api = { }), resetSettings: () => request('/settings/reset', { method: 'POST' }), - exportBackup: async () => { - const response = await fetch(`${API_BASE}/settings/backup`); - return response.json(); + exportBackup: async (categories?: Record): Promise<{ blob: Blob; filename: string }> => { + const params = new URLSearchParams(); + if (categories) { + if (categories.settings !== undefined) params.set('include_settings', String(categories.settings)); + if (categories.notifications !== undefined) params.set('include_notifications', String(categories.notifications)); + if (categories.templates !== undefined) params.set('include_templates', String(categories.templates)); + if (categories.smart_plugs !== undefined) params.set('include_smart_plugs', String(categories.smart_plugs)); + if (categories.printers !== undefined) params.set('include_printers', String(categories.printers)); + if (categories.filaments !== undefined) params.set('include_filaments', String(categories.filaments)); + if (categories.maintenance !== undefined) params.set('include_maintenance', String(categories.maintenance)); + if (categories.archives !== undefined) params.set('include_archives', String(categories.archives)); + } + const url = `${API_BASE}/settings/backup${params.toString() ? '?' + params.toString() : ''}`; + const response = await fetch(url); + + // Get filename from Content-Disposition header + const contentDisposition = response.headers.get('Content-Disposition'); + let filename = 'bambusy-backup.json'; + if (contentDisposition) { + const match = contentDisposition.match(/filename=([^;]+)/); + if (match) filename = match[1].trim(); + } + + const blob = await response.blob(); + return { blob, filename }; }, importBackup: async (file: File) => { const formData = new FormData(); diff --git a/frontend/src/components/BackupModal.tsx b/frontend/src/components/BackupModal.tsx new file mode 100644 index 000000000..59caadd1f --- /dev/null +++ b/frontend/src/components/BackupModal.tsx @@ -0,0 +1,267 @@ +import { useEffect, useState } from 'react'; +import { Download, X, Settings, Bell, FileText, Plug, Printer, Palette, Wrench, Archive, Loader2 } from 'lucide-react'; +import { useTranslation } from 'react-i18next'; +import { Card, CardContent } from './Card'; +import { Button } from './Button'; + +interface BackupCategory { + id: string; + labelKey: string; + defaultLabel: string; + icon: React.ReactNode; + default: boolean; + description: string; +} + +const BACKUP_CATEGORIES: BackupCategory[] = [ + { + id: 'settings', + labelKey: 'backup.categories.settings', + defaultLabel: 'App Settings', + icon: , + default: true, + description: 'Language, theme, update preferences', + }, + { + id: 'notifications', + labelKey: 'backup.categories.notifications', + defaultLabel: 'Notification Providers', + icon: , + default: true, + description: 'ntfy, Pushover, Discord, etc.', + }, + { + id: 'templates', + labelKey: 'backup.categories.templates', + defaultLabel: 'Notification Templates', + icon: , + default: true, + description: 'Custom message templates', + }, + { + id: 'smart_plugs', + labelKey: 'backup.categories.smartPlugs', + defaultLabel: 'Smart Plugs', + icon: , + default: true, + description: 'Tasmota plug configurations', + }, + { + id: 'printers', + labelKey: 'backup.categories.printers', + defaultLabel: 'Printers', + icon: , + default: false, + description: 'Printer info (access codes excluded)', + }, + { + id: 'filaments', + labelKey: 'backup.categories.filaments', + defaultLabel: 'Filament Inventory', + icon: , + default: false, + description: 'Filament types and costs', + }, + { + id: 'maintenance', + labelKey: 'backup.categories.maintenance', + defaultLabel: 'Maintenance Types', + icon: , + default: false, + description: 'Custom maintenance schedules', + }, + { + id: 'archives', + labelKey: 'backup.categories.archives', + defaultLabel: 'Print Archives', + icon: , + default: false, + description: 'All print data + files (3MF, thumbnails, photos)', + }, +]; + +interface BackupModalProps { + onClose: () => void; + onExport: (categories: Record) => Promise; +} + +export function BackupModal({ onClose, onExport }: BackupModalProps) { + const { t } = useTranslation(); + const [selected, setSelected] = useState>(() => { + const initial: Record = {}; + BACKUP_CATEGORIES.forEach((cat) => { + initial[cat.id] = cat.default; + }); + return initial; + }); + const [isExporting, setIsExporting] = useState(false); + + // Close on Escape key + useEffect(() => { + const handleKeyDown = (e: KeyboardEvent) => { + if (e.key === 'Escape') onClose(); + }; + window.addEventListener('keydown', handleKeyDown); + return () => window.removeEventListener('keydown', handleKeyDown); + }, [onClose]); + + const toggleCategory = (id: string) => { + setSelected((prev) => ({ ...prev, [id]: !prev[id] })); + }; + + const selectAll = () => { + const all: Record = {}; + BACKUP_CATEGORIES.forEach((cat) => { + all[cat.id] = true; + }); + setSelected(all); + }; + + const selectNone = () => { + const none: Record = {}; + BACKUP_CATEGORIES.forEach((cat) => { + none[cat.id] = false; + }); + setSelected(none); + }; + + const selectedCount = Object.values(selected).filter(Boolean).length; + + const handleExport = async () => { + setIsExporting(true); + try { + await onExport(selected); + } finally { + setIsExporting(false); + } + }; + + return ( +
+ e.stopPropagation()}> + + {/* Header */} +
+
+
+ +
+
+

+ {t('backup.exportTitle', { defaultValue: 'Export Backup' })} +

+

+ {t('backup.selectCategories', { defaultValue: 'Select data to include' })} +

+
+
+ +
+ + {/* Quick actions */} +
+ + | + +
+ + {/* Categories */} +
+ {BACKUP_CATEGORIES.map((category) => ( + + ))} +
+ + {/* Archive warning */} + {selected.archives && ( +
+
+ +
+ ZIP file will be created. + Includes all 3MF files, thumbnails, timelapses, and photos. This may take a while and result in a large file. +
+
+
+ )} + + {/* Footer */} +
+ + {t('backup.selectedCount', { + count: selectedCount, + defaultValue: `${selectedCount} categories selected`, + })} + +
+ + +
+
+
+
+
+ ); +} diff --git a/frontend/src/pages/SettingsPage.tsx b/frontend/src/pages/SettingsPage.tsx index b4e15de6c..91163afab 100644 --- a/frontend/src/pages/SettingsPage.tsx +++ b/frontend/src/pages/SettingsPage.tsx @@ -12,6 +12,7 @@ import { AddNotificationModal } from '../components/AddNotificationModal'; import { NotificationTemplateEditor } from '../components/NotificationTemplateEditor'; import { NotificationLogViewer } from '../components/NotificationLogViewer'; import { ConfirmModal } from '../components/ConfirmModal'; +import { BackupModal } from '../components/BackupModal'; import { SpoolmanSettings } from '../components/SpoolmanSettings'; import { defaultNavItems, getDefaultView, setDefaultView } from '../components/Layout'; import { availableLanguages } from '../i18n'; @@ -37,6 +38,7 @@ export function SettingsPage() { const [showClearLogsConfirm, setShowClearLogsConfirm] = useState(false); const [showClearStorageConfirm, setShowClearStorageConfirm] = useState(false); const [showBulkPlugConfirm, setShowBulkPlugConfirm] = useState<'on' | 'off' | null>(null); + const [showBackupModal, setShowBackupModal] = useState(false); const handleDefaultViewChange = (path: string) => { setDefaultViewState(path); @@ -866,29 +868,15 @@ export function SettingsPage() { {/* Backup/Restore */}
-

Backup Settings

+

Backup Data

- Export settings, providers, and plugs to JSON + Export settings, providers, printers, and more

); } diff --git a/static/assets/index-79rMOukP.css b/static/assets/index-79rMOukP.css new file mode 100644 index 000000000..87877168d --- /dev/null +++ b/static/assets/index-79rMOukP.css @@ -0,0 +1 @@ +@import"https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap";@layer properties,theme,base,components,utilities;@layer theme{:root,:host{--font-sans:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--color-red-300:oklch(80.8% .114 19.571);--color-red-400:oklch(70.4% .191 22.216);--color-red-500:oklch(63.7% .237 25.331);--color-red-600:oklch(57.7% .245 27.325);--color-red-700:oklch(50.5% .213 27.518);--color-orange-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-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-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-emerald-400:oklch(76.5% .177 163.223);--color-emerald-500:oklch(69.6% .17 162.48);--color-cyan-400:oklch(78.9% .154 211.53);--color-cyan-500:oklch(71.5% .143 215.221);--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-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-100:oklch(96.7% .003 264.542);--color-gray-200:oklch(92.8% .006 264.531);--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-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);--font-weight-normal:400;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--tracking-wide:.025em;--tracking-widest:.1em;--radius-sm:.25rem;--radius-md:.375rem;--radius-lg:.5rem;--radius-xl:.75rem;--ease-in-out:cubic-bezier(.4,0,.2,1);--animate-spin:spin 1s linear infinite;--animate-pulse:pulse 2s cubic-bezier(.4,0,.6,1)infinite;--blur-sm:8px;--aspect-video:16/9;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4,0,.2,1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono);--color-bambu-green:#00ae42;--color-bambu-green-light:#00c64d;--color-bambu-green-dark:#009438;--color-bambu-dark:var(--bg-primary);--color-bambu-dark-secondary:var(--bg-secondary);--color-bambu-dark-tertiary:var(--bg-tertiary);--color-bambu-gray:var(--text-muted);--color-bambu-gray-light:var(--text-secondary);--color-bambu-gray-dark:var(--text-tertiary)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer utilities{.pointer-events-none{pointer-events:none}.visible{visibility:visible}.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.sticky{position:sticky}.inset-0{inset:calc(var(--spacing)*0)}.inset-y-0{inset-block:calc(var(--spacing)*0)}.-top-1{top:calc(var(--spacing)*-1)}.top-0{top:calc(var(--spacing)*0)}.top-1\/2{top:50%}.top-2{top:calc(var(--spacing)*2)}.top-4{top:calc(var(--spacing)*4)}.top-\[2px\]{top:2px}.top-full{top:100%}.-right-1{right:calc(var(--spacing)*-1)}.right-0{right:calc(var(--spacing)*0)}.right-2{right:calc(var(--spacing)*2)}.right-4{right:calc(var(--spacing)*4)}.right-6{right:calc(var(--spacing)*6)}.right-12{right:calc(var(--spacing)*12)}.bottom-1{bottom:calc(var(--spacing)*1)}.bottom-2{bottom:calc(var(--spacing)*2)}.bottom-4{bottom:calc(var(--spacing)*4)}.bottom-6{bottom:calc(var(--spacing)*6)}.left-0{left:calc(var(--spacing)*0)}.left-1\/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-12{left:calc(var(--spacing)*12)}.left-\[2px\]{left:2px}.z-10{z-index:10}.z-20{z-index:20}.z-30{z-index:30}.z-40{z-index:40}.z-50{z-index:50}.z-60,.z-\[60\]{z-index:60}.col-span-1{grid-column:span 1/span 1}.col-span-2{grid-column:span 2/span 2}.col-span-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-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-2{margin-top:calc(var(--spacing)*2)}.mt-3{margin-top:calc(var(--spacing)*3)}.mt-4{margin-top:calc(var(--spacing)*4)}.mt-6{margin-top:calc(var(--spacing)*6)}.mr-1{margin-right:calc(var(--spacing)*1)}.mr-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-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-6{margin-bottom:calc(var(--spacing)*6)}.mb-8{margin-bottom:calc(var(--spacing)*8)}.-ml-1{margin-left:calc(var(--spacing)*-1)}.ml-0\.5{margin-left:calc(var(--spacing)*.5)}.ml-1{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-8{margin-left:calc(var(--spacing)*8)}.ml-16{margin-left:calc(var(--spacing)*16)}.ml-64{margin-left:calc(var(--spacing)*64)}.ml-auto{margin-left:auto}.line-clamp-3{-webkit-line-clamp:3;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.block{display:block}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.table{display:table}.aspect-square{aspect-ratio:1}.aspect-video{aspect-ratio:var(--aspect-video)}.h-1{height:calc(var(--spacing)*1)}.h-1\.5{height:calc(var(--spacing)*1.5)}.h-2{height:calc(var(--spacing)*2)}.h-2\.5{height:calc(var(--spacing)*2.5)}.h-3{height:calc(var(--spacing)*3)}.h-3\.5{height:calc(var(--spacing)*3.5)}.h-4{height:calc(var(--spacing)*4)}.h-5{height:calc(var(--spacing)*5)}.h-6{height:calc(var(--spacing)*6)}.h-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-28{height:calc(var(--spacing)*28)}.h-64{height:calc(var(--spacing)*64)}.h-80{height:calc(var(--spacing)*80)}.h-\[80vh\]{height:80vh}.h-\[160px\]{height:160px}.h-full{height:100%}.max-h-40{max-height:calc(var(--spacing)*40)}.max-h-60{max-height:calc(var(--spacing)*60)}.max-h-96{max-height:calc(var(--spacing)*96)}.max-h-\[60vh\]{max-height:60vh}.max-h-\[80vh\]{max-height:80vh}.max-h-\[85vh\]{max-height:85vh}.max-h-\[90vh\]{max-height:90vh}.max-h-\[400px\]{max-height:400px}.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-\[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-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-28{width:calc(var(--spacing)*28)}.w-32{width:calc(var(--spacing)*32)}.w-36{width:calc(var(--spacing)*36)}.w-40{width:calc(var(--spacing)*40)}.w-48{width:calc(var(--spacing)*48)}.w-56{width:calc(var(--spacing)*56)}.w-64{width:calc(var(--spacing)*64)}.w-auto{width:auto}.w-full{width:100%}.w-px{width:1px}.max-w-2xl{max-width:var(--container-2xl)}.max-w-3xl{max-width:var(--container-3xl)}.max-w-4xl{max-width:var(--container-4xl)}.max-w-6xl{max-width:var(--container-6xl)}.max-w-32{max-width:calc(var(--spacing)*32)}.max-w-\[90vw\]{max-width:90vw}.max-w-\[100px\]{max-width:100px}.max-w-\[200px\]{max-width:200px}.max-w-full{max-width:100%}.max-w-lg{max-width:var(--container-lg)}.max-w-md{max-width:var(--container-md)}.max-w-none{max-width:none}.max-w-sm{max-width:var(--container-sm)}.max-w-xl{max-width:var(--container-xl)}.min-w-0{min-width:calc(var(--spacing)*0)}.min-w-48{min-width:calc(var(--spacing)*48)}.min-w-\[80px\]{min-width:80px}.min-w-\[100px\]{min-width:100px}.min-w-\[160px\]{min-width:160px}.min-w-\[200px\]{min-width:200px}.flex-1{flex:1}.flex-shrink-0,.shrink-0{flex-shrink:0}.-translate-x-1\/2{--tw-translate-x: -50% ;translate:var(--tw-translate-x)var(--tw-translate-y)}.translate-x-0{--tw-translate-x:calc(var(--spacing)*0);translate:var(--tw-translate-x)var(--tw-translate-y)}.translate-x-0\.5{--tw-translate-x:calc(var(--spacing)*.5);translate:var(--tw-translate-x)var(--tw-translate-y)}.translate-x-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-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-grab{cursor:grab}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.resize{resize:both}.resize-none{resize:none}.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-7{grid-template-columns:repeat(7,minmax(0,1fr))}.grid-cols-12{grid-template-columns:repeat(12,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.items-end{align-items:flex-end}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.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-1>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*1)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*1)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*2)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*2)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*3)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*3)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*4)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*4)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-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-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)}.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-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-md{border-radius:var(--radius-md)}.rounded-sm{border-radius:var(--radius-sm)}.rounded-xl{border-radius:var(--radius-xl)}.rounded-t-xl{border-top-left-radius:var(--radius-xl);border-top-right-radius:var(--radius-xl)}.rounded-l{border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.rounded-r{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}.border{border-style:var(--tw-border-style);border-width:1px}.border-2{border-style:var(--tw-border-style);border-width:2px}.border-4{border-style:var(--tw-border-style);border-width:4px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-r{border-right-style:var(--tw-border-style);border-right-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-b-2{border-bottom-style:var(--tw-border-style);border-bottom-width:2px}.border-l-2{border-left-style:var(--tw-border-style);border-left-width:2px}.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-bambu-dark-tertiary{border-color:var(--color-bambu-dark-tertiary)}.border-bambu-gray{border-color:var(--color-bambu-gray)}.border-bambu-green{border-color:var(--color-bambu-green)}.border-bambu-green\/20{border-color:#00ae4233}@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:#00ae424d}@supports (color:color-mix(in lab,red,red)){.border-bambu-green\/30{border-color:color-mix(in oklab,var(--color-bambu-green)30%,transparent)}}.border-bambu-green\/50{border-color:#00ae4280}@supports (color:color-mix(in lab,red,red)){.border-bambu-green\/50{border-color:color-mix(in oklab,var(--color-bambu-green)50%,transparent)}}.border-blue-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-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-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-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-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-transparent{border-top-color:#0000}.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-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\/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\/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\/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{background-color:var(--color-bambu-green)}.bg-bambu-green\/10{background-color:#00ae421a}@supports (color:color-mix(in lab,red,red)){.bg-bambu-green\/10{background-color:color-mix(in oklab,var(--color-bambu-green)10%,transparent)}}.bg-bambu-green\/20{background-color:#00ae4233}@supports (color:color-mix(in lab,red,red)){.bg-bambu-green\/20{background-color:color-mix(in oklab,var(--color-bambu-green)20%,transparent)}}.bg-bambu-green\/30{background-color:#00ae424d}@supports (color:color-mix(in lab,red,red)){.bg-bambu-green\/30{background-color:color-mix(in oklab,var(--color-bambu-green)30%,transparent)}}.bg-bambu-green\/50{background-color:#00ae4280}@supports (color:color-mix(in lab,red,red)){.bg-bambu-green\/50{background-color:color-mix(in oklab,var(--color-bambu-green)50%,transparent)}}.bg-bambu-green\/75{background-color:#00ae42bf}@supports (color:color-mix(in lab,red,red)){.bg-bambu-green\/75{background-color:color-mix(in oklab,var(--color-bambu-green)75%,transparent)}}.bg-black{background-color:var(--color-black)}.bg-black\/50{background-color:#00000080}@supports (color:color-mix(in lab,red,red)){.bg-black\/50{background-color:color-mix(in oklab,var(--color-black)50%,transparent)}}.bg-black\/60{background-color:#0009}@supports (color:color-mix(in lab,red,red)){.bg-black\/60{background-color:color-mix(in oklab,var(--color-black)60%,transparent)}}.bg-black\/70{background-color:#000000b3}@supports (color:color-mix(in lab,red,red)){.bg-black\/70{background-color:color-mix(in oklab,var(--color-black)70%,transparent)}}.bg-black\/80{background-color:#000c}@supports (color:color-mix(in lab,red,red)){.bg-black\/80{background-color:color-mix(in oklab,var(--color-black)80%,transparent)}}.bg-black\/90{background-color:#000000e6}@supports (color:color-mix(in lab,red,red)){.bg-black\/90{background-color:color-mix(in oklab,var(--color-black)90%,transparent)}}.bg-blue-400{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-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-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-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\/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-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\/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-purple-500\/20{background-color:#ac4bff33}@supports (color:color-mix(in lab,red,red)){.bg-purple-500\/20{background-color:color-mix(in oklab,var(--color-purple-500)20%,transparent)}}.bg-purple-500\/80{background-color:#ac4bffcc}@supports (color:color-mix(in lab,red,red)){.bg-purple-500\/80{background-color:color-mix(in oklab,var(--color-purple-500)80%,transparent)}}.bg-red-400{background-color:var(--color-red-400)}.bg-red-400\/10{background-color:#ff65681a}@supports (color:color-mix(in lab,red,red)){.bg-red-400\/10{background-color:color-mix(in oklab,var(--color-red-400)10%,transparent)}}.bg-red-500{background-color:var(--color-red-500)}.bg-red-500\/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\/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-yellow-400{background-color:var(--color-yellow-400)}.bg-yellow-400\/10{background-color:#fac8001a}@supports (color:color-mix(in lab,red,red)){.bg-yellow-400\/10{background-color:color-mix(in oklab,var(--color-yellow-400)10%,transparent)}}.bg-yellow-400\/20{background-color:#fac80033}@supports (color:color-mix(in lab,red,red)){.bg-yellow-400\/20{background-color:color-mix(in oklab,var(--color-yellow-400)20%,transparent)}}.bg-yellow-500{background-color:var(--color-yellow-500)}.bg-yellow-500\/10{background-color:#edb2001a}@supports (color:color-mix(in lab,red,red)){.bg-yellow-500\/10{background-color:color-mix(in oklab,var(--color-yellow-500)10%,transparent)}}.bg-yellow-500\/20{background-color:#edb20033}@supports (color:color-mix(in lab,red,red)){.bg-yellow-500\/20{background-color:color-mix(in oklab,var(--color-yellow-500)20%,transparent)}}.bg-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))}.from-bambu-green\/10{--tw-gradient-from:#00ae421a}@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-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-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-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))}.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-8{padding-block:calc(var(--spacing)*8)}.py-12{padding-block:calc(var(--spacing)*12)}.py-16{padding-block:calc(var(--spacing)*16)}.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)}.pb-4{padding-bottom:calc(var(--spacing)*4)}.pl-4{padding-left:calc(var(--spacing)*4)}.pl-8{padding-left:calc(var(--spacing)*8)}.pl-10{padding-left:calc(var(--spacing)*10)}.text-center{text-align:center}.text-left{text-align:left}.text-right{text-align:right}.font-mono{font-family:var(--font-mono)}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\[10px\]{font-size:10px}.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-widest{--tw-tracking:var(--tracking-widest);letter-spacing:var(--tracking-widest)}.break-all{word-break:break-all}.whitespace-nowrap{white-space:nowrap}.whitespace-pre-line{white-space:pre-line}.whitespace-pre-wrap{white-space:pre-wrap}.text-amber-400{color:var(--color-amber-400)}.text-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-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-green{color:var(--color-bambu-green)}.text-bambu-green\/70{color:#00ae42b3}@supports (color:color-mix(in lab,red,red)){.text-bambu-green\/70{color:color-mix(in oklab,var(--color-bambu-green)70%,transparent)}}.text-blue-400{color:var(--color-blue-400)}.text-blue-700{color:var(--color-blue-700)}.text-cyan-400{color:var(--color-cyan-400)}.text-emerald-400{color:var(--color-emerald-400)}.text-gray-400{color:var(--color-gray-400)}.text-gray-500{color:var(--color-gray-500)}.text-gray-600{color:var(--color-gray-600)}.text-gray-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-indigo-400{color:var(--color-indigo-400)}.text-orange-400{color:var(--color-orange-400)}.text-orange-600{color:var(--color-orange-600)}.text-purple-400{color:var(--color-purple-400)}.text-red-300{color:var(--color-red-300)}.text-red-400{color:var(--color-red-400)}.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-yellow-200{color:var(--color-yellow-200)}.text-yellow-200\/70{color:#fff085b3}@supports (color:color-mix(in lab,red,red)){.text-yellow-200\/70{color:color-mix(in oklab,var(--color-yellow-200)70%,transparent)}}.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)}}.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,)}.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-80{opacity:.8}.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-2xl{--tw-shadow:0 25px 50px -12px var(--tw-shadow-color,#00000040);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-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-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:#00ae4240}@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)}.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,)}.filter{filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.backdrop-blur-sm{--tw-backdrop-blur:blur(var(--blur-sm));-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-200{--tw-duration:.2s;transition-duration:.2s}.duration-300{--tw-duration:.3s;transition-duration:.3s}.duration-500{--tw-duration:.5s;transition-duration:.5s}.ease-in-out{--tw-ease:var(--ease-in-out);transition-timing-function:var(--ease-in-out)}@media(hover:hover){.group-hover\:bg-bambu-green\/20:is(:where(.group):hover *){background-color:#00ae4233}@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-green:is(:where(.group):hover *){color:var(--color-bambu-green)}.group-hover\:opacity-50:is(:where(.group):hover *){opacity:.5}.group-hover\:opacity-100:is(:where(.group):hover *){opacity:1}}.peer-checked\:bg-bambu-green:is(:where(.peer):checked~*){background-color:var(--color-bambu-green)}.peer-focus\:outline-none:is(:where(.peer):focus~*){--tw-outline-style:none;outline-style:none}.before\:absolute:before{content:var(--tw-content);position:absolute}.before\:top-0:before{content:var(--tw-content);top:calc(var(--spacing)*0)}.before\:right-0:before{content:var(--tw-content);right:calc(var(--spacing)*0)}.before\:left-0:before{content:var(--tw-content);left:calc(var(--spacing)*0)}.before\:h-0\.5:before{content:var(--tw-content);height:calc(var(--spacing)*.5)}.before\:bg-bambu-green:before{content:var(--tw-content);background-color:var(--color-bambu-green)}.after\:absolute:after{content:var(--tw-content);position:absolute}.after\:top-\[2px\]:after{content:var(--tw-content);top:2px}.after\:left-\[2px\]:after{content:var(--tw-content);left:2px}.after\:h-4:after{content:var(--tw-content);height:calc(var(--spacing)*4)}.after\:h-5:after{content:var(--tw-content);height:calc(var(--spacing)*5)}.after\:w-4:after{content:var(--tw-content);width:calc(var(--spacing)*4)}.after\:w-5:after{content:var(--tw-content);width:calc(var(--spacing)*5)}.after\:rounded-full:after{content:var(--tw-content);border-radius:3.40282e38px}.after\:bg-white:after{content:var(--tw-content);background-color:var(--color-white)}.after\:transition-all:after{content:var(--tw-content);transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.after\:content-\[\'\'\]:after{--tw-content:"";content:var(--tw-content)}.peer-checked\:after\:translate-x-full:is(:where(.peer):checked~*):after{content:var(--tw-content);--tw-translate-x:100%;translate:var(--tw-translate-x)var(--tw-translate-y)}.peer-checked\:after\:border-white:is(:where(.peer):checked~*):after{content:var(--tw-content);border-color:var(--color-white)}@media(hover:hover){.hover\:border-bambu-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{border-color:var(--color-bambu-green)}.hover\:border-bambu-green\/50:hover{border-color:#00ae4280}@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-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:#00ae421a}@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:#00ae4233}@supports (color:color-mix(in lab,red,red)){.hover\:bg-bambu-green\/20:hover{background-color:color-mix(in oklab,var(--color-bambu-green)20%,transparent)}}.hover\:bg-bambu-green\/30:hover{background-color:#00ae424d}@supports (color:color-mix(in lab,red,red)){.hover\:bg-bambu-green\/30:hover{background-color:color-mix(in oklab,var(--color-bambu-green)30%,transparent)}}.hover\:bg-bambu-green\/80:hover{background-color:#00ae42cc}@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\/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-100:hover{background-color:var(--color-gray-100)}.hover\:bg-gray-700:hover{background-color:var(--color-gray-700)}.hover\:bg-red-400\/10:hover{background-color:#ff65681a}@supports (color:color-mix(in lab,red,red)){.hover\:bg-red-400\/10:hover{background-color:color-mix(in oklab,var(--color-red-400)10%,transparent)}}.hover\:bg-red-500\/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-600:hover{background-color:var(--color-red-600)}.hover\:bg-red-700:hover{background-color:var(--color-red-700)}.hover\:bg-yellow-600:hover{background-color:var(--color-yellow-600)}.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:#00ae42b3}@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:#00ae42cc}@supports (color:color-mix(in lab,red,red)){.hover\:text-bambu-green\/80:hover{color:color-mix(in oklab,var(--color-bambu-green)80%,transparent)}}.hover\:text-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}}.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\: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\:p-1\.5{padding:calc(var(--spacing)*1.5)}}@media(min-width:48rem){.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:grid-cols-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))}}@media(min-width:64rem){.lg\:col-span-2{grid-column:span 2/span 2}.lg\:w-80{width:calc(var(--spacing)*80)}.lg\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.lg\:flex-row{flex-direction:row}.lg\:p-8{padding:calc(var(--spacing)*8)}}@media(min-width:80rem){.xl\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}}.dark\:border-bambu-dark-tertiary:where(.dark,.dark *){border-color:var(--color-bambu-dark-tertiary)}.dark\:bg-bambu-dark-secondary:where(.dark,.dark *){background-color:var(--color-bambu-dark-secondary)}.dark\:text-bambu-gray:where(.dark,.dark *){color:var(--color-bambu-gray)}.dark\:text-blue-300:where(.dark,.dark *){color:var(--color-blue-300)}.dark\:text-white:where(.dark,.dark *){color:var(--color-white)}@media(hover:hover){.dark\:hover\:bg-bambu-dark-tertiary:where(.dark,.dark *):hover{background-color:var(--color-bambu-dark-tertiary)}.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{--bg-primary:#f5f5f5;--bg-secondary:#fff;--bg-tertiary:#e5e5e5;--text-primary:#1a1a1a;--text-secondary:#4a4a4a;--text-muted:#6b6b6b;--text-tertiary:gray;--border-color:#d4d4d4;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:Inter,system-ui,sans-serif;font-weight:400;line-height:1.5}.dark{--bg-primary:#1a1a1a;--bg-secondary:#2d2d2d;--bg-tertiary:#3d3d3d;--text-primary:#fff;--text-secondary:#a0a0a0;--text-muted:gray;--text-tertiary:#4a4a4a;--border-color:#3d3d3d}body{background-color:var(--bg-primary);color:var(--text-primary);min-height:100vh;margin:0;transition:background-color .2s,color .2s}#root{min-height:100vh}.text-white{color:var(--text-primary)}.bg-bambu-dark,.bg-bambu-dark-secondary,.bg-bambu-dark-tertiary,.border-bambu-dark-tertiary{transition:background-color .2s,border-color .2s}@keyframes slide-in{0%{opacity:0;transform:translate(100%)}to{opacity:1;transform:translate(0)}}.animate-slide-in{animation:.2s ease-out slide-in}.icon-theme{opacity:.5}.dark .icon-theme{filter:invert();opacity:.4}.icon-green{filter:invert(48%)sepia(89%)saturate(459%)hue-rotate(93deg)brightness(95%)contrast(92%);opacity:1}.icon-heating{filter:invert(50%)sepia()saturate(1000%)hue-rotate(360deg)brightness()contrast();opacity:1}.dark .jogpad-theme{filter:brightness(.35)contrast(1.2)}.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)}@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-Crbfjp9b.css b/static/assets/index-Crbfjp9b.css deleted file mode 100644 index 482533bd2..000000000 --- a/static/assets/index-Crbfjp9b.css +++ /dev/null @@ -1 +0,0 @@ -@import"https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap";@layer properties,theme,base,components,utilities;@layer theme{:root,:host{--font-sans:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--color-red-300:oklch(80.8% .114 19.571);--color-red-400:oklch(70.4% .191 22.216);--color-red-500:oklch(63.7% .237 25.331);--color-red-600:oklch(57.7% .245 27.325);--color-red-700:oklch(50.5% .213 27.518);--color-orange-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-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-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-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-emerald-400:oklch(76.5% .177 163.223);--color-emerald-500:oklch(69.6% .17 162.48);--color-cyan-400:oklch(78.9% .154 211.53);--color-cyan-500:oklch(71.5% .143 215.221);--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-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-100:oklch(96.7% .003 264.542);--color-gray-200:oklch(92.8% .006 264.531);--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-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);--font-weight-normal:400;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--tracking-wide:.025em;--tracking-widest:.1em;--radius-sm:.25rem;--radius-md:.375rem;--radius-lg:.5rem;--radius-xl:.75rem;--ease-in-out:cubic-bezier(.4,0,.2,1);--animate-spin:spin 1s linear infinite;--animate-pulse:pulse 2s cubic-bezier(.4,0,.6,1)infinite;--blur-sm:8px;--aspect-video:16/9;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4,0,.2,1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono);--color-bambu-green:#00ae42;--color-bambu-green-light:#00c64d;--color-bambu-green-dark:#009438;--color-bambu-dark:var(--bg-primary);--color-bambu-dark-secondary:var(--bg-secondary);--color-bambu-dark-tertiary:var(--bg-tertiary);--color-bambu-gray:var(--text-muted);--color-bambu-gray-light:var(--text-secondary);--color-bambu-gray-dark:var(--text-tertiary)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer utilities{.pointer-events-none{pointer-events:none}.visible{visibility:visible}.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.sticky{position:sticky}.inset-0{inset:calc(var(--spacing)*0)}.inset-y-0{inset-block:calc(var(--spacing)*0)}.-top-1{top:calc(var(--spacing)*-1)}.top-0{top:calc(var(--spacing)*0)}.top-1\/2{top:50%}.top-2{top:calc(var(--spacing)*2)}.top-4{top:calc(var(--spacing)*4)}.top-\[2px\]{top:2px}.top-full{top:100%}.-right-1{right:calc(var(--spacing)*-1)}.right-0{right:calc(var(--spacing)*0)}.right-2{right:calc(var(--spacing)*2)}.right-4{right:calc(var(--spacing)*4)}.right-6{right:calc(var(--spacing)*6)}.right-12{right:calc(var(--spacing)*12)}.bottom-1{bottom:calc(var(--spacing)*1)}.bottom-2{bottom:calc(var(--spacing)*2)}.bottom-4{bottom:calc(var(--spacing)*4)}.bottom-6{bottom:calc(var(--spacing)*6)}.left-0{left:calc(var(--spacing)*0)}.left-1\/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-12{left:calc(var(--spacing)*12)}.left-\[2px\]{left:2px}.z-10{z-index:10}.z-20{z-index:20}.z-30{z-index:30}.z-40{z-index:40}.z-50{z-index:50}.z-60,.z-\[60\]{z-index:60}.col-span-1{grid-column:span 1/span 1}.col-span-2{grid-column:span 2/span 2}.col-span-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-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-2{margin-top:calc(var(--spacing)*2)}.mt-3{margin-top:calc(var(--spacing)*3)}.mt-4{margin-top:calc(var(--spacing)*4)}.mt-6{margin-top:calc(var(--spacing)*6)}.mr-1{margin-right:calc(var(--spacing)*1)}.mr-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-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-6{margin-bottom:calc(var(--spacing)*6)}.mb-8{margin-bottom:calc(var(--spacing)*8)}.-ml-1{margin-left:calc(var(--spacing)*-1)}.ml-0\.5{margin-left:calc(var(--spacing)*.5)}.ml-1{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-8{margin-left:calc(var(--spacing)*8)}.ml-16{margin-left:calc(var(--spacing)*16)}.ml-64{margin-left:calc(var(--spacing)*64)}.ml-auto{margin-left:auto}.line-clamp-3{-webkit-line-clamp:3;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.block{display:block}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.table{display:table}.aspect-square{aspect-ratio:1}.aspect-video{aspect-ratio:var(--aspect-video)}.h-1{height:calc(var(--spacing)*1)}.h-1\.5{height:calc(var(--spacing)*1.5)}.h-2{height:calc(var(--spacing)*2)}.h-2\.5{height:calc(var(--spacing)*2.5)}.h-3{height:calc(var(--spacing)*3)}.h-3\.5{height:calc(var(--spacing)*3.5)}.h-4{height:calc(var(--spacing)*4)}.h-5{height:calc(var(--spacing)*5)}.h-6{height:calc(var(--spacing)*6)}.h-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-28{height:calc(var(--spacing)*28)}.h-64{height:calc(var(--spacing)*64)}.h-80{height:calc(var(--spacing)*80)}.h-\[80vh\]{height:80vh}.h-\[160px\]{height:160px}.h-full{height:100%}.max-h-40{max-height:calc(var(--spacing)*40)}.max-h-60{max-height:calc(var(--spacing)*60)}.max-h-96{max-height:calc(var(--spacing)*96)}.max-h-\[60vh\]{max-height:60vh}.max-h-\[80vh\]{max-height:80vh}.max-h-\[85vh\]{max-height:85vh}.max-h-\[90vh\]{max-height:90vh}.max-h-\[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-\[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-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-28{width:calc(var(--spacing)*28)}.w-32{width:calc(var(--spacing)*32)}.w-36{width:calc(var(--spacing)*36)}.w-40{width:calc(var(--spacing)*40)}.w-48{width:calc(var(--spacing)*48)}.w-56{width:calc(var(--spacing)*56)}.w-64{width:calc(var(--spacing)*64)}.w-auto{width:auto}.w-full{width:100%}.w-px{width:1px}.max-w-2xl{max-width:var(--container-2xl)}.max-w-3xl{max-width:var(--container-3xl)}.max-w-4xl{max-width:var(--container-4xl)}.max-w-6xl{max-width:var(--container-6xl)}.max-w-32{max-width:calc(var(--spacing)*32)}.max-w-\[90vw\]{max-width:90vw}.max-w-\[100px\]{max-width:100px}.max-w-\[200px\]{max-width:200px}.max-w-full{max-width:100%}.max-w-lg{max-width:var(--container-lg)}.max-w-md{max-width:var(--container-md)}.max-w-none{max-width:none}.max-w-sm{max-width:var(--container-sm)}.max-w-xl{max-width:var(--container-xl)}.min-w-0{min-width:calc(var(--spacing)*0)}.min-w-48{min-width:calc(var(--spacing)*48)}.min-w-\[80px\]{min-width:80px}.min-w-\[160px\]{min-width:160px}.min-w-\[200px\]{min-width:200px}.flex-1{flex:1}.flex-shrink-0,.shrink-0{flex-shrink:0}.-translate-x-1\/2{--tw-translate-x: -50% ;translate:var(--tw-translate-x)var(--tw-translate-y)}.translate-x-0{--tw-translate-x:calc(var(--spacing)*0);translate:var(--tw-translate-x)var(--tw-translate-y)}.translate-x-0\.5{--tw-translate-x:calc(var(--spacing)*.5);translate:var(--tw-translate-x)var(--tw-translate-y)}.translate-x-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-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-grab{cursor:grab}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.resize{resize:both}.resize-none{resize:none}.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-7{grid-template-columns:repeat(7,minmax(0,1fr))}.grid-cols-12{grid-template-columns:repeat(12,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.items-end{align-items:flex-end}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.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-1>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*1)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*1)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*2)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*2)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*3)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*3)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*4)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*4)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-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-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)}.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-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-md{border-radius:var(--radius-md)}.rounded-sm{border-radius:var(--radius-sm)}.rounded-xl{border-radius:var(--radius-xl)}.rounded-t-xl{border-top-left-radius:var(--radius-xl);border-top-right-radius:var(--radius-xl)}.rounded-l{border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.rounded-r{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}.border{border-style:var(--tw-border-style);border-width:1px}.border-2{border-style:var(--tw-border-style);border-width:2px}.border-4{border-style:var(--tw-border-style);border-width:4px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-r{border-right-style:var(--tw-border-style);border-right-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-b-2{border-bottom-style:var(--tw-border-style);border-bottom-width:2px}.border-l-2{border-left-style:var(--tw-border-style);border-left-width:2px}.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-bambu-dark-tertiary{border-color:var(--color-bambu-dark-tertiary)}.border-bambu-green{border-color:var(--color-bambu-green)}.border-bambu-green\/20{border-color:#00ae4233}@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:#00ae424d}@supports (color:color-mix(in lab,red,red)){.border-bambu-green\/30{border-color:color-mix(in oklab,var(--color-bambu-green)30%,transparent)}}.border-bambu-green\/50{border-color:#00ae4280}@supports (color:color-mix(in lab,red,red)){.border-bambu-green\/50{border-color:color-mix(in oklab,var(--color-bambu-green)50%,transparent)}}.border-blue-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-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-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-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-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-transparent{border-top-color:#0000}.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-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\/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\/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\/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{background-color:var(--color-bambu-green)}.bg-bambu-green\/10{background-color:#00ae421a}@supports (color:color-mix(in lab,red,red)){.bg-bambu-green\/10{background-color:color-mix(in oklab,var(--color-bambu-green)10%,transparent)}}.bg-bambu-green\/20{background-color:#00ae4233}@supports (color:color-mix(in lab,red,red)){.bg-bambu-green\/20{background-color:color-mix(in oklab,var(--color-bambu-green)20%,transparent)}}.bg-bambu-green\/30{background-color:#00ae424d}@supports (color:color-mix(in lab,red,red)){.bg-bambu-green\/30{background-color:color-mix(in oklab,var(--color-bambu-green)30%,transparent)}}.bg-bambu-green\/50{background-color:#00ae4280}@supports (color:color-mix(in lab,red,red)){.bg-bambu-green\/50{background-color:color-mix(in oklab,var(--color-bambu-green)50%,transparent)}}.bg-bambu-green\/75{background-color:#00ae42bf}@supports (color:color-mix(in lab,red,red)){.bg-bambu-green\/75{background-color:color-mix(in oklab,var(--color-bambu-green)75%,transparent)}}.bg-black{background-color:var(--color-black)}.bg-black\/50{background-color:#00000080}@supports (color:color-mix(in lab,red,red)){.bg-black\/50{background-color:color-mix(in oklab,var(--color-black)50%,transparent)}}.bg-black\/60{background-color:#0009}@supports (color:color-mix(in lab,red,red)){.bg-black\/60{background-color:color-mix(in oklab,var(--color-black)60%,transparent)}}.bg-black\/70{background-color:#000000b3}@supports (color:color-mix(in lab,red,red)){.bg-black\/70{background-color:color-mix(in oklab,var(--color-black)70%,transparent)}}.bg-black\/80{background-color:#000c}@supports (color:color-mix(in lab,red,red)){.bg-black\/80{background-color:color-mix(in oklab,var(--color-black)80%,transparent)}}.bg-black\/90{background-color:#000000e6}@supports (color:color-mix(in lab,red,red)){.bg-black\/90{background-color:color-mix(in oklab,var(--color-black)90%,transparent)}}.bg-blue-400{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-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-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-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\/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-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\/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-purple-500\/20{background-color:#ac4bff33}@supports (color:color-mix(in lab,red,red)){.bg-purple-500\/20{background-color:color-mix(in oklab,var(--color-purple-500)20%,transparent)}}.bg-purple-500\/80{background-color:#ac4bffcc}@supports (color:color-mix(in lab,red,red)){.bg-purple-500\/80{background-color:color-mix(in oklab,var(--color-purple-500)80%,transparent)}}.bg-red-400{background-color:var(--color-red-400)}.bg-red-400\/10{background-color:#ff65681a}@supports (color:color-mix(in lab,red,red)){.bg-red-400\/10{background-color:color-mix(in oklab,var(--color-red-400)10%,transparent)}}.bg-red-500{background-color:var(--color-red-500)}.bg-red-500\/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\/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-yellow-400{background-color:var(--color-yellow-400)}.bg-yellow-400\/10{background-color:#fac8001a}@supports (color:color-mix(in lab,red,red)){.bg-yellow-400\/10{background-color:color-mix(in oklab,var(--color-yellow-400)10%,transparent)}}.bg-yellow-400\/20{background-color:#fac80033}@supports (color:color-mix(in lab,red,red)){.bg-yellow-400\/20{background-color:color-mix(in oklab,var(--color-yellow-400)20%,transparent)}}.bg-yellow-500{background-color:var(--color-yellow-500)}.bg-yellow-500\/10{background-color:#edb2001a}@supports (color:color-mix(in lab,red,red)){.bg-yellow-500\/10{background-color:color-mix(in oklab,var(--color-yellow-500)10%,transparent)}}.bg-yellow-500\/20{background-color:#edb20033}@supports (color:color-mix(in lab,red,red)){.bg-yellow-500\/20{background-color:color-mix(in oklab,var(--color-yellow-500)20%,transparent)}}.bg-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))}.from-bambu-green\/10{--tw-gradient-from:#00ae421a}@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-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-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-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))}.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-8{padding-block:calc(var(--spacing)*8)}.py-12{padding-block:calc(var(--spacing)*12)}.py-16{padding-block:calc(var(--spacing)*16)}.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)}.pb-4{padding-bottom:calc(var(--spacing)*4)}.pl-4{padding-left:calc(var(--spacing)*4)}.pl-8{padding-left:calc(var(--spacing)*8)}.pl-10{padding-left:calc(var(--spacing)*10)}.text-center{text-align:center}.text-left{text-align:left}.text-right{text-align:right}.font-mono{font-family:var(--font-mono)}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\[10px\]{font-size:10px}.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-widest{--tw-tracking:var(--tracking-widest);letter-spacing:var(--tracking-widest)}.break-all{word-break:break-all}.whitespace-nowrap{white-space:nowrap}.whitespace-pre-line{white-space:pre-line}.whitespace-pre-wrap{white-space:pre-wrap}.text-amber-400{color:var(--color-amber-400)}.text-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-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-green{color:var(--color-bambu-green)}.text-bambu-green\/70{color:#00ae42b3}@supports (color:color-mix(in lab,red,red)){.text-bambu-green\/70{color:color-mix(in oklab,var(--color-bambu-green)70%,transparent)}}.text-blue-400{color:var(--color-blue-400)}.text-blue-700{color:var(--color-blue-700)}.text-cyan-400{color:var(--color-cyan-400)}.text-emerald-400{color:var(--color-emerald-400)}.text-gray-400{color:var(--color-gray-400)}.text-gray-500{color:var(--color-gray-500)}.text-gray-600{color:var(--color-gray-600)}.text-gray-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-indigo-400{color:var(--color-indigo-400)}.text-orange-400{color:var(--color-orange-400)}.text-orange-600{color:var(--color-orange-600)}.text-purple-400{color:var(--color-purple-400)}.text-red-300{color:var(--color-red-300)}.text-red-400{color:var(--color-red-400)}.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-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)}}.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,)}.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-80{opacity:.8}.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-2xl{--tw-shadow:0 25px 50px -12px var(--tw-shadow-color,#00000040);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-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-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:#00ae4240}@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)}.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,)}.filter{filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.backdrop-blur-sm{--tw-backdrop-blur:blur(var(--blur-sm));-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-200{--tw-duration:.2s;transition-duration:.2s}.duration-300{--tw-duration:.3s;transition-duration:.3s}.duration-500{--tw-duration:.5s;transition-duration:.5s}.ease-in-out{--tw-ease:var(--ease-in-out);transition-timing-function:var(--ease-in-out)}@media(hover:hover){.group-hover\:bg-bambu-green\/20:is(:where(.group):hover *){background-color:#00ae4233}@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-green:is(:where(.group):hover *){color:var(--color-bambu-green)}.group-hover\:opacity-50:is(:where(.group):hover *){opacity:.5}.group-hover\:opacity-100:is(:where(.group):hover *){opacity:1}}.peer-checked\:bg-bambu-green:is(:where(.peer):checked~*){background-color:var(--color-bambu-green)}.peer-focus\:outline-none:is(:where(.peer):focus~*){--tw-outline-style:none;outline-style:none}.before\:absolute:before{content:var(--tw-content);position:absolute}.before\:top-0:before{content:var(--tw-content);top:calc(var(--spacing)*0)}.before\:right-0:before{content:var(--tw-content);right:calc(var(--spacing)*0)}.before\:left-0:before{content:var(--tw-content);left:calc(var(--spacing)*0)}.before\:h-0\.5:before{content:var(--tw-content);height:calc(var(--spacing)*.5)}.before\:bg-bambu-green:before{content:var(--tw-content);background-color:var(--color-bambu-green)}.after\:absolute:after{content:var(--tw-content);position:absolute}.after\:top-\[2px\]:after{content:var(--tw-content);top:2px}.after\:left-\[2px\]:after{content:var(--tw-content);left:2px}.after\:h-4:after{content:var(--tw-content);height:calc(var(--spacing)*4)}.after\:h-5:after{content:var(--tw-content);height:calc(var(--spacing)*5)}.after\:w-4:after{content:var(--tw-content);width:calc(var(--spacing)*4)}.after\:w-5:after{content:var(--tw-content);width:calc(var(--spacing)*5)}.after\:rounded-full:after{content:var(--tw-content);border-radius:3.40282e38px}.after\:bg-white:after{content:var(--tw-content);background-color:var(--color-white)}.after\:transition-all:after{content:var(--tw-content);transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.after\:content-\[\'\'\]:after{--tw-content:"";content:var(--tw-content)}.peer-checked\:after\:translate-x-full:is(:where(.peer):checked~*):after{content:var(--tw-content);--tw-translate-x:100%;translate:var(--tw-translate-x)var(--tw-translate-y)}.peer-checked\:after\:border-white:is(:where(.peer):checked~*):after{content:var(--tw-content);border-color:var(--color-white)}@media(hover:hover){.hover\:border-bambu-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{border-color:var(--color-bambu-green)}.hover\:border-bambu-green\/50:hover{border-color:#00ae4280}@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-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:#00ae421a}@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:#00ae4233}@supports (color:color-mix(in lab,red,red)){.hover\:bg-bambu-green\/20:hover{background-color:color-mix(in oklab,var(--color-bambu-green)20%,transparent)}}.hover\:bg-bambu-green\/30:hover{background-color:#00ae424d}@supports (color:color-mix(in lab,red,red)){.hover\:bg-bambu-green\/30:hover{background-color:color-mix(in oklab,var(--color-bambu-green)30%,transparent)}}.hover\:bg-bambu-green\/80:hover{background-color:#00ae42cc}@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\/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-100:hover{background-color:var(--color-gray-100)}.hover\:bg-gray-700:hover{background-color:var(--color-gray-700)}.hover\:bg-red-400\/10:hover{background-color:#ff65681a}@supports (color:color-mix(in lab,red,red)){.hover\:bg-red-400\/10:hover{background-color:color-mix(in oklab,var(--color-red-400)10%,transparent)}}.hover\:bg-red-500\/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-600:hover{background-color:var(--color-red-600)}.hover\:bg-red-700:hover{background-color:var(--color-red-700)}.hover\:bg-yellow-600:hover{background-color:var(--color-yellow-600)}.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:#00ae42b3}@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:#00ae42cc}@supports (color:color-mix(in lab,red,red)){.hover\:text-bambu-green\/80:hover{color:color-mix(in oklab,var(--color-bambu-green)80%,transparent)}}.hover\:text-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}}.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\: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\:p-1\.5{padding:calc(var(--spacing)*1.5)}}@media(min-width:48rem){.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:grid-cols-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))}}@media(min-width:64rem){.lg\:col-span-2{grid-column:span 2/span 2}.lg\:w-80{width:calc(var(--spacing)*80)}.lg\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.lg\:flex-row{flex-direction:row}.lg\:p-8{padding:calc(var(--spacing)*8)}}@media(min-width:80rem){.xl\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}}.dark\:border-bambu-dark-tertiary:where(.dark,.dark *){border-color:var(--color-bambu-dark-tertiary)}.dark\:bg-bambu-dark-secondary:where(.dark,.dark *){background-color:var(--color-bambu-dark-secondary)}.dark\:text-bambu-gray:where(.dark,.dark *){color:var(--color-bambu-gray)}.dark\:text-blue-300:where(.dark,.dark *){color:var(--color-blue-300)}.dark\:text-white:where(.dark,.dark *){color:var(--color-white)}@media(hover:hover){.dark\:hover\:bg-bambu-dark-tertiary:where(.dark,.dark *):hover{background-color:var(--color-bambu-dark-tertiary)}.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{--bg-primary:#f5f5f5;--bg-secondary:#fff;--bg-tertiary:#e5e5e5;--text-primary:#1a1a1a;--text-secondary:#4a4a4a;--text-muted:#6b6b6b;--text-tertiary:gray;--border-color:#d4d4d4;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:Inter,system-ui,sans-serif;font-weight:400;line-height:1.5}.dark{--bg-primary:#1a1a1a;--bg-secondary:#2d2d2d;--bg-tertiary:#3d3d3d;--text-primary:#fff;--text-secondary:#a0a0a0;--text-muted:gray;--text-tertiary:#4a4a4a;--border-color:#3d3d3d}body{background-color:var(--bg-primary);color:var(--text-primary);min-height:100vh;margin:0;transition:background-color .2s,color .2s}#root{min-height:100vh}.text-white{color:var(--text-primary)}.bg-bambu-dark,.bg-bambu-dark-secondary,.bg-bambu-dark-tertiary,.border-bambu-dark-tertiary{transition:background-color .2s,border-color .2s}@keyframes slide-in{0%{opacity:0;transform:translate(100%)}to{opacity:1;transform:translate(0)}}.animate-slide-in{animation:.2s ease-out slide-in}.icon-theme{opacity:.5}.dark .icon-theme{filter:invert();opacity:.4}.icon-green{filter:invert(48%)sepia(89%)saturate(459%)hue-rotate(93deg)brightness(95%)contrast(92%);opacity:1}.icon-heating{filter:invert(50%)sepia()saturate(1000%)hue-rotate(360deg)brightness()contrast();opacity:1}.dark .jogpad-theme{filter:brightness(.35)contrast(1.2)}.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)}@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-BdUzePl9.js b/static/assets/index-DRtbW6PZ.js similarity index 51% rename from static/assets/index-BdUzePl9.js rename to static/assets/index-DRtbW6PZ.js index 60d38a9b9..dc38882a6 100644 --- a/static/assets/index-BdUzePl9.js +++ b/static/assets/index-DRtbW6PZ.js @@ -1,18 +1,18 @@ -function yne(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 s of i)if(s.type==="childList")for(const a of s.addedNodes)a.tagName==="LINK"&&a.rel==="modulepreload"&&r(a)}).observe(document,{childList:!0,subtree:!0});function n(i){const s={};return i.integrity&&(s.integrity=i.integrity),i.referrerPolicy&&(s.referrerPolicy=i.referrerPolicy),i.crossOrigin==="use-credentials"?s.credentials="include":i.crossOrigin==="anonymous"?s.credentials="omit":s.credentials="same-origin",s}function r(i){if(i.ep)return;i.ep=!0;const s=n(i);fetch(i.href,s)}})();var zb=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function eo(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}var L2={exports:{}},zg={};var dU;function _ne(){if(dU)return zg;dU=1;var t=Symbol.for("react.transitional.element"),e=Symbol.for("react.fragment");function n(r,i,s){var a=null;if(s!==void 0&&(a=""+s),i.key!==void 0&&(a=""+i.key),"key"in i){s={};for(var o in i)o!=="key"&&(s[o]=i[o])}else s=i;return i=s.ref,{$$typeof:t,type:r,key:a,ref:i!==void 0?i:null,props:s}}return zg.Fragment=e,zg.jsx=n,zg.jsxs=n,zg}var fU;function Sne(){return fU||(fU=1,L2.exports=_ne()),L2.exports}var u=Sne(),j2={exports:{}},Zt={};var hU;function wne(){if(hU)return Zt;hU=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"),s=Symbol.for("react.consumer"),a=Symbol.for("react.context"),o=Symbol.for("react.forward_ref"),l=Symbol.for("react.suspense"),c=Symbol.for("react.memo"),d=Symbol.for("react.lazy"),h=Symbol.for("react.activity"),g=Symbol.iterator;function m(B){return B===null||typeof B!="object"?null:(B=g&&B[g]||B["@@iterator"],typeof B=="function"?B:null)}var b={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},y=Object.assign,v={};function x(B,q,te){this.props=B,this.context=q,this.refs=v,this.updater=te||b}x.prototype.isReactComponent={},x.prototype.setState=function(B,q){if(typeof B!="object"&&typeof B!="function"&&B!=null)throw Error("takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,B,q,"setState")},x.prototype.forceUpdate=function(B){this.updater.enqueueForceUpdate(this,B,"forceUpdate")};function M(){}M.prototype=x.prototype;function w(B,q,te){this.props=B,this.context=q,this.refs=v,this.updater=te||b}var A=w.prototype=new M;A.constructor=w,y(A,x.prototype),A.isPureReactComponent=!0;var T=Array.isArray;function R(){}var C={H:null,A:null,T:null,S:null},I=Object.prototype.hasOwnProperty;function N(B,q,te){var ae=te.ref;return{$$typeof:t,type:B,key:q,ref:ae!==void 0?ae:null,props:te}}function D(B,q){return N(B.type,q,B.props)}function z(B){return typeof B=="object"&&B!==null&&B.$$typeof===t}function j(B){var q={"=":"=0",":":"=2"};return"$"+B.replace(/[=:]/g,function(te){return q[te]})}var W=/\/+/g;function P(B,q){return typeof B=="object"&&B!==null&&B.key!=null?j(""+B.key):q.toString(36)}function $(B){switch(B.status){case"fulfilled":return B.value;case"rejected":throw B.reason;default:switch(typeof B.status=="string"?B.then(R,R):(B.status="pending",B.then(function(q){B.status==="pending"&&(B.status="fulfilled",B.value=q)},function(q){B.status==="pending"&&(B.status="rejected",B.reason=q)})),B.status){case"fulfilled":return B.value;case"rejected":throw B.reason}}throw B}function X(B,q,te,ae,ge){var ie=typeof B;(ie==="undefined"||ie==="boolean")&&(B=null);var me=!1;if(B===null)me=!0;else switch(ie){case"bigint":case"string":case"number":me=!0;break;case"object":switch(B.$$typeof){case t:case e:me=!0;break;case d:return me=B._init,X(me(B._payload),q,te,ae,ge)}}if(me)return ge=ge(B),me=ae===""?"."+P(B,0):ae,T(ge)?(te="",me!=null&&(te=me.replace(W,"$&/")+"/"),X(ge,q,te,"",function(_e){return _e})):ge!=null&&(z(ge)&&(ge=D(ge,te+(ge.key==null||B&&B.key===ge.key?"":(""+ge.key).replace(W,"$&/")+"/")+me)),q.push(ge)),1;me=0;var Ee=ae===""?".":ae+":";if(T(B))for(var fe=0;fe>>1,ne=X[Z];if(0>>1;Zi(te,Q))aei(ge,te)?(X[Z]=ge,X[ae]=Q,Z=ae):(X[Z]=te,X[q]=Q,Z=q);else if(aei(ge,Q))X[Z]=ge,X[ae]=Q,Z=ae;else break e}}return V}function i(X,V){var Q=X.sortIndex-V.sortIndex;return Q!==0?Q:X.id-V.id}if(t.unstable_now=void 0,typeof performance=="object"&&typeof performance.now=="function"){var s=performance;t.unstable_now=function(){return s.now()}}else{var a=Date,o=a.now();t.unstable_now=function(){return a.now()-o}}var l=[],c=[],d=1,h=null,g=3,m=!1,b=!1,y=!1,v=!1,x=typeof setTimeout=="function"?setTimeout:null,M=typeof clearTimeout=="function"?clearTimeout:null,w=typeof setImmediate<"u"?setImmediate:null;function A(X){for(var V=n(c);V!==null;){if(V.callback===null)r(c);else if(V.startTime<=X)r(c),V.sortIndex=V.expirationTime,e(l,V);else break;V=n(c)}}function T(X){if(y=!1,A(X),!b)if(n(l)!==null)b=!0,R||(R=!0,j());else{var V=n(c);V!==null&&$(T,V.startTime-X)}}var R=!1,C=-1,I=5,N=-1;function D(){return v?!0:!(t.unstable_now()-NX&&D());){var Z=h.callback;if(typeof Z=="function"){h.callback=null,g=h.priorityLevel;var ne=Z(h.expirationTime<=X);if(X=t.unstable_now(),typeof ne=="function"){h.callback=ne,A(X),V=!0;break t}h===n(l)&&r(l),A(X)}else r(l);h=n(l)}if(h!==null)V=!0;else{var B=n(c);B!==null&&$(T,B.startTime-X),V=!1}}break e}finally{h=null,g=Q,m=!1}V=void 0}}finally{V?j():R=!1}}}var j;if(typeof w=="function")j=function(){w(z)};else if(typeof MessageChannel<"u"){var W=new MessageChannel,P=W.port2;W.port1.onmessage=z,j=function(){P.postMessage(null)}}else j=function(){x(z,0)};function $(X,V){C=x(function(){X(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(X){X.callback=null},t.unstable_forceFrameRate=function(X){0>X||125Z?(X.sortIndex=Q,e(c,X),n(l)===null&&X===n(c)&&(y?(M(C),C=-1):y=!0,$(T,Q-Z))):(X.sortIndex=ne,e(l,X),b||m||(b=!0,R||(R=!0,j()))),X},t.unstable_shouldYield=D,t.unstable_wrapCallback=function(X){var V=g;return function(){var Q=g;g=V;try{return X.apply(this,arguments)}finally{g=Q}}}})(F2)),F2}var gU;function Ane(){return gU||(gU=1,U2.exports=Ene()),U2.exports}var z2={exports:{}},Ji={};var xU;function Tne(){if(xU)return Ji;xU=1;var t=Am();function e(l){var c="https://react.dev/errors/"+l;if(1"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(t)}catch(e){console.error(e)}}return t(),z2.exports=Tne(),z2.exports}var bU;function Cne(){if(bU)return Bg;bU=1;var t=Ane(),e=Am(),n=AG();function r(f){var p="https://react.dev/errors/"+f;if(1ne||(f.current=Z[ne],Z[ne]=null,ne--)}function te(f,p){ne++,Z[ne]=f.current,f.current=p}var ae=B(null),ge=B(null),ie=B(null),me=B(null);function Ee(f,p){switch(te(ie,p),te(ge,f),te(ae,null),p.nodeType){case 9:case 11:f=(f=p.documentElement)&&(f=f.namespaceURI)?O4(f):0;break;default:if(f=p.tagName,p=p.namespaceURI)p=O4(p),f=L4(p,f);else switch(f){case"svg":f=1;break;case"math":f=2;break;default:f=0}}q(ae),te(ae,f)}function fe(){q(ae),q(ge),q(ie)}function _e(f){f.memoizedState!==null&&te(me,f);var p=ae.current,_=L4(p,f.type);p!==_&&(te(ge,f),te(ae,_))}function Pe(f){ge.current===f&&(q(ae),q(ge)),me.current===f&&(q(me),jg._currentValue=Q)}var ue,ct;function H(f){if(ue===void 0)try{throw Error()}catch(_){var p=_.stack.trim().match(/\n( *(at )?)/);ue=p&&p[1]||"",ct=-1<_.stack.indexOf(` +function Sne(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 s of i)if(s.type==="childList")for(const a of s.addedNodes)a.tagName==="LINK"&&a.rel==="modulepreload"&&r(a)}).observe(document,{childList:!0,subtree:!0});function n(i){const s={};return i.integrity&&(s.integrity=i.integrity),i.referrerPolicy&&(s.referrerPolicy=i.referrerPolicy),i.crossOrigin==="use-credentials"?s.credentials="include":i.crossOrigin==="anonymous"?s.credentials="omit":s.credentials="same-origin",s}function r(i){if(i.ep)return;i.ep=!0;const s=n(i);fetch(i.href,s)}})();var Bv=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function to(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}var I2={exports:{}},zg={};var pU;function wne(){if(pU)return zg;pU=1;var t=Symbol.for("react.transitional.element"),e=Symbol.for("react.fragment");function n(r,i,s){var a=null;if(s!==void 0&&(a=""+s),i.key!==void 0&&(a=""+i.key),"key"in i){s={};for(var o in i)o!=="key"&&(s[o]=i[o])}else s=i;return i=s.ref,{$$typeof:t,type:r,key:a,ref:i!==void 0?i:null,props:s}}return zg.Fragment=e,zg.jsx=n,zg.jsxs=n,zg}var mU;function Mne(){return mU||(mU=1,I2.exports=wne()),I2.exports}var u=Mne(),U2={exports:{}},Zt={};var gU;function Ene(){if(gU)return Zt;gU=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"),s=Symbol.for("react.consumer"),a=Symbol.for("react.context"),o=Symbol.for("react.forward_ref"),l=Symbol.for("react.suspense"),c=Symbol.for("react.memo"),d=Symbol.for("react.lazy"),h=Symbol.for("react.activity"),g=Symbol.iterator;function m(B){return B===null||typeof B!="object"?null:(B=g&&B[g]||B["@@iterator"],typeof B=="function"?B:null)}var v={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},y=Object.assign,b={};function x(B,q,ee){this.props=B,this.context=q,this.refs=b,this.updater=ee||v}x.prototype.isReactComponent={},x.prototype.setState=function(B,q){if(typeof B!="object"&&typeof B!="function"&&B!=null)throw Error("takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,B,q,"setState")},x.prototype.forceUpdate=function(B){this.updater.enqueueForceUpdate(this,B,"forceUpdate")};function M(){}M.prototype=x.prototype;function w(B,q,ee){this.props=B,this.context=q,this.refs=b,this.updater=ee||v}var A=w.prototype=new M;A.constructor=w,y(A,x.prototype),A.isPureReactComponent=!0;var T=Array.isArray;function R(){}var C={H:null,A:null,T:null,S:null},I=Object.prototype.hasOwnProperty;function N(B,q,ee){var ae=ee.ref;return{$$typeof:t,type:B,key:q,ref:ae!==void 0?ae:null,props:ee}}function O(B,q){return N(B.type,q,B.props)}function z(B){return typeof B=="object"&&B!==null&&B.$$typeof===t}function j(B){var q={"=":"=0",":":"=2"};return"$"+B.replace(/[=:]/g,function(ee){return q[ee]})}var W=/\/+/g;function D(B,q){return typeof B=="object"&&B!==null&&B.key!=null?j(""+B.key):q.toString(36)}function $(B){switch(B.status){case"fulfilled":return B.value;case"rejected":throw B.reason;default:switch(typeof B.status=="string"?B.then(R,R):(B.status="pending",B.then(function(q){B.status==="pending"&&(B.status="fulfilled",B.value=q)},function(q){B.status==="pending"&&(B.status="rejected",B.reason=q)})),B.status){case"fulfilled":return B.value;case"rejected":throw B.reason}}throw B}function X(B,q,ee,ae,me){var ie=typeof B;(ie==="undefined"||ie==="boolean")&&(B=null);var pe=!1;if(B===null)pe=!0;else switch(ie){case"bigint":case"string":case"number":pe=!0;break;case"object":switch(B.$$typeof){case t:case e:pe=!0;break;case d:return pe=B._init,X(pe(B._payload),q,ee,ae,me)}}if(pe)return me=me(B),pe=ae===""?"."+D(B,0):ae,T(me)?(ee="",pe!=null&&(ee=pe.replace(W,"$&/")+"/"),X(me,q,ee,"",function(_e){return _e})):me!=null&&(z(me)&&(me=O(me,ee+(me.key==null||B&&B.key===me.key?"":(""+me.key).replace(W,"$&/")+"/")+pe)),q.push(me)),1;pe=0;var Ce=ae===""?".":ae+":";if(T(B))for(var fe=0;fe>>1,te=X[Y];if(0>>1;Yi(ee,Z))aei(me,ee)?(X[Y]=me,X[ae]=Z,Y=ae):(X[Y]=ee,X[q]=Z,Y=q);else if(aei(me,Z))X[Y]=me,X[ae]=Z,Y=ae;else break e}}return V}function i(X,V){var Z=X.sortIndex-V.sortIndex;return Z!==0?Z:X.id-V.id}if(t.unstable_now=void 0,typeof performance=="object"&&typeof performance.now=="function"){var s=performance;t.unstable_now=function(){return s.now()}}else{var a=Date,o=a.now();t.unstable_now=function(){return a.now()-o}}var l=[],c=[],d=1,h=null,g=3,m=!1,v=!1,y=!1,b=!1,x=typeof setTimeout=="function"?setTimeout:null,M=typeof clearTimeout=="function"?clearTimeout:null,w=typeof setImmediate<"u"?setImmediate:null;function A(X){for(var V=n(c);V!==null;){if(V.callback===null)r(c);else if(V.startTime<=X)r(c),V.sortIndex=V.expirationTime,e(l,V);else break;V=n(c)}}function T(X){if(y=!1,A(X),!v)if(n(l)!==null)v=!0,R||(R=!0,j());else{var V=n(c);V!==null&&$(T,V.startTime-X)}}var R=!1,C=-1,I=5,N=-1;function O(){return b?!0:!(t.unstable_now()-NX&&O());){var Y=h.callback;if(typeof Y=="function"){h.callback=null,g=h.priorityLevel;var te=Y(h.expirationTime<=X);if(X=t.unstable_now(),typeof te=="function"){h.callback=te,A(X),V=!0;break t}h===n(l)&&r(l),A(X)}else r(l);h=n(l)}if(h!==null)V=!0;else{var B=n(c);B!==null&&$(T,B.startTime-X),V=!1}}break e}finally{h=null,g=Z,m=!1}V=void 0}}finally{V?j():R=!1}}}var j;if(typeof w=="function")j=function(){w(z)};else if(typeof MessageChannel<"u"){var W=new MessageChannel,D=W.port2;W.port1.onmessage=z,j=function(){D.postMessage(null)}}else j=function(){x(z,0)};function $(X,V){C=x(function(){X(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(X){X.callback=null},t.unstable_forceFrameRate=function(X){0>X||125Y?(X.sortIndex=Z,e(c,X),n(l)===null&&X===n(c)&&(y?(M(C),C=-1):y=!0,$(T,Z-Y))):(X.sortIndex=te,e(l,X),v||m||(v=!0,R||(R=!0,j()))),X},t.unstable_shouldYield=O,t.unstable_wrapCallback=function(X){var V=g;return function(){var Z=g;g=V;try{return X.apply(this,arguments)}finally{g=Z}}}})(B2)),B2}var vU;function Cne(){return vU||(vU=1,z2.exports=Tne()),z2.exports}var H2={exports:{}},Ji={};var yU;function Nne(){if(yU)return Ji;yU=1;var t=Am();function e(l){var c="https://react.dev/errors/"+l;if(1"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(t)}catch(e){console.error(e)}}return t(),H2.exports=Nne(),H2.exports}var SU;function kne(){if(SU)return Bg;SU=1;var t=Cne(),e=Am(),n=NG();function r(f){var p="https://react.dev/errors/"+f;if(1te||(f.current=Y[te],Y[te]=null,te--)}function ee(f,p){te++,Y[te]=f.current,f.current=p}var ae=B(null),me=B(null),ie=B(null),pe=B(null);function Ce(f,p){switch(ee(ie,p),ee(me,f),ee(ae,null),p.nodeType){case 9:case 11:f=(f=p.documentElement)&&(f=f.namespaceURI)?I4(f):0;break;default:if(f=p.tagName,p=p.namespaceURI)p=I4(p),f=U4(p,f);else switch(f){case"svg":f=1;break;case"math":f=2;break;default:f=0}}q(ae),ee(ae,f)}function fe(){q(ae),q(me),q(ie)}function _e(f){f.memoizedState!==null&&ee(pe,f);var p=ae.current,_=U4(p,f.type);p!==_&&(ee(me,f),ee(ae,_))}function Oe(f){me.current===f&&(q(ae),q(me)),pe.current===f&&(q(pe),jg._currentValue=Z)}var ue,at;function H(f){if(ue===void 0)try{throw Error()}catch(_){var p=_.stack.trim().match(/\n( *(at )?)/);ue=p&&p[1]||"",at=-1<_.stack.indexOf(` at`)?" ()":-1<_.stack.indexOf("@")?"@unknown:0:0":""}return` -`+ue+f+ct}var F=!1;function se(f,p){if(!f||F)return"";F=!0;var _=Error.prepareStackTrace;Error.prepareStackTrace=void 0;try{var S={DetermineComponentFrameRoot:function(){try{if(p){var dt=function(){throw Error()};if(Object.defineProperty(dt.prototype,"props",{set:function(){throw Error()}}),typeof Reflect=="object"&&Reflect.construct){try{Reflect.construct(dt,[])}catch(nt){var We=nt}Reflect.construct(f,[],dt)}else{try{dt.call()}catch(nt){We=nt}f.call(dt.prototype)}}else{try{throw Error()}catch(nt){We=nt}(dt=f())&&typeof dt.catch=="function"&&dt.catch(function(){})}}catch(nt){if(nt&&We&&typeof nt.stack=="string")return[nt.stack,We.stack]}return[null,null]}};S.DetermineComponentFrameRoot.displayName="DetermineComponentFrameRoot";var k=Object.getOwnPropertyDescriptor(S.DetermineComponentFrameRoot,"name");k&&k.configurable&&Object.defineProperty(S.DetermineComponentFrameRoot,"name",{value:"DetermineComponentFrameRoot"});var O=S.DetermineComponentFrameRoot(),K=O[0],oe=O[1];if(K&&oe){var we=K.split(` -`),$e=oe.split(` +`+ue+f+at}var F=!1;function ne(f,p){if(!f||F)return"";F=!0;var _=Error.prepareStackTrace;Error.prepareStackTrace=void 0;try{var S={DetermineComponentFrameRoot:function(){try{if(p){var dt=function(){throw Error()};if(Object.defineProperty(dt.prototype,"props",{set:function(){throw Error()}}),typeof Reflect=="object"&&Reflect.construct){try{Reflect.construct(dt,[])}catch(nt){var We=nt}Reflect.construct(f,[],dt)}else{try{dt.call()}catch(nt){We=nt}f.call(dt.prototype)}}else{try{throw Error()}catch(nt){We=nt}(dt=f())&&typeof dt.catch=="function"&&dt.catch(function(){})}}catch(nt){if(nt&&We&&typeof nt.stack=="string")return[nt.stack,We.stack]}return[null,null]}};S.DetermineComponentFrameRoot.displayName="DetermineComponentFrameRoot";var k=Object.getOwnPropertyDescriptor(S.DetermineComponentFrameRoot,"name");k&&k.configurable&&Object.defineProperty(S.DetermineComponentFrameRoot,"name",{value:"DetermineComponentFrameRoot"});var L=S.DetermineComponentFrameRoot(),K=L[0],le=L[1];if(K&&le){var we=K.split(` +`),$e=le.split(` `);for(k=S=0;Sk||we[S]!==$e[k]){var st=` -`+we[S].replace(" at new "," at ");return f.displayName&&st.includes("")&&(st=st.replace("",f.displayName)),st}while(1<=S&&0<=k);break}}}finally{F=!1,Error.prepareStackTrace=_}return(_=f?f.displayName||f.name:"")?H(_):""}function G(f,p){switch(f.tag){case 26:case 27:case 5:return H(f.type);case 16:return H("Lazy");case 13:return f.child!==p&&p!==null?H("Suspense Fallback"):H("Suspense");case 19:return H("SuspenseList");case 0:case 15:return se(f.type,!1);case 11:return se(f.type.render,!1);case 1:return se(f.type,!0);case 31:return H("Activity");default:return""}}function J(f){try{var p="",_=null;do p+=G(f,_),_=f,f=f.return;while(f);return p}catch(S){return` +`+we[S].replace(" at new "," at ");return f.displayName&&st.includes("")&&(st=st.replace("",f.displayName)),st}while(1<=S&&0<=k);break}}}finally{F=!1,Error.prepareStackTrace=_}return(_=f?f.displayName||f.name:"")?H(_):""}function G(f,p){switch(f.tag){case 26:case 27:case 5:return H(f.type);case 16:return H("Lazy");case 13:return f.child!==p&&p!==null?H("Suspense Fallback"):H("Suspense");case 19:return H("SuspenseList");case 0:case 15:return ne(f.type,!1);case 11:return ne(f.type.render,!1);case 1:return ne(f.type,!0);case 31:return H("Activity");default:return""}}function Q(f){try{var p="",_=null;do p+=G(f,_),_=f,f=f.return;while(f);return p}catch(S){return` Error generating stack: `+S.message+` -`+S.stack}}var le=Object.prototype.hasOwnProperty,Te=t.unstable_scheduleCallback,Me=t.unstable_cancelCallback,Y=t.unstable_shouldYield,U=t.unstable_requestPaint,L=t.unstable_now,ee=t.unstable_getCurrentPriorityLevel,ve=t.unstable_ImmediatePriority,be=t.unstable_UserBlockingPriority,pe=t.unstable_NormalPriority,Qe=t.unstable_LowPriority,Ie=t.unstable_IdlePriority,Ke=t.log,at=t.unstable_setDisableYieldValue,Ue=null,ce=null;function Ze(f){if(typeof Ke=="function"&&at(f),ce&&typeof ce.setStrictMode=="function")try{ce.setStrictMode(Ue,f)}catch{}}var Be=Math.clz32?Math.clz32:de,Xe=Math.log,ut=Math.LN2;function de(f){return f>>>=0,f===0?32:31-(Xe(f)/ut|0)|0}var Je=256,xe=262144,je=4194304;function Ce(f){var p=f&42;if(p!==0)return p;switch(f&-f){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 f&261888;case 262144:case 524288:case 1048576:case 2097152:return f&3932160;case 4194304:case 8388608:case 16777216:case 33554432:return f&62914560;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return f}}function ye(f,p,_){var S=f.pendingLanes;if(S===0)return 0;var k=0,O=f.suspendedLanes,K=f.pingedLanes;f=f.warmLanes;var oe=S&134217727;return oe!==0?(S=oe&~O,S!==0?k=Ce(S):(K&=oe,K!==0?k=Ce(K):_||(_=oe&~f,_!==0&&(k=Ce(_))))):(oe=S&~O,oe!==0?k=Ce(oe):K!==0?k=Ce(K):_||(_=S&~f,_!==0&&(k=Ce(_)))),k===0?0:p!==0&&p!==k&&(p&O)===0&&(O=k&-k,_=p&-p,O>=_||O===32&&(_&4194048)!==0)?p:k}function Ve(f,p){return(f.pendingLanes&~(f.suspendedLanes&~f.pingedLanes)&p)===0}function ft(f,p){switch(f){case 1:case 2:case 4:case 8:case 64:return p+250;case 16:case 32:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return p+5e3;case 4194304:case 8388608:case 16777216:case 33554432:return-1;case 67108864:case 134217728:case 268435456:case 536870912:case 1073741824:return-1;default:return-1}}function yt(){var f=je;return je<<=1,(je&62914560)===0&&(je=4194304),f}function Rt(f){for(var p=[],_=0;31>_;_++)p.push(f);return p}function cn(f,p){f.pendingLanes|=p,p!==268435456&&(f.suspendedLanes=0,f.pingedLanes=0,f.warmLanes=0)}function Ot(f,p,_,S,k,O){var K=f.pendingLanes;f.pendingLanes=_,f.suspendedLanes=0,f.pingedLanes=0,f.warmLanes=0,f.expiredLanes&=_,f.entangledLanes&=_,f.errorRecoveryDisabledLanes&=_,f.shellSuspendCounter=0;var oe=f.entanglements,we=f.expirationTimes,$e=f.hiddenUpdates;for(_=K&~_;0<_;){var st=31-Be(_),dt=1<"u")return null;try{return f.activeElement||f.body}catch{return f.body}}var kr=/[\n"\\]/g;function kn(f){return f.replace(kr,function(p){return"\\"+p.charCodeAt(0).toString(16)+" "})}function ro(f,p,_,S,k,O,K,oe){f.name="",K!=null&&typeof K!="function"&&typeof K!="symbol"&&typeof K!="boolean"?f.type=K:f.removeAttribute("type"),p!=null?K==="number"?(p===0&&f.value===""||f.value!=p)&&(f.value=""+dn(p)):f.value!==""+dn(p)&&(f.value=""+dn(p)):K!=="submit"&&K!=="reset"||f.removeAttribute("value"),p!=null?yi(f,K,dn(p)):_!=null?yi(f,K,dn(_)):S!=null&&f.removeAttribute("value"),k==null&&O!=null&&(f.defaultChecked=!!O),k!=null&&(f.checked=k&&typeof k!="function"&&typeof k!="symbol"),oe!=null&&typeof oe!="function"&&typeof oe!="symbol"&&typeof oe!="boolean"?f.name=""+dn(oe):f.removeAttribute("name")}function Pn(f,p,_,S,k,O,K,oe){if(O!=null&&typeof O!="function"&&typeof O!="symbol"&&typeof O!="boolean"&&(f.type=O),p!=null||_!=null){if(!(O!=="submit"&&O!=="reset"||p!=null)){Yt(f);return}_=_!=null?""+dn(_):"",p=p!=null?""+dn(p):_,oe||p===f.value||(f.value=p),f.defaultValue=p}S=S??k,S=typeof S!="function"&&typeof S!="symbol"&&!!S,f.checked=oe?f.checked:!!S,f.defaultChecked=!!S,K!=null&&typeof K!="function"&&typeof K!="symbol"&&typeof K!="boolean"&&(f.name=K),Yt(f)}function yi(f,p,_){p==="number"&&Sr(f.ownerDocument)===f||f.defaultValue===""+_||(f.defaultValue=""+_)}function ni(f,p,_,S){if(f=f.options,p){p={};for(var k=0;k<_.length;k++)p["$"+_[k]]=!0;for(_=0;_"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),LM=!1;if(gl)try{var eg={};Object.defineProperty(eg,"passive",{get:function(){LM=!0}}),window.addEventListener("test",eg,eg),window.removeEventListener("test",eg,eg)}catch{LM=!1}var Ic=null,jM=null,Pv=null;function LL(){if(Pv)return Pv;var f,p=jM,_=p.length,S,k="value"in Ic?Ic.value:Ic.textContent,O=k.length;for(f=0;f<_&&p[f]===k[f];f++);var K=_-f;for(S=1;S<=K&&p[_-S]===k[O-S];S++);return Pv=k.slice(f,1=rg),BL=" ",HL=!1;function $L(f,p){switch(f){case"keyup":return Hee.indexOf(p.keyCode)!==-1;case"keydown":return p.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function VL(f){return f=f.detail,typeof f=="object"&&"data"in f?f.data:null}var rh=!1;function Vee(f,p){switch(f){case"compositionend":return VL(p);case"keypress":return p.which!==32?null:(HL=!0,BL);case"textInput":return f=p.data,f===BL&&HL?null:f;default:return null}}function Gee(f,p){if(rh)return f==="compositionend"||!BM&&$L(f,p)?(f=LL(),Pv=jM=Ic=null,rh=!1,f):null;switch(f){case"paste":return null;case"keypress":if(!(p.ctrlKey||p.altKey||p.metaKey)||p.ctrlKey&&p.altKey){if(p.char&&1=p)return{node:_,offset:p-f};f=S}e:{for(;_;){if(_.nextSibling){_=_.nextSibling;break e}_=_.parentNode}_=void 0}_=QL(_)}}function ej(f,p){return f&&p?f===p?!0:f&&f.nodeType===3?!1:p&&p.nodeType===3?ej(f,p.parentNode):"contains"in f?f.contains(p):f.compareDocumentPosition?!!(f.compareDocumentPosition(p)&16):!1:!1}function tj(f){f=f!=null&&f.ownerDocument!=null&&f.ownerDocument.defaultView!=null?f.ownerDocument.defaultView:window;for(var p=Sr(f.document);p instanceof f.HTMLIFrameElement;){try{var _=typeof p.contentWindow.location.href=="string"}catch{_=!1}if(_)f=p.contentWindow;else break;p=Sr(f.document)}return p}function VM(f){var p=f&&f.nodeName&&f.nodeName.toLowerCase();return p&&(p==="input"&&(f.type==="text"||f.type==="search"||f.type==="tel"||f.type==="url"||f.type==="password")||p==="textarea"||f.contentEditable==="true")}var Jee=gl&&"documentMode"in document&&11>=document.documentMode,ih=null,GM=null,og=null,WM=!1;function nj(f,p,_){var S=_.window===_?_.document:_.nodeType===9?_:_.ownerDocument;WM||ih==null||ih!==Sr(S)||(S=ih,"selectionStart"in S&&VM(S)?S={start:S.selectionStart,end:S.selectionEnd}:(S=(S.ownerDocument&&S.ownerDocument.defaultView||window).getSelection(),S={anchorNode:S.anchorNode,anchorOffset:S.anchorOffset,focusNode:S.focusNode,focusOffset:S.focusOffset}),og&&ag(og,S)||(og=S,S=Eb(GM,"onSelect"),0>=K,k-=K,Lo=1<<32-Be(p)+k|_<tn?(vn=Dt,Dt=null):vn=Dt.sibling;var Mn=We(Oe,Dt,He[tn],ot);if(Mn===null){Dt===null&&(Dt=vn);break}f&&Dt&&Mn.alternate===null&&p(Oe,Dt),Ne=O(Mn,Ne,tn),wn===null?Ft=Mn:wn.sibling=Mn,wn=Mn,Dt=vn}if(tn===He.length)return _(Oe,Dt),yn&&vl(Oe,tn),Ft;if(Dt===null){for(;tntn?(vn=Dt,Dt=null):vn=Dt.sibling;var su=We(Oe,Dt,Mn.value,ot);if(su===null){Dt===null&&(Dt=vn);break}f&&Dt&&su.alternate===null&&p(Oe,Dt),Ne=O(su,Ne,tn),wn===null?Ft=su:wn.sibling=su,wn=su,Dt=vn}if(Mn.done)return _(Oe,Dt),yn&&vl(Oe,tn),Ft;if(Dt===null){for(;!Mn.done;tn++,Mn=He.next())Mn=dt(Oe,Mn.value,ot),Mn!==null&&(Ne=O(Mn,Ne,tn),wn===null?Ft=Mn:wn.sibling=Mn,wn=Mn);return yn&&vl(Oe,tn),Ft}for(Dt=S(Dt);!Mn.done;tn++,Mn=He.next())Mn=nt(Dt,Oe,tn,Mn.value,ot),Mn!==null&&(f&&Mn.alternate!==null&&Dt.delete(Mn.key===null?tn:Mn.key),Ne=O(Mn,Ne,tn),wn===null?Ft=Mn:wn.sibling=Mn,wn=Mn);return f&&Dt.forEach(function(bne){return p(Oe,bne)}),yn&&vl(Oe,tn),Ft}function Fn(Oe,Ne,He,ot){if(typeof He=="object"&&He!==null&&He.type===y&&He.key===null&&(He=He.props.children),typeof He=="object"&&He!==null){switch(He.$$typeof){case m:e:{for(var Ft=He.key;Ne!==null;){if(Ne.key===Ft){if(Ft=He.type,Ft===y){if(Ne.tag===7){_(Oe,Ne.sibling),ot=k(Ne,He.props.children),ot.return=Oe,Oe=ot;break e}}else if(Ne.elementType===Ft||typeof Ft=="object"&&Ft!==null&&Ft.$$typeof===I&&Td(Ft)===Ne.type){_(Oe,Ne.sibling),ot=k(Ne,He.props),hg(ot,He),ot.return=Oe,Oe=ot;break e}_(Oe,Ne);break}else p(Oe,Ne);Ne=Ne.sibling}He.type===y?(ot=Sd(He.props.children,Oe.mode,ot,He.key),ot.return=Oe,Oe=ot):(ot=Hv(He.type,He.key,He.props,null,Oe.mode,ot),hg(ot,He),ot.return=Oe,Oe=ot)}return K(Oe);case b:e:{for(Ft=He.key;Ne!==null;){if(Ne.key===Ft)if(Ne.tag===4&&Ne.stateNode.containerInfo===He.containerInfo&&Ne.stateNode.implementation===He.implementation){_(Oe,Ne.sibling),ot=k(Ne,He.children||[]),ot.return=Oe,Oe=ot;break e}else{_(Oe,Ne);break}else p(Oe,Ne);Ne=Ne.sibling}ot=JM(He,Oe.mode,ot),ot.return=Oe,Oe=ot}return K(Oe);case I:return He=Td(He),Fn(Oe,Ne,He,ot)}if($(He))return kt(Oe,Ne,He,ot);if(j(He)){if(Ft=j(He),typeof Ft!="function")throw Error(r(150));return He=Ft.call(He),Vt(Oe,Ne,He,ot)}if(typeof He.then=="function")return Fn(Oe,Ne,Kv(He),ot);if(He.$$typeof===w)return Fn(Oe,Ne,Gv(Oe,He),ot);Yv(Oe,He)}return typeof He=="string"&&He!==""||typeof He=="number"||typeof He=="bigint"?(He=""+He,Ne!==null&&Ne.tag===6?(_(Oe,Ne.sibling),ot=k(Ne,He),ot.return=Oe,Oe=ot):(_(Oe,Ne),ot=QM(He,Oe.mode,ot),ot.return=Oe,Oe=ot),K(Oe)):_(Oe,Ne)}return function(Oe,Ne,He,ot){try{fg=0;var Ft=Fn(Oe,Ne,He,ot);return mh=null,Ft}catch(Dt){if(Dt===ph||Dt===qv)throw Dt;var wn=Zs(29,Dt,null,Oe.mode);return wn.lanes=ot,wn.return=Oe,wn}finally{}}}var Nd=Ej(!0),Aj=Ej(!1),Hc=!1;function dE(f){f.updateQueue={baseState:f.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,lanes:0,hiddenCallbacks:null},callbacks:null}}function fE(f,p){f=f.updateQueue,p.updateQueue===f&&(p.updateQueue={baseState:f.baseState,firstBaseUpdate:f.firstBaseUpdate,lastBaseUpdate:f.lastBaseUpdate,shared:f.shared,callbacks:null})}function $c(f){return{lane:f,tag:0,payload:null,callback:null,next:null}}function Vc(f,p,_){var S=f.updateQueue;if(S===null)return null;if(S=S.shared,(Cn&2)!==0){var k=S.pending;return k===null?p.next=p:(p.next=k.next,k.next=p),S.pending=p,p=Bv(f),cj(f,null,_),p}return zv(f,S,p,_),Bv(f)}function pg(f,p,_){if(p=p.updateQueue,p!==null&&(p=p.shared,(_&4194048)!==0)){var S=p.lanes;S&=f.pendingLanes,_|=S,p.lanes=_,qn(f,_)}}function hE(f,p){var _=f.updateQueue,S=f.alternate;if(S!==null&&(S=S.updateQueue,_===S)){var k=null,O=null;if(_=_.firstBaseUpdate,_!==null){do{var K={lane:_.lane,tag:_.tag,payload:_.payload,callback:null,next:null};O===null?k=O=K:O=O.next=K,_=_.next}while(_!==null);O===null?k=O=p:O=O.next=p}else k=O=p;_={baseState:S.baseState,firstBaseUpdate:k,lastBaseUpdate:O,shared:S.shared,callbacks:S.callbacks},f.updateQueue=_;return}f=_.lastBaseUpdate,f===null?_.firstBaseUpdate=p:f.next=p,_.lastBaseUpdate=p}var pE=!1;function mg(){if(pE){var f=hh;if(f!==null)throw f}}function gg(f,p,_,S){pE=!1;var k=f.updateQueue;Hc=!1;var O=k.firstBaseUpdate,K=k.lastBaseUpdate,oe=k.shared.pending;if(oe!==null){k.shared.pending=null;var we=oe,$e=we.next;we.next=null,K===null?O=$e:K.next=$e,K=we;var st=f.alternate;st!==null&&(st=st.updateQueue,oe=st.lastBaseUpdate,oe!==K&&(oe===null?st.firstBaseUpdate=$e:oe.next=$e,st.lastBaseUpdate=we))}if(O!==null){var dt=k.baseState;K=0,st=$e=we=null,oe=O;do{var We=oe.lane&-536870913,nt=We!==oe.lane;if(nt?(xn&We)===We:(S&We)===We){We!==0&&We===fh&&(pE=!0),st!==null&&(st=st.next={lane:0,tag:oe.tag,payload:oe.payload,callback:null,next:null});e:{var kt=f,Vt=oe;We=p;var Fn=_;switch(Vt.tag){case 1:if(kt=Vt.payload,typeof kt=="function"){dt=kt.call(Fn,dt,We);break e}dt=kt;break e;case 3:kt.flags=kt.flags&-65537|128;case 0:if(kt=Vt.payload,We=typeof kt=="function"?kt.call(Fn,dt,We):kt,We==null)break e;dt=h({},dt,We);break e;case 2:Hc=!0}}We=oe.callback,We!==null&&(f.flags|=64,nt&&(f.flags|=8192),nt=k.callbacks,nt===null?k.callbacks=[We]:nt.push(We))}else nt={lane:We,tag:oe.tag,payload:oe.payload,callback:oe.callback,next:null},st===null?($e=st=nt,we=dt):st=st.next=nt,K|=We;if(oe=oe.next,oe===null){if(oe=k.shared.pending,oe===null)break;nt=oe,oe=nt.next,nt.next=null,k.lastBaseUpdate=nt,k.shared.pending=null}}while(!0);st===null&&(we=dt),k.baseState=we,k.firstBaseUpdate=$e,k.lastBaseUpdate=st,O===null&&(k.shared.lanes=0),Kc|=K,f.lanes=K,f.memoizedState=dt}}function Tj(f,p){if(typeof f!="function")throw Error(r(191,f));f.call(p)}function Cj(f,p){var _=f.callbacks;if(_!==null)for(f.callbacks=null,f=0;f<_.length;f++)Tj(_[f],p)}var gh=B(null),Zv=B(0);function Nj(f,p){f=Nl,te(Zv,f),te(gh,p),Nl=f|p.baseLanes}function mE(){te(Zv,Nl),te(gh,gh.current)}function gE(){Nl=Zv.current,q(gh),q(Zv)}var Qs=B(null),Ma=null;function Gc(f){var p=f.alternate;te(Rr,Rr.current&1),te(Qs,f),Ma===null&&(p===null||gh.current!==null||p.memoizedState!==null)&&(Ma=f)}function xE(f){te(Rr,Rr.current),te(Qs,f),Ma===null&&(Ma=f)}function kj(f){f.tag===22?(te(Rr,Rr.current),te(Qs,f),Ma===null&&(Ma=f)):Wc()}function Wc(){te(Rr,Rr.current),te(Qs,Qs.current)}function Js(f){q(Qs),Ma===f&&(Ma=null),q(Rr)}var Rr=B(0);function Qv(f){for(var p=f;p!==null;){if(p.tag===13){var _=p.memoizedState;if(_!==null&&(_=_.dehydrated,_===null||w2(_)||M2(_)))return p}else if(p.tag===19&&(p.memoizedProps.revealOrder==="forwards"||p.memoizedProps.revealOrder==="backwards"||p.memoizedProps.revealOrder==="unstable_legacy-backwards"||p.memoizedProps.revealOrder==="together")){if((p.flags&128)!==0)return p}else if(p.child!==null){p.child.return=p,p=p.child;continue}if(p===f)break;for(;p.sibling===null;){if(p.return===null||p.return===f)return null;p=p.return}p.sibling.return=p.return,p=p.sibling}return null}var _l=0,Jt=null,In=null,Fr=null,Jv=!1,xh=!1,kd=!1,eb=0,xg=0,vh=null,cte=0;function wr(){throw Error(r(321))}function vE(f,p){if(p===null)return!1;for(var _=0;_O?O:8;var K=X.T,oe={};X.T=oe,DE(f,!1,p,_);try{var we=k(),$e=X.S;if($e!==null&&$e(oe,we),we!==null&&typeof we=="object"&&typeof we.then=="function"){var st=lte(we,S);bg(f,p,st,na(f))}else bg(f,p,S,na(f))}catch(dt){bg(f,p,{then:function(){},status:"rejected",reason:dt},na())}finally{V.p=O,K!==null&&oe.types!==null&&(K.types=oe.types),X.T=K}}function pte(){}function RE(f,p,_,S){if(f.tag!==5)throw Error(r(476));var k=aI(f).queue;sI(f,k,p,Q,_===null?pte:function(){return oI(f),_(S)})}function aI(f){var p=f.memoizedState;if(p!==null)return p;p={memoizedState:Q,baseState:Q,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:Sl,lastRenderedState:Q},next:null};var _={};return p.next={memoizedState:_,baseState:_,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:Sl,lastRenderedState:_},next:null},f.memoizedState=p,f=f.alternate,f!==null&&(f.memoizedState=p),p}function oI(f){var p=aI(f);p.next===null&&(p=f.alternate.memoizedState),bg(f,p.next.queue,{},na())}function PE(){return Ui(jg)}function lI(){return Pr().memoizedState}function cI(){return Pr().memoizedState}function mte(f){for(var p=f.return;p!==null;){switch(p.tag){case 24:case 3:var _=na();f=$c(_);var S=Vc(p,f,_);S!==null&&(Os(S,p,_),pg(S,p,_)),p={cache:oE()},f.payload=p;return}p=p.return}}function gte(f,p,_){var S=na();_={lane:S,revertLane:0,gesture:null,action:_,hasEagerState:!1,eagerState:null,next:null},ab(f)?dI(p,_):(_=YM(f,p,_,S),_!==null&&(Os(_,f,S),fI(_,p,S)))}function uI(f,p,_){var S=na();bg(f,p,_,S)}function bg(f,p,_,S){var k={lane:S,revertLane:0,gesture:null,action:_,hasEagerState:!1,eagerState:null,next:null};if(ab(f))dI(p,k);else{var O=f.alternate;if(f.lanes===0&&(O===null||O.lanes===0)&&(O=p.lastRenderedReducer,O!==null))try{var K=p.lastRenderedState,oe=O(K,_);if(k.hasEagerState=!0,k.eagerState=oe,Ys(oe,K))return zv(f,p,k,0),Xn===null&&Fv(),!1}catch{}finally{}if(_=YM(f,p,k,S),_!==null)return Os(_,f,S),fI(_,p,S),!0}return!1}function DE(f,p,_,S){if(S={lane:2,revertLane:d2(),gesture:null,action:S,hasEagerState:!1,eagerState:null,next:null},ab(f)){if(p)throw Error(r(479))}else p=YM(f,_,S,2),p!==null&&Os(p,f,2)}function ab(f){var p=f.alternate;return f===Jt||p!==null&&p===Jt}function dI(f,p){xh=Jv=!0;var _=f.pending;_===null?p.next=p:(p.next=_.next,_.next=p),f.pending=p}function fI(f,p,_){if((_&4194048)!==0){var S=p.lanes;S&=f.pendingLanes,_|=S,p.lanes=_,qn(f,_)}}var yg={readContext:Ui,use:nb,useCallback:wr,useContext:wr,useEffect:wr,useImperativeHandle:wr,useLayoutEffect:wr,useInsertionEffect:wr,useMemo:wr,useReducer:wr,useRef:wr,useState:wr,useDebugValue:wr,useDeferredValue:wr,useTransition:wr,useSyncExternalStore:wr,useId:wr,useHostTransitionStatus:wr,useFormState:wr,useActionState:wr,useOptimistic:wr,useMemoCache:wr,useCacheRefresh:wr};yg.useEffectEvent=wr;var hI={readContext:Ui,use:nb,useCallback:function(f,p){return ps().memoizedState=[f,p===void 0?null:p],f},useContext:Ui,useEffect:Yj,useImperativeHandle:function(f,p,_){_=_!=null?_.concat([f]):null,ib(4194308,4,eI.bind(null,p,f),_)},useLayoutEffect:function(f,p){return ib(4194308,4,f,p)},useInsertionEffect:function(f,p){ib(4,2,f,p)},useMemo:function(f,p){var _=ps();p=p===void 0?null:p;var S=f();if(kd){Ze(!0);try{f()}finally{Ze(!1)}}return _.memoizedState=[S,p],S},useReducer:function(f,p,_){var S=ps();if(_!==void 0){var k=_(p);if(kd){Ze(!0);try{_(p)}finally{Ze(!1)}}}else k=p;return S.memoizedState=S.baseState=k,f={pending:null,lanes:0,dispatch:null,lastRenderedReducer:f,lastRenderedState:k},S.queue=f,f=f.dispatch=gte.bind(null,Jt,f),[S.memoizedState,f]},useRef:function(f){var p=ps();return f={current:f},p.memoizedState=f},useState:function(f){f=AE(f);var p=f.queue,_=uI.bind(null,Jt,p);return p.dispatch=_,[f.memoizedState,_]},useDebugValue:NE,useDeferredValue:function(f,p){var _=ps();return kE(_,f,p)},useTransition:function(){var f=AE(!1);return f=sI.bind(null,Jt,f.queue,!0,!1),ps().memoizedState=f,[!1,f]},useSyncExternalStore:function(f,p,_){var S=Jt,k=ps();if(yn){if(_===void 0)throw Error(r(407));_=_()}else{if(_=p(),Xn===null)throw Error(r(349));(xn&127)!==0||Oj(S,p,_)}k.memoizedState=_;var O={value:_,getSnapshot:p};return k.queue=O,Yj(jj.bind(null,S,O,f),[f]),S.flags|=2048,bh(9,{destroy:void 0},Lj.bind(null,S,O,_,p),null),_},useId:function(){var f=ps(),p=Xn.identifierPrefix;if(yn){var _=jo,S=Lo;_=(S&~(1<<32-Be(S)-1)).toString(32)+_,p="_"+p+"R_"+_,_=eb++,0<_&&(p+="H"+_.toString(32)),p+="_"}else _=cte++,p="_"+p+"r_"+_.toString(32)+"_";return f.memoizedState=p},useHostTransitionStatus:PE,useFormState:Gj,useActionState:Gj,useOptimistic:function(f){var p=ps();p.memoizedState=p.baseState=f;var _={pending:null,lanes:0,dispatch:null,lastRenderedReducer:null,lastRenderedState:null};return p.queue=_,p=DE.bind(null,Jt,!0,_),_.dispatch=p,[f,p]},useMemoCache:wE,useCacheRefresh:function(){return ps().memoizedState=mte.bind(null,Jt)},useEffectEvent:function(f){var p=ps(),_={impl:f};return p.memoizedState=_,function(){if((Cn&2)!==0)throw Error(r(440));return _.impl.apply(void 0,arguments)}}},OE={readContext:Ui,use:nb,useCallback:nI,useContext:Ui,useEffect:CE,useImperativeHandle:tI,useInsertionEffect:Qj,useLayoutEffect:Jj,useMemo:rI,useReducer:rb,useRef:Kj,useState:function(){return rb(Sl)},useDebugValue:NE,useDeferredValue:function(f,p){var _=Pr();return iI(_,In.memoizedState,f,p)},useTransition:function(){var f=rb(Sl)[0],p=Pr().memoizedState;return[typeof f=="boolean"?f:vg(f),p]},useSyncExternalStore:Dj,useId:lI,useHostTransitionStatus:PE,useFormState:Wj,useActionState:Wj,useOptimistic:function(f,p){var _=Pr();return Fj(_,In,f,p)},useMemoCache:wE,useCacheRefresh:cI};OE.useEffectEvent=Zj;var pI={readContext:Ui,use:nb,useCallback:nI,useContext:Ui,useEffect:CE,useImperativeHandle:tI,useInsertionEffect:Qj,useLayoutEffect:Jj,useMemo:rI,useReducer:EE,useRef:Kj,useState:function(){return EE(Sl)},useDebugValue:NE,useDeferredValue:function(f,p){var _=Pr();return In===null?kE(_,f,p):iI(_,In.memoizedState,f,p)},useTransition:function(){var f=EE(Sl)[0],p=Pr().memoizedState;return[typeof f=="boolean"?f:vg(f),p]},useSyncExternalStore:Dj,useId:lI,useHostTransitionStatus:PE,useFormState:Xj,useActionState:Xj,useOptimistic:function(f,p){var _=Pr();return In!==null?Fj(_,In,f,p):(_.baseState=f,[f,_.queue.dispatch])},useMemoCache:wE,useCacheRefresh:cI};pI.useEffectEvent=Zj;function LE(f,p,_,S){p=f.memoizedState,_=_(S,p),_=_==null?p:h({},p,_),f.memoizedState=_,f.lanes===0&&(f.updateQueue.baseState=_)}var jE={enqueueSetState:function(f,p,_){f=f._reactInternals;var S=na(),k=$c(S);k.payload=p,_!=null&&(k.callback=_),p=Vc(f,k,S),p!==null&&(Os(p,f,S),pg(p,f,S))},enqueueReplaceState:function(f,p,_){f=f._reactInternals;var S=na(),k=$c(S);k.tag=1,k.payload=p,_!=null&&(k.callback=_),p=Vc(f,k,S),p!==null&&(Os(p,f,S),pg(p,f,S))},enqueueForceUpdate:function(f,p){f=f._reactInternals;var _=na(),S=$c(_);S.tag=2,p!=null&&(S.callback=p),p=Vc(f,S,_),p!==null&&(Os(p,f,_),pg(p,f,_))}};function mI(f,p,_,S,k,O,K){return f=f.stateNode,typeof f.shouldComponentUpdate=="function"?f.shouldComponentUpdate(S,O,K):p.prototype&&p.prototype.isPureReactComponent?!ag(_,S)||!ag(k,O):!0}function gI(f,p,_,S){f=p.state,typeof p.componentWillReceiveProps=="function"&&p.componentWillReceiveProps(_,S),typeof p.UNSAFE_componentWillReceiveProps=="function"&&p.UNSAFE_componentWillReceiveProps(_,S),p.state!==f&&jE.enqueueReplaceState(p,p.state,null)}function Rd(f,p){var _=p;if("ref"in p){_={};for(var S in p)S!=="ref"&&(_[S]=p[S])}if(f=f.defaultProps){_===p&&(_=h({},_));for(var k in f)_[k]===void 0&&(_[k]=f[k])}return _}function xI(f){Uv(f)}function vI(f){console.error(f)}function bI(f){Uv(f)}function ob(f,p){try{var _=f.onUncaughtError;_(p.value,{componentStack:p.stack})}catch(S){setTimeout(function(){throw S})}}function yI(f,p,_){try{var S=f.onCaughtError;S(_.value,{componentStack:_.stack,errorBoundary:p.tag===1?p.stateNode:null})}catch(k){setTimeout(function(){throw k})}}function IE(f,p,_){return _=$c(_),_.tag=3,_.payload={element:null},_.callback=function(){ob(f,p)},_}function _I(f){return f=$c(f),f.tag=3,f}function SI(f,p,_,S){var k=_.type.getDerivedStateFromError;if(typeof k=="function"){var O=S.value;f.payload=function(){return k(O)},f.callback=function(){yI(p,_,S)}}var K=_.stateNode;K!==null&&typeof K.componentDidCatch=="function"&&(f.callback=function(){yI(p,_,S),typeof k!="function"&&(Yc===null?Yc=new Set([this]):Yc.add(this));var oe=S.stack;this.componentDidCatch(S.value,{componentStack:oe!==null?oe:""})})}function xte(f,p,_,S,k){if(_.flags|=32768,S!==null&&typeof S=="object"&&typeof S.then=="function"){if(p=_.alternate,p!==null&&dh(p,_,k,!0),_=Qs.current,_!==null){switch(_.tag){case 31:case 13:return Ma===null?bb():_.alternate===null&&Mr===0&&(Mr=3),_.flags&=-257,_.flags|=65536,_.lanes=k,S===Xv?_.flags|=16384:(p=_.updateQueue,p===null?_.updateQueue=new Set([S]):p.add(S),l2(f,S,k)),!1;case 22:return _.flags|=65536,S===Xv?_.flags|=16384:(p=_.updateQueue,p===null?(p={transitions:null,markerInstances:null,retryQueue:new Set([S])},_.updateQueue=p):(_=p.retryQueue,_===null?p.retryQueue=new Set([S]):_.add(S)),l2(f,S,k)),!1}throw Error(r(435,_.tag))}return l2(f,S,k),bb(),!1}if(yn)return p=Qs.current,p!==null?((p.flags&65536)===0&&(p.flags|=256),p.flags|=65536,p.lanes=k,S!==nE&&(f=Error(r(422),{cause:S}),cg(ya(f,_)))):(S!==nE&&(p=Error(r(423),{cause:S}),cg(ya(p,_))),f=f.current.alternate,f.flags|=65536,k&=-k,f.lanes|=k,S=ya(S,_),k=IE(f.stateNode,S,k),hE(f,k),Mr!==4&&(Mr=2)),!1;var O=Error(r(520),{cause:S});if(O=ya(O,_),Cg===null?Cg=[O]:Cg.push(O),Mr!==4&&(Mr=2),p===null)return!0;S=ya(S,_),_=p;do{switch(_.tag){case 3:return _.flags|=65536,f=k&-k,_.lanes|=f,f=IE(_.stateNode,S,f),hE(_,f),!1;case 1:if(p=_.type,O=_.stateNode,(_.flags&128)===0&&(typeof p.getDerivedStateFromError=="function"||O!==null&&typeof O.componentDidCatch=="function"&&(Yc===null||!Yc.has(O))))return _.flags|=65536,k&=-k,_.lanes|=k,k=_I(k),SI(k,f,_,S),hE(_,k),!1}_=_.return}while(_!==null);return!1}var UE=Error(r(461)),zr=!1;function Fi(f,p,_,S){p.child=f===null?Aj(p,null,_,S):Nd(p,f.child,_,S)}function wI(f,p,_,S,k){_=_.render;var O=p.ref;if("ref"in S){var K={};for(var oe in S)oe!=="ref"&&(K[oe]=S[oe])}else K=S;return Ed(p),S=bE(f,p,_,K,O,k),oe=yE(),f!==null&&!zr?(_E(f,p,k),wl(f,p,k)):(yn&&oe&&eE(p),p.flags|=1,Fi(f,p,S,k),p.child)}function MI(f,p,_,S,k){if(f===null){var O=_.type;return typeof O=="function"&&!ZM(O)&&O.defaultProps===void 0&&_.compare===null?(p.tag=15,p.type=O,EI(f,p,O,S,k)):(f=Hv(_.type,null,S,p,p.mode,k),f.ref=p.ref,f.return=p,p.child=f)}if(O=f.child,!WE(f,k)){var K=O.memoizedProps;if(_=_.compare,_=_!==null?_:ag,_(K,S)&&f.ref===p.ref)return wl(f,p,k)}return p.flags|=1,f=xl(O,S),f.ref=p.ref,f.return=p,p.child=f}function EI(f,p,_,S,k){if(f!==null){var O=f.memoizedProps;if(ag(O,S)&&f.ref===p.ref)if(zr=!1,p.pendingProps=S=O,WE(f,k))(f.flags&131072)!==0&&(zr=!0);else return p.lanes=f.lanes,wl(f,p,k)}return FE(f,p,_,S,k)}function AI(f,p,_,S){var k=S.children,O=f!==null?f.memoizedState:null;if(f===null&&p.stateNode===null&&(p.stateNode={_visibility:1,_pendingMarkers:null,_retryCache:null,_transitions:null}),S.mode==="hidden"){if((p.flags&128)!==0){if(O=O!==null?O.baseLanes|_:_,f!==null){for(S=p.child=f.child,k=0;S!==null;)k=k|S.lanes|S.childLanes,S=S.sibling;S=k&~O}else S=0,p.child=null;return TI(f,p,O,_,S)}if((_&536870912)!==0)p.memoizedState={baseLanes:0,cachePool:null},f!==null&&Wv(p,O!==null?O.cachePool:null),O!==null?Nj(p,O):mE(),kj(p);else return S=p.lanes=536870912,TI(f,p,O!==null?O.baseLanes|_:_,_,S)}else O!==null?(Wv(p,O.cachePool),Nj(p,O),Wc(),p.memoizedState=null):(f!==null&&Wv(p,null),mE(),Wc());return Fi(f,p,k,_),p.child}function _g(f,p){return f!==null&&f.tag===22||p.stateNode!==null||(p.stateNode={_visibility:1,_pendingMarkers:null,_retryCache:null,_transitions:null}),p.sibling}function TI(f,p,_,S,k){var O=cE();return O=O===null?null:{parent:Ur._currentValue,pool:O},p.memoizedState={baseLanes:_,cachePool:O},f!==null&&Wv(p,null),mE(),kj(p),f!==null&&dh(f,p,S,!0),p.childLanes=k,null}function lb(f,p){return p=ub({mode:p.mode,children:p.children},f.mode),p.ref=f.ref,f.child=p,p.return=f,p}function CI(f,p,_){return Nd(p,f.child,null,_),f=lb(p,p.pendingProps),f.flags|=2,Js(p),p.memoizedState=null,f}function vte(f,p,_){var S=p.pendingProps,k=(p.flags&128)!==0;if(p.flags&=-129,f===null){if(yn){if(S.mode==="hidden")return f=lb(p,S),p.lanes=536870912,_g(null,f);if(xE(p),(f=nr)?(f=z4(f,wa),f=f!==null&&f.data==="&"?f:null,f!==null&&(p.memoizedState={dehydrated:f,treeContext:Uc!==null?{id:Lo,overflow:jo}:null,retryLane:536870912,hydrationErrors:null},_=dj(f),_.return=p,p.child=_,Ii=p,nr=null)):f=null,f===null)throw zc(p);return p.lanes=536870912,null}return lb(p,S)}var O=f.memoizedState;if(O!==null){var K=O.dehydrated;if(xE(p),k)if(p.flags&256)p.flags&=-257,p=CI(f,p,_);else if(p.memoizedState!==null)p.child=f.child,p.flags|=128,p=null;else throw Error(r(558));else if(zr||dh(f,p,_,!1),k=(_&f.childLanes)!==0,zr||k){if(S=Xn,S!==null&&(K=vi(S,_),K!==0&&K!==O.retryLane))throw O.retryLane=K,_d(f,K),Os(S,f,K),UE;bb(),p=CI(f,p,_)}else f=O.treeContext,nr=Ea(K.nextSibling),Ii=p,yn=!0,Fc=null,wa=!1,f!==null&&pj(p,f),p=lb(p,S),p.flags|=4096;return p}return f=xl(f.child,{mode:S.mode,children:S.children}),f.ref=p.ref,p.child=f,f.return=p,f}function cb(f,p){var _=p.ref;if(_===null)f!==null&&f.ref!==null&&(p.flags|=4194816);else{if(typeof _!="function"&&typeof _!="object")throw Error(r(284));(f===null||f.ref!==_)&&(p.flags|=4194816)}}function FE(f,p,_,S,k){return Ed(p),_=bE(f,p,_,S,void 0,k),S=yE(),f!==null&&!zr?(_E(f,p,k),wl(f,p,k)):(yn&&S&&eE(p),p.flags|=1,Fi(f,p,_,k),p.child)}function NI(f,p,_,S,k,O){return Ed(p),p.updateQueue=null,_=Pj(p,S,_,k),Rj(f),S=yE(),f!==null&&!zr?(_E(f,p,O),wl(f,p,O)):(yn&&S&&eE(p),p.flags|=1,Fi(f,p,_,O),p.child)}function kI(f,p,_,S,k){if(Ed(p),p.stateNode===null){var O=oh,K=_.contextType;typeof K=="object"&&K!==null&&(O=Ui(K)),O=new _(S,O),p.memoizedState=O.state!==null&&O.state!==void 0?O.state:null,O.updater=jE,p.stateNode=O,O._reactInternals=p,O=p.stateNode,O.props=S,O.state=p.memoizedState,O.refs={},dE(p),K=_.contextType,O.context=typeof K=="object"&&K!==null?Ui(K):oh,O.state=p.memoizedState,K=_.getDerivedStateFromProps,typeof K=="function"&&(LE(p,_,K,S),O.state=p.memoizedState),typeof _.getDerivedStateFromProps=="function"||typeof O.getSnapshotBeforeUpdate=="function"||typeof O.UNSAFE_componentWillMount!="function"&&typeof O.componentWillMount!="function"||(K=O.state,typeof O.componentWillMount=="function"&&O.componentWillMount(),typeof O.UNSAFE_componentWillMount=="function"&&O.UNSAFE_componentWillMount(),K!==O.state&&jE.enqueueReplaceState(O,O.state,null),gg(p,S,O,k),mg(),O.state=p.memoizedState),typeof O.componentDidMount=="function"&&(p.flags|=4194308),S=!0}else if(f===null){O=p.stateNode;var oe=p.memoizedProps,we=Rd(_,oe);O.props=we;var $e=O.context,st=_.contextType;K=oh,typeof st=="object"&&st!==null&&(K=Ui(st));var dt=_.getDerivedStateFromProps;st=typeof dt=="function"||typeof O.getSnapshotBeforeUpdate=="function",oe=p.pendingProps!==oe,st||typeof O.UNSAFE_componentWillReceiveProps!="function"&&typeof O.componentWillReceiveProps!="function"||(oe||$e!==K)&&gI(p,O,S,K),Hc=!1;var We=p.memoizedState;O.state=We,gg(p,S,O,k),mg(),$e=p.memoizedState,oe||We!==$e||Hc?(typeof dt=="function"&&(LE(p,_,dt,S),$e=p.memoizedState),(we=Hc||mI(p,_,we,S,We,$e,K))?(st||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"&&(p.flags|=4194308)):(typeof O.componentDidMount=="function"&&(p.flags|=4194308),p.memoizedProps=S,p.memoizedState=$e),O.props=S,O.state=$e,O.context=K,S=we):(typeof O.componentDidMount=="function"&&(p.flags|=4194308),S=!1)}else{O=p.stateNode,fE(f,p),K=p.memoizedProps,st=Rd(_,K),O.props=st,dt=p.pendingProps,We=O.context,$e=_.contextType,we=oh,typeof $e=="object"&&$e!==null&&(we=Ui($e)),oe=_.getDerivedStateFromProps,($e=typeof oe=="function"||typeof O.getSnapshotBeforeUpdate=="function")||typeof O.UNSAFE_componentWillReceiveProps!="function"&&typeof O.componentWillReceiveProps!="function"||(K!==dt||We!==we)&&gI(p,O,S,we),Hc=!1,We=p.memoizedState,O.state=We,gg(p,S,O,k),mg();var nt=p.memoizedState;K!==dt||We!==nt||Hc||f!==null&&f.dependencies!==null&&Vv(f.dependencies)?(typeof oe=="function"&&(LE(p,_,oe,S),nt=p.memoizedState),(st=Hc||mI(p,_,st,S,We,nt,we)||f!==null&&f.dependencies!==null&&Vv(f.dependencies))?($e||typeof O.UNSAFE_componentWillUpdate!="function"&&typeof O.componentWillUpdate!="function"||(typeof O.componentWillUpdate=="function"&&O.componentWillUpdate(S,nt,we),typeof O.UNSAFE_componentWillUpdate=="function"&&O.UNSAFE_componentWillUpdate(S,nt,we)),typeof O.componentDidUpdate=="function"&&(p.flags|=4),typeof O.getSnapshotBeforeUpdate=="function"&&(p.flags|=1024)):(typeof O.componentDidUpdate!="function"||K===f.memoizedProps&&We===f.memoizedState||(p.flags|=4),typeof O.getSnapshotBeforeUpdate!="function"||K===f.memoizedProps&&We===f.memoizedState||(p.flags|=1024),p.memoizedProps=S,p.memoizedState=nt),O.props=S,O.state=nt,O.context=we,S=st):(typeof O.componentDidUpdate!="function"||K===f.memoizedProps&&We===f.memoizedState||(p.flags|=4),typeof O.getSnapshotBeforeUpdate!="function"||K===f.memoizedProps&&We===f.memoizedState||(p.flags|=1024),S=!1)}return O=S,cb(f,p),S=(p.flags&128)!==0,O||S?(O=p.stateNode,_=S&&typeof _.getDerivedStateFromError!="function"?null:O.render(),p.flags|=1,f!==null&&S?(p.child=Nd(p,f.child,null,k),p.child=Nd(p,null,_,k)):Fi(f,p,_,k),p.memoizedState=O.state,f=p.child):f=wl(f,p,k),f}function RI(f,p,_,S){return wd(),p.flags|=256,Fi(f,p,_,S),p.child}var zE={dehydrated:null,treeContext:null,retryLane:0,hydrationErrors:null};function BE(f){return{baseLanes:f,cachePool:yj()}}function HE(f,p,_){return f=f!==null?f.childLanes&~_:0,p&&(f|=ta),f}function PI(f,p,_){var S=p.pendingProps,k=!1,O=(p.flags&128)!==0,K;if((K=O)||(K=f!==null&&f.memoizedState===null?!1:(Rr.current&2)!==0),K&&(k=!0,p.flags&=-129),K=(p.flags&32)!==0,p.flags&=-33,f===null){if(yn){if(k?Gc(p):Wc(),(f=nr)?(f=z4(f,wa),f=f!==null&&f.data!=="&"?f:null,f!==null&&(p.memoizedState={dehydrated:f,treeContext:Uc!==null?{id:Lo,overflow:jo}:null,retryLane:536870912,hydrationErrors:null},_=dj(f),_.return=p,p.child=_,Ii=p,nr=null)):f=null,f===null)throw zc(p);return M2(f)?p.lanes=32:p.lanes=536870912,null}var oe=S.children;return S=S.fallback,k?(Wc(),k=p.mode,oe=ub({mode:"hidden",children:oe},k),S=Sd(S,k,_,null),oe.return=p,S.return=p,oe.sibling=S,p.child=oe,S=p.child,S.memoizedState=BE(_),S.childLanes=HE(f,K,_),p.memoizedState=zE,_g(null,S)):(Gc(p),$E(p,oe))}var we=f.memoizedState;if(we!==null&&(oe=we.dehydrated,oe!==null)){if(O)p.flags&256?(Gc(p),p.flags&=-257,p=VE(f,p,_)):p.memoizedState!==null?(Wc(),p.child=f.child,p.flags|=128,p=null):(Wc(),oe=S.fallback,k=p.mode,S=ub({mode:"visible",children:S.children},k),oe=Sd(oe,k,_,null),oe.flags|=2,S.return=p,oe.return=p,S.sibling=oe,p.child=S,Nd(p,f.child,null,_),S=p.child,S.memoizedState=BE(_),S.childLanes=HE(f,K,_),p.memoizedState=zE,p=_g(null,S));else if(Gc(p),M2(oe)){if(K=oe.nextSibling&&oe.nextSibling.dataset,K)var $e=K.dgst;K=$e,S=Error(r(419)),S.stack="",S.digest=K,cg({value:S,source:null,stack:null}),p=VE(f,p,_)}else if(zr||dh(f,p,_,!1),K=(_&f.childLanes)!==0,zr||K){if(K=Xn,K!==null&&(S=vi(K,_),S!==0&&S!==we.retryLane))throw we.retryLane=S,_d(f,S),Os(K,f,S),UE;w2(oe)||bb(),p=VE(f,p,_)}else w2(oe)?(p.flags|=192,p.child=f.child,p=null):(f=we.treeContext,nr=Ea(oe.nextSibling),Ii=p,yn=!0,Fc=null,wa=!1,f!==null&&pj(p,f),p=$E(p,S.children),p.flags|=4096);return p}return k?(Wc(),oe=S.fallback,k=p.mode,we=f.child,$e=we.sibling,S=xl(we,{mode:"hidden",children:S.children}),S.subtreeFlags=we.subtreeFlags&65011712,$e!==null?oe=xl($e,oe):(oe=Sd(oe,k,_,null),oe.flags|=2),oe.return=p,S.return=p,S.sibling=oe,p.child=S,_g(null,S),S=p.child,oe=f.child.memoizedState,oe===null?oe=BE(_):(k=oe.cachePool,k!==null?(we=Ur._currentValue,k=k.parent!==we?{parent:we,pool:we}:k):k=yj(),oe={baseLanes:oe.baseLanes|_,cachePool:k}),S.memoizedState=oe,S.childLanes=HE(f,K,_),p.memoizedState=zE,_g(f.child,S)):(Gc(p),_=f.child,f=_.sibling,_=xl(_,{mode:"visible",children:S.children}),_.return=p,_.sibling=null,f!==null&&(K=p.deletions,K===null?(p.deletions=[f],p.flags|=16):K.push(f)),p.child=_,p.memoizedState=null,_)}function $E(f,p){return p=ub({mode:"visible",children:p},f.mode),p.return=f,f.child=p}function ub(f,p){return f=Zs(22,f,null,p),f.lanes=0,f}function VE(f,p,_){return Nd(p,f.child,null,_),f=$E(p,p.pendingProps.children),f.flags|=2,p.memoizedState=null,f}function DI(f,p,_){f.lanes|=p;var S=f.alternate;S!==null&&(S.lanes|=p),sE(f.return,p,_)}function GE(f,p,_,S,k,O){var K=f.memoizedState;K===null?f.memoizedState={isBackwards:p,rendering:null,renderingStartTime:0,last:S,tail:_,tailMode:k,treeForkCount:O}:(K.isBackwards=p,K.rendering=null,K.renderingStartTime=0,K.last=S,K.tail=_,K.tailMode=k,K.treeForkCount=O)}function OI(f,p,_){var S=p.pendingProps,k=S.revealOrder,O=S.tail;S=S.children;var K=Rr.current,oe=(K&2)!==0;if(oe?(K=K&1|2,p.flags|=128):K&=1,te(Rr,K),Fi(f,p,S,_),S=yn?lg:0,!oe&&f!==null&&(f.flags&128)!==0)e:for(f=p.child;f!==null;){if(f.tag===13)f.memoizedState!==null&&DI(f,_,p);else if(f.tag===19)DI(f,_,p);else if(f.child!==null){f.child.return=f,f=f.child;continue}if(f===p)break e;for(;f.sibling===null;){if(f.return===null||f.return===p)break e;f=f.return}f.sibling.return=f.return,f=f.sibling}switch(k){case"forwards":for(_=p.child,k=null;_!==null;)f=_.alternate,f!==null&&Qv(f)===null&&(k=_),_=_.sibling;_=k,_===null?(k=p.child,p.child=null):(k=_.sibling,_.sibling=null),GE(p,!1,k,_,O,S);break;case"backwards":case"unstable_legacy-backwards":for(_=null,k=p.child,p.child=null;k!==null;){if(f=k.alternate,f!==null&&Qv(f)===null){p.child=k;break}f=k.sibling,k.sibling=_,_=k,k=f}GE(p,!0,_,null,O,S);break;case"together":GE(p,!1,null,null,void 0,S);break;default:p.memoizedState=null}return p.child}function wl(f,p,_){if(f!==null&&(p.dependencies=f.dependencies),Kc|=p.lanes,(_&p.childLanes)===0)if(f!==null){if(dh(f,p,_,!1),(_&p.childLanes)===0)return null}else return null;if(f!==null&&p.child!==f.child)throw Error(r(153));if(p.child!==null){for(f=p.child,_=xl(f,f.pendingProps),p.child=_,_.return=p;f.sibling!==null;)f=f.sibling,_=_.sibling=xl(f,f.pendingProps),_.return=p;_.sibling=null}return p.child}function WE(f,p){return(f.lanes&p)!==0?!0:(f=f.dependencies,!!(f!==null&&Vv(f)))}function bte(f,p,_){switch(p.tag){case 3:Ee(p,p.stateNode.containerInfo),Bc(p,Ur,f.memoizedState.cache),wd();break;case 27:case 5:_e(p);break;case 4:Ee(p,p.stateNode.containerInfo);break;case 10:Bc(p,p.type,p.memoizedProps.value);break;case 31:if(p.memoizedState!==null)return p.flags|=128,xE(p),null;break;case 13:var S=p.memoizedState;if(S!==null)return S.dehydrated!==null?(Gc(p),p.flags|=128,null):(_&p.child.childLanes)!==0?PI(f,p,_):(Gc(p),f=wl(f,p,_),f!==null?f.sibling:null);Gc(p);break;case 19:var k=(f.flags&128)!==0;if(S=(_&p.childLanes)!==0,S||(dh(f,p,_,!1),S=(_&p.childLanes)!==0),k){if(S)return OI(f,p,_);p.flags|=128}if(k=p.memoizedState,k!==null&&(k.rendering=null,k.tail=null,k.lastEffect=null),te(Rr,Rr.current),S)break;return null;case 22:return p.lanes=0,AI(f,p,_,p.pendingProps);case 24:Bc(p,Ur,f.memoizedState.cache)}return wl(f,p,_)}function LI(f,p,_){if(f!==null)if(f.memoizedProps!==p.pendingProps)zr=!0;else{if(!WE(f,_)&&(p.flags&128)===0)return zr=!1,bte(f,p,_);zr=(f.flags&131072)!==0}else zr=!1,yn&&(p.flags&1048576)!==0&&hj(p,lg,p.index);switch(p.lanes=0,p.tag){case 16:e:{var S=p.pendingProps;if(f=Td(p.elementType),p.type=f,typeof f=="function")ZM(f)?(S=Rd(f,S),p.tag=1,p=kI(null,p,f,S,_)):(p.tag=0,p=FE(null,p,f,S,_));else{if(f!=null){var k=f.$$typeof;if(k===A){p.tag=11,p=wI(null,p,f,S,_);break e}else if(k===C){p.tag=14,p=MI(null,p,f,S,_);break e}}throw p=P(f)||f,Error(r(306,p,""))}}return p;case 0:return FE(f,p,p.type,p.pendingProps,_);case 1:return S=p.type,k=Rd(S,p.pendingProps),kI(f,p,S,k,_);case 3:e:{if(Ee(p,p.stateNode.containerInfo),f===null)throw Error(r(387));S=p.pendingProps;var O=p.memoizedState;k=O.element,fE(f,p),gg(p,S,null,_);var K=p.memoizedState;if(S=K.cache,Bc(p,Ur,S),S!==O.cache&&aE(p,[Ur],_,!0),mg(),S=K.element,O.isDehydrated)if(O={element:S,isDehydrated:!1,cache:K.cache},p.updateQueue.baseState=O,p.memoizedState=O,p.flags&256){p=RI(f,p,S,_);break e}else if(S!==k){k=ya(Error(r(424)),p),cg(k),p=RI(f,p,S,_);break e}else{switch(f=p.stateNode.containerInfo,f.nodeType){case 9:f=f.body;break;default:f=f.nodeName==="HTML"?f.ownerDocument.body:f}for(nr=Ea(f.firstChild),Ii=p,yn=!0,Fc=null,wa=!0,_=Aj(p,null,S,_),p.child=_;_;)_.flags=_.flags&-3|4096,_=_.sibling}else{if(wd(),S===k){p=wl(f,p,_);break e}Fi(f,p,S,_)}p=p.child}return p;case 26:return cb(f,p),f===null?(_=W4(p.type,null,p.pendingProps,null))?p.memoizedState=_:yn||(_=p.type,f=p.pendingProps,S=Ab(ie.current).createElement(_),S[mr]=p,S[Nr]=f,zi(S,_,f),Re(S),p.stateNode=S):p.memoizedState=W4(p.type,f.memoizedProps,p.pendingProps,f.memoizedState),null;case 27:return _e(p),f===null&&yn&&(S=p.stateNode=$4(p.type,p.pendingProps,ie.current),Ii=p,wa=!0,k=nr,eu(p.type)?(E2=k,nr=Ea(S.firstChild)):nr=k),Fi(f,p,p.pendingProps.children,_),cb(f,p),f===null&&(p.flags|=4194304),p.child;case 5:return f===null&&yn&&((k=S=nr)&&(S=Kte(S,p.type,p.pendingProps,wa),S!==null?(p.stateNode=S,Ii=p,nr=Ea(S.firstChild),wa=!1,k=!0):k=!1),k||zc(p)),_e(p),k=p.type,O=p.pendingProps,K=f!==null?f.memoizedProps:null,S=O.children,y2(k,O)?S=null:K!==null&&y2(k,K)&&(p.flags|=32),p.memoizedState!==null&&(k=bE(f,p,ute,null,null,_),jg._currentValue=k),cb(f,p),Fi(f,p,S,_),p.child;case 6:return f===null&&yn&&((f=_=nr)&&(_=Yte(_,p.pendingProps,wa),_!==null?(p.stateNode=_,Ii=p,nr=null,f=!0):f=!1),f||zc(p)),null;case 13:return PI(f,p,_);case 4:return Ee(p,p.stateNode.containerInfo),S=p.pendingProps,f===null?p.child=Nd(p,null,S,_):Fi(f,p,S,_),p.child;case 11:return wI(f,p,p.type,p.pendingProps,_);case 7:return Fi(f,p,p.pendingProps,_),p.child;case 8:return Fi(f,p,p.pendingProps.children,_),p.child;case 12:return Fi(f,p,p.pendingProps.children,_),p.child;case 10:return S=p.pendingProps,Bc(p,p.type,S.value),Fi(f,p,S.children,_),p.child;case 9:return k=p.type._context,S=p.pendingProps.children,Ed(p),k=Ui(k),S=S(k),p.flags|=1,Fi(f,p,S,_),p.child;case 14:return MI(f,p,p.type,p.pendingProps,_);case 15:return EI(f,p,p.type,p.pendingProps,_);case 19:return OI(f,p,_);case 31:return vte(f,p,_);case 22:return AI(f,p,_,p.pendingProps);case 24:return Ed(p),S=Ui(Ur),f===null?(k=cE(),k===null&&(k=Xn,O=oE(),k.pooledCache=O,O.refCount++,O!==null&&(k.pooledCacheLanes|=_),k=O),p.memoizedState={parent:S,cache:k},dE(p),Bc(p,Ur,k)):((f.lanes&_)!==0&&(fE(f,p),gg(p,null,null,_),mg()),k=f.memoizedState,O=p.memoizedState,k.parent!==S?(k={parent:S,cache:S},p.memoizedState=k,p.lanes===0&&(p.memoizedState=p.updateQueue.baseState=k),Bc(p,Ur,S)):(S=O.cache,Bc(p,Ur,S),S!==k.cache&&aE(p,[Ur],_,!0))),Fi(f,p,p.pendingProps.children,_),p.child;case 29:throw p.pendingProps}throw Error(r(156,p.tag))}function Ml(f){f.flags|=4}function qE(f,p,_,S,k){if((p=(f.mode&32)!==0)&&(p=!1),p){if(f.flags|=16777216,(k&335544128)===k)if(f.stateNode.complete)f.flags|=8192;else if(l4())f.flags|=8192;else throw Cd=Xv,uE}else f.flags&=-16777217}function jI(f,p){if(p.type!=="stylesheet"||(p.state.loading&4)!==0)f.flags&=-16777217;else if(f.flags|=16777216,!Z4(p))if(l4())f.flags|=8192;else throw Cd=Xv,uE}function db(f,p){p!==null&&(f.flags|=4),f.flags&16384&&(p=f.tag!==22?yt():536870912,f.lanes|=p,wh|=p)}function Sg(f,p){if(!yn)switch(f.tailMode){case"hidden":p=f.tail;for(var _=null;p!==null;)p.alternate!==null&&(_=p),p=p.sibling;_===null?f.tail=null:_.sibling=null;break;case"collapsed":_=f.tail;for(var S=null;_!==null;)_.alternate!==null&&(S=_),_=_.sibling;S===null?p||f.tail===null?f.tail=null:f.tail.sibling=null:S.sibling=null}}function rr(f){var p=f.alternate!==null&&f.alternate.child===f.child,_=0,S=0;if(p)for(var k=f.child;k!==null;)_|=k.lanes|k.childLanes,S|=k.subtreeFlags&65011712,S|=k.flags&65011712,k.return=f,k=k.sibling;else for(k=f.child;k!==null;)_|=k.lanes|k.childLanes,S|=k.subtreeFlags,S|=k.flags,k.return=f,k=k.sibling;return f.subtreeFlags|=S,f.childLanes=_,p}function yte(f,p,_){var S=p.pendingProps;switch(tE(p),p.tag){case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return rr(p),null;case 1:return rr(p),null;case 3:return _=p.stateNode,S=null,f!==null&&(S=f.memoizedState.cache),p.memoizedState.cache!==S&&(p.flags|=2048),yl(Ur),fe(),_.pendingContext&&(_.context=_.pendingContext,_.pendingContext=null),(f===null||f.child===null)&&(uh(p)?Ml(p):f===null||f.memoizedState.isDehydrated&&(p.flags&256)===0||(p.flags|=1024,rE())),rr(p),null;case 26:var k=p.type,O=p.memoizedState;return f===null?(Ml(p),O!==null?(rr(p),jI(p,O)):(rr(p),qE(p,k,null,S,_))):O?O!==f.memoizedState?(Ml(p),rr(p),jI(p,O)):(rr(p),p.flags&=-16777217):(f=f.memoizedProps,f!==S&&Ml(p),rr(p),qE(p,k,f,S,_)),null;case 27:if(Pe(p),_=ie.current,k=p.type,f!==null&&p.stateNode!=null)f.memoizedProps!==S&&Ml(p);else{if(!S){if(p.stateNode===null)throw Error(r(166));return rr(p),null}f=ae.current,uh(p)?mj(p):(f=$4(k,S,_),p.stateNode=f,Ml(p))}return rr(p),null;case 5:if(Pe(p),k=p.type,f!==null&&p.stateNode!=null)f.memoizedProps!==S&&Ml(p);else{if(!S){if(p.stateNode===null)throw Error(r(166));return rr(p),null}if(O=ae.current,uh(p))mj(p);else{var K=Ab(ie.current);switch(O){case 1:O=K.createElementNS("http://www.w3.org/2000/svg",k);break;case 2:O=K.createElementNS("http://www.w3.org/1998/Math/MathML",k);break;default:switch(k){case"svg":O=K.createElementNS("http://www.w3.org/2000/svg",k);break;case"math":O=K.createElementNS("http://www.w3.org/1998/Math/MathML",k);break;case"script":O=K.createElement("div"),O.innerHTML=" - + +