diff --git a/build/assets/index-BAFm1LaZ.css b/build/assets/index-BAFm1LaZ.css deleted file mode 100644 index d260bf3..0000000 --- a/build/assets/index-BAFm1LaZ.css +++ /dev/null @@ -1 +0,0 @@ -._header_6kz3c_1{position:fixed;top:0;left:0;right:0;z-index:100;padding:var(--space-md) 0;transition:background-color var(--transition-normal),backdrop-filter var(--transition-normal)}._header_6kz3c_1._scrolled_6kz3c_11{background-color:#0f1410d9;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-bottom:1px solid var(--md-sys-color-outline-variant)}._nav_6kz3c_17{display:flex;align-items:center;justify-content:space-between;gap:var(--space-lg)}._logo_6kz3c_24{display:flex;align-items:center;text-decoration:none}._logoImage_6kz3c_30{height:2rem;width:auto}._navLinks_6kz3c_35{position:relative;display:flex;align-items:center;gap:var(--space-xl)}._navLink_6kz3c_35{position:relative;padding:var(--space-sm) var(--space-md);font-size:.95rem;font-weight:500;color:var(--md-sys-color-on-surface);text-decoration:none;opacity:.8;transition:opacity var(--transition-fast),color var(--transition-fast)}._navLink_6kz3c_35:hover,._navLink_6kz3c_35._active_6kz3c_58{opacity:1;color:var(--md-sys-color-primary)}._activeIndicator_6kz3c_63{position:absolute;bottom:0;left:0;width:4px;height:4px;border-radius:50%;background-color:var(--md-sys-color-primary);transform:translate(-50%);pointer-events:none}._actions_6kz3c_75{display:flex;align-items:center;gap:var(--space-md)}._langToggle_6kz3c_81{display:flex;align-items:center;gap:.25em;padding:var(--space-sm) var(--space-md);font-size:.85rem;font-weight:600;color:var(--md-sys-color-on-surface);background:transparent;border:1px solid var(--md-sys-color-outline-variant);border-radius:var(--radius-full);cursor:pointer;transition:border-color var(--transition-fast),background-color var(--transition-fast)}._langToggle_6kz3c_81:hover{border-color:var(--md-sys-color-primary);background-color:var(--md-sys-color-surface-container)}._langDivider_6kz3c_101{opacity:.5}._activeLang_6kz3c_105{color:var(--md-sys-color-primary)}._mobileMenuBtn_6kz3c_109{display:none;width:40px;height:40px;padding:0;background:transparent;border:none;cursor:pointer}._hamburger_6kz3c_119{position:relative;display:block;width:24px;height:2px;margin:0 auto;background-color:var(--md-sys-color-on-surface);border-radius:2px;transition:background-color var(--transition-fast)}._hamburger_6kz3c_119:before,._hamburger_6kz3c_119:after{content:"";position:absolute;left:0;width:24px;height:2px;background-color:var(--md-sys-color-on-surface);border-radius:2px;transition:transform var(--transition-normal)}._hamburger_6kz3c_119:before{top:-7px}._hamburger_6kz3c_119:after{bottom:-7px}._hamburger_6kz3c_119._open_6kz3c_150{background-color:transparent}._hamburger_6kz3c_119._open_6kz3c_150:before{transform:translateY(7px) rotate(45deg)}._hamburger_6kz3c_119._open_6kz3c_150:after{transform:translateY(-7px) rotate(-45deg)}@media(max-width:768px){._navLinks_6kz3c_35{position:fixed;top:70px;left:0;right:0;flex-direction:column;gap:0;padding:var(--space-lg);background-color:#0f1410fa;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-bottom:1px solid var(--md-sys-color-outline-variant);transform:translateY(-100%);opacity:0;visibility:hidden;transition:transform var(--transition-normal),opacity var(--transition-normal),visibility var(--transition-normal)}._navLinks_6kz3c_35._open_6kz3c_150{transform:translateY(0);opacity:1;visibility:visible}._navLink_6kz3c_35{width:100%;padding:var(--space-md);text-align:center;font-size:1.1rem}._mobileMenuBtn_6kz3c_109{display:flex;align-items:center;justify-content:center}}._footer_qrb1s_1{margin-top:auto;padding:var(--space-2xl) 0;background-color:var(--md-sys-color-surface-container-lowest);border-top:1px solid var(--md-sys-color-outline-variant)}._content_qrb1s_8{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:var(--space-lg)}._brand_qrb1s_16{display:flex;flex-direction:column;align-items:flex-start;gap:var(--space-sm)}._logoImage_qrb1s_23{height:1.75rem;width:auto}._copyright_qrb1s_28{font-size:.875rem;color:var(--md-sys-color-on-surface);opacity:.6}._links_qrb1s_34{display:flex;align-items:center;gap:var(--space-md)}._socialLink_qrb1s_40{display:flex;align-items:center;justify-content:center;width:44px;height:44px;color:var(--md-sys-color-on-surface);background-color:var(--md-sys-color-surface-container);border-radius:var(--radius-full);transition:color var(--transition-fast),background-color var(--transition-fast),transform var(--transition-fast)}._socialLink_qrb1s_40:hover{color:var(--md-sys-color-primary);background-color:var(--md-sys-color-surface-container-high);transform:translateY(-2px)}._credit_qrb1s_58{font-size:.875rem;color:var(--md-sys-color-on-surface);opacity:.6}._heart_qrb1s_64{color:var(--md-sys-color-primary);font-weight:500}@media(max-width:768px){._content_qrb1s_8{flex-direction:column;text-align:center}._brand_qrb1s_16{align-items:center}}._cursor_1b430_1{position:fixed;width:40px;height:40px;border:2px solid var(--md-sys-color-primary);border-radius:50%;pointer-events:none;z-index:9999;transform:translate(-50%,-50%);transition:width .15s ease-out,height .15s ease-out,border-color .15s ease-out,background-color .15s ease-out,opacity .15s ease-out;mix-blend-mode:difference}._cursorDot_1b430_19{position:fixed;width:6px;height:6px;background-color:var(--md-sys-color-primary);border-radius:50%;pointer-events:none;z-index:10000;transform:translate(-50%,-50%);transition:opacity .15s ease-out}._cursor_1b430_1._pointer_1b430_31{width:60px;height:60px;border-color:var(--md-sys-color-primary);background-color:#7fd9981a}._cursor_1b430_1._clicking_1b430_38{width:35px;height:35px;background-color:#7fd99833}._cursor_1b430_1._hidden_1b430_44,._cursorDot_1b430_19._hidden_1b430_44{opacity:0}@media(hover:none),(prefers-reduced-motion:reduce){._cursor_1b430_1,._cursorDot_1b430_19{display:none}}@media(hover:hover){body,a,button{cursor:none}}.gradient-blinds-container{position:relative;width:100%;height:100%;overflow:hidden}._button_yjd5k_1{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-sm);font-family:var(--md-sys-typescale-body-font);font-weight:600;border:none;border-radius:var(--radius-full);cursor:pointer;transition:background-color var(--transition-fast),color var(--transition-fast),box-shadow var(--transition-fast)}._button_yjd5k_1:disabled{opacity:.6;cursor:not-allowed}._sm_yjd5k_23{padding:var(--space-sm) var(--space-md);font-size:.875rem}._md_yjd5k_28{padding:var(--space-md) var(--space-xl);font-size:1rem}._lg_yjd5k_33{padding:var(--space-lg) var(--space-2xl);font-size:1.125rem}._primary_yjd5k_39{background-color:var(--md-sys-color-primary);color:var(--md-sys-color-on-primary)}._primary_yjd5k_39:hover:not(:disabled){background-color:var(--md-sys-color-on-primary-container);box-shadow:0 4px 20px #7fd9984d}._secondary_yjd5k_49{background-color:var(--md-sys-color-surface-container-high);color:var(--md-sys-color-on-surface)}._secondary_yjd5k_49:hover:not(:disabled){background-color:var(--md-sys-color-surface-container-highest)}._outline_yjd5k_58{background-color:transparent;color:var(--md-sys-color-primary);border:2px solid var(--md-sys-color-primary)}._outline_yjd5k_58:hover:not(:disabled){background-color:#7fd9981a}._loader_yjd5k_69{width:20px;height:20px;border:2px solid transparent;border-top-color:currentColor;border-radius:50%;animation:_spin_yjd5k_1 .8s linear infinite}@keyframes _spin_yjd5k_1{to{transform:rotate(360deg)}}._card_mghl3_1{position:relative;padding:var(--space-xl);background-color:var(--md-sys-color-surface-container);border:1px solid var(--md-sys-color-outline-variant);border-radius:var(--radius-lg);transition:border-color var(--transition-fast),box-shadow var(--transition-fast),background-color var(--transition-fast)}._card_mghl3_1._hoverable_mghl3_13:hover{border-color:var(--md-sys-color-primary);background-color:var(--md-sys-color-surface-container-high);box-shadow:0 8px 32px #0000004d,0 0 0 1px #7fd9981a,inset 0 1px #7fd9981a}._icon_mghl3_22{display:flex;align-items:center;justify-content:center;width:56px;height:56px;margin-bottom:var(--space-lg);background-color:var(--md-sys-color-primary-container);border-radius:var(--radius-md);color:var(--md-sys-color-on-primary-container)}._icon_mghl3_22 svg{width:28px;height:28px}._title_mghl3_39{margin-bottom:var(--space-sm);font-size:1.25rem;font-weight:600;color:var(--md-sys-color-on-surface)}._description_mghl3_46{font-size:.95rem;line-height:1.6;color:var(--md-sys-color-on-surface);opacity:.75}._field_1azqc_1{display:flex;flex-direction:column;gap:var(--space-sm)}._label_1azqc_7{font-size:.875rem;font-weight:500;color:var(--md-sys-color-on-surface)}._input_1azqc_13{padding:var(--space-md);font-family:var(--md-sys-typescale-body-font);font-size:1rem;color:var(--md-sys-color-on-surface);background-color:var(--md-sys-color-surface-container);border:1px solid var(--md-sys-color-outline-variant);border-radius:var(--radius-md);transition:border-color var(--transition-fast),box-shadow var(--transition-fast),background-color var(--transition-fast)}._input_1azqc_13::placeholder{color:var(--md-sys-color-outline)}._input_1azqc_13:hover{border-color:var(--md-sys-color-outline);background-color:var(--md-sys-color-surface-container-high)}._input_1azqc_13:focus{outline:none;border-color:var(--md-sys-color-primary);box-shadow:0 0 0 3px #7fd99826}._textarea_1azqc_42{min-height:150px;resize:vertical}._hasError_1azqc_47 ._input_1azqc_13{border-color:var(--md-sys-color-error)}._hasError_1azqc_47 ._input_1azqc_13:focus{box-shadow:0 0 0 3px #ffb4ab26}._error_1azqc_55{font-size:.8125rem;color:var(--md-sys-color-error)}._hero_lgffv_1{position:relative;display:flex;align-items:center;justify-content:center;height:100vh;height:100dvh;padding:var(--space-3xl) 0;overflow:hidden}._backgroundContainer_lgffv_12{position:absolute;top:0;left:0;width:100%;height:100%;z-index:0}._content_lgffv_21{position:relative;z-index:1;display:flex;align-items:center;justify-content:center}._text_lgffv_29{max-width:800px;text-align:center}._greeting_lgffv_34{font-size:1.125rem;font-weight:500;color:var(--md-sys-color-primary);margin-bottom:var(--space-md);letter-spacing:.05em;text-transform:uppercase}._title_lgffv_43{font-size:clamp(2.5rem,6vw,5rem);font-weight:700;line-height:1.1;margin-bottom:var(--space-lg);background:linear-gradient(135deg,var(--md-sys-color-on-surface) 0%,var(--md-sys-color-primary) 50%,var(--md-sys-color-on-surface) 100%);background-size:200% auto;-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;animation:_shimmer_lgffv_1 3s ease-in-out infinite}@keyframes _shimmer_lgffv_1{0%,to{background-position:0% center}50%{background-position:100% center}}._tagline_lgffv_70{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:.5em;font-size:clamp(1.25rem,3vw,2rem);color:var(--md-sys-color-on-surface);opacity:.9;margin-bottom:var(--space-2xl)}._typed_lgffv_82{color:var(--md-sys-color-primary);font-weight:600;min-width:200px;text-align:left}._cursor_lgffv_89{display:inline-block;margin-left:2px;animation:_blink_lgffv_1 1s step-end infinite}@keyframes _blink_lgffv_1{0%,to{opacity:1}50%{opacity:0}}._cta_lgffv_104{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:var(--space-md)}._scrollIndicator_lgffv_112{position:absolute;bottom:var(--space-2xl);left:50%;transform:translate(-50%);z-index:1;display:flex;flex-direction:column;align-items:center;gap:var(--space-sm)}._scrollMouse_lgffv_124{width:26px;height:42px;border:2px solid var(--md-sys-color-outline);border-radius:13px;display:flex;justify-content:center;padding-top:8px}._scrollWheel_lgffv_134{width:4px;height:8px;background-color:var(--md-sys-color-primary);border-radius:2px}._scrollText_lgffv_141{font-size:.75rem;font-weight:500;color:var(--md-sys-color-on-surface);opacity:.4;text-transform:uppercase;letter-spacing:.1em}@media(max-width:768px){._typed_lgffv_82{min-width:auto;display:block;width:100%;text-align:center}._cta_lgffv_104{flex-direction:column}._cta_lgffv_104 a,._cta_lgffv_104 button{width:100%}}._services_1bb0v_1{padding:var(--space-3xl) 0;background-color:var(--md-sys-color-surface-container-lowest)}._header_1bb0v_6{text-align:center;margin-bottom:var(--space-3xl)}._title_1bb0v_11{font-size:clamp(2rem,4vw,3rem);font-weight:700;margin-bottom:var(--space-md);color:var(--md-sys-color-on-surface)}._subtitle_1bb0v_18{font-size:1.125rem;color:var(--md-sys-color-on-surface);opacity:.75;max-width:600px;margin:0 auto}._grid_1bb0v_26{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:var(--space-xl)}@media(min-width:1024px){._grid_1bb0v_26{grid-template-columns:repeat(4,1fr)}}._about_1n62r_1{padding-top:80px}._hero_1n62r_6{padding:var(--space-3xl) 0;text-align:center;background:linear-gradient(180deg,var(--md-sys-color-surface-container-lowest) 0%,var(--md-sys-color-background) 100%)}._title_1n62r_16{font-size:clamp(2.5rem,5vw,4rem);font-weight:700;margin-bottom:var(--space-md)}._subtitle_1n62r_22{font-size:1.25rem;color:var(--md-sys-color-primary);font-weight:500}._intro_1n62r_29{padding:var(--space-3xl) 0}._introContent_1n62r_33{max-width:800px;margin:0 auto}._introText_1n62r_38{font-size:1.125rem;line-height:1.8;margin-bottom:var(--space-lg);color:var(--md-sys-color-on-surface);opacity:.9}._sectionHeader_1n62r_47{text-align:center;margin-bottom:var(--space-2xl)}._sectionHeader_1n62r_47 h2{font-size:clamp(1.75rem,3vw,2.5rem);margin-bottom:var(--space-sm)}._sectionHeader_1n62r_47 p{font-size:1rem;opacity:.75}._skills_1n62r_63{padding:var(--space-3xl) 0;background-color:var(--md-sys-color-surface-container-lowest)}._techGrid_1n62r_68{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:var(--space-md);max-width:800px;margin:0 auto}._techCard_1n62r_76{display:flex;flex-direction:column;align-items:center;gap:var(--space-sm);padding:var(--space-lg);background-color:var(--md-sys-color-surface-container);border:1px solid var(--md-sys-color-outline-variant);border-radius:var(--radius-lg);transition:border-color var(--transition-fast),background-color var(--transition-fast)}._techCard_1n62r_76:hover{border-color:var(--md-sys-color-primary);background-color:var(--md-sys-color-surface-container-high)}._techIcon_1n62r_93{font-size:2rem}._techName_1n62r_97{font-size:.875rem;font-weight:500;color:var(--md-sys-color-on-surface)}._values_1n62r_104{padding:var(--space-3xl) 0}._valuesGrid_1n62r_108{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:var(--space-xl)}._valueCard_1n62r_114{padding:var(--space-xl);background-color:var(--md-sys-color-surface-container);border:1px solid var(--md-sys-color-outline-variant);border-radius:var(--radius-lg);transition:border-color var(--transition-fast)}._valueCard_1n62r_114:hover{border-color:var(--md-sys-color-primary)}._valueNumber_1n62r_126{font-size:2rem;font-weight:700;color:var(--md-sys-color-primary);opacity:.5;margin-bottom:var(--space-sm)}._valueTitle_1n62r_134{font-size:1.25rem;font-weight:600;margin-bottom:var(--space-sm)}._valueDescription_1n62r_140{font-size:.95rem;opacity:.75;line-height:1.6}._contact_1lm51_1{padding-top:80px}._hero_1lm51_6{padding:var(--space-3xl) 0;text-align:center;background:linear-gradient(180deg,var(--md-sys-color-surface-container-lowest) 0%,var(--md-sys-color-background) 100%)}._title_1lm51_16{font-size:clamp(2.5rem,5vw,4rem);font-weight:700;margin-bottom:var(--space-md)}._subtitle_1lm51_22{font-size:1.25rem;color:var(--md-sys-color-primary);font-weight:500}._content_1lm51_29{padding:var(--space-3xl) 0}._grid_1lm51_33{display:grid;grid-template-columns:1fr;gap:var(--space-3xl)}@media(min-width:768px){._grid_1lm51_33{grid-template-columns:1.5fr 1fr}}._formSection_1lm51_46{max-width:600px}._intro_1lm51_50{font-size:1.125rem;line-height:1.7;margin-bottom:var(--space-2xl);opacity:.9}._form_1lm51_46{display:flex;flex-direction:column;gap:var(--space-lg)}._success_1lm51_63{padding:var(--space-md);background-color:#7fd9981a;border:1px solid var(--md-sys-color-primary);border-radius:var(--radius-md);color:var(--md-sys-color-primary);font-size:.95rem}._error_1lm51_72{padding:var(--space-md);background-color:#ffb4ab1a;border:1px solid var(--md-sys-color-error);border-radius:var(--radius-md);color:var(--md-sys-color-error);font-size:.95rem}._infoSection_1lm51_82{padding:var(--space-xl);background-color:var(--md-sys-color-surface-container);border:1px solid var(--md-sys-color-outline-variant);border-radius:var(--radius-lg);height:fit-content}._infoTitle_1lm51_90{font-size:1.5rem;font-weight:600;margin-bottom:var(--space-xl)}._infoList_1lm51_96{display:flex;flex-direction:column;gap:var(--space-xl)}._infoItem_1lm51_102{display:flex;align-items:flex-start;gap:var(--space-md)}._infoIcon_1lm51_108{display:flex;align-items:center;justify-content:center;width:44px;height:44px;background-color:var(--md-sys-color-primary-container);border-radius:var(--radius-md);color:var(--md-sys-color-on-primary-container);flex-shrink:0}._infoIcon_1lm51_108 svg{width:22px;height:22px}._infoItem_1lm51_102 h3{font-size:.875rem;font-weight:500;color:var(--md-sys-color-on-surface);opacity:.7;margin-bottom:var(--space-xs)}._infoItem_1lm51_102 a{font-size:1rem;color:var(--md-sys-color-primary);word-break:break-all}._infoItem_1lm51_102 a:hover{text-decoration:underline}:root{--md-sys-color-primary: #7FD998;--md-sys-color-on-primary: #003919;--md-sys-color-primary-container: #005227;--md-sys-color-on-primary-container: #9AF6B2;--md-sys-color-secondary: #B4CCB9;--md-sys-color-on-secondary: #202D24;--md-sys-color-secondary-container: #364339;--md-sys-color-on-secondary-container: #D0E8D4;--md-sys-color-tertiary: #F2B8B5;--md-sys-color-on-tertiary: #4C2524;--md-sys-color-tertiary-container: #6B3A39;--md-sys-color-on-tertiary-container: #FFDAD7;--md-sys-color-error: #FFB4AB;--md-sys-color-on-error: #690005;--md-sys-color-error-container: #93000A;--md-sys-color-on-error-container: #FFDAD6;--md-sys-color-background: #0F1410;--md-sys-color-on-background: #E1E3DF;--md-sys-color-surface: #0F1410;--md-sys-color-on-surface: #E1E3DF;--md-sys-color-surface-dim: #0F1410;--md-sys-color-surface-bright: #353A36;--md-sys-color-surface-container-lowest: #0A0F0B;--md-sys-color-surface-container-low: #171D18;--md-sys-color-surface-container: #1B211C;--md-sys-color-surface-container-high: #252B26;--md-sys-color-surface-container-highest: #303631;--md-sys-color-outline: #8B9389;--md-sys-color-outline-variant: #414942;--md-sys-color-inverse-surface: #E1E3DF;--md-sys-color-inverse-on-surface: #2E332F;--md-sys-color-inverse-primary: #006D36;--md-sys-color-shadow: #000000;--md-sys-color-scrim: #000000;--md-sys-typescale-display-font: "Inter", sans-serif;--md-sys-typescale-body-font: "Inter", sans-serif;--md-sys-typescale-code-font: "JetBrains Mono", monospace;--space-xs: .25rem;--space-sm: .5rem;--space-md: 1rem;--space-lg: 1.5rem;--space-xl: 2rem;--space-2xl: 3rem;--space-3xl: 4rem;--radius-sm: 8px;--radius-md: 12px;--radius-lg: 16px;--radius-xl: 24px;--radius-full: 9999px;--transition-fast: .15s cubic-bezier(.4, 0, .2, 1);--transition-normal: .25s cubic-bezier(.4, 0, .2, 1);--transition-slow: .4s cubic-bezier(.4, 0, .2, 1);--container-sm: 640px;--container-md: 768px;--container-lg: 1024px;--container-xl: 1280px}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{font-family:var(--md-sys-typescale-body-font);background-color:var(--md-sys-color-background);color:var(--md-sys-color-on-background);line-height:1.6;min-height:100vh;overflow-x:hidden}#root{min-height:100vh;display:flex;flex-direction:column}h1,h2,h3,h4,h5,h6{font-family:var(--md-sys-typescale-display-font);font-weight:600;line-height:1.2;color:var(--md-sys-color-on-surface)}h1{font-size:clamp(2.5rem,5vw,4rem)}h2{font-size:clamp(2rem,4vw,3rem)}h3{font-size:clamp(1.5rem,3vw,2rem)}h4{font-size:clamp(1.25rem,2vw,1.5rem)}p{color:var(--md-sys-color-on-surface);opacity:.87}a{color:var(--md-sys-color-primary);text-decoration:none;transition:color var(--transition-fast)}a:hover{color:var(--md-sys-color-on-primary-container)}code{font-family:var(--md-sys-typescale-code-font);background:var(--md-sys-color-surface-container);padding:.2em .4em;border-radius:var(--radius-sm);font-size:.9em}:focus-visible{outline:2px solid var(--md-sys-color-primary);outline-offset:2px}::selection{background:var(--md-sys-color-primary);color:var(--md-sys-color-on-primary)}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:var(--md-sys-color-surface-container)}::-webkit-scrollbar-thumb{background:var(--md-sys-color-outline);border-radius:var(--radius-full)}::-webkit-scrollbar-thumb:hover{background:var(--md-sys-color-outline-variant)}.container{width:100%;max-width:var(--container-xl);margin:0 auto;padding:0 var(--space-lg)}section{padding:var(--space-3xl) 0}.page-enter{opacity:0;transform:translateY(20px)}.page-enter-active{opacity:1;transform:translateY(0);transition:opacity .3s ease-out,transform .3s ease-out}@media(hover:none)and (pointer:coarse){.custom-cursor{display:none!important}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}html{scroll-behavior:auto}} diff --git a/build/assets/index-BR63qlJT.js b/build/assets/index-BR63qlJT.js new file mode 100644 index 0000000..c333f3b --- /dev/null +++ b/build/assets/index-BR63qlJT.js @@ -0,0 +1,128 @@ +import{r as f,j as p,R as te,c as br}from"./three-1foLNQd8.js";import{g as wr,s as fn,i as mn,a as St,b as pn,c as _r,d as Er,e as Cr,f as Sr,r as Mr,h as Pr,j as gn,k as Rr,l as Lr,m as jr,o as Tr,S as Ir,H as Ar,F as ne,n as kr,p as vn,q as ke,t as Nr,u as Mt,v as X,w as yn,x as Fr,y as Dr,z as Or,A as Ne,B as nt,C as Pt,D as zr,E as $r,G as Y,I as Vr,J as Br,K as Wr,L as Rt,M as Ur,N as Hr,O as Gr,P as qr,Q as Le,R as Yr,T as Xr,U as xn,V as Kr,W as Zr}from"./motion-BIOHP8Ul.js";(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 Lt="popstate";function Jr(t={}){function e(r,i){let{pathname:s,search:a,hash:o}=r.location;return rt("",{pathname:s,search:a,hash:o},i.state&&i.state.usr||null,i.state&&i.state.key||"default")}function n(r,i){return typeof i=="string"?i:ve(i)}return ei(e,n,null,t)}function A(t,e){if(t===!1||t===null||typeof t>"u")throw new Error(e)}function q(t,e){if(!t){typeof console<"u"&&console.warn(e);try{throw new Error(e)}catch{}}}function Qr(){return Math.random().toString(36).substring(2,10)}function jt(t,e){return{usr:t.state,key:t.key,idx:e}}function rt(t,e,n=null,r){return{pathname:typeof t=="string"?t:t.pathname,search:"",hash:"",...typeof e=="string"?le(e):e,state:n,key:e&&e.key||r||Qr()}}function ve({pathname:t="/",search:e="",hash:n=""}){return e&&e!=="?"&&(t+=e.charAt(0)==="?"?e:"?"+e),n&&n!=="#"&&(t+=n.charAt(0)==="#"?n:"#"+n),t}function le(t){let e={};if(t){let n=t.indexOf("#");n>=0&&(e.hash=t.substring(n),t=t.substring(0,n));let r=t.indexOf("?");r>=0&&(e.search=t.substring(r),t=t.substring(0,r)),t&&(e.pathname=t)}return e}function ei(t,e,n,r={}){let{window:i=document.defaultView,v5Compat:s=!1}=r,a=i.history,o="POP",l=null,u=h();u==null&&(u=0,a.replaceState({...a.state,idx:u},""));function h(){return(a.state||{idx:null}).idx}function c(){o="POP";let y=h(),x=y==null?null:y-u;u=y,l&&l({action:o,location:v.location,delta:x})}function d(y,x){o="PUSH";let b=rt(v.location,y,x);u=h()+1;let w=jt(b,u),_=v.createHref(b);try{a.pushState(w,"",_)}catch(E){if(E instanceof DOMException&&E.name==="DataCloneError")throw E;i.location.assign(_)}s&&l&&l({action:o,location:v.location,delta:1})}function m(y,x){o="REPLACE";let b=rt(v.location,y,x);u=h();let w=jt(b,u),_=v.createHref(b);a.replaceState(w,"",_),s&&l&&l({action:o,location:v.location,delta:0})}function g(y){return ti(y)}let v={get action(){return o},get location(){return t(i,a)},listen(y){if(l)throw new Error("A history only accepts one active listener");return i.addEventListener(Lt,c),l=y,()=>{i.removeEventListener(Lt,c),l=null}},createHref(y){return e(i,y)},createURL:g,encodeLocation(y){let x=g(y);return{pathname:x.pathname,search:x.search,hash:x.hash}},push:d,replace:m,go(y){return a.go(y)}};return v}function ti(t,e=!1){let n="http://localhost";typeof window<"u"&&(n=window.location.origin!=="null"?window.location.origin:window.location.href),A(n,"No window.location.(origin|href) available to create URL");let r=typeof t=="string"?t:ve(t);return r=r.replace(/ $/,"%20"),!e&&r.startsWith("//")&&(r=n+r),new URL(r,n)}function bn(t,e,n="/"){return ni(t,e,n,!1)}function ni(t,e,n,r){let i=typeof e=="string"?le(e):e,s=J(i.pathname||"/",n);if(s==null)return null;let a=wn(t);ri(a);let o=null;for(let l=0;o==null&&l{let h={relativePath:u===void 0?a.path||"":u,caseSensitive:a.caseSensitive===!0,childrenIndex:o,route:a};if(h.relativePath.startsWith("/")){if(!h.relativePath.startsWith(r)&&l)return;A(h.relativePath.startsWith(r),`Absolute route path "${h.relativePath}" nested under path "${r}" is not valid. An absolute child route path must start with the combined path of all its parent routes.`),h.relativePath=h.relativePath.slice(r.length)}let c=Z([r,h.relativePath]),d=n.concat(h);a.children&&a.children.length>0&&(A(a.index!==!0,`Index routes must not have child routes. Please remove all child routes from route path "${c}".`),wn(a.children,e,d,c,l)),!(a.path==null&&!a.index)&&e.push({path:c,score:ui(c,a.index),routesMeta:d})};return t.forEach((a,o)=>{if(a.path===""||!a.path?.includes("?"))s(a,o);else for(let l of _n(a.path))s(a,o,!0,l)}),e}function _n(t){let e=t.split("/");if(e.length===0)return[];let[n,...r]=e,i=n.endsWith("?"),s=n.replace(/\?$/,"");if(r.length===0)return i?[s,""]:[s];let a=_n(r.join("/")),o=[];return o.push(...a.map(l=>l===""?s:[s,l].join("/"))),i&&o.push(...a),o.map(l=>t.startsWith("/")&&l===""?"/":l)}function ri(t){t.sort((e,n)=>e.score!==n.score?n.score-e.score:hi(e.routesMeta.map(r=>r.childrenIndex),n.routesMeta.map(r=>r.childrenIndex)))}var ii=/^:[\w-]+$/,si=3,ai=2,oi=1,li=10,ci=-2,Tt=t=>t==="*";function ui(t,e){let n=t.split("/"),r=n.length;return n.some(Tt)&&(r+=ci),e&&(r+=ai),n.filter(i=>!Tt(i)).reduce((i,s)=>i+(ii.test(s)?si:s===""?oi:li),r)}function hi(t,e){return t.length===e.length&&t.slice(0,-1).every((r,i)=>r===e[i])?t[t.length-1]-e[e.length-1]:0}function di(t,e,n=!1){let{routesMeta:r}=t,i={},s="/",a=[];for(let o=0;o{if(h==="*"){let g=o[d]||"";a=s.slice(0,s.length-g.length).replace(/(.)\/+$/,"$1")}const m=o[d];return c&&!m?u[h]=void 0:u[h]=(m||"").replace(/%2F/g,"/"),u},{}),pathname:s,pathnameBase:a,pattern:t}}function fi(t,e=!1,n=!0){q(t==="*"||!t.endsWith("*")||t.endsWith("/*"),`Route path "${t}" will be treated as if it were "${t.replace(/\*$/,"/*")}" because the \`*\` character must always follow a \`/\` in the pattern. To get rid of this warning, please change the route path to "${t.replace(/\*$/,"/*")}".`);let r=[],i="^"+t.replace(/\/*\*?$/,"").replace(/^\/*/,"/").replace(/[\\.*+^${}|()[\]]/g,"\\$&").replace(/\/:([\w-]+)(\?)?/g,(a,o,l)=>(r.push({paramName:o,isOptional:l!=null}),l?"/?([^\\/]+)?":"/([^\\/]+)")).replace(/\/([\w-]+)\?(\/|$)/g,"(/$1)?$2");return t.endsWith("*")?(r.push({paramName:"*"}),i+=t==="*"||t==="/*"?"(.*)$":"(?:\\/(.+)|\\/*)$"):n?i+="\\/*$":t!==""&&t!=="/"&&(i+="(?:(?=\\/|$))"),[new RegExp(i,e?void 0:"i"),r]}function mi(t){try{return t.split("/").map(e=>decodeURIComponent(e).replace(/\//g,"%2F")).join("/")}catch(e){return q(!1,`The URL path "${t}" could not be decoded because it is a malformed URL segment. This is probably due to a bad percent encoding (${e}).`),t}}function J(t,e){if(e==="/")return t;if(!t.toLowerCase().startsWith(e.toLowerCase()))return null;let n=e.endsWith("/")?e.length-1:e.length,r=t.charAt(n);return r&&r!=="/"?null:t.slice(n)||"/"}var En=/^(?:[a-z][a-z0-9+.-]*:|\/\/)/i,pi=t=>En.test(t);function gi(t,e="/"){let{pathname:n,search:r="",hash:i=""}=typeof t=="string"?le(t):t,s;if(n)if(pi(n))s=n;else{if(n.includes("//")){let a=n;n=n.replace(/\/\/+/g,"/"),q(!1,`Pathnames cannot have embedded double slashes - normalizing ${a} -> ${n}`)}n.startsWith("/")?s=It(n.substring(1),"/"):s=It(n,e)}else s=e;return{pathname:s,search:xi(r),hash:bi(i)}}function It(t,e){let n=e.replace(/\/+$/,"").split("/");return t.split("/").forEach(i=>{i===".."?n.length>1&&n.pop():i!=="."&&n.push(i)}),n.length>1?n.join("/"):"/"}function Ue(t,e,n,r){return`Cannot include a '${t}' character in a manually specified \`to.${e}\` field [${JSON.stringify(r)}]. Please separate it out to the \`to.${n}\` field. Alternatively you may provide the full path as a string in and the router will parse it for you.`}function vi(t){return t.filter((e,n)=>n===0||e.route.path&&e.route.path.length>0)}function Cn(t){let e=vi(t);return e.map((n,r)=>r===e.length-1?n.pathname:n.pathnameBase)}function Sn(t,e,n,r=!1){let i;typeof t=="string"?i=le(t):(i={...t},A(!i.pathname||!i.pathname.includes("?"),Ue("?","pathname","search",i)),A(!i.pathname||!i.pathname.includes("#"),Ue("#","pathname","hash",i)),A(!i.search||!i.search.includes("#"),Ue("#","search","hash",i)));let s=t===""||i.pathname==="",a=s?"/":i.pathname,o;if(a==null)o=n;else{let c=e.length-1;if(!r&&a.startsWith("..")){let d=a.split("/");for(;d[0]==="..";)d.shift(),c-=1;i.pathname=d.join("/")}o=c>=0?e[c]:"/"}let l=gi(i,o),u=a&&a!=="/"&&a.endsWith("/"),h=(s||a===".")&&n.endsWith("/");return!l.pathname.endsWith("/")&&(u||h)&&(l.pathname+="/"),l}var Z=t=>t.join("/").replace(/\/\/+/g,"/"),yi=t=>t.replace(/\/+$/,"").replace(/^\/*/,"/"),xi=t=>!t||t==="?"?"":t.startsWith("?")?t:"?"+t,bi=t=>!t||t==="#"?"":t.startsWith("#")?t:"#"+t,wi=class{constructor(t,e,n,r=!1){this.status=t,this.statusText=e||"",this.internal=r,n instanceof Error?(this.data=n.toString(),this.error=n):this.data=n}};function _i(t){return t!=null&&typeof t.status=="number"&&typeof t.statusText=="string"&&typeof t.internal=="boolean"&&"data"in t}function Ei(t){return t.map(e=>e.route.path).filter(Boolean).join("/").replace(/\/\/*/g,"/")||"/"}var Mn=typeof window<"u"&&typeof window.document<"u"&&typeof window.document.createElement<"u";function Pn(t,e){let n=t;if(typeof n!="string"||!En.test(n))return{absoluteURL:void 0,isExternal:!1,to:n};let r=n,i=!1;if(Mn)try{let s=new URL(window.location.href),a=n.startsWith("//")?new URL(s.protocol+n):new URL(n),o=J(a.pathname,e);a.origin===s.origin&&o!=null?n=o+a.search+a.hash:i=!0}catch{q(!1,` contains an invalid URL which will probably break when clicked - please update to a valid URL path.`)}return{absoluteURL:r,isExternal:i,to:n}}Object.getOwnPropertyNames(Object.prototype).sort().join("\0");var Rn=["POST","PUT","PATCH","DELETE"];new Set(Rn);var Ci=["GET",...Rn];new Set(Ci);var ce=f.createContext(null);ce.displayName="DataRouter";var Ve=f.createContext(null);Ve.displayName="DataRouterState";var Si=f.createContext(!1),Ln=f.createContext({isTransitioning:!1});Ln.displayName="ViewTransition";var Mi=f.createContext(new Map);Mi.displayName="Fetchers";var Pi=f.createContext(null);Pi.displayName="Await";var U=f.createContext(null);U.displayName="Navigation";var xe=f.createContext(null);xe.displayName="Location";var Q=f.createContext({outlet:null,matches:[],isDataRoute:!1});Q.displayName="Route";var ut=f.createContext(null);ut.displayName="RouteError";var jn="REACT_ROUTER_ERROR",Ri="REDIRECT",Li="ROUTE_ERROR_RESPONSE";function ji(t){if(t.startsWith(`${jn}:${Ri}:{`))try{let e=JSON.parse(t.slice(28));if(typeof e=="object"&&e&&typeof e.status=="number"&&typeof e.statusText=="string"&&typeof e.location=="string"&&typeof e.reloadDocument=="boolean"&&typeof e.replace=="boolean")return e}catch{}}function Ti(t){if(t.startsWith(`${jn}:${Li}:{`))try{let e=JSON.parse(t.slice(40));if(typeof e=="object"&&e&&typeof e.status=="number"&&typeof e.statusText=="string")return new wi(e.status,e.statusText,e.data)}catch{}}function Ii(t,{relative:e}={}){A(be(),"useHref() may be used only in the context of a component.");let{basename:n,navigator:r}=f.useContext(U),{hash:i,pathname:s,search:a}=we(t,{relative:e}),o=s;return n!=="/"&&(o=s==="/"?n:Z([n,s])),r.createHref({pathname:o,search:a,hash:i})}function be(){return f.useContext(xe)!=null}function re(){return A(be(),"useLocation() may be used only in the context of a component."),f.useContext(xe).location}var Tn="You should call navigate() in a React.useEffect(), not when your component is first rendered.";function In(t){f.useContext(U).static||f.useLayoutEffect(t)}function Ai(){let{isDataRoute:t}=f.useContext(Q);return t?Gi():ki()}function ki(){A(be(),"useNavigate() may be used only in the context of a component.");let t=f.useContext(ce),{basename:e,navigator:n}=f.useContext(U),{matches:r}=f.useContext(Q),{pathname:i}=re(),s=JSON.stringify(Cn(r)),a=f.useRef(!1);return In(()=>{a.current=!0}),f.useCallback((l,u={})=>{if(q(a.current,Tn),!a.current)return;if(typeof l=="number"){n.go(l);return}let h=Sn(l,JSON.parse(s),i,u.relative==="path");t==null&&e!=="/"&&(h.pathname=h.pathname==="/"?e:Z([e,h.pathname])),(u.replace?n.replace:n.push)(h,u.state,u)},[e,n,s,i,t])}f.createContext(null);function we(t,{relative:e}={}){let{matches:n}=f.useContext(Q),{pathname:r}=re(),i=JSON.stringify(Cn(n));return f.useMemo(()=>Sn(t,JSON.parse(i),r,e==="path"),[t,i,r,e])}function Ni(t,e){return An(t,e)}function An(t,e,n,r,i){A(be(),"useRoutes() may be used only in the context of a component.");let{navigator:s}=f.useContext(U),{matches:a}=f.useContext(Q),o=a[a.length-1],l=o?o.params:{},u=o?o.pathname:"/",h=o?o.pathnameBase:"/",c=o&&o.route;{let b=c&&c.path||"";Nn(u,!c||b.endsWith("*")||b.endsWith("*?"),`You rendered descendant (or called \`useRoutes()\`) at "${u}" (under ) but the parent route path has no trailing "*". This means if you navigate deeper, the parent won't match anymore and therefore the child routes will never render. + +Please change the parent to .`)}let d=re(),m;if(e){let b=typeof e=="string"?le(e):e;A(h==="/"||b.pathname?.startsWith(h),`When overriding the location using \`\` or \`useRoutes(routes, location)\`, the location pathname must begin with the portion of the URL pathname that was matched by all parent routes. The current pathname base is "${h}" but pathname "${b.pathname}" was given in the \`location\` prop.`),m=b}else m=d;let g=m.pathname||"/",v=g;if(h!=="/"){let b=h.replace(/^\//,"").split("/");v="/"+g.replace(/^\//,"").split("/").slice(b.length).join("/")}let y=bn(t,{pathname:v});q(c||y!=null,`No routes matched location "${m.pathname}${m.search}${m.hash}" `),q(y==null||y[y.length-1].route.element!==void 0||y[y.length-1].route.Component!==void 0||y[y.length-1].route.lazy!==void 0,`Matched leaf route at location "${m.pathname}${m.search}${m.hash}" does not have an element or Component. This means it will render an with a null value by default resulting in an "empty" page.`);let x=$i(y&&y.map(b=>Object.assign({},b,{params:Object.assign({},l,b.params),pathname:Z([h,s.encodeLocation?s.encodeLocation(b.pathname.replace(/\?/g,"%3F").replace(/#/g,"%23")).pathname:b.pathname]),pathnameBase:b.pathnameBase==="/"?h:Z([h,s.encodeLocation?s.encodeLocation(b.pathnameBase.replace(/\?/g,"%3F").replace(/#/g,"%23")).pathname:b.pathnameBase])})),a,n,r,i);return e&&x?f.createElement(xe.Provider,{value:{location:{pathname:"/",search:"",hash:"",state:null,key:"default",...m},navigationType:"POP"}},x):x}function Fi(){let t=Hi(),e=_i(t)?`${t.status} ${t.statusText}`:t instanceof Error?t.message:JSON.stringify(t),n=t instanceof Error?t.stack:null,r="rgba(200,200,200, 0.5)",i={padding:"0.5rem",backgroundColor:r},s={padding:"2px 4px",backgroundColor:r},a=null;return console.error("Error handled by React Router default ErrorBoundary:",t),a=f.createElement(f.Fragment,null,f.createElement("p",null,"💿 Hey developer 👋"),f.createElement("p",null,"You can provide a way better UX than this when your app throws errors by providing your own ",f.createElement("code",{style:s},"ErrorBoundary")," or"," ",f.createElement("code",{style:s},"errorElement")," prop on your route.")),f.createElement(f.Fragment,null,f.createElement("h2",null,"Unexpected Application Error!"),f.createElement("h3",{style:{fontStyle:"italic"}},e),n?f.createElement("pre",{style:i},n):null,a)}var Di=f.createElement(Fi,null),kn=class extends f.Component{constructor(t){super(t),this.state={location:t.location,revalidation:t.revalidation,error:t.error}}static getDerivedStateFromError(t){return{error:t}}static getDerivedStateFromProps(t,e){return e.location!==t.location||e.revalidation!=="idle"&&t.revalidation==="idle"?{error:t.error,location:t.location,revalidation:t.revalidation}:{error:t.error!==void 0?t.error:e.error,location:e.location,revalidation:t.revalidation||e.revalidation}}componentDidCatch(t,e){this.props.onError?this.props.onError(t,e):console.error("React Router caught the following error during render",t)}render(){let t=this.state.error;if(this.context&&typeof t=="object"&&t&&"digest"in t&&typeof t.digest=="string"){const n=Ti(t.digest);n&&(t=n)}let e=t!==void 0?f.createElement(Q.Provider,{value:this.props.routeContext},f.createElement(ut.Provider,{value:t,children:this.props.component})):this.props.children;return this.context?f.createElement(Oi,{error:t},e):e}};kn.contextType=Si;var He=new WeakMap;function Oi({children:t,error:e}){let{basename:n}=f.useContext(U);if(typeof e=="object"&&e&&"digest"in e&&typeof e.digest=="string"){let r=ji(e.digest);if(r){let i=He.get(e);if(i)throw i;let s=Pn(r.location,n);if(Mn&&!He.get(e))if(s.isExternal||r.reloadDocument)window.location.href=s.absoluteURL||s.to;else{const a=Promise.resolve().then(()=>window.__reactRouterDataRouter.navigate(s.to,{replace:r.replace}));throw He.set(e,a),a}return f.createElement("meta",{httpEquiv:"refresh",content:`0;url=${s.absoluteURL||s.to}`})}}return t}function zi({routeContext:t,match:e,children:n}){let r=f.useContext(ce);return r&&r.static&&r.staticContext&&(e.route.errorElement||e.route.ErrorBoundary)&&(r.staticContext._deepestRenderedBoundaryId=e.route.id),f.createElement(Q.Provider,{value:t},n)}function $i(t,e=[],n=null,r=null,i=null){if(t==null){if(!n)return null;if(n.errors)t=n.matches;else if(e.length===0&&!n.initialized&&n.matches.length>0)t=n.matches;else return null}let s=t,a=n?.errors;if(a!=null){let h=s.findIndex(c=>c.route.id&&a?.[c.route.id]!==void 0);A(h>=0,`Could not find a matching route for errors on route IDs: ${Object.keys(a).join(",")}`),s=s.slice(0,Math.min(s.length,h+1))}let o=!1,l=-1;if(n)for(let h=0;h=0?s=s.slice(0,l+1):s=[s[0]];break}}}let u=n&&r?(h,c)=>{r(h,{location:n.location,params:n.matches?.[0]?.params??{},unstable_pattern:Ei(n.matches),errorInfo:c})}:void 0;return s.reduceRight((h,c,d)=>{let m,g=!1,v=null,y=null;n&&(m=a&&c.route.id?a[c.route.id]:void 0,v=c.route.errorElement||Di,o&&(l<0&&d===0?(Nn("route-fallback",!1,"No `HydrateFallback` element provided to render during initial hydration"),g=!0,y=null):l===d&&(g=!0,y=c.route.hydrateFallbackElement||null)));let x=e.concat(s.slice(0,d+1)),b=()=>{let w;return m?w=v:g?w=y:c.route.Component?w=f.createElement(c.route.Component,null):c.route.element?w=c.route.element:w=h,f.createElement(zi,{match:c,routeContext:{outlet:h,matches:x,isDataRoute:n!=null},children:w})};return n&&(c.route.ErrorBoundary||c.route.errorElement||d===0)?f.createElement(kn,{location:n.location,revalidation:n.revalidation,component:v,error:m,children:b(),routeContext:{outlet:null,matches:x,isDataRoute:!0},onError:u}):b()},null)}function ht(t){return`${t} must be used within a data router. See https://reactrouter.com/en/main/routers/picking-a-router.`}function Vi(t){let e=f.useContext(ce);return A(e,ht(t)),e}function Bi(t){let e=f.useContext(Ve);return A(e,ht(t)),e}function Wi(t){let e=f.useContext(Q);return A(e,ht(t)),e}function dt(t){let e=Wi(t),n=e.matches[e.matches.length-1];return A(n.route.id,`${t} can only be used on routes that contain a unique "id"`),n.route.id}function Ui(){return dt("useRouteId")}function Hi(){let t=f.useContext(ut),e=Bi("useRouteError"),n=dt("useRouteError");return t!==void 0?t:e.errors?.[n]}function Gi(){let{router:t}=Vi("useNavigate"),e=dt("useNavigate"),n=f.useRef(!1);return In(()=>{n.current=!0}),f.useCallback(async(i,s={})=>{q(n.current,Tn),n.current&&(typeof i=="number"?await t.navigate(i):await t.navigate(i,{fromRouteId:e,...s}))},[t,e])}var At={};function Nn(t,e,n){!e&&!At[t]&&(At[t]=!0,q(!1,n))}f.memo(qi);function qi({routes:t,future:e,state:n,onError:r}){return An(t,void 0,n,r,e)}function je(t){A(!1,"A is only ever to be used as the child of element, never rendered directly. Please wrap your in a .")}function Yi({basename:t="/",children:e=null,location:n,navigationType:r="POP",navigator:i,static:s=!1,unstable_useTransitions:a}){A(!be(),"You cannot render a inside another . You should never have more than one in your app.");let o=t.replace(/^\/*/,"/"),l=f.useMemo(()=>({basename:o,navigator:i,static:s,unstable_useTransitions:a,future:{}}),[o,i,s,a]);typeof n=="string"&&(n=le(n));let{pathname:u="/",search:h="",hash:c="",state:d=null,key:m="default"}=n,g=f.useMemo(()=>{let v=J(u,o);return v==null?null:{location:{pathname:v,search:h,hash:c,state:d,key:m},navigationType:r}},[o,u,h,c,d,m,r]);return q(g!=null,` is not able to match the URL "${u}${h}${c}" because it does not start with the basename, so the won't render anything.`),g==null?null:f.createElement(U.Provider,{value:l},f.createElement(xe.Provider,{children:e,value:g}))}function Xi({children:t,location:e}){return Ni(it(t),e)}function it(t,e=[]){let n=[];return f.Children.forEach(t,(r,i)=>{if(!f.isValidElement(r))return;let s=[...e,i];if(r.type===f.Fragment){n.push.apply(n,it(r.props.children,s));return}A(r.type===je,`[${typeof r.type=="string"?r.type:r.type.name}] is not a component. All component children of must be a or `),A(!r.props.index||!r.props.children,"An index route cannot have child routes.");let a={id:r.props.id||s.join("-"),caseSensitive:r.props.caseSensitive,element:r.props.element,Component:r.props.Component,index:r.props.index,path:r.props.path,middleware:r.props.middleware,loader:r.props.loader,action:r.props.action,hydrateFallbackElement:r.props.hydrateFallbackElement,HydrateFallback:r.props.HydrateFallback,errorElement:r.props.errorElement,ErrorBoundary:r.props.ErrorBoundary,hasErrorBoundary:r.props.hasErrorBoundary===!0||r.props.ErrorBoundary!=null||r.props.errorElement!=null,shouldRevalidate:r.props.shouldRevalidate,handle:r.props.handle,lazy:r.props.lazy};r.props.children&&(a.children=it(r.props.children,s)),n.push(a)}),n}var Te="get",Ie="application/x-www-form-urlencoded";function Be(t){return typeof HTMLElement<"u"&&t instanceof HTMLElement}function Ki(t){return Be(t)&&t.tagName.toLowerCase()==="button"}function Zi(t){return Be(t)&&t.tagName.toLowerCase()==="form"}function Ji(t){return Be(t)&&t.tagName.toLowerCase()==="input"}function Qi(t){return!!(t.metaKey||t.altKey||t.ctrlKey||t.shiftKey)}function es(t,e){return t.button===0&&(!e||e==="_self")&&!Qi(t)}var Se=null;function ts(){if(Se===null)try{new FormData(document.createElement("form"),0),Se=!1}catch{Se=!0}return Se}var ns=new Set(["application/x-www-form-urlencoded","multipart/form-data","text/plain"]);function Ge(t){return t!=null&&!ns.has(t)?(q(!1,`"${t}" is not a valid \`encType\` for \`
\`/\`\` and will default to "${Ie}"`),null):t}function rs(t,e){let n,r,i,s,a;if(Zi(t)){let o=t.getAttribute("action");r=o?J(o,e):null,n=t.getAttribute("method")||Te,i=Ge(t.getAttribute("enctype"))||Ie,s=new FormData(t)}else if(Ki(t)||Ji(t)&&(t.type==="submit"||t.type==="image")){let o=t.form;if(o==null)throw new Error('Cannot submit a