/* MySight — светлая тема, книжная типографика, волосяные линии.
   Движение: только transform/opacity, 120–260 мс, собственные кривые. */

:root {
  /* поверхности */
  --bg:#ffffff;
  --sunken:#f7f7f5;      /* левая панель, настройки */
  --raised:#f2f2ef;      /* реплика пользователя, чипсы */
  --hover-s:#ededea;

  /* линии: волосяные, через альфу — не ломаются на любом фоне */
  --line:rgba(16,17,20,.08);
  --line-2:rgba(16,17,20,.14);
  --line-3:rgba(16,17,20,.22);

  /* текст */
  --ink:#16171b;
  --ink-2:#55585f;
  --ink-3:#8a8e96;
  --ink-4:#a8acb3;

  --mark:#0b8a68;
  --mark-soft:rgba(11,138,104,.09);
  --bad:#b34a34;

  --btn:#16171b;
  --btn-ink:#fbfbfa;

  --font:Onest,-apple-system,BlinkMacSystemFont,'Segoe UI',system-ui,sans-serif;
  --mono:'JetBrains Mono',ui-monospace,SFMono-Regular,Menlo,monospace;

  /* кривые: встроенные слишком вялые */
  --out:cubic-bezier(.23,1,.32,1);
  --in-out:cubic-bezier(.77,0,.175,1);
  --drawer:cubic-bezier(.32,.72,0,1);

  --measure:720px;
  --r-sm:9px; --r:12px; --r-lg:16px;
  --shadow-1:0 1px 2px rgba(16,17,20,.05), 0 4px 12px rgba(16,17,20,.05);
  --shadow-2:0 8px 30px rgba(16,17,20,.12), 0 2px 8px rgba(16,17,20,.06);
}

*,*::before,*::after{box-sizing:border-box;margin:0;padding:0;-webkit-tap-highlight-color:transparent}
html,body{height:100%}
body{
  background:var(--bg);color:var(--ink);font-family:var(--font);
  font-size:15px;line-height:1.6;letter-spacing:-.002em;
  -webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;
  overflow:hidden;overscroll-behavior:none;
}
svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round;display:block}
svg circle{fill:currentColor;stroke:none}
.hidden{display:none!important}
.muted{color:var(--ink-3)}
.note{font-size:12.5px;color:var(--ink-3);line-height:1.45}
b,strong{font-weight:600}

/* ── экраны ─────────────────────────────────────────────── */
.screen{
  position:fixed;inset:0;background:var(--bg);overflow-y:auto;
  padding:max(28px,env(safe-area-inset-top)) 22px calc(28px + env(safe-area-inset-bottom));
  display:flex;align-items:center;justify-content:center;
}
.sheet{width:100%;max-width:var(--measure);margin:auto}
.sheet.narrow{max-width:400px}
.mark{
  font-size:12px;font-weight:600;letter-spacing:.14em;text-transform:uppercase;
  color:var(--mark);margin-bottom:14px
}
.mark.sm{margin:0;font-size:11.5px}
h1{font-size:26px;line-height:1.2;font-weight:600;letter-spacing:-.022em;margin-bottom:10px}
h2{font-size:18px;line-height:1.3;font-weight:600;letter-spacing:-.015em;margin-bottom:7px}
.lead{color:var(--ink-2);margin-bottom:22px;font-size:15px}

.rules{list-style:none;margin-bottom:26px;border-top:1px solid var(--line)}
.rules li{display:flex;gap:12px;align-items:flex-start;padding:12px 2px;border-bottom:1px solid var(--line);
  color:var(--ink-2);font-size:14px;line-height:1.5}
.ri{flex:none;font-style:normal;font-size:14px;width:20px;text-align:center;opacity:.9;line-height:1.5}

.link{display:inline-block;margin-top:16px;color:var(--ink-2);font-size:13.5px;text-decoration:none;
  border-bottom:1px solid var(--line-2);padding-bottom:1px}
