/* ============================================================
   Lumo — базовые токены + экраны + ДЕСКТОП-РАСКЛАДКА
   (единый источник правды по layout; neo_design.css только красит)
   ============================================================ */
#fileOpenNotice{display:none!important}
:root{
  --bg:#030714; --bg-chat:#050a1a;
  --panel:rgba(8,16,36,.88); --panel2:rgba(13,25,53,.82);
  --panel-2:rgba(13,25,53,.82);
  --hover:rgba(73,115,255,.12);
  --in:linear-gradient(180deg,rgba(16,29,59,.96),rgba(10,19,43,.94));
  --in-solid:#141d3b;
  --out:linear-gradient(135deg,#1677ff 0%,#2650ff 58%,#7b39ff 100%);
  --out-2:#2348ee; --out-solid:#2a5ae8;
  --text:#f4f7ff; --muted:#7f90b3;
  --accent:#2786ff; --accent-2:#8a5bff; --link:#78b2ff;
  --green:#17e37e; --danger:#ff416c;
  --line:rgba(114,155,255,.15); --line-strong:rgba(78,137,255,.35);
  --chip:rgba(8,14,24,.55); --chip-tx:#eaf0f8;
  --chipbg:rgba(8,14,24,.55); --chiptx:#eaf0f8;
  --owntx:#fff; --ownmeta:rgba(255,255,255,.72);
  --own-tx:#fff; --own-meta:rgba(255,255,255,.72);
  --tick:rgba(255,255,255,.55); --tickread:#b8d8ff; --tick-read:#b8d8ff;
  --patcol:rgba(110,147,230,.045); --pat:rgba(110,147,230,.045);
  --shadow:rgba(0,0,0,.6);
  --radius:22px;
  --sat:env(safe-area-inset-top,0px); --sab:env(safe-area-inset-bottom,0px);
  --sal:env(safe-area-inset-left,0px); --sar:env(safe-area-inset-right,0px);
  --font:ui-sans-serif,-apple-system,BlinkMacSystemFont,"SF Pro Display",
         "SF Pro Text",Inter,"Segoe UI",Roboto,sans-serif;
}
html[data-theme="light"]{
  --bg:#eaf0fb; --bg-chat:#e7eefc;
  --panel:rgba(250,252,255,.9); --panel2:rgba(238,244,255,.95);
  --panel-2:rgba(238,244,255,.95);
  --hover:rgba(43,111,255,.08);
  --in:linear-gradient(180deg,#ffffff,#eff5ff); --in-solid:#ffffff;
  --out:linear-gradient(135deg,#3b82f6,#6366f1); --out-2:#3b82f6;
  --out-solid:#3b82f6;
  --text:#1a2440; --muted:#6d7994;
  --accent:#327cf1; --accent-2:#765cff; --link:#3270d6;
  --green:#12b866; --danger:#e5304f;
  --line:rgba(38,78,150,.12); --line-strong:rgba(50,124,241,.28);
  --chip:rgba(20,36,64,.38); --chip-tx:#fff;
  --chipbg:rgba(20,36,64,.38); --chiptx:#fff;
  --owntx:#12305a; --ownmeta:rgba(18,48,90,.5);
  --own-tx:#12305a; --own-meta:rgba(18,48,90,.5);
  --tick:rgba(18,48,90,.4); --tickread:#1a8a4a; --tick-read:#1a8a4a;
  --patcol:rgba(20,36,64,.08); --pat:rgba(20,36,64,.08);
  --shadow:rgba(26,51,95,.18);
}

*{margin:0;padding:0;box-sizing:border-box;-webkit-tap-highlight-color:transparent}
[hidden]{display:none!important}
html,body{height:100%}
body{font-family:var(--font);background:var(--bg);color:var(--text);
  overflow:hidden;overscroll-behavior:none;-webkit-font-smoothing:antialiased;
  letter-spacing:-.011em;touch-action:manipulation;-webkit-text-size-adjust:100%}
button{font-family:inherit;color:inherit;cursor:pointer}
button,input,textarea,a{touch-action:manipulation}
:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
a{color:var(--link)}

.av{display:flex;align-items:center;justify-content:center;border-radius:50%;
  color:#fff;font-weight:700;flex:none;user-select:none;position:relative;
  box-shadow:inset 0 -8px 16px rgba(0,0,0,.18)}
.dot{width:8px;height:8px;border-radius:50%;background:var(--green);flex:none}
.badge{background:linear-gradient(135deg,#2588ff,#7048ff);color:#fff;
  font-size:11.5px;font-weight:700;min-width:20px;height:20px;border-radius:10px;
  display:inline-flex;align-items:center;justify-content:center;padding:0 6px;
  box-shadow:0 4px 10px rgba(59,158,255,.35)}
.icon-btn{width:40px;height:40px;border:none;border-radius:12px;
  background:transparent;color:var(--muted);display:flex;align-items:center;
  justify-content:center;transition:background .15s,color .15s}
.icon-btn:hover{background:var(--hover);color:var(--text)}

/* ---------- экраны (мобильная база) ---------- */
.screen{position:fixed;inset:0;display:flex;flex-direction:column;
  background:var(--bg);transform:translateX(100%);
  transition:transform .28s cubic-bezier(.32,.72,.25,1);z-index:5}
.screen.open{transform:translateX(0)}







/* ---------- шапки ---------- */
.chat-head{display:flex;align-items:center;gap:10px;
  padding:calc(var(--sat) + 8px) 10px 10px;
  background:color-mix(in srgb,var(--panel) 88%,transparent);
  backdrop-filter:blur(18px);-webkit-backdrop-filter:blur(18px);
  border-bottom:1px solid var(--line);flex:none}
.backBtn{background:none;border:none;color:var(--accent);font-size:30px;
  line-height:1;padding:2px 8px 6px;font-weight:300}
.chat-head .av{width:42px;height:42px;font-size:17px}
.ch-info{flex:1;min-width:0}
.ch-title{font-weight:700;font-size:16.5px;white-space:nowrap;
  overflow:hidden;text-overflow:ellipsis}
.ch-sub{color:var(--muted);font-size:12.5px}
.ch-sub.typing{color:var(--link)}

/* ---------- оверлеи/шиты/служебное ---------- */
.overlay{position:fixed;inset:0;z-index:20;background:rgba(2,6,18,.62);
  backdrop-filter:blur(12px) saturate(1.15);
  -webkit-backdrop-filter:blur(12px) saturate(1.15);
  display:flex;align-items:flex-end;justify-content:center}
.sheet{background:linear-gradient(180deg,rgba(11,22,48,.98),rgba(5,12,27,.98));
  width:100%;max-width:480px;border-radius:22px 22px 0 0;
  padding:8px 10px calc(var(--sab) + 14px);animation:up .25s ease;
  border:1px solid rgba(80,132,238,.2);border-bottom:none;
  box-shadow:0 -20px 70px rgba(0,0,0,.5)}
html[data-theme="light"] .sheet{background:linear-gradient(180deg,#fff,#f2f6ff);
  border-color:var(--line)}
.sheet::before{content:"";display:block;width:36px;height:4px;border-radius:999px;
  background:rgba(255,255,255,.18);margin:4px auto 10px}
html[data-theme="light"] .sheet::before{background:rgba(20,36,64,.18)}
@keyframes up{from{transform:translateY(40px);opacity:.5}to{transform:none;opacity:1}}
@keyframes fade{from{opacity:0}to{opacity:1}}
@keyframes rise{from{opacity:0;transform:translateY(16px)}to{opacity:1;transform:none}}

#toast{position:fixed;left:50%;bottom:calc(var(--sab) + 72px);
  transform:translateX(-50%) translateY(12px);background:var(--panel-2);
  color:var(--text);padding:11px 16px;border-radius:14px;font-size:14px;
  opacity:0;pointer-events:none;z-index:60;transition:opacity .2s,transform .2s;
  max-width:90%;border:1px solid var(--line);box-shadow:0 12px 32px var(--shadow)}
#toast.show{opacity:1;transform:translateX(-50%) translateY(0)}
#reconnect{position:fixed;top:calc(var(--sat) + 8px);left:50%;
  transform:translateX(-50%);background:var(--danger);color:#fff;
  padding:7px 14px;border-radius:999px;font-size:13px;font-weight:600;
  z-index:50;box-shadow:0 8px 22px rgba(255,65,108,.35)}
#viewer{position:fixed;inset:0;z-index:40;background:rgba(0,0,0,.92);
  display:flex;align-items:center;justify-content:center;cursor:zoom-out}
#viewer img{max-width:100%;max-height:100%;object-fit:contain}

/* ---------- обои ---------- */
html[data-wp="1"] #msgs{
  background-image:radial-gradient(var(--pat) 1.2px,transparent 1.2px);
  background-size:14px 14px}
html[data-wp="2"] #msgs{
  background-image:linear-gradient(var(--pat) 1px,transparent 1px),
    linear-gradient(90deg,var(--pat) 1px,transparent 1px);
  background-size:18px 18px}
