/* ══════════════════════════════════════════════════════════════════════════
   NOVA GLASS v2 — vivid, Apple-grade liquid animations (overrides v1).
   Loaded AFTER theme_glass.css so these win. Scoped to html[data-theme="glass"].
   Designed by a 10-agent pass; each component has a UNIQUE liquid motion.
   ══════════════════════════════════════════════════════════════════════════ */

/* ── 1. MESSAGE BUBBLES — jelly wobble + conic rim + drifting refraction ── */
html[data-theme="glass"] .ai-row .message-bubble,
html[data-theme="glass"] .user-row .message-bubble {
  position: relative; overflow: hidden; isolation: isolate; border-radius: 22px;
  backdrop-filter: blur(var(--g-blur)); -webkit-backdrop-filter: blur(var(--g-blur));
  box-shadow: var(--g-shadow), inset 0 1px 0 rgba(255,255,255,.55);
  transform-origin: center bottom; animation: gxBubJelly .85s cubic-bezier(.34,1.56,.64,1) both;
  will-change: transform, border-radius;
}
html[data-theme="glass"] .ai-row .message-bubble,
html[data-theme="glass"] .ai-row .ai-content,
html[data-theme="glass"] .ai-row .message-content { background: var(--g-surface); color: var(--g-text); border: 1px solid transparent; }
html[data-theme="glass"] .ai-row .message-bubble::before {
  content: ""; position: absolute; inset: 0; padding: 1.5px; border-radius: inherit; z-index: -1;
  background: conic-gradient(from 0deg, var(--g-accent), var(--g-accent2), var(--g-accent3), var(--g-accent4), var(--g-accent5), var(--g-accent));
  -webkit-mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0); -webkit-mask-composite: xor; mask-composite: exclude;
  animation: gxBubRim 9s linear infinite;
}
html[data-theme="glass"] .user-row .message-bubble,
html[data-theme="glass"] .user-row .message-content {
  color: #fff; border: 1px solid rgba(255,255,255,.35);
  background: linear-gradient(135deg, var(--g-accent) 0%, var(--g-accent2) 50%, var(--g-accent3) 100%);
  box-shadow: var(--g-shadow), inset 0 1px 0 rgba(255,255,255,.45);
}
html[data-theme="glass"] .ai-row .message-bubble::after,
html[data-theme="glass"] .user-row .message-bubble::after {
  content: ""; position: absolute; z-index: 1; pointer-events: none;
  width: 65%; height: 160%; top: -30%; left: -40%; border-radius: 50%;
  background: radial-gradient(closest-side, rgba(255,255,255,.55), rgba(255,255,255,.12) 55%, transparent 72%);
  filter: blur(6px); mix-blend-mode: screen; animation: gxBubRefract 7s ease-in-out infinite;
}
@keyframes gxBubJelly { 0% { transform: scale(.2,.2) translateY(14px); border-radius: 50%; opacity: 0; } 40% { opacity: 1; } 55% { transform: scale(1.08,.9) translateY(0); border-radius: 26px; } 70% { transform: scale(.95,1.06); border-radius: 18px; } 84% { transform: scale(1.03,.98); border-radius: 23px; } 100% { transform: scale(1,1); border-radius: 22px; opacity: 1; } }
@keyframes gxBubRim { to { filter: hue-rotate(360deg); } }
@keyframes gxBubRefract { 0% { transform: translate(0,0) rotate(0deg); opacity: 0; } 20% { opacity: .9; } 50% { transform: translate(190%,18%) rotate(25deg); opacity: .75; } 80% { opacity: .85; } 100% { transform: translate(0,0) rotate(0deg); opacity: 0; } }

