:root{--motion-fast:120ms;--motion-standard:180ms;--motion-expressive:260ms;--ease-out:cubic-bezier(.22,1,.36,1);--ease-standard:cubic-bezier(.2,.8,.2,1);--press-scale:.975;--focus-ring:0 0 0 3px rgba(124,77,255,.14)}
html{scroll-behavior:smooth}.btn,.nav button,.dashboard-metric,.dashboard-activity-row,.conversation-item,.channel-row,.tabs button,.theme-toggle,.onboarding-step,.feature,.plans article,.faq summary{transition:transform var(--motion-fast) var(--ease-out),border-color var(--motion-fast) var(--ease-out),background-color var(--motion-fast) var(--ease-out),color var(--motion-fast) var(--ease-out),box-shadow var(--motion-standard) var(--ease-out),opacity var(--motion-fast) var(--ease-out)}
.btn:not(:disabled):active,.theme-toggle:active,.tabs button:active,.nav button:active{transform:scale(var(--press-scale))}.btn:focus-visible,.dashboard-metric:focus-visible,.conversation-item:focus-visible,.theme-toggle:focus-visible{outline:none;box-shadow:var(--focus-ring)}
.btn.primary:not(:disabled):hover{transform:translateY(-1px);box-shadow:0 8px 22px rgba(111,72,234,.22)}.btn:not(.primary):not(:disabled):hover{transform:translateY(-1px)}.btn:disabled{transform:none!important}
.content{position:relative}.content.ui-view-enter>*{animation:uiViewEnter var(--motion-standard) var(--ease-out) both}@keyframes uiViewEnter{from{opacity:.01;transform:translateY(4px)}to{opacity:1;transform:none}}
.nav button{position:relative}.nav button::before{content:'';position:absolute;left:4px;top:50%;width:3px;height:0;border-radius:999px;background:#7658e8;transform:translateY(-50%);opacity:0;transition:height var(--motion-standard) var(--ease-out),opacity var(--motion-fast) ease}.nav button.active::before{height:22px;opacity:1}.nav button.active{padding-left:16px}
.nav-chevron{transition:transform var(--motion-standard) var(--ease-out)!important}.nav-group.open .nav-chevron{transform:rotate(90deg)}
.card{transition:border-color var(--motion-fast) var(--ease-out),box-shadow var(--motion-standard) var(--ease-out),background-color var(--motion-fast) ease}.dashboard-metric[role="button"]:hover,button.dashboard-metric:hover{transform:translateY(-2px);box-shadow:0 14px 34px var(--theme-shadow,rgba(24,32,56,.075))}.dashboard-activity-row:hover{transform:translateX(2px)}
.onboarding-progress-track span{transition:width var(--motion-expressive) var(--ease-out)!important}.onboarding-step:hover{transform:translateY(-2px)!important}.onboarding-step.done .onboarding-step-index{animation:onboardingDone var(--motion-expressive) var(--ease-out)}@keyframes onboardingDone{0%{transform:scale(.92);opacity:.65}70%{transform:scale(1.04)}100%{transform:scale(1);opacity:1}}
.onboarding-success{animation:noticeIn var(--motion-standard) var(--ease-out)}.notice{animation:noticeIn var(--motion-standard) var(--ease-out)}@keyframes noticeIn{from{opacity:0;transform:translateY(3px) scale(.99)}to{opacity:1;transform:none}}
.conversation-item:hover{transform:translateX(2px)}.message-row{animation:messageIn var(--motion-standard) var(--ease-out) both}@keyframes messageIn{from{opacity:0;transform:translateY(4px) scale(.995)}to{opacity:1;transform:none}}.message-bubble{transform-origin:bottom left}.message-row.outbound .message-bubble{transform-origin:bottom right}.reply-form textarea{transition:border-color var(--motion-fast) ease,box-shadow var(--motion-fast) ease,background-color var(--motion-fast) ease}
.badge{transition:background-color var(--motion-fast) ease,color var(--motion-fast) ease,border-color var(--motion-fast) ease,transform var(--motion-fast) var(--ease-out)}.badge:not(.off):not(.pending){animation:badgeSettle var(--motion-standard) var(--ease-out)}@keyframes badgeSettle{from{transform:scale(.94);opacity:.7}to{transform:none;opacity:1}}
.theme-toggle span{transition:opacity var(--motion-standard) ease,transform var(--motion-expressive) var(--ease-out)}
.ui-skeleton{border-radius:12px;background:linear-gradient(90deg,var(--theme-surface-2,#f0f2f6) 20%,var(--theme-surface,#fff) 45%,var(--theme-surface-2,#f0f2f6) 70%);background-size:220% 100%;animation:skeletonMove 1.35s ease-in-out infinite}@keyframes skeletonMove{0%{background-position:100% 0}100%{background-position:-100% 0}}
/* V2: system states and a lightweight visual identity for Gaby. */
.empty{position:relative;display:grid;place-items:center;gap:7px;min-height:150px;padding:34px 24px!important;background:linear-gradient(180deg,rgba(124,77,255,.025),transparent);font-size:13px;line-height:1.5}.empty::before{content:'✦';width:42px;height:42px;display:grid;place-items:center;border-radius:14px;background:#f0ecff;color:#6f48ea;font-size:18px;font-weight:900;box-shadow:0 8px 20px rgba(111,72,234,.10)}.empty::after{content:'GabyToc';font-size:10px;text-transform:uppercase;letter-spacing:.12em;font-weight:850;color:#9aa1ac}.gaby-avatar{width:34px;height:34px;display:inline-grid;place-items:center;border-radius:12px;background:linear-gradient(145deg,#7658e8,#5e3bd4);color:#fff;font-weight:900;font-size:15px;box-shadow:0 7px 18px rgba(111,72,234,.22);flex:0 0 34px}.gaby-avatar.small{width:24px;height:24px;border-radius:8px;font-size:11px;flex-basis:24px}.message-author.gaby-author{display:flex;align-items:center;gap:6px}.message-author.gaby-author::before{content:'G';width:18px;height:18px;display:grid;place-items:center;border-radius:6px;background:#7658e8;color:#fff;font-size:9px;font-weight:900}.notice{border:1px solid rgba(124,77,255,.08)}.notice.error{border-color:rgba(162,58,47,.10)}
[data-theme="dark"] .empty{background:linear-gradient(180deg,rgba(142,115,255,.05),transparent)}[data-theme="dark"] .empty::before{background:#251d3d;color:#b9a8ff;box-shadow:none}[data-theme="dark"] .empty::after{color:#687587}
@media(max-width:800px){.dashboard-activity-row:hover,.conversation-item:hover{transform:none}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto!important}*,*::before,*::after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important;scroll-behavior:auto!important}.btn,.dashboard-metric,.dashboard-activity-row,.conversation-item,.onboarding-step{transform:none!important}}