@media (hover:hover) and (pointer:fine){ .link:hover{color:var(--ink);border-color:var(--line-3)} }

/* скелет загрузки вместо слова «загружаю» */
.skeleton-wrap{max-width:400px}
.sk{background:var(--raised);border-radius:7px;animation:pulse 1.4s ease-in-out infinite}
.sk-title{height:22px;width:55%;margin-bottom:16px}
.sk-line{height:13px;margin-bottom:10px}
.sk-line.short{width:70%}
@keyframes pulse{0%,100%{opacity:1}50%{opacity:.45}}

/* ── кнопки и поля ──────────────────────────────────────── */
.btn{
  display:block;width:100%;padding:13px 18px;border:0;border-radius:var(--r);
  background:var(--btn);color:var(--btn-ink);font:500 15px/1.2 var(--font);letter-spacing:-.01em;
  cursor:pointer;transition:transform 160ms var(--out),opacity 160ms ease;
}
.btn:active{transform:scale(.975)}
.btn:disabled{opacity:.4;pointer-events:none}
.btn-sm{width:auto;padding:9px 15px;font-size:13.5px;border-radius:10px}
.btn-inline{width:auto;flex:none;padding:11px 16px;border-radius:10px;font-size:14px}

.icon-btn{
  flex:none;display:grid;place-items:center;width:34px;height:34px;padding:0;
  background:none;border:0;border-radius:10px;color:var(--ink-3);cursor:pointer;
  transition:background 140ms ease,color 140ms ease,transform 140ms var(--out);
}
.icon-btn:active{transform:scale(.92)}
@media (hover:hover) and (pointer:fine){ .icon-btn:hover{background:var(--raised);color:var(--ink)} }

input[type=text],textarea{
  width:100%;background:var(--bg);color:var(--ink);border:1px solid var(--line-2);
  border-radius:var(--r);padding:11px 13px;font:15px/1.5 var(--font);
  resize:none;outline:none;transition:border-color 140ms ease,box-shadow 140ms ease;
}
input::placeholder,textarea::placeholder{color:var(--ink-4)}
input[type=text]:focus,textarea:focus{border-color:var(--line-3);box-shadow:0 0 0 3px rgba(16,17,20,.04)}
.field-row{display:flex;gap:8px;margin-top:4px}
.field-row input{flex:1}

/* ── каркас ─────────────────────────────────────────────── */
#app{position:fixed;inset:0;display:grid;grid-template-rows:auto 1fr auto auto}

#top{
  display:flex;align-items:center;gap:10px;
  padding:calc(9px + env(safe-area-inset-top)) 12px 9px;
  border-bottom:1px solid var(--line);background:var(--bg);
}
.top-mid{flex:1;min-width:0;text-align:right}
#top-title{font-size:15px;font-weight:600;letter-spacing:-.012em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
#top-sub{font-size:12px;color:var(--ink-3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

/* явная кнопка панели: иконка + слово + счётчик, чтобы не нужно было догадываться */
.nav-btn{
  flex:none;display:flex;align-items:center;gap:7px;height:36px;padding:0 10px 0 9px;
  background:var(--bg);border:1px solid var(--line-2);border-radius:999px;
  color:var(--ink);font:500 13.5px/1 var(--font);cursor:pointer;
  transition:transform 150ms var(--out),background 150ms ease,border-color 150ms ease;
}
.nav-btn:active{transform:scale(.96)}
.nav-btn svg{width:17px;height:17px;color:var(--ink-2)}
@media (hover:hover) and (pointer:fine){ .nav-btn:hover{background:var(--sunken);border-color:var(--line-3)} }
.nav-badge{
  font:600 11.5px/1 var(--mono);color:var(--mark);background:var(--mark-soft);
  padding:4px 7px;border-radius:999px;letter-spacing:0;
}