html[data-wp="3"] #msgs{
  background-image:repeating-linear-gradient(135deg,
    var(--pat) 0 2px,transparent 2px 12px)}

*::-webkit-scrollbar{width:6px;height:6px}
*::-webkit-scrollbar-track{background:transparent}
*::-webkit-scrollbar-thumb{background:rgba(128,150,190,.3);border-radius:3px}
*::-webkit-scrollbar-thumb:hover{background:rgba(128,150,190,.5)}

/* ============================================================
   ★★★ ДЕСКТОП-РАСКЛАДКА ≥900px — ЕДИНСТВЕННЫЙ ИСТОЧНИК ★★★
   Живёт здесь, чтобы никакой другой файл не мог её сломать.
   ============================================================ */
@media (min-width:900px){
  body.has-app{
    display:flex!important;flex-direction:row!important;flex-wrap:nowrap!important;
    align-items:stretch!important;
    padding:18px!important;gap:14px!important;
    background:
      radial-gradient(900px 650px at 4% -5%,rgba(33,102,255,.23),transparent 58%),
      radial-gradient(700px 520px at 94% 105%,rgba(119,50,255,.2),transparent 55%),
      radial-gradient(500px 380px at 50% 50%,rgba(22,80,210,.08),transparent 65%),
      #020611!important;
  }
  html[data-theme="light"] body.has-app{
    background:radial-gradient(900px 500px at 10% -20%,
      rgba(43,140,255,.18),transparent 55%),#dfe8f3!important;
  }
  
  
  
  
  /* Do NOT force display when [hidden] — otherwise the list panel
     leaks under the login screen if body still has .has-app */
  
  
  
  
  
  
  /* Settings: always full-screen sheet (no broken modal display:none) */
  
  
  
  
  
  
}

