:root{--bg: #0c0b0d;--bg-soft: #141216;--surface: #1b171c;--line: rgba(243, 235, 228, .08);--text: #f3ebe4;--muted: #9a8f88;--gold: #d4b08c;--gold-dim: #a88566;--mine: #6b3144;--mine-text: #fff6f2;--hers: #221e24;--danger: #e8a0a0;--shadow: 0 16px 40px rgba(0, 0, 0, .35);--font: "Manrope", "Segoe UI", sans-serif;--serif: "Cormorant Garamond", Georgia, serif;--radius: 18px;--header-h: calc(64px + env(safe-area-inset-top)) ;--input-pad: calc(12px + env(safe-area-inset-bottom)) }*{box-sizing:border-box;margin:0;padding:0}html,body{height:100%;background:var(--bg);color:var(--text);font-family:var(--font)}body{min-height:100dvh;overflow:hidden;-webkit-font-smoothing:antialiased}button,input,textarea{font:inherit;color:inherit}button{cursor:pointer;border:0;background:none}img,video{max-width:100%;display:block}#app{height:100dvh;height:100svh}.login{min-height:100dvh;display:grid;place-items:center;padding:24px;padding-bottom:calc(24px + env(safe-area-inset-bottom));position:relative;overflow:hidden}.login-bg{position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(180deg,#0c0b0d59,#0c0b0dd1 55%,#0c0b0d),url(/icons/icon-512.png) center 20% / cover no-repeat;filter:saturate(.85);transform:scale(1.06)}.login-card{position:relative;width:min(100%,380px);background:#141014b8;border:1px solid var(--line);border-radius:28px;padding:36px 28px 28px;-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);box-shadow:var(--shadow);text-align:center}.login-card h1{font-family:var(--serif);font-weight:600;font-size:2.4rem;letter-spacing:.02em}.login-card p{color:var(--muted);margin:8px 0 28px;font-size:.95rem}.login-card form{display:grid;gap:12px}.login-card input[type=password]{width:100%;background:#0e0c10;border:1px solid var(--line);border-radius:14px;padding:14px 16px;outline:none}.login-card input:focus{border-color:var(--gold-dim)}.login-card button[type=submit]{background:linear-gradient(180deg,#e0c3a2,#c49b74);color:#2a1c14;font-weight:600;border-radius:14px;padding:13px 16px}.login-error{color:var(--danger);font-size:.85rem;min-height:1.2em}.shell{height:100%;display:grid;grid-template-rows:auto 1fr auto;background:radial-gradient(1200px 500px at 50% -10%,rgba(212,176,140,.08),transparent 55%),var(--bg)}.header{display:flex;align-items:center;gap:12px;padding:calc(10px + env(safe-area-inset-top)) 16px 10px;border-bottom:1px solid var(--line);background:#0c0b0ddb;-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);position:sticky;top:0;z-index:5}.header img.avatar{width:42px;height:42px;border-radius:50%;object-fit:cover;border:1px solid var(--line)}.header .who{flex:1;min-width:0}.header h1{font-family:var(--serif);font-size:1.45rem;line-height:1;font-weight:600}.header .status{color:#b7d7b0;font-size:.75rem;letter-spacing:.02em;margin-top:3px}.header .status:before{content:"";display:inline-block;width:7px;height:7px;border-radius:50%;background:#7dcf7a;margin-right:6px;box-shadow:0 0 0 3px #7dcf7a29}.header .logout{color:var(--muted);font-size:.8rem;padding:8px 10px}.thread{overflow-y:auto;padding:16px 14px 8px;display:flex;flex-direction:column;gap:10px;-webkit-overflow-scrolling:touch}.empty{margin:auto;text-align:center;color:var(--muted);padding:32px 16px}.empty img{width:96px;height:96px;border-radius:50%;object-fit:cover;margin:0 auto 16px;border:1px solid var(--line);box-shadow:var(--shadow)}.empty h2{font-family:var(--serif);color:var(--text);font-size:1.8rem;margin-bottom:6px}.row{display:flex}.row.mine{justify-content:flex-end}.bubble{max-width:min(86%,420px);border-radius:20px;padding:10px 13px;line-height:1.45;font-size:.98rem;white-space:pre-wrap;word-break:break-word;box-shadow:0 8px 20px #0000002e}.row.hers .bubble{background:var(--hers);border-bottom-left-radius:6px;color:var(--text)}.row.mine .bubble{background:linear-gradient(180deg,#7a3a4f,var(--mine));border-bottom-right-radius:6px;color:var(--mine-text)}.bubble .media{margin:2px 0 8px;display:grid;gap:8px}.bubble .media:last-child{margin-bottom:0}.bubble .media img,.bubble .media video{border-radius:14px;max-height:360px;width:100%;object-fit:cover;background:#000;cursor:pointer}.time{display:block;margin-top:6px;font-size:.68rem;opacity:.55}.typing{display:flex;align-items:center;gap:8px;color:var(--muted);font-size:.85rem;padding:2px 6px 8px}.dots{display:flex;gap:4px}.dots span{width:6px;height:6px;border-radius:50%;background:var(--gold);animation:bounce 1.1s infinite ease-in-out}.dots span:nth-child(2){animation-delay:.15s}.dots span:nth-child(3){animation-delay:.3s}@keyframes bounce{0%,80%,to{transform:translateY(0);opacity:.45}40%{transform:translateY(-4px);opacity:1}}.composer{padding:8px 12px var(--input-pad);border-top:1px solid var(--line);background:#0c0b0df0}.composer form{display:grid;grid-template-columns:1fr auto;gap:8px;align-items:end;background:var(--surface);border:1px solid var(--line);border-radius:22px;padding:6px 6px 6px 14px}.composer textarea{width:100%;resize:none;background:transparent;border:0;outline:none;max-height:140px;line-height:1.4;padding:10px 0}.composer button.send{width:42px;height:42px;border-radius:50%;background:linear-gradient(180deg,#e0c3a2,#c49b74);color:#2a1c14;display:grid;place-items:center;flex-shrink:0}.composer button.send:disabled{opacity:.4;cursor:default}.err-banner{color:var(--danger);font-size:.8rem;text-align:center;padding:0 12px 6px}.lightbox{position:fixed;top:0;right:0;bottom:0;left:0;background:#000000e0;display:grid;place-items:center;z-index:20;padding:24px}.lightbox[hidden]{display:none}.lightbox img,.lightbox video{max-width:100%;max-height:90dvh;border-radius:12px}.lightbox button{position:absolute;top:calc(12px + env(safe-area-inset-top));right:16px;color:#fff;font-size:1.4rem}
