@font-face{font-family:Vazirmatn;src:url('/static/fonts/Vazirmatn.ttf') format('truetype');font-weight:100 900;font-style:normal;font-display:swap}
:root{--bg:#0d0d0d;--panel:#171717;--line:#323232;--green:#e2e2e2;--muted:#909090;--text:#ececec;--accent:#d1d1d1}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);font-family:Vazirmatn,Tahoma,Arial,sans-serif;font-size:14px}button,input,textarea{font:inherit}button{cursor:pointer}button:disabled{opacity:.5;cursor:wait}button:focus-visible,input:focus-visible,textarea:focus-visible{outline:2px solid var(--green);outline-offset:3px}[hidden]{display:none!important}input,textarea{color:var(--text);background:#101010;border:1px solid var(--line);border-radius:10px;padding:13px 15px;outline:none}input::placeholder,textarea::placeholder{color:#7d7d7d}button{border:0}.brand{display:flex;align-items:center;gap:13px;font-size:26px;font-weight:700}.brand-en{display:block;font:9px/2 monospace;letter-spacing:2px;color:var(--muted)}.logo{display:grid;place-items:center;width:45px;height:45px;background:#e2e2e212;border:1px solid #e2e2e244;border-radius:12px;color:var(--green);font-size:34px}.auth-shell{min-height:100dvh;display:grid;grid-template-columns:1fr 1fr;max-width:1450px;margin:auto}.auth-story{position:relative;padding:55px 12%;overflow:hidden;border-left:1px solid var(--line);background:radial-gradient(ellipse at 0% 70%,#40404044,transparent 65%)}.eyebrow{display:block;color:var(--green);font:10px monospace;letter-spacing:2px;direction:ltr}.auth-story .eyebrow{margin-top:85px;text-align:right}.auth-story h1{font-size:52px;line-height:1.55;margin:20px 0;letter-spacing:-2px}.auth-story h1 em{font-style:normal;color:var(--green)}.auth-story p{color:var(--muted);line-height:2.2}.auth-story small{color:var(--muted);font-size:10px}.art{height:220px;display:flex;align-items:center;justify-content:center;position:relative;direction:ltr;max-width:340px}.orb{font-size:75px;color:var(--green);text-shadow:0 0 45px #e2e2e255}.art>span{position:absolute;bottom:27px;font:10px monospace;letter-spacing:8px;color:#818181}.orbit{position:absolute;width:230px;height:110px;border:1px solid #c2c2c233;border-radius:50%;transform:rotate(-24deg)}.o2{transform:rotate(24deg)}.auth-side{display:flex;align-items:center;justify-content:center;padding:40px}.auth-card{width:100%;max-width:370px}.pill{font:10px monospace;color:var(--green);border:1px solid #79797955;background:#c0c0c00a;border-radius:30px;padding:7px 11px;white-space:nowrap}.auth-card>.pill{font:11px Tahoma}.auth-card h2{font-size:29px;margin:28px 0 10px}.auth-card>p{color:var(--muted);font-size:12px;line-height:1.9}.auth-tabs{display:flex;background:#1b1b1b;border:1px solid var(--line);padding:4px;border-radius:10px;gap:4px;margin:24px 0}.auth-tabs button{flex:1;background:transparent;color:var(--muted);padding:11px;border-radius:7px}.auth-tabs button.active{background:#3a3a3a;color:var(--green)}.auth-card label{display:block;margin:17px 0;font-size:12px}.auth-card input{display:block;width:100%;margin-top:9px}.primary{background:var(--green);color:#1f1f1f;border-radius:10px;padding:14px 20px;font-weight:700;width:100%;margin-top:5px}.auth-card .auth-note{font-size:10px;line-height:2;color:#7d7d7d;margin-top:22px}.form-error{color:#bebebe!important;min-height:18px}.app-shell{height:100dvh;display:grid;grid-template-columns:310px 1fr;max-width:1600px;margin:auto;border-inline:1px solid var(--line)}.sidebar{background:#151515;border-left:1px solid var(--line);display:flex;flex-direction:column;min-height:0}.side-brand{padding:24px;display:flex;justify-content:space-between;align-items:center}.side-brand .brand{font-size:21px}.side-brand .logo{width:36px;height:36px;font-size:27px}.self-card{display:flex;gap:12px;align-items:center;margin:2px 17px 20px;padding:13px;background:#202020;border:1px solid var(--line);border-radius:12px}.avatar{width:40px;height:40px;flex-shrink:0;border-radius:13px;display:grid;place-items:center;background:#373737;color:#e8e8e8;font-size:17px}.self-card>div{flex:1;min-width:0}.self-card strong,.chat-header strong{display:block;font-size:13px;overflow:hidden;text-overflow:ellipsis}.self-card span[dir],.chat-header span[dir]{display:block;text-align:right;color:var(--muted);font:11px/1.8 monospace}.icon{background:transparent;color:var(--muted);padding:8px;font-size:20px;border-radius:6px}.icon:hover{background:#2e2e2e;color:var(--green)}.search-box{margin:0 17px;display:flex;align-items:center;background:#0d0d0d;border:1px solid var(--line);border-radius:9px;padding-right:12px;color:var(--muted);font-size:24px}.search-box input{border:0;background:none;min-width:0;width:100%;font-size:11px;padding:12px}.list-label{display:flex;justify-content:space-between;padding:24px 22px 12px;font-size:10px;color:var(--muted)}#connection{color:#b3b3b3;font-size:9px}.contacts{flex:1;overflow-y:auto;padding:0 10px}.contact{width:100%;border:1px solid transparent;display:flex;align-items:center;gap:12px;padding:14px 10px;background:none;color:var(--text);text-align:right;border-radius:11px;margin-bottom:5px}.contact:hover{background:#232323}.contact.selected{background:#2f2f2f;border-color:#e2e2e233}.contact-info{flex:1;min-width:0}.contact strong{font-size:12px;display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.contact small{display:block;color:var(--muted);margin-top:6px;font:10px monospace;direction:ltr;text-align:right}.unread{font:11px monospace;background:var(--green);color:#262626;border-radius:20px;padding:4px 7px}.list-empty{color:var(--muted);font-size:12px;text-align:center;padding:35px 15px;line-height:2}.sidebar-footer{padding:20px;font-size:10px;color:#8a8a8a;border-top:1px solid var(--line)}.signal-dot{display:inline-block;width:5px;height:5px;background:var(--green);border-radius:50%;margin-left:5px}.chat{min-width:0;min-height:0;background-image:radial-gradient(#63636315 1px,transparent 1px);background-size:22px 22px}.welcome{height:100%;display:flex;align-items:center;justify-content:center;flex-direction:column;text-align:center;padding:24px}.welcome-mark{font-size:80px;color:var(--green);margin-bottom:28px;text-shadow:0 0 80px #e1e1e144}.welcome h1{font-size:32px;margin:20px 0 5px}.welcome p{line-height:2;color:var(--muted);font-size:13px}.hint-chip{font-size:10px;color:#8c8c8c;margin-top:30px}#shareName{font:15px monospace;color:var(--green);margin-top:12px}#conversation{display:flex;height:100%;flex-direction:column;min-width:0}.chat-header{display:flex;align-items:center;gap:12px;border-bottom:1px solid var(--line);padding:20px 28px;background:#171717dd;min-height:85px}.chat-header>div{flex:1}.chat-badge{font-size:10px;color:#a7a7a7}.messages{flex:1;overflow:auto;padding:22px 30px;scroll-behavior:smooth;overscroll-behavior:contain}#messageList{display:flex;flex-direction:column;gap:15px}.message{display:flex;flex-direction:column;max-width:78%;min-width:110px;align-self:flex-end}.message.own{align-self:flex-start}.bubble{padding:14px 17px;border:1px solid #3b3b3b;border-radius:16px 16px 16px 4px;background:#1d1d1d;position:relative;overflow:hidden;isolation:isolate}.own .bubble{border-color:#7c7c7c55;background:#353535;border-radius:16px 16px 4px 16px}.message-text{white-space:pre-wrap;overflow-wrap:anywhere;line-height:1.9;font-size:14px;min-height:27px;position:relative;z-index:1}.cipher-text{font-family:monospace;color:#d5d5d5;direction:ltr;text-align:left;letter-spacing:1px;font-size:13px}.message-meta{display:flex;gap:8px;align-items:center;font-size:9px;color:#818181;padding:6px 5px}.own .message-meta{color:#a4a4a4}.message-meta button{color:inherit;background:transparent;padding:0;font-size:10px}.bubble.scanning{border-color:#e0e0e0;box-shadow:0 0 25px #d9d9d918}.bubble.scanning:after{content:'';position:absolute;inset-inline:0;height:90%;top:-90%;z-index:2;pointer-events:none;background:linear-gradient(transparent,#d9d9d922 80%,#e0e0e055 98%,#efefef);border-bottom:2px solid #efefef;animation:sweep 1.5s linear forwards}.scanning .message-text{text-shadow:0 0 12px #d9d9d966;color:#ebebeb}.empty-chat{text-align:center;color:var(--muted);font-size:12px;padding-top:50px}.older{display:block;margin:0 auto 20px;background:#262626;color:var(--muted);padding:8px 16px;border:1px solid var(--line);border-radius:20px;font-size:11px}.composer{background:#171717;border:1px solid var(--line);border-radius:14px;margin:12px 26px 22px;padding:13px;display:grid;grid-template-columns:1fr 44px;gap:8px}.composer textarea{border:0;background:none;resize:none;padding:8px 6px;min-height:43px;max-height:140px;font-size:14px;line-height:1.8}.send{background:var(--green);color:#292929;border-radius:11px;font-size:26px;align-self:end;height:43px}.composer-foot{grid-column:1/-1;display:flex;justify-content:space-between;font-size:9px;color:#838383;border-top:1px solid #343434;padding-top:10px}.chat-error{font-size:11px;color:#c4c4c4;padding:0 28px;line-height:1.8}.toast{position:fixed;bottom:22px;left:50%;transform:translateX(-50%);padding:12px 24px;max-width:90%;background:var(--green);color:#212121;border-radius:10px;z-index:10;font-size:12px}.mobile-only{display:none}@keyframes sweep{to{top:100%}}@media(max-width:760px){.auth-shell{display:block}.auth-story{padding:24px;border:0}.auth-story .eyebrow,.auth-story h1,.auth-story p,.auth-story .art,.auth-story small{display:none}.auth-side{padding:10px 24px 30px}.auth-card{max-width:420px}.auth-card h2{font-size:26px}.app-shell{display:block;border:0}.sidebar{height:100dvh;border:0}.chat{display:none;height:100dvh}.app-shell.show-chat .sidebar{display:none}.app-shell.show-chat .chat{display:block}.mobile-only{display:block}.chat-header{padding:14px;min-height:75px}.chat-badge{font-size:9px}.messages{padding:18px 13px}.message{max-width:88%}.composer{margin:10px 12px 15px;padding:10px}.composer-foot{font-size:8px}.chat-error{padding:0 15px}.bubble{padding:12px 14px}.message-text{font-size:14px}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;scroll-behavior:auto!important}}

/* Monochrome terminal theme and mobile typography */
:root{--bg:#09090b;--panel:#151518;--line:#2c2c31;--green:#f3f3f5;--muted:#96969f;--text:#ededf0;--accent:#d4d4db}
html{-webkit-text-size-adjust:100%;text-size-adjust:100%}body{font-family:Vazirmatn,Tahoma,sans-serif;-webkit-font-smoothing:antialiased}.auth-card>.pill{font-family:Vazirmatn,Tahoma,sans-serif}.primary,.send,.unread,.toast{background:#eeeef1;color:#17171a}.sidebar{background:#111114}.chat{background-color:#0b0b0e;background-image:radial-gradient(#b0b0c008 1px,transparent 1px)}.contact.selected{background:#29292f;border-color:#bdbdc23d}.avatar{background:#303035;color:#f2f2f4}.own .bubble{background:linear-gradient(140deg,#34343b,#26262d);border-color:#77778055}.bubble{background:#19191e;border-color:#3e3e46;transition:border-color .45s,box-shadow .45s}.cipher-text{color:#d5d5df}.chat-header,.composer{background:#151519}.composer{direction:ltr;grid-template-columns:minmax(0,1fr) 46px;align-items:end}.composer textarea{grid-column:1;grid-row:1;min-width:0;font-size:16px}.send{grid-column:2;grid-row:1;border-radius:50%;width:44px;height:44px;transition:transform .2s,background .2s}.send:hover:not(:disabled){background:#fff;transform:translateY(-2px)}.send:active:not(:disabled){transform:scale(.93)}.composer-foot{direction:rtl}.form-error,.chat-error{color:#ddd!important}.bubble.scanning{border-color:#d5d5df88;box-shadow:0 0 24px #ffffff0c}.scanning .message-text{color:inherit;text-shadow:none}.scanning .cipher-text{color:#e3e3eb}.scan-ghost{position:absolute;inset:14px 17px;overflow:hidden;pointer-events:none;z-index:2;animation:erase-source 2.8s cubic-bezier(.22,.61,.36,1) both;will-change:clip-path}.scan-reveal{animation:reveal-target 2.8s cubic-bezier(.22,.61,.36,1) both;will-change:clip-path}.bubble.scanning:after{inset:0;top:0;left:0;width:100%;height:100%;border:0;background:linear-gradient(90deg,transparent 35%,#ffffff09 45%,#ffffff4a 50%,#ffffff0a 54%,transparent 65%);transform:translateX(-100%);animation:scan-pass 2.8s cubic-bezier(.22,.61,.36,1) both;will-change:transform;z-index:3}.bubble.scan-complete{border-color:#ededf088;box-shadow:0 0 18px #ffffff07}
@keyframes reveal-target{0%,12%{clip-path:inset(0 100% 0 0);filter:blur(2px)}90%,100%{clip-path:inset(0 0 0 0);filter:blur(0)}}
@keyframes erase-source{0%,12%{clip-path:inset(0 0 0 0);opacity:1}90%,100%{clip-path:inset(0 0 0 100%);opacity:.3}}
@keyframes scan-pass{0%,12%{transform:translateX(-100%);opacity:0}22%{opacity:1}90%,100%{transform:translateX(100%);opacity:0}}
@media(max-width:760px){input,textarea,.search-box input,.auth-card input,.composer textarea{font-size:16px}.search-box input{padding:12px 9px}.scan-ghost{inset:12px 14px}.composer{margin-bottom:max(12px,env(safe-area-inset-bottom))}.message-text{font-size:15px}.cipher-text{font-size:13px}.self-card strong,.contact strong,.chat-header strong{font-size:14px}.sidebar-footer{font-size:11px}.list-label{font-size:11px}}
@media(prefers-reduced-motion:reduce){.scan-reveal,.scan-ghost,.bubble.scanning:after{animation:none!important}.scan-ghost,.bubble.scanning:after{display:none}.scan-reveal{clip-path:none}}

.message-locked .bubble{background:#111114;border-color:#303037}.message-locked .message-text{color:#91919c}.message-locked .message-meta{color:#92929c}.message-meta{flex-wrap:wrap}.message-locked .bubble{animation:lock-settle .6s ease-out}@keyframes lock-settle{from{box-shadow:0 0 20px #ffffff22;border-color:#d2d2da}to{box-shadow:none;border-color:#303037}}

/* SAYE entrance: one continuous welcome-to-login composition. */
.saye-auth{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:100dvh;max-width:none;gap:24px;padding:38px 24px 60px;overflow:hidden;background:radial-gradient(ellipse at 50% 25%,#24242c55,transparent 60%),#09090b;font-family:Vazirmatn,Arial,sans-serif}.auth-atmosphere{position:absolute;inset:0;pointer-events:none;overflow:hidden;background-image:radial-gradient(#ffffff15 .7px,transparent .7px);background-size:28px 28px;mask-image:linear-gradient(transparent,#0008,transparent)}.ambient-ring{position:absolute;width:620px;height:620px;border:1px solid #ffffff08;border-radius:50%;left:calc(50% - 310px);top:calc(50% - 310px);transform:rotateX(58deg) rotate(-30deg)}.ring-two{width:840px;height:840px;left:calc(50% - 420px);top:calc(50% - 420px);transform:rotateX(58deg) rotate(30deg)}.ambient-cross{position:absolute;color:#ffffff33;font:18px monospace}.cross-one{left:12%;top:28%}.cross-two{right:12%;bottom:24%}.auth-header{position:relative;z-index:1;text-align:center;transform:translateY(0) scale(1);transition:transform 1.2s cubic-bezier(.22,1,.36,1);will-change:transform}.auth-header h1{font-size:30px;font-weight:400;letter-spacing:-.8px;line-height:1.5;margin:18px 0;color:#b3b3bd}.auth-header h1 strong{color:#f8f8fb;font-weight:700;letter-spacing:4px;margin-left:5px}.saye-emblem{width:44px;height:44px;margin:10px auto 25px;border:1px solid #e2e2ef88;transform:rotate(45deg);display:grid;place-items:center;box-shadow:0 0 50px #ffffff0a;position:relative}.saye-emblem span{width:22px;height:22px;background:#e7e7ed;box-shadow:0 0 20px #ffffff11}.saye-emblem:after{content:'';position:absolute;inset:-8px;border:1px solid #ffffff13}.welcome-rule{height:1px;width:72px;margin:18px auto 0;background:linear-gradient(90deg,transparent,#c0c0cc,transparent)}.saye-auth .auth-card{position:relative;z-index:1;max-width:350px;opacity:1;transform:translateY(0);transition:opacity .85s ease .55s,transform 1s cubic-bezier(.22,1,.36,1) .45s}.saye-auth .auth-tabs{margin:0 0 22px;border-radius:12px;background:#141418;border-color:#2b2b33}.saye-auth .auth-tabs button{font-size:13px;padding:10px;color:#92929e}.saye-auth .auth-tabs button.active{color:#f5f5f8;background:#2b2b32}.saye-auth .auth-card h2{font-size:21px;margin:0 0 4px;font-weight:600}.saye-auth .auth-card>p{font-size:12px;margin:0 0 22px;color:#9898a4}.saye-auth .auth-card label{margin:15px 0;font-size:12px;color:#c3c3ce}.saye-auth input{background:#121216;border:1px solid #30303a;font-size:16px;padding:12px 14px;border-radius:9px}.saye-auth input::placeholder{color:#676772;font-size:13px}.saye-auth .primary{font-size:14px;padding:13px;margin-top:0;transition:background .2s,transform .2s}.saye-auth .primary:hover{background:#fff;transform:translateY(-1px)}.saye-auth .auth-card .auth-note{font-size:10px;line-height:1.8;text-align:center;color:#73737f;margin:18px 0 0}.saye-auth .auth-card .form-error{font-size:12px;margin:0 0 12px;min-height:0}.auth-signature{position:absolute;bottom:20px;font:8px monospace;letter-spacing:2px;color:#65656f}.auth-signature span{margin:0 8px}.intro-playing .auth-header{transform:translateY(195px) scale(1.28)}.intro-playing .auth-card{opacity:0;transform:translateY(45px);pointer-events:none;transition:none}.intro-playing .saye-emblem{animation:emblem-arrive 1.8s cubic-bezier(.22,1,.36,1) both}.intro-playing .auth-header h1{animation:welcome-arrive 1.5s ease both}.intro-playing .welcome-rule{animation:welcome-line 1.8s ease both}@keyframes emblem-arrive{from{opacity:0;transform:rotate(-45deg) scale(.5);filter:blur(5px)}to{opacity:1;transform:rotate(45deg) scale(1);filter:blur(0)}}@keyframes welcome-arrive{0%,15%{opacity:0;filter:blur(8px);transform:translateY(12px)}100%{opacity:1;filter:blur(0);transform:translateY(0)}}@keyframes welcome-line{from{width:0;opacity:0}to{width:72px;opacity:1}}@media(max-width:760px){.saye-auth{padding:32px 25px 54px;gap:24px}.auth-header h1{font-size:25px}.intro-playing .auth-header{transform:translateY(180px) scale(1.12)}.saye-auth .auth-card{max-width:360px}.auth-signature{font-size:7px}.saye-auth .auth-card h2{font-size:21px}}@media(max-height:650px){.saye-auth{justify-content:flex-start}.intro-playing .auth-header{transform:translateY(130px)}}@media(prefers-reduced-motion:reduce){.saye-auth .auth-header,.saye-auth .auth-card{transition:none!important}}

.bubble[role="button"]{cursor:pointer}.bubble[role="button"]:focus-visible{outline:2px solid #eee;outline-offset:3px}

/* SAYE messenger: two sections, private previews, restrained silver signals. */
:root{--signal:#d8d8e0}.app-shell{grid-template-columns:340px minmax(0,1fr)}.side-brand{padding:25px 24px 20px}.side-brand .brand{gap:12px}.side-brand .logo{border:1px solid #34343b;border-radius:12px;background:#0b0b0d}.brand-en{letter-spacing:4px;color:#b5b5bc}.sidebar{background:linear-gradient(180deg,#141417,#101013)}.self-card{order:0;margin:10px 17px 18px;background:#19191e;border-color:#2b2b31}.section-tabs{display:flex;gap:6px;margin:0 17px 10px;padding:5px;border:1px solid #303036;border-radius:14px;background:#0d0d10}.section-tabs button{position:relative;display:flex;align-items:center;justify-content:center;gap:8px;flex:1;padding:12px 8px;border-radius:10px;background:none;color:#96969f;font-size:13px;transition:background .2s,color .2s}.section-tabs button.active{background:#2a2a31;color:#f5f5f8}.nav-symbol{font-size:19px;line-height:1}.tab-count{min-width:17px;padding:1px 5px;border-radius:8px;background:var(--signal);color:#19191e;font-size:10px}.search-box{background:#0c0c0f;border-color:#2d2d33}.search-box input{font-size:13px}.list-label{padding:18px 22px 12px;align-items:center;font-size:12px}.add-contact{background:transparent;color:#e1e1e7;font-size:11px;padding:7px 0}.add-contact:hover{color:var(--signal)}.contacts{padding:0 12px 15px}.contact{padding:16px 11px;border-radius:13px;gap:12px;margin-bottom:5px}.contact.selected{background:#26262d;border-color:#4d4d57}.contact:hover{background:#202026}.contact strong{font-size:14px;font-weight:600}.avatar{background:linear-gradient(140deg,#36363e,#24242c);border:1px solid #49495155;border-radius:14px;color:#e4e4eb;width:43px;height:43px}.contact small{margin-top:7px;font-size:11px}.contact .message-preview{font-family:inherit;direction:rtl;color:#96969f;display:flex;align-items:center;gap:7px}.preview-locked:before,.locked-label:before{content:'';display:inline-block;flex:none;width:9px;height:8px;border:1px solid currentColor;border-radius:2px;background:transparent}.preview-locked:before{box-shadow:0 -4px 0 -2px #96969f}.contact-end{display:flex;flex-direction:column;align-items:flex-end;gap:10px;align-self:stretch;justify-content:center;color:#777782;font-size:18px}.contact-end time{white-space:nowrap;font-size:10px;font-family:Vazirmatn,sans-serif}.unread{min-width:21px;text-align:center;background:var(--signal);color:#19191e;font-size:11px}.list-empty{margin:40px 12px;padding:28px 18px;border:1px dashed #32323a;border-radius:16px;font-size:13px;line-height:2.2;color:#9999a4}.chat{background-color:#0b0b0e;background-size:28px 28px;background-image:radial-gradient(#ffffff09 .6px,transparent .6px)}.chat-header{background:#131317;border-color:#2c2c34}.chat-badge{border:1px solid #35353d;padding:7px 11px;border-radius:20px;font-size:10px;color:#a7a7b1}.welcome-mark{color:#e9e9ef;text-shadow:0 0 75px #e4e4ec12}.welcome .eyebrow{color:#7e7e8b;font-size:9px;letter-spacing:3px}.welcome h1{font-weight:600;font-size:34px}.welcome p{font-size:14px}.welcome-cta{padding:12px 24px;background:#23232b;border:1px solid #43434d;border-radius:12px;color:#eeeef3;margin-top:15px;transition:background .2s}.welcome-cta:hover{background:#33333c}.welcome .hint-chip{margin-top:35px}.welcome #shareName{color:#c5c5d0}.composer{border:1px solid #373740;border-radius:17px;box-shadow:0 6px 25px #0003}.send{background:var(--signal);color:#19191e;box-shadow:0 0 18px #d8d8e00b}.send:hover:not(:disabled){background:#f0f0f5}.send:disabled{background:#46464f;color:#92929e;opacity:.7}.own .bubble{background:linear-gradient(135deg,#2b2b34,#22222a);border-color:#53535e}.bubble{background:#17171e;border-color:#34343f}.message-meta{gap:9px;font-size:10px}.message-meta button{color:#aaaab5}.message-locked .bubble{background:#101016}.locked-label{display:inline-flex;align-items:center;gap:6px}.bubble.scanning{border-color:#d5d5df77;box-shadow:0 0 25px #ffffff09}.bubble.scanning:after{background:linear-gradient(90deg,transparent 35%,#ffffff06 45%,#e8e8f052 50%,#ffffff0a 54%,transparent 65%)}.bubble.scan-complete{border-color:#dedee577;box-shadow:0 0 18px #ffffff08}.encrypting .scan-reveal{animation-name:reveal-encrypted}.encrypting .scan-ghost{animation-name:erase-readable}.bubble.scanning.encrypting:after{animation-name:scan-back}.logo-pulse{animation:logo-signal 1.4s ease-out}.contact-dialog{width:min(420px,calc(100% - 32px));background:#15151b;color:#eeeef2;border:1px solid #42424d;border-radius:22px;padding:26px;box-shadow:0 25px 100px #0009;direction:rtl}.contact-dialog::backdrop{background:#000a;backdrop-filter:blur(7px)}.dialog-heading{display:flex;align-items:center;justify-content:space-between}.dialog-heading .eyebrow{color:#9a9aa7;letter-spacing:3px;font-size:9px}.contact-dialog h2{font-size:24px;margin:12px 0}.contact-dialog p{color:#9696a3;font-size:13px;line-height:2}.contact-dialog label{display:block;font-size:12px;margin:24px 0 8px}.contact-dialog input{width:100%;font-size:16px;background:#0c0c10;border-color:#41414b}.contact-dialog .form-error{margin:10px 0;font-size:12px;min-height:12px}.contact-dialog .primary{margin:6px 0 0}.toast{background:#e9e9ee}
@keyframes scan-back{0%,12%{transform:translateX(100%);opacity:0}22%{opacity:1}90%,100%{transform:translateX(-100%);opacity:0}}
@keyframes reveal-encrypted{0%,12%{clip-path:inset(0 0 0 100%);filter:blur(2px)}90%,100%{clip-path:inset(0);filter:blur(0)}}
@keyframes erase-readable{0%,12%{clip-path:inset(0);opacity:1}90%,100%{clip-path:inset(0 100% 0 0);opacity:.3}}
@keyframes logo-signal{0%,100%{box-shadow:0 0 0 transparent}35%{box-shadow:0 0 25px #d8d8e055;border-color:#d8d8e0}}
@media(max-width:760px){.app-shell{display:block}.sidebar{height:100dvh}.section-tabs{order:5;margin:0;border:0;border-top:1px solid #303039;border-radius:0;background:#141419;padding:8px 18px max(8px,env(safe-area-inset-bottom));gap:20px;flex-shrink:0}.section-tabs button{flex-direction:column;gap:5px;padding:7px 12px;font-size:11px;background:transparent!important}.section-tabs button.active{color:#f5f5fa}.section-tabs button:not(.active){color:#777783}.section-tabs button.active:before{content:'';position:absolute;top:0;width:20px;height:2px;border-radius:2px;background:var(--signal)}.nav-symbol{font-size:23px}.tab-count{position:absolute;top:5px;left:calc(50% + 14px)}.contacts{min-height:0;padding-bottom:15px}.side-brand{padding:20px 20px 10px}.self-card{margin:8px 17px 15px;padding:11px}.search-box input{font-size:16px}.list-label{padding-top:14px}.chat-header{padding:14px}.chat-badge{font-size:9px;padding:6px 8px}.message{max-width:88%}.contact{padding:15px 10px}.contact strong{font-size:14px}.chat{height:100dvh}.composer{margin:10px 12px max(12px,env(safe-area-inset-bottom))}.contact-dialog{padding:22px}}
@media(prefers-reduced-motion:reduce){.logo-pulse{animation:none}.section-tabs button,.welcome-cta{transition:none}}

.nav-symbol{width:21px;height:21px;flex-shrink:0}.locked-label:before{background:center/contain no-repeat url("/static/icons/lock.svg");width:13px;height:13px;border:0}.preview-locked:before{background:center/contain no-repeat url("/static/icons/lock.svg");width:12px;height:12px;border:0;box-shadow:none}

.contact-dialog{max-height:calc(100dvh - 40px);overflow-y:auto}.contact-dialog select{width:100%;background:#101015;color:#eeeef3;border:1px solid #41414b;border-radius:10px;padding:12px;font:16px Vazirmatn,sans-serif;margin-bottom:14px}.contact-dialog details{border-top:1px solid #383840;margin-top:20px;padding-top:16px}.contact-dialog summary{cursor:pointer;font-size:14px}.blocked-row{display:flex;align-items:center;justify-content:space-between;gap:10px;margin:12px 0;font-size:12px}.blocked-row button{padding:8px;border:1px solid #484852;border-radius:8px;background:#292931;color:#eee}.seen-label{color:#dedee8}.self-card .icon{font-size:18px;padding:6px}.contact-dialog #blockedList{font-size:13px;line-height:2;margin-top:12px}

/* Replies, private conversation organization and a retryable outbox. */
.archive-toggle{margin:0 20px 12px;padding:11px 14px;border:1px solid #34343e;border-radius:10px;background:#19191f;color:#bcbcc8;text-align:right;font:12px Vazirmatn,sans-serif;flex-shrink:0}.archive-toggle[aria-pressed="true"]{background:#2b2b34;color:#f1f1f4}.pin-mark{display:inline-block;font-size:9px;color:#c5c5d0;margin-top:5px}.conversation-actions{display:flex;gap:8px;margin:20px 0}.conversation-actions button{flex:1;padding:12px 8px;background:#27272f;color:#ededf2;border:1px solid #454550;border-radius:10px;font:12px Vazirmatn,sans-serif}.reply-quote{border-inline-start:2px solid #9e9eae;border-radius:7px;background:#24242c;margin-bottom:6px;padding:9px 12px;font-size:12px;line-height:1.8;color:#c2c2cf;white-space:pre-wrap;overflow-wrap:anywhere;max-height:95px;overflow:hidden}.reply-composer{grid-column:1/-1;grid-row:1;display:flex;align-items:center;gap:12px;direction:rtl;background:#22222a;border-inline-start:2px solid #bdbdca;border-radius:8px;padding:10px 12px;min-width:0}.reply-composer>div{flex:1;min-width:0}.reply-composer strong{display:block;font-size:11px;color:#eeeef3}.reply-composer span{display:block;font-size:12px;color:#adadba;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:100%;margin-top:5px}.reply-composer button{background:none;color:#c7c7d2;font-size:24px;padding:5px}.composer:has(.reply-composer:not([hidden])) textarea,.composer:has(.reply-composer:not([hidden])) .send{grid-row:2}.connection-state{padding:9px 20px;background:#25252d;color:#d6d6e0;font-size:12px;line-height:1.8;border-top:1px solid #41414b}.pending-message .bubble{border-style:dashed}.send-failed .pending-label{color:#c8c8d4}.message-meta .retry-message{border:1px solid #747480;border-radius:7px;padding:5px 10px;color:#f0f0f5;background:#2a2a34;font-size:11px}.message-meta button{min-height:30px;padding-inline:4px}.pending-label{overflow-wrap:anywhere;max-width:100%}.message{animation:message-arrive .25s ease-out}@keyframes message-arrive{from{opacity:0;transform:translateY(5px)}to{opacity:1;transform:none}}

/* Language follows the interface; message bodies retain their own direction. */
html[dir="ltr"] .sidebar{border-left:0;border-right:1px solid var(--line)}
.contact,.contact small,.archive-toggle{text-align:start}
.self-card span[dir],.chat-header span[dir]{text-align:inherit}
.contact .message-preview,.contact-dialog,.reply-composer,.composer-foot{direction:inherit}
html[dir="rtl"] .composer-foot,html[dir="rtl"] .reply-composer{direction:rtl}
html[dir="ltr"] #back{transform:rotate(180deg)}
.contact-info,.chat-header>div,.self-card>div{min-width:0}
.contact-info strong,.chat-header strong,.self-card strong{overflow-wrap:anywhere}
.auth-settings{position:fixed;top:20px;inset-inline-end:22px;z-index:5;width:42px;height:42px;border:1px solid #3d3d47;border-radius:12px;background:#19191f;color:#dddde7;font-size:21px}
.account-button{cursor:pointer;flex-shrink:0;font:inherit}
.language-dialog select{margin-top:10px}.language-dialog .language-note{font-size:11px;color:#92929e}
html[dir="rtl"] .saye-auth .auth-header h1 strong{margin-left:0;margin-right:5px}
html[dir="ltr"] body{font-family:Vazirmatn,Arial,sans-serif}
@media(max-width:760px){html[dir="ltr"] .sidebar{border:0}.chat-badge{max-width:110px;text-align:center}.chat-header{gap:9px}.message-meta{font-size:10px}.auth-settings{top:12px;inset-inline-end:12px}}
html[dir="ltr"] .message{align-self:flex-start}html[dir="ltr"] .message.own{align-self:flex-end}

/* Keep search geometry and username alignment stable in both directions. */
.search-box{padding:0 12px;gap:8px;min-width:0}
.search-icon{display:block;width:20px;height:20px;flex:0 0 20px}
.search-box input{flex:1 1 0;width:0;min-width:0;padding-inline:0}
html[dir="rtl"] .self-card span[dir],html[dir="rtl"] .chat-header span[dir]{text-align:right}
html[dir="ltr"] .self-card span[dir],html[dir="ltr"] .chat-header span[dir]{text-align:left}

/* Silver finish: focused surfaces, quiet movement, no idle animation. */
.chat{background-image:radial-gradient(ellipse at 70% 0%,#d7d7e008,transparent 60%),radial-gradient(#ffffff08 .65px,transparent .65px);background-size:100% 100%,28px 28px}
.chat-header{background:#131316ed;box-shadow:0 8px 30px #00000012}
.sidebar .avatar,.chat-header .avatar{background:linear-gradient(145deg,#43434a 0%,#27272d 55%,#202025);border-color:#ffffff12;box-shadow:inset 0 1px 0 #ffffff0d,0 4px 12px #0002}
.contact{position:relative;transition:background .22s,border-color .22s;}
.contact.selected{background:linear-gradient(105deg,#ffffff0d,#ffffff04);border-color:#ffffff20;box-shadow:inset 0 1px 0 #ffffff06}
.contact.selected:before{content:'';position:absolute;inset-inline-start:0;top:25%;height:50%;width:2px;border-radius:2px;background:linear-gradient(transparent,#e8e8ed,transparent)}
.contact.has-unread strong{color:#fff}.contact.has-unread .message-preview{color:#cfcfd6}
.unread{box-shadow:0 0 14px #ffffff10;background:linear-gradient(135deg,#f3f3f6,#bdbdc8)}
.section-tabs button.active{box-shadow:inset 0 1px 0 #ffffff10,0 2px 8px #0002}
.search-box{transition:border-color .25s,box-shadow .25s}.search-box:focus-within{border-color:#7b7b87;box-shadow:0 0 0 3px #ffffff04}
.bubble{background:linear-gradient(145deg,#202025e8,#17171cee);box-shadow:inset 0 1px 0 #ffffff04,0 4px 18px #00000012;transition:border-color .5s,box-shadow .5s,background .5s}
.own .bubble{background:linear-gradient(135deg,#35353d,#25252c 75%);border-color:#ffffff25;box-shadow:inset 0 1px 0 #ffffff08,0 5px 20px #0002}
.bubble.scanning{border-color:#dedee56b;box-shadow:inset 0 1px 0 #ffffff12,0 0 30px #e5e5f010}
.bubble.scanning:after{background:linear-gradient(90deg,transparent 34%,#ffffff02 42%,#ffffff16 49.5%,#f8f8ffad 50%,#ffffff16 50.5%,#ffffff03 58%,transparent 66%)}
.scanning .scan-ghost{text-shadow:0 0 8px #ffffff18}
.bubble.scan-complete{border-color:#e3e3eb80;box-shadow:inset 0 0 18px #ffffff04,0 0 20px #ffffff08}
.message-locked .bubble{background:linear-gradient(145deg,#17171b,#111115);border-color:#ffffff13;box-shadow:inset 0 1px 0 #ffffff03}
.message-locked .locked-label:before{animation:seal-arrive .55s ease-out}
@keyframes seal-arrive{from{opacity:0;transform:translateY(-3px) scale(.75)}to{opacity:1;transform:none}}
.composer{position:relative;background:linear-gradient(145deg,#242428f5,#17171cf5);border-color:#ffffff21;border-radius:22px;padding:12px 14px;box-shadow:inset 0 1px 0 #ffffff07,0 12px 32px #0004;transition:border-color .3s,box-shadow .3s}
.composer:focus-within{border-color:#bdbdc663;box-shadow:inset 0 1px 0 #ffffff0b,0 12px 32px #0004,0 0 0 3px #ffffff03}
.composer textarea:focus-visible{outline:none}.composer textarea{padding:8px;caret-color:#fff}
.composer-foot{border-top-color:#ffffff08;color:#757580;font-variant-numeric:tabular-nums;padding-top:7px}
.send{box-shadow:inset 0 1px 0 #fff8,0 3px 12px #0003;transition:transform .22s,background .3s,box-shadow .3s}
.composer.has-draft .send:not(:disabled){background:linear-gradient(145deg,#fff,#c2c2cd);box-shadow:inset 0 1px 0 #fff,0 0 18px #ffffff13}
.send:disabled{box-shadow:none;cursor:default}
.welcome-mark{position:relative;width:116px;height:116px;display:grid;place-items:center;font-size:64px;border:1px solid #ffffff12;border-radius:32px;background:linear-gradient(145deg,#ffffff07,#ffffff01);box-shadow:inset 0 1px 0 #ffffff08,0 18px 60px #0002}
.welcome-mark:before,.welcome-mark:after{content:'';position:absolute;inset:-12px;border:1px solid #ffffff06;border-radius:40px;pointer-events:none}.welcome-mark:after{inset:-24px;border-radius:48px;border-color:#ffffff03}
.list-empty{border-style:solid;background:linear-gradient(145deg,#ffffff03,transparent)}
.list-empty:before{content:'';display:block;width:38px;height:30px;border:1px solid #ffffff32;border-radius:12px 12px 12px 3px;margin:0 auto 22px;box-shadow:8px 7px 0 -1px #17171c,8px 7px 0 0 #ffffff12}
.contact-dialog[open]{animation:dialog-arrive .28s cubic-bezier(.22,1,.36,1)}
@keyframes dialog-arrive{from{opacity:0;transform:translateY(12px) scale(.98)}to{opacity:1;transform:none}}
@media(max-width:760px){.composer{padding:10px 12px;border-radius:21px}.section-tabs button.active{box-shadow:none}.contact-dialog{margin:auto auto max(12px,env(safe-area-inset-bottom));border-radius:24px;animation-name:sheet-arrive}.welcome-mark{width:94px;height:94px;font-size:54px}}
@keyframes sheet-arrive{from{opacity:0;transform:translateY(30px)}to{opacity:1;transform:none}}
@media(prefers-reduced-motion:reduce){.contact,.composer,.send,.bubble,.search-box{transition:none!important}}

/* Conversation empty states: two quiet speech bubbles, without decorative text. */
.conversation-art{isolation:isolate}
.empty-bubble{position:absolute;width:49px;height:36px;border:1px solid #d8d8e575;border-radius:13px 13px 13px 3px;background:linear-gradient(145deg,#393940,#202026);box-shadow:inset 0 1px 0 #ffffff12,0 6px 18px #0003}
.bubble-front{z-index:2;left:24px;top:30px;display:flex;gap:4px;align-items:center;justify-content:center;animation:conversation-float 3.2s ease-in-out 3}
.bubble-front i{width:3px;height:3px;background:#d3d3df;border-radius:50%;animation:conversation-dot 1.6s ease-in-out 5}.bubble-front i:nth-child(2){animation-delay:.18s}.bubble-front i:nth-child(3){animation-delay:.36s}
.bubble-back{right:22px;top:49px;z-index:1;transform:scaleX(-1);border-color:#ffffff2a;background:#1e1e25;animation:conversation-back 3.2s ease-in-out 3}
.list-empty,.empty-chat{position:relative}
.list-empty{padding-top:92px}
.list-empty:before,.list-empty:after,.empty-chat:before,.empty-chat:after{content:'';position:absolute;width:38px;height:29px;left:calc(50% - 29px);top:29px;margin:0;border:1px solid #d8d8e55c;border-radius:10px 10px 10px 3px;background:linear-gradient(145deg,#33333b,#202026);box-shadow:inset 0 1px 0 #ffffff0b;animation:conversation-float 3.2s ease-in-out 3}
.list-empty:after,.empty-chat:after{left:calc(50% - 5px);top:43px;z-index:-1;transform:scaleX(-1);border-color:#ffffff26;background:#19191f;animation-name:conversation-back}
.list-empty,.empty-chat{isolation:isolate}.empty-chat{padding:112px 20px 32px;max-width:320px;margin:35px auto 0;line-height:2}.empty-chat:before{top:34px}.empty-chat:after{top:48px}
@keyframes conversation-float{0%,100%{transform:translateY(0)}50%{transform:translateY(-5px)}}
@keyframes conversation-back{0%,100%{transform:scaleX(-1) translateY(0)}50%{transform:scaleX(-1) translateY(3px)}}
@keyframes conversation-dot{0%,70%,100%{opacity:.35}35%{opacity:1}}
@media(max-width:760px){.conversation-art .bubble-front{left:14px;top:21px}.conversation-art .bubble-back{right:12px;top:40px}}

/* Silver lines assemble the emblem, then the header settles above the form. */
.saye-emblem{width:64px;height:64px;transform:none;border:0;box-shadow:none;margin-bottom:20px}
.saye-emblem:after{inset:-10px;border-radius:50%;border-color:#ffffff08}
.saye-emblem>span{width:20px;height:20px;transform:rotate(45deg);background:linear-gradient(135deg,#fff,#bcbcc9);box-shadow:0 0 30px #ffffff12}
.emblem-lines{position:absolute;inset:0;width:64px;height:64px;stroke:#dedee8;stroke-width:1;overflow:visible}
.emblem-lines path+path{stroke:#ffffff42}
.emblem-ray{position:absolute;height:1px;width:110px;top:50%;background:linear-gradient(90deg,transparent,#f3f3ff99);opacity:0;pointer-events:none}
.ray-one{right:50%;transform-origin:right center}.ray-two{left:50%;transform:rotate(180deg);transform-origin:left center}
.auth-header{transition:transform .9s cubic-bezier(.22,1,.36,1)}
.saye-auth .auth-card{transition:opacity .6s ease .15s,transform .7s cubic-bezier(.22,1,.36,1) .1s}
.intro-playing .saye-emblem{animation:none}
.intro-playing .emblem-lines path{stroke-dasharray:1;stroke-dashoffset:1;animation:draw-emblem 1.25s cubic-bezier(.22,.61,.36,1) forwards}
.intro-playing .emblem-lines path+path{animation-delay:.15s}
.intro-playing .saye-emblem>span{animation:emblem-core 1.3s ease both}
.intro-playing .emblem-ray{animation:ray-assemble 1.15s ease both}
.intro-playing .ray-two{animation-name:ray-assemble-reverse;animation-delay:.12s}
.intro-playing .auth-header h1{animation:welcome-arrive 1.1s ease both}
.intro-returning .auth-header{animation:return-welcome .65s ease-out both}
.intro-returning .auth-card{animation:return-form .5s ease-out both}
@keyframes draw-emblem{to{stroke-dashoffset:0}}
@keyframes emblem-core{0%,35%{opacity:0;transform:rotate(45deg) scale(.3);filter:blur(4px)}100%{opacity:1;transform:rotate(45deg) scale(1);filter:blur(0)}}
@keyframes ray-assemble{0%{opacity:0;transform:translateX(-45px) scaleX(.3)}35%{opacity:1}100%{opacity:0;transform:translateX(0) scaleX(.05)}}
@keyframes ray-assemble-reverse{0%{opacity:0;transform:rotate(180deg) translateX(-45px) scaleX(.3)}35%{opacity:1}100%{opacity:0;transform:rotate(180deg) translateX(0) scaleX(.05)}}
@keyframes return-welcome{from{opacity:.3;transform:translateY(8px)}to{opacity:1;transform:none}}
@keyframes return-form{from{opacity:.5}to{opacity:1}}
@media(prefers-reduced-motion:reduce){.empty-bubble,.bubble-front i,.list-empty:before,.list-empty:after,.empty-chat:before,.empty-chat:after{animation:none!important}.emblem-lines path{stroke-dashoffset:0}.emblem-ray{display:none}}

/* Continuous silver sweep, with the bubble expanding only as the scan advances. */
.bubble.scanning.smooth-scan:after{display:none;animation:none}
.scan-source{position:absolute;z-index:2;pointer-events:none;white-space:pre-wrap;overflow-wrap:anywhere;overflow:hidden;animation:none!important}
.scan-light{position:absolute;z-index:3;top:0;bottom:0;width:1px;background:linear-gradient(transparent,#f6f6ffbb 25%,#fff 50%,#f6f6ffbb 75%,transparent);box-shadow:0 0 12px 3px #eeeeff28;pointer-events:none;will-change:left;opacity:0}
@media(prefers-reduced-motion:reduce){.scan-light,.scan-source{display:none}}

.push-settings{border-top:1px solid #ffffff15;margin-top:18px;padding-top:18px}
.push-settings h3{font-size:16px;margin:0 0 8px;font-weight:600}
.push-settings p{font-size:12px;line-height:1.9;margin:8px 0 14px}
.push-settings #pushStatus{font-size:11px;color:#b6b6c2;min-height:22px;margin-bottom:0}
.push-settings .primary{font-size:13px}
.push-test{width:100%;border:1px solid #ffffff25;border-radius:10px;padding:11px;margin-top:10px;background:#222228;color:#ededf0;font-size:12px}
