:root{color-scheme:dark;--bg:#09121b;--panel:#111e2a;--panel2:#142330;--line:#2a3e4d;--ink:#edf5f4;--muted:#9bafb8;--accent:#8be1ba;--accent-dark:#173b32;--danger:#fa8190}
*{box-sizing:border-box}
[hidden]{display:none!important}
body{margin:0;min-height:100vh;background:radial-gradient(circle at 18% 12%,#17372f 0,transparent 30%),radial-gradient(circle at 85% 90%,#102c39 0,transparent 34%),var(--bg);color:var(--ink);font:15px/1.5 system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif}
body:before{content:"";position:fixed;inset:0;z-index:-1;opacity:.12;background-image:linear-gradient(#fff1 1px,transparent 1px),linear-gradient(90deg,#fff1 1px,transparent 1px);background-size:42px 42px;pointer-events:none}
main{max-width:1200px;margin:auto;padding:32px}
.brand{display:flex;gap:11px;align-items:center;font-size:13px;font-weight:800;letter-spacing:.2em}
.brand-mark{display:grid;place-items:center;width:32px;height:32px;border-radius:9px;background:var(--accent);color:#0b261e;font-size:20px;letter-spacing:0}
.auth-layout{min-height:calc(100vh - 64px);display:grid;grid-template-columns:1.1fr minmax(360px,430px);align-items:center;gap:8vw}
.intro{max-width:600px}.intro .brand{margin-bottom:86px}.eyebrow{font-size:11px;font-weight:800;letter-spacing:.18em;color:var(--accent)}.pulse{display:inline-block;width:7px;height:7px;margin-right:8px;border-radius:50%;background:var(--accent);box-shadow:0 0 0 5px #8be1ba18}
.intro h1{font-size:clamp(42px,5vw,72px);line-height:1.07;letter-spacing:-.055em;margin:19px 0 23px;font-weight:750}.intro h1 em{font-style:normal;color:var(--accent)}.intro>p{font-size:17px;line-height:1.7;color:var(--muted);max-width:510px;margin:0}.intro-foot{display:flex;flex-wrap:wrap;gap:12px;margin-top:55px;color:#a9c8c1;font-size:12px}.intro-foot span{border:1px solid #37604c;border-radius:100px;padding:7px 11px;background:#17382a77}
.card{background:linear-gradient(150deg,#152631ed,#101c28f5);border:1px solid var(--line);border-radius:20px;box-shadow:0 28px 70px #0006}
.auth-card{padding:30px;min-width:0}.card-top{display:flex;justify-content:space-between;gap:12px;color:var(--muted);font-size:10px;font-weight:800;letter-spacing:.15em}.secure-dot{color:var(--accent);letter-spacing:0;font-weight:600}.auth-card h2{font-size:26px;line-height:1.2;letter-spacing:-.025em;margin:32px 0 6px}.subtle{color:var(--muted);margin:0 0 23px}
.tabs{display:flex;gap:6px;background:#09151f;padding:5px;border:1px solid #243b48;border-radius:11px;margin-bottom:24px}.tabs button{flex:1;min-width:0;padding:10px 6px;border:0;background:transparent;color:var(--muted);font-weight:700}.tabs button[aria-selected=true]{background:#294b3e;color:#eafff3;box-shadow:0 3px 9px #0004}
form{display:grid;gap:15px}label{display:grid;gap:7px;font-size:13px;font-weight:650;color:#d9e7e7}.optional{display:inline;color:var(--muted);font-weight:400;margin-left:4px}input,textarea,button{font:inherit;border-radius:10px}input,textarea{width:100%;padding:12px 13px;background:#0b1722;border:1px solid #314653;color:var(--ink);outline:none}input:focus,textarea:focus{border-color:var(--accent);box-shadow:0 0 0 3px #8be1ba22}input::placeholder,textarea::placeholder{color:#79929e}button{cursor:pointer;border:1px solid transparent;padding:10px 14px;transition:background .15s,border-color .15s,transform .15s}button:hover:not(:disabled){transform:translateY(-1px)}button:disabled{opacity:.6;cursor:wait}.primary{display:flex;justify-content:center;align-items:center;gap:10px;background:var(--accent);color:#09241b;font-weight:800;margin-top:4px}.primary:hover:not(:disabled){background:#b0f6d3}.secondary{background:#203a3e;color:#d7f0e7;border-color:#3d625a}.secondary:hover:not(:disabled){background:#2b4a4b}.danger{background:#422c36;color:#ffd8dd;border-color:#804652}.form-hint{margin:0;color:var(--muted);font-size:13px}.note{white-space:pre-wrap;overflow-wrap:anywhere;color:var(--accent);font-size:13px;margin:15px 0 0}.note:empty{display:none}.note.bad{color:var(--danger)}.auth-foot{border-top:1px solid var(--line);padding-top:16px;margin:22px 0 0;color:var(--muted);font-size:11px;text-align:center}
.app-header{display:flex;align-items:center;justify-content:space-between;gap:15px;margin-bottom:22px}.header-actions{display:flex;align-items:center;gap:15px;color:var(--muted)}.header-actions button{background:#21343c;color:var(--ink);border-color:var(--line)}.layout{display:grid;grid-template-columns:280px minmax(0,1fr);gap:18px}.sidebar{padding:18px;max-height:calc(100vh - 120px);overflow:auto}.sidebar h2{font-size:11px;color:var(--muted);letter-spacing:.15em;text-transform:uppercase;margin:12px 0 10px}.sidebar h2:not(:first-child){margin-top:30px}.heading-dot{display:inline-block;width:6px;height:6px;background:var(--accent);border-radius:50%}.contact{display:flex;align-items:center;justify-content:space-between;width:100%;margin:4px 0;text-align:left;background:#172a35;color:var(--ink);border-color:transparent}.contact:hover,.contact.active{background:#244b43;border-color:#4d846b}.online{color:var(--accent)}.offline{color:#778f99}.sidebar>.secondary,#master-tools>.secondary,#master-tools>.danger{width:100%;text-align:left;margin-top:7px}#master-tools{border-top:1px solid var(--line);margin-top:22px;padding-top:3px}#master-tools label{color:var(--muted);font-size:12px;margin:12px 0}
.chat{min-height:calc(100vh - 120px);display:grid;grid-template-rows:auto minmax(0,1fr) auto;overflow:hidden}.chat-heading{padding:22px 24px;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;gap:10px}.chat-heading h2{font-size:22px;letter-spacing:-.025em;margin:3px 0 0}.chat-lock{font-size:12px;color:var(--accent);border:1px solid #396650;border-radius:100px;padding:5px 10px}#messages{min-height:350px;max-height:calc(100vh - 340px);overflow:auto;padding:18px 24px}.empty-state{color:var(--muted);text-align:center;margin:20vh auto 0}.msg{max-width:75%;width:max-content;margin:9px 0;padding:10px 14px;border-radius:14px 14px 14px 4px;background:#233847;white-space:pre-wrap;overflow-wrap:anywhere}.msg.mine{margin-left:auto;background:#205140;border-radius:14px 14px 4px 14px}.meta{font-size:11px;color:#b8d1d1;margin-bottom:3px}#composer{display:flex;align-items:end;gap:10px;padding:16px 20px;border-top:1px solid var(--line)}#composer textarea{resize:vertical;min-height:50px;max-height:180px}#composer button{white-space:nowrap;min-height:50px}dialog{background:var(--panel);color:var(--ink);border:1px solid var(--line);border-radius:16px;max-width:min(90vw,520px);padding:24px}dialog::backdrop{background:#000b}dialog form{gap:20px}#modal-body{white-space:pre-wrap;overflow-wrap:anywhere}
.delivery{margin-top:5px;text-align:right;font-size:11px;color:#c5d2d4}.delivery .bi{font-size:15px;vertical-align:-1px}.delivery.read{color:#83e7bd}.delivery.expired,.delivery.omitted{color:#ffb5bd}
@media(max-width:850px){.auth-layout{grid-template-columns:minmax(0,1fr);gap:26px;max-width:480px;margin:auto;padding:24px 0}.intro{min-width:0}.intro .brand{margin-bottom:26px}.intro h1{font-size:42px}.intro-foot{display:none}.auth-card{padding:24px}.layout{grid-template-columns:1fr}.sidebar{max-height:none}.chat{min-height:70vh}#messages{max-height:60vh}}
@media(max-width:520px){main{padding:14px}.auth-layout{min-height:calc(100vh - 28px)}.intro h1{font-size:38px}.intro>p{font-size:14px}.auth-card{padding:20px}.app-header{align-items:flex-start}.header-actions{flex-direction:column;align-items:end;gap:5px}.chat-heading{padding:16px}#messages{padding:13px}#composer{padding:10px}#composer button{padding:10px}}

/* Public landing and account-link flow */
.site-nav{display:flex;justify-content:space-between;align-items:center;padding:8px 0 28px}.site-nav button{min-width:112px}.bi{font-size:1.06em}.hero{position:relative;padding:90px 0 72px;min-height:570px}.hero h1{font-size:clamp(44px,6.4vw,86px);line-height:1.08;letter-spacing:-.06em;max-width:900px;margin:20px 0}.hero h1 em{font-style:normal;color:var(--accent)}.hero>p{max-width:620px;color:var(--muted);font-size:18px;line-height:1.7}.hero-actions{display:flex;align-items:center;gap:25px;margin-top:30px}.hero-actions .primary{padding:14px 19px}.text-link{color:var(--ink);text-decoration:none}.text-link:hover{color:var(--accent)}.hero-visual{position:absolute;right:2%;bottom:54px;width:36%;height:235px;pointer-events:none}.visual-card{position:absolute;display:flex;align-items:center;gap:13px;padding:19px 21px;border:1px solid #509977;border-radius:16px;background:#163b38d9;box-shadow:0 18px 50px #0008;backdrop-filter:blur(10px);font-size:13px}.visual-card .bi{font-size:23px;color:var(--accent)}.visual-card.first{top:5px;right:12%}.visual-card.second{bottom:14px;left:2%}.visual-line{position:absolute;width:200px;height:90px;top:72px;left:20%;border:1px solid #75dcb2;border-radius:100%;transform:rotate(-22deg);opacity:.5}.feature-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}.feature{padding:27px;min-height:214px;border:1px solid var(--line);border-radius:17px;background:var(--panel)}.feature>.bi{display:grid;place-items:center;width:42px;height:42px;border-radius:12px;background:#224e3d;color:var(--accent);font-size:21px}.feature h2{font-size:18px;margin:20px 0 8px}.feature p{color:var(--muted);margin:0}.how{display:grid;grid-template-columns:1fr 1.2fr;gap:50px;margin:95px 0;padding:40px 0;border-top:1px solid var(--line)}.how h2{font-size:clamp(26px,3vw,42px);letter-spacing:-.04em;line-height:1.15;margin:15px 0}.how ol{list-style:none;padding:0;margin:0}.how li{display:flex;gap:23px;padding:15px 0;border-bottom:1px solid var(--line)}.how li>span{font-size:12px;color:var(--accent);font-weight:800;letter-spacing:.12em}.how strong{font-size:17px}.how p{margin:4px 0;color:var(--muted)}.site-footer{display:flex;justify-content:space-between;gap:20px;border-top:1px solid var(--line);padding:25px 0;color:var(--muted);font-size:12px}.site-footer>span:first-child{letter-spacing:.2em;color:var(--ink);font-weight:800}.site-footer a{color:var(--accent)}
.back-link{background:transparent;color:var(--muted);padding:5px 0;margin-bottom:36px}.back-link:hover{color:var(--accent)}.auth-layout .intro .brand{margin-bottom:70px}.link-button{text-decoration:none;text-align:center;padding:13px}.step-icon{display:grid;place-items:center;width:58px;height:58px;background:#234c40;color:var(--accent);font-size:27px;border-radius:17px;margin:18px 0}.auth-card h3{font-size:22px;margin:0 0 8px}#telegram-step p{color:var(--muted);line-height:1.65;margin:0 0 20px}#telegram-step .wide{margin-top:12px}.wide{width:100%}.sidebar-tip{color:var(--muted);font-size:12px;margin:9px 2px 0}#find-user{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:7px}#find-user input{min-width:0}#find-user button{grid-column:1/-1;padding:10px 14px}#find-user input{grid-column:1/-1}#create-friend-code{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:7px}#create-friend-code input{min-width:0}#create-friend-code button{padding:10px}.invite-card{background:#1b3540;border:1px solid var(--line);border-radius:10px;padding:10px;margin:8px 0}.invite-card strong{display:block;margin-bottom:7px}.invite-actions{display:flex;gap:7px}.invite-actions button{flex:1;padding:7px}.empty-small{color:var(--muted);font-size:12px;margin:9px 0}.contact.active{border-color:var(--accent)}.contact.locked{opacity:.75}.code-card{padding:10px;margin:8px 0;border:1px solid #37584d;border-radius:10px;background:#17352f}.code-card strong{display:block;color:var(--accent);letter-spacing:.12em}.code-card input{font-size:11px;margin:7px 0}.code-card button{width:100%;padding:7px}.code-card small{color:var(--muted)}
@media(max-width:850px){.hero{padding:55px 0 60px;min-height:0}.hero-visual{position:relative;width:100%;max-width:430px;right:auto;bottom:auto;height:170px;margin-top:35px}.feature-grid{grid-template-columns:1fr}.feature{min-height:0}.how{grid-template-columns:1fr;gap:15px;margin:60px 0}.auth-layout .intro .brand{margin-bottom:30px}}
@media(max-width:520px){.hero h1{font-size:42px}.hero>p{font-size:15px}.hero-actions{align-items:stretch;flex-direction:column;gap:18px}.hero-visual{height:155px}.visual-card{padding:12px;font-size:11px}.visual-card.first{right:2%}.visual-card.second{left:1%}.site-footer{flex-direction:column}.how{padding:25px 0}.feature{padding:22px}}

/* The signed-in chat uses the viewport; only contact and message lists scroll. */
body.chat-active{height:100dvh;min-height:0;overflow:hidden}
body.chat-active main{height:100dvh;max-width:1440px;padding:18px 24px}
#app:not([hidden]){height:100%;min-height:0;display:grid;grid-template-rows:auto minmax(0,1fr)}
#app .app-header{min-height:46px;margin-bottom:14px}
#app .layout{min-height:0;height:100%;grid-template-columns:290px minmax(0,1fr)}
#app .sidebar{min-height:0;max-height:none;overflow-y:auto;overscroll-behavior:contain;padding:16px}
.sidebar-actions{display:grid;grid-template-columns:1fr 1fr;gap:7px}
.sidebar-actions button{display:flex;align-items:center;justify-content:center;gap:5px;min-width:0;padding:10px 5px;font-size:12px;white-space:nowrap}
#app .sidebar h2{margin:18px 0 8px}
#app .sidebar h2:first-of-type{margin-top:20px}
#app .chat{height:100%;min-height:0;grid-template-rows:auto minmax(0,1fr) auto}
#app .chat-heading{padding:16px 20px}
#app .chat-heading h2{font-size:20px}
.chat-security{display:flex;align-items:center;gap:8px;flex-shrink:0}
.chat-security button{padding:6px 9px;font-size:11px}
.key-warning{color:#ffbd90!important;border-color:#9c674d!important}
#key-dialog{width:min(92vw,560px);max-height:calc(100dvh - 40px);overflow-y:auto}
#key-dialog .form-hint{margin:0 0 13px}
#key-peer-list{display:flex;flex-wrap:wrap;gap:7px;margin:12px 0}
#key-peer-list button{padding:7px 10px;font-size:12px}
#key-code{display:block;margin:10px 0 16px;padding:13px;border:1px solid var(--line);border-radius:10px;background:#0b1722;color:var(--accent);font:600 13px/1.7 ui-monospace,SFMono-Regular,Consolas,monospace;overflow-wrap:anywhere;user-select:all}
#app #messages{min-height:0;max-height:none;overflow-y:auto;overscroll-behavior:contain;padding:14px 20px}
#app #messages .empty-state{margin:min(16vh,120px) auto 0}
#app #composer{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:10px;padding:12px 16px}
#app #attach-photo{width:52px;height:52px;padding:0;font-size:21px}
#app #attach-photo[aria-busy=true] .bi{display:inline-block;animation:photo-spin 1s linear infinite}
@keyframes photo-spin{to{transform:rotate(360deg)}}
#app .chat-photo{display:block;max-width:min(260px,100%);max-height:320px;border-radius:9px;margin-top:5px;object-fit:contain}
#app #composer textarea{resize:none;min-height:52px;height:52px;max-height:96px;padding:12px;line-height:26px;overflow-y:auto}
#app #composer button{min-height:52px;margin:0}
#master-tools summary{cursor:pointer;color:var(--muted);font-size:12px;font-weight:700;padding:10px 0}
#master-tools[open] summary{color:var(--accent)}
#friend-dialog,#code-dialog{width:min(92vw,460px);max-height:calc(100dvh - 40px);overflow-y:auto}
.dialog-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:12px}
.dialog-heading h2{font-size:24px;letter-spacing:-.03em;margin:3px 0 0}
.dialog-close{background:transparent;color:var(--muted);padding:6px 9px}
.dialog-close:hover{color:var(--ink)}
#friend-dialog .form-hint,#code-dialog .form-hint{margin-bottom:18px}
#friend-dialog form,#code-dialog form{gap:12px}
#code-dialog #friend-codes{max-height:40dvh;overflow-y:auto;margin-top:14px}
@media(max-width:850px){body.chat-active main{padding:10px}#app .layout{grid-template-columns:minmax(0,1fr);grid-template-rows:minmax(120px,27dvh) minmax(0,1fr);gap:10px}#app .sidebar{padding:11px 14px}#app .sidebar h2{margin:11px 0 6px}#app .sidebar h2:first-of-type{margin-top:10px}#app .chat{min-height:0}}
@media(max-width:520px){#app .app-header{min-height:38px;margin-bottom:8px}#app .app-header .brand{font-size:11px;letter-spacing:.1em}#app .app-header .brand-mark{width:27px;height:27px;font-size:17px}#app .header-actions{flex-direction:row;align-items:center;gap:8px;font-size:12px}#app .header-actions button{padding:6px 8px;font-size:12px}#app .layout{grid-template-rows:minmax(110px,25dvh) minmax(0,1fr)}#app .chat-heading{padding:10px 13px}#app .chat-heading h2{font-size:17px}#app .chat-lock{display:none}#app #messages{padding:10px 12px}#app #composer{padding:9px;gap:7px}#app #composer textarea,#app #composer button{min-height:46px;height:46px}#app #composer textarea{padding:9px 11px;line-height:26px}#app #composer button{padding:8px 11px}}

/* Mobile conversations use the whole viewport; contacts open as a drawer. */
#mobile-contacts,.sidebar-mobile-head,.mobile-tip{display:none}
.notification-toggle{display:flex;align-items:center;justify-content:center;gap:8px;width:100%;margin-top:9px;font-size:12px}
.contact-meta{display:flex;align-items:center;gap:7px;flex-shrink:0;font-size:12px}
.unread-badge{display:inline-grid;place-items:center;min-width:19px;height:19px;padding:0 5px;border-radius:20px;background:var(--accent);color:#09241b;font-size:10px;font-weight:800;line-height:1}
#chat-toast{position:fixed;right:24px;bottom:94px;z-index:25;max-width:min(85vw,330px);padding:10px 14px;border:1px solid #5d997d;border-radius:12px;background:#1a4439;color:var(--ink);box-shadow:0 12px 35px #0008;font-size:13px}
@media(max-width:850px){
  #app .layout{display:grid;grid-template-columns:minmax(0,1fr);grid-template-rows:minmax(0,1fr);gap:0}
  #app .sidebar{position:fixed;inset:0 auto 0 0;z-index:31;width:min(87vw,330px);height:100dvh;max-height:none;border-radius:0 18px 18px 0;box-shadow:18px 0 50px #0009;transform:translateX(-105%);visibility:hidden;pointer-events:none;transition:transform .2s ease,visibility .2s}
  body.mobile-sidebar-open #app .sidebar{transform:translateX(0);visibility:visible;pointer-events:auto}
  #sidebar-backdrop:not([hidden]){position:fixed;inset:0;z-index:30;display:block;background:#000a}
  #app .chat{height:100%;min-height:0}
  #mobile-contacts{position:relative;display:inline-flex;align-items:center;justify-content:center;min-width:38px;min-height:36px;padding:7px 9px;font-size:17px}
  #mobile-unread-count:not([hidden]){position:absolute;top:-5px;right:-6px;box-shadow:0 0 0 2px var(--bg)}
  .sidebar-mobile-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px;font-size:15px}
  .sidebar-mobile-head button{background:transparent;color:var(--ink);padding:5px 9px}
  .mobile-tip{display:block;margin-top:8px;font-size:12px}
  #app .sidebar .contact{gap:8px}
  #app .sidebar .contact>span:first-child{min-width:0;overflow:hidden;text-overflow:ellipsis}
}
@media(max-width:520px){
  body.chat-active main{padding:7px}
  #app .app-header{gap:6px;margin-bottom:7px}
  #app .app-header .brand{gap:5px;font-size:10px;letter-spacing:.08em}
  #app .app-header .brand-mark{width:25px;height:25px;font-size:15px}
  #app .header-actions{gap:5px}
  #app #who{max-width:72px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:11px}
  #app .header-actions #logout{padding:5px 6px;font-size:11px}
  #app .header-actions #logout .logout-label{display:none}
  #app .layout{grid-template-rows:minmax(0,1fr)}
  #app .chat-heading{min-height:55px}
  #app .chat-heading h2{max-width:130px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  #app .chat-security button{max-width:98px;padding:5px 7px;font-size:10px;line-height:1.2}
  #app #messages .empty-state{margin:min(18vh,100px) auto 0}
  #chat-toast{left:10px;right:10px;bottom:69px;max-width:none}
}
@media(max-width:370px){#app .app-header .brand>span:last-child{display:none}}
@media(max-width:520px){#app #attach-photo{width:46px;height:46px;padding:0;font-size:19px}}
