/* =========================================================
   ZYRVO v2.0.0 — brand layer
   Живи своим.
   ========================================================= */
:root {
    --zy-bg:#070907;
    --zy-bg-2:#0b0f0c;
    --zy-surface:#0f1410;
    --zy-surface-2:#141b16;
    --zy-surface-3:#1a231d;
    --zy-border:#29352d;
    --zy-border-soft:#1c261f;
    --zy-text:#f4f8f4;
    --zy-muted:#97a39a;
    --zy-muted-2:#6e7a71;
    --zy-green:#7cff5b;
    --zy-green-strong:#50e66f;
    --zy-green-soft:rgba(124,255,91,.12);
    --zy-cyan:#24dff2;
    --zy-danger:#ff6577;
    --zy-shadow:0 20px 70px rgba(0,0,0,.38);
    --family-border:var(--zy-border);
    --family-text:var(--zy-text);
    --family-muted:var(--zy-muted);
    --family-bg:var(--zy-bg);
}
html { background:var(--zy-bg); color-scheme:dark; }
body {
    min-height:100vh;
    background:
      radial-gradient(circle at 16% -10%, rgba(55,255,116,.07), transparent 31rem),
      radial-gradient(circle at 88% 4%, rgba(36,223,242,.045), transparent 28rem),
      var(--zy-bg);
    color:var(--zy-text);
}
a { color:var(--zy-green); }
a:hover { color:#a4ff8c; }
.text-muted, .form-text { color:var(--zy-muted)!important; }
hr { border-color:var(--zy-border); }

/* Navigation / identity */
.family-navbar,.zyrvo-navbar {
    background:rgba(7,9,7,.92)!important;
    border-bottom:1px solid var(--zy-border-soft);
    box-shadow:0 8px 30px rgba(0,0,0,.15);
    backdrop-filter:blur(18px);
}
.zyrvo-brand { display:flex;align-items:center;gap:9px;color:#fff!important;font-weight:950;letter-spacing:.075em;font-size:1.08rem; }
.zyrvo-brand:hover { color:#fff!important; }
.zyrvo-brand-mark { width:30px;height:30px;border-radius:8px;object-fit:cover;box-shadow:0 0 18px rgba(36,223,242,.18); }
.family-navbar .navbar-toggler { border:1px solid var(--zy-border);background:var(--zy-surface); }
.family-navbar .navbar-toggler-icon { filter:invert(1); }
.family-navlinks .nav-link,.family-navbar .nav-link { color:#cbd3cd!important; }
.family-navlinks .nav-link:hover,.family-navlinks .nav-link:focus { color:#fff!important; }
.family-navlinks .nav-link i { color:var(--zy-green); }
.family-search { background:var(--zy-surface-2);border:1px solid var(--zy-border);color:var(--zy-muted); }
.family-search:focus-within { border-color:rgba(124,255,91,.52);box-shadow:0 0 0 3px rgba(124,255,91,.08); }
.family-search input { color:var(--zy-text); }
.family-search input::placeholder { color:var(--zy-muted-2); }
.nav-icon-link,.family-user-link { color:var(--zy-text); }
.nav-icon-link:hover { background:var(--zy-surface-3);color:var(--zy-green); }
.family-avatar { border-color:var(--zy-bg);box-shadow:0 0 0 1px var(--zy-border); }

/* Bootstrap/base controls */
.card,.family-post,.compose-card,.settings-card,.admin-card,.activity-list,.social-modal-card,
.memories-strip,.stories-strip,.story-archive-card,.conversation-list,.chat-contact-card button,
.album-card,.library-card,.people-card,.person-card,.contact-card,.repost-selected,.auth-card {
    background:var(--zy-surface)!important;
    color:var(--zy-text)!important;
    border-color:var(--zy-border)!important;
}
.card:hover { box-shadow:0 14px 36px rgba(0,0,0,.3); }
.form-control,.form-select,.input-group-text,textarea.form-control {
    background:var(--zy-surface-2);color:var(--zy-text);border-color:var(--zy-border);
}
.form-control:focus,.form-select:focus {
    background:var(--zy-surface-2);color:var(--zy-text);border-color:var(--zy-green-strong);
    box-shadow:0 0 0 .22rem rgba(124,255,91,.10);
}
.form-control::placeholder { color:var(--zy-muted-2); }
.form-check-input { background-color:var(--zy-surface-2);border-color:#516057; }
.form-check-input:checked { background-color:var(--zy-green-strong);border-color:var(--zy-green-strong); }
.btn-dark,.zyrvo-primary-btn {
    background:linear-gradient(135deg,var(--zy-green),var(--zy-green-strong))!important;
    border-color:transparent!important;color:#071008!important;font-weight:850;
    box-shadow:0 8px 24px rgba(80,230,111,.13);
}
.btn-dark:hover,.zyrvo-primary-btn:hover { filter:brightness(1.06);transform:translateY(-1px); }
.btn-outline-dark { color:var(--zy-text)!important;border-color:#536058!important;background:transparent!important; }
.btn-outline-dark:hover { color:#071008!important;background:var(--zy-green)!important;border-color:var(--zy-green)!important; }
.btn-outline-secondary { color:#c2cbc4;border-color:#536058; }
.btn-outline-secondary:hover { background:var(--zy-surface-3);border-color:#748279;color:#fff; }
.dropdown-menu { background:var(--zy-surface-2);border-color:var(--zy-border);box-shadow:var(--zy-shadow); }
.dropdown-item { color:var(--zy-text); }
.dropdown-item:hover,.dropdown-item:focus { background:var(--zy-surface-3);color:var(--zy-green); }
.table { --bs-table-bg:transparent;--bs-table-color:var(--zy-text);--bs-table-border-color:var(--zy-border); }
.alert-success { color:#baffab;background:rgba(80,230,111,.10);border-color:rgba(80,230,111,.26); }
.alert-danger,.alert-warning { background:#211316;color:#ffd1d6;border-color:#563039; }

/* Feed */
.feed-topbar h1,.compose-heading h1,.profile-title-row h1,.messages-hero h1,.contacts-hero h1,
.release-hero h1,.settings-title h1,.admin-heading h1 { color:#fff; }
.feed-topbar p { color:var(--zy-muted); }
.feed-version-link { color:var(--zy-green)!important; }
.feed-version-dot { background:var(--zy-green)!important;box-shadow:0 0 0 4px rgba(124,255,91,.08); }
.family-post { box-shadow:0 12px 36px rgba(0,0,0,.12); }
.family-post-header { background:var(--zy-surface); }
.family-author,.post-caption a,.comment-row a { color:var(--zy-text); }
.post-time,.post-username,.view-all-comments { color:var(--zy-muted); }
.post-icon-btn { color:var(--zy-text); }
.post-icon-btn:hover { background:var(--zy-surface-3); }
.comment-form { border-color:var(--zy-border-soft); }
.comment-form input { color:var(--zy-text); }
.comment-form input::placeholder { color:var(--zy-muted-2); }
.comment-form button { color:var(--zy-green); }
.social-mention { color:var(--zy-green)!important; }
.feed-empty { background:var(--zy-surface);border-color:#3b4a40;color:var(--zy-text); }
.feed-empty p,.feed-end { color:var(--zy-muted); }
.story-ring.unseen,.memory-ring { background:linear-gradient(135deg,var(--zy-green),var(--zy-cyan) 56%,#2575ff); }
.story-ring.seen { background:#3a443d; }
.story-ring.add { background:#1c251f; }
.story-ring > img,.story-avatar-wrap,.memory-ring img,.memory-video { border-color:var(--zy-surface);background:var(--zy-surface-3); }
.story-avatar-wrap b { background:var(--zy-green-strong);color:#071008;border-color:var(--zy-surface); }
.story-label,.memory-years { color:#cbd4cd; }

/* Profiles / activity */
.profile-divider { border-color:var(--zy-border);color:var(--zy-muted); }
.profile-avatar-img { border-color:var(--zy-border); }
.avatar-editor { background:var(--zy-surface-2);border-color:var(--zy-border); }
.activity-item { color:var(--zy-text);border-color:var(--zy-border-soft); }
.activity-item:hover { background:var(--zy-surface-2); }
.activity-item.unread { background:rgba(124,255,91,.06); }
.profile-contact-state,.profile-blocked-note { background:var(--zy-surface-2);border-color:var(--zy-border);color:var(--zy-text); }
.profile-contact-state>i { color:var(--zy-green); }
.family-version-card { background:linear-gradient(135deg,#0c120e,#111a13)!important;border-color:#2d4533!important; }
.family-version-card:hover { border-color:rgba(124,255,91,.45)!important;box-shadow:0 18px 50px rgba(0,0,0,.25); }
.family-version-product { color:#fff; }
.family-version-product span,.family-version-release { color:var(--zy-muted); }
.family-version-status { background:var(--zy-green-soft)!important;color:var(--zy-green)!important; }
.zyrvo-version-mark img { width:100%;height:100%;object-fit:cover;border-radius:12px; }

/* Contacts / albums / archive */
.contact-card,.contact-empty,.album-card,.library-empty,.people-empty { background:var(--zy-surface)!important;border-color:var(--zy-border)!important;color:var(--zy-text)!important; }
.contact-row { border-color:var(--zy-border-soft)!important; }
.contact-card:hover,.album-card:hover { border-color:#3e5145!important; }
.contact-empty h3 { color:var(--zy-text)!important; }
.contact-empty p,.pending-label { color:var(--zy-muted)!important; }
.repost-modal-body>label>span,.repost-contact-row small { color:var(--zy-muted); }
.repost-contact-row:hover { background:var(--zy-surface-3); }
.repost-privacy-note { background:var(--zy-green-soft);color:#c8dbcD; }
.repost-privacy-note i { color:var(--zy-green); }

/* Messages */
.messages-hero p { color:var(--zy-muted); }
.chat-contact-card button { color:var(--zy-text);box-shadow:none; }
.chat-contact-card button:hover { background:var(--zy-surface-2)!important;border-color:#385443!important; }
.chat-contact-card small,.conversation-preview,.conversation-top time { color:var(--zy-muted); }
.conversation-row { color:var(--zy-text);border-color:var(--zy-border-soft); }
.conversation-row:hover { background:var(--zy-surface-2);color:#fff; }
.conversation-row.unread { background:rgba(124,255,91,.055); }
.conversation-row.unread .conversation-preview { color:#d7e1d9; }
.conversation-unread { background:var(--zy-green-strong);color:#061007; }
.chat-message-list { background:radial-gradient(circle at 18% 18%,rgba(124,255,91,.035),transparent 34%),#090c0a; }
.chat-bubble { background:#171d18;color:var(--zy-text);box-shadow:0 2px 8px rgba(0,0,0,.22); }
.chat-message.mine .chat-bubble { background:#183721;border:1px solid rgba(124,255,91,.13); }
.chat-message-author,.chat-read-state.read { color:var(--zy-green); }
.chat-message-meta,.chat-read-state,.chat-deleted-copy { color:var(--zy-muted); }
.chat-message-actions>button,.chat-react-menu>summary,.chat-react-menu>div { background:var(--zy-surface-2);color:#c8d0ca;border-color:var(--zy-border); }
.chat-react-menu>div button:hover { background:var(--zy-surface-3); }
.family-live-message-icon { background:var(--zy-green-soft);color:var(--zy-green); }

/* Modals / viewer */
.social-modal-backdrop { background:rgba(0,0,0,.72); }
.social-modal-card header { border-color:var(--zy-border); }
.social-modal-card header button:hover,.likes-user:hover { background:var(--zy-surface-2); }
.likes-user { color:var(--zy-text); }
.media-viewer { background:#000; }

/* Changelog */
.release-page { color:var(--zy-text); }
.release-back { color:var(--zy-muted); }
.release-back:hover { color:var(--zy-green); }
.release-eyebrow,.release-kicker { color:var(--zy-green)!important; }
.release-hero p { color:var(--zy-muted)!important; }
.release-current-meta { background:var(--zy-surface)!important;border-color:var(--zy-border)!important;color:#cbd5cd!important; }
.release-current-dot,.release-node { background:var(--zy-green)!important;box-shadow:0 0 0 4px rgba(124,255,91,.09); }
.release-timeline:before { background:var(--zy-border)!important; }
.release-card { background:var(--zy-surface)!important;color:var(--zy-text)!important;border-color:var(--zy-border)!important;box-shadow:0 16px 50px rgba(0,0,0,.18)!important; }
.release-entry.current .release-card { background:linear-gradient(145deg,#0b130d,#101a12)!important;border-color:#32513a!important;box-shadow:0 20px 65px rgba(0,0,0,.34)!important; }
.release-card h2 { color:#fff!important; }
.release-date,.release-name-row,.release-change-list { color:#c4cec6!important; }
.release-name-row b { background:var(--zy-green)!important;color:#071008!important; }
.release-name-row b.archive { background:#29342c!important;color:#abb6ad!important; }
.release-change-list i { color:var(--zy-green)!important; }

/* Auth / new brand surface */
.zyrvo-auth-shell { width:min(1120px,100%);min-height:calc(100vh - 132px);margin:0 auto;display:grid;grid-template-columns:minmax(0,1.15fr) minmax(340px,.72fr);gap:56px;align-items:center;padding:42px 16px 70px; }
.zyrvo-auth-hero { min-width:0; }
.zyrvo-auth-logo { width:min(360px,70vw);aspect-ratio:1/1;object-fit:cover;border-radius:42px;display:block;margin:-36px 0 -74px -55px;filter:drop-shadow(0 18px 50px rgba(36,223,242,.10)); }
.zyrvo-auth-kicker { color:var(--zy-green);font-weight:900;letter-spacing:.16em;font-size:.74rem;text-transform:uppercase;margin-bottom:14px; }
.zyrvo-auth-hero h1 { margin:0;font-size:clamp(2.8rem,6vw,5.4rem);font-weight:950;line-height:.92;letter-spacing:-.055em;color:#fff;max-width:760px; }
.zyrvo-auth-hero h1 span { color:var(--zy-green); }
.zyrvo-auth-tagline { font-size:clamp(1.3rem,2.6vw,2rem);font-weight:750;margin:20px 0 5px;color:#e9f0ea; }
.zyrvo-auth-secondary { color:var(--zy-muted);font-size:.95rem;margin:0; }
.zyrvo-login-card { width:100%;padding:30px;border-radius:24px!important;box-shadow:var(--zy-shadow); }
.zyrvo-login-brand { display:flex;align-items:center;gap:12px;text-align:left;margin-bottom:24px; }
.zyrvo-login-brand img,.zyrvo-register-brand img { width:48px;height:48px;border-radius:13px;object-fit:cover; }
.zyrvo-login-brand div { display:flex;flex-direction:column; }
.zyrvo-login-brand strong { font-size:1.25rem;letter-spacing:.08em; }
.zyrvo-login-brand span { color:var(--zy-muted);font-size:.74rem;margin-top:2px; }
.zyrvo-register-brand img { margin:0 auto 10px;display:block; }
.auth-note { color:var(--zy-muted); }

/* Mobile bottom navigation */
.mobile-bottom-nav { background:rgba(8,11,9,.96)!important;border-color:var(--zy-border)!important;backdrop-filter:blur(18px); }
.mobile-bottom-nav a { color:#8f9b92!important; }
.mobile-bottom-nav a.active { color:var(--zy-green)!important; }
.mobile-bottom-nav .mobile-create i { color:var(--zy-green); }
.mobile-bottom-nav b { background:var(--zy-green)!important;color:#061007!important;box-shadow:0 0 0 2px var(--zy-bg)!important; }

/* Brand semantic touches */
::selection { background:rgba(124,255,91,.27);color:#fff; }
::-webkit-scrollbar { width:10px;height:10px; }
::-webkit-scrollbar-track { background:#090c0a; }
::-webkit-scrollbar-thumb { background:#2c3930;border:2px solid #090c0a;border-radius:999px; }
::-webkit-scrollbar-thumb:hover { background:#3d5143; }

@media(max-width:900px){
    .zyrvo-auth-shell { grid-template-columns:1fr;gap:18px;padding-top:18px; }
    .zyrvo-auth-hero { text-align:center; }
    .zyrvo-auth-logo { width:210px;margin:-18px auto -42px; }
    .zyrvo-auth-kicker { margin-top:0; }
    .zyrvo-auth-hero h1 { font-size:clamp(2.35rem,11vw,4.1rem); }
    .zyrvo-login-card { max-width:480px;margin:0 auto; }
}
@media(max-width:768px){
    body { padding-bottom:env(safe-area-inset-bottom); }
    .family-post,.compose-card,.settings-card,.admin-card,.activity-list { background:var(--zy-surface)!important; }
    .zyrvo-brand-mark { width:32px;height:32px; }
    .zyrvo-auth-shell { padding-left:0;padding-right:0; }
    .zyrvo-login-card { border-radius:0!important;border-left:0!important;border-right:0!important; }
    .release-card { border-radius:18px!important; }
}

/* ========================================================================== */
/* ZYRVO v2.0.1 — Desktop Polish & Sound System                              */
/* ========================================================================== */

/* Login: знак больше не заезжает на приветствие. */
.zyrvo-auth-logo {
    width:min(300px,58vw);
    margin:0 0 24px 0;
    border-radius:36px;
    filter:drop-shadow(0 18px 50px rgba(36,223,242,.12));
}
.zyrvo-auth-hero { align-self:center; }
.zyrvo-auth-hero h1 { position:relative;z-index:1; }

/* Wide desktop feed: Instagram-like main column + useful ZYRVO rail. */
.feed-shell.feed-shell-wide { max-width:1180px; }
.feed-desktop-layout { display:grid;grid-template-columns:minmax(0,680px) 320px;gap:30px;align-items:start;justify-content:center; }
.feed-main-pane { min-width:0; }
.feed-main-pane .feed-topbar { max-width:680px;margin-left:auto;margin-right:auto; }
.zyrvo-feed-rail { position:sticky;top:92px;display:flex;flex-direction:column;gap:14px;min-width:0; }
.zyrvo-rail-card { background:var(--zy-surface);border:1px solid var(--zy-border);border-radius:18px;padding:15px;box-shadow:0 14px 40px rgba(0,0,0,.13); }
.zyrvo-rail-profile-main { display:flex;align-items:center;gap:12px;color:var(--zy-text);text-decoration:none;min-width:0; }
.zyrvo-rail-profile-main img { width:48px;height:48px;border-radius:50%;object-fit:cover;border:1px solid #425047; }
.zyrvo-rail-profile-main span,.zyrvo-rail-story>span:nth-child(2),.zyrvo-rail-action>span:nth-child(2) { min-width:0;display:flex;flex-direction:column; }
.zyrvo-rail-profile-main strong,.zyrvo-rail-story strong,.zyrvo-rail-action strong { color:#fff;white-space:nowrap;overflow:hidden;text-overflow:ellipsis; }
.zyrvo-rail-profile-main small,.zyrvo-rail-story small,.zyrvo-rail-action small { color:var(--zy-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis; }
.zyrvo-rail-link { display:flex;justify-content:space-between;align-items:center;margin-top:13px;padding-top:11px;border-top:1px solid var(--zy-border-soft);color:var(--zy-green);text-decoration:none;font-size:.86rem;font-weight:700; }
.zyrvo-rail-heading { display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:10px;color:#fff;font-weight:800; }
.zyrvo-rail-heading small,.zyrvo-rail-heading>a,.zyrvo-rail-heading>i { color:var(--zy-muted);font-size:.76rem;text-decoration:none;font-weight:600; }
.zyrvo-rail-action { display:grid;grid-template-columns:36px 1fr auto;gap:10px;align-items:center;padding:9px 0;color:var(--zy-text);text-decoration:none; }
.zyrvo-rail-action+.zyrvo-rail-action { border-top:1px solid var(--zy-border-soft); }
.zyrvo-rail-action-icon { width:36px;height:36px;border-radius:11px;background:var(--zy-surface-3);display:grid;place-items:center;color:var(--zy-green); }
.zyrvo-rail-action>b { min-width:25px;height:25px;border-radius:999px;display:grid;place-items:center;background:var(--zy-green);color:#071008;font-size:.72rem;padding:0 6px; }
.zyrvo-rail-action>b.is-zero { background:#202a23;color:#9baa9e; }
.zyrvo-rail-stories { display:flex;flex-direction:column;gap:8px; }
.zyrvo-rail-story { display:grid;grid-template-columns:42px 1fr 8px;align-items:center;gap:10px;color:var(--zy-text);text-decoration:none;padding:5px 0; }
.zyrvo-rail-story .story-ring { width:42px;height:42px;padding:2px; }
.zyrvo-rail-story .story-ring img { width:100%;height:100%;object-fit:cover;border-radius:50%;border:2px solid var(--zy-surface); }
.zyrvo-rail-story>i { font-size:.4rem;color:var(--zy-green); }
.zyrvo-rail-memory>a { display:grid;grid-template-columns:62px 1fr;align-items:center;gap:11px;color:var(--zy-text);text-decoration:none; }
.zyrvo-rail-memory-thumb { width:62px;height:62px;border-radius:13px;overflow:hidden;background:var(--zy-surface-3);display:grid;place-items:center;color:var(--zy-green); }
.zyrvo-rail-memory-thumb img { width:100%;height:100%;object-fit:cover; }
.zyrvo-rail-memory>a>span:last-child { display:flex;flex-direction:column; }
.zyrvo-rail-memory small { color:var(--zy-muted);margin-top:2px; }
.zyrvo-rail-quick { display:grid;grid-template-columns:1fr 1fr;gap:8px; }
.zyrvo-rail-quick>a { display:flex;align-items:center;gap:8px;border:1px solid var(--zy-border-soft);background:var(--zy-surface-2);border-radius:11px;padding:9px 10px;color:#dfe8e1;text-decoration:none;font-size:.8rem;font-weight:700; }
.zyrvo-rail-quick>a:hover { border-color:rgba(124,255,91,.35);color:var(--zy-green); }
.zyrvo-rail-quick i { color:var(--zy-green); }
.zyrvo-rail-slogan { color:#718078;font-size:.7rem;text-align:center;padding:2px 0 18px;letter-spacing:.08em;font-weight:800; }
.zyrvo-rail-slogan span { font-weight:500;letter-spacing:0; }

/* Cleaner post actions: zero counts are intentionally silent. */
.repost-btn [data-repost-count] { min-width:16px;margin-left:2px;font-size:.72rem;font-weight:800; }
.likes-line-btn[hidden],.repost-btn [data-repost-count][hidden] { display:none!important; }
.post-actions { padding-top:11px; }
.post-body { padding-top:3px; }

/* Profile-local sound controls. */
.zyrvo-sound-card { margin:28px 0 14px;background:linear-gradient(145deg,#0d130f,#111914);border:1px solid #2b3b30;border-radius:20px;padding:20px;box-shadow:0 16px 44px rgba(0,0,0,.18); }
.zyrvo-sound-head { display:flex;justify-content:space-between;gap:20px;align-items:flex-start; }
.zyrvo-sound-kicker { color:var(--zy-green);font-size:.69rem;letter-spacing:.15em;font-weight:900; }
.zyrvo-sound-head h2 { color:#fff;font-size:1.15rem;margin:4px 0 5px;font-weight:850; }
.zyrvo-sound-head p { color:var(--zy-muted);font-size:.84rem;margin:0;max-width:620px; }
.zyrvo-sound-grid { margin-top:16px;border-top:1px solid var(--zy-border-soft); }
.zyrvo-sound-row { display:grid;grid-template-columns:42px 1fr auto auto;gap:11px;align-items:center;padding:13px 0; }
.zyrvo-sound-row+.zyrvo-sound-row { border-top:1px solid var(--zy-border-soft); }
.zyrvo-sound-row>div { display:flex;flex-direction:column;min-width:0; }
.zyrvo-sound-row strong { color:#fff;font-size:.9rem; }
.zyrvo-sound-row small { color:var(--zy-muted);font-size:.76rem; }
.zyrvo-sound-icon { width:42px;height:42px;border-radius:13px;display:grid;place-items:center;font-size:1rem; }
.zyrvo-sound-icon.message { background:rgba(36,214,242,.1);color:#35d9f1; }
.zyrvo-sound-icon.notification { background:var(--zy-green-soft);color:var(--zy-green); }
.zyrvo-sound-test { border:1px solid var(--zy-border);background:var(--zy-surface-2);color:#dce6df;border-radius:9px;padding:6px 10px;font-size:.76rem;font-weight:750; }
.zyrvo-sound-test:hover { border-color:rgba(124,255,91,.35);color:var(--zy-green); }
.zyrvo-switch { display:inline-flex;align-items:center;gap:8px;cursor:pointer;white-space:nowrap; }
.zyrvo-switch input { position:absolute;opacity:0;pointer-events:none; }
.zyrvo-switch>span { width:42px;height:24px;border-radius:999px;background:#2c352f;position:relative;transition:.18s ease;border:1px solid #3b473f; }
.zyrvo-switch>span:after { content:"";position:absolute;width:18px;height:18px;top:2px;left:2px;border-radius:50%;background:#8b968e;transition:.18s ease; }
.zyrvo-switch input:checked+span { background:rgba(124,255,91,.24);border-color:rgba(124,255,91,.48); }
.zyrvo-switch input:checked+span:after { left:20px;background:var(--zy-green);box-shadow:0 0 12px rgba(124,255,91,.32); }
.zyrvo-switch input:disabled+span { opacity:.42; }
.zyrvo-switch>b { color:#dce5df;font-size:.8rem; }
.zyrvo-switch.compact>span { width:38px;height:22px; }
.zyrvo-switch.compact>span:after { width:16px;height:16px; }
.zyrvo-switch.compact input:checked+span:after { left:18px; }
.zyrvo-volume-row { display:grid;grid-template-columns:18px 1fr 42px;gap:10px;align-items:center;margin-top:4px;color:var(--zy-muted); }
.zyrvo-volume-row input[type=range] { width:100%;accent-color:var(--zy-green); }
.zyrvo-volume-row span { color:#c7d2ca;font-size:.75rem;text-align:right; }
.zyrvo-sound-note { display:block;color:#6f7d73;margin-top:10px;font-size:.72rem; }

@media(max-width:1119px){
    .feed-shell.feed-shell-wide { max-width:760px; }
    .feed-desktop-layout { display:block; }
    .zyrvo-feed-rail { display:none; }
}
@media(max-width:900px){
    .zyrvo-auth-logo { width:190px;margin:0 auto 18px; }
}
@media(max-width:640px){
    .zyrvo-sound-card { margin-left:-12px;margin-right:-12px;border-left:0;border-right:0;border-radius:0; }
    .zyrvo-sound-head { gap:12px; }
    .zyrvo-sound-head>label b { display:none; }
    .zyrvo-sound-row { grid-template-columns:38px 1fr auto; }
    .zyrvo-sound-test { grid-column:2/4;justify-self:start; }
}

/* ========================================================================== */
/* ZYRVO v2.0.2 — Web Push                                                    */
/* ========================================================================== */
.zyrvo-push-card { margin:14px 0;background:linear-gradient(145deg,#0d130f,#101812);border:1px solid #2b3b30;border-radius:20px;padding:20px;box-shadow:0 16px 44px rgba(0,0,0,.18); }
.zyrvo-push-head { display:flex;align-items:flex-start;justify-content:space-between;gap:18px; }
.zyrvo-push-head h2 { color:#fff;font-size:1.15rem;margin:4px 0 5px;font-weight:850; }
.zyrvo-push-head p { color:var(--zy-muted);font-size:.84rem;margin:0;max-width:620px; }
.zyrvo-push-toggle { border:1px solid rgba(124,255,91,.4);background:linear-gradient(135deg,#6eff54,#4eea72);color:#071008;border-radius:11px;padding:9px 13px;font-size:.8rem;font-weight:900;white-space:nowrap;box-shadow:0 8px 24px rgba(78,234,114,.12); }
.zyrvo-push-toggle[data-active="1"] { background:var(--zy-surface-2);border-color:var(--zy-border);color:#dce6df;box-shadow:none; }
.zyrvo-push-toggle:disabled { opacity:.45;cursor:not-allowed; }
.zyrvo-push-status-row { display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:15px;padding-top:13px;border-top:1px solid var(--zy-border-soft); }
.zyrvo-push-status { display:inline-flex;align-items:center;gap:7px;font-size:.77rem;font-weight:800;color:var(--zy-muted); }
.zyrvo-push-status:before { content:"";width:8px;height:8px;border-radius:50%;background:#59645d;box-shadow:0 0 0 3px rgba(89,100,93,.12); }
.zyrvo-push-status[data-kind="ok"] { color:#cde8d3; }
.zyrvo-push-status[data-kind="ok"]:before { background:var(--zy-green);box-shadow:0 0 0 3px rgba(124,255,91,.12); }
.zyrvo-push-status[data-kind="error"] { color:#ff8f8f; }
.zyrvo-push-status[data-kind="error"]:before { background:#ff5f5f;box-shadow:0 0 0 3px rgba(255,95,95,.12); }
.zyrvo-push-grid { margin-top:12px;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px; }
.zyrvo-push-grid>label { display:grid;grid-template-columns:1fr 38px;gap:10px;align-items:center;background:var(--zy-surface-2);border:1px solid var(--zy-border-soft);border-radius:12px;padding:10px 11px;cursor:pointer;min-width:0; }
.zyrvo-push-grid>label:hover { border-color:rgba(124,255,91,.28); }
.zyrvo-push-grid>label>span { display:flex;align-items:center;gap:8px;min-width:0;color:#dfe7e1; }
.zyrvo-push-grid>label>span>i { width:18px;color:var(--zy-green);text-align:center; }
.zyrvo-push-grid>label b { font-size:.8rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis; }
.zyrvo-push-grid input { position:absolute;opacity:0;pointer-events:none; }
.zyrvo-push-grid>label>i { position:relative;width:38px;height:22px;border-radius:999px;background:#2d3730;border:1px solid #3c4840;transition:.18s ease; }
.zyrvo-push-grid>label>i:after { content:"";position:absolute;width:16px;height:16px;left:2px;top:2px;border-radius:50%;background:#8a968e;transition:.18s ease; }
.zyrvo-push-grid input:checked+i { background:rgba(124,255,91,.22);border-color:rgba(124,255,91,.45); }
.zyrvo-push-grid input:checked+i:after { left:18px;background:var(--zy-green);box-shadow:0 0 10px rgba(124,255,91,.28); }
.zyrvo-push-grid input:disabled+i,.zyrvo-push-grid input:disabled~* { opacity:.45; }
@media(max-width:640px){
    .zyrvo-push-card { margin-left:-12px;margin-right:-12px;border-left:0;border-right:0;border-radius:0; }
    .zyrvo-push-head { flex-direction:column; }
    .zyrvo-push-toggle { width:100%; }
    .zyrvo-push-grid { grid-template-columns:1fr; }
}

/* =========================================================
   ZYRVO v2.1.0 — Camera capture
   ========================================================= */
.zy-camera-source-grid {
    position:relative;
    display:grid;
    grid-template-columns:repeat(2,minmax(0,1fr));
    gap:12px;
    margin-bottom:10px;
}
.zy-camera-source-card {
    min-height:150px;
    border:1px solid var(--zy-border);
    border-radius:18px;
    background:linear-gradient(160deg,var(--zy-surface-2),#0d120f);
    color:var(--zy-text);
    display:flex;
    flex-direction:column;
    align-items:flex-start;
    justify-content:flex-end;
    padding:18px;
    cursor:pointer;
    text-align:left;
    transition:transform .16s ease,border-color .16s ease,box-shadow .16s ease,background .16s ease;
}
button.zy-camera-source-card { width:100%; }
.zy-camera-source-card:hover,.zy-camera-source-card:focus-visible {
    transform:translateY(-2px);
    border-color:rgba(124,255,91,.52);
    box-shadow:0 18px 44px rgba(0,0,0,.24);
    outline:none;
}
.zy-camera-source-card.primary {
    background:
      radial-gradient(circle at 88% 12%,rgba(36,223,242,.11),transparent 48%),
      linear-gradient(145deg,#101a13,#0b100d);
    border-color:rgba(124,255,91,.30);
}
.zy-camera-source-icon {
    width:46px;height:46px;border-radius:15px;
    display:grid;place-items:center;
    margin-bottom:22px;
    font-size:1.25rem;
    background:var(--zy-surface-3);
    color:var(--zy-green);
    border:1px solid var(--zy-border);
}
.zy-camera-source-card.primary .zy-camera-source-icon {
    color:#071008;
    background:linear-gradient(135deg,var(--zy-green),var(--zy-green-strong));
    border-color:transparent;
    box-shadow:0 8px 24px rgba(80,230,111,.18);
}
.zy-camera-source-card strong { font-size:1rem;line-height:1.2; }
.zy-camera-source-card small { margin-top:5px;color:var(--zy-muted);line-height:1.35; }
.zy-camera-selected-badge {
    position:absolute;right:-7px;top:-7px;
    min-width:24px;height:24px;border-radius:999px;
    display:grid;place-items:center;padding:0 7px;
    background:var(--zy-green);color:#071008;font-weight:900;font-size:.72rem;
    border:3px solid var(--zy-surface);
}
.zy-camera-form-note {
    color:var(--zy-muted);font-size:.78rem;line-height:1.45;margin:0 2px 16px;
}
.zy-camera-form-note i { color:var(--zy-green);margin-right:5px; }

body.zy-camera-open { overflow:hidden!important;overscroll-behavior:none; }
.zy-camera-modal {
    position:fixed;inset:0;z-index:10050;
    background:#000;
    color:#fff;
}
.zy-camera-modal[hidden] { display:none!important; }
.zy-camera-shell {
    position:absolute;inset:0;
    display:grid;
    grid-template-rows:auto minmax(0,1fr) auto auto auto;
    background:#000;
    overflow:hidden;
}
.zy-camera-header {
    min-height:58px;
    padding:max(10px,env(safe-area-inset-top)) 14px 9px;
    display:grid;grid-template-columns:44px 1fr 44px;align-items:center;
    background:linear-gradient(180deg,rgba(0,0,0,.86),rgba(0,0,0,.32));
    z-index:4;
}
.zy-camera-icon-btn {
    width:40px;height:40px;border-radius:50%;border:1px solid rgba(255,255,255,.16);
    background:rgba(15,20,16,.72);color:#fff;display:grid;place-items:center;font-size:1.05rem;
}
.zy-camera-icon-btn:hover { background:rgba(36,45,38,.9);color:var(--zy-green); }
.zy-camera-brand { justify-self:center;display:flex;align-items:center;gap:7px;letter-spacing:.08em; }
.zy-camera-brand strong { font-size:.86rem; }
.zy-camera-brand small { color:#8c9a91;font-size:.66rem;letter-spacing:0; }
.zy-camera-brand-dot { width:8px;height:8px;border-radius:50%;background:var(--zy-green);box-shadow:0 0 15px rgba(124,255,91,.75); }
.zy-camera-stage {
    position:relative;min-height:0;background:#020302;overflow:hidden;
    display:grid;place-items:center;
}
.zy-camera-stage video {
    width:100%;height:100%;object-fit:contain;background:#000;
    transform:none;
}
.zy-camera-stage::after {
    content:"";position:absolute;inset:0;pointer-events:none;
    background:linear-gradient(180deg,rgba(0,0,0,.07),transparent 20%,transparent 78%,rgba(0,0,0,.14));
}
.zy-camera-stage.flash::before {
    content:"";position:absolute;inset:0;z-index:8;background:#fff;animation:zy-camera-flash .22s ease-out forwards;pointer-events:none;
}
@keyframes zy-camera-flash { from{opacity:.84} to{opacity:0} }
.zy-camera-grid { position:absolute;inset:0;pointer-events:none;opacity:.17;z-index:2; }
.zy-camera-grid i { position:absolute;background:#fff; }
.zy-camera-grid i:nth-child(1),.zy-camera-grid i:nth-child(2){top:0;bottom:0;width:1px;}
.zy-camera-grid i:nth-child(1){left:33.333%;}.zy-camera-grid i:nth-child(2){left:66.666%;}
.zy-camera-grid i:nth-child(3),.zy-camera-grid i:nth-child(4){left:0;right:0;height:1px;}
.zy-camera-grid i:nth-child(3){top:33.333%;}.zy-camera-grid i:nth-child(4){top:66.666%;}
.zy-camera-message {
    position:absolute;left:50%;bottom:18px;z-index:7;transform:translateX(-50%);
    max-width:min(88vw,520px);padding:9px 13px;border-radius:999px;
    background:rgba(10,15,11,.86);border:1px solid rgba(255,255,255,.15);backdrop-filter:blur(12px);
    font-size:.78rem;text-align:center;color:#fff;
}
.zy-camera-message.success{border-color:rgba(124,255,91,.45);color:#c9ffbb}.zy-camera-message.warning{border-color:rgba(255,199,78,.45);color:#ffe1a0}.zy-camera-message.error{border-color:rgba(255,101,119,.55);color:#ffc2ca}
.zy-camera-recording {
    position:absolute;top:14px;left:14px;z-index:6;
    display:flex;align-items:center;gap:7px;padding:7px 10px;border-radius:999px;
    background:rgba(0,0,0,.62);backdrop-filter:blur(10px);font-size:.72rem;
}
.zy-camera-recording span { width:9px;height:9px;border-radius:50%;background:#ff3149;box-shadow:0 0 14px rgba(255,49,73,.72);animation:zy-rec 1s steps(1) infinite; }
.zy-camera-recording b { color:#ff6b7b;font-size:.68rem;letter-spacing:.07em; }
.zy-camera-recording time { font-variant-numeric:tabular-nums; }
@keyframes zy-rec { 50%{opacity:.3} }
.zy-camera-permission {
    position:absolute;inset:0;z-index:9;background:rgba(3,5,3,.94);padding:30px;
    display:flex;flex-direction:column;justify-content:center;align-items:center;text-align:center;
}
.zy-camera-permission[hidden] { display:none!important; }
.zy-camera-permission>i { font-size:2.4rem;color:var(--zy-green);margin-bottom:15px; }
.zy-camera-permission strong { font-size:1.1rem; }
.zy-camera-permission p { max-width:430px;color:#a9b4ac;margin:8px 0 18px; }
.zy-camera-permission>div { display:flex;gap:9px;flex-wrap:wrap;justify-content:center; }
.zy-camera-modebar {
    display:flex;justify-content:center;gap:6px;padding:10px 10px 7px;background:#000;
}
.zy-camera-modebar button {
    border:0;background:transparent;color:#8d9790;border-radius:999px;padding:7px 15px;font-size:.82rem;font-weight:800;
}
.zy-camera-modebar button.active { background:#151b17;color:var(--zy-green); }
.zy-camera-controls {
    display:grid;grid-template-columns:80px 1fr 80px;align-items:center;
    min-height:96px;padding:8px 18px max(12px,env(safe-area-inset-bottom));background:#000;
}
.zy-camera-shutter {
    justify-self:center;width:72px;height:72px;border-radius:50%;border:4px solid rgba(255,255,255,.94);
    background:transparent;padding:5px;display:grid;place-items:center;
}
.zy-camera-shutter span { width:100%;height:100%;border-radius:50%;background:#fff;transition:.18s ease; }
.zy-camera-shutter.video-mode span { width:42px;height:42px;background:#ff3048; }
.zy-camera-shutter.recording span { width:30px;height:30px;border-radius:8px;background:#ff3048; }
.zy-camera-side-action {
    border:0;background:transparent;color:#c9d1cb;display:flex;flex-direction:column;gap:5px;align-items:center;justify-content:center;font-size:.69rem;
}
.zy-camera-side-action i { font-size:1.18rem; }
.zy-camera-side-action:hover { color:var(--zy-green); }
.zy-camera-done-count {
    min-width:30px;height:30px;padding:0 8px;border-radius:999px;display:grid;place-items:center;
    background:#1a211c;border:1px solid #303b33;color:#8f9a92;font-weight:900;font-size:.72rem;
}
.zy-camera-side-action.has-files .zy-camera-done-count { background:var(--zy-green);border-color:var(--zy-green);color:#071008; }
.zy-camera-note { text-align:center;background:#000;color:#667168;font-size:.65rem;padding:0 10px max(7px,env(safe-area-inset-bottom)); }

@media (min-width:901px) {
    .zy-camera-modal { background:rgba(0,0,0,.88);backdrop-filter:blur(18px);padding:28px; }
    .zy-camera-shell {
        inset:28px;max-width:720px;max-height:calc(100dvh - 56px);margin:auto;
        border:1px solid #253028;border-radius:24px;box-shadow:0 32px 100px rgba(0,0,0,.6);
    }
}
@media (max-width:600px) {
    .zy-camera-source-grid { gap:9px; }
    .zy-camera-source-card { min-height:122px;padding:14px;border-radius:15px; }
    .zy-camera-source-icon { width:39px;height:39px;border-radius:12px;margin-bottom:14px; }
    .zy-camera-source-card strong { font-size:.91rem; }
    .zy-camera-source-card small { font-size:.69rem; }
    .zy-camera-shell { grid-template-rows:auto minmax(0,1fr) auto auto auto; }
    .zy-camera-header { padding-top:max(8px,env(safe-area-inset-top)); }
    .zy-camera-controls { min-height:88px;grid-template-columns:72px 1fr 72px;padding-left:11px;padding-right:11px; }
    .zy-camera-shutter { width:66px;height:66px; }
}


/* =========================================================
   ZYRVO v2.1.1 — Mobile camera defaults + readable inputs
   ========================================================= */
/* Android/Chrome can inherit the page's white text into old light controls.
   Keep all editable text explicit and give the caret a visible brand color. */
input[type="text"],input[type="search"],input[type="email"],input[type="password"],
input[type="tel"],input[type="url"],input[type="number"],textarea,select {
    caret-color:var(--zy-green);
}
.form-control,.form-select,textarea.form-control,
.family-search input,.comment-form input {
    color:var(--zy-text)!important;
    -webkit-text-fill-color:var(--zy-text)!important;
    opacity:1!important;
}
.form-control::placeholder,textarea.form-control::placeholder,
.family-search input::placeholder,.comment-form input::placeholder {
    color:var(--zy-muted-2)!important;
    -webkit-text-fill-color:var(--zy-muted-2)!important;
    opacity:1;
}

/* Contacts search used to remain white from the legacy stylesheet while the
   input inherited ZYRVO's white text — the text existed, but looked invisible. */
.contact-search {
    background:var(--zy-surface)!important;
    border-color:var(--zy-border)!important;
    box-shadow:0 10px 30px rgba(0,0,0,.16)!important;
}
.contact-search i { color:var(--zy-muted)!important; }
.contact-search input {
    color:var(--zy-text)!important;
    -webkit-text-fill-color:var(--zy-text)!important;
    caret-color:var(--zy-green)!important;
    opacity:1!important;
}
.contact-search input::placeholder {
    color:var(--zy-muted-2)!important;
    -webkit-text-fill-color:var(--zy-muted-2)!important;
    opacity:1!important;
}
.contact-search button {
    background:linear-gradient(135deg,var(--zy-green),var(--zy-green-strong))!important;
    color:#071008!important;
}

/* Chat composer follows the dark ZYRVO surface on mobile and desktop. */
.chat-composer {
    background:rgba(7,9,7,.97)!important;
    border-top-color:var(--zy-border)!important;
}
.chat-attach {
    background:var(--zy-surface-2)!important;
    color:#bdc7bf!important;
    border:1px solid var(--zy-border)!important;
}
.chat-compose-row textarea {
    background:var(--zy-surface-2)!important;
    color:var(--zy-text)!important;
    -webkit-text-fill-color:var(--zy-text)!important;
    border-color:var(--zy-border)!important;
    caret-color:var(--zy-green)!important;
    opacity:1!important;
}
.chat-compose-row textarea::placeholder {
    color:var(--zy-muted-2)!important;
    -webkit-text-fill-color:var(--zy-muted-2)!important;
    opacity:1!important;
}
.chat-compose-row textarea:focus {
    background:var(--zy-surface-3)!important;
    color:var(--zy-text)!important;
    -webkit-text-fill-color:var(--zy-text)!important;
    border-color:rgba(124,255,91,.58)!important;
    box-shadow:0 0 0 3px rgba(124,255,91,.08);
}
.chat-send { background:linear-gradient(135deg,var(--zy-green),var(--zy-green-strong))!important;color:#071008!important; }

/* Other legacy transparent search fields get an explicit readable value too. */
.library-search input,.people-search input,.search-page-form input {
    color:var(--zy-text)!important;
    -webkit-text-fill-color:var(--zy-text)!important;
    caret-color:var(--zy-green)!important;
    opacity:1!important;
}
.library-search input::placeholder,.people-search input::placeholder,.search-page-form input::placeholder {
    color:var(--zy-muted-2)!important;
    -webkit-text-fill-color:var(--zy-muted-2)!important;
    opacity:1!important;
}

@media (max-width:900px) {
    /* Prevent Android WebView/Chrome theme heuristics from repainting typed text. */
    input,textarea,select { text-shadow:none!important; }
    .contact-search,.chat-composer { color-scheme:dark; }
}

/* =========================================================
   ZYRVO v2.1.1 R2 — main chat visibility hardening
   ========================================================= */
/* The main messenger composer is intentionally targeted by id as well as by
   class. This overrides legacy light-chat rules on desktop, Android Chrome
   and installed PWA/WebView builds. */
#chatBody,
.chat-compose-row #chatBody,
.chat-compose-row textarea#chatBody {
    background:#111813!important;
    color:#f5f7f5!important;
    -webkit-text-fill-color:#f5f7f5!important;
    caret-color:#7cff5b!important;
    border-color:#294132!important;
    opacity:1!important;
    color-scheme:dark;
}
#chatBody:focus,
.chat-compose-row #chatBody:focus {
    background:#151f18!important;
    color:#ffffff!important;
    -webkit-text-fill-color:#ffffff!important;
    border-color:rgba(124,255,91,.64)!important;
    box-shadow:0 0 0 3px rgba(124,255,91,.09)!important;
}
#chatBody::placeholder {
    color:#7f8d83!important;
    -webkit-text-fill-color:#7f8d83!important;
    opacity:1!important;
}
#chatBody::selection {
    background:rgba(124,255,91,.30)!important;
    color:#ffffff!important;
    -webkit-text-fill-color:#ffffff!important;
}
.contact-search input[type="search"] {
    background:#111813!important;
    color:#f5f7f5!important;
    -webkit-text-fill-color:#f5f7f5!important;
    caret-color:#7cff5b!important;
    border-color:#294132!important;
    opacity:1!important;
    color-scheme:dark;
}
.contact-search input[type="search"]:focus {
    background:#151f18!important;
    color:#ffffff!important;
    -webkit-text-fill-color:#ffffff!important;
}
