/* Floating Discord control and compact community viewer. */
.discord-fab{position:fixed;right:calc(20px + env(safe-area-inset-right,0px));bottom:calc(20px + env(safe-area-inset-bottom,0px));z-index:80;display:inline-flex;align-items:center;justify-content:center;width:48px;height:48px;padding:11px;border:1px solid #ffffff40;border-radius:16px;background:#2464df;color:#fff;box-shadow:0 3px 7px #0b1c371f,0 10px 25px #0b1c3730;cursor:pointer;touch-action:manipulation;transition:background .15s,box-shadow .15s}
.discord-fab:hover,.discord-fab[aria-expanded="true"]{background:#1c55c6;box-shadow:0 3px 7px #0b1c3726,0 12px 28px #0b1c3740}
.discord-fab>svg{display:block;width:26px;height:22px;flex:none;fill:currentColor}
.discord-fab:focus-visible{outline:3px solid var(--blue,#2464df);outline-offset:4px}
.discord-viewer{--dv-bg:var(--white,var(--bg,#fff));--dv-soft:var(--surface-soft,var(--surface,#f7f8fa));--dv-line:var(--line,#e7eaee);--dv-ink:var(--ink,#202124);--dv-muted:var(--muted,#646b74);position:fixed;inset:auto calc(20px + env(safe-area-inset-right,0px)) calc(82px + env(safe-area-inset-bottom,0px)) auto;width:362px;max-width:calc(100vw - 40px - env(safe-area-inset-right,0px) - env(safe-area-inset-left,0px));max-height:calc(100vh - 112px - env(safe-area-inset-top,0px) - env(safe-area-inset-bottom,0px));max-height:min(580px,calc(100dvh - 112px - env(safe-area-inset-top,0px) - env(safe-area-inset-bottom,0px)));margin:0;padding:0;border:1px solid var(--line-strong,#cbd1d9);border-radius:18px;background:var(--dv-bg);color:var(--dv-ink);box-shadow:0 4px 12px #07142614,0 22px 65px #07142638;font:14px/1.5 var(--sans,"Segoe UI",sans-serif);overflow:hidden;overscroll-behavior:contain}
.discord-viewer::backdrop{background:#0914250d}
.discord-viewer-panel{display:flex;flex-direction:column;max-height:inherit;min-width:0;min-height:0;overflow:hidden}
.discord-viewer-header{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;flex:none;height:108px;padding:8px 8px 0 18px;border:0;background:linear-gradient(180deg,#07142540 0,#07142538 58%,var(--dv-bg) 100%),url('/assets/images/community/server-banner.png') center 53%/cover no-repeat}
.discord-viewer-header h2{margin:12px 0 0;color:#fff;font-size:10px;font-weight:600;line-height:1.5;letter-spacing:1.4px;text-transform:uppercase;text-shadow:0 1px 5px #0005}
.discord-viewer [data-discord-close]{display:inline-flex;align-items:center;justify-content:center;flex:none;width:44px;height:44px;margin:0;padding:12px;border:1px solid #ffffff25;border-radius:12px;background:#08172566;color:#fff;cursor:pointer;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}
.discord-viewer [data-discord-close]:hover{background:#081725ba}
.discord-viewer [data-discord-close]>svg{display:block;width:18px;height:18px}
#discord-viewer-content{position:relative;flex:1 1 auto;min-height:0;min-width:0;margin-top:-28px;padding:0 18px 18px;overflow:auto;overscroll-behavior:contain;scrollbar-width:thin;overflow-wrap:anywhere}
.discord-viewer p{margin:0;font-size:13px;line-height:1.5}
.discord-viewer-identity{display:grid;grid-template-columns:58px minmax(0,1fr);align-items:start;gap:12px;min-width:0;margin:0 0 20px}
.discord-viewer-identity>img{position:relative;display:block;box-sizing:border-box;flex:none;width:58px;height:58px;border:4px solid var(--dv-bg);border-radius:17px;background:#12243a;box-shadow:0 3px 9px #08142616}
.discord-viewer-identity>div{min-width:0;padding-top:26px}
.discord-viewer h3{margin:0 0 5px;font-size:16px;line-height:1.3;font-weight:650;letter-spacing:-.25px;overflow-wrap:anywhere}
.discord-viewer .discord-viewer-status{display:flex;align-items:center;gap:6px;color:var(--dv-muted);font-size:12px}
.discord-viewer-online-dot{display:inline-block;flex:none;width:6px;height:6px;border-radius:50%;background:var(--dv-muted);opacity:.65}
.discord-viewer-online-dot[data-state="online"]{background:#32ae7a;opacity:1}
.discord-viewer-online-dot[data-state="offline"]{background:var(--dv-muted)}
.discord-viewer section{margin:17px 0 0;padding:0}
.discord-viewer section>h4{margin:0 0 8px;font-size:10px;line-height:1.5;font-weight:600;letter-spacing:.9px;text-transform:uppercase;color:var(--dv-muted)}
.discord-viewer-channels,.discord-viewer-members{list-style:none;margin:0;padding:0}
.discord-viewer-channels{display:grid;gap:3px}
.discord-viewer-channels>li{display:flex;align-items:center;gap:10px;min-width:0;min-height:34px;padding:6px 9px;border-radius:7px;background:var(--dv-soft);font-size:13px;line-height:1.4}
.discord-room-icon{display:block;flex:none;width:16px;height:16px;color:var(--dv-muted)}
.discord-room-name{min-width:0;overflow-wrap:anywhere}
.discord-viewer-members{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:4px 10px}
.discord-viewer-members>li{display:flex;align-items:center;gap:7px;min-width:0;min-height:34px;padding:3px 0;font-size:12px;line-height:1.4}
.discord-member-avatar{display:flex;align-items:center;justify-content:center;flex:none;width:27px;height:27px;border:1px solid var(--dv-line);border-radius:9px;background:var(--dv-soft);color:var(--dv-muted);font-size:11px;font-weight:600;line-height:1}
.discord-member-name{min-width:0;overflow-wrap:anywhere}
.discord-member-dot{flex:none;width:4px;height:4px;margin-left:auto;border-radius:50%;background:var(--dv-muted);opacity:.45}
.discord-viewer-actions{position:sticky;bottom:-18px;display:flex;align-items:center;gap:8px;margin:20px -18px -18px;padding:14px 18px 18px;border-top:1px solid var(--dv-line);background:var(--dv-bg)}
.discord-viewer-actions>a,.discord-viewer-actions>button{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:44px;padding:10px 14px;border:1px solid var(--dv-line);border-radius:9px;background:var(--dv-soft);color:var(--dv-muted);font:550 13px/1.4 var(--sans,"Segoe UI",sans-serif);text-decoration:none;cursor:pointer}
.discord-viewer .discord-viewer-actions>.button.primary{flex:1;background:#2464df;border-color:#2464df;color:#fff;box-shadow:0 2px 4px #2464df1c}
.discord-viewer .discord-viewer-actions>.button.primary:hover{background:#1c55c6;border-color:#1c55c6;color:#fff;text-decoration:none}
.discord-viewer-actions>a>span{margin-left:auto;font-size:17px;line-height:1}
.discord-viewer-actions>button{flex:none;min-width:44px;padding-inline:12px}
.discord-viewer-actions>button:hover{color:var(--dv-ink);border-color:var(--line-strong,#cbd1d9)}
.discord-viewer-actions svg{display:block;flex:none}
#discord-viewer-content>.discord-viewer-status,#discord-viewer-content>.discord-viewer-error{margin:43px 0 0;color:var(--dv-muted);font-size:13px}
.discord-viewer :focus-visible{outline:2px solid var(--blue,#2464df);outline-offset:3px}
.discord-viewer button:disabled{cursor:wait;opacity:.6}
@media(max-width:480px){.discord-fab{right:calc(16px + env(safe-area-inset-right,0px));bottom:calc(16px + env(safe-area-inset-bottom,0px))}.discord-viewer{left:calc(12px + env(safe-area-inset-left,0px));right:calc(12px + env(safe-area-inset-right,0px));bottom:calc(78px + env(safe-area-inset-bottom,0px));width:auto;max-width:none;max-height:calc(100vh - 102px - env(safe-area-inset-top,0px) - env(safe-area-inset-bottom,0px));max-height:calc(100dvh - 102px - env(safe-area-inset-top,0px) - env(safe-area-inset-bottom,0px))}}
@media(max-height:420px){.discord-viewer{top:calc(10px + env(safe-area-inset-top,0px));bottom:auto;max-height:calc(100vh - 20px - env(safe-area-inset-top,0px) - env(safe-area-inset-bottom,0px));max-height:calc(100dvh - 20px - env(safe-area-inset-top,0px) - env(safe-area-inset-bottom,0px))}.discord-viewer-header{height:64px}.discord-viewer-header h2{margin-top:10px}#discord-viewer-content{margin-top:0}.discord-viewer-identity{grid-template-columns:44px minmax(0,1fr);margin-bottom:14px}.discord-viewer-identity>img{width:44px;height:44px;border-width:2px;border-radius:12px}.discord-viewer-identity>div{padding-top:0}#discord-viewer-content>.discord-viewer-status,#discord-viewer-content>.discord-viewer-error{margin-top:10px}.discord-viewer-actions{padding-top:10px}}
@media(prefers-reduced-motion:reduce){.discord-fab{transition:none}}
@media(prefers-reduced-transparency:reduce){.discord-viewer [data-discord-close]{background:#102238;backdrop-filter:none;-webkit-backdrop-filter:none}}