/* ── 2. INPUT BAR — liquid border-radius morph + churning droplet send ── */
html[data-theme="glass"] .input-container {
  position: relative; display: flex; align-items: center; gap: .6rem; padding: .55rem .7rem;
  background: linear-gradient(135deg, var(--g-surface), var(--g-surface-strong)); border: 1px solid var(--g-border);
  border-radius: 34% 66% 60% 40% / 56% 44% 56% 44%;
  box-shadow: 0 8px 30px var(--g-shadow), inset 0 1px 0 rgba(255,255,255,.6);
  backdrop-filter: blur(var(--g-blur)) saturate(1.4);
  transition: border-radius .6s cubic-bezier(.4,.2,.2,1), box-shadow .5s, transform .5s;
}
html[data-theme="glass"] .input-container::before {
  content: ""; position: absolute; inset: 0; border-radius: inherit; pointer-events: none; opacity: 0; padding: 0;
  background: radial-gradient(60% 80% at 20% 30%, color-mix(in oklab, var(--g-accent) 45%, transparent), transparent 60%),
              radial-gradient(50% 70% at 80% 70%, color-mix(in oklab, var(--g-accent3) 40%, transparent), transparent 60%),
              radial-gradient(55% 65% at 60% 20%, color-mix(in oklab, var(--g-accent2) 35%, transparent), transparent 55%);
  background-size: 200% 200%; mix-blend-mode: screen; -webkit-mask: none; mask: none; transition: opacity .5s;
}
html[data-theme="glass"] .input-container:focus-within { animation: gxInpMorph 7s ease-in-out infinite; box-shadow: 0 14px 44px var(--g-shadow), inset 0 1px 0 rgba(255,255,255,.75); border-color: var(--g-border); }
html[data-theme="glass"] .input-container:focus-within::before { opacity: 1; animation: gxInpCaustic 9s ease-in-out infinite; }
html[data-theme="glass"] .send-btn, html[data-theme="glass"] .attach-btn {
  display: grid; place-items: center; width: 42px; height: 42px; border: 0; cursor: pointer; color: #fff;
  border-radius: 50% 50% 48% 52% / 52% 48% 52% 48%;
  background: linear-gradient(125deg, var(--g-accent), var(--g-accent4) 45%, var(--g-accent3) 75%, var(--g-accent2)); background-size: 260% 260%;
  box-shadow: 0 6px 18px var(--g-shadow), inset 0 2px 4px rgba(255,255,255,.55), inset 0 -3px 6px rgba(0,0,0,.12);
  animation: gxInpChurn 8s linear infinite; transition: transform .35s cubic-bezier(.34,1.7,.5,1), filter .3s;
}
html[data-theme="glass"] .attach-btn { background: linear-gradient(125deg, var(--g-accent5), var(--g-accent), var(--g-accent2)); background-size: 220% 220%; width: 38px; height: 38px; }
html[data-theme="glass"] .send-btn::after { content: none; }
html[data-theme="glass"] .send-btn:hover { animation: gxInpJelly .55s ease, gxInpChurn 8s linear infinite; filter: saturate(1.3) brightness(1.06); transform: none; }
html[data-theme="glass"] .send-btn:active { transform: scale(.9); }
html[data-theme="glass"] .attach-btn:hover { transform: translateY(-2px) scale(1.06); }
@keyframes gxInpMorph { 0%,100% { border-radius: 34% 66% 60% 40% / 56% 44% 56% 44%; } 33% { border-radius: 60% 40% 38% 62% / 42% 58% 42% 58%; } 66% { border-radius: 46% 54% 64% 36% / 60% 38% 62% 40%; } }
@keyframes gxInpCaustic { 0%,100% { background-position: 0% 50%, 100% 50%, 50% 0%; } 50% { background-position: 100% 50%, 0% 50%, 50% 100%; } }
@keyframes gxInpChurn { to { background-position: 260% 50%; } }
@keyframes gxInpJelly { 0%,100% { transform: scale(1,1); } 30% { transform: scale(1.18,.82); } 55% { transform: scale(.86,1.14); } 75% { transform: scale(1.06,.94); } }