/* подсказка на первый запуск */
.coach{
  position:absolute;top:calc(52px + env(safe-area-inset-top));left:12px;z-index:25;
  display:flex;align-items:center;gap:10px;
  background:var(--btn);color:var(--btn-ink);border-radius:var(--r);
  padding:9px 10px 9px 13px;font-size:13px;box-shadow:var(--shadow-2);
  animation:coachIn 320ms var(--out) both;
}
.coach::before{
  content:'';position:absolute;top:-5px;left:26px;width:10px;height:10px;
  background:var(--btn);transform:rotate(45deg);border-radius:2px;
}
.coach button{
  background:rgba(255,255,255,.16);border:0;color:var(--btn-ink);
  font:500 12.5px/1 var(--font);padding:6px 10px;border-radius:8px;cursor:pointer;
  transition:transform 140ms var(--out),background 140ms ease;
}
.coach button:active{transform:scale(.94)}
@keyframes coachIn{from{opacity:0;transform:translateY(-6px) scale(.97)}to{opacity:1;transform:none}}

/* ── лента ──────────────────────────────────────────────── */
#main{overflow-y:auto;-webkit-overflow-scrolling:touch;position:relative}
#feed{max-width:var(--measure);margin:0 auto;padding:18px 16px 10px;display:flex;flex-direction:column;gap:18px}

.msg{animation:msgIn 260ms var(--out) both}
@keyframes msgIn{from{opacity:0;transform:translateY(7px)}to{opacity:1;transform:none}}

.msg.me{align-self:flex-end;max-width:85%;background:var(--raised);
  border-radius:var(--r-lg) var(--r-lg) 5px var(--r-lg);padding:10px 14px;color:var(--ink)}
.msg.me .body{font-size:14.5px}

.msg.ai{align-self:stretch}
.msg.ai .who{
  font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-4);
  margin-bottom:7px;display:flex;align-items:center;gap:6px
}
.msg.ai .who::before{content:'';width:5px;height:5px;border-radius:50%;background:var(--mark)}

.body{word-wrap:break-word;overflow-wrap:anywhere;line-height:1.54}
.body p{margin:0 0 10px}
.body p:last-child{margin-bottom:0}
.body ul{margin:0 0 10px;padding-left:2px;list-style:none}
.body li{position:relative;padding-left:16px;margin-bottom:6px}
.body li::before{content:'';position:absolute;left:3px;top:.68em;width:4px;height:4px;border-radius:50%;background:var(--ink-4)}
.body a{color:var(--ink);text-decoration:none;border-bottom:1px solid var(--line-2);transition:border-color 140ms ease}
@media (hover:hover) and (pointer:fine){ .body a:hover{border-color:var(--ink-3)} }
.body code{font:13px var(--mono);background:var(--raised);padding:1.5px 5px;border-radius:5px}

.src{margin-top:10px;display:flex;flex-wrap:wrap;gap:6px}
.src a{
  font-size:12px;color:var(--ink-3);text-decoration:none;
  border:1px solid var(--line);border-radius:999px;padding:4px 10px;
  transition:border-color 140ms ease,color 140ms ease;
}
@media (hover:hover) and (pointer:fine){ .src a:hover{color:var(--ink);border-color:var(--line-3)} }

/* печатает */
.dots{display:inline-flex;gap:4px;align-items:center;height:20px}
.dots i{width:5px;height:5px;border-radius:50%;background:var(--ink-4);animation:blink 1.3s ease-in-out infinite}
.dots i:nth-child(2){animation-delay:.16s}
.dots i:nth-child(3){animation-delay:.32s}
@keyframes blink{0%,80%,100%{opacity:.25;transform:translateY(0)}40%{opacity:1;transform:translateY(-2px)}}

/* пустое состояние */
.center{display:flex;align-items:center;justify-content:center;height:100%;padding:20px}
.empty-card{text-align:left}
.empty-badge{
  width:42px;height:42px;display:grid;place-items:center;margin-bottom:14px;
  border:1px dashed var(--line-3);border-radius:13px;color:var(--ink-3);font-size:19px
}

