/* ======================================================================
   TokTik.fun — styles.css
   Palette & reset
====================================================================== */

:root{
  --bg:#0a0b10; --bg2:#06070c;
  --card:#0f1220; --line:#1b2040; --muted:#a2b0d7; --fg:#eaf2ff;
  --cy:#00f2ff; --mg:#ff0050; --yl:#f6f930; --mint:#3BE084;
}

*{ box-sizing:border-box; }
html,body{ height:100%; }
body{
  margin:0;
  color:var(--fg);
  font-family:Inter,system-ui,Segoe UI,Roboto,Arial,sans-serif;
  background:
    radial-gradient(50vw 35vh at 10% -10%, rgba(0,242,255,.12), transparent 60%),
    radial-gradient(40vw 30vh at 100% 0%, rgba(255,0,80,.12), transparent 60%),
    linear-gradient(180deg, var(--bg) 0%, var(--bg2) 100%);
}

.hidden{ display:none !important; }
.neon-bg{
  position:fixed; inset:-25vh -25vw; pointer-events:none; z-index:0;
  background:
    radial-gradient(40vw 30vh at 15% 5%, rgba(0,242,255,.18), transparent 60%),
    radial-gradient(40vw 30vh at 85% 15%, rgba(255,0,80,.16), transparent 60%),
    radial-gradient(30vw 22vh at 50% 110%, rgba(122,45,241,.14), transparent 60%);
  filter:blur(30px); opacity:.9;
}

/* ======================================================================
   Form & controls
====================================================================== */