/* ============================================================
   Laptop refinement: 900–1399px
   Более плотная и стабильная desktop-сетка для ноутбуков.
   ============================================================ */
@media (min-width:900px) and (max-width:1399px){
  body.has-app{
    padding:12px !important;
    gap:12px !important;
  }

  

  

  

  

  

  

  

  

  

  

}

/* Очень узкие ноутбучные окна: убираем боковой rail, чтобы список не сжимался. */


/* Невысокие ноутбуки: уменьшаем вертикальный хром, чтобы сообщения не зажимались. */
@media (min-width:900px) and (max-height:800px){
  body.has-app{ padding:9px !important; gap:10px !important; }
  
  
  
  
  
}

/* ============================================================
   Final laptop layout — rail всегда слева и сверху.
   Структура: [rail][list-main], внутри list-main: [header][chatList].
   ============================================================ */





/* Подтверждение всегда поверх настроек / профилей / чата */
#confirmWrap {
  z-index: 100 !important;
}
#confirmWrap .sheet {
  position: relative;
  z-index: 101;
}


#chatMenuBtn, .neo-head-badge {
  z-index: 8 !important;
  pointer-events: auto !important;
  position: relative !important;
}

/* profile click fix */


html[data-wp="4"] #msgs{
  background-image: repeating-linear-gradient(0deg, transparent, transparent 24px, rgba(59,158,255,.05) 24px, rgba(59,158,255,.05) 25px) !important;
}
html[data-wp="5"] #msgs{
  background-image:
    radial-gradient(circle at 10% 20%, rgba(34,211,238,.1), transparent 35%),
    radial-gradient(circle at 90% 80%, rgba(244,114,182,.08), transparent 40%) !important;
}
html[data-wp="6"] #msgs{
  background-image: radial-gradient(circle at 50% 0%, rgba(167,139,250,.12), transparent 45%) !important;
}