/* ── подсказки-чипсы ────────────────────────────────────── */
.chips{display:flex;gap:7px;overflow-x:auto;padding:9px 14px;border-top:1px solid var(--line);scrollbar-width:none}
.chips::-webkit-scrollbar{display:none}
.chip{
  flex:none;white-space:nowrap;font:13px/1 var(--font);color:var(--ink-2);
  background:var(--bg);border:1px solid var(--line-2);border-radius:999px;padding:8px 12px;cursor:pointer;
  transition:transform 140ms var(--out),background 140ms ease,border-color 140ms ease;
  animation:chipIn 240ms var(--out) both;
}
.chip:active{transform:scale(.96)}
@media (hover:hover) and (pointer:fine){ .chip:hover{background:var(--sunken);border-color:var(--line-3);color:var(--ink)} }
.chip .cmd{font:11.5px var(--mono);color:var(--ink-4);margin-right:6px}
@keyframes chipIn{from{opacity:0;transform:translateY(5px)}to{opacity:1;transform:none}}

/* ── ввод ───────────────────────────────────────────────── */
#bar{padding:9px 12px calc(9px + env(safe-area-inset-bottom));border-top:1px solid var(--line);background:var(--bg)}
.composer{
  display:flex;gap:8px;align-items:flex-end;max-width:var(--measure);margin:0 auto;
  background:var(--sunken);border:1px solid var(--line);border-radius:var(--r-lg);padding:5px 5px 5px 6px;
  transition:border-color 160ms ease;
}
.composer:focus-within{border-color:var(--line-3)}
.composer textarea{
  flex:1;border:0;background:none;padding:8px 4px;max-height:140px;font-size:15px;
}
.composer textarea:focus{box-shadow:none}
#send{
  flex:none;display:grid;place-items:center;width:36px;height:36px;border:0;border-radius:50%;
  background:var(--btn);color:var(--btn-ink);cursor:pointer;
  transition:transform 150ms var(--out),opacity 150ms ease;
}
#send:active{transform:scale(.9)}
#send:disabled{opacity:.3}
#send svg{width:17px;height:17px;stroke-width:1.9}

/* ── левая панель ───────────────────────────────────────── */
#sidebar{
  position:fixed;top:0;left:0;bottom:0;width:min(86vw,330px);z-index:30;
  background:var(--sunken);border-right:1px solid var(--line);
  display:flex;flex-direction:column;
  padding:calc(12px + env(safe-area-inset-top)) 0 calc(10px + env(safe-area-inset-bottom));
  transform:translateX(-101%);transition:transform 280ms var(--drawer);
}
#sidebar.open{transform:translateX(0)}
#scrim{
  position:fixed;inset:0;z-index:29;background:rgba(16,17,20,.3);
  opacity:0;pointer-events:none;transition:opacity 240ms ease;backdrop-filter:blur(1px);
}
#scrim.open{opacity:1;pointer-events:auto}

.sb-head{display:flex;align-items:center;justify-content:space-between;padding:0 10px 0 16px;height:38px}
.sb-section{display:flex;align-items:baseline;justify-content:space-between;padding:14px 16px 7px}
.sb-label{font-size:11.5px;letter-spacing:.09em;text-transform:uppercase;color:var(--ink-4)}
.counter{font:600 11.5px/1 var(--mono);color:var(--ink-3)}

.sb-list{flex:1;overflow-y:auto;padding:0 8px;display:flex;flex-direction:column;gap:1px}
.row{
  display:flex;align-items:center;gap:10px;width:100%;text-align:left;
  padding:9px 8px 9px 10px;border:0;background:none;border-radius:10px;cursor:pointer;color:inherit;
  transition:background 140ms ease,transform 140ms var(--out);
  animation:rowIn 240ms var(--out) both;
}
.row:active{transform:scale(.985)}
@media (hover:hover) and (pointer:fine){ .row:hover{background:var(--hover-s)} }
.row.active{background:var(--bg);box-shadow:var(--shadow-1)}
@keyframes rowIn{from{opacity:0;transform:translateX(-6px)}to{opacity:1;transform:none}}

