:root{--ground: #0b0d12;--surface: #14171e;--surface-2: #1c2029;--well: #262b36;--line: #2b3140;--text: #edeff4;--text-2: #c2c7d4;--muted: #8a92a4;--dim: #828a9c;--accent: #93a4ff;--accent-ink: #0b0d12;--accent-tint: #1a1f36;--saved: #5fbfa8;--saved-tint: #14302b;--warn: #e8b765;--warn-tint: #2a2419;--danger: #ff6b6b;--danger-tint: #2a1a1a;--l-ground: #f6f7fb;--l-surface: #ffffff;--l-surface-2: #eceff6;--l-well: #e2e6f0;--l-line: #d9dde8;--l-text: #14161c;--l-text-2: #3b4250;--l-muted: #5b6270;--l-dim: #656c7a;--l-accent: #4553c8;--l-accent-ink: #ffffff;--l-accent-tint: #e9ecfb;--l-saved: #1b7560;--l-saved-tint: #e1f0eb;--l-warn: #8a5a00;--l-warn-tint: #fbf0d9;--l-danger: #bf2b2b;--l-danger-tint: #fbe6e6;--r-sm: 12px;--r-md: 18px;--r-lg: 24px;--r-xl: 30px;--r-pill: 999px;--tap: 44px;--gutter: 18px;--safe-bottom: env(safe-area-inset-bottom, 0px);--font: "Plus Jakarta Sans", system-ui, -apple-system, sans-serif;--zoom: 1;color-scheme:dark light}@media (prefers-color-scheme: light){:root:not([data-theme=dark]){--ground: var(--l-ground);--surface: var(--l-surface);--surface-2: var(--l-surface-2);--well: var(--l-well);--line: var(--l-line);--text: var(--l-text);--text-2: var(--l-text-2);--muted: var(--l-muted);--dim: var(--l-dim);--accent: var(--l-accent);--accent-ink: var(--l-accent-ink);--accent-tint: var(--l-accent-tint);--saved: var(--l-saved);--saved-tint: var(--l-saved-tint);--warn: var(--l-warn);--warn-tint: var(--l-warn-tint);--danger: var(--l-danger);--danger-tint: var(--l-danger-tint)}}:root[data-theme=light]{--ground: var(--l-ground);--surface: var(--l-surface);--surface-2: var(--l-surface-2);--well: var(--l-well);--line: var(--l-line);--text: var(--l-text);--text-2: var(--l-text-2);--muted: var(--l-muted);--dim: var(--l-dim);--accent: var(--l-accent);--accent-ink: var(--l-accent-ink);--accent-tint: var(--l-accent-tint);--saved: var(--l-saved);--saved-tint: var(--l-saved-tint);--warn: var(--l-warn);--warn-tint: var(--l-warn-tint);--danger: var(--l-danger);--danger-tint: var(--l-danger-tint)}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}:root{zoom:var(--zoom, 1)}html,body,#root{height:100%}body{margin:0;font-family:var(--font);background:var(--ground);color:var(--text);-webkit-font-smoothing:antialiased;overscroll-behavior-y:none}button{font-family:var(--font);cursor:pointer}input,select,textarea{font-family:var(--font);font-size:16px}button,a,[role=button],.tab,.rail-item{touch-action:manipulation}html{-webkit-text-size-adjust:100%;text-size-adjust:100%}.app{display:flex;flex-direction:column;height:100%;max-width:480px;margin:0 auto;position:relative;overflow:hidden}.scroll{flex:1 1 auto;overflow-y:auto;-webkit-overflow-scrolling:touch}.header{flex:0 0 auto;display:flex;align-items:center;gap:12px;padding:18px var(--gutter) 12px}.title{margin:0;font-size:27px;font-weight:800;letter-spacing:-.8px}.tabbar{flex:0 0 auto;position:relative;display:flex;align-items:center;gap:4px;padding:8px var(--gutter) calc(14px + var(--safe-bottom));border-top:1px solid var(--line);background:var(--ground)}.tab{flex:1 1 0;min-height:var(--tap);border:0;background:none;display:flex;flex-direction:column;align-items:center;gap:4px;padding:4px 0;color:var(--dim);font-size:10.5px;font-weight:600}.tab[aria-current=page]{color:var(--accent);font-weight:800}.tab-badge{position:absolute;top:-2px;right:-8px;min-width:18px;height:18px;padding:0 5px;border-radius:var(--r-pill);background:var(--accent);color:var(--accent-ink);font-size:10.5px;font-weight:800;display:flex;align-items:center;justify-content:center}.camera-key{flex:0 0 auto;width:62px;height:48px;border:0;border-radius:var(--r-md);background:var(--accent);color:var(--accent-ink);display:flex;align-items:center;justify-content:center}.card{border-radius:var(--r-lg);background:var(--surface);overflow:hidden}.chip{display:inline-flex;align-items:center;gap:6px;padding:5px 11px;border-radius:var(--r-pill);background:var(--surface-2);color:var(--muted);font-size:11.5px;font-weight:600;white-space:nowrap}.chip--saved{background:var(--saved-tint);color:var(--saved)}.chip--late{background:var(--warn-tint);color:var(--warn)}.chip--accent{background:var(--accent-tint);color:var(--accent)}.btn{min-height:var(--tap);padding:0 20px;border:0;border-radius:var(--r-sm);background:var(--accent);color:var(--accent-ink);font-size:15.5px;font-weight:700;display:inline-flex;align-items:center;justify-content:center;gap:8px}.btn:disabled{background:var(--surface-2);color:var(--dim);cursor:default}.btn--ghost{background:transparent;border:1px solid var(--line);color:var(--text-2);font-weight:600}.btn--block{width:100%}.icon-btn{width:var(--tap);height:var(--tap);border:0;border-radius:var(--r-pill);background:var(--surface-2);color:var(--text-2);display:inline-flex;align-items:center;justify-content:center}.well{background:var(--well);display:flex;align-items:center;justify-content:center;color:var(--dim)}.avatar{border-radius:var(--r-pill);background:var(--surface-2);color:var(--text);font-weight:700;display:inline-flex;align-items:center;justify-content:center;overflow:hidden;flex:0 0 auto}.avatar img{width:100%;height:100%;object-fit:cover}.ring{border-radius:var(--r-pill);padding:2.5px;background:var(--accent);flex:0 0 auto}.ring--empty{background:none;border:2px dashed var(--line);padding:.5px}.ring--you{background:none;border:2px dashed var(--accent);padding:.5px}.ring>.avatar{border:2.5px solid var(--ground);width:100%;height:100%}.rail{display:flex;gap:14px;padding:4px var(--gutter) 14px;overflow-x:auto;scrollbar-width:none}.rail::-webkit-scrollbar{display:none}.rail-item{display:flex;flex-direction:column;align-items:center;gap:7px;width:62px;border:0;background:none;padding:0;color:var(--text-2);font-size:11.5px;font-weight:600}.scrim{position:absolute;inset:0;background:#06070aa8;z-index:20}.sheet{position:absolute;left:0;right:0;bottom:0;z-index:21;border-radius:var(--r-xl) var(--r-xl) 0 0;background:var(--surface);border-top:1px solid var(--line);padding:12px var(--gutter) calc(22px + var(--safe-bottom));display:flex;flex-direction:column;gap:16px;max-height:92%;overflow-y:auto;animation:sheet-up .22s cubic-bezier(.2,.9,.2,1)}@keyframes sheet-up{0%{transform:translateY(14px);opacity:.6}to{transform:translateY(0);opacity:1}}.grabber{align-self:center;width:40px;height:4px;border-radius:var(--r-pill);background:var(--line)}.pager{position:absolute;inset:0;z-index:30;background:#000;overflow-y:auto;scroll-snap-type:y mandatory}.pager-page{position:relative;height:100%;scroll-snap-align:start;display:flex;align-items:center;justify-content:center}.pager-media{position:absolute;inset:0}.pager-media img{width:100%;height:100%;object-fit:cover}.pager-inset{position:absolute;left:14px;top:76px;width:116px;height:155px;border-radius:20px;border:3px solid #000;overflow:hidden;background:var(--well)}.pager-inset img{width:100%;height:100%;object-fit:cover}.glass{background:#ffffff24;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px)}.bubble{max-width:250px;padding:10px 13px;border-radius:var(--r-md) var(--r-md) var(--r-md) 5px;background:var(--surface);font-size:15px;line-height:1.45;word-break:break-word}.bubble--mine{border-radius:var(--r-md) var(--r-md) 5px var(--r-md);background:var(--accent);color:var(--accent-ink);font-weight:500}.composer{flex:0 0 auto;display:flex;align-items:center;gap:9px;padding:10px var(--gutter) 10px;background:var(--ground);border-top:1px solid var(--line)}.composer input{flex:1 1 auto;min-height:var(--tap);padding:0 16px;border:1px solid var(--line);border-radius:var(--r-pill);background:var(--surface-2);color:var(--text)}.composer input::placeholder{color:var(--dim)}.row{display:flex;align-items:center;gap:10px}.col{display:flex;flex-direction:column}.grow{flex:1 1 auto;min-width:0}.truncate{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.center{display:flex;align-items:center;justify-content:center}.muted{color:var(--muted)}.dim{color:var(--dim)}.small{font-size:12.5px}.tiny{font-size:11.5px}.bold{font-weight:700}.pad{padding:0 var(--gutter)}.grid2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.grid3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px}.spinner{width:18px;height:18px;border-radius:50%;border:2px solid var(--line);border-top-color:var(--accent);animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
