/* ==========================================================================
   Kinetiq — wspólne style sesji: menu konta w nawigacji + animacje wejścia.
   Dołączaj ten plik na każdej stronie, która ma pokazywać zalogowanego użytkownika.
   ========================================================================== */

/* --------------------------------------------------------- przełącznik --- */
/* Dopóki nie wiemy, czy ktoś jest zalogowany, nie pokazujemy nic — dzięki temu
   przyciski "Zaloguj się / Dołącz" nie mrugają przed pojawieniem się avatara. */

.nav-actions[data-state="loading"] .nav-guest,
.nav-actions[data-state="loading"] .account,
.nav-actions[data-state="guest"] .account,
.nav-actions[data-state="user"] .nav-guest{
  display:none;
}

.nav-guest{
  display:flex;
  align-items:center;
  gap:22px;
  animation:kq-fade-in .35s ease both;
}

/* ------------------------------------------------------------- avatar --- */

.avatar{
  position:relative;
  display:grid;
  place-items:center;
  width:34px;
  height:34px;
  border-radius:50%;
  flex-shrink:0;
  overflow:hidden;
  font-family:var(--font-display);
  font-weight:700;
  font-size:15px;
  line-height:1;
  color:#0A0B0F;
  background:linear-gradient(135deg, var(--accent) 0%, var(--accent-hot) 100%);
  user-select:none;
}
/* Zdjęcie wypełnia całe kółko. Pozycjonujemy je absolutnie, bo w gridzie
   z place-items:center szerokość 100% liczyła się od rozmiaru samego obrazka
   — przez co avatar wychodził poza kadr i wyglądał na przycięty. */
.avatar img{
  position:absolute;
  inset:0;
  width:100%;
  height:100%;
  object-fit:cover;
  object-position:center;
  display:block;
  border-radius:inherit;
}

/* Warianty kolorystyczne — przydzielane po id użytkownika, żeby avatary
   bez zdjęcia nie wyglądały wszystkie tak samo. */