/* ── 3. THINKING BAR — sloshing liquid vessel, melting star, rising bubbles ── */
html[data-theme="glass"] .thinking-row.nova-enh {
  position: relative; display: inline-flex; align-items: center; gap: 9px; padding: 7px 15px; border-radius: 999px; overflow: hidden; isolation: isolate;
  color: var(--g-text); border: 1px solid var(--g-border); background: var(--g-surface-strong);
  backdrop-filter: blur(var(--g-blur)) saturate(165%); box-shadow: 0 6px 22px rgba(99,102,241,.14), inset 0 1px 0 rgba(255,255,255,.55);
}
html[data-theme="glass"] .thinking-row.nova-enh::before {
  content: ""; position: absolute; inset: -40% -20%; z-index: -1; border-radius: inherit;
  background: linear-gradient(180deg, transparent 0 38%, color-mix(in oklab, var(--g-accent) 80%, transparent) 46%, var(--g-accent2) 58%, var(--g-accent3) 70%, var(--g-accent4) 82%, var(--g-accent5) 94%);
  background-size: 100% 280%; filter: blur(6px) saturate(150%); opacity: .5; transform: rotate(-2deg); animation: gxThkSlosh 5.2s cubic-bezier(.45,.05,.55,.95) infinite;
}
@keyframes gxThkSlosh { 0% { background-position: 50% 100%; transform: rotate(-2.5deg) translateY(2px); } 50% { background-position: 50% 12%; transform: rotate(2.5deg) translateY(-2px); } 100% { background-position: 50% 100%; transform: rotate(-2.5deg) translateY(2px); } }
html[data-theme="glass"] .thinking-row.nova-enh .nova-enh-star { width: 22px; height: 22px; flex: 0 0 22px; display: grid; place-items: center; animation: none; }
html[data-theme="glass"] .thinking-row.nova-enh .nova-enh-star > svg { width: 22px; height: 22px; fill: var(--g-accent2); filter: drop-shadow(0 2px 5px rgba(6,182,212,.45)); animation: gxThkMelt 3.4s ease-in-out infinite; }
@keyframes gxThkMelt { 0%,100% { border-radius: 48% 52% 50% 50%; transform: translateY(0) scale(1,1); } 30% { border-radius: 60% 40% 55% 45%; transform: translateY(-1px) scale(.94,1.08); } 60% { border-radius: 40% 60% 45% 58%; transform: translateY(1px) scale(1.08,.92); } }
html[data-theme="glass"] .thinking-row.nova-enh .nova-enh-dots { display: inline-flex; gap: 5px; align-items: flex-end; }
html[data-theme="glass"] .thinking-row.nova-enh .nova-enh-dots > i { width: 6px; height: 6px; border-radius: 50%; display: block; background: radial-gradient(circle at 35% 30%, #fff, var(--g-accent5)); box-shadow: 0 0 6px rgba(20,184,166,.6); transform-origin: center bottom; animation: gxThkBubble 1.9s ease-in infinite; }
html[data-theme="glass"] .thinking-row.nova-enh .nova-enh-dots > i:nth-child(2) { animation-delay: .32s; background: radial-gradient(circle at 35% 30%, #fff, var(--g-accent3)); }
html[data-theme="glass"] .thinking-row.nova-enh .nova-enh-dots > i:nth-child(3) { animation-delay: .64s; background: radial-gradient(circle at 35% 30%, #fff, var(--g-accent4)); }
@keyframes gxThkBubble { 0% { transform: translateY(4px) scale(.4); opacity: 0; } 25% { opacity: 1; } 70% { transform: translateY(-6px) scale(1); opacity: .95; } 100% { transform: translateY(-13px) scale(1.5); opacity: 0; } }
html[data-theme="glass"] .thinking-row.nova-enh .thinking-step-label {
  font-weight: 600; letter-spacing: .2px;
  background: linear-gradient(90deg, var(--g-accent), var(--g-accent5), var(--g-accent2), var(--g-accent3), var(--g-accent4), var(--g-accent));
  background-size: 300% 100%; -webkit-background-clip: text; background-clip: text; -webkit-text-fill-color: transparent; color: transparent; animation: gxThkSpectrum 6s linear infinite;
}
@keyframes gxThkSpectrum { 0% { background-position: 0% 50%; } 100% { background-position: 300% 50%; } }
html[data-theme="glass"] .thinking-row.nova-enh .thinking-step-label.nova-enh-label-in { animation: gxThkSpectrum 6s linear infinite, gxThkRipple .5s ease-out; }
@keyframes gxThkRipple { 0% { opacity: .35; transform: translateY(3px) scale(.98); } 100% { opacity: 1; transform: translateY(0) scale(1); } }

/* ── 4. SUGGESTION CARDS — inflate, orbiting comet border, inner caustics ── */
html[data-theme="glass"] .suggestion-cards { display: flex; flex-wrap: wrap; gap: 14px; perspective: 900px; }
html[data-theme="glass"] .suggestion-card {
  --i: 0; position: relative; isolation: isolate; border-radius: 20px; padding: 16px 18px; cursor: pointer;
  color: var(--g-text); background: var(--g-surface); border: 1px solid color-mix(in srgb, var(--g-border) 70%, transparent);
  -webkit-backdrop-filter: blur(var(--g-blur)) saturate(1.6); backdrop-filter: blur(var(--g-blur)) saturate(1.6);
  box-shadow: 0 6px 22px -10px var(--g-shadow), inset 0 1px 0 rgba(255,255,255,.55);
  transform-origin: center; will-change: transform, filter;
  animation: gxSugInflate .62s cubic-bezier(.34,1.56,.64,1) backwards; animation-delay: calc(var(--i) * 90ms);
  transition: transform .5s cubic-bezier(.34,1.56,.64,1), box-shadow .4s ease, filter .4s ease;
}
html[data-theme="glass"] .suggestion-card::before {
  content: ""; position: absolute; inset: 0; border-radius: inherit; z-index: -1; opacity: 0; mix-blend-mode: screen; padding: 0;
  background: radial-gradient(60% 80% at 30% 20%, color-mix(in srgb, var(--g-accent) 55%, transparent), transparent 60%),
              radial-gradient(70% 60% at 75% 85%, color-mix(in srgb, var(--g-accent3) 50%, transparent), transparent 65%),
              radial-gradient(50% 50% at 60% 40%, color-mix(in srgb, var(--g-accent5) 45%, transparent), transparent 55%);
  background-size: 180% 180%; -webkit-mask: none; mask: none; transition: opacity .4s ease; animation: gxSugCaustic 7s ease-in-out infinite;
}
html[data-theme="glass"] .suggestion-card::after {
  content: ""; position: absolute; inset: -1px; border-radius: inherit; z-index: -1; padding: 2px; opacity: 0;
  background: conic-gradient(from 0deg, transparent 0 78%, var(--g-accent) 84%, var(--g-accent2) 88%, var(--g-accent4) 92%, var(--g-accent3) 96%, transparent 100%);
  -webkit-mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0); -webkit-mask-composite: xor;
  mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0); mask-composite: exclude;
  transition: opacity .35s ease; animation: gxSugComet 2.4s linear infinite;
}
html[data-theme="glass"] .suggestion-card:hover { transform: translateY(-4px) scale(1.025); box-shadow: 0 16px 40px -14px var(--g-shadow), 0 0 22px -6px color-mix(in srgb, var(--g-accent) 60%, transparent), inset 0 1px 0 rgba(255,255,255,.7); filter: saturate(1.25); }
html[data-theme="glass"] .suggestion-card:hover::before, html[data-theme="glass"] .suggestion-card:hover::after { opacity: 1; }
html[data-theme="glass"] .suggestion-card:active { animation: gxSugJelly .5s cubic-bezier(.34,1.56,.64,1); }
@keyframes gxSugInflate { 0% { opacity: 0; transform: scale(.5) translateY(10px); } 60% { opacity: 1; transform: scale(1.08) translateY(-2px); } 100% { opacity: 1; transform: scale(1) translateY(0); } }
@keyframes gxSugComet { to { transform: rotate(1turn); } }
@keyframes gxSugCaustic { 0%,100% { background-position: 0% 0%; } 50% { background-position: 100% 100%; } }
@keyframes gxSugJelly { 0% { transform: scale(1,1); } 30% { transform: scale(1.12,.86); } 55% { transform: scale(.94,1.08); } 75% { transform: scale(1.03,.98); } 100% { transform: scale(1,1); } }

/* ── 5. SIDEBAR — lava-lamp blob + rising liquid-fill items ── */
html[data-theme="glass"] .sidebar { position: relative; overflow: hidden; isolation: isolate; }
html[data-theme="glass"] .sidebar::before {
  content: ""; position: absolute; inset: -30% -20%; z-index: -1; pointer-events: none; filter: blur(60px) saturate(150%);
  background: radial-gradient(40% 32% at 30% 18%, color-mix(in srgb, var(--g-accent) 70%, transparent), transparent 70%),
              radial-gradient(46% 36% at 70% 50%, color-mix(in srgb, var(--g-accent3) 65%, transparent), transparent 72%),
              radial-gradient(42% 34% at 38% 82%, color-mix(in srgb, var(--g-accent4) 60%, transparent), transparent 70%),
              radial-gradient(38% 30% at 78% 90%, color-mix(in srgb, var(--g-accent5) 60%, transparent), transparent 70%);
  background-size: 140% 220%; animation: gxSideLava 26s ease-in-out infinite alternate; will-change: transform, background-position;
}
@keyframes gxSideLava { 0% { background-position: 0% 0%; transform: translateY(0) scale(1.05); } 50% { background-position: 50% 100%; transform: translateY(2%) scale(1.12) rotate(1.5deg); } 100% { background-position: 100% 30%; transform: translateY(-2%) scale(1.06); } }
html[data-theme="glass"] .sidebar-header { position: relative; z-index: 1; }
html[data-theme="glass"] .new-chat-btn {
  position: relative; z-index: 1; overflow: hidden; border: 1px solid var(--g-border); border-radius: 14px; color: #fff; font-weight: 600;
  background: linear-gradient(120deg, var(--g-accent), var(--g-accent2), var(--g-accent3), var(--g-accent4), var(--g-accent)); background-size: 300% 300%;
  box-shadow: 0 6px 20px rgba(99,102,241,.35); animation: gxSideChurn 8s linear infinite; will-change: background-position;
}
@keyframes gxSideChurn { 0% { background-position: 0% 50%; } 100% { background-position: 300% 50%; } }
html[data-theme="glass"] .new-chat-btn:hover { filter: brightness(1.08) saturate(1.15); transform: translateY(-1px); }
html[data-theme="glass"] .chat-history > *, html[data-theme="glass"] .local-ai-card, html[data-theme="glass"] .account-btn, html[data-theme="glass"] .sidebar-settings-btn {
  position: relative; z-index: 1; overflow: hidden; border-radius: 12px; color: var(--g-text); background: var(--g-surface); border: 1px solid var(--g-border-soft); transition: color .3s, transform .25s, box-shadow .3s;
}
html[data-theme="glass"] .chat-history > *::before, html[data-theme="glass"] .local-ai-card::before, html[data-theme="glass"] .account-btn::before, html[data-theme="glass"] .sidebar-settings-btn::before { content: none; }
html[data-theme="glass"] .chat-history > *::after, html[data-theme="glass"] .local-ai-card::after, html[data-theme="glass"] .account-btn::after, html[data-theme="glass"] .sidebar-settings-btn::after {
  content: ""; position: absolute; left: 0; right: 0; bottom: 0; top: 100%; z-index: -1;
  background: linear-gradient(0deg, color-mix(in srgb, var(--g-accent) 55%, transparent), color-mix(in srgb, var(--g-accent2) 45%, transparent) 60%, color-mix(in srgb, var(--g-accent3) 40%, transparent)); transition: top .45s cubic-bezier(.4,0,.2,1);
}
html[data-theme="glass"] .chat-history > *:hover, html[data-theme="glass"] .local-ai-card:hover, html[data-theme="glass"] .account-btn:hover, html[data-theme="glass"] .sidebar-settings-btn:hover { color: #fff; transform: translateX(2px); box-shadow: 0 8px 24px rgba(80,100,200,.28); }
html[data-theme="glass"] .chat-history > *:hover::after, html[data-theme="glass"] .local-ai-card:hover::after, html[data-theme="glass"] .account-btn:hover::after, html[data-theme="glass"] .sidebar-settings-btn:hover::after { top: 0; }
html[data-theme="glass"] .local-ai-card { background: var(--g-surface-strong); box-shadow: 0 4px 16px rgba(20,184,166,.18); }
html[data-theme="glass"] .sidebar-footer { position: relative; z-index: 1; border-top: 1px solid var(--g-border-soft); }

/* ── 6. TOPBAR — hue-morphing aurora wash + bubble-pop buttons ── */
html[data-theme="glass"] .topbar { position: relative; overflow: hidden; }
html[data-theme="glass"] .topbar::before {
  content: ""; position: absolute; inset: -40% -10%; z-index: 0; pointer-events: none;
  background: linear-gradient(115deg, rgba(6,182,212,.22), rgba(99,102,241,.20), rgba(168,85,247,.20), rgba(236,72,153,.18), rgba(20,184,166,.20));
  background-size: 300% 300%; filter: blur(28px); opacity: .85; animation: gxTopAurora 18s ease-in-out infinite; will-change: background-position;
}
@keyframes gxTopAurora { 0% { background-position: 0% 50%; } 50% { background-position: 100% 50%; } 100% { background-position: 0% 50%; } }
html[data-theme="glass"] .topbar-logo, html[data-theme="glass"] .topbar-brand, html[data-theme="glass"] .topbar-actions { position: relative; z-index: 1; }
html[data-theme="glass"] .topbar-brand {
  font-weight: 800; letter-spacing: -.02em;
  background: linear-gradient(90deg, var(--g-accent), var(--g-accent5), var(--g-accent2), var(--g-accent3), var(--g-accent4), var(--g-accent)); background-size: 300% 100%;
  -webkit-background-clip: text; background-clip: text; -webkit-text-fill-color: transparent; color: transparent; animation: gxTopFlow 12s linear infinite;
}
@keyframes gxTopFlow { 0% { background-position: 0% 50%; } 100% { background-position: 300% 50%; } }
html[data-theme="glass"] .topbar-action-btn { position: relative; color: var(--g-text); background: rgba(255,255,255,.4); border: 1px solid var(--g-border); border-radius: 12px; overflow: visible; transition: transform .25s cubic-bezier(.34,1.56,.64,1), box-shadow .25s ease; }
html[data-theme="glass"] .topbar-action-btn::after { content: ""; position: absolute; inset: 0; border-radius: inherit; pointer-events: none; border: 2px solid var(--g-accent); opacity: 0; }
html[data-theme="glass"] .topbar-action-btn:hover { animation: gxTopPop .45s cubic-bezier(.34,1.56,.64,1) forwards; box-shadow: 0 6px 20px var(--g-shadow); }
html[data-theme="glass"] .topbar-action-btn:hover::after { animation: gxTopRing .55s ease-out forwards; }
@keyframes gxTopPop { 0% { transform: scale(1); } 45% { transform: scale(1.18); } 70% { transform: scale(.96); } 100% { transform: scale(1.06); } }
@keyframes gxTopRing { 0% { transform: scale(.6); opacity: .55; } 100% { transform: scale(2.4); opacity: 0; } }

/* ── 7. BUTTONS · CHIPS · FEEDBACK — jelly press, conic-aurora chip, liquid web pill ── */
html[data-theme="glass"] .icon-btn, html[data-theme="glass"] .model-chip, html[data-theme="glass"] .model-setting-btn, html[data-theme="glass"] .nova-fb-btn, html[data-theme="glass"] .nova-fb-web {
  background: var(--g-surface); border: 1px solid var(--g-border); color: var(--g-text); backdrop-filter: blur(var(--g-blur)) saturate(1.5); border-radius: 14px;
  box-shadow: 0 4px 16px var(--g-shadow), inset 0 1px 0 rgba(255,255,255,.6); transition: transform .18s cubic-bezier(.34,1.56,.64,1), box-shadow .25s, color .2s; will-change: transform;
}
html[data-theme="glass"] .icon-btn:hover, html[data-theme="glass"] .model-chip:hover, html[data-theme="glass"] .model-setting-btn:hover { transform: translateY(-2px) scale(1.05); box-shadow: 0 8px 24px var(--g-shadow), inset 0 1px 0 rgba(255,255,255,.7); }
html[data-theme="glass"] .icon-btn:active, html[data-theme="glass"] .model-chip:active, html[data-theme="glass"] .model-setting-btn:active, html[data-theme="glass"] .nova-fb-btn:active { animation: gxBtnJelly .4s ease both; }
@keyframes gxBtnJelly { 0% { transform: scale(1); } 30% { transform: scale(1.18,.78); } 55% { transform: scale(.86,1.16); } 75% { transform: scale(1.06,.96); } 100% { transform: scale(1); } }
html[data-theme="glass"] .icon-btn::after { content: none; }
html[data-theme="glass"] .model-chip.active { position: relative; color: var(--g-text); border-color: transparent; overflow: hidden; isolation: isolate; background: var(--g-surface); animation: none; }
html[data-theme="glass"] .model-chip.active::before { content: ""; position: absolute; inset: -60%; z-index: -2; background: conic-gradient(from 0deg, var(--g-accent), var(--g-accent5), var(--g-accent2), var(--g-accent3), var(--g-accent4), var(--g-accent)); animation: gxBtnAurora 6s linear infinite; filter: blur(8px); }
html[data-theme="glass"] .model-chip.active::after { content: ""; position: absolute; inset: 1.5px; z-index: -1; border-radius: 12px; background: var(--g-surface); backdrop-filter: blur(var(--g-blur)); }
@keyframes gxBtnAurora { to { transform: rotate(360deg); } }
html[data-theme="glass"] .model-dot { width: 8px; height: 8px; border-radius: 50%; background: radial-gradient(circle at 35% 30%, var(--g-accent), var(--g-accent2)); box-shadow: 0 0 6px var(--g-accent); animation: gxBtnDot 2.4s ease-in-out infinite; }
@keyframes gxBtnDot { 0%,100% { box-shadow: 0 0 5px var(--g-accent); transform: scale(1); } 50% { box-shadow: 0 0 11px var(--g-accent3); transform: scale(1.25); } }
html[data-theme="glass"] .model-badge { background: linear-gradient(120deg, var(--g-accent2), var(--g-accent3), var(--g-accent4)); background-size: 200% 100%; color: #fff; border-radius: 8px; padding: 1px 7px; animation: gxBtnBadge 5s linear infinite; }
@keyframes gxBtnBadge { to { background-position: 200% 0; } }
html[data-theme="glass"] .nova-feedback-bar { background: var(--g-surface); border: 1px solid var(--g-border); border-radius: 16px; backdrop-filter: blur(var(--g-blur)) saturate(1.4); box-shadow: 0 6px 20px var(--g-shadow); padding: 6px; }
html[data-theme="glass"] .nova-fb-btn { border-radius: 12px; }
html[data-theme="glass"] .nova-fb-btn.up.active { animation: gxBtnThumbUp .6s cubic-bezier(.34,1.56,.64,1) both; color: var(--g-accent5); background: radial-gradient(circle, color-mix(in srgb, var(--g-accent5) 22%, transparent), transparent 70%); }
html[data-theme="glass"] .nova-fb-btn.down.active { animation: gxBtnThumbDown .6s cubic-bezier(.34,1.56,.64,1) both; color: var(--g-accent4); background: radial-gradient(circle, color-mix(in srgb, var(--g-accent4) 22%, transparent), transparent 70%); }
@keyframes gxBtnThumbUp { 0% { transform: translateY(0) scale(1); } 35% { transform: translateY(-6px) scale(1.3,.85); } 60% { transform: translateY(2px) scale(.9,1.15); } 100% { transform: translateY(0) scale(1); } }
@keyframes gxBtnThumbDown { 0% { transform: translateY(0) scale(1); } 35% { transform: translateY(6px) scale(1.3,.85); } 60% { transform: translateY(-2px) scale(.9,1.15); } 100% { transform: translateY(0) scale(1); } }
html[data-theme="glass"] .nova-fb-web { position: relative; overflow: hidden; isolation: isolate; }
html[data-theme="glass"] .nova-fb-web::before { content: ""; position: absolute; left: 0; right: 0; bottom: 0; height: 0; z-index: -1; transform: none; background: linear-gradient(0deg, var(--g-accent), var(--g-accent5), var(--g-accent2)); transition: height .45s cubic-bezier(.4,0,.2,1); }
html[data-theme="glass"] .nova-fb-web:hover { color: #fff; border-color: transparent; }
html[data-theme="glass"] .nova-fb-web:hover::before { height: 100%; }
html[data-theme="glass"] .nova-fb-web::after { content: ""; position: absolute; left: 50%; top: 50%; width: 8px; height: 8px; border-radius: 50%; background: transparent; transform: translate(-50%,-50%) scale(0); opacity: 0; }
html[data-theme="glass"] .nova-fb-web:active::after { width: 10px; height: 10px; margin: -5px; left: 50%; top: 50%; background: var(--g-accent3); animation: gxBtnDroplet .5s ease-out both; }
@keyframes gxBtnDroplet { 0% { transform: translate(-50%,-50%) scale(0); opacity: .9; } 100% { transform: translate(-50%,-50%) scale(7); opacity: 0; } }
html[data-theme="glass"] .nova-fb-web-spin { width: 14px; height: 14px; border-radius: 50%; border: 2px solid color-mix(in srgb, var(--g-accent2) 30%, transparent); border-top-color: var(--g-accent); animation: gxBtnSpin .7s linear infinite; }
@keyframes gxBtnSpin { to { transform: rotate(360deg); } }

/* ── 8. CLARIFICATION OVERLAY — droplet-expand entrance + rising-liquid rows ── */
html[data-theme="glass"] #nova-clarify-overlay {
  color: var(--g-text); background: var(--g-surface-strong) !important; border: 1px solid var(--g-border) !important; border-radius: 26px;
  box-shadow: 0 24px 70px var(--g-shadow), 0 0 0 1px rgba(255,255,255,.5) inset; backdrop-filter: blur(var(--g-blur)) saturate(1.5); -webkit-backdrop-filter: blur(var(--g-blur)) saturate(1.5);
  overflow: hidden; transform-origin: 50% 100%; animation: gxClarDrop .72s cubic-bezier(.2,1.3,.3,1) both;
}
@keyframes gxClarDrop { 0% { transform: translateX(-50%) scale(.12); border-radius: 50%; opacity: 0; filter: blur(6px); } 45% { transform: translateX(-50%) scale(1.06); border-radius: 42%; opacity: 1; filter: blur(0); } 70% { transform: translateX(-50%) scale(.97); border-radius: 30px; } 100% { transform: translateX(-50%) scale(1); border-radius: 26px; } }
html[data-theme="glass"] .nova-cl-head { border-bottom: 1px solid var(--g-border); }
html[data-theme="glass"] .nova-cl-title { font-weight: 700; letter-spacing: .2px; background: linear-gradient(90deg, var(--g-accent2), var(--g-accent3), var(--g-accent4)); -webkit-background-clip: text; background-clip: text; color: transparent; }
html[data-theme="glass"] .nova-cl-star { display: inline-block; animation: gxClarStar 3.2s ease-in-out infinite; }
@keyframes gxClarStar { 0%,100% { filter: drop-shadow(0 0 4px var(--g-accent)); transform: scale(1) rotate(0); } 33% { filter: drop-shadow(0 0 10px var(--g-accent3)); transform: scale(1.18) rotate(8deg); } 66% { filter: drop-shadow(0 0 10px var(--g-accent4)); transform: scale(1.1) rotate(-6deg); } }
html[data-theme="glass"] .nova-cl-pg-btn, html[data-theme="glass"] .nova-cl-close { border: 1px solid var(--g-border); background: rgba(255,255,255,.55); color: var(--g-text); border-radius: 50%; transition: transform .25s, box-shadow .25s, background .25s; }
html[data-theme="glass"] .nova-cl-pg-btn:hover, html[data-theme="glass"] .nova-cl-close:hover { transform: translateY(-2px) scale(1.08); background: rgba(255,255,255,.85); box-shadow: 0 6px 16px var(--g-shadow); }
html[data-theme="glass"] .nova-cl-row { position: relative; overflow: hidden; isolation: isolate; background: rgba(255,255,255,.45) !important; border: 1px solid var(--g-border); transition: transform .3s cubic-bezier(.2,.9,.3,1), box-shadow .3s, border-color .3s; }
html[data-theme="glass"] .nova-cl-row::before { content: ""; position: absolute; inset: 0; z-index: -1; transform: scaleY(0); transform-origin: 50% 100%; transition: transform .45s cubic-bezier(.3,1,.4,1); background: linear-gradient(0deg, var(--g-accent), var(--g-accent2) 55%, rgba(255,255,255,0)); }
html[data-theme="glass"] .nova-cl-row.web::before { background: linear-gradient(0deg, var(--g-accent5), var(--g-accent) 60%, rgba(255,255,255,0)); }
html[data-theme="glass"] .nova-cl-row.rewrite::before { background: linear-gradient(0deg, var(--g-accent3), var(--g-accent4) 60%, rgba(255,255,255,0)); }
html[data-theme="glass"] .nova-cl-row:hover { transform: translateY(-3px); border-color: transparent; box-shadow: 0 14px 30px var(--g-shadow); }
html[data-theme="glass"] .nova-cl-row:hover::before { transform: scaleY(1); }
html[data-theme="glass"] .nova-cl-num { color: #fff; background: linear-gradient(135deg, var(--g-accent2), var(--g-accent3)); box-shadow: 0 4px 12px var(--g-shadow); }
html[data-theme="glass"] .nova-cl-row:hover .nova-cl-num { animation: gxClarRipple .7s ease-out; }
@keyframes gxClarRipple { 0% { box-shadow: 0 0 0 0 rgba(255,255,255,.7), 0 4px 12px var(--g-shadow); } 100% { box-shadow: 0 0 0 14px rgba(255,255,255,0), 0 4px 12px var(--g-shadow); } }
html[data-theme="glass"] .nova-cl-row:hover .nova-cl-chev { transform: translateX(4px); color: var(--g-text); }
html[data-theme="glass"] .nova-cl-skip { border: 1px dashed var(--g-border); color: var(--g-text-soft); transition: background .25s, color .25s; }
html[data-theme="glass"] .nova-cl-skip:hover { background: rgba(255,255,255,.6); color: var(--g-text); }

/* ── 9. SETTINGS · MODALS — pour-in drawer, churning active, bubble-pop modal ── */
html[data-theme="glass"] .settings-overlay, html[data-theme="glass"] .account-overlay { background: radial-gradient(120% 120% at 70% 0%, rgba(99,102,241,.18), rgba(6,182,212,.12) 45%, rgba(168,85,247,.14)); backdrop-filter: blur(8px); animation: gxSetFade .35s ease both; }
@keyframes gxSetFade { from { opacity: 0; } to { opacity: 1; } }
html[data-theme="glass"] .settings-drawer { background: var(--g-surface-strong) !important; backdrop-filter: blur(var(--g-blur)) saturate(1.6); border: 1px solid var(--g-border); box-shadow: var(--g-shadow); color: var(--g-text); transform-origin: top center; animation: gxSetPour .7s cubic-bezier(.22,1,.36,1) both; }
html[data-theme="glass"] .settings-drawer::before { content: none; }
@keyframes gxSetPour { 0% { clip-path: inset(0 0 100% 0); transform: scale(.94) translateY(-8px); } 55% { clip-path: inset(0 0 0 0); transform: scale(1.015) translateY(2px); } 75% { transform: scale(.994) translateY(-1px); } 100% { clip-path: inset(0 0 0 0); transform: scale(1) translateY(0); } }
html[data-theme="glass"] .settings-title { background: linear-gradient(100deg, var(--g-accent2), var(--g-accent3), var(--g-accent4)); -webkit-background-clip: text; background-clip: text; color: transparent; font-weight: 700; }
html[data-theme="glass"] .lang-btn { background: var(--g-surface); border: 1px solid var(--g-border); color: var(--g-text); border-radius: 14px; transition: transform .25s, box-shadow .25s; }
html[data-theme="glass"] .lang-btn:hover { transform: translateY(-2px); box-shadow: 0 8px 22px -8px rgba(99,102,241,.5); }
html[data-theme="glass"] .lang-btn.active, html[data-theme="glass"] .nova-theme-card.active { background: linear-gradient(120deg, var(--g-accent), var(--g-accent2), var(--g-accent3), var(--g-accent4), var(--g-accent5)) !important; background-size: 300% 300% !important; color: #fff; border-color: transparent; animation: gxSetChurn 9s ease-in-out infinite; box-shadow: 0 12px 30px -10px rgba(99,102,241,.6); }
@keyframes gxSetChurn { 0% { background-position: 0% 50%; } 50% { background-position: 100% 50%; } 100% { background-position: 0% 50%; } }
html[data-theme="glass"] .settings-danger-btn { background: linear-gradient(120deg, var(--g-accent4), #f43f5e); color: #fff; border: none; border-radius: 14px; box-shadow: 0 10px 26px -10px rgba(236,72,153,.6); transition: transform .2s, filter .2s; }
html[data-theme="glass"] .settings-danger-btn:hover { transform: translateY(-2px); filter: brightness(1.08); }
html[data-theme="glass"] .account-dialog { background: var(--g-surface-strong); backdrop-filter: blur(var(--g-blur)) saturate(1.6); border: 1px solid var(--g-border); box-shadow: var(--g-shadow); color: var(--g-text); transform-origin: center; animation: gxSetBubblePop .72s cubic-bezier(.34,1.56,.64,1) both; }
@keyframes gxSetBubblePop { 0% { opacity: 0; transform: scale(.4) translateY(30px); } 50% { opacity: 1; transform: scale(1.08) translateY(-6px); } 70% { transform: scale(.96) translateY(2px); } 85% { transform: scale(1.02); } 100% { opacity: 1; transform: scale(1) translateY(0); } }
html[data-theme="glass"] .account-tab { position: relative; color: var(--g-text-soft); background: transparent; border: none; transition: color .3s; }
html[data-theme="glass"] .account-tab.active { color: var(--g-text); }
html[data-theme="glass"] .account-tab.active::after { content: ""; position: absolute; left: 12%; right: 12%; bottom: -2px; height: 10px; background: linear-gradient(120deg, var(--g-accent), var(--g-accent3), var(--g-accent4)); background-size: 200% 200%; filter: blur(1px); animation: gxSetBlob 6s ease-in-out infinite, gxSetChurn 7s ease-in-out infinite; }
@keyframes gxSetBlob { 0% { border-radius: 46% 54% 60% 40%/55% 48% 52% 45%; transform: rotate(0deg); } 50% { border-radius: 58% 42% 40% 60%/45% 58% 42% 55%; transform: rotate(180deg); } 100% { border-radius: 46% 54% 60% 40%/55% 48% 52% 45%; transform: rotate(360deg); } }
html[data-theme="glass"] .account-input { background: var(--g-surface); border: 1px solid var(--g-border); border-radius: 12px; color: var(--g-text); transition: box-shadow .25s, border-color .25s; }
html[data-theme="glass"] .account-input:focus { outline: none; border-color: var(--g-accent2); box-shadow: 0 0 0 4px rgba(99,102,241,.18); }
html[data-theme="glass"] .account-submit-btn { background: linear-gradient(120deg, var(--g-accent), var(--g-accent2), var(--g-accent3)); background-size: 200% 200%; color: #fff; border: none; border-radius: 14px; box-shadow: 0 12px 30px -10px rgba(99,102,241,.6); transition: transform .2s, filter .2s; animation: gxSetChurn 8s ease-in-out infinite; }
html[data-theme="glass"] .account-submit-btn:hover { transform: translateY(-2px); filter: brightness(1.08); }

/* ── 10. HERO · SCROLLBAR · GLOBAL — caustics, god-rays, spectrum title ── */
html[data-theme="glass"] #welcomeScreen { position: relative; isolation: isolate; overflow: hidden; background: linear-gradient(160deg, #eef9ff, #f4f0ff 55%, #fdeefb); }
html[data-theme="glass"] #welcomeScreen::before { content: ""; position: absolute; inset: -30% -10%; z-index: -2; background: repeating-linear-gradient(105deg, transparent 0 60px, rgba(6,182,212,.07) 60px 90px, rgba(99,102,241,.06) 90px 130px); mix-blend-mode: screen; filter: blur(6px); transform-origin: top center; animation: gxHeroGodRay 14s ease-in-out infinite; }
html[data-theme="glass"] .welcome-logo-wrap { position: relative; display: grid; place-items: center; }
html[data-theme="glass"] .welcome-logo-wrap::before { content: ""; position: absolute; width: 340px; height: 340px; z-index: -1; border-radius: 50%; filter: blur(26px) saturate(1.4); background: radial-gradient(40% 40% at 30% 35%, rgba(6,182,212,.55), transparent 60%), radial-gradient(45% 45% at 70% 40%, rgba(99,102,241,.5), transparent 62%), radial-gradient(50% 50% at 50% 70%, rgba(168,85,247,.5), transparent 60%), radial-gradient(40% 40% at 65% 65%, rgba(236,72,153,.45), transparent 60%), radial-gradient(45% 45% at 35% 65%, rgba(20,184,166,.45), transparent 60%); animation: gxHeroCaustics 11s ease-in-out infinite; }
html[data-theme="glass"] .welcome-logo-mark { animation: gxHeroFloat 7s ease-in-out infinite; will-change: transform; filter: drop-shadow(0 14px 30px rgba(99,102,241,.35)); }
html[data-theme="glass"] .welcome-title { background: linear-gradient(100deg, var(--g-accent), var(--g-accent5), var(--g-accent2), var(--g-accent3), var(--g-accent4), var(--g-accent)); background-size: 300% 100%; -webkit-background-clip: text; background-clip: text; -webkit-text-fill-color: transparent; color: transparent; animation: gxHeroLiquidFlow 9s linear infinite; }
html[data-theme="glass"] ::-webkit-scrollbar { width: 12px; height: 12px; }
html[data-theme="glass"] ::-webkit-scrollbar-track { background: rgba(99,102,241,.06); border-radius: 12px; }
html[data-theme="glass"] ::-webkit-scrollbar-thumb { border-radius: 12px; border: 2px solid transparent; background-clip: padding-box; background-image: linear-gradient(160deg, var(--g-accent), var(--g-accent2), var(--g-accent3), var(--g-accent4)); animation: gxHeroHueDrift 12s linear infinite; }
html[data-theme="glass"] ::-webkit-scrollbar-thumb:hover { filter: brightness(1.1); }
html[data-theme="glass"] ::selection { background: rgba(168,85,247,.3); color: var(--g-text); }
html[data-theme="glass"] a { color: var(--g-accent2); text-decoration-color: rgba(6,182,212,.5); transition: color .25s, text-decoration-color .25s; }
html[data-theme="glass"] a:hover { color: var(--g-accent4); text-decoration-color: var(--g-accent3); }
@keyframes gxHeroFloat { 0%,100% { transform: translateY(0) rotate(-.6deg) scale(1); } 50% { transform: translateY(-14px) rotate(.6deg) scale(1.015); } }
@keyframes gxHeroCaustics { 0%,100% { transform: translate(-6%,-4%) scale(1) rotate(0deg); opacity: .85; } 33% { transform: translate(5%,3%) scale(1.12) rotate(40deg); opacity: 1; } 66% { transform: translate(-3%,5%) scale(.95) rotate(-30deg); opacity: .9; } }
@keyframes gxHeroLiquidFlow { 0% { background-position: 0% 50%; } 100% { background-position: 300% 50%; } }
@keyframes gxHeroGodRay { 0%,100% { transform: translateX(-4%) skewX(-2deg); opacity: .7; } 50% { transform: translateX(4%) skewX(2deg); opacity: 1; } }
@keyframes gxHeroHueDrift { 0% { filter: hue-rotate(0deg); } 100% { filter: hue-rotate(360deg); } }

/* ── GLOBAL REDUCED-MOTION ── */
@media (prefers-reduced-motion: reduce) {
  html[data-theme="glass"] [class] { animation-duration: .001ms !important; animation-iteration-count: 1 !important; }
  html[data-theme="glass"] .welcome-title, html[data-theme="glass"] .topbar-brand { background-position: 50% 50% !important; }
}
