.client-inline-error.is-subscription { top: calc(100% + 2px); } .client-inline-error.is-subscription > span, .client-inline-error.is-subscription > button { animation: client-subscription-error-in 520ms cubic-bezier(0.16, 1, 0.3, 1) both; } .client-inline-error.is-subscription small { flex-basis: 100%; font-size: 8px; font-weight: 500; letter-spacing: 0.04em; opacity: 0.45; animation: client-subscription-code-in 560ms 90ms cubic-bezier(0.16, 1, 0.3, 1) both; } @keyframes client-subscription-error-in { from { opacity: 0; filter: blur(7px); transform: translateY(-3px); } } @keyframes client-subscription-code-in { from { opacity: 0; filter: blur(5px); transform: translateY(-2px); } } .client-subscription-sheet { width: 100%; display: block; padding: 32px 30px 76px; } @media (min-width: 921px) { .client-subscription-drawer { right: 64px; width: min(480px, calc(100vw - 64px)); } } .client-profiles-header { min-height: 44px; display: flex; align-items: center; gap: 8px; padding-right: 44px; } .client-profiles-header h2 { flex: 1; margin: 0; font-size: 16px; letter-spacing: 0.02em; } .client-profile-list { margin-top: 2px; } .client-profile-group { position: relative; padding: 2px 0; } .client-profile-header { min-height: 54px; display: grid; grid-template-columns: minmax(0, 1fr) auto 36px 36px; align-items: center; gap: 4px; } .client-profile-disclosure { min-width: 0; min-height: 48px; display: grid; grid-template-columns: 18px minmax(0, 1fr); align-items: center; padding: 4px 0 4px 8px; border: 0; background: transparent; color: var(--client-text); font: inherit; text-align: left; cursor: pointer; } .client-profile-chevron { color: var(--client-muted); font-size: 20px; transform: rotate(0); transition: transform 320ms cubic-bezier(0.16, 1, 0.3, 1); } .client-profile-disclosure[aria-expanded='true'] .client-profile-chevron { transform: rotate(90deg); } .client-profile-title { min-width: 0; display: grid; gap: 2px; } .client-profile-title > span { min-width: 0; display: flex; align-items: center; gap: 8px; } .client-profile-title strong, .client-profile-title small { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .client-profile-title strong { font-size: 12px; letter-spacing: -0.02em; } .client-profile-title small { color: var(--client-muted); font-size: 9px; } .client-profile-title em { padding: 0; color: var(--client-accent); font-size: 7px; font-style: normal; letter-spacing: 0.08em; } .client-profile-usage { max-width: 126px; overflow: hidden; color: var(--client-muted); font-size: 8px; text-overflow: ellipsis; white-space: nowrap; } .client-profile-refresh, .client-profile-delete { width: 36px; height: 36px; padding: 0; border: 0; background: transparent; color: var(--client-muted); cursor: pointer; } .client-profile-refresh svg, .client-profile-delete svg { width: 16px; height: 16px; overflow: visible; fill: none; stroke: currentColor; stroke-width: 1.6; stroke-linecap: round; stroke-linejoin: round; } .client-profile-refresh svg { transition: transform 600ms cubic-bezier(0.16, 1, 0.3, 1); } .client-profile-delete-lid { transform-origin: center 7px; transition: transform 260ms cubic-bezier(0.16, 1, 0.3, 1); } .client-profile-refresh:hover:not(:disabled), .client-profile-refresh:focus-visible, .client-profile-delete:hover:not(:disabled) { color: var(--client-accent); } .client-profile-delete, .client-profile-delete:focus-visible { color: oklch(0.62 0.16 28); } .client-profile-delete:hover:not(:disabled) { color: oklch(0.7 0.18 28); } .client-profile-refresh:hover:not(:disabled) svg, .client-profile-refresh:focus-visible:not(.is-refreshing) svg { transform: rotate(90deg); } .client-profile-delete:hover:not(:disabled) .client-profile-delete-lid, .client-profile-delete:focus-visible .client-profile-delete-lid { transform: translateY(-2px) rotate(-8deg); } .client-profile-refresh.is-refreshing { color: var(--client-accent); } .client-profile-refresh.is-refreshing svg { animation: client-spin 900ms linear infinite; } .client-profile-refresh:disabled, .client-profile-delete:disabled { opacity: 0.35; cursor: not-allowed; } .client-profile-body { display: grid; grid-template-rows: 0fr; visibility: hidden; opacity: 0; filter: blur(5px); transition: grid-template-rows 360ms cubic-bezier(0.16, 1, 0.3, 1), opacity 260ms ease, filter 420ms ease, visibility 0s 930ms; } .client-profile-body.is-open { grid-template-rows: 1fr; visibility: visible; opacity: 1; filter: blur(0); transition: grid-template-rows 620ms cubic-bezier(0.16, 1, 0.3, 1), opacity 260ms ease, filter 420ms ease, visibility 0s; transition-delay: 0s; } .client-profile-body.is-closing { visibility: visible; transition-delay: 570ms, 570ms, 570ms, 0s; } .client-profile-body-inner { min-height: 0; overflow: hidden; padding-bottom: 4px; } .client-profile-body .client-servers { width: 100%; margin: 0; } .client-profile-selected-server { width: 100%; min-height: 44px; display: grid; grid-template-columns: 18px minmax(0, 1fr) auto; align-items: center; gap: 8px; padding: 0 8px; border: 0; background: transparent; color: var(--client-text); font: inherit; text-align: left; cursor: pointer; animation: client-profile-selected-in 260ms cubic-bezier(0.16, 1, 0.3, 1) both; } @keyframes client-profile-selected-in { from { opacity: 0; filter: blur(3px); transform: translateY(-4px); } } .client-profile-selected-server > span { width: 10px; height: 10px; border: 1px solid var(--client-accent); border-radius: 50%; background: var(--client-accent); box-shadow: inset 0 0 0 2px color-mix(in oklch, var(--client-bg) 88%, transparent); } .client-profile-selected-server strong { min-width: 0; overflow: hidden; font-size: 10px; text-overflow: ellipsis; white-space: nowrap; } .client-profile-selected-server small { color: var(--client-muted); font-size: 8px; white-space: nowrap; } .client-profile-selected-server:hover, .client-profile-selected-server:focus-visible { background: color-mix(in oklch, var(--client-accent) 2%, transparent); } .client-profile-selected-server:focus-visible { outline: 2px solid var(--client-accent); outline-offset: -2px; } .client-profile-activate, .client-profile-add-trigger { min-height: 36px; padding: 0; border: 0; background: transparent; color: var(--client-accent); font: 600 9px/1 inherit; letter-spacing: 0.03em; text-transform: uppercase; cursor: pointer; } .client-subscription-sheet > .client-profile-add { margin-top: 8px; animation: client-profile-add-open 420ms cubic-bezier(0.16, 1, 0.3, 1) both; } .client-subscription-sheet > .client-profile-add.is-closing { animation: client-profile-add-close 320ms cubic-bezier(0.4, 0, 1, 1) forwards; } @keyframes client-profile-add-open { from { opacity: 0; filter: blur(5px); transform: translateY(-7px); } } @keyframes client-profile-add-close { to { opacity: 0; filter: blur(5px); transform: translateY(-7px); } } .client-profile-activate { white-space: nowrap; } .client-profile-activate:disabled { opacity: 0.35; cursor: not-allowed; } .client-profile-add-trigger { width: 100%; margin-top: 10px; text-align: left; animation: client-profile-add-trigger-in 240ms ease both; } @keyframes client-profile-add-trigger-in { from { opacity: 0; } } .client-profile-server-hint, .client-profile-local-status { min-height: 18px; margin: 0; color: var(--client-muted); font-size: 8px; line-height: 1.45; } .client-profile-local-status { padding-left: 18px; padding-bottom: 8px; color: oklch(0.68 0.14 72); } .client-profile-add { display: grid; gap: 10px; padding: 10px 0 4px; } .client-profile-add label { display: grid; gap: 6px; color: var(--client-muted); font-size: 8px; font-weight: 700; letter-spacing: 0.08em; text-transform: uppercase; } .client-profile-add input { min-width: 0; height: 40px; padding: 0 2px; border: 0; border-bottom: 1px solid color-mix(in oklch, var(--client-border) 72%, transparent); border-radius: 0; outline: 0; background: transparent; color: var(--client-text); font: 500 10px/1 inherit; } .client-profile-add input:focus { border-bottom-color: var(--client-accent); } .client-profile-add input[aria-invalid='true'] { border-bottom-color: oklch(0.68 0.15 28); } .client-profile-form-actions { display: flex; justify-content: flex-end; gap: 8px; } .client-profile-form-actions button { min-height: 34px; padding: 0 10px; border: 0; background: transparent; color: var(--client-muted); font: 600 9px/1 inherit; cursor: pointer; } .client-profile-form-actions button.is-primary { color: var(--client-accent); } .client-profile-form-actions button:disabled { opacity: 0.35; cursor: not-allowed; } .client-subscription-first-run { gap: 18px; } .client-first-run-copy { display: grid; gap: 6px; text-align: center; } .client-first-run-copy span { color: var(--client-muted); font-size: 9px; letter-spacing: 0.1em; text-transform: uppercase; } .client-first-run-copy strong { font-size: 16px; } @media (max-width: 520px) { .client-subscription-sheet { padding: 24px 18px 64px; } .client-profile-usage { display: none; } .client-profile-disclosure, .client-profile-refresh, .client-profile-delete, .client-profiles-header > button:not(.client-drawer-close) { min-height: 44px; } } @media (prefers-reduced-motion: reduce) { .client-profile-chevron, .client-profile-body, .client-profile-body *, .client-profile-selected-server, .client-profile-add, .client-profile-add-trigger, .client-profile-refresh, .client-profile-refresh svg, .client-profile-delete-lid, .client-profile-group { transition: none; animation: none; } }