.avatar[data-tone="1"]{ background:linear-gradient(135deg, var(--teal) 0%, #1FBF9A 100%); }
.avatar[data-tone="2"]{ background:linear-gradient(135deg, var(--violet) 0%, #6A5AE0 100%); }
.avatar[data-tone="3"]{ background:linear-gradient(135deg, var(--accent-hot) 0%, var(--violet) 100%); }
.avatar[data-tone="4"]{ background:linear-gradient(135deg, var(--teal) 0%, var(--accent) 100%); }

.avatar-lg{
  width:46px;
  height:46px;
  font-size:19px;
}

/* ---------------------------------------------------- przycisk w navie --- */

.account{
  position:relative;
  animation:kq-fade-in .4s ease both;
}

.account-trigger{
  display:flex;
  align-items:center;
  gap:10px;
  padding:5px 12px 5px 5px;
  border-radius:999px;
  border:1px solid var(--border);
  background:var(--bg-elevated);
  color:var(--text);
  transition:border-color .2s ease, background .2s ease, transform .18s ease;
}
.account-trigger:hover{
  border-color:var(--text-faint);
  background:var(--bg-card);
}
.account-trigger:active{ transform:scale(0.97); }
.account-trigger[aria-expanded="true"]{
  border-color:var(--accent);
  background:var(--bg-card);
}

.account-nick{
  font-size:14.5px;
  font-weight:600;
  max-width:130px;
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
}

.account-chevron{
  width:15px;
  height:15px;
  color:var(--text-faint);
  transition:transform .28s cubic-bezier(.4,0,.2,1), color .2s ease;
}
.account-trigger:hover .account-chevron{ color:var(--text-muted); }
.account-trigger[aria-expanded="true"] .account-chevron{
  transform:rotate(180deg);
  color:var(--accent);
}

/* ---------------------------------------------------------- rozwijane --- */

.account-menu{
  position:absolute;
  top:calc(100% + 12px);
  right:0;
  width:290px;
  padding:8px;
  border-radius:var(--radius);
  border:1px solid var(--border);
  background:var(--bg-elevated);
  box-shadow:0 24px 60px rgba(0,0,0,0.55), 0 2px 6px rgba(0,0,0,0.4);
  transform-origin:top right;

  /* stan zamknięty */
  opacity:0;
  visibility:hidden;
  transform:translateY(-10px) scale(.95);
  transition:opacity .22s ease, transform .28s cubic-bezier(.34,1.4,.64,1), visibility .28s;
}
.account-menu.open{
  opacity:1;
  visibility:visible;
  transform:translateY(0) scale(1);
}

/* Dzióbek łączący menu z przyciskiem. */
.account-menu::before{
  content:"";
  position:absolute;
  top:-5px;
  right:22px;
  width:9px;
  height:9px;
  background:var(--bg-elevated);
  border-left:1px solid var(--border);
  border-top:1px solid var(--border);
  transform:rotate(45deg);
}

/* Zawartość wjeżdża kaskadowo, dopiero po otwarciu menu. */
.account-menu > *{
  opacity:0;
  transform:translateY(6px);
  transition:opacity .25s ease, transform .25s ease;
}
.account-menu.open > *{
  opacity:1;
  transform:translateY(0);
}
.account-menu.open > *:nth-child(1){ transition-delay:.05s; }
.account-menu.open > *:nth-child(2){ transition-delay:.10s; }
.account-menu.open > *:nth-child(3){ transition-delay:.15s; }

.account-head{
  display:flex;
  align-items:center;
  gap:12px;
  padding:12px 12px 14px;
  border-bottom:1px solid var(--border-soft);
}
.account-head-text{ min-width:0; }
.account-head strong{
  display:block;
  font-size:15px;
  font-weight:600;
  letter-spacing:-0.01em;
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
}
.account-head span{
  display:block;
  font-size:12.5px;
  color:var(--text-faint);
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
}

.account-rows{
  padding:12px 4px;
  border-bottom:1px solid var(--border-soft);
}
.account-row{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:12px;
  padding:7px 8px;
}
.account-row-label{
  font-size:12px;
  letter-spacing:0.07em;
  font-family:var(--font-mono);
  color:var(--text-faint);
}

.plan-chip{
  display:inline-flex;
  align-items:center;
  gap:6px;
  padding:4px 11px;
  border-radius:999px;
  font-size:12.5px;
  font-weight:600;
  letter-spacing:0.02em;
  color:var(--teal);
  background:rgba(55,240,194,0.10);
  border:1px solid rgba(55,240,194,0.28);
}
.plan-chip[data-plan="plus"]{
  color:var(--accent-hot);
  background:var(--accent-soft);
  border-color:rgba(255,90,54,0.32);
}
.plan-chip[data-plan="ultra"]{
  color:var(--violet);
  background:rgba(139,124,246,0.12);
  border-color:rgba(139,124,246,0.34);
}

.account-balance{
  font-family:var(--font-mono);
  font-size:14.5px;
  font-weight:600;
  color:var(--text);
}

.account-actions{
  display:flex;
  flex-direction:column;
  gap:2px;
  padding:6px 0 2px;
}
.menu-item{
  display:flex;
  align-items:center;
  gap:11px;
  width:100%;
  padding:10px 12px;
  border:none;
  border-radius:10px;
  background:transparent;
  color:var(--text-muted);
  font-family:var(--font-body);
  font-size:14.5px;
  font-weight:500;
  text-align:left;
  transition:background .18s ease, color .18s ease, transform .18s ease;
}
.menu-item svg{
  width:17px;
  height:17px;
  flex-shrink:0;
}
.menu-item:hover{
  background:var(--bg-card);
  color:var(--text);
  transform:translateX(2px);
}
.menu-item-danger:hover{
  background:rgba(255,90,54,0.10);
  color:var(--accent-hot);
}
.menu-item.busy{
  opacity:.55;
  pointer-events:none;
}

/* ------------------------------------------------- animacje wejściowe --- */

@keyframes kq-fade-in{
  from{ opacity:0; }
  to{ opacity:1; }
}
@keyframes kq-rise{
  from{ opacity:0; transform:translateY(22px); }
  to{ opacity:1; transform:translateY(0); }
}
@keyframes kq-drop{
  from{ opacity:0; transform:translateY(-100%); }
  to{ opacity:1; transform:translateY(0); }
}
@keyframes kq-zoom{
  from{ opacity:0; transform:scale(.94); }
  to{ opacity:1; transform:scale(1); }
}

/* Elementy oznaczone [data-rise] pojawiają się kaskadowo zaraz po wczytaniu strony. */
[data-rise]{
  animation:kq-rise .8s cubic-bezier(.16,.84,.44,1) both;
}
[data-rise="1"]{ animation-delay:.05s; }
[data-rise="2"]{ animation-delay:.15s; }
[data-rise="3"]{ animation-delay:.25s; }
[data-rise="4"]{ animation-delay:.35s; }
[data-rise="5"]{ animation-delay:.45s; }
[data-rise="6"]{ animation-delay:.60s; }

[data-drop]{ animation:kq-drop .7s cubic-bezier(.16,.84,.44,1) both; }
[data-zoom]{ animation:kq-zoom 1.1s cubic-bezier(.16,.84,.44,1) both; animation-delay:.55s; }

/* Sekcje niżej na stronie odsłaniają się przy przewijaniu (klasę dodaje kinetiq.js). */
.reveal{
  opacity:0;
  transform:translateY(28px);
  transition:opacity .7s cubic-bezier(.16,.84,.44,1), transform .7s cubic-bezier(.16,.84,.44,1);
}
.reveal.visible{
  opacity:1;
  transform:translateY(0);
}
.reveal-stagger > *{
  opacity:0;
  transform:translateY(24px);
  transition:opacity .6s cubic-bezier(.16,.84,.44,1), transform .6s cubic-bezier(.16,.84,.44,1);
}
.reveal-stagger.visible > *{
  opacity:1;
  transform:translateY(0);
}
.reveal-stagger.visible > *:nth-child(1){ transition-delay:.05s; }
.reveal-stagger.visible > *:nth-child(2){ transition-delay:.15s; }
.reveal-stagger.visible > *:nth-child(3){ transition-delay:.25s; }
.reveal-stagger.visible > *:nth-child(4){ transition-delay:.35s; }

/* Szanujemy ustawienie systemowe "ogranicz animacje". */
@media (prefers-reduced-motion: reduce){
  [data-rise], [data-drop], [data-zoom], .nav-guest, .account{
    animation:none !important;
  }
  .reveal, .reveal-stagger > *{
    opacity:1 !important;
    transform:none !important;
    transition:none !important;
  }
  .account-menu, .account-menu > *, .account-chevron{
    transition-duration:.01ms !important;
  }
}

@media (max-width:600px){
  .account-menu{
    width:calc(100vw - 40px);
    max-width:290px;
  }
  .account-nick{ display:none; }
}