.ui{
  width:100%; background:#0e1428; color:var(--fg);
  border:1px solid #1c2344; border-radius:12px;
  padding:12px 14px; font-size:1rem; outline:none;
}
.ui:focus{ border-color:#2b3a7a; box-shadow:0 0 0 3px rgba(0,242,255,.12); }
textarea.ui{ resize:vertical; }

.pill{
  border-radius:999px; border:1px solid var(--line);
  background:#11162a; color:var(--fg);
  padding:10px 14px; font-weight:700; cursor:pointer;
}
.pill.neon{
  background:linear-gradient(90deg, rgba(0,242,255,.16), rgba(255,0,80,.16));
  box-shadow:0 0 24px rgba(0,242,255,.18) inset, 0 0 24px rgba(255,0,80,.14) inset;
}
.pill.small{ padding:10px 12px; }
.big{ font-size:1.05rem; padding:12px 16px; }
.pill.mint{ background:#1e2e24; border-color:#2e5240; }

/* ======================================================================
   Layout: Sidebar (desktop) + Drawer (mobile)
====================================================================== */

.sidebar{
  position:fixed; inset:0 auto 0 0; width:260px;
  background:rgba(8,10,18,.7); border-right:1px solid #12162a;
  backdrop-filter:blur(8px); z-index:5;
  display:flex; flex-direction:column; gap:18px; padding:18px 16px;
}
.brand{ display:flex; align-items:center; gap:12px; }
.brand-stack{ flex-direction:column; align-items:stretch; gap:12px; }
.brand-row{ display:flex; align-items:center; gap:12px; }
.logo-big{
  width:60px; height:60px;
  filter: drop-shadow(0 0 24px rgba(0,242,255,.35)) drop-shadow(0 0 24px rgba(255,0,80,.25));
}
.brand-title{ font-weight:800; font-size:20px; }
.brand-title span{ color:var(--mg); }
.create-top{ width:100%; }

/* Navigation buttons (desktop & drawer) */
.nav-btn{
  width:100%; text-align:left; padding:12px 14px; border-radius:12px;
  cursor:pointer; font-size:1rem; color:var(--fg);
  background:#101425; border:1px solid var(--line); font-weight:700;
  transition:transform .2s, border-color .2s, background .2s;
}
.nav-btn:hover{ transform:translateY(-1px); border-color:#24305a; }
.nav-btn.active{
  background:linear-gradient(90deg, rgba(0,242,255,.18), rgba(255,0,80,.18));
  border-color:transparent;
}

/* Drawer (mobile menu) */
.drawer{
  position:fixed; inset:0; display:none; z-index:40;
  background:rgba(0,0,0,.55);
}
.drawer.show{ display:block; }
.drawer-inner{
  position:absolute; top:0; left:0; bottom:0; width:min(84vw, 340px);
  background:#0b0f1e; border-right:1px solid var(--line);
  padding:14px; display:flex; flex-direction:column; gap:16px;
}
.drawer-close{
  align-self:flex-end; border:1px solid var(--line);
  background:#12162a; color:#cbd7ff; width:44px; height:44px;
  border-radius:12px; font-size:24px; cursor:pointer;
}
.drawer-brand{ margin-top:6px; }
.drawer-nav{ display:flex; flex-direction:column; gap:10px; }

/* ======================================================================
   Topbar
====================================================================== */

.topbar{
  position:sticky; top:0; left:260px; right:0; height:68px;
  display:flex; align-items:center; justify-content:space-between;
  padding:10px 18px; margin-left:260px;
  background:rgba(10,12,20,.55); backdrop-filter:blur(8px);
  border-bottom:1px solid #12162a; z-index:4;
}
.actions{ display:flex; gap:10px; align-items:center; }
.burger{
  display:none; background:#101425; border:1px solid var(--line);
  color:#eaf2ff; border-radius:12px; padding:12px 14px; font-size:1.25rem;
}

/* Marquee */
.ticker-marquee{
  display:flex; gap:8px; overflow:auto; scrollbar-width:none;
}
.ticker-marquee::-webkit-scrollbar{ display:none; }
.badge{
  white-space:nowrap; padding:6px 10px; border-radius:10px;
  font-weight:700; font-size:12px; border:1px solid #2a324f; background:#12162a;
}
.badge.salmon{ background:#371c21; color:#ffd3d3; border-color:#5e2a33; }
.badge.blue{ background:#142638; color:#cbeaff; border-color:#244564; }

/* ======================================================================
   Main area & views
====================================================================== */

#app{ margin-left:260px; padding:18px; position:relative; z-index:1; }
.view{ display:none; }
.view.active{ display:block; }
h1{ margin:10px 0 14px; font-size:22px; }

/* Cards */
.card{
  background:linear-gradient(180deg, rgba(17,22,42,.78), rgba(11,14,27,.78));
  border:1px solid var(--line); border-radius:16px; padding:12px;
  position:relative; overflow:hidden;
}
.card.soft{ padding:16px 16px 18px; }
.card::after{
  content:""; position:absolute; inset:-1px; border-radius:16px; z-index:-1;
  background:linear-gradient(90deg, rgba(0,242,255,.18), rgba(255,0,80,.18));
  filter:blur(20px); opacity:.16;
}

/* ======================================================================
   Home — Trending & Grid
====================================================================== */

.carousel{
  display:grid; grid-auto-flow:column; grid-auto-columns:minmax(280px, 32%);
  gap:12px; overflow:auto; padding-bottom:4px;
}
.no-scrollbar{ scrollbar-width:none; }
.no-scrollbar::-webkit-scrollbar{ display:none; }
.carousel .card{ min-height:110px; display:flex; gap:12px; align-items:center; }
.carousel img{
  width:72px; height:72px; border-radius:12px; border:1px solid var(--line); object-fit:cover;
}

.toolbar{ display:flex; align-items:center; justify-content:space-between; margin:14px 0; }
.toolbar .left{ display:flex; gap:10px; align-items:center; }

.chip{
  background:#101425; border:1px solid var(--line); color:#eaf2ff;
  padding:8px 12px; border-radius:999px; cursor:pointer; user-select:none;
}
.menu{
  position:fixed; background:#0f1220; border:1px solid var(--line);
  border-radius:12px; padding:6px; display:flex; flex-direction:column; gap:6px;
  z-index:1000; box-shadow:0 8px 30px rgba(0,0,0,.35);
}
.menu.hidden{ display:none; }
.menu button{
  text-align:left; padding:10px 12px; border-radius:10px; border:1px solid #1b2040;
  background:#101425; color:#eaf2ff; font-weight:700; cursor:pointer;
}
.menu button:hover{ border-color:#2a3a73; }

.grid{
  display:grid; gap:12px; grid-template-columns: repeat(auto-fill, minmax(240px, 1fr));
}
.token-card{
  display:flex; flex-direction:column; gap:10px; cursor:pointer; transition:transform .2s;
}
.token-card:hover{ transform:translateY(-2px); }
.thumb-vert{
  width:100%; aspect-ratio:1/1; border-radius:12px; border:1px solid var(--line);
  background:#11162a; overflow:hidden;
}
.thumb-vert img{ width:100%; height:100%; object-fit:cover; }
.meta{ font-size:13px; color:#a9b4d8; }
.ticker-line{ display:flex; align-items:center; justify-content:space-between; gap:10px; }
.ticker-name{ font-weight:800; }
.cap-badge{
  background:rgba(59,224,132,.12); color:#baf8d5; border:1px solid rgba(59,224,132,.35);
  padding:6px 10px; border-radius:999px; font-size:12px; font-weight:800;
}
.token-desc{
  margin:6px 0 6px; font-size:13px; color:#a9b4d8;
  display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden;
}

/* Bonding bar */
.bond-wrap{ background:#0c1022; border:1px solid var(--line); border-radius:10px; height:10px; overflow:hidden; }
.bond-fill{ height:100%; background:linear-gradient(90deg, var(--cy), var(--mg)); width:0%; }
.bond-label{ display:flex; justify-content:space-between; font-size:12px; margin-top:6px; color:#a9b4d8; }

/* Animations (bump) */
@keyframes flashGlow{
  0%{ box-shadow:0 0 0 rgba(246,249,48,0); }
  35%{ box-shadow:0 0 26px rgba(246,249,48,.7),0 0 60px rgba(246,249,48,.25); }
  100%{ box-shadow:0 0 0 rgba(246,249,48,0); }
}
@keyframes jitter{
  0%,100%{ transform:translate3d(0,0,0); }
  20%{ transform:translate3d(-1px,1px,0); }
  40%{ transform:translate3d(1px,-1px,0); }
  60%{ transform:translate3d(-1px,0,0); }
  80%{ transform:translate3d(1px,0,0); }
}
.new-token{ animation: flashGlow 1200ms ease-out, jitter 600ms ease-in-out 2; }

/* ======================================================================
   Token details
====================================================================== */

.back{ margin-bottom:10px; }

.token-header{
  display:grid; grid-template-columns:100px 1fr; gap:14px; align-items:center;
}


.tok-avatar{
  width:100px; height:100px; border-radius:14px; border:1px solid var(--line); object-fit:cover;
}
.tok-line{ display:flex; gap:10px; align-items:center; flex-wrap:wrap; }
.tok-ticker{ background:#101425; border:1px solid var(--line); padding:6px 10px; border-radius:10px; font-weight:800; }
.tok-name{ font-weight:800; font-size:20px; }
.tok-desc{ color:#a9b4d8; margin:6px 0; }

.tok-metrics{ display:flex; gap:10px; align-items:center; }
.ca-chip{
  border:1px solid var(--line); background:#0e1428; color:#cbe2ff;
  padding:6px 10px; border-radius:999px; cursor:pointer; font-weight:800;
}
.ca-chip.copied{ box-shadow:0 0 18px rgba(0,242,255,.35) inset; }

.bond-wrap.big{ height:12px; border-radius:12px; }
.bonding-show{ display:flex; align-items:center; gap:10px; }
.bonding-percent{ font-weight:800; color:#cbeaff; }

.chart-card{ padding:0; }
.tv-host{ height:420px; }
#chart{ width:100%; display:block; }

/* Tabs (v2) */
.tabs2{ display:flex; gap:10px; margin:12px 0; }
.tab2-btn{
  flex:1; padding:10px; border-radius:12px; border:1px solid var(--line);
  background:#101425; color:#eaf2ff; font-weight:800; cursor:pointer;
}
.tab2-btn.active{
  background:linear-gradient(90deg, rgba(0,242,255,.18), rgba(255,0,80,.18));
  border-color:transparent;
}
.tab2-panel{ display:none; }
.tab2-panel.active{ display:block; }

/* Chat / Trades */
.chat-list{ display:flex; flex-direction:column; gap:10px; margin-bottom:10px; max-height:320px; overflow:auto; }
.chat-item{ display:flex; gap:10px; }
.chat-bubble{ background:#0f162e; border:1px solid var(--line); border-radius:12px; padding:10px 12px; flex:1; }
.chat-meta{ font-size:12px; color:#8ea0d8; margin-bottom:4px; }

.trades-table .thead,
.trades-table .tbody>div{
  display:grid; grid-template-columns:1.4fr .8fr 1fr 1fr .8fr .6fr;
  gap:10px; align-items:center;
}
.trades-table .thead{ padding:8px 10px; color:#8ea0d8; }
.trades-table .tbody>div{
  padding:10px; border:1px solid var(--line); border-radius:12px; background:#0f1428; margin-bottom:8px;
}
.trade-side.buy{ color:#baf8d5; font-weight:800; }
.trade-side.sell{ color:#ffb4c6; font-weight:800; }

/* Socials */
.socials{ display:flex; gap:10px; margin-top:8px; }
.soc-btn{
  display:inline-flex; align-items:center; justify-content:center;
  width:40px; height:40px; border:1px solid var(--line); border-radius:12px;
  background:#0f1428; color:#eaf2ff; text-decoration:none;
  transition:transform .15s ease, box-shadow .15s ease, border-color .15s ease;
}
.soc-btn img{ width:22px; height:22px; display:block; object-fit:contain; filter: drop-shadow(0 0 6px rgba(0,242,255,.25)); }
.soc-btn:hover{
  transform:translateY(-1px);
  box-shadow:0 0 16px rgba(0,242,255,.35), inset 0 0 0 1px rgba(0,242,255,.25);
  border-color:transparent;
}

/* ======================================================================
   Trades toolbar
====================================================================== */

.trades-toolbar{ display:flex; gap:10px; align-items:center; margin-bottom:12px; position:relative; }
.filter-chip,.size-chip{
  border:1px solid var(--line); background:#101425; color:#eaf2ff;
  border-radius:12px; padding:8px 12px; font-weight:800; cursor:pointer;
}
.size-chip{ background:#0c1a2e; }
#tradeFilterMenu{ position:absolute; top:44px; left:0; z-index:20; }
#tradeFilterMenu button{ display:block; width:140px; text-align:left; }

/* ======================================================================
   Modal
====================================================================== */

.modal{
  position:fixed; inset:0; background:rgba(0,0,0,.55);
  display:none; z-index:30; align-items:center; justify-content:center; padding:16px;
}
.modal.show{ display:flex; }
.modal-body{
  position:relative; width:min(560px, 92vw); background:#0f1220;
  border:1px solid var(--line); border-radius:18px; padding:18px;
  box-shadow:0 0 40px rgba(0,242,255,.08), 0 0 40px rgba(255,0,80,.06);
}
.modal-body.compact{ max-width:420px; padding:56px 16px 16px; }
.modal-close{
  position:absolute; right:12px; top:10px; background:#12162a; color:#cbd7ff;
  border:1px solid var(--line); width:56px; height:56px; border-radius:16px;
  font-size:1.6rem; line-height:1; cursor:pointer; display:flex; align-items:center; justify-content:center;
}

/* Brand row */
.modal-brand{
  display:flex; align-items:center; justify-content:center; gap:14px;
  margin:6px auto 18px; text-align:center;
}
.modal-brand img{
  width:96px; height:96px; border-radius:20px;
  filter: drop-shadow(0 0 18px rgba(0,242,255,.4)) drop-shadow(0 0 22px rgba(255,0,80,.25));
  animation: brandPulse 2.8s ease-in-out infinite;
}
.modal-brand-title{ font-weight:900; font-size:30px; letter-spacing:.3px; }
.modal-brand-title span{ color:var(--mg); }
@keyframes brandPulse{ 0%{transform:scale(1)} 50%{transform:scale(1.08)} 100%{transform:scale(1)} }

.modal-back{
  position:absolute; left:14px; top:14px; background:#101425; border:1px solid var(--line);
  color:#eaf2ff; width:44px; height:44px; border-radius:12px; font-size:20px; line-height:1;
  display:flex; align-items:center; justify-content:center; cursor:pointer;
}

/* Auth chooser */
.auth-grid{ display:flex; flex-direction:column; gap:16px; }
.auth-option{
  width:100%; display:flex; gap:16px; align-items:center;
  border:3px solid var(--line); background:#101425; color:#eaf2ff;
  border-radius:16px; padding:16px; cursor:pointer; font-weight:900;
  transition:transform .18s ease, border-color .2s ease; position:relative;
}
.auth-option:hover{ transform:translateY(-1px); border-color:#2a3a73; }
.auth-option img{ width:48px; height:48px; object-fit:contain; }

/* Wallets */
.wallets{ border:2px dashed #2a355d; border-radius:14px; padding:14px; }
.w-title{ font-weight:900; color:#9fb0e8; margin-bottom:12px; }
.w-row{ display:flex; gap:12px; }
.wallet-btn{
  flex:1; display:flex; gap:12px; align-items:center; justify-content:center;
  padding:14px; border:3px solid var(--line); border-radius:14px;
  background:#0f1428; color:#eaf2ff; cursor:pointer; font-weight:800;
  transition:transform .18s ease, border-color .2s ease;
}
.wallet-btn:hover{ transform:translateY(-1px); border-color:#2a3a73; }
.wallet-btn img{ width:42px; height:42px; object-fit:contain; }

/* Tabs (email) */
.tabs{ display:flex; gap:10px; margin-bottom:8px; }
.tab-btn{
  flex:1; padding:10px; border-radius:12px; border:1px solid var(--line);
  background:#101425; color:#eaf2ff; font-weight:800; cursor:pointer;
}
.tab-btn.active{
  background:linear-gradient(90deg, rgba(0,242,255,.18), rgba(255,0,80,.18));
  border-color:transparent;
}
.tab-panel{ display:none; }
.tab-panel.active{ display:block; }

/* ======================================================================
   Forms (Create Token)
====================================================================== */

.create-form{ display:block; }
.form-grid{
  display:grid; grid-template-columns:1fr 1fr; gap:12px;
}
.form-row{ display:flex; flex-direction:column; gap:6px; }
.form-row label{ font-size:13px; color:#9fb0e8; font-weight:800; }

.drop-wrap{ display:grid; grid-template-columns:1fr 1fr; gap:12px; }
.drop{
  border:1px dashed #2a355d; border-radius:14px; padding:16px;
  text-align:center; color:#9fb0e8; background:#0d1226; cursor:pointer;
  min-height:140px; display:flex; align-items:center; justify-content:center;
}
.drop.drag{ outline:2px dashed var(--cy); outline-offset:-6px; }
.drop.preview{ padding:0; }
.drop.preview img{
  display:block; width:100%; height:100%; object-fit:cover; border-radius:14px;
}

.actions-row{ display:flex; justify-content:flex-end; }

/* ======================================================================
   Footer
====================================================================== */

.site-footer{
  margin-top:40px; padding:20px; text-align:center;
  border-top:1px solid rgba(255,255,255,0.1); color:#aaa; font-size:14px;
}
.footer-links{ margin-bottom:10px; }
.footer-links a{
  margin:0 10px; color:#ccc; text-decoration:none; transition:color .3s;
}
.footer-links a:hover{ color:#ff0050; }

/* ======================================================================
   Bottom bar (mobile)
====================================================================== */

.bottom-bar{
  position:fixed; left:0; right:0; bottom:0; height:64px; z-index:6;
  background:rgba(10,12,20,.85); backdrop-filter:blur(8px);
  border-top:1px solid #12162a;
  display:none; align-items:center; justify-content:space-around; padding:10px;
}
.bottom-bar button{
  flex:1; margin:0 6px; padding:10px 12px; border-radius:12px;
  border:1px solid var(--line); background:#101425; color:var(--fg);
  font-weight:800; cursor:pointer;
}

/* ======================================================================
   Responsive
====================================================================== */

@media (max-width: 980px){
  .sidebar{ display:none; }
  .topbar{ margin-left:0; left:0; }
  #app{ margin-left:0; padding-bottom:84px; }
  .burger{ display:inline-flex; }
  .bottom-bar{ display:flex; }
  .carousel{ grid-auto-columns:minmax(240px, 70%); }
  .tok-avatar{ width:84px; height:84px; }
  .form-grid, .drop-wrap{ grid-template-columns:1fr; }
}

/* ======================================================================
   Utility fixes (menu artifacts)
====================================================================== */

/* Prevent overflow glows creating large “bars” around menus/cards */
/*.card, .menu, .sidebar, .topbar { isolation:isolate; }*/
.menu, .sidebar, .topbar { isolation:isolate; }

/* Ensure nav buttons don’t inherit unexpected display from browser styles */
nav .nav-btn { display:block; }


:root{
  --danger:#ff4d6d; /* rouge doux pour erreurs */
}

/* —— Notice modal —— */
.notice-wrap{display:flex; gap:12px; align-items:flex-start; margin-top:4px}
.notice-icon{
  flex:0 0 auto;
  width:56px; height:56px;
  border-radius:14px;
  display:flex; align-items:center; justify-content:center;
  border:1px solid var(--line);
  background:#0f1428;
  color:#fff;
  box-shadow: inset 0 0 24px rgba(0,0,0,.2);
}
.notice-icon.ok{
  border-color: rgba(59,224,132,.35);
  background: rgba(59,224,132,.12);
  color: var(--mint);
}
.notice-icon.err{
  border-color: rgba(255,77,109,.35);
  background: rgba(255,77,109,.12);
  color: var(--danger);
}
.notice-title{margin:4px 0 2px; font-size:20px; font-weight:900}
.notice-msg{margin:4px 0; color:#a9b4d8; line-height:1.55}
.notice-actions{margin-top:16px; display:flex; justify-content:flex-end; gap:10px}

/* option : modal-body un peu plus compacte ici */
.modal-body.compact .notice-title{font-size:20px}




/* === TikTok gradient border hover for token cards & trending cards === */
@keyframes tiktokBorderShift {
  0%   { background-position: 0% 50%; }
  100% { background-position: 100% 50%; }
}

/* Prépare une pseudo-bordure en gradient, invisible par défaut */
.token-card,
.carousel .card {
  position: relative;
  border-radius: 16px; /* assure le même rayon */
  overflow: hidden;    /* masque le débordement du ::before */
}

.token-card::before,
.carousel .card::before {
  content: "";
  position: absolute;
  inset: -1px;                  /* couvre la bordure */
  border-radius: 16px;
  padding: 5px;                 /* épaisseur de la bordure */
  background: linear-gradient(90deg, var(--cy), var(--mg));
  background-size: 200% 100%;
  -webkit-mask:
    linear-gradient(#000 0 0) content-box,
    linear-gradient(#000 0 0);
  -webkit-mask-composite: xor;
  mask-composite: exclude;      /* affiche seulement le “trait” */
  opacity: 0;
  transition: opacity .18s ease;
  pointer-events: none;
}

.token-card:hover::before,
.carousel .card:hover::before {
  opacity: 1;
  animation: tiktokBorderShift .8s linear infinite alternate;
}

/* Petit lift subtil au hover */
.token-card:hover {
  transform: translateY(-2px);
}
.carousel .card:hover {
  transform: translateY(-1px);
}





/* ===== Auth brand — centrage vertical exact + repères horizontaux réglables ===== */
:root{
  --brand-h: 100px;        /* hauteur de la zone brand */
  --brand-logo-left: 25%;  /* position horizontale du LOGO (centre du logo) */
  --brand-title-left: 37%; /* position horizontale du TEXTE (bord gauche du texte) */
  --brand-logo-vfix: 0px;  /* micro-ajustement vertical si ton PNG a du vide (±2px) */
}

.modal-body.compact { position: relative; }

/* Bande réservée au brand (empêche le contenu de remonter) */
.modal-brand{
  position: relative;
  height: var(--brand-h);
  margin: 6px auto 18px;
}

/* Remplace l’ancienne anim sur le logo par la version “fix” */
.modal-brand img{
  position: absolute;
  top: 50%;
  left: var(--brand-logo-left);
  transform: translate(-50%, calc(-50% + var(--brand-logo-vfix)));
  width: 96px;
  height: 96px;
  display: block;
  border-radius: 20px;
  animation: brandPulseFix 2.8s ease-in-out infinite; /* <- au lieu de brandPulse */
}

/* TITRE : même ligne (50%), ancré par son bord gauche au pourcentage choisi */
.modal-brand-title{
  position: absolute;
  top: 50%;
  left: var(--brand-title-left);
  transform: translateY(-50%);
  line-height: 1;          /* évite le “surplus” des métriques de police */
  white-space: nowrap;
  font-weight: 900;
  font-size: 30px;
  letter-spacing: .3px;
}

/* RWD: repli propre en très petit écran */
@media (max-width: 420px){
  .modal-brand{
    height: auto;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 14px;
    margin: 6px auto 18px;
  }
  .modal-brand img,
  .modal-brand-title{
    position: static;
    transform: none;
  }
}


/* Garder le translate (centrage) pendant l'animation du logo */
@keyframes brandPulseFix {
  0%   { transform: translate(-50%, calc(-50% + var(--brand-logo-vfix))) scale(1); }
  50%  { transform: translate(-50%, calc(-50% + var(--brand-logo-vfix))) scale(1.08); }
  100% { transform: translate(-50%, calc(-50% + var(--brand-logo-vfix))) scale(1); }
}

/* --- Animation mobile (scale only, ne modifie pas la position dans le flux) --- */
@keyframes brandPulseMobile {
  0%   { transform: scale(1); }
  50%  { transform: scale(1.08); }
  100% { transform: scale(1); }
}

/* Desktop par défaut */
.modal-brand img{
  animation: brandPulseFix 2.8s ease-in-out infinite;
}

/* Repli propre ≤420px */
@media (max-width: 420px){
  .modal-brand{
    height: auto;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 14px;
    margin: 6px auto 18px;
    text-align: center;
  }
  .modal-brand img,
  .modal-brand-title{
    position: static;
    transform: none;            /* pas de translate */
  }
  .modal-brand img{
    width: 84px; height: 84px;  /* option: un poil plus petit */
    animation: brandPulseMobile 2.8s ease-in-out infinite; /* scale only */
  }
}



/* === Sidebar menu improvements === */
.nav-btn {
  margin-bottom: 10px;       /* espace entre les onglets */
}

/* Dernier bouton sans marge en bas */
.nav-btn:last-child {
  margin-bottom: 0;
}

/* Bordure plus épaisse et visible au hover */
.nav-btn:hover {
  transform: translateY(-1px);
  border-width: 3px;         /* bordure plus épaisse */
  border-color: #2a3a73;     /* accentue la couleur au hover */
}


/* === Create Token button hover (bordure plus épaisse) === */
.create-top .nav-btn,
.create-top button {
  border-width: 1px; /* normal */
}

.create-top .nav-btn:hover,
.create-top button:hover {
  border-width: 2px;        /* bordure plus épaisse au hover */
  border-color: #2a3a73;    /* couleur accentuée comme les autres */
}


/* === Spacing in login/register form === */
.modal-body.compact .ui {
  margin-bottom: 14px;   /* espace entre les champs */
}

.modal-body.compact .ui:last-of-type {
  margin-bottom: 18px;   /* un peu plus avant le bouton */
}

.modal-body.compact .pill {
  margin-top: 6px;       /* espace entre dernier champ et le bouton */
}



/* === TikTok border hover for inputs & login button === */
@keyframes tiktokBorderShiftInput {
  0%   { background-position: 0% 50%; }
  100% { background-position: 100% 50%; }
}

/* Cible les champs et bouton dans la modale login/register */
.modal-body.compact .ui,
.modal-body.compact .pill {
  position: relative;
  border-radius: 12px;
  overflow: hidden;
  z-index: 1;
}

.modal-body.compact .ui::before,
.modal-body.compact .pill::before {
  content: "";
  position: absolute;
  inset: -2px;                 /* couvre tout + 2px */
  border-radius: 12px;
  padding: 3px;                /* épaisseur 3px */
  background: linear-gradient(90deg, var(--cy), var(--mg));
  background-size: 200% 100%;
  -webkit-mask:
    linear-gradient(#000 0 0) content-box,
    linear-gradient(#000 0 0);
  -webkit-mask-composite: xor;
  mask-composite: exclude;
  opacity: 0;
  transition: opacity .18s ease;
  pointer-events: none;
  z-index: 2;
}

.modal-body.compact .ui:hover::before,
.modal-body.compact .pill:hover::before {
  opacity: 1;
  animation: tiktokBorderShiftInput .8s linear infinite alternate;
}


/* === Create Token form spacing === */

/* Ajoute de l’espace entre label et champ */
.form-row label {
  margin-bottom: 6px;     /* espace sous le label */
  display: block;         /* force le label en bloc */
}

/* Ajoute de l’espace entre chaque .form-row */
.form-row {
  margin-bottom: 18px;    /* espace vertical entre lignes */
}

/* Espace supplémentaire entre blocs "drop" (images) */
.drop-wrap {
  margin-top: 18px;
  margin-bottom: 22px;
  gap: 18px;              /* espace horizontal plus large */
}

/* Espace avant le bouton final */
.actions-row {
  margin-top: 22px;
}



/* === Notifications pretty list === */
.notif-list{
  display:flex;
  flex-direction:column;
  gap:10px;
}

.notif-empty{
  padding:14px;
  color:#9fb0e8;
  background:#0f1428;
  border:1px solid var(--line);
  border-radius:12px;
}

/* item */
.notif-item{
  position:relative;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:12px;
  padding:12px 14px;
  background:#0f1428;
  border:1px solid var(--line);
  border-radius:12px;
  overflow:hidden;
}

/* gauche: icône + texte */
.ni-left{ display:flex; align-items:center; gap:12px; min-width:0; }
.ni-icon{
  width:36px; height:36px; flex:0 0 36px;
  display:flex; align-items:center; justify-content:center;
  border-radius:10px;
  background: linear-gradient(180deg, rgba(0,242,255,.1), rgba(255,0,80,.08));
  border:1px solid #22315a;
  box-shadow: inset 0 0 18px rgba(0,0,0,.25);
  font-size:18px;
}
.ni-text{
  color:#eaf2ff; line-height:1.4;
  white-space:nowrap; text-overflow:ellipsis; overflow:hidden;
}

/* droite: time */
.ni-time{ color:#8ea0d8; font-size:12px; flex:0 0 auto; }

/* TikTok gradient border hover (3px) */
@keyframes notifBorderShift {
  0%{ background-position: 0% 50%; }
  100%{ background-position: 100% 50%; }
}
.notif-item::before{
  content:"";
  position:absolute;
  inset:-1px;
  border-radius:12px;
  padding:3px; /* épaisseur */
  background:linear-gradient(90deg, var(--cy), var(--mg));
  background-size:200% 100%;
  -webkit-mask:
    linear-gradient(#000 0 0) content-box,
    linear-gradient(#000 0 0);
  -webkit-mask-composite: xor;
  mask-composite: exclude;
  opacity:0;
  transition:opacity .18s ease;
  pointer-events:none;
}
.notif-item:hover::before{
  opacity:1;
  animation: notifBorderShift .8s linear infinite alternate;
}
.notif-item:hover{ transform: translateY(-1px); }

/* petite pastille pulsante possible (option) */
.ni-icon.pulse::after{
  content:"";
  width:6px; height:6px; border-radius:999px; background:var(--mg);
  position:absolute; right:6px; bottom:6px;
  box-shadow:0 0 10px rgba(255,0,80,.6);
}


/* Uniformiser taille de texte Email et Tiktok dans auth modal */
.auth-option {
  font-size: 18px;        /* même taille pour tous les boutons */
  font-weight: 900;
}

/* Retirer le soulignement spécifique de Tiktok */
.auth-option a {
  text-decoration: none !important;
  color: inherit;         /* garde la couleur définie par le parent */
}


/* ================================
   Policy pages (TOS / Privacy)
================================ */

.policy-hero{
  max-width: 960px;
  margin: 24px auto 16px;
}
.policy-meta{ color:#9fb0e8; font-weight:800; }

.policy-grid{
  max-width: 960px;
  margin: 0 auto 40px;
  display: grid;
  grid-template-columns: 260px 1fr;
  gap: 16px;
}

.policy-toc{ position: sticky; top: 88px; height: fit-content; }
.policy-toc nav a{
  display:block; text-decoration:none; color:var(--fg);
  background:#101425; border:1px solid var(--line);
  border-radius:12px; padding:10px 12px; margin:0 0 8px 0; font-weight:700;
  transition:transform .15s ease;
}
.policy-toc nav a:hover{ transform: translateX(2px); }

/* TikTok gradient outline on hover (TOC) */
.policy-toc nav a{ position:relative; overflow:hidden; }
.policy-toc nav a::before{
  content:""; position:absolute; inset:-1px; border-radius:12px; padding:3px;
  background: linear-gradient(90deg, var(--cy), var(--mg)); background-size:200% 100%;
  -webkit-mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0);
  -webkit-mask-composite: xor; mask-composite: exclude; opacity:0; transition:opacity .18s ease;
  pointer-events:none;
}
.policy-toc nav a:hover::before{
  opacity:1; animation: tiktokBorderShift .8s linear infinite alternate;
}

.policy-content .section-card + .section-card{ margin-top: 12px; }
.policy-back{ margin-top: 16px; }

.policy-footer{
  max-width: 960px;
  margin: 0 auto 40px;
  text-align: center;
  color:#a9b4d8;
}

/* Responsive */
@media (max-width: 980px){
  .policy-grid{
    grid-template-columns: 1fr;
    gap: 12px;
  }
  .policy-toc{ position: static; }
}


/* Profile layout: champs à 30% + statut à droite */
.profile-row {
  display:flex; align-items:center; gap:12px; margin-bottom:12px;
}
.profile-row .label { width:140px; color:#9fb0e8; font-weight:800; }
.profile-row .field { flex:0 0 30%; max-width:30%; }
.profile-row .actions { margin-left:auto; display:flex; gap:8px; align-items:center; }

.status-chip{
  padding:6px 10px; border-radius:999px; font-weight:800; font-size:12px;
  border:1px solid rgba(59,224,132,.35); color:#baf8d5; background:rgba(59,224,132,.12);
}
.status-chip.err{
  border-color: rgba(255,77,109,.35); color:#ffb4c6; background: rgba(255,77,109,.12);
}
.btn-mini{
  padding:8px 10px; border-radius:10px; border:1px solid var(--line);
  background:#101425; color:#eaf2ff; font-weight:800; cursor:pointer;
}
.btn-mini:hover{ border-color:#2a3a73; transform: translateY(-1px); }

/* Wallet */
.wallet-secret{
  background:#0f162e; border:1px dashed #2a355d; border-radius:12px; padding:12px;
  color:#ffa9b5;
}
.wallet-grid{
  display:grid; grid-template-columns: 1fr; gap:12px;
}
@media (min-width: 720px){
  .wallet-grid{ grid-template-columns: 1fr 1fr; }
}

/* apparence code + exemple rouge */
code{
  background:#0f162e;
  border:1px solid var(--line);
  border-radius:6px;
  padding:2px 6px;
}

.tuto-cmd{
  color: var(--danger);     /* #ff4d6d déjà défini */
  font-weight: 900;
}


/* Profil – champs compacts avec pastille à côté */
.profile-row.inline {
  display: grid;
  grid-template-columns: 180px auto;
  align-items: center;
  gap: 10px 14px;
  margin: 10px 0;
}

.field-inline {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  flex-wrap: wrap;
}

.ui.readonly {
  width: auto;           /* important: ne pas prendre 100% */
  min-width: 16ch;       /* un peu de place par défaut */
  max-width: 100%;
  pointer-events: none;  /* lecture seule (visuel) */
  opacity: .9;
}

.status-chip { margin-left: 0; }
.status-chip.ok { background: rgba(39, 174, 96, .16); color: #8ff0b1; }

/* mini boutons déjà présents, au cas où */
.btn-mini {
  padding: 6px 10px;
  font-size: 12px;
  border-radius: 10px;
}

.wc-icons{
  display:inline-flex;
  gap:8px;
  margin-left:4px;
  vertical-align:middle;
}
.wc-ico{
  width:28px; height:28px;
  padding:4px;
  border-radius:8px;
  border:1px solid var(--line);
  background:#0f1428;
  cursor:pointer;
  transition:transform .15s ease, box-shadow .15s ease, border-color .15s ease;
}
.wc-ico:hover{
  transform: translateY(-1px);
  border-color:#2a3a73;
  box-shadow:0 0 12px rgba(0,242,255,.25);
}


:root{
  --warn:#FFA94D;              /* orange doux */
  --warn-bg:rgba(255,169,77,.12);
  --warn-bd:rgba(255,169,77,.35);
}

/* Pastille générique (vert déjà utilisé pour Confirmed chez toi) */
.status-chip{
  display:inline-flex;
  align-items:center;
  gap:6px;
  padding:6px 10px;
  border-radius:999px;
  font-size:12px;
  font-weight:800;
  border:1px solid var(--line);
  background:#0f1428;
  color:#eaf2ff;
}

/* Confirmed (vert) — tu l’avais déjà, on le garde */
.status-chip.ok{
  background:rgba(59,224,132,.12);
  color:#baf8d5;
  border-color:rgba(59,224,132,.35);
}

/* Verify (orange) */
.status-chip.warn{
  background:var(--warn-bg);
  color:#ffd8b0;
  border-color:var(--warn-bd);
  cursor:pointer;
  transition:transform .15s ease, box-shadow .15s ease, border-color .15s ease;
}
.status-chip.warn:hover{
  transform: translateY(-1px);
  box-shadow:0 0 12px rgba(255,169,77,.25);
  border-color:rgba(255,169,77,.55);
}

/* Option: inputs readonly un peu plus étroits en s’adaptant au contenu */
.ui.readonly[readonly]{
  width:auto;
  max-width:100%;
}

/* Centrer uniquement dans la modale TikTok */
#ttVerifyModal .notice-actions{
  display:flex;              /* au cas où */
  justify-content:center;    /* <- centré */
}


.wallet-summary {
  display:flex; align-items:center; justify-content:space-between;
  gap:16px; margin-bottom:12px;
}
.wallet-summary .ws-left .pk-line { display:flex; align-items:center; gap:8px; }
.wallet-summary .big { font-size:18px; font-weight:800; }
.wallet-summary .mono { font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", monospace; }
.copy-ico { width:16px; height:16px; opacity:.85; cursor:pointer; transition:transform .15s, opacity .15s, filter .15s; }
.copy-ico:hover { opacity:1; transform:translateY(-1px); filter: drop-shadow(0 0 6px rgba(0,242,255,.5)); }
.ws-actions { display:flex; gap:8px; }
.wallet-rows { display:grid; grid-template-columns:1fr 1fr; gap:12px; }
.wallet-col .col-title { font-weight:800; margin-bottom:8px; }

.list .item {
  display:flex; align-items:center; justify-content:space-between;
  border:1px solid var(--line); border-radius:12px;
  padding:10px 12px; margin-top:8px;
  background: linear-gradient(180deg, rgba(17,22,42,.55), rgba(11,14,27,.45));
}
.list .item.hoverable:hover {
  box-shadow: 0 0 0 1px rgba(0,242,255,.18), 0 10px 28px rgba(0,0,0,.35);
  transform: translateY(-1px);
}
.list .item .left { display:flex; gap:10px; align-items:center; }
.tok-ico { width:28px; height:28px; border-radius:50%; box-shadow: 0 0 12px rgba(0,242,255,.15); }
.tok-main .tok-amt { font-weight:800; }
.tok-main .tok-ca { display:flex; align-items:center; gap:6px; font-size:12px; color:#a9b4d8; }

.list .item .right { text-align:right; }
.tok-usd { font-weight:800; }
.chg { font-size:12px; margin-top:2px; }
.chg.pos { color:#46e1a5; }
.chg.neg { color:#ff6b7a; }

@media (max-width: 860px){
  .wallet-rows { grid-template-columns: 1fr; }
  .wallet-summary { flex-direction:column; align-items:flex-start; }
  .ws-actions { align-self:stretch; justify-content:flex-start; }
}

.tok-title { font-weight:800; line-height:1.2 }
.tok-sym { margin-right:6px; padding:2px 8px; border-radius:999px; font-size:12px; font-weight:800;
  background: linear-gradient(90deg, rgba(0,242,255,.12), rgba(255,0,80,.12)); }
.tok-name { color:#cfe2ff; opacity:.9; margin-left:2px; }
.tok-sub { display:flex; align-items:center; gap:8px; color:#a9b4d8; font-size:12px; margin-top:2px; }
.soc-wrap { display:inline-flex; gap:6px; margin-left:4px; }
.soc.small img { width:14px; height:14px; opacity:.85; transition:opacity .15s, transform .15s, filter .15s; }
.soc.small img:hover { opacity:1; transform:translateY(-1px); filter: drop-shadow(0 0 6px rgba(0,242,255,.5)); }


/* ===== My Wallet — Solana glow ========================================= */

.card.glow {
  position: relative;
  border: 1px solid rgba(90,110,200,.18);
  background: radial-gradient(120% 120% at 10% -10%,
              rgba(0,242,255,.06) 0%, rgba(255,0,80,.04) 40%, rgba(12,14,28,.6) 100%),
              linear-gradient(180deg, rgba(18,22,42,.75), rgba(11,14,27,.75));
  box-shadow:
    0 0 0 1px rgba(120,140,255,.06) inset,
    0 10px 30px rgba(0,0,0,.35);
  border-radius: 16px;
}

.wallet-top {
  padding: 18px 20px;
  display: grid;
  grid-template-columns: 1fr auto auto;
  gap: 18px;
  align-items: center;
}

.wl-block .wl-label {
  color: #95a1c8;
  font-size: 12px;
  letter-spacing:.2px;
  margin-bottom: 6px;
}

.wl-key {
  font-weight: 800;
  font-size: 20px;
  letter-spacing: .2px;
  display: inline-flex; align-items: center; gap: 8px;
}

.wl-key .copy-ico { width:16px; height:16px; opacity:.7; cursor:pointer; }
.wl-key .copy-ico:hover { opacity:1; transform: translateY(-1px); }

.wl-balance {
  display: flex; align-items: center; gap: 10px;
}

.sol-ico {
  width: 28px; height: 28px; border-radius: 8px;
  filter: drop-shadow(0 0 10px rgba(0,242,255,.25));
}

.wl-sol {
  font-weight: 900;
  font-size: 28px;           /* >>> plus grand */
  letter-spacing: .2px;
}

.wl-usd {
  color: #9fb0e8;
  margin-top: 2px;
  text-align: right;
}

.wl-actions {
  display:flex; gap:10px; justify-content:flex-end; align-items:center;
}

.pill.ghost {
  background: rgba(255,255,255,.04);
  border: 1px solid rgba(160,180,255,.15);
}
.pill.ghost:hover { background: rgba(255,255,255,.06); }

.wallet-split {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 16px;
  margin-top: 16px;
}

.wallet-col { padding: 14px; }

.section-title {
  font-weight: 800;
  margin: 4px 0 10px;
}

/* positions list (hover glow) */
.item.hoverable {
  border: 1px solid rgba(120,140,255,.10);
  background: radial-gradient(120% 120% at 0% 0%, rgba(0,242,255,.05) 0%, rgba(255,0,80,.03) 40%, rgba(12,14,28,.35) 100%),
              rgba(12,14,28,.35);
  border-radius: 14px;
  padding: 12px;
  display:flex; align-items:center; justify-content:space-between;
  transition: transform .12s ease, box-shadow .12s ease, border-color .12s ease;
}
.item.hoverable + .item.hoverable { margin-top: 10px; }

.item.hoverable:hover {
  transform: translateY(-1px);
  border-color: rgba(120,140,255,.25);
  box-shadow: 0 6px 20px rgba(0,0,0,.35), 0 0 22px rgba(0,242,255,.08);
}

.item .left { display:flex; gap:12px; align-items:center; }
.tok-ico { width:34px; height:34px; border-radius:10px; object-fit:cover; }
.tok-title { font-weight: 900; font-size: 17px; }
.tok-sub { color:#9fb0e8; display:flex; gap:12px; align-items:center; flex-wrap:wrap; }
.tok-ca.mono { font-variant-numeric: tabular-nums; }
.soc.small img { width:14px; height:14px; opacity:.8; }
.soc.small img:hover { opacity:1; }
.item .right { text-align:right; }
.tok-usd { font-weight:900; }
.chg.pos { color:#5af59d; }
.chg.neg { color:#ff6b7d; }

/* responsive */
@media (max-width: 960px){
  .wallet-top { grid-template-columns: 1fr; gap: 12px; }
  .wl-key { font-size: 18px; }
  .wl-sol { font-size: 24px; }
  .wallet-split { grid-template-columns: 1fr; }
}


/* Regrouper clé + balance à gauche */
.wallet-top { grid-template-columns: 1fr auto; }   /* 2 colonnes: left + actions */
.ws-left { display:flex; align-items:center; gap:18px; flex-wrap:wrap; }

/* Balance look */
.wl-balance { display:flex; align-items:center; gap:10px; margin-top:4px; }
.sol-ico { width:36px; height:36px; border-radius:10px;
  filter: drop-shadow(0 0 10px rgba(0,242,255,.30)); }
.wl-sol {
  font-weight:900;
  font-size:34px;                 /* plus grand */
  color: var(--mint);             /* vert */
  text-shadow:
    0 0 12px rgba(59,224,132,.45),
    0 0 28px rgba(59,224,132,.18); /* glow doux */
}
@media (max-width:960px){
  .wallet-top { grid-template-columns: 1fr; }
}


/* bloc de gauche = PK + balance en ligne, centré verticalement */
.ws-left { display:flex; align-items:center; gap:18px; flex-wrap:wrap; }

/* balance en UNE ligne : icône + SOL + USD */
.wl-balance {
  display:flex;
  align-items:center;
  gap:12px;              /* espace entre icône et SOL */
}

.sol-ico {
  width:36px; height:36px; border-radius:10px;
  filter: drop-shadow(0 0 10px rgba(0,242,255,.30));
}

.wl-sol{
  font-weight:900;
  font-size:34px;
  color:var(--mint);
  letter-spacing:.2px;
  text-shadow:0 0 12px rgba(59,224,132,.45), 0 0 28px rgba(59,224,132,.18);
  line-height:1;         /* pour rester bien centré */
}

.wl-usd{
  margin-left:4px;       /* léger espace après SOL */
  font-weight:800;
  color:#9fb0e8;
  line-height:1;         /* même baseline que wl-sol */
  opacity:.95;
}


/* Auto Create layout */
.am-wrap{
  display:grid;
  grid-template-columns: 280px 1fr;
  gap:14px;
}
.am-media .thumb-vert{
  background:#0f1428; border:1px solid var(--line);
}
#am_media video, #am_media img{
  width:100%; height:100%; object-fit:cover; display:block;
}
#am_logo{
  display:flex; align-items:center; justify-content:center; padding:0;
}
#am_logo img{ width:100%; height:100%; object-fit:cover; border-radius:14px; display:block; }
@media (max-width: 860px){
  .am-wrap{ grid-template-columns: 1fr; }
}


/* Bouton son sur la vidéo du panneau gauche */
.sound-toggle{
  position:absolute; right:8px; bottom:8px;
  border:1px solid var(--line); background:#0b0f1f;
  padding:6px 8px; border-radius:10px; font-weight:700;
  opacity:.85; cursor:pointer;
}
.thumb-vert{ position:relative; }


/* Fine-tuning Tuto modal spacing */
#tutoModal .modal-body{
  /* moins d'espace à gauche que droite */
  padding: 18px 22px 20px 12px; /* top right bottom left */
}

/* Si tu veux ré-élargir un peu sur écrans ≥640px */
@media (min-width:640px){
  #tutoModal .modal-body{
    padding: 22px 28px 24px 16px;
  }
}


/* Splashscreen */
#splash {
  position: fixed;
  inset: 0;
  background: #0b0f1f;
  display: flex;
  justify-content: center;
  align-items: center;
  z-index: 99999;
}

.splash-inner {
  text-align: center;
  color: #fff;
  font-family: 'Inter', sans-serif;
}

.splash-logo {
  width: 120px;
  height: auto;
  margin-bottom: 20px;
}

.splash-title {
  font-size: 2rem;
  font-weight: 800;
  margin-bottom: 20px;
}

#splash .pill {
  margin-top: 20px;
}


.badge {
  display: inline-block;
  padding: 2px 8px;
  border-radius: 8px;
  font-size: 12px;
  font-weight: 600;
  text-transform: lowercase;
}

.badge.dev {
  background: #1e5631;   /* vert foncé */
  color: #fff;
}

.badge.creator {
  background: linear-gradient(90deg, #ff9e2c, #ff5c00);
  color: #fff;
  box-shadow: 0 0 6px rgba(255, 100, 0, 0.7);
}

.badge {
  display:inline-block;
  padding:2px 8px;
  border-radius:8px;
  font-size:12px;
  font-weight:700;
  text-transform:lowercase;
  line-height:1.6;
}

/* déjà présent chez toi, je laisse ici pour contexte */
.badge.dev{
  background:#1e5631;      /* vert */
  color:#fff;
}

/* >>> nouveau badge creator (orange) */
.badge.creator{
  background:linear-gradient(90deg,#ff9e2c,#ff5c00);
  color:#fff;
  box-shadow:0 0 6px rgba(255,100,0,.55);
}

/* Badge "creator" orange */
.status-chip.creator{
  background: linear-gradient(90deg,#ff9e2c,#ff5c00);
  color:#fff;
  border:0;
  box-shadow:0 0 6px rgba(255,100,0,.5);
}

/* ---- Wallet > Ownerships : hover TikTok ---- */
.wallet-col .item.hoverable{
  position: relative;
  border:1px solid var(--line);
  border-radius:16px;
  cursor:pointer;
}
.wallet-col .item.hoverable::before{
  content:"";
  position:absolute;
  inset:-1px;                 /* couvre la bordure */
  border-radius:inherit;
  padding:1px;                /* épaisseur du liseré */
  background:linear-gradient(90deg,#00f2ff,#ff0050);
  -webkit-mask:
    linear-gradient(#000 0 0) content-box,
    linear-gradient(#000 0 0);
  -webkit-mask-composite: xor;
  mask-composite: exclude;    /* troue le centre */
  opacity:0;
  transition:opacity .18s ease, transform .18s ease;
  pointer-events:none;
}
.wallet-col .item.hoverable:hover::before{
  opacity:1;
}
.wallet-col .item.hoverable:active{ transform: translateY(1px); }


/* ---------- Token topbar ---------- */
.tok-topbar{
  display:grid;
  grid-template-columns: 1fr;
  gap:10px;
  margin-top:8px;
}
@media(min-width:1100px){
  .tok-topbar{ grid-template-columns: 1.2fr 1fr 1fr; }
}
.tok-topcard{
  background:var(--card);
  border:1px solid var(--line);
  border-radius:12px;
  padding:10px;
  display:flex;
  gap:10px;
  align-items:center;
}
.tok-topcard .title{ font-weight:800; }
.tok-topcard .sub{ color:#9bb0d3; font-size:12px; }
.tok-topcard .kv{ display:flex; gap:12px; flex-wrap:wrap; align-items:center; }
.tok-topcard .chip{ padding:4px 8px; border:1px solid var(--line); border-radius:999px; font-size:12px; }
.tok-topcard .chip.ok{ border-color:#1f6f3a; background:rgba(38,162,105,.1); color:#9ff0c8; }
.tok-topcard .chip.warn{ border-color:#7a4b12; background:rgba(255,170,68,.1); color:#ffd7a0; }

/* socials (un peu plus grands) */
.soc-lg{ display:inline-flex; gap:8px; align-items:center }
.soc-lg img{ width:22px; height:22px; filter:drop-shadow(0 0 0 transparent); opacity:.95 }
.soc-lg a{ display:inline-flex; border:1px solid var(--line); border-radius:10px; padding:6px; }
.soc-lg a:hover{ transform:translateY(-1px); }

/* tiny avatar pour Dev */
.dev-ava{ width:32px; height:32px; border-radius:50%; border:1px solid var(--line); object-fit:cover }

/* CA chip — gray background, no default button styles */
.tok-id .ca-box{
  display:inline-flex; align-items:center; gap:8px;
  padding:6px 10px; border-radius:10px;
  border:1px dashed var(--line);
  background:#12172b;                 /* ← gray/dark pill */
  color:#eaf2ff;
  cursor:pointer; user-select:none;

  appearance:none; -webkit-appearance:none; /* kill white default */
  outline:none;
}
.tok-id .ca-box img{ width:16px; height:16px; opacity:.85 }
.tok-id .ca-box:hover img{ opacity:1 }
.tok-id .ca-box:active{ transform:translateY(1px) }
.tok-id .ca-box.copied{ box-shadow:0 0 0 1px rgba(0,242,255,.35) inset }
.tok-id .ca-box .mono{
  font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, "Liberation Mono", monospace;
}

/* Icônes dans les "chips" (Dev/Creator) */
.tok-topbar .chip{
  display:inline-flex; align-items:center; gap:6px;
}
.tok-topbar .chip img{
  width:14px; height:14px; object-fit:contain; flex:0 0 auto;
}

/* Icônes rangée "soc-lg" (site / X / TG / TikTok) */
.soc-lg img{
  width:20px; height:20px; object-fit:contain; display:inline-block;
}

.msg { display:flex; gap:10px; padding:10px 0; border-bottom:1px solid #151826; }
.msg .ava { width:28px; height:28px; border-radius:50%; object-fit:cover; }
.msg .b { flex:1; }
.like-btn{
  display:inline-flex; align-items:center; gap:6px;
  border:1px solid #2a2f44; background:transparent; color:#cfd7ff;
  border-radius:999px; padding:4px 8px; font:600 12px/1 Inter,system-ui;
  opacity:.85; transition:transform .05s ease;
}
.like-btn .heart{ font-size:14px; transform: translateY(-1px); }
.like-btn:hover{ opacity:1; }
.like-btn:active{ transform: scale(0.98); }
.like-btn.liked .heart{ color:#ff3b4a; }



.chat-item{
  display:flex;
  align-items:flex-start; /* 🔥 aligne en haut */
  gap:10px;
}
.chat-pic{
  width:40px;
  height:40px;
  border-radius:50%;
  margin-top:2px; /* 🔥 petit décalage pour être flush avec le @username */
}
.chat-bubble{
  flex:1;
}

/* ========= Buttons (style "pill" sombre, peu saturé) ========= */
.btn{
  --ring: rgba(157,220,255,.18);
  --bd: rgba(157,220,255,.12);
  padding:.38rem .9rem;
  border-radius:999px;
  font-weight:800;
  font-size:.78rem;
  line-height:1;
  border:1px solid var(--bd);
  background:linear-gradient(180deg,#141a2a,#0e1424);
  color:#eaf2ff;
  white-space:nowrap;
  transition:transform .12s ease, box-shadow .12s ease, opacity .12s ease, border-color .12s ease;
}
.btn:hover{ transform:translateY(-1px); box-shadow:0 0 0 6px var(--ring); }
.btn:focus-visible{ outline:none; box-shadow:0 0 0 6px var(--ring); }

/* Variantes (désaturées) */
.btn--buy{  background:linear-gradient(180deg,#183224,#0f2418); color:#c9ffe0; }
.btn--sell{ background:linear-gradient(180deg,#2d1b21,#22141a); color:#ffd7d7; }

.btn--edit{     background:linear-gradient(180deg,#192546,#131e3a); }
.btn--burn{     background:linear-gradient(180deg,#2f201a,#241812); }
.btn--dist{     background:linear-gradient(180deg,#221b3b,#1b1630); }
.btn--withdraw{ background:linear-gradient(180deg,#1e2231,#161b28); }

/* ========= Wallet rows (layout robuste + hover épais) ========= */
.wallet-row{
  display:grid;
  grid-template-columns: 1fr max-content max-content;  /* left | buttons | right($/%) */
  align-items:center;
  gap:12px;
  padding:12px 14px;
  border-radius:14px;
  background:linear-gradient(180deg,rgba(12,14,27,.65),rgba(9,11,22,.65));
  border:1px solid rgba(155,175,240,.10);
  cursor:pointer;
  position:relative;
  transition: box-shadow .15s ease, border-color .15s ease, transform .12s ease;
}
.wallet-row:hover{
  border-color:rgba(155,175,240,.22);
  box-shadow:0 0 0 3px rgba(157,220,255,.18), inset 0 0 0 1px rgba(157,220,255,.10);
  transform:translateY(-1px);
}

/* Ownership: pas de bloc valeur à droite */
.wallet-row.own{ grid-template-columns: 1fr max-content; }

/* Sous-blocs */
.wl-left{ display:flex; gap:10px; align-items:center; min-width:0; }
.wl-right{ display:flex; flex-direction:column; gap:4px; align-items:flex-end; }
.wl-mid, .own-actions{ display:flex; gap:8px; flex-wrap:wrap; justify-self:start; }

.tok-ico{ width:34px; height:34px; border-radius:9px; object-fit:cover; }
.tok-title{ font-weight:800; font-size:.95rem; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.tok-sub{ color:#9fb0e8; font-size:.78rem; display:flex; gap:10px; align-items:center; }
.copy-ico{ width:14px; opacity:.75; cursor:pointer; }
.copy-ico:hover{ opacity:1; }

/* Les boutons n’occupent que la place du texte */
.wl-mid .btn, .own-actions .btn{ flex:0 0 auto; width:auto; }

/* ========= Responsive ========= */
/* “moyen” : les boutons passent sous le bloc gauche si ça serre */
@media (max-width:1100px){
  .wallet-row{ grid-template-columns: minmax(260px,1fr) max-content; grid-auto-flow:row; }
  .wallet-row.own{ grid-template-columns: 1fr; }
  .wl-right{ align-items:flex-start; text-align:left; }
  .wl-mid, .own-actions{ order:2; }
  .wl-right{ order:3; }
}

/* Petit écran : tout s’empile en 1 colonne */
@media (max-width:560px){
  .wallet-row{ grid-template-columns:1fr; }
  .wl-mid, .own-actions{ justify-self:stretch; }
  .wl-right{ align-items:flex-start; text-align:left; }
}

/* ========= Badge mini (DEV/CREATOR) ========= */
.pill-mini{
  display:inline-flex; align-items:center; gap:6px;
  padding:2px 8px;
  font-size:.70rem; font-weight:800; letter-spacing:.3px;
  border-radius:999px;
  border:1px solid rgba(157,220,255,.18);
  background:linear-gradient(90deg,rgba(0,242,255,.12),rgba(255,0,80,.10));
  color:#eaf2ff;
}
.pill-mini::before{ content:''; width:6px; height:6px; border-radius:50%; background:#00f2ff; box-shadow:0 0 6px rgba(0,242,255,.9); }
.pill-mini.dev{ background:linear-gradient(180deg,#153223,#0f2418); color:#bafbdc; border-color:rgba(110,231,183,.28); }


/* ====== Fix layout 981–~1240px (sidebar visible mais espace serré) ====== */
@media (min-width: 981px) and (max-width: 1240px){
  /* Le split (My positions / Ownerships) passe en 1 colonne */
  .wallet-split{ grid-template-columns: 1fr; }

  /* Le header du wallet (PK + solde + actions) passe aussi en 1 colonne */
  .wallet-top{ grid-template-columns: 1fr; gap: 12px; }

  /* Les lignes cliquables (positions/ownerships) empilent les blocs :
     gauche, puis boutons, puis valeurs à droite s’il y en a */
  .wallet-row{
    grid-template-columns: 1fr;
    grid-auto-flow: row;
  }
  .wl-right{ align-items: flex-start; text-align: left; }
}

/* Garde le comportement “moyen” cohérent sur grand écran étroit */
@media (max-width: 1100px){
  .wallet-row{
    grid-template-columns: minmax(260px,1fr) max-content;
    grid-auto-flow: row;
  }
  .wallet-row.own{ grid-template-columns: 1fr; }
}


/* --- 1) Wallet rows : laisser rétrécir la colonne gauche + garder les boutons sur une seule ligne --- */
.wallet-row{
  /* la colonne gauche peut rétrécir (ellipsis), et les colonnes boutons/valeurs prennent juste la place nécessaire */
  grid-template-columns: minmax(0,1fr) max-content max-content;
}
.wallet-row.own{
  grid-template-columns: minmax(0,1fr) max-content; /* Ownership = pas de bloc valeur à droite */
}

/* le bloc gauche a le droit de rétrécir */
.wl-left{ min-width:0; }
.wl-left .tok-title{ min-width:0; overflow:hidden; text-overflow:ellipsis; }

/* par défaut : les boutons NE se wrap pas (comportement desktop) */
.wl-mid, .own-actions{ flex-wrap:nowrap; }

/* quand l’espace devient serré, on autorise le wrap et on passe les boutons sous le bloc gauche */
@media (max-width: 1100px){
  .wl-mid, .own-actions{ flex-wrap:wrap; }
  .wallet-row{
    grid-template-columns: minmax(240px,1fr) max-content; 
    grid-auto-flow: row;
  }
  .wallet-row.own{ grid-template-columns: 1fr; }
  .wl-right{ align-items:flex-start; text-align:left; }
  .wl-mid, .own-actions{ order:2; }
  .wl-right{ order:3; }
}

/* empilement total en très petit */
@media (max-width: 560px){
  .wallet-row{ grid-template-columns: 1fr; }
  .wl-mid, .own-actions{ justify-self:stretch; }
  .wl-right{ align-items:flex-start; text-align:left; }
}

/* Donner un peu plus d’air à la grille principale quand la sidebar est affichée mais que la largeur est moyenne */
@media (min-width: 981px) and (max-width: 1320px){
  .wallet-split{ grid-template-columns: 1fr; }      /* My positions / Ownerships l’un sous l’autre */
  .wallet-top{ grid-template-columns: 1fr; gap:12px; } /* Header wallet en une colonne */
}


/* --- 2) Anciennes tuiles .item.hoverable (liste “My positions”) : stack propre en mobile --- */
.wallet-col .item{ flex-wrap:wrap; }
@media (max-width: 560px){
  .wallet-col .item{
    flex-direction: column; 
    align-items: flex-start;     /* tout à gauche */
    gap: 10px;
  }
  .wallet-col .item .right{ text-align: left; }     /* $ et % à gauche aussi */
  /* si un bouton (ex. BUY) est dans la tuile, il se comporte comme un petit pill inline */
  .wallet-col .item .pill,
  .wallet-col .item .btn{
    width: auto;
    flex: 0 0 auto;
  }
}

/* --- petits détails pour éviter les “sauts” --- */
.own-actions .btn, .wl-mid .btn{
  width: auto;                    /* les 6 boutons habillent juste le texte */
  white-space: nowrap;
  padding: .38rem .9rem;
}



/* ===== TikTok gradient ring (reusable) ===== */
@keyframes tiktokShift { 
  0%{ background-position: 0% 50%; } 
  100%{ background-position: 200% 50%; } 
}

/* Helper: draw only the ring via masks */
.gradient-ring::after{
  content:"";
  position:absolute; inset: -2px;            /* start slightly outside */
  border-radius: inherit;
  background: linear-gradient(90deg,#00f2ff,#ff0050,#00f2ff);
  background-size: 200% 100%;
  padding: 2px;                               /* ring thickness (rest is masked out) */
  -webkit-mask: 
    linear-gradient(#000 0 0) content-box, 
    linear-gradient(#000 0 0); 
  -webkit-mask-composite: xor;
          mask-composite: exclude;
  opacity: 0; filter: blur(.2px);
  pointer-events: none;                       /* never block clicks */
  transition: opacity .18s ease, padding .18s ease, filter .18s ease;
  z-index: 0;
}

/* ===== Sections (My positions / Ownerships) ===== */
.wallet-col.card.glow{
  position: relative;
  border-radius: 14px;
  cursor: pointer;                            /* “click mode” on section */
}
.wallet-col.card.glow.gradient-ring:hover::after{
  opacity: 1;
  padding: 4px;                               /* thicker on hover */
  filter: blur(.0px);
  animation: tiktokShift 3s linear infinite;
}

/* Add the helper class to the section cards */
.wallet-col.card.glow{ /* if you can't edit HTML, use :where() to auto-apply */
  /* nothing else needed; we auto-apply ring below */
}
.wallet-col.card.glow{ /* auto-apply gradient ring */
  /* in case you prefer not touching HTML: */
}
.wallet-col.card.glow{ /* ensure it has the ring */
}
.wallet-col.card.glow.gradient-ring::after{}
/* If you can't add the .gradient-ring class in HTML, simply replace the 2 selectors above with:
   .wallet-col.card.glow::after and .wallet-col.card.glow:hover::after
*/

/* ===== Rows inside sections ===== */
.wallet-row{
  position: relative;
  z-index: 1;                                 /* above the ring */
  cursor: pointer;
}
.wallet-row::after{
  content:"";
  position:absolute; inset:-1px; border-radius:14px;
  background: linear-gradient(90deg,#00f2ff,#ff0050,#00f2ff);
  background-size: 200% 100%;
  padding: 0; opacity:0; pointer-events:none;
  -webkit-mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0);
  -webkit-mask-composite: xor; mask-composite: exclude;
  transition: opacity .18s ease, padding .18s ease;
}
.wallet-row:hover::after{
  opacity: 1;
  padding: 3px;                               /* “thick” ring on hover */
  animation: tiktokShift 3s linear infinite;
}

/* ===== Buttons (BUY / SELL / actions) with animated gradient border ===== */
.btn{
  cursor: pointer;
  border: 2px solid transparent;              /* we’ll paint the border with bg */
  background:
    linear-gradient(180deg,#141a2a,#0e1424) padding-box,
    linear-gradient(90deg,#00f2ff,#ff0050,#00f2ff) border-box;
  background-size: 100% 100%, 200% 100%;
  transition: transform .12s ease, box-shadow .12s ease, background-position .35s ease;
}
.btn:hover{
  transform: translateY(-1px);
  background-position: 0 0, 100% 0;          /* slide the gradient */
  box-shadow: 0 0 0 6px rgba(0,242,255,.12);
}

/* Keep your buy/sell color fills but with the gradient border above */
.btn--buy{
  background:
    linear-gradient(180deg,#183224,#0f2418) padding-box,
    linear-gradient(90deg,#00f2ff,#ff0050,#00f2ff) border-box;
}
.btn--sell{
  background:
    linear-gradient(180deg,#2d1b21,#22141a) padding-box,
    linear-gradient(90deg,#00f2ff,#ff0050,#00f2ff) border-box;
}

/* Optional: strengthen the little “pill-mini” dev badge outline on hover */
.pill-mini{
  cursor: default;
  transition: box-shadow .15s ease, border-color .15s ease;
}
.pill-mini:hover{
  border-color: rgba(0,242,255,.35);
  box-shadow: 0 0 0 3px rgba(0,242,255,.12);
}



/* ===== reuse animation ===== */
@keyframes tiktokShift { 
  0%{ background-position: 0% 50%; } 
  100%{ background-position: 200% 50%; } 
}

/* ===== Wallet top card (PK + balance + actions) ===== */
.wallet-top.card.glow{
  position: relative;
  border-radius: 14px;
  cursor: pointer;                     /* click-mode on the whole header card */
}
.wallet-top.card.glow::after{
  content:"";
  position:absolute; inset:-2px;
  border-radius: inherit;
  background: linear-gradient(90deg,#00f2ff,#ff0050,#00f2ff);
  background-size: 200% 100%;
  padding: 0; opacity: 0; pointer-events:none;
  -webkit-mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0);
  -webkit-mask-composite: xor; mask-composite: exclude;
  transition: opacity .18s ease, padding .18s ease, filter .18s ease;
  filter: blur(.2px);
  z-index: 0;
}
.wallet-top.card.glow:hover::after{
  opacity: 1;
  padding: 4px;                        /* thick ring */
  filter: blur(0);
  animation: tiktokShift 3s linear infinite;
}

/* keep inner content above the ring */
.wallet-top .ws-left,
.wallet-top .wl-actions{ position: relative; z-index: 1; }

/* ===== Wallet action buttons (pill → animated gradient border) ===== */
.wl-actions .pill{
  cursor: pointer;
  border: 2px solid transparent;
  background:
    linear-gradient(180deg,#141a2a,#0e1424) padding-box,
    linear-gradient(90deg,#00f2ff,#ff0050,#00f2ff) border-box;
  background-size: 100% 100%, 200% 100%;
  transition: transform .12s ease, box-shadow .12s ease, background-position .35s ease;
}
.wl-actions .pill:hover{
  transform: translateY(-1px);
  background-position: 0 0, 100% 0;    /* slide the gradient on hover */
  box-shadow: 0 0 0 6px rgba(0,242,255,.12);
}

/* optional: subtle variants to keep your ghost/neon feel */
.wl-actions .pill.ghost{
  background:
    linear-gradient(180deg,#101623,#0b1120) padding-box,
    linear-gradient(90deg,#00f2ff,#ff0050,#00f2ff) border-box;
}
.wl-actions .pill.neon{
  background:
    linear-gradient(180deg,#12282a,#0d1f24) padding-box,
    linear-gradient(90deg,#00f2ff,#ff0050,#00f2ff) border-box;
}

/* cursors for bits inside the header */
#copyPub{ cursor: pointer; }
.wl-key{ cursor: default; }  /* keep text non-clicky; copy icon does the job */
.wl-balance .wl-sol, .wl-balance .wl-usd{ cursor: default; }


/* ==== Withdraw layout tweaks ==== */
#wdModal .tm-field { display:flex; flex-direction:column; gap:10px; }

/* Les boutons % passent sous le champ en grille 4 colonnes */
#wdModal .tm-tabs,
#wd_tabs{
  display:grid;
  grid-template-columns: repeat(4, minmax(0,1fr));
  gap:8px;
  margin-top:4px;
}
#wdModal .tm-tabs button,
#wd_tabs button{ width:100%; }

/* Pastille verte de validation d'adresse */
.ok-dot{
  position:absolute;
  right:10px; top:50%; transform:translateY(-50%);
  width:14px; height:14px; border-radius:999px;
  background:linear-gradient(180deg,#27d17f,#17a85f);
  box-shadow:0 0 0 2px rgba(0,0,0,.35), 0 0 8px rgba(39,209,127,.5);
}
#wd_dest.ok{ padding-right:32px; } /* laisse la place à la pastille */

/* Withdraw CTA – modern dark neon green */
#wd_cta,
#wd_cta.wd-cta-green {
  background: linear-gradient(180deg, #123820, #0d2918); /* vert foncé élégant */
  border: 1px solid rgba(80, 255, 160, 0.25);
  color: #baf8d5;
  font-weight: 900;
  text-shadow: 0 0 8px rgba(80, 255, 160, .5);
  box-shadow:
    0 0 0 1px rgba(80, 255, 160, .25) inset,
    0 0 18px rgba(80, 255, 160, .25),
    0 0 32px rgba(80, 255, 160, .15);
  transition: all .2s ease;
}

#wd_cta:hover {
  border-color: rgba(80, 255, 160, .45);
  color: #dfffe9;
  box-shadow:
    0 0 0 1px rgba(80, 255, 160, .35) inset,
    0 0 22px rgba(80, 255, 160, .35),
    0 0 36px rgba(80, 255, 160, .25);
  transform: translateY(-1px);
}

#wd_cta:disabled {
  opacity: .55;
  cursor: not-allowed;
  box-shadow: none;
  text-shadow: none;
}



/* TRADE MODAL */
/* --- Layout modal --- */
.trade-modal{max-width:520px}
.trade-modal .tm-topline{display:flex;justify-content:center;align-items:center;margin-bottom:8px}

/* Badge BUY/SELL (centré + vert/rouge) */
.trade-modal .tm-modechip{
  padding:8px 12px;border-radius:999px;font-weight:900;font-size:12px;letter-spacing:.4px;
  border:1px solid var(--line);
}
.trade-modal .tm-modechip.buy{color:#00ffb2;background:rgba(0,255,178,.12);border-color:rgba(0,255,178,.25)}
.trade-modal .tm-modechip.sell{color:#ff6b7d;background:rgba(255,107,125,.12);border-color:rgba(255,107,125,.25)}

/* En-tête pair centré */
.trade-modal .tm-head{display:flex;justify-content:center;align-items:center;gap:10px;margin-bottom:8px}
.trade-modal .tm-pair{display:flex;align-items:center;gap:8px;font-weight:900}
.trade-modal .tm-sym{font-weight:900;letter-spacing:.3px}
.trade-modal .tm-arrow{opacity:.6;margin:0 4px}

/* Hauteur unifiée champs + logos alignés */
/*:root{ --tm-input-h:56px; }*/
.trade-modal { --tm-input-h:56px; }
.trade-modal .tm-field{display:flex;align-items:center;gap:10px}
.trade-modal .tm-input{position:relative;display:flex;align-items:center;gap:10px;flex:1}
.trade-modal .tm-input .ui{
  height:var(--tm-input-h);line-height:var(--tm-input-h);
  text-align:center;font-size:22px;font-weight:800;padding:0 14px;
}
.trade-modal .tm-ico{width:40px;height:40px;border-radius:10px;border:1px solid var(--line);object-fit:cover}
.trade-modal .tm-ico.sm{width:var(--tm-input-h);height:var(--tm-input-h);border-radius:12px}
.trade-modal .tm-unit{position:absolute;right:10px;color:#9fb0e8;font-weight:800;pointer-events:none}

/* Labels & infos */
.tm-label{display:block;color:#9fb0e8;font-weight:800;margin:8px 0 6px}
.tm-meta{margin-top:10px;color:#a9b4d8;font-size:13px}
.tm-row{display:flex;align-items:center;justify-content:space-between;margin-top:4px}
.tm-row.warn{color:#ffd7a0}

/* Tabs % centrés sous l'input */
.trade-modal .tm-tabs{display:flex;justify-content:center;gap:8px;margin:6px 0 8px}
.trade-modal .tm-tabs button{
  font-size:12px;font-weight:700;padding:4px 8px;border-radius:6px;
  background:#161c2e;border:1px solid var(--line);opacity:.9;cursor:pointer
}
.trade-modal .tm-tabs button.active{background:#1f2742;opacity:1}

/* Swap (hover + curseur) */
.trade-modal .tm-swap{
  margin:8px auto;display:flex;align-items:center;justify-content:center;
  width:44px;height:32px;border-radius:10px;border:1px solid var(--line);
  background:#101425;transition:transform .18s ease,background .18s ease;cursor:pointer
}
.trade-modal .tm-swap:hover{transform:rotate(180deg) scale(1.04);background:#152040}

/* CTA buy/sell transparents */
.tm-cta{width:100%;margin-top:14px;text-align:center;font-weight:900}
.tm-cta--buy{color:#00ffb2;background:rgba(0,255,178,.12);border:1px solid rgba(0,255,178,.25)}
.tm-cta--sell{color:#ff6b7d;background:rgba(255,107,125,.12);border:1px solid rgba(255,107,125,.25)}
.tm-cta--buy:hover{background:rgba(0,255,178,.18)}
.tm-cta--sell:hover{background:rgba(255,107,125,.18)}


/* --- Champs + logos parfaitement alignés --- */
/*:root{ --tm-input-h:56px; }*/
.trade-modal { --tm-input-h:56px; }

.trade-modal .tm-field{display:flex; align-items:stretch; gap:10px}
.trade-modal .tm-input{position:relative; display:flex; align-items:center; gap:10px; flex:1}
.trade-modal .tm-input .ui{
  height:var(--tm-input-h); line-height:var(--tm-input-h);
  text-align:center; font-size:22px; font-weight:800; padding:0 14px;
}
.trade-modal .tm-ico.sm{
  width:var(--tm-input-h); height:var(--tm-input-h);
  border-radius:12px; object-fit:cover; align-self:stretch;
}

/* --- Tabs : plus lisibles, moins “gris” --- */
.trade-modal .tm-tabs{display:flex; justify-content:center; gap:10px; margin:6px 0 8px}
.trade-modal .tm-tabs button{
  font-size:12px; font-weight:800; padding:6px 10px; border-radius:999px;
  background:linear-gradient(180deg,#1a2240,#0f1630);
  border:1px solid #28305a; color:#eaf2ff; opacity:.98; cursor:pointer;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.06);
}
.trade-modal .tm-tabs button.active{ background:#223067; border-color:#2f4aa2; }

/* --- Double-flèche : plus grosse, visible, cliquable --- */
.trade-modal .tm-swap{
  margin:10px auto; width:56px; height:40px; border-radius:12px;
  display:flex; align-items:center; justify-content:center; cursor:pointer;
  background:linear-gradient(180deg,#10162a,#0b1122); border:1px solid #273055;
  transition:transform .18s ease, background .18s ease, box-shadow .18s ease;
}
.trade-modal .tm-swap .ic{ font-size:18px; line-height:1; }
.trade-modal .tm-swap:hover{ transform:rotate(180deg) scale(1.05); background:#16214a; box-shadow:0 0 0 2px rgba(32,96,220,.18) }

/* --- Badge BUY/SELL (reste centré) --- */
.trade-modal .tm-topline{display:flex; justify-content:center; align-items:center; margin-bottom:8px}
.trade-modal .tm-modechip{
  padding:8px 12px; border-radius:999px; font-weight:900; font-size:12px; letter-spacing:.4px;
  border:1px solid var(--line);
}
.trade-modal .tm-modechip.buy{color:#00ffb2; background:rgba(0,255,178,.12); border-color:rgba(0,255,178,.25)}
.trade-modal .tm-modechip.sell{color:#ff6b7d; background:rgba(255,107,125,.12); border-color:rgba(255,107,125,.25)}


/* Swap : glowy Solana purple */
.trade-modal .tm-swap{
  margin:10px auto;
  width:56px; height:40px; border-radius:12px;
  display:flex; align-items:center; justify-content:center; cursor:pointer;
  background:linear-gradient(180deg,#151A33,#0C1126);
  border:1px solid #3a3fd6;
  box-shadow:
    0 0 0 1px rgba(58,63,214,.25) inset,
    0 0 14px rgba(114,82,255,.35),
    0 6px 18px rgba(20,22,40,.6);
  transition:transform .18s ease, box-shadow .18s ease, background .18s ease;
}
.trade-modal .tm-swap .ic{
  font-size:18px; line-height:1;
  color:#b3a7ff;               /* violet clair visible */
  filter: drop-shadow(0 0 6px rgba(162,140,255,.6));
}
.trade-modal .tm-swap:hover{
  transform:rotate(180deg) scale(1.06);
  background:linear-gradient(180deg,#1B2250,#11183B);
  box-shadow:
    0 0 0 1px rgba(90,95,240,.35) inset,
    0 0 22px rgba(162,140,255,.55),
    0 8px 22px rgba(20,22,40,.7);
}

#tm_err { color:#ff6b7d; font-weight:700; }

/* Error line centered inside modal */
#tm_err{
  display:block;           /* casse la ligne .tm-row éventuelle */
  width:100%;
  margin:8px 0 0;
  text-align:center;
  color:#ff6b7d;           /* rouge bien lisible */
  font-weight:700;
}

/* === Trade Modal style upgrade === */

/* Contour épais + gradient TikTok autour de la modal */
.trade-modal {
  border:3px solid transparent;
  border-radius:14px;
  padding:18px; /* plus d'espace intérieur */
  background:linear-gradient(#0b0f1f, #0b0f1f) padding-box,
             linear-gradient(90deg, #00f2ff, #ff0050) border-box;
  box-shadow:0 0 20px rgba(0,0,0,0.6);
}

/* Encadré pour chaque bloc "You pay" et "You receive" */
.trade-modal .tm-block {
  border:2px solid rgba(255,255,255,0.08);
  border-radius:12px;
  padding:10px 12px 14px;
  margin-bottom:14px;
  background:rgba(255,255,255,0.02);
}

/* labels un peu plus détachés */
.trade-modal .tm-block .tm-label {
  margin:0 0 6px;
}

/* Inputs à l'intérieur des blocs → pas de bordure supplémentaire */
.trade-modal .tm-block .tm-input {
  border:1px solid #28305a;
  border-radius:10px;
  background:#101425;
  padding:4px;
}





/* Le header laisse la colonne gauche prendre la place dont elle a besoin,
   puis le contenu de droite occupe le reste. */
.token-header{
  display: grid;
  grid-template-columns: minmax(220px, 40%) 1fr; /* ← flexible */
  gap: 14px;
  align-items: stretch;                           /* ← s’étire sur la hauteur de ligne */
}

/* Le “hero” définit la hauteur via son ratio.
   La largeur vient du grid (colonne gauche). */
.tok-hero{
  position: relative;
  aspect-ratio: 3 / 1;     /* ← hauteur = largeur / 3 */
  height: auto;
  border: 1px solid var(--line);
  border-radius: 12px;
  overflow: hidden;
  background: #0b0f1f;
}

/* L’image remplit le conteneur (plus de aspect-ratio ici) */
.tok-hero .banner{
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}

/* Le logo reste superposé */
.tok-hero .logo{
  position: absolute;
  left: 10%;
  top: 50%;
  transform: translateY(-50%);
  width: 84px;
  height: 84px;
  border-radius: 14px;
  object-fit: cover;
  background: #0b0f1f;
  border: 2px solid #fff;
  box-shadow: 0 0 0 2px rgba(0,0,0,.25), 0 8px 20px rgba(0,0,0,.45);
}

/* Responsive: sur petit écran on met la bannière au-dessus */
@media (max-width: 1290px){
  .token-header{
    grid-template-columns: 1fr;
  }
}



.etm-backdrop{position:fixed;inset:0;display:flex;align-items:center;justify-content:center;background:rgba(0,0,0,.55);backdrop-filter:blur(2px);z-index:9999}
.etm-card{width:min(92vw,560px);background:linear-gradient(180deg,#0f1220,#0b0e1a);border:1px solid #1b2040;border-radius:20px;padding:18px;color:#eaf2ff;position:relative}
.etm-x{position:absolute;top:8px;right:8px;border:1px solid #283154;background:#0c1122;color:#cfe3ff;border-radius:10px;width:34px;height:34px;cursor:pointer}
.etm-head{display:flex;gap:12px;align-items:center;margin-bottom:12px}
.etm-head img{width:44px;height:44px;border-radius:12px;object-fit:cover}
.etm-title{font-weight:800}
.etm-sub{color:#9eb0d8;font-size:12px}
.etm-lbl{display:block;margin-top:8px;margin-bottom:6px;font-size:13px;color:#a9b4d8}
.etm-inp{width:100%;height:44px;border-radius:12px;border:1px solid #26315a;background:#0b0f1f;color:#eaf2ff;padding:0 12px}
.etm-row{margin-top:12px}
.etm-drop{position:relative;border:1px dashed #283154;border-radius:14px;min-height:120px;display:flex;align-items:center;justify-content:center;background:#0b0f1f;overflow:hidden}
.etm-banner{max-width:100%;max-height:220px;display:none}
.etm-hint{color:#7990c0;font-size:13px}
.etm-actions{display:flex;gap:8px;margin-top:8px}
.etm-btn{border:1px solid #26315a;background:#11162c;border-radius:999px;color:#eaf2ff;padding:8px 12px;font-weight:700;cursor:pointer}
.etm-btn-ghost{background:transparent}
.etm-cta{margin-top:14px;width:100%;height:46px;border-radius:999px;border:1px solid #26315a;background:linear-gradient(90deg,rgba(0,242,255,.18),rgba(255,0,80,.18));font-weight:900;color:#fff;cursor:pointer}
.etm-err{margin-top:10px;color:#ff9aa0;font-size:13px}

/* global safety */
[hidden] { display: none !important; }

/* s'assure que la bannière est visible et couvre la dropzone */
.etm-banner{width:100%; height:auto; display:block;}




/* Wallet lists: espace + bordure grise + fond */
#walletView #posList,
#walletView #myTokensList{
  display: flex;
  flex-direction: column;
  gap: 12px;                 /* espace entre les items */
}

#walletView .wallet-row{
  border: 1px solid #283154; /* gris bleuté discret */
  border-radius: 14px;
  padding: 12px;
  background: linear-gradient(180deg,#0f1220,#0b0e1a);
}

#walletView .wallet-row:hover{
  border-color: #2d3863;
  filter: brightness(1.02);
}



/* Avatar + bouton "+" */
.pfp-wrap{
  position: relative;
  display: inline-block;
  overflow: visible;              /* pour que le + puisse dépasser un peu */
}

/* le bouton rond en haut-droite */
.pfp-wrap .pfp-add{
  position: absolute;
  top: 0;
  right: 0;
  transform: translate(40%,-40%); /* le fait sortir légèrement du coin */
  width: 26px;
  height: 26px;
  border-radius: 50%;
  border: 1px solid #283154;
  background: #0c1122;
  color: #eaf2ff;
  font-weight: 900;
  line-height: 1;
  display: flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  box-shadow: 0 4px 12px rgba(0,0,0,.45);
  z-index: 1;
}

.pfp-wrap .pfp-add:hover{
  filter: brightness(1.12);
  box-shadow: 0 0 12px rgba(0,242,255,.25);
}

.pfp-wrap .pfp-add:focus-visible{
  outline: 2px solid #00f2ff;
  outline-offset: 2px;
}


/* Profile: 2 colonnes par défaut (si pas déjà défini) */
#profileView .profile-row.inline{
  display: grid;
  grid-template-columns: 180px 1fr;
  align-items: center;
  gap: 10px 14px;
}

/* ≤ 630px : on empile le label au-dessus du champ */
@media (max-width: 630px){
  #profileView .profile-row.inline{
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 6px;
  }

  #profileView .profile-row.inline .label{
    width: 100%;
    margin: 0;
  }

  #profileView .profile-row.inline .field-inline{
    width: 100%;
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
  }

  /* Les inputs “readonly” prennent toute la largeur */
  #profileView .profile-row.inline .ui.readonly{
    flex: 1 1 100%;
    width: 100%;
    max-width: 100%;
  }

  /* Petites pastilles/icônes passent à la ligne proprement */
  #profileView .status-chip{ margin-top: 6px; }
  #profileView .wc-icons{ margin-left: 0; gap: 8px; }
}



/* ── Topbar search ─────────────────────────────────────────────────────────── */
.topbar { display:flex; align-items:center; gap:10px; }

#marquee.search-host{          /* le conteneur remplace le marquee */
  flex:1;
  display:flex;
  align-items:center;
  gap:8px;
  min-width:220px;
}

.search-label{
  color:#9fb0e8;
  font-weight:700;
  font-size:14px;
  white-space:nowrap;
}

.searchbox{ position:relative; flex:1; }

.search-input{
  width:100%;
  height:36px;
  padding:0 12px;
  border-radius:999px;
  border:1px solid var(--line);
  background:#0c1122;
  color:#eaf2ff;
  outline:none;
}
.search-input:focus{ box-shadow:0 0 0 2px rgba(0,242,255,.25); }

.search-drop{
  position:absolute;
  left:0; right:0;
  top:calc(100% + 6px);
  background:linear-gradient(180deg,#0f1220,#0b0e1a);
  border:1px solid #1b2040;
  border-radius:12px;
  padding:6px;
  box-shadow:0 10px 30px rgba(0,0,0,.45);
  max-height:60vh;
  overflow:auto;
  z-index:9999;
}

.search-item{
  width:100%;
  display:flex; align-items:center; gap:10px;
  padding:8px; background:transparent; border:0; cursor:pointer;
  border-radius:10px; text-align:left; color:#eaf2ff;
}
.search-item:hover, .search-item.active{ background:#121831; }

.search-item img{ width:28px; height:28px; border-radius:8px; object-fit:cover; }
.si-top{ font-weight:800; }
.si-sub{ opacity:.8; font-weight:600; margin-left:6px; }
.si-ca{ color:#9bb0d3; font-size:12px; }


/* --- Topbar Search (remplace le marquee) --- */
#marquee.search-host{
  display:flex; align-items:center; gap:8px;
  overflow:visible !important;    /* <-- évite le clipping hérité du marquee */
  height:auto !important;
  min-width:220px;
}
#marquee .search-label{ color:#9fb0e8; font-weight:700; font-size:14px; white-space:nowrap; }
#marquee .searchbox{ position:relative; flex:1; }
#marquee .search-input{
  width:100%; height:36px; padding:0 12px;
  border-radius:999px; border:1px solid var(--line);
  background:#0c1122; color:#eaf2ff; outline:none;
}
#marquee .search-input:focus{ box-shadow:0 0 0 2px rgba(0,242,255,.25); }

#marquee .search-drop{
  position:absolute; left:0; right:0; top:calc(100% + 6px);
  background:linear-gradient(180deg,#0f1220,#0b0e1a);
  border:1px solid #1b2040; border-radius:12px; padding:6px;
  box-shadow:0 10px 30px rgba(0,0,0,.45);
  max-height:60vh; overflow:auto; z-index:9999;
}
#marquee .search-item{
  width:100%; display:flex; align-items:center; gap:10px;
  padding:8px; background:transparent; border:0; cursor:pointer;
  border-radius:10px; text-align:left; color:#eaf2ff;
}
#marquee .search-item:hover, #marquee .search-item.active{ background:#121831; }
#marquee .search-item img{ width:28px; height:28px; border-radius:8px; object-fit:cover; }
#marquee .si-top{ font-weight:800; }
#marquee .si-sub{ opacity:.8; font-weight:600; margin-left:6px; }
#marquee .si-ca{ color:#9bb0d3; font-size:12px; }

.brand[data-route], .brand-row[data-route] { cursor: pointer; }



