@font-face { font-family: 'Material Symbols Outlined'; font-style: normal; font-weight: 400; font-display: block; src: url('../fonts/material-symbols-outlined.ttf') format('truetype'); } @tailwind base; @tailwind components; @tailwind utilities; @layer base { body { font-family: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif; } h1, h2, h3, h4 { font-family: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif; } } @layer components { .material-symbols-outlined { font-family: 'Material Symbols Outlined'; font-weight: normal; font-style: normal; font-size: 24px; line-height: 1; letter-spacing: normal; text-transform: none; display: inline-flex; width: 1em; height: 1em; min-width: 1em; flex: 0 0 auto; align-items: center; justify-content: center; overflow: hidden; white-space: nowrap; word-wrap: normal; direction: ltr; vertical-align: middle; font-variation-settings: 'FILL' 0, 'wght' 400, 'GRAD' 0, 'opsz' 24; } .ui-btn { box-sizing: border-box; display: inline-flex; min-height: 44px; height: 44px; align-items: center; justify-content: center; gap: .5rem; border-radius: .375rem; border: 1px solid transparent; padding: 0 1rem; font-size: .875rem; font-weight: 700; line-height: 1; white-space: nowrap; transition: background-color .15s ease, border-color .15s ease, color .15s ease, box-shadow .15s ease; } .ui-btn-lg { min-height: 52px; height: 52px; font-size: .875rem; } .ui-btn-sm { min-height: 40px; height: 40px; padding: 0 .75rem; } .ui-btn-compact { min-height: 34px; height: 34px; padding: 0 .65rem; gap: .35rem; font-size: .8125rem; } .ui-btn-field { min-height: 50px; height: 50px; } .ui-btn-primary { background: #005EB8; color: #fff; box-shadow: 0 18px 34px rgba(15, 23, 42, .06); } .ui-btn-primary:hover { background: #0c4188; } .ui-btn-secondary { border-color: #e2e8f0; background: #fff; color: #334155; box-shadow: 0 1px 2px rgba(15, 23, 42, .04); } .ui-btn-secondary:hover { border-color: #005EB8; color: #005EB8; } .ui-btn:disabled, .ui-btn[aria-disabled="true"] { cursor: not-allowed; box-shadow: none; opacity: .7; } .ui-btn[aria-busy="true"] { pointer-events: none; } .ui-btn-primary:disabled { background: #cbd5e1; } .ui-btn-icon, .ui-btn .material-symbols-outlined { width: 20px; height: 20px; flex: 0 0 20px; font-size: 20px; } .ui-icon-btn { box-sizing: border-box; display: inline-flex; width: 28px; height: 28px; flex: 0 0 28px; align-items: center; justify-content: center; border-radius: .375rem; line-height: 1; transition: background-color .15s ease, color .15s ease; } .ui-action-row { box-sizing: border-box; display: flex; min-height: 44px; align-items: center; justify-content: space-between; gap: .75rem; border-radius: .375rem; border: 1px solid #e2e8f0; padding: 0 .75rem; font-size: .875rem; font-weight: 700; line-height: 1; transition: border-color .15s ease, color .15s ease; } .ui-action-row:hover { border-color: #005EB8; color: #005EB8; } .spinner { display: inline-flex; width: 20px; height: 20px; flex: 0 0 20px; border-radius: 9999px; border: 2px solid rgba(255,255,255,.35); border-top-color: #fff; animation: spin .75s linear infinite; } .ui-btn-secondary .spinner { border-color: rgba(0, 94, 184, .22); border-top-color: #005EB8; } /* Authentication-specific controls, compiled with the shared Tailwind bundle. */ .password-toggle { position: absolute; top: 50%; right: .75rem; display: inline-flex; width: 32px; height: 32px; align-items: center; justify-content: center; transform: translateY(-50%); border: 0; border-radius: .5rem; background: transparent; color: #64748b; padding: 0; transition: background-color .15s ease, color .15s ease; } .password-toggle:hover { background: rgba(148, 163, 184, .16); color: #005EB8; } .password-toggle:focus-visible { outline: 2px solid #005EB8; outline-offset: 2px; } .password-toggle:disabled { cursor: not-allowed; opacity: .45; } .password-toggle .material-symbols-outlined { font-size: 20px; line-height: 1; } .auth-input-error { border-color: #dc2626 !important; background: #fff7f7 !important; box-shadow: 0 0 0 3px rgba(220, 38, 38, .12) !important; } .captcha-token { -webkit-user-select: none; user-select: none; } .dot-grid { background-image: radial-gradient(circle at 1px 1px, rgba(148, 163, 184, .30) 1.2px, transparent 0); background-size: 42px 42px; } .panel-frame { border: none; box-shadow: none; } .gradient-board { background: linear-gradient(180deg, #2455a3 0%, #123e7d 100%); } .auth-alert { pointer-events: none; top: max(1rem, env(safe-area-inset-top)); right: auto; left: 50%; width: calc(100vw - 2rem); max-width: 26rem; max-height: calc(100dvh - 2rem); overflow-y: auto; opacity: 0; transform: translate(-50%, .5rem); } .auth-alert::before { position: absolute; top: -7px; left: 24px; width: 14px; height: 14px; transform: rotate(45deg); border-top: 1px solid currentColor; border-left: 1px solid currentColor; background: #fff; color: #bfdbfe; content: ''; } .auth-alert.is-error::before { color: #fecaca; } .auth-alert.is-visible { pointer-events: auto; opacity: 1; transform: translate(-50%, 0); } } @keyframes spin { to { transform: rotate(360deg); } } @media (min-width: 1280px) { .auth-alert { width: 320px; max-width: calc(100vw - 2rem); transform: translateX(.75rem); } .auth-alert::before { top: var(--auth-alert-arrow-top, 44px); left: -7px; border: 0; border-bottom: 1px solid currentColor; border-left: 1px solid currentColor; } .auth-alert.is-visible { transform: translateX(0); } }