/* ===== NOXERA / NOXI AI WIDGET ===== */
:root{--noxi-accent:#2388ff;--noxi-panel:#07111f;--noxi-panel-2:#0d1829;--noxi-border:rgba(68,149,255,.62);--noxi-text:#eef6ff;--noxi-muted:#8da4bf}
.floating-actions{z-index:120!important;align-items:flex-end}
.floating-actions .discord-action-row{order:1}
.floating-actions .noxi-action-row{order:2}
.floating-actions .back-action-row{order:3}
.floating-action-row{display:flex;align-items:center;justify-content:flex-end;gap:10px;width:max-content}
.floating-action-label{min-width:164px;padding:10px 13px;border:1px solid rgba(76,144,230,.28);border-radius:14px;background:rgba(8,18,32,.88);box-shadow:0 12px 30px rgba(0,0,0,.28);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);color:#dbe9f8;line-height:1.2;text-align:left;pointer-events:none;transition:.2s ease}
.floating-action-label strong{display:block;font-size:13px;color:#fff;font-weight:700;margin-bottom:3px}.floating-action-label span{display:block;font-size:11px;color:#8fa7c0}
.floating-action-row:hover .floating-action-label{border-color:rgba(77,157,255,.56);transform:translateX(-2px)}
.noxi-float{position:relative;background:linear-gradient(160deg,#071725,#102d53)!important;border-color:rgba(61,152,255,.68)!important;box-shadow:0 0 0 1px rgba(44,138,255,.10),0 12px 35px rgba(11,76,164,.35)!important;overflow:visible}
.noxi-float img{width:40px;height:40px;border-radius:50%;object-fit:cover;display:block}
.noxi-ai-badge{position:absolute;right:-6px;top:-6px;padding:2px 5px;border-radius:999px;background:#1767cb;color:#fff;font:700 9px/1.3 system-ui,sans-serif;border:1px solid rgba(255,255,255,.24);box-shadow:0 5px 15px rgba(18,93,190,.35)}
.noxi-chat{position:fixed;right:86px;bottom:20px;width:min(410px,calc(100vw - 120px));height:min(620px,calc(100vh - 40px));z-index:119;border-radius:24px;border:1px solid var(--noxi-border);background:linear-gradient(180deg,rgba(6,15,28,.97),rgba(5,13,24,.985));box-shadow:0 28px 80px rgba(0,0,0,.52),0 0 0 1px rgba(37,136,255,.06),0 0 50px rgba(13,91,188,.12);backdrop-filter:blur(18px);-webkit-backdrop-filter:blur(18px);display:grid;grid-template-rows:auto 1fr auto;overflow:hidden;opacity:0;transform:translateY(14px) scale(.985);pointer-events:none;transition:opacity .22s ease,transform .22s ease}
.noxi-chat.is-open{opacity:1;transform:none;pointer-events:auto}
.noxi-chat__header{display:flex;align-items:center;gap:12px;padding:15px 16px;border-bottom:1px solid rgba(255,255,255,.07);background:linear-gradient(180deg,rgba(12,26,45,.85),rgba(8,18,31,.72))}
.noxi-chat__avatar{width:48px;height:48px;border-radius:50%;object-fit:cover;border:1px solid rgba(89,168,255,.4);box-shadow:0 0 24px rgba(37,136,255,.14)}
.noxi-chat__title{min-width:0;flex:1}.noxi-chat__name{display:flex;align-items:center;gap:7px;color:var(--noxi-text);font:800 20px/1.1 system-ui,sans-serif}.noxi-chat__tag{padding:3px 7px;border-radius:7px;background:#0c4a93;color:#59a7ff;font:800 10px/1.2 system-ui,sans-serif}.noxi-chat__subtitle{margin-top:4px;color:var(--noxi-muted);font:500 12px/1.2 system-ui,sans-serif}
.noxi-chat__close{width:34px;height:34px;border:0;border-radius:10px;background:transparent;color:#b9cae0;font-size:22px;cursor:pointer}.noxi-chat__close:hover{background:rgba(255,255,255,.06);color:white}
.noxi-chat__body{overflow:auto;padding:16px 14px 10px;scrollbar-width:thin;scrollbar-color:#355d8e transparent}
.noxi-message{display:flex;gap:8px;align-items:flex-end;margin:0 0 14px}.noxi-message--user{justify-content:flex-end}.noxi-message__avatar{width:30px;height:30px;border-radius:50%;object-fit:cover;flex:0 0 auto}.noxi-message__bubble{max-width:82%;padding:11px 13px;border-radius:16px;background:#122038;border:1px solid rgba(255,255,255,.05);color:#e9f2ff;font:500 13px/1.45 system-ui,sans-serif;box-shadow:0 8px 20px rgba(0,0,0,.14)}.noxi-message--user .noxi-message__bubble{background:linear-gradient(135deg,#087cff,#205cf0);border-color:rgba(255,255,255,.12);color:#fff;border-bottom-right-radius:6px}.noxi-message--bot .noxi-message__bubble{border-bottom-left-radius:6px}.noxi-message__time{display:block;margin-top:5px;color:#6f89a7;font-size:10px}.noxi-message--user .noxi-message__time{text-align:right;color:#aacbf7}
.noxi-maintenance-card{margin-top:8px;padding:8px;border-radius:14px;background:rgba(4,12,22,.55);border:1px solid rgba(70,151,251,.12)}.noxi-maintenance-card img{width:100%;display:block;aspect-ratio:1.84/1;object-fit:cover;border-radius:10px;margin-bottom:8px}.noxi-maintenance-card strong{display:block;font-size:13px;margin-bottom:3px}.noxi-maintenance-card p{margin:0;color:#bfd0e3;font-size:12px;line-height:1.45}
.noxi-typing{display:inline-flex;gap:4px;align-items:center}.noxi-typing i{width:6px;height:6px;border-radius:50%;background:#80b8ff;animation:noxiDot 1s infinite ease-in-out}.noxi-typing i:nth-child(2){animation-delay:.14s}.noxi-typing i:nth-child(3){animation-delay:.28s}@keyframes noxiDot{0%,60%,100%{transform:translateY(0);opacity:.45}30%{transform:translateY(-4px);opacity:1}}
.noxi-chat__composer{padding:12px 14px 13px;border-top:1px solid rgba(255,255,255,.07);background:rgba(6,14,25,.94)}
.noxi-chat__form{display:flex;align-items:center;gap:8px;border:1px solid rgba(92,151,221,.28);background:#0d1727;border-radius:14px;padding:7px 8px 7px 12px;transition:.2s ease}.noxi-chat__form:focus-within{border-color:rgba(48,139,255,.72);box-shadow:0 0 0 3px rgba(35,136,255,.08)}.noxi-chat__input{flex:1;min-width:0;border:0;outline:0;background:transparent;color:#edf5ff;font:500 13px/1.4 system-ui,sans-serif}.noxi-chat__input::placeholder{color:#718aa8}.noxi-chat__send{width:34px;height:34px;border:0;border-radius:10px;background:transparent;color:#8fc7ff;display:grid;place-items:center;cursor:pointer;font-size:18px}.noxi-chat__send:hover{background:rgba(35,136,255,.12);color:#fff}.noxi-chat__footnote{margin-top:8px;text-align:center;color:#7088a6;font:500 10px/1.3 system-ui,sans-serif}
@media(max-width:760px){.floating-action-label{min-width:138px;padding:8px 10px;border-radius:12px}.floating-action-label strong{font-size:11px}.floating-action-label span{font-size:10px}.noxi-chat{right:12px;bottom:176px;width:calc(100vw - 24px);height:min(560px,calc(100vh - 195px));border-radius:20px}.noxi-chat__header{padding:12px}.noxi-chat__body{padding:12px 10px 8px}.noxi-message__bubble{max-width:85%;font-size:12px}}
@media(max-width:430px){.floating-action-label{min-width:126px}.floating-action-label span{display:none}.noxi-chat{height:min(530px,calc(100vh - 180px));bottom:164px}}
@media(prefers-reduced-motion:reduce){.noxi-chat,.floating-action-label,.noxi-typing i{transition:none!important;animation:none!important}}
html[data-theme="light"] .noxi-chat{background:linear-gradient(180deg,rgba(248,251,255,.98),rgba(239,246,255,.99));border-color:rgba(42,111,201,.35)}html[data-theme="light"] .noxi-chat__header,html[data-theme="light"] .noxi-chat__composer{background:rgba(246,250,255,.94)}html[data-theme="light"] .noxi-chat__name,html[data-theme="light"] .noxi-message__bubble,html[data-theme="light"] .noxi-chat__input{color:#132238}html[data-theme="light"] .noxi-message--bot .noxi-message__bubble{background:#edf4fd}html[data-theme="light"] .floating-action-label{background:rgba(247,251,255,.94);color:#21324a}html[data-theme="light"] .floating-action-label strong{color:#102038}

/* ===== NOXI V2: minimizable quick actions ===== */
.floating-actions-minimize{
  order:-10;
  width:34px;
  height:34px;
  margin:0 7px 2px 0;
  align-self:flex-end;
  display:grid;
  place-items:center;
  border:1px solid rgba(76,144,230,.34);
  border-radius:11px;
  background:rgba(8,18,32,.9);
  color:#aecdff;
  box-shadow:0 10px 28px rgba(0,0,0,.28);
  backdrop-filter:blur(14px);
  -webkit-backdrop-filter:blur(14px);
  font:500 22px/1 system-ui,sans-serif;
  cursor:pointer;
  transition:transform .2s ease,border-color .2s ease,background .2s ease,color .2s ease;
}
.floating-actions-minimize:hover{transform:translateY(-2px);border-color:rgba(77,157,255,.7);background:rgba(13,31,55,.96);color:#fff}
.floating-actions.is-compact{gap:7px}
.floating-actions.is-compact .floating-action-label{display:none}
.floating-actions.is-compact .floating-action-row{gap:0}
.floating-actions.is-compact .floating-btn{width:38px!important;height:38px!important;font-size:17px!important}
.floating-actions.is-compact .discord-logo{width:20px!important;height:16px!important}
.floating-actions.is-compact .noxi-float img{width:31px;height:31px}
.floating-actions.is-compact .noxi-ai-badge{right:-5px;top:-5px;padding:1px 4px;font-size:8px}
.floating-actions.is-compact .floating-actions-minimize{width:28px;height:28px;margin-right:5px;border-radius:9px;font-size:17px}
.floating-actions.is-compact .floating-btn:hover{transform:none}
html[data-theme="light"] .floating-actions-minimize{background:rgba(247,251,255,.96);color:#24528a;border-color:rgba(42,111,201,.28)}
@media(max-width:760px){
  .floating-actions-minimize{width:32px;height:32px;margin-right:5px}
  .floating-actions.is-compact .floating-btn{width:36px!important;height:36px!important}
  .floating-actions.is-compact .noxi-float img{width:29px;height:29px}
}

/* ===== NOXI V3: cinematic quick-actions collapse / expand ===== */
.floating-actions .floating-action-row{
  perspective:700px;
}
.floating-actions .floating-action-label{
  transform-origin:right center;
  will-change:transform,opacity,filter;
}
.floating-actions .floating-btn{
  will-change:width,height,transform,border-radius,box-shadow;
  transition:width .30s cubic-bezier(.2,.8,.2,1),height .30s cubic-bezier(.2,.8,.2,1),transform .24s ease,border-radius .30s ease,box-shadow .30s ease!important;
}

/* 1) text bubbles get pulled into their own icon */
.floating-actions.is-collapsing .floating-action-label{
  animation:noxiLabelSuckIn .34s cubic-bezier(.55,.02,.72,.28) both;
  pointer-events:none;
}
.floating-actions.is-collapsing .discord-action-row .floating-action-label{animation-delay:.00s}
.floating-actions.is-collapsing .noxi-action-row .floating-action-label{animation-delay:.09s}
.floating-actions.is-collapsing .back-action-row .floating-action-label{animation-delay:.18s}
@keyframes noxiLabelSuckIn{
  0%{transform:translateX(0) scale(1);opacity:1;filter:blur(0)}
  55%{transform:translateX(45%) scale(.88);opacity:.85;filter:blur(.3px)}
  100%{transform:translateX(calc(100% + 14px)) scale(.54);opacity:0;filter:blur(3px)}
}

/* tiny glow pop right after each label reaches the icon */
.floating-actions.is-collapsing .floating-btn::after{
  content:"";
  position:absolute;
  inset:-5px;
  border:1px solid rgba(72,157,255,.55);
  border-radius:inherit;
  opacity:0;
  pointer-events:none;
  animation:noxiAbsorbPulse .34s ease-out both;
}
.floating-actions.is-collapsing .discord-action-row .floating-btn::after{animation-delay:.18s}
.floating-actions.is-collapsing .noxi-action-row .floating-btn::after{animation-delay:.27s}
.floating-actions.is-collapsing .back-action-row .floating-btn::after{animation-delay:.36s}
@keyframes noxiAbsorbPulse{0%{opacity:0;transform:scale(.78)}38%{opacity:.8}100%{opacity:0;transform:scale(1.28)}}

/* 2) after text is absorbed, each action bubble shrinks with a soft spring */
.floating-actions.is-shrinking .discord-action-row .floating-btn{animation:noxiBubbleShrink .33s cubic-bezier(.34,1.56,.64,1) .00s both}
.floating-actions.is-shrinking .noxi-action-row .floating-btn{animation:noxiBubbleShrink .33s cubic-bezier(.34,1.56,.64,1) .07s both}
.floating-actions.is-shrinking .back-action-row .floating-btn{animation:noxiBubbleShrink .33s cubic-bezier(.34,1.56,.64,1) .14s both}
@keyframes noxiBubbleShrink{0%{transform:scale(1)}58%{transform:scale(.82)}82%{transform:scale(1.06)}100%{transform:scale(1)}}

/* keep labels hidden only after the collapse sequence actually finishes */
.floating-actions.is-compact .floating-action-label{display:none}

/* expanding: icons grow first, then each label unfolds from its own icon */
.floating-actions.is-expanding .floating-action-label{
  display:block;
  animation:noxiLabelRelease .38s cubic-bezier(.16,1,.3,1) both;
}
.floating-actions.is-expanding .discord-action-row .floating-action-label{animation-delay:.18s}
.floating-actions.is-expanding .noxi-action-row .floating-action-label{animation-delay:.25s}
.floating-actions.is-expanding .back-action-row .floating-action-label{animation-delay:.32s}
@keyframes noxiLabelRelease{
  0%{transform:translateX(calc(100% + 14px)) scale(.54);opacity:0;filter:blur(3px)}
  58%{transform:translateX(-5px) scale(1.025);opacity:1;filter:blur(0)}
  100%{transform:translateX(0) scale(1);opacity:1;filter:blur(0)}
}
.floating-actions.is-expanding .discord-action-row .floating-btn{animation:noxiBubbleGrow .34s cubic-bezier(.34,1.56,.64,1) .00s both}
.floating-actions.is-expanding .noxi-action-row .floating-btn{animation:noxiBubbleGrow .34s cubic-bezier(.34,1.56,.64,1) .06s both}
.floating-actions.is-expanding .back-action-row .floating-btn{animation:noxiBubbleGrow .34s cubic-bezier(.34,1.56,.64,1) .12s both}
@keyframes noxiBubbleGrow{0%{transform:scale(.86)}65%{transform:scale(1.09)}100%{transform:scale(1)}}

.floating-actions.is-animating .floating-btn,
.floating-actions.is-animating .floating-actions-minimize{pointer-events:none}

/* Keep the compact/expand feedback visible on touch devices too.
   The motion is short and local, so we do not completely kill it on iOS. */
@media(prefers-reduced-motion:reduce){
  .floating-actions.is-collapsing .floating-action-label,
  .floating-actions.is-expanding .floating-action-label{animation-duration:.22s!important}
  .floating-actions.is-shrinking .floating-btn,
  .floating-actions.is-expanding .floating-btn,
  .floating-actions.is-collapsing .floating-btn::after{animation-duration:.18s!important}
}

/* ===== NOXI V4: chat sits above quick-actions + soft blurred edge ===== */
.noxi-chat{
  z-index:132;
  isolation:isolate;
  overflow:hidden;
}
/* Soft halo/blur on the outside edge. The panel now visually passes over
   the quick-action labels instead of letting them cut through the chat. */
.noxi-chat::before{
  content:"";
  position:absolute;
  inset:-9px;
  z-index:-1;
  border-radius:30px;
  background:rgba(12,35,65,.10);
  backdrop-filter:blur(7px);
  -webkit-backdrop-filter:blur(7px);
  box-shadow:0 0 28px rgba(35,136,255,.16);
  pointer-events:none;
}
/* Keep the quick actions underneath the opened chat. */
.floating-actions{z-index:120!important}

/* Give the right edge a tiny translucent fade so covered controls don't
   look brutally chopped where the chat crosses them. */
.noxi-chat::after{
  content:"";
  position:absolute;
  top:72px;
  right:0;
  bottom:74px;
  width:12px;
  z-index:4;
  pointer-events:none;
  background:linear-gradient(90deg,transparent,rgba(41,126,230,.10));
  filter:blur(2px);
}
.noxi-chat__header,.noxi-chat__body,.noxi-chat__composer{position:relative;z-index:2}

@media(max-width:760px){
  .noxi-chat::before{inset:-6px;border-radius:25px;backdrop-filter:blur(5px);-webkit-backdrop-filter:blur(5px)}
  .noxi-chat::after{width:9px}
}
@media(prefers-reduced-motion:reduce){.noxi-chat::after{filter:none}}


/* ===== NOXI V5: real mobile layering + touch animations ===== */
/* The chat must be the top interactive layer on phones.  Previous versions
   could still inherit a stronger mobile stacking context from the site UI. */
.noxi-chat{z-index:6200!important}
html.noxi-chat-open .floating-actions{z-index:115!important}

@media(max-width:760px){
  .noxi-chat{
    right:8px!important;
    left:8px!important;
    bottom:10px!important;
    width:auto!important;
    height:min(610px,calc(100dvh - 20px))!important;
    max-height:calc(100dvh - 20px)!important;
    border-radius:22px!important;
    z-index:6200!important;
    box-shadow:0 24px 70px rgba(0,0,0,.66),0 0 0 1px rgba(35,136,255,.10),0 0 34px rgba(35,136,255,.22)!important;
  }
  .noxi-chat::before{
    inset:-7px!important;
    border-radius:27px!important;
    background:rgba(10,30,56,.16)!important;
    backdrop-filter:blur(9px) saturate(108%)!important;
    -webkit-backdrop-filter:blur(9px) saturate(108%)!important;
  }
  .noxi-chat::after{
    top:62px!important;
    right:-1px!important;
    bottom:66px!important;
    width:16px!important;
    background:linear-gradient(90deg,transparent,rgba(25,95,180,.18))!important;
    filter:blur(3px)!important;
  }

  /* Stronger, clearly visible touch collapse. Each text pill flies into its icon. */
  .floating-actions.is-collapsing .floating-action-label{
    animation-name:noxiMobileLabelSuckIn!important;
    animation-duration:.46s!important;
    animation-timing-function:cubic-bezier(.55,.02,.72,.28)!important;
    animation-fill-mode:both!important;
  }
  .floating-actions.is-expanding .floating-action-label{
    animation-name:noxiMobileLabelRelease!important;
    animation-duration:.44s!important;
    animation-timing-function:cubic-bezier(.16,1,.3,1)!important;
    animation-fill-mode:both!important;
  }
  .floating-actions.is-shrinking .floating-btn{
    animation-name:noxiMobileBubbleShrink!important;
    animation-duration:.36s!important;
    animation-fill-mode:both!important;
  }
  .floating-actions.is-expanding .floating-btn{
    animation-name:noxiMobileBubbleGrow!important;
    animation-duration:.36s!important;
    animation-fill-mode:both!important;
  }
}

@keyframes noxiMobileLabelSuckIn{
  0%{transform:translate3d(0,0,0) scale(1);opacity:1;filter:blur(0)}
  55%{transform:translate3d(52%,0,0) scale(.86);opacity:.82;filter:blur(.6px)}
  100%{transform:translate3d(calc(100% + 18px),0,0) scale(.42);opacity:0;filter:blur(4px)}
}
@keyframes noxiMobileLabelRelease{
  0%{transform:translate3d(calc(100% + 18px),0,0) scale(.42);opacity:0;filter:blur(4px)}
  62%{transform:translate3d(-6px,0,0) scale(1.04);opacity:1;filter:blur(0)}
  100%{transform:translate3d(0,0,0) scale(1);opacity:1;filter:blur(0)}
}
@keyframes noxiMobileBubbleShrink{
  0%{transform:scale(1)}
  54%{transform:scale(.72)}
  78%{transform:scale(1.08)}
  100%{transform:scale(1)}
}
@keyframes noxiMobileBubbleGrow{
  0%{transform:scale(.72)}
  62%{transform:scale(1.10)}
  100%{transform:scale(1)}
}

@media(max-width:430px){
  .noxi-chat{left:6px!important;right:6px!important;bottom:6px!important;height:calc(100dvh - 12px)!important;max-height:calc(100dvh - 12px)!important}
}

/* V6 live AI states */
.noxi-chat__send:disabled,.noxi-chat__input:disabled{opacity:.62;cursor:wait}
.noxi-chat__form[data-sending="1"]{border-color:rgba(48,139,255,.52);box-shadow:0 0 0 3px rgba(35,136,255,.06)}

/* ===== NOXI V8: mobile input zoom fix + readable Markdown ===== */
.noxi-message__bubble--markdown > div + div{margin-top:.38em}
.noxi-message__bubble--markdown strong{font-weight:800;color:#f4f8ff}
.noxi-message__bubble--markdown em{font-style:italic}
.noxi-message__bubble--markdown code{font:inherit;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;background:rgba(255,255,255,.07);padding:.08em .32em;border-radius:5px}
.noxi-message__bubble--markdown ul,
.noxi-message__bubble--markdown ol{margin:.42em 0 .25em 1.15em;padding:0}
.noxi-message__bubble--markdown li{margin:.20em 0;line-height:1.45}
.noxi-message__bubble--markdown a{color:#63b3ff;text-decoration:none;font-weight:700;border-bottom:1px solid rgba(99,179,255,.38)}
.noxi-message__bubble--markdown a:hover{color:#91caff;border-bottom-color:currentColor}

/* iOS Safari zooms focused inputs smaller than 16px. Keep Noxi at 16px on phones. */
@media(max-width:760px){
  .noxi-chat__input{
    font-size:16px!important;
    line-height:1.35!important;
    -webkit-text-size-adjust:100%;
    text-size-adjust:100%;
  }
  .noxi-chat__form{font-size:16px!important}
}

/* V10 — Discord-style Markdown headings in Noxi */
.noxi-message__bubble--markdown .noxi-md-heading{font-weight:850;color:#f7faff;line-height:1.18;margin:.62em 0 .28em;letter-spacing:-.015em}
.noxi-message__bubble--markdown .noxi-md-heading:first-child{margin-top:0}
.noxi-message__bubble--markdown .noxi-md-heading--1{font-size:1.34em}
.noxi-message__bubble--markdown .noxi-md-heading--2{font-size:1.18em}
.noxi-message__bubble--markdown .noxi-md-heading--3{font-size:1.07em}
@media (max-width:640px){
 .noxi-message__bubble--markdown .noxi-md-heading--1{font-size:1.28em}
 .noxi-message__bubble--markdown .noxi-md-heading--2{font-size:1.16em}
 .noxi-message__bubble--markdown .noxi-md-heading--3{font-size:1.06em}
}

/* V12: header controls + fresh-conversation UX */
.noxi-chat__header-actions{display:flex;align-items:center;gap:5px;flex:0 0 auto}
.noxi-chat__clear,.noxi-chat__close{width:34px;height:34px;border:0;border-radius:10px;background:transparent;color:#b9cae0;display:grid;place-items:center;cursor:pointer;transition:background .18s ease,color .18s ease,transform .18s ease}
.noxi-chat__clear{font:700 19px/1 system-ui,sans-serif}
.noxi-chat__clear:hover,.noxi-chat__close:hover{background:rgba(255,255,255,.07);color:#fff}
.noxi-chat__clear:active,.noxi-chat__close:active{transform:scale(.92)}
@media(max-width:760px){.noxi-chat__header-actions{gap:2px}.noxi-chat__clear,.noxi-chat__close{width:32px;height:32px}.noxi-chat__clear{font-size:18px}}
html[data-theme="light"] .noxi-chat__clear{color:#57708d}
html[data-theme="light"] .noxi-chat__clear:hover{background:rgba(28,83,145,.08);color:#173557}
