#main.auth-center { display: flex; align-items: center; justify-content: center; min-height: calc(100vh - 24px); }
#main.auth-center .window{ position: static; transform: none; max-width:480px; width:90%; }
#main.auth-center .auth-login-shell{display:flex;flex-direction:column;align-items:center;gap:14px;width:min(90%,480px)}
#main.auth-center .auth-login-shell .window{width:100%;max-width:none}
.auth-login-brand{font-family:'AmethystWhimsyFont','AmethystFont','Segoe UI',Tahoma,sans-serif;font-size:64px;line-height:0.9;text-align:center;text-shadow:6px 6px 0 rgba(0,0,0,0.2)}
.auth-login-window{box-shadow:6px 6px 0 rgba(0,0,0,0.2)}

#lang-select-footer{position:fixed;right:12px;bottom:12px;background:var(--panel);border:2px solid var(--border);padding:6px}
.hidden { display: none !important; }
:root{--bg:#c0c0c0;--panel:#e0e0e0;--border:#000;--text:#000;--muted:#555;--surface:#ffffff;--surface2:#eeeeee;--link:#06c;--bg-active:var(--link);--message-spacing:0.5em;--message-fragment-spacing:0em;--members-panel-width:240px;--app-font-family:'AmethystFont', 'Segoe UI', Tahoma, sans-serif}
/* load custom site font from import/ directory (falls back to system fonts) */
@font-face{
	font-family: 'AmethystFont';
	src: url('/import/font.ttf') format('truetype');
	font-weight: normal;
	font-style: normal;
	font-display: swap;
}

@font-face{
	font-family: 'AmethystWhimsyFont';
	src: url('/import/whimsyfont.ttf') format('truetype');
	font-weight: normal;
	font-style: normal;
	font-display: swap;
}

*{box-sizing:border-box;font-family:var(--app-font-family)}
body{background:var(--bg);margin:0;padding:10px;color:var(--text)}
#topbar{display:flex;justify-content:space-between;background:var(--panel);border:3px solid var(--border);padding:6px;color:var(--text)}
.top-user-center{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;pointer-events:none}
.top-user-center .user-line{display:flex;align-items:center;gap:8px;font-weight:600}
.top-user-center .user-line img{width:40px;height:40px;object-fit:cover;object-position:center;border:2px solid var(--border);border-radius:0;aspect-ratio:1/1}
.top-user-center .user-text{display:flex;flex-direction:column;align-items:flex-start;line-height:1.2}
.top-user-center .user-text .user-name{font-weight:600;font-size:14px}
.top-user-center .user-text .user-uuid{font-size:11px;color:var(--muted);margin-top:2px}
/* small inline flag next to username in the topbar */
.top-user-center .user-text .user-name .user-flag{margin-left:6px;font-size:1.05em}

/* clickable user block overrides */
.top-user-center.clickable{pointer-events:auto;cursor:pointer}
.top-user-center.clickable .user-line{cursor:pointer}
.hidden { display: none !important; }
.topbtn{border:2px solid var(--border);background:var(--panel);padding:6px 12px;margin-right:6px;cursor:pointer;color:var(--text);font-weight:600;letter-spacing:0.5px;transition:background .15s,filter .15s,color .15s}
.topbtn.topbtn-highlight{color:var(--link);border-color:var(--link);box-shadow:0 0 8px rgba(0,0,0,0.35);}
.topbtn:hover{filter:brightness(1.12)}
.topbtn.active{box-shadow:0 0 0 2px var(--link) inset,0 0 4px rgba(0,0,0,0.4);background:var(--surface2);}
.speed-dial-wrapper{position:relative;display:flex;align-items:center;margin-left:0}
.speed-dial-wrapper .topbtn{margin-right:0;}
.speed-dial-btn[disabled]{opacity:0.6;cursor:not-allowed;filter:none}
.speed-dial-btn.speed-dial-dnd-active,
:root .speed-dial-btn.speed-dial-dnd-active,
:root[data-theme] .speed-dial-btn.speed-dial-dnd-active{
	background:#b73f22;
	color:#fff;
	border-color:#cd4733;
	box-shadow:0 0 8px rgba(183,63,34,0.4);
}
:root .speed-dial-btn.speed-dial-dnd-active:hover,
:root[data-theme] .speed-dial-btn.speed-dial-dnd-active:hover,
.speed-dial-btn.speed-dial-dnd-active:hover{filter:brightness(1.05);}
.speed-dial-popup{position:absolute;top:calc(100% + 8px);right:0;width:240px;min-height:320px;padding:12px;border:2px solid var(--border);background:var(--surface);box-shadow:0 12px 28px rgba(0,0,0,0.35);display:flex;flex-direction:column;gap:12px;z-index:50}
.speed-dial-popup[hidden]{display:none}
.speed-dial-header{display:flex;align-items:center;justify-content:flex-start;font-weight:700;letter-spacing:0.5px;gap:8px}
#speed-dial-title{flex:1}
.speed-dial-back-btn{min-width:48px;padding:4px 8px;font-size:12px}
.speed-dial-main-pane.hidden{display:none}
.speed-dial-device-pane{flex:1;display:flex;flex-direction:column;gap:12px}
.speed-dial-device-pane.hidden{display:none}
.speed-dial-device-list{flex:1;overflow:auto;display:flex;flex-direction:column;gap:8px}
.speed-dial-device-option{width:100%;text-align:left;display:flex;align-items:center;justify-content:flex-start;border-radius:0}
.speed-dial-device-option.is-selected{border-color:var(--link);box-shadow:0 0 0 1px var(--link)}
.speed-dial-device-message{font-size:12px;color:var(--muted);text-align:center;padding:12px;border:1px dashed var(--border)}
.speed-dial-form{display:flex;flex-direction:column;gap:12px;flex:1}
.speed-dial-field{display:flex;flex-direction:column;gap:6px;font-weight:600;flex:1;min-width:0}
.speed-dial-field input,
.amethyst-input,
select.amethyst-input,
textarea.amethyst-input{border:1px solid var(--border);background:var(--surface2);color:var(--text);padding:8px;font-size:13px;line-height:1.3;width:100%;}
.speed-dial-field input:focus,
.amethyst-input:focus{outline:2px solid var(--link);outline-offset:2px}
.speed-dial-status-row{display:flex;align-items:flex-end;gap:8px;width:100%;flex-wrap:nowrap}
.speed-dial-apply-btn{height:38px;align-self:flex-end;white-space:nowrap;flex:0 0 auto;padding:8px 16px}
.speed-dial-nav-row{display:flex;gap:8px;align-items:center}
.speed-dial-nav-btn{flex:1 1 0;min-width:0;white-space:nowrap}
.speed-dial-dnd-field .setting-toggle{font-size:13px}
.speed-dial-feedback{font-size:12px;min-height:16px;color:var(--muted)}
.speed-dial-feedback-error{color:#c0392b;font-weight:600}
.speed-dial-form .btn{padding:6px 14px}
.speed-dial-section-label{font-weight:600;font-size:13px;color:var(--text);text-transform:none;letter-spacing:0;display:block;margin-bottom:2px;flex:0 0 auto}
.speed-dial-section-label span{display:block;font-weight:inherit;font-size:inherit;color:inherit}
.speed-dial-voice-section{display:flex;flex-direction:column;gap:6px}
.speed-dial-voice-section.disabled{opacity:0.5}
.speed-dial-voice-buttons{display:flex;gap:8px;flex-wrap:nowrap;align-items:center}
.speed-dial-voice-buttons .btn{white-space:nowrap}

.setting-toggle{display:flex;align-items:center;justify-content:space-between;width:100%;border:2px solid var(--border);background:var(--surface2);color:var(--text);padding:10px 12px;font-weight:700;cursor:pointer;gap:8px;transition:border 0.15s,background 0.15s}
.setting-toggle .setting-toggle-label{flex:1;text-align:left;white-space:normal;line-height:1.2}
.setting-toggle .setting-toggle-state{font-family:var(--app-font-family);font-size:0.95em;color:var(--muted);transition:color 0.15s}
.setting-toggle-on .setting-toggle-state{color:var(--link);}
.setting-toggle-off .setting-toggle-state{color:var(--muted);}
.setting-toggle:focus-visible{outline:2px solid var(--link);outline-offset:2px}

.left,.right{display:flex;align-items:center}
#main{margin-top:12px;padding:12px;border:3px solid var(--border);background:var(--surface);min-height:480px;display:flex;flex-direction:column;height:calc(100vh - 96px);overflow:hidden;color:var(--text)}

.window{border:2px solid var(--border);background:linear-gradient(var(--surface),var(--surface2));padding:10px;display:inline-block;color:var(--text)}
.room-settings-layout{display:flex;gap:16px;align-items:flex-start;flex-wrap:wrap}
.room-settings-nav{flex:0 0 220px;min-width:200px;display:flex;flex-direction:column;gap:8px;align-self:flex-start;position:sticky;top:12px}
.room-settings-nav-header{display:flex;align-items:center;justify-content:space-between;gap:8px;font-weight:700}
.room-settings-nav-list{margin-top:12px;display:flex;flex-direction:column;gap:8px}
.room-settings-nav-btn{width:100%;text-align:left}
.room-settings-content{flex:1;display:flex;flex-direction:column;gap:16px;min-width:280px;max-height:calc(100vh - 125px);overflow:auto;padding-right:8px}
.room-admin-panel{display:flex;flex-direction:column}
.room-channel-list,
.room-role-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px;max-height:300px;overflow:auto}
.room-admin-primary .room-channel-list,
.room-admin-primary .room-role-list{max-height:320px}
.room-channel-item,
.room-role-item{border:1px solid var(--border);background:var(--surface2);border-radius:0;transition:border-color 0.15s ease,box-shadow 0.15s ease}
.room-channel-item.is-active,
.room-role-item.is-active{border-color:var(--link);box-shadow:0 0 0 1px var(--link)}
.room-channel-item.dragging{opacity:0.6}
.room-channel-select,
.room-role-select{width:100%;border:0;background:transparent;color:var(--text);padding:8px 10px;text-align:left;font-weight:600;cursor:pointer;display:block;border-radius:0;transition:background 0.15s ease,color 0.15s ease}
.room-channel-item.voice-channel .room-channel-select{border:1px dashed var(--border);font-style:italic}
.room-channel-select:hover,
.room-role-select:hover{background:var(--surface)}
.room-channel-item.is-active .room-channel-select,
.room-role-item.is-active .room-role-select{background:var(--link);color:#fff}
.room-channel-select:focus-visible,
.room-role-select:focus-visible{outline:2px solid var(--link);outline-offset:2px}
.room-channel-add,
.room-role-create,
.room-member-invite{margin:0 0 10px 0;display:flex;gap:8px;flex-wrap:wrap}
.room-channel-add .amethyst-input,
.room-role-create .amethyst-input,
.room-member-invite .amethyst-input{flex:1;min-width:180px}
.room-admin-split{gap:12px}
.room-admin-split-columns{display:flex;flex-wrap:wrap;gap:12px}
.room-admin-primary{flex:0 0 240px;display:flex;flex-direction:column;gap:12px;min-width:220px}
.room-admin-detail{flex:1;min-width:260px;border:1px solid var(--border);background:var(--surface);padding:12px;display:flex;flex-direction:column;gap:12px}
.room-detail-empty{font-size:13px;color:var(--muted)}
.room-detail-form{display:flex;flex-direction:column;gap:8px}
.room-detail-title{margin:0;font-size:16px;font-weight:700}
.room-detail-label{font-size:13px;font-weight:600}
.room-detail-inline-row{display:flex;align-items:center;gap:8px}
.room-detail-inline-row .amethyst-input{flex:1 1 auto;min-width:0}
.room-detail-inline-row .btn{flex:0 0 auto;white-space:nowrap}
.room-detail-actions{display:flex;flex-wrap:wrap;gap:8px}
.room-detail-help{font-size:12px;color:var(--muted)}
.room-role-color-controls{display:flex;flex-wrap:wrap;align-items:center;gap:12px}
.room-role-color-toggle{flex:0 1 auto;min-width:180px}
.room-role-color-toggle .setting-toggle{width:auto;min-width:200px}
.room-role-color-input-wrap{display:flex;align-items:center;gap:8px;flex:0 0 auto}
.room-role-color-input-wrap input[type="color"]{width:44px;height:32px;border:1px solid var(--border);padding:0;background:var(--surface2);cursor:pointer}
.room-role-color-input-wrap button{height:32px}
.room-member-list{display:flex;flex-direction:column;gap:12px;margin-top:12px}
.room-member-row{border:1px solid var(--border);background:var(--surface2);border-radius:0;padding:12px;display:flex;gap:12px;align-items:flex-start}
.room-member-avatar-wrap{flex:0 0 auto;display:flex}
.room-member-avatar{width:42px;height:42px;object-fit:cover;object-position:center;border:1px solid var(--border);border-radius:0;display:block}
.room-member-main{flex:1;display:flex;flex-direction:column;gap:10px;min-width:0}
.room-member-name-line{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;flex-wrap:wrap}
.room-member-name-block{display:flex;flex-direction:column;gap:4px;min-width:0}
.room-member-name{font-size:15px;font-weight:700;word-break:break-word}
.room-member-sub{font-size:12px;color:var(--muted);word-break:break-all}
.room-member-role-controls{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-top:8px}
.room-member-role-controls .member-role-select{flex:0 0 auto;min-width:140px;max-width:220px}
.room-member-roles{display:flex;flex-wrap:wrap;gap:6px}
.member-role-chip{border:1px solid var(--border);background:rgba(81,113,255,0.15);color:var(--text);border-radius:0;padding:4px 10px;display:inline-flex;align-items:center;gap:6px;cursor:pointer;transition:background 0.15s ease,border 0.15s ease}
.member-role-chip:hover{background:rgba(81,113,255,0.25);border-color:var(--link)}
.member-role-chip-x{font-weight:700}
.member-role-chip.is-placeholder{background:transparent;border-style:dashed;color:var(--muted);cursor:default;pointer-events:none}
.member-role-chip.is-placeholder .member-role-chip-x{display:none}
.room-member-empty,
.room-channel-empty,
.room-role-empty{font-size:13px;color:var(--muted);padding:4px 0}
.modal{position:fixed;left:20%;top:8%;z-index:20}
.message-edit-backdrop{position:fixed;left:0;top:0;right:0;bottom:0;background:rgba(0,0,0,0.55);display:flex;align-items:center;justify-content:center;z-index:200}
.message-edit-modal{width:90%;max-width:520px;padding:16px}
.message-edit-modal textarea{width:100%;min-height:140px;margin-top:8px;border:1px solid var(--border);background:var(--surface2);color:var(--text);padding:8px;resize:vertical;font-size:14px}
.message-edit-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:12px}
.message-delete-modal{max-width:420px}
.message-delete-modal p{margin:8px 0 0;font-size:14px}
.message-delete-preview{margin:8px 0 0;padding:8px;border:1px solid var(--border);background:var(--surface2);font-size:13px;color:var(--muted)}
.btn-danger{background:#c0392b;color:#fff;border:1px solid #922b21}
.btn-danger:hover{filter:brightness(1.08)}
.btn-muted{background:var(--surface2);color:var(--muted);border:1px solid var(--border)}
.btn-muted:hover{filter:brightness(1.05)}
.msg{color:red;margin-top:8px}
.notification-sound-block,
.notification-custom-sound-block{margin-top:12px;padding:10px;border:1px dashed var(--border);background:var(--surface2)}
.notification-sound-label{font-weight:600;display:block}
.notification-volume-row{display:flex;align-items:center;gap:12px;margin-top:6px}
.notification-volume-row input[type="range"]{flex:1}
.notification-volume-help,
.notification-sound-help{margin-top:6px;font-size:12px;color:var(--muted)}
.notification-current-sound{margin-top:8px;font-weight:600}
.notification-custom-actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:8px}

/* bottom-right language selector */
#lang-select-footer{position:fixed;right:12px;bottom:12px;background:var(--panel);border:2px solid var(--border);padding:6px}

/* Rooms list */
.rooms-list{width:52px;border-right:2px solid var(--border);padding-right:2px}
.rooms-list .room{display:flex;align-items:center;justify-content:center;padding:6px 0;border:0;margin-bottom:6px;position:relative;cursor:grab;transition:transform 0.12s ease}
.rooms-list .room:active{cursor:grabbing;}
.rooms-list .room.dragging{opacity:0.5;}
.rooms-list .friend{display:flex;align-items:center;padding:6px;gap:8px;border:1px solid var(--border);margin-bottom:6px;cursor:pointer;background:var(--surface2);transition:background 0.15s ease, transform 0.15s ease}
.rooms-list .friend:hover{background:var(--surface);transform:translateX(2px)}
/* avatar sizing: square and fixed */
.avatar{width:48px;height:48px;object-fit:cover;object-position:center;border-radius:0;margin:0;flex:0 0 48px;display:block;aspect-ratio:1/1}

.members-group{display:flex;flex-direction:column;margin-bottom:12px}
.members-group:last-child{margin-bottom:0}
.members-group-label{font-weight:700;margin:8px 0 4px}
.members-group:first-child .members-group-label{margin-top:0}
.members-group-body{display:flex;flex-direction:column}
.members-group-empty{font-size:12px;color:var(--muted);padding:6px 0}
.members-search-row{margin-bottom:10px}
.members-search-row .amethyst-input{width:100%}

/* Small border on room icons; active room avatar slightly larger. Hover effects disabled for rooms */
.rooms-list .room .avatar{border:1px solid var(--border);transition:transform 0.12s ease,border-color 0.12s ease,border-width 0.12s ease}
/* Hover: slightly scale room icon for affordance */
.rooms-list .room:hover .avatar{transform:scale(1.06)}

/* Active room: thicker border and slightly larger avatar; no horizontal nudge */
.rooms-list .room.active{transform:none}
.rooms-list .room.active .avatar{border-width:3px;transform:scale(1.1)}

/* message meta: avatar + name above message text */
.message{border:1px solid #ddd;padding:4p;margin-bottom:4px;display:flex;flex-direction:column;background:transparent;position:relative;min-width:0}
.message-group{border:1px solid #ddd;padding:4px 6px;margin-bottom:var(--message-spacing);display:flex;flex-direction:column;gap:0;background:transparent;position:relative;min-width:0}
.message-group .message + .message{margin-top:var(--message-fragment-spacing)}
.message-group .message{border:0;padding:0;margin:0;background:transparent}
.message-group .message .msg-meta{margin-bottom:0px}
.message-group .message .msg-text{margin-bottom:0px}
.message-group .message .message-attach{margin-top:2px}
.message-unread-highlight{
	outline:2px solid var(--link);
	outline-offset:-2px;
	box-shadow:0 0 10px rgba(0,0,0,0.25);
}
.message-group-unread-highlight{
	border-width:3px;
	border-color:var(--link);
	box-shadow:0 0 12px rgba(0,0,0,0.25);
}
.message-group .message-continuation .msg-text,
.message-group .message-continuation .message-attach{margin-left:0}
.message-group .message-continuation .msg-meta{display:flex;align-items:center;gap:6px;min-height:0;margin-bottom:0}
.message-group .message-continuation .msg-continuation-spacer{display:none;width:0;flex:0 0 0}
.message-group .message-continuation .msg-author{display:none}
.message-group .message-continuation .msg-meta-right{margin-left:auto}
.message-group .message-continuation .msg-time{opacity:0;max-height:0;overflow:hidden;transition:opacity .15s ease,max-height .15s ease}
.message-group .message-continuation:hover 
.message-group .message-continuation:focus-within .msg-time{opacity:1;max-height:200px}
.msg-author-stack{display:flex;flex-direction:column;justify-content:center;gap:2px;min-width:0;flex:1;min-height:40px}
.message-group .message-continuation .msg-author-stack{min-height:0}
.msg-reply-link-wrap{display:flex;align-items:center;min-width:0;width:100%}
.message-group .message-continuation .msg-reply-link-wrap{flex:1}
.message-group .message-continuation .msg-meta-right .msg-action-panel{right:0}
.message .msg-meta{display:flex;align-items:center;margin-bottom:6px;gap:6px;min-height:40px}
.message .msg-author{font-weight:bold}
.message .msg-time{font-size:12px;color:var(--muted);margin-bottom:2}
.message.reply-highlight{border-width:3px;animation:replyFlash 1.4s ease}
.message-group .message.reply-highlight{border-width:0;box-shadow:0 0 0 3px rgba(255,255,255,0.4)}
@keyframes replyFlash{0%{box-shadow:0 0 0 3px rgba(255,255,255,0.4),0 0 0 6px rgba(0,0,0,0.2);}50%{box-shadow:0 0 0 3px var(--link),0 0 12px rgba(0,0,0,0.35);}100%{box-shadow:0 0 0 1px rgba(0,0,0,0.15);}}
.msg-meta-right{margin-left:auto;display:flex;flex-direction:column;align-items:flex-end;gap:4px;position:relative;padding-right:4px;min-width:110px}
.msg-reply-link{border:0;background:none;color:var(--link);font-size:12px;cursor:pointer;padding:0;display:inline-flex;align-items:center;gap:6px;text-decoration:none;min-width:0;max-width:100%}
.msg-reply-link-prefix{color:var(--muted);font-size:11px;text-transform:uppercase;letter-spacing:0.04em}
.msg-reply-link-body{display:inline-flex;align-items:center;gap:6px;min-width:0;max-width:100%}
.msg-reply-link-avatar{width:14px;height:14px;object-fit:cover;border:1px solid var(--border);flex:0 0 14px}
.msg-reply-link-snippet{display:block;min-width:0;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--link);text-align:left}
.msg-reply-link:hover,.msg-reply-link:focus-visible{color:var(--text)}
.msg-reply-link:hover .msg-reply-link-snippet,.msg-reply-link:focus-visible .msg-reply-link-snippet{color:var(--text)}
.msg-reply-link:focus-visible{outline:2px solid var(--link);outline-offset:2px}
.message-reactions{display:flex;flex-wrap:wrap;gap:4px;justify-content:flex-start}
.message-reactions-inline{position:absolute;left:0;top:100%;transform:translateY(-10px);z-index:3;max-width:100%;margin-top:0}
.message.message-continuation .message-reactions-inline{left:0;max-width:100%}
.message-reactions:empty{display:none}
.reaction-pill{border:1px solid var(--border);background:var(--panel);color:var(--text);padding:2px 6px;font-size:12px;display:flex;align-items:center;gap:4px;cursor:pointer;border-radius:0;line-height:1}
.reaction-pill span{font-size:11px;color:var(--muted)}
.msg-action-panel{position:absolute;top:0;right:0;display:flex;gap:4px;align-items:center;background:var(--surface2);border:1px solid var(--border);padding:2px 4px;border-radius:0;opacity:0;pointer-events:none;transition:opacity .15s ease,transform .15s ease;transform:translateY(6px)}
.message:hover .msg-action-panel,
.rooms-list .friend:hover .msg-action-panel,
.msg-action-panel:hover,
.msg-action-panel:focus-within{opacity:1;pointer-events:auto;transform:translateY(0)}
.message:has(.msg-action-panel:hover),
.message:has(.msg-action-panel:focus-within){box-shadow:0 0 0 2px var(--link);background:rgba(0,102,204,0.06);z-index:5}
.msg-action-panel button{border:1px solid var(--border);background:var(--panel);color:var(--text);padding:0 6px;font-size:12px;cursor:pointer;border-radius:0;min-height:28px;display:flex;align-items:center;justify-content:center}
.msg-action-panel button:hover{filter:brightness(1.05)}
.msg-action-panel button:focus-visible{outline:2px solid var(--link);outline-offset:2px}
.friend-action-panel{transition-delay:0s}
.rooms-list .friend:hover .friend-action-panel{transition-delay:.8s}
.friend-action-panel:focus-within{transition-delay:0s}
.emoji-picker-panel{position:absolute;display:flex;min-width:320px;background:var(--surface);border:2px solid var(--border);box-shadow:0 12px 28px rgba(0,0,0,0.35);border-radius:0;color:var(--text);max-height:260px}
.emoji-picker-categories{width:110px;display:flex;flex-direction:column;border-right:1px solid var(--border);background:var(--panel);overflow:auto;max-height:260px;padding:6px 4px}
.emoji-cat-btn{padding:8px;border:0;border-bottom:1px solid var(--border);background:transparent;color:var(--text);text-align:left;cursor:pointer;font-size:13px;border-radius:0}
.emoji-cat-btn.active{background:var(--surface2);font-weight:600}
.emoji-picker-grid{flex:1;display:grid;grid-template-columns:repeat(6,40px);gap:6px;padding:8px;overflow:auto}
.emoji-btn{border:1px solid transparent;background:transparent;font-size:20px;cursor:pointer;line-height:1;border-radius:0;padding:4px}
.emoji-btn:hover{border-color:var(--border);background:var(--panel)}
.lang-row{display:inline-flex;align-items:center;gap:8px}
.lang-row .amethyst-input{min-width:160px}
.lang-row .btn{margin-left:4px}
.reaction-tooltip{position:absolute;background:var(--surface);border:1px solid var(--border);padding:8px;min-width:160px;box-shadow:0 8px 18px rgba(0,0,0,0.3);border-radius:0;color:var(--text)}
.reaction-tooltip-header{font-weight:600;margin-bottom:4px}
.reaction-tooltip-list{list-style:none;margin:0;padding:0;max-height:180px;overflow:auto;display:flex;flex-direction:column;gap:4px}
.reaction-tooltip-list li{font-size:13px;display:flex;align-items:center;gap:6px}
.reaction-tooltip-list li img{width:20px;height:20px;object-fit:cover;border:1px solid var(--border);border-radius:0;display:block}
.reaction-tooltip-empty{font-size:12px;color:var(--muted)}

/* friends list: name bold, status smaller under name */
.rooms-list .friend{display:flex;align-items:center;padding:6px;gap:8px;border:1px solid var(--border);margin-bottom:6px;cursor:pointer;background:var(--surface2);transition:background 0.15s ease, transform 0.15s ease}
.rooms-list .friend:hover{background:var(--surface);transform:translateX(2px)}
.friend{position:relative;overflow:hidden;background:transparent;--friend-nameplate-active:0}
.friend::before,.friend::after{content:'';position:absolute;inset:0;pointer-events:none}
.friend::before{background-image:var(--friend-nameplate-url,none);background-size:cover;background-position:center;opacity:var(--friend-nameplate-active,0);transition:opacity .2s ease;z-index:0}
.friend::after{background:var(--panel);opacity:calc(0.9*var(--friend-nameplate-active,0));mask-image:linear-gradient(to right,rgba(0,0,0,1) 0%,rgba(0,0,0,0) 80%);z-index:1}
.friend>*{position:relative;z-index:2}
.friend>.msg-action-panel{position:absolute;top:6px;right:6px;z-index:3}
.rooms-list .friend .friend-meta{display:flex;flex-direction:column}
.rooms-list .friend .friend-name{font-weight:bold}
.rooms-list .friend .friend-status{font-size:12px;color:var(--muted);margin-top:4px}
.friend-preview-wrapper{margin-top:10px;max-width:340px}
.friend-preview-label{font-size:12px;text-transform:uppercase;letter-spacing:0.08em;font-weight:700;color:var(--muted);margin-bottom:4px}
.friend-request-preview{display:flex;flex-direction:column;gap:8px;border-right:0;padding-right:0}
.friend-request-preview .friend{display:flex;margin-bottom:0;gap:8px;border:1px solid var(--border);background:var(--surface2);padding:6px 148px 6px 6px;align-items:center;min-height:54px}
.friend-request-preview .friend .avatar{width:40px;height:40px;object-fit:cover;object-position:center;border-radius:0;display:block;aspect-ratio:1/1;flex:0 0 40px;min-width:40px;max-width:none;border:1px solid var(--border)}
.friend-request-preview .friend .friend-meta{display:flex;flex-direction:column}
.friend-request-preview .friend .friend-meta{flex:1 1 auto;min-width:0}
.friend-request-preview .friend:hover{background:var(--surface)}
.friend-name-row{display:flex;align-items:center;gap:8px;font-size:14px;font-weight:700;min-width:0}
.friend-name-row .friend-name{display:block;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.friend-name-row .presence-dot{width:12px;height:12px;margin:0}
.friend-status-row{display:flex;align-items:center;gap:6px;font-size:12px;margin-top:4px;min-width:0}
.friend-status-row .friend-status{display:block;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.friend-request-entry{align-items:center}
.friend-request-actions{opacity:1;pointer-events:auto;transform:none;top:6px;right:6px;gap:6px;background:transparent;border:0;padding:0}
.friend-request-actions button{min-width:74px}
.friend-preview-loading,.friend-preview-empty{padding:6px;border:1px dashed var(--border);background:var(--surface2);font-size:13px;color:var(--muted)}
.friend-preview-empty{font-style:italic}
.friend-request-error{margin-top:4px;color:#b3261e;font-size:13px}
.presence-dot{width:10px;height:10px;display:inline-block;border:1px solid var(--border);margin-right:4px;vertical-align:middle}

/* DM header styling to match friends list (avatar left, stacked name+status) */
.dm-header{display:flex;align-items:center;gap:8px;padding:8px;border-bottom:0;cursor:pointer}
.dm-header .friend-meta{display:flex;flex-direction:column}
.dm-header .friend-name{font-weight:bold}
.dm-header .friend-status{font-size:12px;margin-top:4px}
.dm-header-row{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:8px}
.dm-customize-btn{white-space:nowrap}

/* utility muted class for small, desaturated text */
.muted{color:var(--muted)}

/* keep chat-history full border; DM header should have no border so the chat box's border is the visible divider */
/*.panel.room-view .chat-history{border-top:1px solid var(--border)} */
.message .msg-text{white-space:pre-wrap;word-break:break-word;overflow-wrap:anywhere;max-width:100%;display:block;min-width:0}
.message .msg-text a,
.blog-body a{color:var(--muted)}
.message .msg-text a:hover,
.blog-body a:hover,
.message .msg-text a:focus-visible,
.blog-body a:focus-visible{color:var(--link)}
.blog-footer{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:12px}
.blog-footer-left{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.blog-footer-right{display:flex;align-items:center;gap:6px}
.blog-heart-count{font-weight:600;font-size:14px}
.blog-heart-btn{border:1px solid var(--border);background:var(--surface2);color:var(--text);padding:4px 10px;font-size:16px;cursor:pointer;line-height:1;border-radius:0;transition:filter .15s ease,background .15s ease,color .15s ease}
.blog-heart-btn:hover{filter:brightness(1.05)}
.blog-heart-btn.active{background:var(--link);color:#fff;border-color:var(--link)}
.blog-footer-spacer{display:inline-block;width:1px;height:1px;visibility:hidden}
.msg-edited-label{margin-left:6px;font-size:12px;color:var(--muted);font-style:italic}
.md-image-link{display:inline-block;text-decoration:none;border:0}
.md-image-link img{max-width:100%;height:auto;border:1px solid var(--border);margin-top:6px;border-radius:0}

.chat-area{padding-left:12px}
/* make chat area a column so history can grow and input stays at bottom */
.chat-area{display:flex;flex-direction:column;flex:1}
.chat-history{flex:1;overflow:auto;padding:8px;border:1px solid #eee;background:#fafafa;min-height:0}
.channel-welcome-header{margin-bottom:12px;padding-bottom:8px;border-bottom:1px solid rgba(0, 0, 0, 0);margin-top:18px}
.channel-welcome-header h2{margin:0;font-size:25px;font-weight:600}
.channel-welcome-header.loading h2{font-size:13px;font-weight:400}
.chat-loading{padding:10px 4px;color:#666;font-size:13px}
.chat-input-row{border-top:0;padding:8px;display:flex;align-items:center;gap:8px;min-width:0}
.reply-preview{border:1px solid var(--border);background:var(--surface2);padding:8px;margin-bottom:6px;display:flex;flex-direction:column;gap:4px;position:relative}
.reply-preview[hidden]{display:none}
.reply-preview-text{font-size:13px;display:flex;flex-wrap:wrap;gap:4px;align-items:center}
.reply-preview-prefix{color:var(--muted);text-transform:uppercase;font-size:11px;letter-spacing:0.5px}
.reply-preview-snippet{font-size:12px;color:var(--muted)}
.reply-preview-cancel{position:absolute;top:4px;right:4px;border:1px solid var(--border);background:var(--panel);color:var(--text);width:22px;height:22px;cursor:pointer;line-height:1}
.reply-preview-cancel:hover{filter:brightness(1.1)}
.image-link-preview-list{display:flex;align-items:center;gap:8px;overflow-x:auto;padding-bottom:2px}
.image-link-preview-item{flex:0 0 auto;border:1px solid var(--border);background:var(--panel);display:flex;align-items:center;justify-content:center;overflow:hidden;max-height:200px}
.image-link-preview-item img{display:block;width:auto;max-width:240px;max-height:200px;object-fit:contain}
.typing-indicator{border:1px solid var(--border);background:var(--surface2);padding:6px 8px;margin-bottom:6px;font-size:13px;color:var(--muted);font-style:italic;display:flex;flex-wrap:wrap;align-items:center;gap:4px}
.typing-indicator-person{display:inline-flex;align-items:center;gap:4px;margin-right:6px}
.typing-indicator-person img{width:20px;height:20px;object-fit:cover;border:1px solid rgba(0,0,0,0.1)}
.typing-indicator-person strong{font-weight:bold}
.typing-indicator-status{white-space:nowrap;font-style:normal;font-size:13px;color:var(--muted)}
.message-attach{max-width:100%;min-width:0}
.message-attach img{max-width:min(100%, 200px);width:auto;height:auto;display:block;margin-top:4px;border:1px solid #ccc;box-sizing:border-box}
.message-attach video{max-width:min(100%, 260px);max-height:200px;width:auto;height:auto;display:block;margin-top:4px;border:1px solid #ccc;background:#000;box-sizing:border-box}
.message-attach .file-link{display:inline-block;margin-top:4px;text-decoration:underline;color:var(--link)}

/* Markdown media inside messages */
.msg-text img{max-width:min(100%, 260px);width:auto;height:auto;display:block;margin-top:4px;border:1px solid var(--border);box-sizing:border-box}
.msg-text video{max-width:min(100%, 360px);max-height:220px;width:auto;height:auto;display:block;margin-top:4px;border:1px solid var(--border);background:#000;box-sizing:border-box}
.msg-text pre{background:var(--surface2);padding:6px;overflow:auto;border:1px solid var(--border);font-family:monospace;font-size:13px;line-height:1.45;max-width:100%;margin:6px 0 0}
.msg-text code{font-family:monospace;line-height:inherit}

/* Panel layout for rooms/messages */
.layout{display:flex;gap:12px;flex:1;overflow:hidden;min-width:0}
.side-panel{width:96px;border:2px solid var(--border);background:var(--panel);padding:6px;display:flex;flex-direction:column}
/* Rooms sidebar should be fixed width at its minimum (desktop). The .rooms-side
	panel contains the .rooms-list and must not flex wider or shrink below this width. */
.side-panel .rooms-list{width:100%;overflow-y:auto;overflow-x:visible;border-right:none;padding-right:0;flex:1;min-height:0}
.side-panel.members-side .rooms-list .friend:hover{background:var(--surface);transform:translateX(-2px)}
.channels-list{width:100%;overflow:auto;margin-top:4px;flex:1;min-height:0}
.channels-list .channel{padding:6px;border:1px solid var(--border);margin-bottom:6px;cursor:pointer;background:var(--panel);font-size:14px;transition:background 0.15s ease, transform 0.15s ease}
.channels-list .channel:hover{background:var(--surface);transform:translateX(2px)}
.channels-list .channel.active{background:var(--bg-active)}
.channels-list .channel.unread{font-weight:900}
.channels-list .channel.voice{border-style:dashed;font-style:italic}
.channel-participants{font-size:11px;color:var(--muted);padding-left:28px;margin:0 0 6px;line-height:1.3;display:none}
.channel-participant{display:flex;align-items:center;gap:6px;padding:2px 0;font-size:12px;color:var(--text)}
.channel-participant img{width:20px;height:20px;object-fit:cover;border:1px solid var(--border);flex:0 0 auto}
.channel-participant.muted img{border-color:#e74c3c}
.right-panel{flex:1;display:flex;flex-direction:column;min-height:0;min-width:0}
#main.room-bg-active{background-position:center;background-size:cover;background-repeat:no-repeat;background-origin:border-box}
#main.room-bg-active .layout .side-panel,
#main.room-bg-active .layout .right-panel,
#main.room-bg-active .layout .panel{background:rgba(0,0,0,0.315);border-color:rgba(255,255,255,0.35);color:#fff}
#main.room-bg-active .layout .panel .btn{background:rgba(0,0,0,0.35);color:#fff;border-color:rgba(255,255,255,0.5)}
#main.room-bg-active .layout .chat-history,
#main.room-bg-active .layout .chat-input-row,
#main.room-bg-active .layout textarea,
#main.room-bg-active .layout input{background:rgba(0, 0, 0, 0);color:#fff;border-color:rgba(255,255,255,0.35)}
#main.room-bg-active .layout .chat-input-row textarea{background:transparent}
#main.room-bg-active .layout .message{background:rgba(0, 0, 0, 0);border-color:rgba(255,255,255,0.25)}
#main.room-bg-active .layout .message-group{background:transparent;border-color:rgba(255,255,255,0.25)}
#main.room-bg-active .layout .message-group .message{background:transparent}
#main.room-bg-active .layout .muted,
#main.room-bg-active .layout .friend-status{color:#f0f0f0}

/* When a room has a background and enforces the transparent theme,
   members listed in the members-side should remain transparent but
   still receive the translation hover effect for affordance. */
#main.room-bg-active .side-panel.members-side .rooms-list .friend{
	background: transparent;
	border-color: rgba(255,255,255,0.18);
}
#main.room-bg-active .side-panel.members-side .rooms-list .friend:hover{
	/* keep hover translation but do not apply an opaque hover background */
	background: transparent;
	transform: translateX(-2px);
}
.panel{border:2px solid var(--border);background:linear-gradient(var(--surface),var(--surface2));padding:8px;margin-bottom:8px;display:flex;flex-direction:column;color:var(--text);min-width:0}
.panel.room-view{background-color:var(--surface);background-repeat:no-repeat;background-size:cover;background-position:center;transition:background-image .35s ease,background-color .35s ease}
/* Banner panel: visually separate small panel with edge-to-edge image and a bottom name strip */
.banner-panel{padding:0;overflow:hidden}
.banner-panel img{width:100%;height:60%;object-fit:cover;display:block;border:0;margin:0;padding:0}
.banner-panel .room-banner-name{padding:8px;text-align:center;font-weight:700;background:var(--panel);color:var(--text)}
.room-view{flex:1;display:flex;flex-direction:column;min-height:0;min-width:0}
.input-panel{margin-bottom:0}
.input-panel{margin-bottom:0;flex:0 0 auto}

.room-unread{background:#c00;color:#fff;padding:2px 6px;border-radius:0px;font-size:11px;display:inline-block;position:absolute;top:6px;right:8px;margin-left:0;min-width:18px;text-align:center}
.messages-side .friend{position:relative}
.messages-side .friend .friend-unread{top:4px;right:6px}
.friend-unread[hidden]{display:none!important}

.rooms-list .room:hover{background:rgba(0,0,0,0.06)}

.message{border:1px solid #ddd;padding:2px 6px;margin-bottom:4px}

/* give a small gap below the room settings button in the header */
#room-settings-btn{margin-bottom:6px}

.btn{padding:6px 8px;border:2px solid var(--border);background:var(--panel);cursor:pointer;color:var(--text)}
/* red danger button variant */
.btn.btn-danger{ background:#c33; color:#fff; border-color:#900 }

/* style for multi-line message inputs inside chat rows */
.chat-input-row textarea{flex:1 1 auto;min-width:0;min-height:32px;padding:6px;border:0;background:var(--surface);color:var(--text);resize:none;overflow-y:hidden;font-family:inherit;font-size:14px;outline:none}
.chat-input-row textarea:focus{box-shadow:0 0 0 2px rgba(0,0,0,0.06);}

@media (max-width:640px){
	.chat-input-row textarea{min-height:32px}
}

.profile-pic{width:48px;height:48px;border:2px solid #000;object-fit:cover;object-position:center;display:block;aspect-ratio:1/1}

/* small muted hint text for form inputs */
.input-hint{font-size:12px;color:var(--muted);margin-top:4px}

/* ensure avatar-like images inside message/meta/room entries always fit their box */
.msg-meta .avatar { width:40px;height:40px;object-fit:cover;object-position:center;border-radius:0;display:block;aspect-ratio:1/1;flex:0 0 40px;margin-right:0 }
.message .avatar[data-uuid],.blog-author-pic[data-uuid]{cursor:pointer}
.rooms-list .room .avatar { width:48px;height:48px;object-fit:cover;object-position:center;border-radius:0;display:block;aspect-ratio:1/1 }
.rooms-list .friend .avatar { width:40px;height:40px;object-fit:cover;object-position:center;border-radius:0;display:block;aspect-ratio:1/1;flex:0 0 40px;max-width:none }

/* Blog header layout: poster on the left, title on the right. */
.blog-header{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);align-items:center;gap:12px}
.blog-author{display:flex;align-items:center;gap:8px;min-width:0}
.blog-title-wrap{text-align:right;min-width:0}
.blog-author-pic{width:40px;height:40px;object-fit:cover;object-position:center;border-radius:0;aspect-ratio:1/1}
.blog-author-name{font-weight:600;margin-left:4px;min-width:0;overflow-wrap:anywhere}
.blog-entry .blog-body{margin-top:8px;white-space:normal;word-break:break-word;overflow-wrap:break-word;max-width:100%;min-width:0}

/* Blog title larger and time positioned top-right */
.blog-title{font-size:150%;overflow-wrap:break-word;word-break:break-word}
.blog-time{font-size:12px;color:var(--muted);white-space:nowrap}

.blog-new-layout{display:flex;gap:12px;align-items:stretch;justify-content:center;height:100%;min-height:0;overflow:hidden}
.blog-new-editor-panel,.blog-new-preview-panel{width:50vw;max-width:50vw;min-width:0;max-height:100%;box-sizing:border-box}
.blog-new-editor-panel{display:flex;flex-direction:column;overflow:auto}
.blog-new-editor-panel textarea{min-height:clamp(220px,40vh,420px);resize:vertical}
.blog-new-preview-panel{display:flex;flex-direction:column;overflow:hidden}
.blog-new-preview-body{flex:1;min-height:0;overflow:auto;padding-top:8px}
.blog-entry-preview{cursor:default;transform:none;box-shadow:none}
.blog-entry-preview:hover{transform:none;box-shadow:none}

/* Blogs page: make blog entries take full container width */
#blogs-list .window { display:block; width:100%; box-sizing:border-box; margin-bottom:8px }

/* Make the blogs list scrollable within the page */
#blogs-list{flex:1;overflow:auto;padding:8px;border:1px solid var(--border);background:var(--surface);min-height:0}

.blogs-layout{flex:1;min-height:0}
.blogs-panel{display:flex;flex-direction:column;flex:3;min-height:0}
.blogs-header{display:flex;flex-direction:row;align-items:center;justify-content:space-between;gap:12px;margin-bottom:8px}
.blogs-panel #blogs-list{margin-top:0}
.blogs-header #new-blog{background:#1f9d33;border-color:#0c6d2b;color:#fff;font-size:1.5rem;padding:6px 12px;font-weight:700;}
.new-blog-clone{visibility:hidden;pointer-events:none;background:#1f9d33;border-color:#0c6d2b;color:#fff;font-size:1.5rem;padding:6px 12px;font-weight:700;}
.btn-save{background:#1f9d33;border-color:#0c6d2b;color:#fff;padding:6px 12px;font-weight:700;}
.btn-save:hover{filter:brightness(1.08);}
.blogs-header h3{flex:1;text-align:center;font-size:150%;font-weight:700;margin:0;}
/* show double hyphen on either side of the Blogs header text */
.blogs-header h3::before{content:"-- ";letter-spacing:0.08em}
.blogs-header h3::after{content:" --";letter-spacing:0.08em}
.blog-entry{cursor:pointer;transition:box-shadow .15s,transform .15s}
.blog-entry:hover{box-shadow:0 4px 18px rgba(0,0,0,0.25);transform:translateY(-1px)}
.blog-entry.selected{outline:2px solid var(--link)}
.blog-entry:focus-visible{outline:2px solid var(--link)}
.blog-comments-panel{flex:1;display:flex;flex-direction:column;min-height:0;min-width:0}
.blog-comments-header{font-weight:700;margin-bottom:8px}
.blog-comments-history{margin-bottom:8px;flex:1;display:flex;flex-direction:column;gap:6px}
.blog-comments-empty{color:var(--muted);text-align:center;font-size:13px;margin-top:24px}
.blog-comments-load-more{color:var(--muted);text-align:center;font-size:13px;padding:8px 4px 2px}
.blog-comments-panel .chat-input-row{margin-top:auto}
.blog-comments-history .message{margin-bottom:6px}
.blog-comments-history .message:last-child{margin-bottom:0}

/* MySpace layout */
.myspace-banner-wrap{position:relative;width:100%;height:360px;overflow:visible;border:2px solid var(--border);background:#999}
.myspace-banner{width:100%;height:100%;object-fit:cover;object-position:center;display:block}
.myspace-avatar-large{position:absolute;left:40px;bottom:-98px;width:224px;height:224px;border:5px solid #fff;box-shadow:0 8px 24px rgba(0,0,0,0.38), 0 0 0 2px var(--border);object-fit:cover;object-position:center;background:#eee;aspect-ratio:1/1;z-index:4}
.myspace-avatar-meta{position:absolute;left:50px;bottom:-220px;display:flex;flex-direction:column;align-items:flex-start;gap:6px;z-index:6}
.myspace-meta-top{display:flex;align-items:center;gap:8px}
.myspace-presence{display:flex;align-items:center;gap:8px;font-size:24px;margin-top:26px}
.myspace-presence-dot{width:12px;height:12px;display:inline-block;border:1px solid var(--border);vertical-align:middle}
.myspace-avatar-flag{font-size:34px;line-height:1}
.myspace-avatar-tz{font-size:14px;color:var(--muted)}
.myspace-info{margin-left:300px;padding-top:4px;display:flex;flex-direction:column;gap:6px;position:relative;top:-130px;z-index:5}
.myspace-name-line{font-size:66px;font-weight:600;display:flex;align-items:center;gap:16px;line-height:1.05}
.myspace-tz{display:none}
.myspace-uuid{font-size:36px;color:var(--muted)}
.myspace-status{font-style:italic;font-size:26px;color:var(--muted);margin-left:12px}
.myspace-bio{margin-top:6px;font-size:14px;white-space:pre-wrap;border:1px solid var(--border);padding:8px;background:var(--surface2);color:var(--text)}
.myspace-friends-block{width:240px;min-width:200px;max-width:320px;border:2px solid var(--border);background:var(--surface);padding:10px;box-shadow:4px 4px 0 rgba(0,0,0,0.2)}
.myspace-friends-floating{position:absolute;left:-260px;top:300px;z-index:4}
.myspace-info:hover .myspace-friends-floating{box-shadow:6px 6px 0 rgba(0,0,0,0.25)}
.myspace-friends-heading{font-size:18px;font-weight:700;margin-bottom:8px;text-transform:uppercase;letter-spacing:1px;display:flex;align-items:center;justify-content:space-between}
.myspace-friends-list{display:flex;flex-direction:column;gap:8px}
.myspace-friends-list .friend{display:flex;align-items:center;gap:8px;padding:6px;border:1px solid var(--border);background:var(--surface2);cursor:pointer;transition:background 0.15s ease, transform 0.15s ease}
.myspace-friends-list .friend:hover{background:var(--surface);transform:translateX(2px)}
.myspace-friends-list .avatar{width:40px;height:40px;max-width:40px;max-height:40px;min-width:40px;min-height:40px;object-position:center;border:1px solid var(--border);background:#111}
.myspace-friends-list .friend-meta{display:flex;flex-direction:column;line-height:1.2}
.myspace-friends-list .friend-name{font-weight:600;font-size:14px}
.myspace-friends-list .friend-status{font-size:12px;color:var(--muted)}
.myspace-friend-pill-empty{border:1px dashed var(--border);padding:8px;font-size:13px;text-transform:uppercase;letter-spacing:1px;text-align:center;color:var(--muted);background:var(--surface2)}
.myspace-friends-floating + .myspace-bio{margin-top:16px}
.myspace-bio img{ max-width:100%; height:auto; display:block; margin-top:6px; border:1px solid var(--border) }
.myspace-bio video{ max-width:100%; max-height:420px; display:block; margin-top:6px; border:1px solid var(--border); background:#000 }
.myspace-bio pre{ background:var(--surface); padding:6px; overflow:auto; border:1px solid var(--border); font-family:monospace; font-size:13px; line-height:1.45; margin:6px 0 0 }
.myspace-bio code{ font-family:monospace; line-height:inherit }
.myspace-section{margin-top:130px}

@media (max-width:1100px){
	.myspace-friends-floating{position:static;margin-bottom:12px;width:100%;max-width:none}
}
.myspace-edit-container{display:flex;gap:1px;padding:1px;min-height:0;height:100%;align-items:flex-start;box-sizing:border-box}
.myspace-edit-form{flex:0 0 300px;min-height:0;overflow-y:auto;max-height:100%}
.myspace-edit-preview-panel{flex:1;min-height:0;overflow-y:auto;border-left:2px solid var(--border);padding-left:16px;max-height:100%}
.myspace-edit-preview-label{font-weight:bold;font-size:18px;margin-bottom:12px;color:var(--text)}
#myspace-live-preview{pointer-events:none}
.myspace-edit-nameplate-preview{display:flex;align-items:center;padding:6px;border:1px solid var(--border);margin-top:6px;gap:6px;min-height:60px}
.myspace-nameplate-actions{margin-top:4px;display:flex;gap:8px}
/* sticky edit button inside myspace scroll container */
.myspace-edit-stick{position:fixed;bottom:20px;left:16px;z-index:9999}
.myspace-edit-stick{position:fixed;bottom:20px;left:16px;z-index:9999;padding:12px 16px;font-size:28px;border:3px solid var(--border);background:var(--panel);box-shadow:0 6px 18px rgba(0,0,0,0.25)}

/* floating back button on profile view */
.myspace-back-float{position:absolute;top:12px;left:12px;z-index:10;padding:8px 12px;border:3px solid var(--border);background:var(--panel);box-shadow:0 4px 12px rgba(0,0,0,0.2)}

@media (max-width:640px){
	.myspace-banner-wrap{height:300px}
	.myspace-avatar-large{left:16px;bottom:-84px;width:168px;height:168px}
	.myspace-avatar-meta{left:16px;bottom:-190px}
	.myspace-avatar-tz{font-size:16px;margin-top:12px}
	.myspace-presence{font-size:16px;margin-top:12px}
	.myspace-info{margin-left:200px;position:relative;top:-90px;z-index:5}
	.myspace-friends-floating{position:static;margin-bottom:12px;width:100%;max-width:none}
	.myspace-name-line{font-size:42px}
	.myspace-uuid{font-size:24px}
	.myspace-status{font-size:22px;margin-left:10px}
	.myspace-section{margin-top:140px}
	.myspace-edit-stick{bottom:12px;left:12px}
	.myspace-edit-stick{bottom:12px;left:12px;padding:8px 12px;font-size:20px}
  .myspace-back-float{top:8px;left:8px;padding:6px 10px}
}

/* Scrollable main container for MySpace view */
#main.myspace-view-scroll{overflow:auto}

/* MySpace edit page */
.myspace-edit-form .row{margin-bottom:12px;display:flex;flex-direction:column}
.myspace-edit-form label{font-weight:600;margin-bottom:4px}
.myspace-edit-preview{width:128px;height:128px;object-fit:cover;object-position:center;border:2px solid var(--border);display:block;margin-top:6px}
.myspace-edit-banner-preview{width:100%;height:160px;object-fit:cover;object-position:center;border:2px solid var(--border);display:block;margin-top:6px}
/* scroll helpers for edit page */
.myspace-edit-scroll{overflow:auto}
.myspace-edit-form{max-height:100%;overflow:auto}
.myspace-edit-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px;gap:12px}
.myspace-edit-header-actions{display:flex;gap:8px}

.mini-profile-card{position:fixed;top:0;left:0;width:calc(1.2 * var(--members-panel-width, 240px));aspect-ratio:2 / 3;display:none;flex-direction:column;background:var(--surface);border:2px solid var(--border);box-shadow:0 12px 24px rgba(0,0,0,0.35);z-index:400;overflow:hidden;color:var(--text);pointer-events:none}
.mini-profile-card.visible{display:flex;pointer-events:auto}
.mini-profile-banner{position:relative; flex:0 0 25% !important;background:var(--panel);overflow:visible}
.mini-profile-banner > img:not(.mini-profile-avatar){position:absolute;top:0;left:0;width:100%;height:100%;object-fit:cover;display:block}
.mini-profile-banner .mini-profile-avatar{position:absolute;top:50%;transform:translateY(0px);left:13px;width:90px!important;height:90px!important;max-width:90px;max-height:90px;aspect-ratio:1/1;object-fit:cover;border-radius:0!important;border:2px solid var(--surface);box-shadow:0 2px 6px rgba(0,0,0,0.4);z-index:10}
.mini-profile-body{position:relative;flex:1;display:flex;flex-direction:column;padding:54px 14px 14px;gap:8px;min-height:0}
.mini-profile-name-line{display:flex;align-items:center;gap:12px;flex-wrap:wrap}
.mini-profile-name-block{display:flex;flex-direction:column;align-items:flex-start;gap:6px;flex:1 1 auto;min-width:0}
.mini-profile-name{font-weight:700;word-break:break-word;overflow-wrap:anywhere}
.mini-profile-status-wrap{display:flex;align-items:center;gap:6px;font-size:13px;color:var(--muted);flex-wrap:wrap;min-width:0;max-width:100%;word-break:break-word;overflow-wrap:anywhere;margin-left:auto;justify-content:flex-end;text-align:right}
.mini-profile-status-wrap span:last-child{word-break:break-word;overflow-wrap:anywhere}
.mini-profile-roles-floating{position:absolute;top:5px;left:115px;right:5px;display:flex;flex-wrap:wrap;align-items:center;gap:6px;pointer-events:auto}
.mini-profile-role{display:inline-flex;align-items:center;padding:2px 8px;font-size:12px;font-weight:600;line-height:1.3;border:1px solid transparent;background:var(--surface2);color:var(--text)}
.mini-profile-role-default{border-color:var(--border);color:var(--muted)}
.mini-profile-role-more{display:inline-flex;align-items:center;justify-content:center;min-width:15px;max-width:15px;padding:2px 10px;border:1px solid var(--border);background:var(--surface2);color:var(--text);font-weight:700;cursor:pointer;flex:0 0 auto}
.mini-profile-role-more:hover{filter:brightness(1.1)}
.mini-profile-role-popup{position:absolute;top:calc(100% + 6px);right:0;max-width:220px;max-height:180px;overflow:auto;padding:8px;border:1px solid var(--border);background:var(--surface);box-shadow:0 8px 16px rgba(0,0,0,0.35);display:flex;flex-direction:column;gap:6px;z-index:2}
.mini-profile-role-item{display:inline-flex;align-items:center;padding:4px 8px;border:1px solid var(--border);background:var(--surface2);color:var(--text);font-size:12px;font-weight:600}
.mini-profile-role-item.is-empty{opacity:0.7;font-weight:500}
.mini-profile-uuid-row{display:flex;align-items:center;justify-content:space-between;gap:12px;font-size:13px;color:var(--muted);flex-wrap:wrap}
.mini-profile-uuid{font-family:'font', monospace;font-size:12px;word-break:break-word;overflow-wrap:anywhere;min-width:0}
.mini-profile-flag-tz{display:flex;align-items:center;gap:6px;text-align:right;min-width:0;word-break:break-word;overflow-wrap:anywhere;justify-content:flex-end}
.mini-profile-bio{flex:1;overflow:auto;padding:6px;border:1px solid var(--border);background:var(--surface2);font-size:13px;line-height:1.4;min-height:0;overscroll-behavior:contain}
.mini-profile-bio p{margin:0 0 6px}
.mini-profile-bio p:last-child{margin-bottom:0}
.mini-profile-bio video{max-width:100%;max-height:100%;width:auto;height:auto;display:block;margin-top:6px;object-fit:contain;}
.mini-profile-loading{flex:1;display:flex;align-items:center;justify-content:center;font-size:13px;color:var(--muted)}
.myspace-edit-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}
.myspace-edit-header-actions{display:flex;gap:8px}

/* invite row styling */
.invite-row{position:relative;display:flex;align-items:center;gap:8px;padding:6px 148px 6px 6px;margin-bottom:8px;border:1px solid var(--border);background:var(--surface2);min-height:54px}
.invite-room-icon,.invite-sender-icon{width:36px;height:36px;object-fit:cover;border:1px solid #ccc;flex:0 0 36px}
.invite-room-name,.invite-sender-name{font-weight:600;margin-right:4px}
.invite-action-panel{opacity:1;pointer-events:auto;transform:none;top:6px;right:6px;background:transparent;border:0;padding:0;gap:6px}

/* Blog media sizing */
.blog-body img{ max-width:100%; height:auto; display:block; margin-top:6px; border:1px solid var(--border); }
.blog-body video{ max-width:100%; max-height:360px; display:block; margin-top:6px; border:1px solid var(--border); background:#000 }
.blog-body pre{ background:var(--surface2); padding:8px; overflow:auto; border:1px solid var(--border); white-space:pre; font-family:monospace; font-size:13px; line-height:1.45; margin:6px 0 0 }
.blog-body code{ font-family:monospace; line-height:inherit }
.msg-text pre code,.myspace-bio pre code,.blog-body pre code{display:block}

.voice-popup{position:fixed;bottom:24px;right:24px;width:320px;min-height:240px;border:3px solid var(--border);background:var(--surface);box-shadow:0 8px 24px rgba(0,0,0,0.35);z-index:400;resize:both;overflow:hidden;border-radius:0;display:flex;flex-direction:column}
.voice-popup-header{display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--border);padding:8px 12px;background:var(--panel);cursor:move;user-select:none;gap:12px;touch-action:none}
.voice-popup-title{font-weight:700}
.voice-popup-actions{display:flex;gap:4px}
.voice-popup-body{position:relative;padding:16px;padding-bottom:110px;flex:1;overflow:auto}
.voice-floating-panel{position:absolute;left:50%;bottom:10px;transform:translateX(-50%);background:var(--surface2);border:2px solid var(--border);display:flex;gap:8px;padding:6px 12px;border-radius:0;box-shadow:0 4px 10px rgba(0,0,0,0.35);z-index:5}
.voice-floating-panel .btn{min-width:64px}
.voice-popup .btn{border-radius:0}
.voice-status-text{font-size:12px;color:var(--muted);margin-top:4px}
.voice-controls{margin-top:12px;display:flex;gap:8px;flex-wrap:wrap}
.voice-participants{margin-top:12px;display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:12px}
.voice-participant-card{position:relative;border:2px solid var(--border);background:var(--surface2);border-radius:0;overflow:hidden;display:flex;flex-direction:column;cursor:default;box-shadow:0 2px 8px rgba(0,0,0,0.25)}
.voice-participant-banner{position:relative;width:100%;padding-top:56%;background-size:cover;background-position:center;isolation:isolate}
.voice-participant-banner::after{content:'';position:absolute;inset:0;background:linear-gradient(180deg,rgba(0,0,0,0.35) 0%,rgba(0,0,0,0.65) 80%);mix-blend-mode:multiply}
.voice-participant-avatar{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:70px;height:70px;border:3px solid rgba(255,255,255,0.4);object-fit:cover;z-index:2;background:#000;box-shadow:0 2px 6px rgba(0,0,0,0.4);transition:transform 0.12s ease,border-color 0.12s ease,width 0.12s ease,height 0.12s ease;border-radius:0;filter:none;opacity:1}
.voice-participant-name{padding:6px 8px;font-size:12px;font-weight:600;text-align:center;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}
.voice-participant-empty{border:1px dashed var(--border);background:var(--surface2);padding:12px;border-radius:0;font-size:13px;text-align:center;color:var(--muted);grid-column:1/-1}
.voice-participant-card.is-speaking .voice-participant-avatar{border-color:#2ecc71;width:74px;height:74px;transform:translate(-50%,-53%) scale(1.05)}
.voice-participant-card.is-muted .voice-participant-avatar{border-color:#e74c3c;box-shadow:0 0 0 0px rgba(231,76,60,0.65),0 2px 6px rgba(0,0,0,0.4)}
.voice-mute-toggle.is-muted{background:#c0392b;color:#fff;border-color:#922b21}
.voice-popup .voice-popup-close,.voice-popup .voice-popup-minimize,.voice-popup .voice-popup-maximize{font-weight:700;min-width:36px}
.voice-popup.voice-popup-fullscreen{top:0!important;left:0!important;right:0!important;bottom:0!important;margin:0;width:100vw;height:100vh;max-width:none;max-height:none;border-width:0;resize:none;box-shadow:none}
.voice-popup.voice-popup-fullscreen .voice-popup-header{cursor:default}
.voice-popup.voice-popup-fullscreen .voice-popup-body{padding-bottom:130px}
.voice-popup.voice-popup-fullscreen .voice-floating-panel{bottom:10px}

body.image-viewer-open{overflow:hidden}
.image-viewer-overlay{position:fixed;inset:0;display:none;background:rgba(0,0,0,0.86);z-index:450;overflow:hidden;touch-action:none}
.image-viewer-overlay.visible{display:block}
.image-viewer-controls{position:fixed;top:16px;left:16px;display:flex;gap:4px;align-items:center;padding:6px;border:2px solid var(--border);background:var(--surface2);box-shadow:0 8px 20px rgba(0,0,0,0.35);z-index:451}
.image-viewer-controls .btn{border-radius:0}
.image-viewer-controls .voice-popup-close{font-weight:700;min-width:36px}
.image-viewer-open-tab{white-space:nowrap}
.image-viewer-stage{position:absolute;inset:0;overflow:hidden;cursor:grab;touch-action:none}
.image-viewer-stage.is-dragging{cursor:grabbing}
.image-viewer-image{position:absolute;top:0;left:0;max-width:none;max-height:none;transform-origin:0 0;will-change:transform;user-select:none;-webkit-user-drag:none;touch-action:none;box-shadow:0 10px 24px rgba(0,0,0,0.4)}
