@import "tailwindcss"; @theme { --border-radius-card: 24px; --border-width-card: 4px; --theme-gradient-start: #fdd256; --theme-gradient-end: #a62249; --button-height-sm: 52px; --button-height: 58px; --animate-bounce-in: zoom-bounce 0.75s ease-out forwards; } html, body { max-width: 100vw; overflow-x: hidden; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Open Sans", "Helvetica Neue", sans-serif; } body { height: 100dvh; font-synthesis: none; text-rendering: optimizeLegibility; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; background: linear-gradient(180deg, #0059b7 0%, #7dceff 100%); } main { font-family: var(--font-sans); padding: 0 12px; } a { color: inherit; text-decoration: none; } button:disabled { opacity: 0.6; cursor: not-allowed; } button:not(:disabled):hover { opacity: 0.9; } button:not(:disabled):active { transform: translateY(1px); } .card-border { position: relative; z-index: 1; } .card-border:before { content: ""; position: absolute; inset: -4px -4px -8px -4px; border-radius: 28px; background: linear-gradient( to bottom, rgba(0, 0, 0, 1) 0%, rgba(0, 0, 0, 0.15) 100% ); z-index: -1; } .card-border:after { content: ""; box-sizing: border-box; position: absolute; inset: 0; background: #ffffff; border-radius: var(--border-radius-card); border: var(--border-width-card) solid transparent; background-image: linear-gradient(#ffffff, #ffffff), linear-gradient( 180deg, var(--theme-gradient-start) 0%, var(--theme-gradient-end) 100% ); background-origin: border-box; background-clip: padding-box, border-box; } select { appearance: none; -webkit-appearance: none; -moz-appearance: none; padding: 0 36px 0 12px; background-image: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48ZyBjbGlwLXBhdGg9InVybCgjY2xpcDBfNV80MSkiPjxwYXRoIGQ9Ik04IDlMMTIgNUwxNiA5IiBzdHJva2U9IiNCQkQ1RTEiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIi8+PHBhdGggZD0iTTE2IDE1TDEyIDE5TDggMTUiIHN0cm9rZT0iI0JCRDU4MSIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz48L2c+PGRlZnM+PGNsaXBQYXRoIGlkPSJjbGlwMF81XzQxIj48cmVjdCB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIGZpbGw9IndoaXRlIi8+PC9jbGlwUGF0aD48L2RlZnM+PC9zdmc+"); background-repeat: no-repeat; background-position: right 12px center; background-size: 24px; border: 1px solid var(--color-slate-200); color: var(--color-slate-600); } select::-ms-expand { display: none; } .styled-button { display: flex; flex-direction: row; align-items: center; justify-content: center; cursor: pointer; gap: 12px; border-radius: 16px; position: relative; color: #ffffff; text-align: center; height: 56px; padding: 0 32px; background: linear-gradient( to bottom, transparent 0%, transparent 88%, rgba(255, 255, 255, 0.2) 88%, rgba(255, 255, 255, 0.2) 100% ), linear-gradient(180deg, #10abe3 0%, #0046b5 98.08%); border-width: 2px 2px 5px 2px; border-style: solid; border-color: #000000; overflow: hidden; box-shadow: 0px 4px 0px 4px rgba(0, 0, 0, 0.12); } .styled-button:before { content: ""; position: absolute; inset: 0; pointer-events: none; border-radius: 12px; border: 4px solid transparent; background-image: linear-gradient( 180deg, var(--theme-gradient-start) 0%, var(--theme-gradient-end) 100% ); background-origin: border-box; background-clip: border-box; -webkit-mask: linear-gradient(#fff 0 0) padding-box, linear-gradient(#fff 0 0); -webkit-mask-composite: xor; mask-composite: exclude; z-index: 1; } .styled-button:after { content: ""; position: absolute; inset: 2px; border-radius: 12px; border: 2px solid #0d1e4c; z-index: 2; } .styled-button-text { color: white; font-size: 14px; font-weight: 800; text-shadow: 2px 2px 0 rgba(0, 0, 0, 0.35); text-transform: uppercase; letter-spacing: 1px; z-index: 2; position: relative; } .styled-button:active { transform: translateY(6px); box-shadow: 0 0 0 #000000, inset 0 -2px 12px rgba(0, 0, 0, 0.2), inset 0 2px 12px rgba(255, 255, 255, 0.4); } .styled-button-icon { position: relative; box-sizing: border-box; display: flex; flex-direction: row; justify-content: center; align-items: center; flex-grow: 0; padding: 0px; width: 30px; height: 30px; background: rgba(42, 88, 173, 0.25); border-radius: 999px; z-index: 1; } .styled-button-icon:after { pointer-events: none; content: ""; position: absolute; inset: 0px; background: rgba(3, 85, 188, 0.5); border-radius: 999px; border: 2px solid #0a82d1; z-index: -1; } @media (min-width: 1024px) { .styled-button { height: 60px; } .styled-button-text { font-size: 16px; } } .spinner { width: 16px; height: 16px; border: 2px solid rgba(255, 255, 255, 0.3); border-top: 2px solid #ffffff; border-radius: 50%; animation: spin 1s linear infinite; } @keyframes spin { 0% { transform: rotate(0deg); } 100% { transform: rotate(360deg); } } .button { appearance: none; display: flex; flex-direction: row; align-items: center; justify-content: center; gap: 6px; cursor: pointer; background-color: rgba(0, 0, 0, 0.15); color: #ffffff; font-weight: 800; padding: 0 12px; height: var(--button-height-sm); border-radius: 999px; font-size: 16px; &.outline { border: 2px solid rgba(255, 255, 255, 0.35); background-color: transparent; outline: none; transition: background-color 0.2s ease-in-out, border-color 0.2s ease-in-out; } &.outline:hover { background-color: rgba(255, 255, 255, 0.1); border-color: rgba(255, 255, 255, 0.5); } &.ghost { background-color: var(--color-slate-100); color: var(--color-slate-600); height: var(--button-height-sm); } &.ghost:hover { background-color: var(--color-slate-200); } } @media (min-width: 1024px) { .button { padding: 0 24px; gap: 12px; height: var(--button-height); } } /* Animations */ @keyframes zoom-bounce { 0% { transform: scale(0.25); animation-timing-function: cubic-bezier(0.8, 0, 1, 1); } 50% { transform: scale(1.1); animation-timing-function: cubic-bezier(0, 0, 0.2, 1); } 75% { transform: scale(0.95); animation-timing-function: cubic-bezier(0.8, 0, 1, 1); } 100% { transform: scale(1); } }