/* ---------- Telegram-style hand-drawn wallpaper ---------- */
html[data-wp="7"] #msgs{
  background-image:url("data:image/svg+xml,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20width%3D'360'%20height%3D'360'%20viewBox%3D'0%200%20360%20360'%20fill%3D'none'%3E%0A%3Cg%20stroke%3D'%236d86ae'%20stroke-width%3D'2'%20stroke-linecap%3D'round'%20stroke-linejoin%3D'round'%20opacity%3D'.24'%3E%0A%3Cpath%20d%3D'M35%2058l15-5%2012%207-9%209-18-4z'%2F%3E%3Cpath%20d%3D'M48%2053l-2%2014%2010%202'%2F%3E%0A%3Cpath%20d%3D'M119%2034c10-8%2025-8%2034%200%208%208%208%2020%200%2028-10%208-24%208-34%200-8-8-8-20%200-28z'%2F%3E%3Cpath%20d%3D'M125%2048h.5M146%2048h.5M128%2055c4%204%2011%204%2015%200'%2F%3E%0A%3Cpath%20d%3D'M232%2042l7%209%2011%201-8%207%202%2011-10-5-10%205%202-11-8-7%2011-1z'%2F%3E%0A%3Cpath%20d%3D'M302%2028l17%208-14%204%205%2012-18-10z'%2F%3E%0A%3Cpath%20d%3D'M33%20160c16-12%2034-12%2046%200l-3%2019-19%205-17-7z'%2F%3E%3Cpath%20d%3D'M50%20171l8%207%209-12'%2F%3E%0A%3Cpath%20d%3D'M139%20140l14%2014%2018-18'%2F%3E%3Cpath%20d%3D'M143%20162c9%208%2020%208%2028%200'%2F%3E%0A%3Cpath%20d%3D'M240%20130c-10%200-18%208-18%2018s8%2018%2018%2018%2018-8%2018-18-8-18-18-18z'%2F%3E%3Cpath%20d%3D'M240%20130v36M222%20148h36'%2F%3E%0A%3Cpath%20d%3D'M307%20151c0-12%2015-18%2026-8%2011-10%2026-4%2026%208%200%2015-20%2024-26%2030-6-6-26-15-26-30z'%2F%3E%0A%3Cpath%20d%3D'M60%20278l9-5%207%205%201%209-7%206-9-3-3-7z'%2F%3E%3Cpath%20d%3D'M74%20278l6-10'%2F%3E%0A%3Cpath%20d%3D'M163%20255c8-9%2022-9%2029%200%207%208%206%2019-1%2026l-13%2012-14-12c-7-7-8-18-1-26z'%2F%3E%0A%3Cpath%20d%3D'M252%20272l4-13%208%2010%2013%202-10%208%203%2013-11-6-11%206%203-13-10-8z'%2F%3E%0A%3Cpath%20d%3D'M319%20255c-3%208-1%2015%206%2020l-9%208'%2F%3E%3Cpath%20d%3D'M335%20257c3%208%201%2015-6%2020l9%208'%2F%3E%0A%3C%2Fg%3E%3C%2Fsvg%3E") !important;
  background-size:360px 360px;
  background-repeat:repeat;
}
html[data-theme="light"][data-wp="7"] #msgs{
  background-image:url("data:image/svg+xml,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20width%3D'360'%20height%3D'360'%20viewBox%3D'0%200%20360%20360'%20fill%3D'none'%3E%0A%3Cg%20stroke%3D'%23456b98'%20stroke-width%3D'2'%20stroke-linecap%3D'round'%20stroke-linejoin%3D'round'%20opacity%3D'.24'%3E%0A%3Cpath%20d%3D'M35%2058l15-5%2012%207-9%209-18-4z'%2F%3E%3Cpath%20d%3D'M48%2053l-2%2014%2010%202'%2F%3E%0A%3Cpath%20d%3D'M119%2034c10-8%2025-8%2034%200%208%208%208%2020%200%2028-10%208-24%208-34%200-8-8-8-20%200-28z'%2F%3E%3Cpath%20d%3D'M125%2048h.5M146%2048h.5M128%2055c4%204%2011%204%2015%200'%2F%3E%0A%3Cpath%20d%3D'M232%2042l7%209%2011%201-8%207%202%2011-10-5-10%205%202-11-8-7%2011-1z'%2F%3E%0A%3Cpath%20d%3D'M302%2028l17%208-14%204%205%2012-18-10z'%2F%3E%0A%3Cpath%20d%3D'M33%20160c16-12%2034-12%2046%200l-3%2019-19%205-17-7z'%2F%3E%3Cpath%20d%3D'M50%20171l8%207%209-12'%2F%3E%0A%3Cpath%20d%3D'M139%20140l14%2014%2018-18'%2F%3E%3Cpath%20d%3D'M143%20162c9%208%2020%208%2028%200'%2F%3E%0A%3Cpath%20d%3D'M240%20130c-10%200-18%208-18%2018s8%2018%2018%2018%2018-8%2018-18-8-18-18-18z'%2F%3E%3Cpath%20d%3D'M240%20130v36M222%20148h36'%2F%3E%0A%3Cpath%20d%3D'M307%20151c0-12%2015-18%2026-8%2011-10%2026-4%2026%208%200%2015-20%2024-26%2030-6-6-26-15-26-30z'%2F%3E%0A%3Cpath%20d%3D'M60%20278l9-5%207%205%201%209-7%206-9-3-3-7z'%2F%3E%3Cpath%20d%3D'M74%20278l6-10'%2F%3E%0A%3Cpath%20d%3D'M163%20255c8-9%2022-9%2029%200%207%208%206%2019-1%2026l-13%2012-14-12c-7-7-8-18-1-26z'%2F%3E%0A%3Cpath%20d%3D'M252%20272l4-13%208%2010%2013%202-10%208%203%2013-11-6-11%206%203-13-10-8z'%2F%3E%0A%3Cpath%20d%3D'M319%20255c-3%208-1%2015%206%2020l-9%208'%2F%3E%3Cpath%20d%3D'M335%20257c3%208%201%2015-6%2020l9%208'%2F%3E%0A%3C%2Fg%3E%3C%2Fsvg%3E") !important;
}
html[data-wp="8"] #msgs{
  background-image:
    radial-gradient(circle at 28px 34px, rgba(84,139,224,.10) 0 2px, transparent 3px),
    radial-gradient(circle at 112px 88px, rgba(140,96,220,.09) 0 3px, transparent 4px),
    radial-gradient(circle at 204px 48px, rgba(84,139,224,.08) 0 2px, transparent 3px),
    radial-gradient(circle at 282px 124px, rgba(140,96,220,.08) 0 3px, transparent 4px);
  background-size: 320px 220px;
}
html[data-wp="9"] #msgs{
  background-image:
    radial-gradient(180px 110px at 15% 20%, rgba(98,145,230,.10), transparent 70%),
    radial-gradient(220px 140px at 84% 78%, rgba(146,106,245,.08), transparent 70%),
    radial-gradient(170px 100px at 60% 42%, rgba(72,191,180,.06), transparent 72%);
}

