*{box-sizing:border-box;margin:0;padding:0}:root{--bg: #fff;--bg-secondary: #f5f5f5;--text: #1a1a1a;--text-secondary: #666;--primary: #007aff;--primary-hover: #0056b3;--danger: #dc3545;--success: #28a745;--border: #e0e0e0;--radius: 8px;--shadow: 0 2px 8px rgba(0,0,0,.1)}[data-ry-theme=dark]{--bg: #1a1a1a;--bg-secondary: #2a2a2a;--text: #fff;--text-secondary: #aaa;--border: #444}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;color:var(--text);line-height:1.5;min-height:100vh}#app{margin:0 4px;min-height:100vh}@media(min-width:700px){#app{margin:0 3rem}}@media(min-width:1024px){#app{margin:0 10rem}}.view{padding:16px;min-height:100vh;display:flex;flex-direction:column}.view header{display:flex;align-items:center;gap:12px;margin-bottom:24px}.view header h1{flex:1;font-size:24px;font-weight:600}.view header .back{color:var(--primary);text-decoration:none;font-size:16px}form{display:flex;flex-direction:column;gap:16px}input[type=text],input[type=password],textarea{width:100%;padding:12px;border:1px solid var(--border);border-radius:var(--radius);font-size:16px;background:var(--bg);color:var(--text)}input:focus,textarea:focus{outline:none;border-color:var(--primary)}input:disabled,textarea:disabled,button:disabled{opacity:.6;cursor:not-allowed}label{display:flex;flex-direction:column;gap:4px;font-size:14px;color:var(--text-secondary)}button,.button{padding:12px 24px;border:none;border-radius:var(--radius);font-size:16px;font-weight:500;cursor:pointer;text-align:center;text-decoration:none;display:inline-block;background:var(--primary);color:#fff;transition:background .2s}button:hover:not(:disabled),.button:hover{background:var(--primary-hover)}button.secondary,.button.secondary{background:var(--bg-secondary);color:var(--text)}button.danger,.button.danger{background:var(--danger)}button.success,.button.success{background:var(--success)}.link{text-align:center;margin-top:16px;color:var(--text-secondary)}.link a{color:var(--primary);text-decoration:none}.error{background:#ffebee;color:var(--danger);padding:12px;border-radius:var(--radius);margin-bottom:16px}.success{background:#e8f5e9;color:var(--success);padding:12px;border-radius:var(--radius);margin-bottom:16px}.warning{background:#fff3e0;color:#e65100;padding:12px;border-radius:var(--radius);margin-bottom:16px}.loading{text-align:center;padding:40px;color:var(--text-secondary)}.spinner{width:24px;height:24px;border:3px solid var(--border);border-top-color:var(--primary);border-radius:50%;animation:spin 1s linear infinite;margin:0 auto 12px}@keyframes spin{to{transform:rotate(360deg)}}.empty{text-align:center;padding:40px 20px;color:var(--text-secondary)}.empty p{margin-bottom:16px}ul{list-style:none}.friend-list-items,.conversation-items,.request-list,.group-items,.device-items{display:flex;flex-direction:column;gap:8px}.friend-item,.conversation-item,.request-item,.group-item,.device-item{display:flex;align-items:center;gap:12px;padding:12px;background:var(--bg-secondary);border-radius:var(--radius);cursor:pointer;transition:background .2s}.friend-item:hover,.conversation-item:hover,.group-item:hover{background:var(--border)}.friend-info,.conversation-info,.group-info{flex:1;display:flex;flex-direction:column}.username,.group-name{font-weight:500}.status,.preview,.member-count{font-size:14px;color:var(--text-secondary)}.status.accepted{color:var(--success)}.status.pending{color:var(--primary)}.arrow{color:var(--text-secondary)}.fab{position:fixed;bottom:80px;right:20px;width:56px;height:56px;border-radius:50%;background:var(--primary);color:#fff;font-size:28px;display:flex;align-items:center;justify-content:center;text-decoration:none;box-shadow:var(--shadow)}.bottom-nav{position:fixed;bottom:0;left:0;right:0;display:flex;background:var(--bg);border-top:1px solid var(--border);padding:8px 0;padding-bottom:env(safe-area-inset-bottom,8px)}.bottom-nav a{flex:1;text-align:center;padding:8px;color:var(--text-secondary);text-decoration:none;font-size:12px}.bottom-nav a.active{color:var(--primary)}.phrase-box{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;padding:16px;background:var(--bg-secondary);border-radius:var(--radius);margin-bottom:16px}.phrase-box .word{font-family:monospace;font-size:14px}.confirm-label{flex-direction:row;align-items:center;gap:8px;margin-bottom:16px}.phrase-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-bottom:16px}.phrase-input-wrapper{display:flex;align-items:center;gap:4px;background:var(--bg-secondary);border-radius:var(--radius);padding:4px 8px}.phrase-number{font-size:11px;color:var(--text-secondary);min-width:16px}.phrase-word{flex:1;border:none;background:transparent;padding:8px 4px;font-family:monospace;font-size:14px;width:100%}.phrase-word:focus{outline:none}.link-code-section{text-align:center;padding:24px}.qr-placeholder{width:200px;height:200px;margin:0 auto 16px;background:var(--bg-secondary);border-radius:var(--radius);display:flex;align-items:center;justify-content:center}.qr-fallback{font-family:monospace;font-size:12px;word-break:break-all;padding:16px}.code-display{margin-top:16px}.link-code{display:block;font-size:24px;font-weight:700;letter-spacing:4px;padding:16px;background:var(--bg-secondary);border-radius:var(--radius)}.code-comparison{display:flex;gap:16px;margin:24px 0}.code-box{flex:1;text-align:center;padding:16px;background:var(--bg-secondary);border-radius:var(--radius)}.code-box label{display:block;margin-bottom:8px}.safety-code{font-size:32px;font-weight:700;letter-spacing:4px}.verification-result{display:flex;gap:12px}.verification-result button{flex:1}.mismatch-warning{background:#ffebee;border:1px solid var(--danger);border-radius:var(--radius);padding:16px;margin-top:16px}.mismatch-warning h3{color:var(--danger);margin-bottom:8px}.warning-actions{display:flex;gap:12px;margin-top:16px}.view.chat{height:100vh;min-height:unset;overflow:hidden}.messages-container{flex:1;overflow-y:auto;padding:16px 0;display:flex;flex-direction:column;gap:8px}.message{max-width:80%;padding:10px 14px;border-radius:18px}.message.sent{align-self:flex-end;background:var(--primary);color:#fff;border-bottom-right-radius:4px}.message.received{align-self:flex-start;background:var(--bg-secondary);border-bottom-left-radius:4px}.message .author{font-size:12px;color:var(--text-secondary);margin-bottom:4px}.message .time{font-size:11px;opacity:.7;margin-top:4px}.message-input{padding:12px;background:var(--bg);border-top:1px solid var(--border);position:sticky;bottom:0}.message-input ry-cluster{width:100%}.message-input input{flex:1}.message-input button{padding:12px 16px}.attach-button{padding:12px;background:transparent;font-size:20px}#mic-btn{padding:12px;border-radius:50%;transition:background-color .2s,transform .1s}#mic-btn:active{transform:scale(.95)}#mic-btn.recording{background:var(--ry-color-red-500, #ef4444);color:#fff}.recording-indicator{color:var(--ry-color-red-500, #ef4444);font-weight:500}.recording-dot{width:10px;height:10px;background:var(--ry-color-red-500, #ef4444);border-radius:50%;animation:recording-pulse 1s ease-in-out infinite}@keyframes recording-pulse{0%,to{opacity:1}50%{opacity:.5}}.attachment-audio{width:100%;max-width:250px;height:40px}.attachment-video{max-width:100%;max-height:300px;border-radius:8px}.attachment-file{padding:8px 12px;background:var(--bg-secondary, #f5f5f5);border-radius:8px}.attachment-file .file-download{display:flex;align-items:center;gap:8px;color:var(--primary, #3b82f6);text-decoration:none;font-size:14px;word-break:break-all}.attachment-file .file-download:hover{text-decoration:underline}.stories-list{display:flex;flex-direction:column;gap:16px;padding-bottom:80px}.story-card{background:var(--bg-secondary);border-radius:var(--radius);padding:16px;cursor:pointer}.story-header{display:flex;justify-content:space-between;margin-bottom:8px}.story-header .author{font-weight:500}.story-header .time{color:var(--text-secondary);font-size:14px}.story-content{margin-bottom:12px;line-height:1.6}.story-media img{width:100%;border-radius:var(--radius);margin-bottom:12px}.story-footer{display:flex;gap:16px;color:var(--text-secondary);font-size:14px}.reactions-section{padding:16px 0;border-top:1px solid var(--border)}.reactions-list{display:flex;gap:8px;margin-bottom:12px}.reaction-group{padding:4px 8px;background:var(--bg-secondary);border-radius:16px;font-size:14px}.reaction-picker{display:flex;gap:8px}.reaction-btn{padding:8px;background:transparent;font-size:20px;border-radius:50%}.reaction-btn:hover{background:var(--bg-secondary)}.reaction-btn.active{background:var(--bg-secondary);box-shadow:0 0 0 2px var(--accent)}.comments-section{padding-top:16px}.comments-section h2{font-size:18px;margin-bottom:16px}.comments-list{display:flex;flex-direction:column;gap:12px;margin-bottom:16px}.comment{padding:12px;background:var(--bg-secondary);border-radius:var(--radius)}.comment-header{display:flex;gap:8px;margin-bottom:4px;font-size:14px}.comment-header .author{font-weight:500}.comment-header .time{color:var(--text-secondary)}.reply-btn{margin-top:8px;padding:4px 8px;font-size:12px;background:transparent;color:var(--primary)}.comment-input{flex-direction:row;gap:8px}.comment-input input{flex:1}.reply-form{margin-left:2rem}.reply-form.hidden{display:none}.profile-content{text-align:center;padding:24px}.avatar{width:120px;height:120px;border-radius:50%;object-fit:cover;margin-bottom:16px}.avatar-placeholder{width:120px;height:120px;border-radius:50%;background:var(--bg-secondary);display:flex;align-items:center;justify-content:center;font-size:48px;font-weight:700;margin:0 auto 16px;color:var(--text-secondary)}.display-name{font-size:24px;margin-bottom:8px}.bio{color:var(--text-secondary)}.bio.empty{font-style:italic}.profile-actions{margin-top:24px}.settings-group{margin-bottom:24px}.settings-group h2{font-size:14px;text-transform:uppercase;color:var(--text-secondary);margin-bottom:8px}.setting-row{flex-direction:row;justify-content:space-between;align-items:center;padding:12px;background:var(--bg-secondary);border-radius:var(--radius)}.setting-link{display:block;padding:12px;background:var(--bg-secondary);border-radius:var(--radius);color:var(--text);text-decoration:none;margin-bottom:8px}.settings-group.danger h2{color:var(--danger)}.my-link-section,.add-section{margin-bottom:24px}.my-link-section h2,.add-section h2{font-size:18px;margin-bottom:12px}.link-display{display:flex;gap:8px}.link-display input{flex:1;font-size:12px}.request-actions{display:flex;gap:8px}.request-actions button{padding:8px 12px;font-size:14px}.current-device,.other-devices{margin-bottom:24px}.current-device h2,.other-devices h2{font-size:14px;text-transform:uppercase;color:var(--text-secondary);margin-bottom:8px}.device-item{cursor:default}.device-item.current{border:2px solid var(--primary)}.device-id{flex:1;font-family:monospace}.group-header{flex:1}.group-header h1{margin-bottom:0}.group-header .member-count{font-size:14px;color:var(--text-secondary)}.friend-picker{display:flex;flex-direction:column;gap:8px}.friend-option{padding:12px;background:var(--bg-secondary);border-radius:var(--radius)}.friend-option label{flex-direction:row;align-items:center;gap:12px;cursor:pointer}.selected-count{text-align:center;color:var(--text-secondary);padding:8px}.hint{font-size:14px;color:var(--text-secondary);text-align:center;margin-top:16px}.bottom-nav{position:fixed;bottom:0;left:0;right:0;display:flex;background:var(--bg);border-top:1px solid var(--border);padding:4px 0;padding-bottom:env(safe-area-inset-bottom,4px);z-index:100}.bottom-nav a,.bottom-nav button{flex:1;display:flex;flex-direction:column;align-items:center;gap:2px;padding:8px 4px;color:var(--text-secondary);text-decoration:none;font-size:10px;background:transparent;border:none;cursor:pointer}.bottom-nav a .icon,.bottom-nav button .icon{font-size:20px}.bottom-nav a.active,.bottom-nav button.active{color:var(--primary)}.unread-dot{position:absolute;right:8px;top:50%;transform:translateY(-50%);width:10px;height:10px;background:var(--danger);border-radius:50%}.nav-badge{position:absolute;top:0;right:50%;transform:translate(22px);min-width:18px;height:18px;padding:0 5px;background:var(--danger);color:#fff;font-size:11px;font-weight:600;border-radius:9px;display:flex;align-items:center;justify-content:center}ry-drawer a[data-navigo],.drawer-link{display:flex;align-items:center;gap:var(--ry-space-3, 12px);padding:var(--ry-space-3, 12px);color:var(--text);text-decoration:none;border-radius:var(--ry-radius-md, 8px)}ry-drawer a[data-navigo]:hover,.drawer-link:hover{background:var(--bg-secondary)}.logs header{flex-wrap:wrap}.logs-controls{display:flex;gap:8px}.log-select{padding:8px;border:1px solid var(--border);border-radius:var(--radius);background:var(--bg);color:var(--text);font-size:14px}.logs-stats{display:flex;justify-content:space-between;align-items:center;padding:8px 0;font-size:14px;color:var(--text-secondary)}.live-dot{width:8px;height:8px;background:var(--success);border-radius:50%;animation:pulse 2s infinite}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}.logs-list{display:flex;flex-direction:column;gap:4px;padding-bottom:100px;max-height:calc(100vh - 200px);overflow-y:auto}.log-event{background:var(--bg-secondary);border-radius:var(--radius);cursor:pointer;transition:background .2s}.log-event:hover{background:var(--border)}.log-event-header{display:flex;align-items:center;gap:8px;padding:10px 12px;font-size:13px}.log-dir{font-size:14px;width:20px;text-align:center}.log-dir.out{color:#3b82f6}.log-dir.in{color:#a855f7}.log-dir.session{color:#f97316}.log-dir.gateway{color:#6b7280}.log-time{font-family:monospace;color:var(--text-secondary);font-size:12px}.log-type{padding:2px 6px;border-radius:4px;color:#fff;font-size:11px;text-transform:uppercase}.log-corr{font-family:monospace;color:var(--text-secondary);font-size:11px;margin-left:auto}.log-expand{color:var(--text-secondary);font-size:10px}.log-event-details{padding:0 12px 12px;border-top:1px solid var(--border);margin-top:8px}.log-data{font-family:monospace;font-size:12px;white-space:pre-wrap;word-break:break-all;background:var(--bg);padding:12px;border-radius:var(--radius);max-height:200px;overflow-y:auto}.pix-indicator{display:inline-flex;align-items:center;gap:4px;color:var(--pix-color, var(--danger))}.pix-indicator .pix-count{font-size:10px;font-weight:700}.streak-badge{display:inline-flex;align-items:center;gap:2px;font-size:14px;color:#f97316}.pix-item{cursor:pointer}.pix-item--disabled{opacity:.6;cursor:default;pointer-events:none}.pix-camera{padding:0!important;background:#000}.pix-camera__header{position:absolute;top:0;left:0;right:0;display:flex;align-items:center;justify-content:space-between;padding:16px;z-index:10;background:linear-gradient(to bottom,rgba(0,0,0,.5),transparent);color:#fff}.pix-camera__viewfinder{width:100%;height:100vh;display:flex;align-items:center;justify-content:center;overflow:hidden}.pix-camera__viewfinder video{width:100%;height:100%;object-fit:cover}.pix-camera__capture-area{position:absolute;bottom:40px;left:0;right:0;display:flex;justify-content:center}.pix-camera__capture-btn{width:72px;height:72px;border-radius:50%;background:transparent;border:4px solid white;padding:4px;cursor:pointer}.pix-camera__capture-btn-inner{width:100%;height:100%;border-radius:50%;background:#fff;transition:transform .1s}.pix-camera__capture-btn:active .pix-camera__capture-btn-inner{transform:scale(.9)}.pix-camera__capture-btn--recording{border-color:#ef4444}.pix-camera__capture-btn--recording .pix-camera__capture-btn-inner{background:#ef4444;border-radius:4px;width:32px;height:32px;animation:pix-pulse 1s ease-in-out infinite}@keyframes pix-pulse{0%,to{opacity:1}50%{opacity:.6}}.pix-camera__recording-indicator{display:flex;align-items:center;gap:8px;color:#ef4444;font-weight:600;font-variant-numeric:tabular-nums}.pix-camera__recording-dot{width:12px;height:12px;background:#ef4444;border-radius:50%;animation:pix-pulse 1s ease-in-out infinite}.pix-camera__hint{color:#ffffffb3;font-size:12px;text-align:center;margin-bottom:12px}.pix-camera--preview{background:#000}.pix-camera__preview-container{position:relative;width:100%;height:60vh}.pix-camera__preview-image,.pix-camera__preview-video{width:100%;height:100%;object-fit:cover}.pix-camera__caption{position:absolute;bottom:16px;left:16px;right:16px;background:#0009;color:#fff;border:none;border-radius:8px;padding:12px;font-size:16px}.pix-camera__caption::placeholder{color:#fff9}.pix-camera__controls{display:flex;align-items:center;justify-content:space-between;padding:16px;background:var(--bg, #fff);border-top:1px solid var(--border, #e0e0e0)}.pix-camera__btn{width:48px;height:48px;border-radius:50%;background:var(--bg-secondary, #f5f5f5);color:var(--text, #1a1a1a);border:none;cursor:pointer;display:flex;align-items:center;justify-content:center}.pix-camera__btn--send{background:var(--primary);color:#fff}.pix-camera__btn--loading{opacity:.7;cursor:not-allowed}.pix-camera__spinner{width:20px;height:20px;border:2px solid rgba(255,255,255,.3);border-top-color:#fff;border-radius:50%;animation:pix-spin .8s linear infinite}@keyframes pix-spin{to{transform:rotate(360deg)}}.pix-camera__duration{display:flex;align-items:center;gap:8px;color:var(--text, #1a1a1a)}.pix-camera__duration input[type=range]{width:100px}.pix-camera__friend-picker{padding:16px;background:var(--bg, #fff);flex:1;overflow-y:auto;border-radius:16px 16px 0 0;margin-top:-20px}.pix-camera__friend-picker h3{color:var(--text, #1a1a1a);margin-bottom:12px}.pix-camera__friend-item{cursor:pointer;background:var(--bg-secondary, #f5f5f5);color:var(--text, #1a1a1a)}.pix-camera__friend-item.selected{border:2px solid var(--primary);background:var(--primary);color:#fff}.pix-viewer{padding:0!important;background:#000;position:relative}.pix-viewer--loading{display:flex;align-items:center;justify-content:center;color:#fff}.pix-viewer__header{position:absolute;top:0;left:0;right:0;padding:16px;z-index:10;background:linear-gradient(to bottom,rgba(0,0,0,.5),transparent)}.pix-viewer__close{position:absolute;top:16px;right:16px;width:36px;height:36px;border-radius:50%;background:#0006;color:#fff;border:none;cursor:pointer;display:flex;align-items:center;justify-content:center}.pix-viewer__sender{color:#fff;font-weight:600;font-size:16px}.pix-viewer__timer{position:absolute;top:0;left:0;right:0;height:3px;background:#ffffff4d}.pix-viewer__timer-bar{height:100%;background:#fff;transition:width .1s linear}.pix-viewer__content{position:relative;width:100%;height:100vh;display:flex;align-items:center;justify-content:center}.pix-viewer__image,.pix-viewer__video{width:100%;height:100%;object-fit:contain}.pix-viewer__audio{width:80%;max-width:300px}.pix-viewer__placeholder{color:#ffffff4d;font-size:64px}.pix-viewer__caption{position:absolute;bottom:80px;left:16px;right:16px;z-index:1000;background:#0009;color:#fff;padding:12px 16px;border-radius:8px;text-align:center}@media(max-width:480px){.view{padding:12px}}
