*,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: ;--motion-origin-scale-x: 100%;--motion-origin-scale-y: 100%;--motion-origin-translate-x: 0%;--motion-origin-translate-y: 0%;--motion-origin-rotate: 0deg;--motion-origin-blur: 0px;--motion-origin-grayscale: 0%;--motion-origin-opacity: 100%;--motion-origin-background-color: ;--motion-origin-text-color: ;--motion-end-scale-x: 100%;--motion-end-scale-y: 100%;--motion-end-translate-x: 0%;--motion-end-translate-y: 0%;--motion-end-rotate: 0deg;--motion-end-blur: 0px;--motion-end-grayscale: 0%;--motion-end-opacity: 100%;--motion-end-background-color: ;--motion-end-text-color: ;--motion-loop-scale-x: 100%;--motion-loop-scale-y: 100%;--motion-loop-translate-x: 0%;--motion-loop-translate-y: 0%;--motion-loop-rotate: 0deg;--motion-loop-blur: 0px;--motion-loop-grayscale: 0%;--motion-loop-opacity: 100%;--motion-loop-background-color: ;--motion-loop-text-color: ;--motion-duration: .75s;--motion-timing: var(--motion-default-timing);--motion-perceptual-duration-multiplier: 1;--motion-delay: 0ms;--motion-loop-count: infinite;--motion-scale-duration: var(--motion-duration);--motion-scale-timing: var(--motion-timing);--motion-scale-perceptual-duration-multiplier: var(--motion-perceptual-duration-multiplier);--motion-scale-delay: var(--motion-delay);--motion-scale-loop-count: var(--motion-loop-count);--motion-translate-duration: var(--motion-duration);--motion-translate-timing: var(--motion-timing);--motion-translate-perceptual-duration-multiplier: var(--motion-perceptual-duration-multiplier);--motion-translate-delay: var(--motion-delay);--motion-translate-loop-count: var(--motion-loop-count);--motion-rotate-duration: var(--motion-duration);--motion-rotate-timing: var(--motion-timing);--motion-rotate-perceptual-duration-multiplier: var(--motion-perceptual-duration-multiplier);--motion-rotate-delay: var(--motion-delay);--motion-rotate-loop-count: var(--motion-loop-count);--motion-filter-duration: var(--motion-duration);--motion-filter-timing: var(--motion-timing);--motion-filter-perceptual-duration-multiplier: var(--motion-perceptual-duration-multiplier);--motion-filter-delay: var(--motion-delay);--motion-filter-loop-count: var(--motion-loop-count);--motion-opacity-duration: var(--motion-duration);--motion-opacity-timing: var(--motion-timing);--motion-opacity-perceptual-duration-multiplier: var(--motion-perceptual-duration-multiplier);--motion-opacity-delay: var(--motion-delay);--motion-opacity-loop-count: var(--motion-loop-count);--motion-background-color-duration: var(--motion-duration);--motion-background-color-timing: var(--motion-timing);--motion-background-color-perceptual-duration-multiplier: var(--motion-perceptual-duration-multiplier);--motion-background-color-delay: var(--motion-delay);--motion-background-color-loop-count: var(--motion-loop-count);--motion-text-color-duration: var(--motion-duration);--motion-text-color-timing: var(--motion-timing);--motion-text-color-perceptual-duration-multiplier: var(--motion-perceptual-duration-multiplier);--motion-text-color-delay: var(--motion-delay);--motion-text-color-loop-count: var(--motion-loop-count);--motion-scale-in-animation: none;--motion-translate-in-animation: none;--motion-rotate-in-animation: none;--motion-filter-in-animation: none;--motion-opacity-in-animation: none;--motion-background-color-in-animation: none;--motion-text-color-in-animation: none;--motion-scale-out-animation: none;--motion-translate-out-animation: none;--motion-rotate-out-animation: none;--motion-filter-out-animation: none;--motion-opacity-out-animation: none;--motion-background-color-out-animation: none;--motion-text-color-out-animation: none;--motion-scale-loop-animation: none;--motion-translate-loop-animation: none;--motion-rotate-loop-animation: none;--motion-filter-loop-animation: none;--motion-opacity-loop-animation: none;--motion-background-color-loop-animation: none;--motion-text-color-loop-animation: none;--motion-all-enter-animations: var(--motion-scale-in-animation), var(--motion-translate-in-animation), var(--motion-rotate-in-animation), var(--motion-filter-in-animation), var(--motion-opacity-in-animation), var(--motion-background-color-in-animation), var(--motion-text-color-in-animation);--motion-all-exit-animations: var(--motion-scale-out-animation), var(--motion-translate-out-animation), var(--motion-rotate-out-animation), var(--motion-filter-out-animation), var(--motion-opacity-out-animation), var(--motion-background-color-out-animation), var(--motion-text-color-out-animation);--motion-all-loop-animations: var(--motion-scale-loop-animation), var(--motion-translate-loop-animation), var(--motion-rotate-loop-animation), var(--motion-filter-loop-animation), var(--motion-opacity-loop-animation), var(--motion-background-color-loop-animation), var(--motion-text-color-loop-animation);--motion-all-loop-and-enter-animations: var(--motion-all-loop-animations), var(--motion-all-enter-animations)}::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: ;--motion-origin-scale-x: 100%;--motion-origin-scale-y: 100%;--motion-origin-translate-x: 0%;--motion-origin-translate-y: 0%;--motion-origin-rotate: 0deg;--motion-origin-blur: 0px;--motion-origin-grayscale: 0%;--motion-origin-opacity: 100%;--motion-origin-background-color: ;--motion-origin-text-color: ;--motion-end-scale-x: 100%;--motion-end-scale-y: 100%;--motion-end-translate-x: 0%;--motion-end-translate-y: 0%;--motion-end-rotate: 0deg;--motion-end-blur: 0px;--motion-end-grayscale: 0%;--motion-end-opacity: 100%;--motion-end-background-color: ;--motion-end-text-color: ;--motion-loop-scale-x: 100%;--motion-loop-scale-y: 100%;--motion-loop-translate-x: 0%;--motion-loop-translate-y: 0%;--motion-loop-rotate: 0deg;--motion-loop-blur: 0px;--motion-loop-grayscale: 0%;--motion-loop-opacity: 100%;--motion-loop-background-color: ;--motion-loop-text-color: ;--motion-duration: .75s;--motion-timing: var(--motion-default-timing);--motion-perceptual-duration-multiplier: 1;--motion-delay: 0ms;--motion-loop-count: infinite;--motion-scale-duration: var(--motion-duration);--motion-scale-timing: var(--motion-timing);--motion-scale-perceptual-duration-multiplier: var(--motion-perceptual-duration-multiplier);--motion-scale-delay: var(--motion-delay);--motion-scale-loop-count: var(--motion-loop-count);--motion-translate-duration: var(--motion-duration);--motion-translate-timing: var(--motion-timing);--motion-translate-perceptual-duration-multiplier: var(--motion-perceptual-duration-multiplier);--motion-translate-delay: var(--motion-delay);--motion-translate-loop-count: var(--motion-loop-count);--motion-rotate-duration: var(--motion-duration);--motion-rotate-timing: var(--motion-timing);--motion-rotate-perceptual-duration-multiplier: var(--motion-perceptual-duration-multiplier);--motion-rotate-delay: var(--motion-delay);--motion-rotate-loop-count: var(--motion-loop-count);--motion-filter-duration: var(--motion-duration);--motion-filter-timing: var(--motion-timing);--motion-filter-perceptual-duration-multiplier: var(--motion-perceptual-duration-multiplier);--motion-filter-delay: var(--motion-delay);--motion-filter-loop-count: var(--motion-loop-count);--motion-opacity-duration: var(--motion-duration);--motion-opacity-timing: var(--motion-timing);--motion-opacity-perceptual-duration-multiplier: var(--motion-perceptual-duration-multiplier);--motion-opacity-delay: var(--motion-delay);--motion-opacity-loop-count: var(--motion-loop-count);--motion-background-color-duration: var(--motion-duration);--motion-background-color-timing: var(--motion-timing);--motion-background-color-perceptual-duration-multiplier: var(--motion-perceptual-duration-multiplier);--motion-background-color-delay: var(--motion-delay);--motion-background-color-loop-count: var(--motion-loop-count);--motion-text-color-duration: var(--motion-duration);--motion-text-color-timing: var(--motion-timing);--motion-text-color-perceptual-duration-multiplier: var(--motion-perceptual-duration-multiplier);--motion-text-color-delay: var(--motion-delay);--motion-text-color-loop-count: var(--motion-loop-count);--motion-scale-in-animation: none;--motion-translate-in-animation: none;--motion-rotate-in-animation: none;--motion-filter-in-animation: none;--motion-opacity-in-animation: none;--motion-background-color-in-animation: none;--motion-text-color-in-animation: none;--motion-scale-out-animation: none;--motion-translate-out-animation: none;--motion-rotate-out-animation: none;--motion-filter-out-animation: none;--motion-opacity-out-animation: none;--motion-background-color-out-animation: none;--motion-text-color-out-animation: none;--motion-scale-loop-animation: none;--motion-translate-loop-animation: none;--motion-rotate-loop-animation: none;--motion-filter-loop-animation: none;--motion-opacity-loop-animation: none;--motion-background-color-loop-animation: none;--motion-text-color-loop-animation: none;--motion-all-enter-animations: var(--motion-scale-in-animation), var(--motion-translate-in-animation), var(--motion-rotate-in-animation), var(--motion-filter-in-animation), var(--motion-opacity-in-animation), var(--motion-background-color-in-animation), var(--motion-text-color-in-animation);--motion-all-exit-animations: var(--motion-scale-out-animation), var(--motion-translate-out-animation), var(--motion-rotate-out-animation), var(--motion-filter-out-animation), var(--motion-opacity-out-animation), var(--motion-background-color-out-animation), var(--motion-text-color-out-animation);--motion-all-loop-animations: var(--motion-scale-loop-animation), var(--motion-translate-loop-animation), var(--motion-rotate-loop-animation), var(--motion-filter-loop-animation), var(--motion-opacity-loop-animation), var(--motion-background-color-loop-animation), var(--motion-text-color-loop-animation);--motion-all-loop-and-enter-animations: var(--motion-all-loop-animations), var(--motion-all-enter-animations)}*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}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;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}:root{--motion-default-timing: cubic-bezier(.165, .84, .44, 1);--motion-bounce: linear(0, .004, .016, .035, .063, .098, .141 13.6%, .25, .391, .563, .765,1, .891 40.9%, .848, .813, .785, .766, .754, .75, .754, .766, .785,.813, .848, .891 68.2%, 1 72.7%, .973, .953, .941, .938, .941, .953,.973, 1, .988, .984, .988, 1);--motion-spring-smooth: linear(0, .001 .44%, .0045 .94%, .0195 2.03%, .0446 3.19%, .0811 4.5%, .1598 6.82%, .3685 12.34%, .4693 15.17%, .5663, .6498 21.27%, .7215 24.39%, .7532 25.98%, .7829 27.65%, .8105, .8349 31.14%, .8573 32.95%, .8776 34.84%, .8964 36.87%, .9136 39.05%, .929 41.37%, .9421 43.77%, .9537 46.38%, .9636 49.14%, .9789 55.31%, .9888 62.35%, .9949 71.06%, .9982 82.52%, .9997 99.94%);--motion-spring-snappy: linear(0, .0014, .0053 1.02%, .0126, .0227 2.18%, .0517 3.41%, .094 4.79%, .1865 7.26%, .4182 12.77%, .5246 15.46%, .6249, .7112, .7831 23.95%, .8146 25.4%, .844, .8699 28.45%, .8935, .9139 31.64%, .932, .9473, .9601 36.65%, .9714 38.47%, .9808 40.35%, .9948 44.49%, 1.0031 49.43%, 1.0057 53.35%, 1.0063 58.14%, 1.0014 80.78%, 1.0001 99.94%);--motion-spring-bouncy: linear(0, .0018, .0069, .0151 1.74%, .0277 2.4%, .062 3.7%, .1115 5.15%, .2211 7.77%, .4778 13.21%, .5912 15.75%, .6987 18.44%, .7862 20.98%, .861 23.59%, .8926, .9205, .945 27.51%, .9671 28.89%, .9868, 1.003 31.79%, 1.0224 34.11%, 1.0358 36.58%, 1.0436 39.27%, 1.046 42.31%, 1.0446 44.71%, 1.0406 47.47%, 1.0118 61.84%, 1.0027 69.53%, .9981 80.49%, .9991 99.94%);--motion-spring-bouncier: linear(0, .0023, .0088, .0194 1.59%, .035 2.17%, .078 3.33%, .1415 4.64%, .2054 5.75%, .2821 6.95%, .5912 11.45%, .7205 13.43%, .8393 15.45%, .936 17.39%, .9778, 1.015, 1.0477, 1.0759, 1.0998 22.22%, 1.1203, 1.1364, 1.1484 25.26%, 1.1586 26.61%, 1.1629 28.06%, 1.1613 29.56%, 1.1537 31.2%, 1.1434 32.6%, 1.1288 34.19%, 1.0508 41.29%, 1.0174 44.87%, 1.0025 46.89%, .9911 48.87%, .9826 50.9%, .9769 53.03%, .9735 56.02%, .9748 59.45%, .9964 72.64%, 1.0031 79.69%, 1.0042 86.83%, 1.0008 99.97%);--motion-spring-bounciest: linear(0, .0032, .0131, .0294, .0524, .0824, .1192 1.54%, .2134 2.11%, .3102 2.59%, .4297 3.13%, .8732 4.95%, 1.0373, 1.1827 6.36%, 1.2972 7.01%, 1.3444, 1.3859, 1.4215, 1.4504, 1.4735, 1.4908, 1.5024, 1.5084 9.5%, 1.5091, 1.5061, 1.4993, 1.4886, 1.4745, 1.4565 11.11%, 1.4082 11.7%, 1.3585 12.2%, 1.295 12.77%, 1.0623 14.64%, .9773, .9031 16.08%, .8449 16.73%, .8014, .7701 17.95%, .7587, .7501, .7443, .7412 19.16%, .7421 19.68%, .7508 20.21%, .7672 20.77%, .7917 21.37%, .8169 21.87%, .8492 22.43%, .9681 24.32%, 1.0114, 1.0492 25.75%, 1.0789 26.41%, 1.1008, 1.1167, 1.1271, 1.1317 28.81%, 1.1314, 1.1271 29.87%, 1.1189 30.43%, 1.1063 31.03%, 1.0769 32.11%, .9941 34.72%, .9748 35.43%, .9597 36.09%, .9487, .9407, .9355, .933 38.46%, .9344 39.38%, .9421 40.38%, .9566 41.5%, .9989 44.12%, 1.0161 45.37%, 1.029 46.75%, 1.0341 48.1%, 1.0335 49.04%, 1.0295 50.05%, 1.0221 51.18%, .992 55.02%, .9854 56.38%, .9827 57.72%, .985 59.73%, 1.004 64.67%, 1.0088 67.34%, 1.0076 69.42%, .9981 74.28%, .9956 76.85%, .9961 79.06%, 1.0023 86.46%, .999 95.22%, .9994 100%);--background: 33 34% 95%;--foreground: 24 10% 7%;--muted: 32 24% 90%;--muted-foreground: 24 6% 42%;--popover: 36 45% 99%;--popover-foreground: 24 10% 7%;--card: 36 45% 99%;--card-foreground: 24 10% 7%;--border: 30 15% 84%;--input: 30 15% 84%;--primary: 15 62% 60%;--primary-foreground: 24 10% 7%;--secondary: 32 24% 90%;--secondary-foreground: 24 10% 12%;--accent: 15 62% 60%;--accent-foreground: 24 10% 7%;--destructive: 0 72.2% 50.6%;--destructive-foreground: 210 40% 98%;--ring: 15 62% 60%;--radius: .5rem;--surface: 33 34% 95%;--surface-muted: 32 27% 90%;--surface-elevated: 36 45% 99%;--heading: 12 60% 43%;--heading-accent: 15 62% 60%;--text-primary: 24 10% 7%;--text-secondary: 24 7% 26%;--text-muted: 24 5% 44%;--border-subtle: 30 15% 84%;--border-strong: 28 12% 69%;--nav-bg: 32 27% 90%;--nav-text: 24 10% 12%;--nav-text-hover: 12 60% 43%;--icon-bg: 32 27% 90%;--icon-border: 30 15% 82%;--testimonial-card-bg: 32 27% 90%;--testimonial-border: 15 38% 72%;--testimonial-star: 15 62% 60%;--tech-card-bg: 32 27% 90%;--tech-border: 15 38% 72%;--tech-glow: 15 62% 60%;--opensource-card-bg: 32 27% 90%;--opensource-emerald: 15 62% 60%;--opensource-pink: 15 62% 60%;--product-card-bg: 32 27% 90%;--product-image-bg: 30 18% 88%;--launchschool-red: 12 60% 43%;--launchschool-red-muted: 12 58% 38%;--launchschool-notes-bg: 32 27% 90%;--favorites-card-bg: 32 27% 90%;--favorites-green: 15 62% 60%;--favorites-amber: 15 62% 60%;--contact-card-bg: 32 27% 90%;--contact-input-bg: 36 35% 95%;--contact-input-border: 30 15% 82%;--glow-opacity: .1}.dark{color-scheme:dark;--background: 0 0% 0%;--foreground: 0 0% 96%;--muted: 0 0% 7%;--muted-foreground: 0 0% 64%;--popover: 0 0% 7%;--popover-foreground: 0 0% 96%;--card: 0 0% 4%;--card-foreground: 0 0% 96%;--border: 0 0% 14%;--input: 0 0% 18%;--primary: 0 0% 96%;--primary-foreground: 0 0% 4%;--secondary: 0 0% 7%;--secondary-foreground: 0 0% 96%;--accent: 0 0% 90%;--accent-foreground: 0 0% 4%;--destructive: 0 62.8% 30.6%;--destructive-foreground: 210 40% 98%;--ring: 0 0% 70%;--surface: 0 0% 0%;--surface-muted: 0 0% 4%;--surface-elevated: 0 0% 7%;--heading: 0 0% 96%;--heading-accent: 0 0% 70%;--text-primary: 0 0% 96%;--text-secondary: 0 0% 80%;--text-muted: 0 0% 64%;--border-subtle: 0 0% 14%;--border-strong: 0 0% 25%;--nav-bg: 0 0% 4%;--nav-text: 0 0% 64%;--nav-text-hover: 0 0% 96%;--icon-bg: 0 0% 7%;--icon-border: 0 0% 18%;--testimonial-card-bg: 0 0% 4%;--testimonial-border: 0 0% 16%;--testimonial-star: 0 0% 96%;--tech-card-bg: 0 0% 4%;--tech-border: 0 0% 14%;--tech-glow: 0 0% 70%;--opensource-card-bg: 0 0% 4%;--opensource-emerald: 0 0% 80%;--opensource-pink: 0 0% 80%;--product-card-bg: 0 0% 4%;--product-image-bg: 0 0% 7%;--launchschool-red: 0 0% 90%;--launchschool-red-muted: 0 0% 70%;--launchschool-notes-bg: 0 0% 4%;--favorites-card-bg: 0 0% 4%;--favorites-green: 0 0% 80%;--favorites-amber: 0 0% 80%;--contact-card-bg: 0 0% 4%;--contact-input-bg: 0 0% 7%;--contact-input-border: 0 0% 18%;--glow-opacity: 0}*{--tw-border-opacity: 1;border-color:hsl(var(--border) / var(--tw-border-opacity, 1))}body{--tw-bg-opacity: 1;background-color:hsl(var(--background) / var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:hsl(var(--foreground) / var(--tw-text-opacity, 1))}.container{width:100%;margin-right:auto;margin-left:auto;padding-right:2rem;padding-left:2rem}@media (min-width: 1400px){.container{max-width:1400px}}@keyframes RomboConfettiPop{0%{opacity:0;transform:scale(1)}33%{opacity:1;transform:scale(1.15)}50%{transform:scale(.975)}65%{transform:scale(1.025)}80%{transform:scale(.99)}87%{transform:scale(1.01)}to{opacity:1;transform:scale(1)}}@keyframes topfetti{0%{background-position:5% 90%,10% 90%,10% 90%,15% 90%,25% 90%,25% 90%,40% 90%,55% 90%,70% 90%}50%{background-position:0% 80%,0% 20%,10% 40%,20% 0%,30% 30%,22% 50%,50% 50%,65% 20%,90% 30%}to{background-position:0% 70%,0% 10%,10% 30%,20% -10%,30% 20%,22% 40%,50% 40%,65% 10%,90% 20%;background-size:0% 0%,0% 0%,0% 0%,0% 0%,0% 0%,0% 0%}}@keyframes bottomfetti{0%{background-position:10% -10%,30% 10%,55% -10%,70% -10%,85% -10%,70% -10%,70% 0%}50%{background-position:0% 80%,20% 80%,45% 60%,60% 100%,75% 70%,95% 60%,105% 0%}to{background-position:0% 90%,20% 90%,45% 70%,60% 110%,75% 80%,95% 70%,110% 10%;background-size:0% 0%,0% 0%,0% 0%,0% 0%,0% 0%,0% 0%}}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.pointer-events-none{pointer-events:none}.visible{visibility:visible}.absolute{position:absolute}.relative{position:relative}.-inset-0\.5{top:-.125rem;right:-.125rem;bottom:-.125rem;left:-.125rem}.-inset-1{top:-.25rem;right:-.25rem;bottom:-.25rem;left:-.25rem}.inset-0{top:0;right:0;bottom:0;left:0}.inset-\[1\.5px\]{top:1.5px;right:1.5px;bottom:1.5px;left:1.5px}.-bottom-12{bottom:-3rem}.-left-12{left:-3rem}.-right-12{right:-3rem}.-top-12{top:-3rem}.left-1\/2{left:50%}.top-1\/2{top:50%}.z-10{z-index:10}.z-50{z-index:50}.mx-auto{margin-left:auto;margin-right:auto}.my-10{margin-top:2.5rem;margin-bottom:2.5rem}.my-4{margin-top:1rem;margin-bottom:1rem}.my-8{margin-top:2rem;margin-bottom:2rem}.-ml-4{margin-left:-1rem}.-mt-4{margin-top:-1rem}.mb-2{margin-bottom:.5rem}.mb-4{margin-bottom:1rem}.mb-8{margin-bottom:2rem}.mt-1{margin-top:.25rem}.mt-10{margin-top:2.5rem}.mt-2{margin-top:.5rem}.mt-3{margin-top:.75rem}.mt-4{margin-top:1rem}.mt-6{margin-top:1.5rem}.mt-8{margin-top:2rem}.block{display:block}.inline-block{display:inline-block}.flex{display:flex}.inline-flex{display:inline-flex}.flow-root{display:flow-root}.grid{display:grid}.contents{display:contents}.hidden{display:none}.size-6{width:1.5rem;height:1.5rem}.h-10{height:2.5rem}.h-4{height:1rem}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-8{height:2rem}.h-9{height:2.25rem}.h-auto{height:auto}.h-full{height:100%}.min-h-\[120px\]{min-height:120px}.min-h-\[180px\]{min-height:180px}.w-4{width:1rem}.w-5{width:1.25rem}.w-6{width:1.5rem}.w-8{width:2rem}.w-9{width:2.25rem}.w-full{width:100%}.min-w-0{min-width:0px}.max-w-2xl{max-width:42rem}.max-w-3xl{max-width:48rem}.max-w-4xl{max-width:56rem}.max-w-fit{max-width:-moz-fit-content;max-width:fit-content}.max-w-lg{max-width:32rem}.max-w-md{max-width:28rem}.flex-1{flex:1 1 0%}.flex-none{flex:none}.shrink-0{flex-shrink:0}.grow{flex-grow:1}.grow-0{flex-grow:0}.basis-full{flex-basis:100%}.-translate-x-1\/2{--tw-translate-x: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-y-1\/2{--tw-translate-y: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rotate-90{--tw-rotate: 90deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes shimmer{0%,90%,to{background-position:calc(-100% - var(--shimmer-width)) 0}30%,60%{background-position:calc(100% + var(--shimmer-width)) 0}}.animate-shimmer{animation:shimmer 8s infinite}.touch-manipulation{touch-action:manipulation}.columns-1{-moz-columns:1;columns:1}.break-inside-avoid{-moz-column-break-inside:avoid;break-inside:avoid}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.flex-row{flex-direction:row}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.justify-start{justify-content:flex-start}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-2{gap:.5rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.gap-x-3{-moz-column-gap:.75rem;column-gap:.75rem}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem * var(--tw-space-y-reverse))}.space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.75rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem * var(--tw-space-y-reverse))}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.space-y-8>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(2rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(2rem * var(--tw-space-y-reverse))}.overflow-hidden{overflow:hidden}.whitespace-nowrap{white-space:nowrap}.rounded-2xl{border-radius:1rem}.rounded-\[inherit\]{border-radius:inherit}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:var(--radius)}.rounded-md{border-radius:calc(var(--radius) - 2px)}.rounded-xl{border-radius:.75rem}.border{border-width:1px}.border-2{border-width:2px}.border-b{border-bottom-width:1px}.border-t{border-top-width:1px}.border-none{border-style:none}.border-border-subtle{--tw-border-opacity: 1;border-color:hsl(var(--border-subtle) / var(--tw-border-opacity, 1))}.border-heading\/25{border-color:hsl(var(--heading) / .25)}.border-heading\/30{border-color:hsl(var(--heading) / .3)}.border-input{--tw-border-opacity: 1;border-color:hsl(var(--input) / var(--tw-border-opacity, 1))}.border-neutral-500{--tw-border-opacity: 1;border-color:rgb(115 115 115 / var(--tw-border-opacity, 1))}.border-neutral-800{--tw-border-opacity: 1;border-color:rgb(38 38 38 / var(--tw-border-opacity, 1))}.bg-background{--tw-bg-opacity: 1;background-color:hsl(var(--background) / var(--tw-bg-opacity, 1))}.bg-destructive{--tw-bg-opacity: 1;background-color:hsl(var(--destructive) / var(--tw-bg-opacity, 1))}.bg-neutral-700{--tw-bg-opacity: 1;background-color:rgb(64 64 64 / var(--tw-bg-opacity, 1))}.bg-popover{--tw-bg-opacity: 1;background-color:hsl(var(--popover) / var(--tw-bg-opacity, 1))}.bg-primary{--tw-bg-opacity: 1;background-color:hsl(var(--primary) / var(--tw-bg-opacity, 1))}.bg-product-image-bg{--tw-bg-opacity: 1;background-color:hsl(var(--product-image-bg) / var(--tw-bg-opacity, 1))}.bg-secondary{--tw-bg-opacity: 1;background-color:hsl(var(--secondary) / var(--tw-bg-opacity, 1))}.bg-surface-muted\/70{background-color:hsl(var(--surface-muted) / .7)}.bg-surface-muted\/80{background-color:hsl(var(--surface-muted) / .8)}.bg-surface\/60{background-color:hsl(var(--surface) / .6)}.bg-surface\/70{background-color:hsl(var(--surface) / .7)}.bg-surface\/95{background-color:hsl(var(--surface) / .95)}.bg-gradient-to-br{background-image:linear-gradient(to bottom right,var(--tw-gradient-stops))}.bg-gradient-to-r{background-image:linear-gradient(to right,var(--tw-gradient-stops))}.from-favorites-amber\/5{--tw-gradient-from: hsl(var(--favorites-amber) / .05) var(--tw-gradient-from-position);--tw-gradient-to: hsl(var(--favorites-amber) / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-surface-muted{--tw-gradient-from: hsl(var(--surface-muted) / 1) var(--tw-gradient-from-position);--tw-gradient-to: hsl(var(--surface-muted) / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-transparent{--tw-gradient-from: transparent var(--tw-gradient-from-position);--tw-gradient-to: rgb(0 0 0 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.via-black\/80{--tw-gradient-to: rgb(0 0 0 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), rgb(0 0 0 / .8) var(--tw-gradient-via-position), var(--tw-gradient-to)}.via-surface{--tw-gradient-to: hsl(var(--surface) / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), hsl(var(--surface) / 1) var(--tw-gradient-via-position), var(--tw-gradient-to)}.via-transparent{--tw-gradient-to: rgb(0 0 0 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), transparent var(--tw-gradient-via-position), var(--tw-gradient-to)}.via-50\%{--tw-gradient-via-position: 50%}.to-favorites-amber\/5{--tw-gradient-to: hsl(var(--favorites-amber) / .05) var(--tw-gradient-to-position)}.to-surface-muted{--tw-gradient-to: hsl(var(--surface-muted) / 1) var(--tw-gradient-to-position)}.to-transparent{--tw-gradient-to: transparent var(--tw-gradient-to-position)}.bg-clip-text{-webkit-background-clip:text;background-clip:text}.bg-no-repeat{background-repeat:no-repeat}.p-1{padding:.25rem}.p-2{padding:.5rem}.p-4{padding:1rem}.p-5{padding:1.25rem}.p-6{padding:1.5rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.px-8{padding-left:2rem;padding-right:2rem}.py-1\.5{padding-top:.375rem;padding-bottom:.375rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-2\.5{padding-top:.625rem;padding-bottom:.625rem}.py-4{padding-top:1rem;padding-bottom:1rem}.pb-4{padding-bottom:1rem}.pl-4{padding-left:1rem}.pr-\[8px\]{padding-right:8px}.pt-0{padding-top:0}.pt-4{padding-top:1rem}.pt-6{padding-top:1.5rem}.pt-8{padding-top:2rem}.text-center{text-align:center}.text-2xl{font-size:1.5rem;line-height:2rem}.text-3xl{font-size:1.875rem;line-height:2.25rem}.text-4xl{font-size:2.25rem;line-height:2.5rem}.text-base{font-size:1rem;line-height:1.5rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}.font-black{font-weight:900}.font-bold{font-weight:700}.font-medium{font-weight:500}.font-normal{font-weight:400}.font-semibold{font-weight:600}.italic{font-style:italic}.leading-5{line-height:1.25rem}.leading-6{line-height:1.5rem}.leading-7{line-height:1.75rem}.leading-8{line-height:2rem}.leading-\[5rem\]{line-height:5rem}.tracking-\[-0\.02em\]{letter-spacing:-.02em}.tracking-tight{letter-spacing:-.025em}.text-\[hsl\(15_62\%_60\%\)\]{--tw-text-opacity: 1;color:hsl(15 62% 60% / var(--tw-text-opacity, 1))}.text-destructive-foreground{--tw-text-opacity: 1;color:hsl(var(--destructive-foreground) / var(--tw-text-opacity, 1))}.text-heading{--tw-text-opacity: 1;color:hsl(var(--heading) / var(--tw-text-opacity, 1))}.text-muted-foreground{--tw-text-opacity: 1;color:hsl(var(--muted-foreground) / var(--tw-text-opacity, 1))}.text-neutral-100{--tw-text-opacity: 1;color:rgb(245 245 245 / var(--tw-text-opacity, 1))}.text-neutral-600\/50{color:#52525280}.text-popover-foreground{--tw-text-opacity: 1;color:hsl(var(--popover-foreground) / var(--tw-text-opacity, 1))}.text-primary{--tw-text-opacity: 1;color:hsl(var(--primary) / var(--tw-text-opacity, 1))}.text-primary-foreground{--tw-text-opacity: 1;color:hsl(var(--primary-foreground) / var(--tw-text-opacity, 1))}.text-secondary-foreground{--tw-text-opacity: 1;color:hsl(var(--secondary-foreground) / var(--tw-text-opacity, 1))}.text-txt{--tw-text-opacity: 1;color:hsl(var(--text-primary) / var(--tw-text-opacity, 1))}.text-txt-muted{--tw-text-opacity: 1;color:hsl(var(--text-muted) / var(--tw-text-opacity, 1))}.text-txt-secondary{--tw-text-opacity: 1;color:hsl(var(--text-secondary) / var(--tw-text-opacity, 1))}.underline{text-decoration-line:underline}.decoration-\[hsl\(15_62\%_60\%\)\]{text-decoration-color:#d8795a}.decoration-wavy{text-decoration-style:wavy}.underline-offset-4{text-underline-offset:4px}.underline-offset-8{text-underline-offset:8px}.opacity-50{opacity:.5}.opacity-70{opacity:.7}.shadow{--tw-shadow: 0 1px 3px 0 rgb(0 0 0 / .1), 0 1px 2px -1px rgb(0 0 0 / .1);--tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-sm{--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.outline{outline-style:solid}.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)}.blur-md{--tw-blur: blur(12px);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)}.blur-xl{--tw-blur: blur(24px);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.drop-shadow-sm{--tw-drop-shadow: drop-shadow(0 1px 1px rgb(0 0 0 / .05));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-md{--tw-backdrop-blur: blur(12px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-transform{transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.duration-200{transition-duration:.2s}.duration-300{transition-duration:.3s}.duration-500{transition-duration:.5s}.ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}@media screen and (prefers-reduced-motion: no-preference){@keyframes motion-scale-in{0%{scale:var(--motion-origin-scale-x) var(--motion-origin-scale-y)}to{scale:1 1}}@keyframes motion-scale-out{0%{scale:1 1}to{scale:var(--motion-end-scale-x) var(--motion-end-scale-y)}}@keyframes motion-scale-loop-mirror{0%,to{scale:1 1}50%{scale:var(--motion-loop-scale-x) var(--motion-loop-scale-y)}}@keyframes motion-scale-loop-reset{0%{scale:1 1}to{scale:var(--motion-loop-scale-x) var(--motion-loop-scale-y)}}@keyframes motion-translate-in{0%{translate:var(--motion-origin-translate-x) var(--motion-origin-translate-y)}to{translate:0 0}}@keyframes motion-translate-out{0%{translate:0 0}to{translate:var(--motion-end-translate-x) var(--motion-end-translate-y)}}@keyframes motion-translate-loop-mirror{0%,to{translate:0 0}50%{translate:var(--motion-loop-translate-x) var(--motion-loop-translate-y)}}@keyframes motion-translate-loop-reset{0%{translate:0 0}to{translate:var(--motion-loop-translate-x) var(--motion-loop-translate-y)}}@keyframes motion-rotate-in{0%{rotate:var(--motion-origin-rotate)}to{rotate:0}}@keyframes motion-rotate-out{0%{rotate:0}to{rotate:var(--motion-end-rotate)}}@keyframes motion-rotate-loop-mirror{0%,to{rotate:0deg}50%{rotate:var(--motion-loop-rotate)}}@keyframes motion-rotate-loop-reset{to{rotate:var(--motion-loop-rotate)}}}@keyframes motion-filter-in{0%{filter:blur(var(--motion-origin-blur)) grayscale(var(--motion-origin-grayscale))}to{filter:blur(0) grayscale(0)}}@keyframes motion-filter-out{0%{filter:blur(0) grayscale(0)}to{filter:blur(var(--motion-end-blur)) grayscale(var(--motion-end-grayscale))}}@keyframes motion-filter-loop-mirror{0%,to{filter:blur(0) grayscale(0)}50%{filter:blur(var(--motion-loop-blur)) grayscale(var(--motion-loop-grayscale))}}@keyframes motion-filter-loop-reset{0%{filter:blur(0) grayscale(0)}to{filter:blur(var(--motion-loop-blur)) grayscale(var(--motion-loop-grayscale))}}@keyframes motion-opacity-in{0%{opacity:var(--motion-origin-opacity)}}@keyframes motion-opacity-out{to{opacity:var(--motion-end-opacity)}}@keyframes motion-opacity-loop-mirror{50%{opacity:var(--motion-loop-opacity)}}@keyframes motion-opacity-loop-reset{to{opacity:var(--motion-loop-opacity)}}@keyframes motion-background-color-in{0%{background-color:var(--motion-origin-background-color)}}@keyframes motion-background-color-out{to{background-color:var(--motion-end-background-color)}}@keyframes motion-background-color-loop-mirror{50%{background-color:var(--motion-loop-background-color)}}@keyframes motion-background-color-loop-reset{to{background-color:var(--motion-loop-background-color)}}@keyframes motion-text-color-in{0%{color:var(--motion-origin-text-color)}}@keyframes motion-text-color-out{to{color:var(--motion-end-text-color)}}@keyframes motion-text-color-loop-mirror{50%{color:var(--motion-loop-text-color)}}@keyframes motion-text-color-loop-reset{to{color:var(--motion-loop-text-color)}}.\[background-position\:0_0\]{background-position:0 0}.\[background-size\:var\(--shimmer-width\)_100\%\]{background-size:var(--shimmer-width) 100%}.\[transition\:background-position_1s_cubic-bezier\(\.6\,\.6\,0\,1\)_infinite\]{transition:background-position 1s cubic-bezier(.6,.6,0,1) infinite}.hover\:bg-accent:hover{--tw-bg-opacity: 1;background-color:hsl(var(--accent) / var(--tw-bg-opacity, 1))}.hover\:bg-destructive\/90:hover{background-color:hsl(var(--destructive) / .9)}.hover\:bg-primary\/90:hover{background-color:hsl(var(--primary) / .9)}.hover\:bg-secondary\/80:hover{background-color:hsl(var(--secondary) / .8)}.hover\:text-accent-foreground:hover{--tw-text-opacity: 1;color:hsl(var(--accent-foreground) / var(--tw-text-opacity, 1))}.hover\:underline:hover{text-decoration-line:underline}.focus-visible\:outline-none:focus-visible{outline:2px solid transparent;outline-offset:2px}.focus-visible\:ring-1:focus-visible{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus-visible\:ring-ring:focus-visible{--tw-ring-opacity: 1;--tw-ring-color: hsl(var(--ring) / var(--tw-ring-opacity, 1))}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:opacity-50:disabled{opacity:.5}.group:hover .group-hover\:scale-\[1\.01\]{--tw-scale-x: 1.01;--tw-scale-y: 1.01;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.dark\:via-white\/80:is(.dark *){--tw-gradient-to: rgb(255 255 255 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), rgb(255 255 255 / .8) var(--tw-gradient-via-position), var(--tw-gradient-to)}.dark\:text-neutral-400\/50:is(.dark *){color:#a3a3a380}@media (min-width: 640px){.sm\:block{display:block}.sm\:columns-2{-moz-columns:2;columns:2}.sm\:flex-row{flex-direction:row}.sm\:items-center{align-items:center}.sm\:gap-8{gap:2rem}.sm\:p-6{padding:1.5rem}.sm\:text-4xl{font-size:2.25rem;line-height:2.5rem}.sm\:text-xl{font-size:1.25rem;line-height:1.75rem}}@media (min-width: 768px){.md\:flex{display:flex}.md\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}}@media (min-width: 1024px){.lg\:float-right{float:right}.lg\:mb-6{margin-bottom:1.5rem}.lg\:ml-10{margin-left:2.5rem}.lg\:w-\[46\%\]{width:46%}.lg\:max-w-\[560px\]{max-width:560px}.lg\:columns-3{-moz-columns:3;columns:3}}.\[\&\[data-state\=open\]\>svg\]\:rotate-180[data-state=open]>svg{--tw-rotate: 180deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(../../../fonts/inter-latin.woff2) format("woff2")}@font-face{font-family:Inter Tight;font-style:normal;font-weight:100 900;font-display:swap;src:url(../../../fonts/inter-tight-latin.woff2) format("woff2")}@font-face{font-family:"Instrument Serif";font-style:normal;font-weight:400;font-display:swap;src:url(../../../fonts/instrument-serif-latin.woff2) format("woff2")}@font-face{font-family:"Instrument Serif";font-style:italic;font-weight:400;font-display:swap;src:url(../../../fonts/instrument-serif-italic-latin.woff2) format("woff2")}:root{--font-body: "Inter", sans-serif;--font-display: "Inter Tight", "Inter", sans-serif;--font-editorial: "Instrument Serif", Georgia, serif;color-scheme:light}html{scroll-behavior:smooth;scroll-padding-top:100px}body{margin:0;min-width:320px;font-family:var(--font-body);-webkit-font-smoothing:antialiased;font-size:16px;line-height:1.6}button,input,textarea{font:inherit}button,a{-webkit-tap-highlight-color:transparent}button{cursor:pointer}a{transition:color .18s ease,border-color .18s ease,background-color .18s ease}:focus-visible{outline:2px solid hsl(var(--ring));outline-offset:5px}::-moz-selection{background:hsl(var(--heading) / .22);color:hsl(var(--text-primary))}::selection{background:hsl(var(--heading) / .22);color:hsl(var(--text-primary))}.shell{width:min(100% - 96px,1184px);margin-inline:auto}.portfolio{overflow:clip}.space-grotesk{font-family:var(--font-display)}.caveat{font-family:var(--font-editorial);font-style:italic}h2,h3,h4{font-family:var(--font-display)}h2.space-grotesk,h3.space-grotesk{font-weight:400;letter-spacing:-.04em}.glow,.glow-red,.glow-green{text-shadow:none;filter:none}.glow-box,.glow-box-red,.glow-box-lang,.glow-box-contact{box-shadow:none}.gradient-title{color:hsl(var(--heading));background:none}.gradient-description,.gradient-hero-subtitle{color:hsl(var(--text-secondary));background:none}.section{padding-block:96px}.section-heading{text-align:center;margin-bottom:56px}.section-title{font-family:var(--font-display);color:hsl(var(--heading));font-size:clamp(38px,4.5vw,56px);font-weight:400;letter-spacing:-.045em;line-height:1.2;text-wrap:balance}.dark .section-title{background:linear-gradient(180deg,#fafafa 25%,#b2b2b2);background-clip:text;-webkit-background-clip:text;color:transparent}.section-heading>p:not(.eyebrow){color:hsl(var(--text-muted));font-size:18px;line-height:1.5;margin:16px auto 0;max-width:680px;text-wrap:balance}.eyebrow{font-size:12px;font-weight:500;color:hsl(var(--heading));letter-spacing:.09em;text-transform:uppercase;margin-bottom:18px}.surface-button{display:inline-flex;align-items:center;justify-content:center;gap:16px;min-height:48px;padding:10px 20px;border:1px solid hsl(var(--border-subtle));border-radius:14px;background:linear-gradient(110deg,hsl(var(--surface-elevated)),hsl(var(--surface-muted)));box-shadow:inset 0 1px 1px hsl(var(--text-primary) / .04),0 2px 3px #00000005;color:hsl(var(--text-primary));font-size:14px;font-weight:600;white-space:nowrap;text-decoration:none;transition:background .2s,border-color .2s,color .2s}.dark .surface-button{background:linear-gradient(110deg,#141414,#222221);border-color:#ffffff12;box-shadow:inset 0 1px 2px #ffffff08}.surface-button:hover{border-color:hsl(var(--border-strong));background:hsl(var(--text-primary));color:hsl(var(--background))}.dark .surface-button:hover{background:#ededed;color:#111}.text-link{display:inline-flex;align-items:center;gap:20px;color:hsl(var(--text-muted));font-size:14px;font-weight:500}.text-link:hover{color:hsl(var(--text-primary))}.icon-button{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;width:40px;height:40px;padding:0;border:1px solid hsl(var(--border-subtle));background:transparent;color:hsl(var(--text-muted));border-radius:11px}.icon-button:hover{color:hsl(var(--text-primary));background:hsl(var(--surface-elevated))}.icon-button.theme-toggle,.icon-button.language-toggle{--toggle-travel: 44px;--toggle-ease: cubic-bezier(.4, 0, .2, 1);position:relative;width:76px;height:32px;border:1px solid #ccb6a3;border-radius:999px;background:#f1e3d0;color:#74472e;box-shadow:0 1px 2px #38231512;cursor:pointer;-webkit-tap-highlight-color:transparent;transition:border-color .2s,box-shadow .2s}.theme-toggle:before,.language-toggle:before{content:"";position:absolute;top:-7px;right:-1px;bottom:-7px;left:-1px;border-radius:inherit}.toggle-scene{position:absolute;top:0;right:0;bottom:0;left:0;overflow:hidden;border-radius:inherit;pointer-events:none;box-shadow:inset 0 1px 3px #38231520,inset 0 -1px #ffffff50}.toggle-scene svg{width:100%;height:100%}.coast-scene{background:linear-gradient(#f3d6ab,#f9ebd5)}.coast-clouds{color:#fffaf0;transition:opacity .45s,transform .65s var(--toggle-ease)}.coast-stars{color:#f3d9be;opacity:0;transform:translateY(-4px);transition:opacity .45s,transform .65s var(--toggle-ease)}.coast-horizon{fill:#cc997a}.coast-wave{fill:#ae7057}.coast-horizon,.coast-wave{transition:fill .5s,transform .65s var(--toggle-ease)}.coast-glint{color:#fbe5c4;opacity:.7}.toggle-thumb-position{position:absolute;top:3px;left:3px;width:24px;height:24px;pointer-events:none;transition:transform .65s var(--toggle-ease)}.toggle-thumb{position:absolute;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;border:1px solid #fffaf1;border-radius:50%;background:linear-gradient(145deg,#fffdf7,#f1dcc0);color:#895332;box-shadow:0 2px 4px #38231528,0 0 0 3px #fff7e52b;transition:scale .16s}.theme-orbit>svg{position:absolute;width:16px;height:16px;transition:opacity .4s,transform .65s var(--toggle-ease)}.theme-moon{opacity:0;transform:rotate(-70deg) scale(.5)}.dark .icon-button.theme-toggle,.dark .icon-button.language-toggle{border-color:hsl(var(--border-strong));background:hsl(var(--surface-elevated));color:hsl(var(--text-secondary))}.dark .toggle-scene{box-shadow:inset 0 1px 3px #00000080,inset 0 -1px #ffffff0d}.dark .coast-scene{background:linear-gradient(#0c0c0c,#262626)}.dark .coast-clouds{opacity:0;transform:translate(8px)}.dark .coast-stars{color:hsl(var(--text-primary));opacity:1;transform:translateY(0)}.dark .coast-horizon{fill:#363636;transform:translate(-3px)}.dark .coast-wave{fill:#555;transform:translate(-6px)}.dark .coast-glint{color:#bfbfbf}.dark .theme-thumb-position{transform:translate(var(--toggle-travel))}.dark .toggle-thumb{background:linear-gradient(145deg,#fafafa,#c9c9c9);border-color:#ededed;color:#292929;box-shadow:0 2px 4px #00000080,0 0 0 3px #ffffff0d}.dark .theme-sun{opacity:0;transform:rotate(90deg) scale(.5)}.dark .theme-moon{opacity:1;transform:rotate(0) scale(1)}.language-scene{background:linear-gradient(145deg,#f5eadd,#e6cbb4)}.dark .language-scene{background:linear-gradient(145deg,#111,#303030)}.globe-latitudes{opacity:.2}.globe-meridians{transition:transform .65s var(--toggle-ease),opacity .65s var(--toggle-ease)}.globe-meridians-en{opacity:.34;transform:translate(0)}.globe-meridians-es{opacity:0;transform:translate(7px)}.language-toggle[data-language=es] .globe-meridians-en{opacity:0;transform:translate(-7px)}.language-toggle[data-language=es] .globe-meridians-es{opacity:.34;transform:translate(0)}.language-label{position:absolute;top:0;width:28px;height:30px;display:grid;place-items:center;font:600 9px/1 var(--font-body);pointer-events:none}.language-label-en{left:1px}.language-label-es{right:1px}.language-orbit>span{position:absolute;font:700 9px/1 var(--font-body);transition:opacity .2s}.language-es{opacity:0}.language-toggle[data-language=es] .language-thumb-position{transform:translate(var(--toggle-travel))}.language-toggle[data-language=es] .language-en{opacity:0}.language-toggle[data-language=es] .language-es{opacity:1}.language-toggle:disabled{cursor:default}@media (hover: hover){.icon-button.theme-toggle:hover,.icon-button.language-toggle:hover{border-color:#b46b49;box-shadow:0 0 0 3px #b46b4914}.dark .icon-button.theme-toggle:hover,.dark .icon-button.language-toggle:hover{border-color:hsl(var(--text-muted));box-shadow:0 0 0 3px #ffffff0d}}.theme-toggle:focus-visible,.language-toggle:focus-visible{outline:2px solid hsl(var(--accent));outline-offset:4px}.theme-toggle:active .toggle-thumb,.language-toggle:active .toggle-thumb{scale:.92}@media (prefers-reduced-motion: reduce){.theme-toggle,.theme-toggle *,.language-toggle,.language-toggle *{transition:none!important}.theme-toggle:active .toggle-thumb,.language-toggle:active .toggle-thumb{scale:1}}.skip-link{position:fixed;z-index:100;left:24px;top:-100px;padding:12px 20px;background:hsl(var(--foreground));color:hsl(var(--background))}.skip-link:focus{top:12px}.site-header{position:sticky;top:0;z-index:50;background:hsl(var(--background) / .86);-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);border-bottom:1px solid hsl(var(--border-subtle) / .45)}.site-nav{display:flex;align-items:center;justify-content:space-between;gap:28px;height:76px}.wordmark{display:flex;align-items:center;gap:10px;font-family:var(--font-display);font-size:21px;font-weight:600;letter-spacing:-.065em;color:hsl(var(--text-primary));white-space:nowrap}.wordmark img{width:26px;height:26px;-o-object-fit:contain;object-fit:contain}.brand-period{color:hsl(var(--heading))}.desktop-nav{display:flex;gap:28px;margin-left:auto;margin-right:auto}.desktop-nav a{font-size:13px;font-weight:400;color:hsl(var(--text-muted))}.desktop-nav a:hover{color:hsl(var(--heading))}.nav-actions{display:flex;flex-shrink:0;gap:14px;align-items:center}.nav-contact{width:140px;flex-shrink:0;justify-content:space-between;min-height:40px;padding:7px 16px;font-size:13px;border-radius:12px}.menu-toggle{display:none}.mobile-nav{display:flex;flex-direction:column;padding-block:4px 20px}.mobile-nav a{display:flex;justify-content:space-between;padding:12px 0;border-top:1px solid hsl(var(--border-subtle));color:hsl(var(--text-secondary))}.hero{display:grid;grid-template-columns:1.3fr 1fr;gap:76px;align-items:center;padding-top:112px;padding-bottom:110px}.announcement{display:inline-flex;gap:10px;align-items:center;border:1px solid hsl(var(--border-subtle));border-radius:100px;padding:5px 12px;font-size:12px;color:hsl(var(--text-secondary));background:hsl(var(--surface-elevated) / .4)}.announcement>span:last-child{margin-left:10px;font-size:17px;line-height:1;color:hsl(var(--text-muted))}.status-dot{display:inline-block;width:5px;height:5px;flex-shrink:0;border-radius:50%;background:hsl(var(--heading));box-shadow:0 0 7px hsl(var(--heading) / .18)}.editorial-title{font-family:var(--font-editorial);font-size:clamp(64px,7.4vw,100px);line-height:.99;font-weight:400;letter-spacing:-.01em;color:hsl(var(--text-primary))}.hero h1{margin-top:30px}.hero h1 span{color:hsl(var(--heading))}.dark .hero h1{background:linear-gradient(180deg,#fafafa 25%,#9d9d9d);background-clip:text;-webkit-background-clip:text;color:transparent}.dark .hero h1 span{color:inherit}.hero-description{margin-top:24px;max-width:470px;font-size:17px;line-height:1.65;color:hsl(var(--text-muted))}.hero-actions{display:flex;align-items:center;gap:30px;margin-top:32px}.hero-meta{display:flex;flex-wrap:wrap;align-items:center;gap:12px;margin-top:38px;color:hsl(var(--text-muted));font-size:14px;line-height:1.7}.hero-meta strong{font-weight:500;color:hsl(var(--text-secondary))}.meta-divider{height:16px;width:1px;background:hsl(var(--border-strong))}.meta-level{color:hsl(var(--text-secondary))}.hero-visual{position:relative;width:100%;max-width:390px;justify-self:end}.portrait-light{position:absolute;top:-70px;right:-60px;bottom:-70px;left:-60px;pointer-events:none;background:radial-gradient(ellipse at 60% 35%,hsl(var(--heading) / .07),transparent 65%)}.portrait-frame{position:relative;aspect-ratio:4 / 4.7;overflow:hidden;border:1px solid hsl(var(--border-subtle));border-radius:14px;background:hsl(var(--surface-muted))}.portrait-frame:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;border-radius:inherit;box-shadow:inset 0 0 0 6px hsl(var(--background) / .35);pointer-events:none}.portrait-frame img{position:absolute;width:100%;height:100%;-o-object-fit:cover;object-fit:cover;-o-object-position:center 35%;object-position:center 35%;transition:opacity .7s ease}.portrait-main{filter:saturate(.65)}.dark .portrait-main{filter:grayscale(1) brightness(.78)}.portrait-alternate{opacity:0}.portrait-frame:hover .portrait-alternate{opacity:1}.portrait-frame:hover .portrait-main{opacity:0}.portrait-caption{position:absolute;bottom:0;left:0;right:0;display:flex;justify-content:space-between;gap:8px;padding:48px 24px 23px;background:linear-gradient(transparent,#000b);font-size:11px;color:#ffffffc9}.portrait-note{position:relative;display:flex;align-items:center;justify-content:center;gap:8px;margin-top:17px;color:hsl(var(--text-muted));font-size:10px}.credentials{position:relative;display:flex;justify-content:space-between;align-items:center;gap:30px;padding-block:36px;border-top:1px solid hsl(var(--border-subtle));border-bottom:1px solid hsl(var(--border-subtle))}.credentials:after{content:"";position:absolute;bottom:-1px;left:0;width:100%;height:1px;background:linear-gradient(90deg,transparent,hsl(15 62% 60% / .65),transparent);transform-origin:left;pointer-events:none;animation:credential-divider 1.4s cubic-bezier(.22,1,.36,1) .15s both}.credentials>p{animation:credential-reveal .8s cubic-bezier(.22,1,.36,1) 80ms both}.credentials>a{--credential-order: 0;animation:credential-reveal .8s cubic-bezier(.22,1,.36,1) calc(.18s + var(--credential-order) * .14s) both}.credentials>a:nth-of-type(2){--credential-order: 1}.credentials>a:nth-of-type(3){--credential-order: 2}.credentials .credential-logo{animation:credential-logo-reveal 1s cubic-bezier(.22,1,.36,1) calc(.18s + var(--credential-order) * .14s) both}@keyframes credential-reveal{0%{opacity:0;transform:translateY(14px);filter:blur(4px)}to{opacity:1;transform:translateY(0);filter:blur(0)}}@keyframes credential-logo-reveal{0%{transform:scale(.72) rotate(-10deg)}to{transform:scale(1) rotate(0)}}@keyframes credential-divider{0%{opacity:0;transform:scaleX(0)}35%{opacity:.7}to{opacity:0;transform:scaleX(1)}}.credentials p{font-size:14px;line-height:1.8;color:hsl(var(--text-secondary))}.credentials p>span{color:hsl(var(--text-muted))}.credentials a{display:flex;align-items:center;gap:14px;font-size:13px;line-height:18px;color:hsl(var(--text-secondary))}.credentials small{display:block;font-size:12px;line-height:16px;margin-top:4px;color:hsl(var(--text-muted))}.credential-logo{width:36px;height:36px;flex:0 0 36px;-o-object-fit:contain;object-fit:contain}.testimonials-section{padding-block:108px 80px}.testimonials-section .section-heading{margin-bottom:80px}.testimonial-viewport{overflow-x:auto;scrollbar-width:none;cursor:grab;touch-action:pan-x pan-y;overscroll-behavior-x:contain;padding:1px 0 4px}.testimonial-viewport::-webkit-scrollbar{display:none}.testimonial-viewport:active{cursor:grabbing}.testimonial-viewport:focus-visible{outline-offset:-2px}.testimonial-track{display:flex;width:-moz-max-content;width:max-content}.testimonial-set{display:flex;gap:32px;align-items:flex-start;flex-shrink:0;padding:0 32px 0 0;margin:0;list-style:none}.testimonial-set li{width:450px;flex-shrink:0}.testimonial-card{position:relative;margin:0;padding:24px 32px;border-radius:16px;background:linear-gradient(180deg,hsl(var(--testimonial-card-bg)),hsl(var(--background) / 0) 85%)}.testimonial-card:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;border:1px solid hsl(var(--testimonial-border));border-bottom:0;border-radius:inherit;-webkit-mask-image:linear-gradient(#000 35%,transparent 100%);mask-image:linear-gradient(#000 35%,transparent 100%)}.dark .testimonial-card{background:linear-gradient(180deg,rgba(80,80,80,.15),transparent 70%)}.testimonial-card blockquote{font-size:14px;font-weight:400;line-height:1.6;color:hsl(var(--text-muted))}.testimonial-card figcaption{display:flex;gap:16px;align-items:center;margin-top:24px}.testimonial-avatars{display:flex;align-items:center;flex-shrink:0}.company-avatar{display:flex;align-items:center;justify-content:center;height:40px;width:40px;border-radius:50%;background:hsl(var(--surface-elevated));border:1px solid hsl(var(--border-subtle));color:hsl(var(--heading));font-family:var(--font-display);font-size:19px;font-weight:600}.testimonial-avatars img{border-radius:50%;width:40px;height:40px;-o-object-fit:cover;object-fit:cover;margin-left:-10px;outline:3px solid hsl(var(--background))}.testimonial-author{display:flex;flex-direction:column;gap:4px;font-size:14px;line-height:1.6}.testimonial-author>span:first-child{color:hsl(var(--text-primary))}.testimonial-author>span:last-child{color:hsl(var(--text-muted));font-size:12px}.testimonial-controls{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-top:24px;color:hsl(var(--text-muted));font-size:11px}.testimonial-controls>div{display:flex;gap:8px}.testimonial-controls .icon-button{width:34px;height:34px;font-size:16px;border-radius:50%}.panel{border:1px solid hsl(var(--border-subtle));border-radius:16px;background:linear-gradient(150deg,hsl(var(--surface-muted)),hsl(var(--background)));box-shadow:inset 0 1px hsl(var(--text-primary) / .025)}.letter-panel{width:min(100% - 96px,1184px);margin:0 auto;padding:88px 48px;border-block:1px solid hsl(var(--border-subtle));background:none}.letter-panel h2{font-size:40px;line-height:1.2}.letter-panel h3{font-size:26px;font-weight:400;letter-spacing:-.03em}.letter-panel .letter-disclosure{display:inline-flex;flex:none;gap:20px;min-height:46px;margin-top:16px;padding:10px 12px 10px 18px;border:1px solid hsl(var(--border-subtle));border-radius:10px;background:linear-gradient(160deg,hsl(var(--surface-elevated)),hsl(var(--background)));box-shadow:inset 0 1px hsl(var(--text-primary) / .04);color:hsl(var(--text-secondary));font-family:var(--font-body);font-size:14px;font-weight:500;letter-spacing:-.01em;line-height:1.5;text-decoration:none;transition:border-color .18s,color .18s,background .18s,transform .18s}.letter-disclosure>svg{display:none}.letter-panel .letter-disclosure:hover,.letter-panel .letter-disclosure[data-state=open]{border-color:#d8795a73;color:hsl(var(--text-primary));background:hsl(var(--surface-elevated))}.letter-disclosure:focus-visible{outline:2px solid hsl(15 62% 60%);outline-offset:4px}.letter-disclosure:active{transform:translateY(1px)}.disclosure-icon{display:grid;place-items:center;width:24px;height:24px;border-radius:50%;background:#d8795a1a;color:#d8795a}.disclosure-plus-vertical{transform-origin:center;transition:transform .18s ease}.letter-disclosure[data-state=open] .disclosure-plus-vertical{transform:scaleY(0)}.letter-panel .text-lg.font-normal{font-size:16px;line-height:1.9;font-weight:400}.letter-panel .text-xl.font-semibold{font-size:20px;font-weight:400}.tech-panel{position:relative;isolation:isolate;padding:36px}.tech-grid{position:relative;display:grid;grid-template-columns:repeat(8,minmax(0,1fr));gap:24px}@media (min-width: 768px){.tech-panel:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;border-radius:inherit;pointer-events:none;background-image:linear-gradient(hsl(var(--heading) / .035) 1px,transparent 1px),linear-gradient(90deg,hsl(var(--heading) / .035) 1px,transparent 1px);background-size:32px 32px}}.tech-link{position:relative;display:flex;align-items:center;justify-content:center;width:44px;height:44px;margin:auto;background:hsl(var(--icon-bg));border:1px solid hsl(var(--border-subtle));border-radius:10px;transition:border-color .18s,background .18s}.tech-link:hover{border-color:hsl(var(--border-strong));background:hsl(var(--surface-elevated))}.tech-link img{width:26px;height:26px;-o-object-fit:contain;object-fit:contain}.tech-tooltip{position:absolute;z-index:5;bottom:calc(100% + 8px);left:50%;transform:translate(-50%);white-space:nowrap;background:hsl(var(--popover));color:hsl(var(--text-primary));border:1px solid hsl(var(--border-subtle));border-radius:6px;padding:4px 8px;font-size:11px;opacity:0;pointer-events:none}.tech-link:is(:hover,:focus-visible) .tech-tooltip{opacity:1}.contribution-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:24px}.contribution{padding:32px;transition:border-color .2s}.contribution:hover{border-color:hsl(var(--border-strong))}.dark .shadcn-logo,.dark .dark-mode-logo{filter:brightness(0) invert(1)}.contribution-logo{height:42px;width:42px;padding:7px;border:1px solid hsl(var(--border-subtle));border-radius:10px;background:hsl(var(--surface-elevated));margin-bottom:32px}.contribution-logo img{width:26px;height:26px;-o-object-fit:contain;object-fit:contain}.contribution h3{font-size:22px;font-weight:400;letter-spacing:-.035em;color:hsl(var(--text-primary))}.contribution p{font-size:14px;line-height:1.7;color:hsl(var(--text-muted));margin-top:10px}.contribution .text-link{margin-top:28px;font-size:12px}.featured-product{border-top:1px solid hsl(var(--border-subtle))}.product-frame{border:1px solid hsl(var(--border-subtle));border-radius:14px;overflow:hidden;background:hsl(var(--surface-muted))}.frame-toolbar{display:flex;align-items:center;gap:5px;padding:10px 16px;border-bottom:1px solid hsl(var(--border-subtle));color:hsl(var(--text-muted));font-size:10px}.frame-toolbar i{height:5px;width:5px;border-radius:50%;background:hsl(var(--border-strong))}.frame-toolbar span{margin-left:12px}.product-group+.product-group{margin-top:72px;padding-top:40px;border-top:1px solid hsl(var(--border-subtle))}.product-group-title{margin-bottom:28px;color:hsl(var(--heading));font-size:20px;font-weight:400;letter-spacing:-.025em}.product-grid{display:grid;grid-template-columns:minmax(0,1fr);gap:48px 32px}@media (min-width: 768px){.product-grid-live{grid-template-columns:repeat(2,minmax(0,1fr))}.product-grid-legacy{grid-template-columns:repeat(3,minmax(0,1fr))}}.product-card{display:flex;flex-direction:column;min-width:0}.product-card .product-image{overflow:hidden;display:block;border:1px solid hsl(var(--border-subtle));border-radius:12px;background:hsl(var(--surface-muted))}.product-card .product-image img{aspect-ratio:16/10;width:100%;-o-object-fit:cover;object-fit:cover;transition:transform .4s ease}.product-card .product-image:hover img{transform:scale(1.025)}.product-card h4{margin-top:22px;font-size:22px;font-weight:400;letter-spacing:-.03em;color:hsl(var(--heading))}.product-card h4 a{display:flex;align-items:center;flex-wrap:wrap;gap:8px}.product-card p{margin-top:12px;color:hsl(var(--text-muted));font-size:14px;line-height:1.7}.legacy-badge{border:1px solid hsl(var(--border-subtle));color:hsl(var(--text-muted));font-family:var(--font-body);font-size:9px;padding:1px 6px;border-radius:5px;letter-spacing:0}.product-technologies{display:flex;flex-wrap:wrap;gap:8px;margin-top:24px}.product-technologies .tech-link{width:44px;height:44px;flex:0 0 44px;margin:0}.product-technologies .tech-link img{width:26px;height:26px}.school-logo{display:block;width:300px;max-width:100%;height:auto;margin:0 auto 34px;padding:20px;border-radius:10px;background:#111}.school-stats{display:grid;grid-template-columns:repeat(3,1fr);margin-bottom:40px}.school-stats>div{padding:30px;text-align:center;border-right:1px solid hsl(var(--border-subtle))}.school-stats>div:last-child{border:0}.school-stats dd{font-variant-numeric:tabular-nums;font-size:56px;font-family:var(--font-display);font-weight:400;letter-spacing:-.05em;color:hsl(var(--heading))}.school-stats dt{font-size:13px;color:hsl(var(--text-muted))}.school-reflection{padding:40px;max-width:850px;margin-inline:auto}.school-reflection h3{font-size:26px;letter-spacing:-.03em;font-weight:400}.school-reflection p{margin-top:20px;font-size:15px;line-height:1.85;color:hsl(var(--text-muted))}.school-reflection .surface-button{margin-top:28px}.favorites-container{padding-block:96px;border-top:1px solid hsl(var(--border-subtle))}.bento-grid article{border:1px solid hsl(var(--border-subtle));background:hsl(var(--surface-muted));box-shadow:none}.bento-grid article>.pointer-events-none{display:none}.bento-grid article h3{font-weight:400;font-size:22px;letter-spacing:-.03em;filter:none}.bento-grid article header>span{font-size:22px}.bento-grid li{background:hsl(var(--surface) / .5)}.bento-grid li .text-heading{color:hsl(var(--text-secondary));font-size:14px;font-weight:400}.bento-grid li>span{font-size:12px}.bento-grid li>.favorite-number{flex:0 0 2ch;color:hsl(var(--text-muted));font-size:14px;font-variant-numeric:tabular-nums;text-align:right;opacity:1}.bento-grid article header p{font-size:12px;margin-top:4px}.contact-section{text-align:center;padding-block:116px;border-top:1px solid hsl(var(--border-subtle))}.contact-section h2{font-size:clamp(62px,7vw,88px)}.contact-section h2 span{color:hsl(var(--heading))}.contact-section>p:not(.eyebrow){font-size:16px;color:hsl(var(--text-muted));margin-top:24px}.contact-section>.surface-button{margin-top:32px}.contact-details{display:flex;justify-content:center;align-items:center;flex-wrap:wrap;gap:24px;margin-top:32px;font-size:12px;color:hsl(var(--text-muted))}.contact-details span{display:flex;align-items:center;gap:8px}.contact-details a:hover{color:hsl(var(--heading))}.site-footer{border-top:1px solid hsl(var(--border-subtle));display:flex;align-items:center;justify-content:space-between;gap:24px;padding-block:32px}.site-footer p{font-size:11px;color:hsl(var(--text-muted))}.footer-links{display:flex;align-items:center;gap:24px;font-size:12px;color:hsl(var(--text-muted))}@media (min-width: 1440px){.hero{gap:100px}}@media (max-width: 1100px){.desktop-nav{gap:16px}.hero{gap:40px}.editorial-title{font-size:80px}.hero-meta{display:block;line-height:2}.hero-meta>span:last-child{display:block}.meta-divider{display:none}.credentials{flex-wrap:wrap;gap:30px 48px}.credentials p{flex-basis:100%}}@media (max-width: 900px){.shell,.letter-panel{width:calc(100% - 48px)}.desktop-nav{display:none}.menu-toggle{display:flex}.hero{grid-template-columns:1.25fr 1fr;gap:32px;padding-block:72px}.editorial-title{font-size:64px}.hero-description{font-size:15px}.hero-actions{gap:20px}.hero-actions .text-link{gap:8px;font-size:12px}.portrait-caption{font-size:9px;padding-inline:18px}.portrait-note{font-size:9px}.tech-grid{grid-template-columns:repeat(6,minmax(0,1fr))}.contribution{padding:24px}}@media (max-width: 640px){.site-nav{height:68px;gap:16px}.wordmark{font-size:19px;gap:8px}.wordmark img{width:22px;height:22px}.nav-contact{display:none}.nav-actions{gap:8px}.hero{grid-template-columns:1fr;gap:44px;padding-top:48px;padding-bottom:48px}.hero h1{font-size:clamp(58px,15.5vw,82px);margin-top:26px}.hero-description{margin-top:22px;font-size:16px;max-width:420px}.hero-actions{margin-top:26px;gap:24px}.hero-actions .text-link{font-size:12px}.hero-meta{margin-top:26px}.hero-visual{max-width:100%;justify-self:center}.portrait-frame{aspect-ratio:1.15}.portrait-frame img{-o-object-position:center 38%;object-position:center 38%}.portrait-caption{font-size:11px}.portrait-note{font-size:10px}.credentials{display:grid;grid-template-columns:1fr;gap:24px;padding-block:28px}.credentials p{display:none}.credentials a{font-size:13px}.credentials small{font-size:12px}.section,.favorites-container{padding-block:64px}.section-heading{margin-bottom:36px}.section-heading>p:not(.eyebrow){font-size:16px}.testimonials-section{padding-block:64px 56px}.testimonials-section .section-heading{margin-bottom:44px}.testimonials-section .section-title{font-size:40px}.testimonial-set li{width:min(350px,calc(100vw - 48px))}.testimonial-card{padding:24px}.testimonial-controls{margin-top:20px;font-size:10px}.testimonial-author{font-size:12px}.testimonial-author>span:last-child{font-size:10px}.letter-panel{padding:56px 0}.letter-panel h2{font-size:36px}.tech-panel{padding:24px 16px}.tech-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:24px 12px}.contribution-grid{grid-template-columns:1fr;gap:16px}.contribution-logo{margin-bottom:20px}.contribution .text-link{margin-top:20px}.school-stats>div{padding:20px 10px}.school-stats dd{font-size:42px}.school-stats dt{font-size:11px}.school-reflection{padding:24px}.contact-section{padding-block:76px}.contact-details{gap:20px}.contact-details>span{flex-basis:100%;justify-content:center}.site-footer{align-items:flex-start;flex-direction:column;padding-block:28px;gap:20px}}@media (prefers-reduced-motion: reduce){.credentials>p,.credentials>a,.credentials .credential-logo,.credentials:after{animation:none}.credentials:after{display:none}html{scroll-behavior:auto}*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}.testimonial-clone{display:none}}:lang(es) .credentials a{min-width:0}:lang(es) .credentials a>span{max-width:260px}:lang(es) .hero-actions{flex-wrap:wrap}:lang(es) .editorial-title{overflow-wrap:normal}@media (max-width: 1100px) and (min-width: 901px){.site-nav{gap:16px}.desktop-nav{gap:12px}.nav-actions{gap:8px}.desktop-nav{display:none}.menu-toggle{display:flex}}@media (max-width: 360px){.site-nav.shell{width:calc(100% - 32px)}.site-nav .wordmark{font-size:17px}.site-nav .wordmark img{display:none}}@media (max-width: 640px){.site-nav{gap:8px}:lang(es) .hero h1{font-size:clamp(44px,11.5vw,66px)}:lang(es) .contact-section .editorial-title{font-size:clamp(40px,10vw,64px)}:lang(es) .portrait-caption{font-size:10px}:lang(es) .credentials a>span{max-width:none}}@media (prefers-reduced-motion: reduce){.language-orbit>span{transition:none!important}}@media (max-width: 480px){.site-nav .wordmark{font-size:17px}.site-nav .wordmark img{display:none}.site-nav .nav-actions{gap:4px}.site-nav .menu-toggle{width:36px}.icon-button.theme-toggle,.icon-button.language-toggle{width:60px;--toggle-travel: 28px}}