/* WebRTC remote audio is an active media element without visual UI. */
#remoteAudio{position:absolute;width:1px;height:1px;opacity:.001;pointer-events:none;left:-9999px;top:-9999px;}

/* v159 folder tabs */
.folder-tabs{display:flex;gap:6px;overflow-x:auto;padding:7px 10px 4px;scrollbar-width:none;white-space:nowrap}
.folder-tabs::-webkit-scrollbar{display:none}
.folder-tab{flex:none;border:0;background:var(--panel-2);color:var(--muted);padding:7px 12px;border-radius:999px;font-weight:700;font-size:12px}
.folder-tab.on{background:var(--accent);color:#fff}
.folder-add{flex:none;border:1px dashed var(--line-strong);background:transparent;color:var(--link);width:32px;height:30px;border-radius:999px;font-size:18px}
.schedule-modal{position:fixed;inset:0;z-index:80;display:flex;align-items:flex-end;justify-content:center}
.schedule-back{position:absolute;inset:0;background:rgba(2,6,18,.58);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px)}
.schedule-card{position:relative;width:min(100%,480px);padding:16px 16px calc(var(--sab) + 18px);border-radius:24px 24px 0 0;background:var(--panel);border:1px solid var(--line);box-shadow:0 -20px 60px var(--shadow)}
.schedule-card header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:16px}.schedule-card h3{margin:3px 0 0}.schedule-kicker{font-size:10px;letter-spacing:.12em;color:var(--link);font-weight:800}.schedule-card label{display:grid;gap:7px;color:var(--muted);font-size:12px;font-weight:700}.schedule-card input{padding:12px;border-radius:14px;border:1px solid var(--line);background:var(--panel-2);color:var(--text);font-size:16px}.schedule-preview{padding:11px 12px;margin-bottom:14px;border-radius:14px;background:var(--panel-2);color:var(--text);white-space:pre-wrap;overflow:hidden;max-height:96px}.schedule-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:16px}.schedule-actions button{border:0;border-radius:13px;padding:10px 14px;background:var(--panel-2);color:var(--text);font-weight:700}.schedule-actions button:last-child{background:var(--accent);color:#fff}

#confirmWrap{z-index:10050!important}






/* FORCE SET OPEN */
/* Persistent failure notice stays visible if initialization stops before the app UI mounts. */
.lumo-error-report{position:fixed;z-index:99999;left:12px;right:12px;top:max(12px,env(safe-area-inset-top));margin:auto;max-width:720px;padding:12px 16px;border:1px solid #c96666;border-radius:12px;background:#3d2024;color:#fff;font:14px/1.45 system-ui,sans-serif;box-shadow:0 8px 32px #0007}
