/* ═══ leon --assist · floating project assistant ═══
   Same tokens as styles.css. Terminal, black, mono, one accent. */

.as-launch{
  position:fixed; right:18px; bottom:18px; z-index:120;
  display:inline-flex; align-items:center; gap:.55rem;
  font-family:var(--mono,'JetBrains Mono',monospace); font-size:12.5px; letter-spacing:.04em;
  background:#000; color:var(--fg,#fafafa);
  border:1px solid var(--line-2,#262626); border-radius:999px;
  padding:.72rem 1.05rem; cursor:pointer;
  box-shadow:0 8px 30px rgba(0,0,0,.55);
  transition:border-color .25s, color .25s, transform .25s;
}
.as-launch i{ font-style:normal; color:var(--ac,#9b8cff); }
.as-launch:hover{ border-color:var(--ac,#9b8cff); transform:translateY(-1px); }
.as-launch:focus-visible{ outline:2px solid var(--ac,#9b8cff); outline-offset:3px; }
.as-launch[hidden]{ display:none; }

.as-panel{
  position:fixed; right:18px; bottom:18px; z-index:130;
  width:min(408px, calc(100vw - 36px));
  height:min(620px, calc(100vh - 36px) - env(safe-area-inset-bottom,0px));
  display:flex; flex-direction:column;
  background:#050505; border:1px solid var(--line-2,#262626); border-radius:14px;
  box-shadow:0 24px 80px rgba(0,0,0,.7);
  overflow:hidden;
  font-family:var(--mono,'JetBrains Mono',monospace);
}
.as-panel[hidden]{ display:none; }

.as-head{
  display:flex; align-items:center; gap:.6rem;
  padding:.8rem 1rem; border-bottom:1px solid var(--line,#1a1a1a); flex:none;
}
.as-head .dot{ color:var(--ac,#9b8cff); font-size:13px; }
.as-head h2{ margin:0; font-size:12.5px; font-weight:500; letter-spacing:.05em; color:var(--fg,#fafafa); }
.as-head .st{ font-size:10.5px; color:var(--faint,#5a5a5a); letter-spacing:.08em; }
.as-head .sp{ flex:1; }
.as-hbtn{
  background:none; border:1px solid transparent; border-radius:7px; color:var(--dim,#777);
  font-family:inherit; font-size:11px; padding:.3rem .5rem; cursor:pointer; letter-spacing:.04em;
}
.as-hbtn:hover{ color:var(--fg,#fafafa); border-color:var(--line-2,#262626); }
.as-hbtn:focus-visible{ outline:2px solid var(--ac,#9b8cff); outline-offset:2px; }

.as-log{
  flex:1; overflow-y:auto; padding:1rem; display:flex; flex-direction:column; gap:.8rem;
  overscroll-behavior:contain; scrollbar-width:thin;
}
.as-msg{ max-width:88%; font-size:13px; line-height:1.62; white-space:pre-wrap; word-wrap:break-word; }
.as-msg.u{ align-self:flex-end; color:var(--fg,#fafafa); background:#101013;
  border:1px solid var(--line-2,#262626); border-radius:11px 11px 3px 11px; padding:.55rem .8rem; }
.as-msg.a{ align-self:flex-start; color:var(--mid,#aaa); padding-left:1.05rem; position:relative; }
.as-msg.a::before{ content:'>'; position:absolute; left:0; top:0; color:var(--ac,#9b8cff); }
.as-msg.a b{ color:var(--fg,#fafafa); font-weight:500; }
.as-msg.sys{ align-self:center; color:var(--faint,#5a5a5a); font-size:11px; text-align:center; }
.as-msg a{ color:var(--ac,#9b8cff); text-underline-offset:3px; }

.as-think{ align-self:flex-start; color:var(--faint,#5a5a5a); font-size:12px; padding-left:1.05rem; }
.as-think i{ font-style:normal; animation:as-blink 1.05s steps(1) infinite; color:var(--ac,#9b8cff); }
@keyframes as-blink{ 50%{ opacity:0; } }

.as-starts{ display:flex; flex-direction:column; gap:.45rem; padding:0 1rem 0.6rem; flex:none; }
.as-starts button{
  text-align:left; background:none; border:1px solid var(--line,#1a1a1a); border-radius:9px;
  color:var(--mid,#aaa); font-family:inherit; font-size:12px; letter-spacing:.02em;
  padding:.5rem .7rem; cursor:pointer; transition:border-color .2s, color .2s;
}
.as-starts button:hover{ border-color:var(--ac,#9b8cff); color:var(--fg,#fafafa); }

.as-lead{ border-top:1px solid var(--line,#1a1a1a); padding:.8rem 1rem; flex:none; display:grid; gap:.5rem; }
.as-lead p{ margin:0; font-size:11.5px; color:var(--mid,#aaa); }
.as-lead input{
  width:100%; background:#0b0b0e; border:1px solid var(--line-2,#262626); border-radius:8px;
  color:var(--fg,#fafafa); font-family:inherit; font-size:13px; padding:.55rem .7rem;
}
.as-lead input:focus{ outline:none; border-color:var(--ac,#9b8cff); }
.as-lead .row2{ display:grid; grid-template-columns:1fr 1fr; gap:.5rem; }
.as-lead .as-err{ color:#ff9b9b; font-size:11px; min-height:1em; margin:0; }
.as-lead .acts{ display:flex; gap:.5rem; }
.as-lead button{
  font-family:inherit; font-size:12px; letter-spacing:.04em; border-radius:8px; padding:.55rem .9rem; cursor:pointer;
}
.as-lead .go{ background:var(--ac,#9b8cff); border:1px solid var(--ac,#9b8cff); color:#000; }
.as-lead .no{ background:none; border:1px solid var(--line-2,#262626); color:var(--dim,#777); }

.as-foot{ border-top:1px solid var(--line,#1a1a1a); padding:.7rem .8rem .6rem; flex:none; }
.as-inrow{ display:flex; gap:.5rem; align-items:flex-end; }
.as-in{
  flex:1; resize:none; max-height:110px; min-height:40px;
  background:#0b0b0e; border:1px solid var(--line-2,#262626); border-radius:10px;
  color:var(--fg,#fafafa); font-family:inherit; font-size:13px; line-height:1.5; padding:.6rem .75rem;
}
.as-in:focus{ outline:none; border-color:var(--ac,#9b8cff); }
.as-send{
  flex:none; width:40px; height:40px; display:grid; place-items:center;
  background:var(--ac,#9b8cff); color:#000; border:none; border-radius:10px; cursor:pointer;
  font-size:15px; transition:transform .15s;
}
.as-send:hover{ transform:translateY(-1px); }
.as-send:disabled{ opacity:.4; cursor:default; transform:none; }
.as-note{ margin:.55rem 2px 0; font-size:10px; line-height:1.5; color:var(--faint,#5a5a5a); letter-spacing:.03em; }
.as-note a{ color:var(--dim,#777); }

@media (max-width:640px){
  .as-panel{
    right:0; bottom:0; width:100vw;
    height:calc(100dvh - 8px);
    border-radius:14px 14px 0 0; border-left:none; border-right:none; border-bottom:none;
    padding-bottom:env(safe-area-inset-bottom,0px);
  }
  .as-launch{ right:14px; bottom:calc(14px + env(safe-area-inset-bottom,0px)); }
}
@media (prefers-reduced-motion:reduce){
  .as-launch, .as-send{ transition:none; }
}

.as-lead[hidden]{ display:none; }
.as-starts[hidden]{ display:none; }

/* ═══ language: a nudge on the page, a chooser inside the chat ═══
   Shown only when we have reason to think the visitor reads another
   language (browser locale) — never as a blocking interstitial. */
.as-langbar{
  position:fixed; left:18px; bottom:18px; z-index:125;
  width:min(310px, calc(100vw - 36px));
  background:#050505; color:var(--fg,#fafafa);
  border:1px solid var(--line-2,#262626); border-radius:12px;
  padding:.85rem .95rem;
  box-shadow:0 16px 50px rgba(0,0,0,.6);
  font-family:var(--mono,'JetBrains Mono',monospace);
  animation:as-langin .3s ease-out;
}
@keyframes as-langin{ from{ opacity:0; transform:translateY(8px); } }
.as-langbar[hidden]{ display:none; }
.as-langbar p{ margin:0 0 .6rem; font-size:11.5px; line-height:1.55; color:var(--mid,#aaa); }
.as-langbar .opts{ display:flex; flex-wrap:wrap; gap:.4rem; }
.as-langbar button{
  flex:1 1 auto; text-align:center;
  background:none; border:1px solid var(--line-2,#262626); border-radius:8px;
  color:var(--fg,#fafafa); font-family:inherit; font-size:12px; letter-spacing:.02em;
  padding:.45rem .6rem; cursor:pointer; transition:border-color .2s, color .2s;
}
.as-langbar button:hover{ border-color:var(--ac,#9b8cff); }
.as-langbar button.go{ border-color:var(--ac,#9b8cff); color:var(--ac,#9b8cff); }
.as-langbar .x{
  position:absolute; top:.45rem; right:.5rem;
  background:none; border:none; color:var(--faint,#5a5a5a);
  font-family:inherit; font-size:13px; padding:.2rem .35rem; cursor:pointer; flex:none;
}
.as-langbar .x:hover{ color:var(--fg,#fafafa); }

.as-lang{ padding:0 1rem .7rem; flex:none; }
.as-lang[hidden]{ display:none; }
.as-lang p{ margin:0 0 .5rem; font-size:11.5px; line-height:1.5; color:var(--faint,#5a5a5a); }
.as-lang .opts{ display:flex; gap:.4rem; flex-wrap:wrap; }
.as-lang button{
  background:none; border:1px solid var(--line,#1a1a1a); border-radius:8px;
  color:var(--mid,#aaa); font-family:inherit; font-size:12px;
  padding:.45rem .7rem; cursor:pointer; transition:border-color .2s, color .2s;
}
.as-lang button:hover{ border-color:var(--ac,#9b8cff); color:var(--fg,#fafafa); }

@media (max-width:640px){
  .as-langbar{ left:14px; right:14px; width:auto; bottom:calc(76px + env(safe-area-inset-bottom,0px)); }
}

/* handoff links rendered inside the chat log reuse the starter-button look */
.as-log .as-starts a{
  display:block; text-align:left;
  background:none; border:1px solid var(--line,#1a1a1a); border-radius:9px;
  color:var(--fg,#fafafa); font-family:inherit; font-size:12.5px; letter-spacing:.02em;
  padding:.55rem .7rem; text-decoration:none; transition:border-color .2s;
}
.as-log .as-starts a:hover{ border-color:var(--ac,#9b8cff); }

/* ═══ language switcher in the site nav (injected by assist.js) ═══ */
.as-langpick{
  display:inline-flex; align-items:center; gap:.1rem;
  margin-right:.7rem; padding:.18rem;
  border:1px solid var(--line,#1a1a1a); border-radius:999px;
  font-family:var(--mono,'JetBrains Mono',monospace);
}
.as-langpick a{
  display:inline-block; padding:.26rem .5rem; border-radius:999px;
  font-size:11px; letter-spacing:.03em; line-height:1;
  color:var(--dim,#777); text-decoration:none; text-transform:none;
  transition:color .2s, background .2s;
}
.as-langpick a:hover{ color:var(--fg,#fafafa); }
.as-langpick a.on{ color:#000; background:var(--ac,#9b8cff); }
@media (max-width:860px){
  .as-langpick{ margin-right:.4rem; }
  .as-langpick a{ padding:.24rem .38rem; font-size:10.5px; }
}