.dot{flex:none;width:7px;height:7px;border-radius:50%;background:var(--ink-4)}
.dot.ready{background:var(--mark)}
.dot.indexing{background:#d8a33a;animation:pulse 1.2s ease-in-out infinite}
.dot.rejected{background:var(--bad)}
.row .nm{flex:1;min-width:0}
.row .nm b{display:block;font-size:14px;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.row .nm span{display:block;font-size:12px;color:var(--ink-3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.row .kebab{
  flex:none;width:26px;height:26px;display:grid;place-items:center;border:0;background:none;
  color:var(--ink-4);border-radius:7px;cursor:pointer;opacity:.75;transition:opacity 140ms ease,background 140ms ease
}
.row .kebab svg{width:16px;height:16px}
@media (hover:hover) and (pointer:fine){ .row .kebab:hover{opacity:1;background:var(--hover-s)} }
.sb-empty{padding:12px 12px 4px;font-size:13px;color:var(--ink-3);line-height:1.5}

.profile{
  display:flex;align-items:center;gap:10px;margin:8px 8px 0;padding:10px;
  background:none;border:0;border-top:1px solid var(--line);border-radius:0;cursor:pointer;
  text-align:left;color:inherit;transition:background 140ms ease,transform 140ms var(--out);
}
.profile:active{transform:scale(.985)}
@media (hover:hover) and (pointer:fine){ .profile:hover{background:var(--hover-s);border-radius:10px} }
.avatar{
  flex:none;width:32px;height:32px;border-radius:50%;display:grid;place-items:center;
  background:var(--mark-soft);color:var(--mark);font:600 13px/1 var(--font);text-transform:uppercase;
}
.avatar.lg{width:44px;height:44px;font-size:17px}
.who-box{flex:1;min-width:0}
.who-name{display:block;font-size:14px;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.who-sub{display:block;font-size:12px;color:var(--ink-3)}
.plan{
  flex:none;font:600 10.5px/1 var(--font);letter-spacing:.1em;color:var(--mark);
  background:var(--mark-soft);padding:5px 8px;border-radius:999px;
}

/* ── настройки ──────────────────────────────────────────── */
.panel{
  position:fixed;inset:0;z-index:40;background:var(--bg);display:flex;flex-direction:column;
  transform:translateX(100%);transition:transform 280ms var(--drawer);visibility:hidden;
}
.panel.open{transform:none;visibility:visible}
.panel-head{
  display:flex;align-items:center;gap:6px;padding:calc(9px + env(safe-area-inset-top)) 12px 9px;
  border-bottom:1px solid var(--line)
}
.panel-title{font-size:15px;font-weight:600;letter-spacing:-.012em}
.panel-body{flex:1;overflow-y:auto;padding:16px 16px calc(28px + env(safe-area-inset-bottom));max-width:var(--measure);margin:0 auto;width:100%}

.id-card{display:flex;align-items:center;gap:12px;padding:14px;background:var(--sunken);border-radius:var(--r-lg);margin-bottom:22px}
.id-text{flex:1;min-width:0}
.id-name{font-size:16px;font-weight:600;letter-spacing:-.015em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.id-sub{font-size:12.5px;color:var(--ink-3)}

.group{margin-bottom:24px}
.group.tight{margin-bottom:8px}
.group-label{font-size:11.5px;letter-spacing:.09em;text-transform:uppercase;color:var(--ink-4);margin-bottom:9px}
.hint{font-size:12.5px;color:var(--ink-3);line-height:1.5;margin-top:8px}
.group-foot{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:12px}

.stat-row{display:flex;align-items:center;justify-content:space-between;padding:11px 2px;border-bottom:1px solid var(--line);font-size:14px;color:var(--ink-2)}
.stat-row:first-of-type{border-top:1px solid var(--line)}
.stat-row b{color:var(--ink);font-weight:500}

.list-link{
  display:flex;align-items:center;justify-content:space-between;padding:13px 2px;
  border-bottom:1px solid var(--line);color:var(--ink);text-decoration:none;font-size:14.5px;
  transition:padding-left 160ms var(--out)
}
@media (hover:hover) and (pointer:fine){ .list-link:hover{padding-left:5px} }
.chev{font-style:normal;color:var(--ink-4);font-size:13px}

/* ── меню ───────────────────────────────────────────────── */
.menu{
  position:fixed;z-index:50;min-width:188px;background:var(--bg);
  border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--shadow-2);
  padding:5px;transform-origin:var(--origin,top right);
  animation:menuIn 160ms var(--out) both;
}
@keyframes menuIn{from{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}
.menu button{
  display:block;width:100%;text-align:left;padding:9px 11px;border:0;background:none;border-radius:8px;
  font:14px/1.3 var(--font);color:var(--ink);cursor:pointer;transition:background 120ms ease
}
.menu button:active{background:var(--raised)}
@media (hover:hover) and (pointer:fine){ .menu button:hover{background:var(--sunken)} }
.menu button.danger{color:var(--bad)}

/* ── меньше движения ────────────────────────────────────── */
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;
    transition-duration:.01ms!important}
  #sidebar{transition:none}
}

/* ── знак ───────────────────────────────────────────────── */
.brand{display:flex;align-items:center;gap:9px;margin-bottom:18px;color:var(--ink)}
.brand span{font:600 17px/1 var(--font);letter-spacing:-.02em}
.brand.sm{margin:0;gap:7px}
.brand.sm span{font-size:14px}
.logo{width:28px;height:28px;flex:none;stroke-width:3.6}
.brand.sm .logo{width:22px;height:22px}

/* ── вход по коду ───────────────────────────────────────── */
.code-box{margin-top:18px;padding-top:18px;border-top:1px solid var(--line)}
#code{
  font:600 26px/1 var(--mono);letter-spacing:.3em;text-align:center;
  padding:14px 10px;margin-bottom:10px;
}
#code::placeholder{letter-spacing:.3em;color:var(--ink-4);font-weight:400}
.code-box .btn-sm{width:100%}
#login .hint{margin-top:18px}
#login .hint a,#login .hint code{color:var(--ink)}
#login .note{margin-top:10px;min-height:18px}
#login .note.bad{color:var(--bad)}
button.list-link{width:100%;background:none;border:0;border-bottom:1px solid var(--line);
  font-family:var(--font);cursor:pointer;text-align:left}

/* ── десктоп: панель всегда на виду, а не ящиком ────────── */
.btn{text-decoration:none;text-align:center}

@media (min-width:900px){
  #app{grid-template-columns:288px 1fr;grid-template-rows:auto 1fr auto auto;
       grid-template-areas:"side top" "side main" "side chips" "side bar"}
  #sidebar{position:static;transform:none!important;width:auto;grid-area:side;
           border-right:1px solid var(--line);padding-top:16px}
  #scrim{display:none}
  #burger{display:none}
  #coach{display:none}
  #sb-close{display:none}
  #top{grid-area:top}
  .top-mid{text-align:left}
  #main{grid-area:main}
  #prompts{grid-area:chips}
  #bar{grid-area:bar}
  #feed{padding:22px 24px 12px}
  .chips{padding-left:24px;padding-right:24px}
  #bar{padding-left:24px;padding-right:24px}

  /* настройки — боковой лист, а не весь экран */
  .panel{left:auto;width:460px;box-shadow:var(--shadow-2);border-left:1px solid var(--line)}
  .panel-body{padding:20px}
  .sb-head{height:auto;padding-bottom:4px}
}

.ver{
  font:600 10px/1 var(--mono);font-style:normal;letter-spacing:.04em;
  color:var(--mark);background:var(--mark-soft);
  padding:3px 6px;border-radius:999px;margin-left:2px;align-self:center;
}
