.vdock{--material:color-mix(in srgb,var(--raised) 82%,transparent);--material-blur:24px;--material-edge:rgba(255,255,255,.07);--r-dock:16px;--r-ctl:10px;--spring:cubic-bezier(.34,1.56,.64,1);--ok-ink:#06140d;position:fixed;left:var(--rail-w);bottom:0;width:320px;z-index:40;display:flex;flex-direction:column;align-items:stretch;gap:8px;padding:10px 12px calc(12px + env(safe-area-inset-bottom, 0px));border-radius:var(--r-dock);corner-shape:squircle;left:calc(var(--rail-w) + 12px);bottom:12px;border:1px solid var(--material-edge);box-shadow:var(--pop-shadow),inset 0 1px 0 rgba(255,255,255,.05);animation:fadeup var(--fast) var(--out)}.vdock:before{content:"";position:absolute;inset:0;z-index:-1;border-radius:inherit;corner-shape:inherit;background:var(--material);-webkit-backdrop-filter:blur(var(--material-blur)) saturate(140%);backdrop-filter:blur(var(--material-blur)) saturate(140%);pointer-events:none}.vdock--inline{position:relative;width:auto;flex:none;left:auto;bottom:auto;background:var(--panel);border:0;border-top:1px solid var(--line-3);border-radius:0;corner-shape:round;box-shadow:none;animation:none;padding:12px 14px calc(14px + env(safe-area-inset-bottom, 0px));gap:8px}.vdock--inline:before{content:none}.vdock-head{display:flex;align-items:center;gap:9px}.vdock-sig{display:grid;place-items:center;flex:none;width:28px;height:28px;border:1px solid;border-radius:9px;corner-shape:squircle}.vdock-sig--ok{background:var(--ok-bg);color:var(--ok);border-color:var(--ok-line)}.vdock-sig--wait{background:color-mix(in srgb,var(--idle) 14%,transparent);color:var(--idle);border-color:color-mix(in srgb,var(--idle) 32%,transparent)}.vdock-sig--err{background:var(--danger-dim);color:var(--danger);border-color:color-mix(in srgb,var(--danger) 32%,transparent)}.vdock-sig--ok [data-r]{animation:vdockripple 2.4s ease-out infinite}.vdock-sig--ok [data-r="2"]{animation-delay:.35s}@keyframes vdockripple{0%,55%{opacity:1}75%{opacity:.25}to{opacity:1}}.vdock-spin{animation:vdockspin .9s linear infinite}@keyframes vdockspin{to{transform:rotate(1turn)}}.vdock-head-txt{display:flex;flex-direction:column;gap:1px;flex:1 1;min-width:0}.vdock-state{font-size:13px;font-weight:var(--w-ui);letter-spacing:.005em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.vdock-state--ok{color:var(--ink)}.vdock-state--wait{color:var(--ink-2)}.vdock-state--err{color:var(--danger)}.vdock-where{display:flex;align-items:center;gap:5px;min-width:0;font-size:12px;color:var(--ink-mute)}.vdock-where:hover .vdock-chan{color:var(--ink)}.vdock-room-link{position:relative;width:fit-content;max-width:100%;min-height:22px;padding:2px 4px;margin:-2px -4px;border-radius:var(--r-mini);cursor:pointer;text-decoration:none;transition:background-color var(--fast) var(--out)}a.vdock-room-link:hover{background:rgba(255,255,255,.05)}.vdock-chev{flex:none;opacity:.55}.vdock-room-link:after{content:"";position:absolute;inset:-4px -2px}.vdock-room-link:focus-visible{outline:2px solid var(--ac);outline-offset:2px}.vdock-room-link--disabled{cursor:default}.vdock-dot{width:6px;height:6px;flex:none;border-radius:var(--r-pill);background:var(--ok)}.vdock-dot--wait{background:var(--idle);animation:vdockpulse 1s ease-in-out infinite}.vdock-dot--err{background:var(--danger)}@keyframes vdockpulse{0%,to{opacity:.35}50%{opacity:1}}.vdock-chan{font-weight:var(--w-ui);color:var(--ink-3);transition:color var(--fast) var(--out)}.vdock-chan,.vdock-srv{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.vdock-mini{width:var(--hit-compact);height:var(--hit-compact);border-radius:var(--r-ctl);corner-shape:squircle;color:var(--ink-4);transition:background-color var(--fast) var(--out),color var(--fast) var(--out),transform .22s var(--spring)}.vdock-mini:hover{background:rgba(255,255,255,.07);color:var(--ink)}.vdock-mini:active{transform:scale(.92)}.vdock .vdock-mini.vdock-mini--on{color:var(--ink);background:rgba(255,255,255,.09)}.vdock .vdock-mini--leave{color:var(--leave-ink)}.vdock .vdock-mini--leave:hover{background:var(--leave-bg);color:var(--leave-ink)}.vdock-hit:empty{display:none}.vdock-hit{display:flex;align-items:center;gap:6px;min-width:0;padding:4px 8px 4px 5px;border-radius:var(--r-mini);background:rgba(255,255,255,.05);font-size:12px;color:var(--ink-mute)}.vdock-hit-who{flex:none;max-width:45%;font-weight:var(--w-ui);color:var(--ink-3)}.vdock-hit-sound,.vdock-hit-who{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.vdock-hit-sound{min-width:0}.vdock-hit-mute{flex:none;color:var(--ink-4)}.vdock-acts{display:grid;gap:6px}.vdock-acts--3{grid-template-columns:repeat(3,1fr)}.vdock-acts--2{grid-template-columns:repeat(2,1fr)}.vdock-act{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;height:48px;min-width:0;padding:0 4px;background:rgba(255,255,255,.05);border:1px solid rgba(255,255,255,.06);border-radius:var(--r-ctl);corner-shape:squircle;color:var(--ink-3);transition:background-color var(--base) var(--out),color var(--base) var(--out),border-color var(--base) var(--out),transform .22s var(--spring)}.vdock-act>span{font-size:11.5px;font-weight:var(--w-ui);line-height:1.1;letter-spacing:.01em;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.vdock-act:hover{background:rgba(255,255,255,.09);color:var(--ink)}.vdock-act:active{transform:scale(.96)}.vdock-act:disabled{opacity:.38;cursor:not-allowed}.vdock-act:disabled:hover{background:rgba(255,255,255,.05);color:var(--ink-3);transform:none}.vdock .vdock-act.vdock-act--on{background:var(--ac);border-color:var(--ac);color:var(--ac-ink)}.vdock .vdock-act.vdock-act--on:hover{background:var(--ac-hi);color:var(--ac-ink)}.vdock .vdock-act.vdock-act--live{background:var(--ok);border-color:var(--ok);color:var(--ok-ink)}.vdock .vdock-act.vdock-act--live:hover{background:#4fd99b;color:var(--ok-ink)}.vdock-me{padding-top:2px}.vdock-me,.vdock-me-profile{display:flex;align-items:center;gap:9px}.vdock-me-profile{min-width:0;flex:1 1;margin:-3px;padding:3px;border-radius:var(--r-ctl);color:inherit;transition:background-color var(--fast) var(--out)}.vdock-me-profile:hover{background:rgba(255,255,255,.05)}.vdock-av{position:relative;display:inline-flex;flex:none;border-radius:var(--r-pill)}.vdock-av:after{content:"";position:absolute;inset:-4px;border:2px solid var(--ok);border-radius:inherit;box-shadow:0 0 12px color-mix(in srgb,var(--ok) 60%,transparent);opacity:0;pointer-events:none;transition:opacity .12s linear}.vdock-av--live:after{opacity:1;animation:vdockring .9s ease-in-out infinite alternate}@keyframes vdockring{to{transform:scale(1.07)}}.vdock-av--noise:after{opacity:.5;border-width:1px;box-shadow:none}.vdock-av--dim{filter:saturate(.6) brightness(.8)}.vdock-me-txt{display:flex;flex-direction:column;gap:1px;flex:1 1;min-width:0}.vdock-me-txt>b{font-size:13.5px;font-weight:var(--w-bold);color:var(--ink)}.vdock-me-txt>b,.vdock-me-txt>small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.vdock-me-txt>small{font-size:12px;color:var(--ink-mute)}.vdock-me-btns{display:flex;align-items:center;gap:5px;flex:none}.vdock-ctl{width:var(--hit-control);height:var(--hit-control);background:rgba(255,255,255,.05);border:1px solid rgba(255,255,255,.06);border-radius:var(--r-ctl);corner-shape:squircle;color:var(--ink-3);transition:background-color var(--fast) var(--out),color var(--fast) var(--out),transform .22s var(--spring)}.vdock-ctl:hover{background:rgba(255,255,255,.09);color:var(--ink)}.vdock-ctl:active{transform:scale(.92)}.vdock-ctl:disabled{opacity:.38;cursor:not-allowed}.vdock-ctl:disabled:hover{background:rgba(255,255,255,.05);color:var(--ink-3);transform:none}.vdock .vdock-ctl.vdock-ctl--off{color:var(--danger);border-color:var(--leave-line);background:var(--leave-bg)}.vdock .vdock-ctl.vdock-ctl--off:hover{background:var(--leave-bg-hi);color:var(--leave-ink)}.vdock .vdock-ctl.vdock-ctl--on{color:var(--ac)}.vdock-ic-speak{display:none}.vdock-me:has(.vdock-av--live) .vdock-ctl--mic{color:var(--ok)}.vdock-me:has(.vdock-av--live) .vdock-ic-rest{display:none}.vdock-me:has(.vdock-av--live) .vdock-ic-speak{display:block}.vdock-set{position:absolute;bottom:calc(100% + 8px);left:0;z-index:60;width:min(320px,calc(100vw - 24px));transform-origin:50% 100%;animation:vdockpop .22s var(--spring)}@keyframes vdockpop{0%{opacity:0;transform:translateY(8px) scale(.96)}}.vdock-set>.pop{background:var(--material);-webkit-backdrop-filter:blur(var(--material-blur)) saturate(140%);backdrop-filter:blur(var(--material-blur)) saturate(140%);border-color:var(--material-edge);border-radius:var(--r-dock);corner-shape:squircle;box-shadow:var(--pop-shadow),inset 0 1px 0 rgba(255,255,255,.05)}.vdock-tip{position:fixed;left:0;top:0;z-index:300;width:max-content;max-width:min(260px,calc(100vw - 16px));padding:5px 9px;border-radius:var(--r-micro);background:color-mix(in srgb,#2a2a32 94%,transparent);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);box-shadow:0 8px 24px rgba(0,0,0,.5),0 0 0 1px rgba(255,255,255,.06);color:var(--ink);font-size:12px;font-weight:var(--w-ui);line-height:1.35;letter-spacing:.005em;pointer-events:none;animation:vdocktip .16s var(--out)}.vdock-tip[data-side=below]{--tip-from:-4px}.vdock-tip--warn{color:var(--idle)}@keyframes vdocktip{0%{opacity:0;transform:translateY(var(--tip-from,4px))}}@media (prefers-reduced-motion:reduce){.vdock-av--live:after,.vdock-dot--wait,.vdock-set,.vdock-sig [data-r],.vdock-spin,.vdock-tip{animation:none!important}}@media (max-width:820px){.vdock{left:var(--rail-w);right:0;width:auto;border-radius:var(--r-chip) var(--r-chip) 0 0;border-right:0}}