#nocturne-invite .invitation-dock{position:fixed;z-index:90;right:22px;bottom:22px;display:flex;gap:10px;max-width:calc(100vw - 44px);padding:8px;background:#0b0c12d9;border:1px solid #c6bdd659;backdrop-filter:blur(18px);box-shadow:0 0 32px #bcb0dc25}
#nocturne-invite .invitation-dock button{position:relative;cursor:pointer;border:0;color:#efecf6;background:transparent;min-height:45px;padding:8px 14px;font-size:21px;line-height:1.05;text-align:left;text-shadow:0 0 15px #d4c2fa6b;transition:filter 1.5s,background 1.5s}
#nocturne-invite .invitation-dock .dock-chat{border-right:1px solid #c6bdd659;white-space:nowrap}
#nocturne-invite .dock-chat>span{display:inline-block;color:#d2bfec;animation:dock-halo 1.5s ease-in-out infinite}
#nocturne-invite .invitation-dock .dock-game{max-width:280px}
#nocturne-invite .invitation-dock button:hover{background:#c6b7e21c;filter:brightness(1.3)}
#nocturne-invite .invitation-dock button:active{animation:dock-split 1.5s steps(1,end)}
@keyframes dock-halo{50%{text-shadow:0 0 8px #fff,0 0 25px #dbc4ff;transform:rotate(90deg) scale(1.25)}}
@keyframes dock-split{25%{transform:skew(-12deg) translateX(-3px);filter:invert(1)}55%{transform:skew(9deg) translateX(4px);filter:blur(1px) brightness(2)}}
#nocturne-invite .shared-chat{padding:0;border:1px solid #dbd1eb70;color:#eeebf5;background:#101117;width:min(700px,calc(100vw - 30px));max-width:none;height:min(820px,calc(100dvh - 36px));max-height:none;overflow:hidden;box-shadow:0 0 70px #d1bfed25;font-family:inherit}
#nocturne-invite .shared-chat::backdrop{background:#06070bd6;backdrop-filter:blur(12px)}
#nocturne-invite .chat-shell{height:100%;display:flex;flex-direction:column;padding:25px 28px 18px;background:radial-gradient(ellipse at 90% 0,#b8a2d223,transparent 47%),#101117}
#nocturne-invite .chat-header{display:flex;align-items:center;justify-content:space-between;flex-shrink:0;border-bottom:1px solid #cbbfda40;padding-bottom:18px}
#nocturne-invite .chat-sigil{font-size:14px;letter-spacing:.18em;color:#b4a4cc}
#nocturne-invite .chat-header h2{font-size:clamp(40px,7vw,65px);line-height:.95;margin:10px 0 0;letter-spacing:-.05em;text-shadow:0 0 24px #c2afe26b}
#nocturne-invite .chat-close{font-size:42px;line-height:1;border:0;background:transparent;color:#ece4f8;cursor:pointer;padding:8px 12px}
#nocturne-invite .chat-identity{flex-shrink:0;padding:16px 0 10px;font-size:21px}
#nocturne-invite .chat-identity label{display:block;line-height:1.15}
#nocturne-invite .chat-identity label span{font-size:16px;color:#b8b0c3}
#nocturne-invite .chat-identity input{display:block;width:100%;font-size:21px;border:0;border-bottom:1px solid #7e738d;background:transparent;color:#f2eafc;padding:9px 0;border-radius:0}
#nocturne-invite .chat-history{flex-shrink:0;background:transparent;border:0;color:#cfc0e3;padding:8px;font-size:18px;cursor:pointer}
#nocturne-invite .chat-feed{min-height:70px;flex:1;overflow:auto;overscroll-behavior:contain;padding:18px 8px 20px 0;scrollbar-width:thin;scrollbar-color:#a58aba #15131c}
#nocturne-invite .chat-empty{font-size:25px;color:#afa4bb;line-height:1.15;margin:25px 0}
#nocturne-invite .chat-message{position:relative;isolation:isolate;width:88%;padding:12px 16px;margin:0 0 18px;background:#24212c;border-left:1px solid #b09bc4;clip-path:polygon(0 0,95% 0,100% 16px,100% 100%,0 100%);overflow-wrap:anywhere}
#nocturne-invite .chat-message.is-mine{margin-left:auto;background:#dcd6e8;color:#17131e;border-left:0;border-right:1px solid #eae1f8;clip-path:polygon(0 16px,5% 0,100% 0,100% 100%,0 100%)}
#nocturne-invite .chat-message-meta{display:flex;align-items:baseline;justify-content:space-between;gap:15px;font-size:16px;line-height:1.2}
#nocturne-invite .chat-message-meta b{font-weight:500;color:#cbb6e5}
#nocturne-invite .chat-message.is-mine .chat-message-meta b{color:#68507e}
#nocturne-invite .chat-message-meta time{opacity:.6;font-size:14px;white-space:nowrap}
#nocturne-invite .chat-message p{white-space:pre-wrap;font-size:24px;line-height:1.1;margin:8px 0 2px}
#nocturne-invite .chat-compose{position:relative;flex-shrink:0;display:flex;gap:14px;align-items:end;border-top:1px solid #b7a7ca59;padding-top:12px}
#nocturne-invite .chat-input-label{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}
#nocturne-invite .chat-compose textarea{resize:none;min-width:0;flex:1;max-height:120px;background:transparent;color:#eee8f6;border:0;border-bottom:1px solid #a58ebc;padding:9px 0;font-size:23px;line-height:1.1;border-radius:0}
#nocturne-invite .chat-send{border:0;border-bottom:1px solid #dacbeb;background:transparent;color:#eadff7;cursor:pointer;padding:12px 0;white-space:nowrap;font-size:22px}
#nocturne-invite .chat-send:disabled{opacity:.55;cursor:wait}
#nocturne-invite .chat-status{flex-shrink:0;font-size:17px;line-height:1.15;min-height:20px;margin:10px 0 0;color:#c8b4df}
#nocturne-invite .chat-opening .chat-shell{animation:chat-assemble 1.5s cubic-bezier(.14,.75,.2,1) both}
#nocturne-invite .chat-closing .chat-shell{animation:chat-dissolve 1.5s ease-in both}
#nocturne-invite .chat-materialize{animation:chat-message-arrive calc(1.5s - var(--arrival-delay)) cubic-bezier(.13,.69,.22,1) var(--arrival-delay) both}
#nocturne-invite .chat-message-wings{position:absolute;inset:0;z-index:-1;pointer-events:none;opacity:0}
#nocturne-invite .chat-materialize .chat-message-wings{background:repeating-conic-gradient(from 30deg at 50% 50%,transparent 0deg 24deg,#f7eaffbd 25deg 27deg,transparent 29deg 60deg);animation:chat-wing-glint calc(1.5s - var(--arrival-delay)) var(--arrival-delay) both}
#nocturne-invite .chat-awakening{animation:chat-feed-awake 1.5s ease-out both}
#nocturne-invite .chat-transmitting textarea{animation:chat-ink-send 1.5s ease-out both}
#nocturne-invite .chat-transmitting .chat-send{animation:chat-send-sigil 1.5s steps(1,end) both}
#nocturne-invite .chat-signal-flight{position:fixed;z-index:10;pointer-events:none;white-space:pre-wrap;font-size:23px;line-height:1.1;color:#fff;text-shadow:0 0 12px #fff,0 0 35px #cba8ff;animation:chat-signal-rise 1.5s cubic-bezier(.55,0,.9,.4) both}
#nocturne-invite .chat-signal-flight:before,#nocturne-invite .chat-signal-flight:after{content:'';position:absolute;inset:-20px;background:repeating-conic-gradient(from 70deg at 50% 60%,transparent 0deg 15deg,#ede0ff 16deg 18deg,transparent 20deg 33deg);clip-path:polygon(0 0,45% 35%,50% 70%,55% 35%,100% 0,88% 65%,50% 100%,12% 65%);animation:chat-wing-glint 1.5s both}
#nocturne-invite .chat-signal-flight:after{filter:blur(8px);transform:scale(1.4)}
@keyframes chat-assemble{0%{opacity:0;filter:blur(22px) brightness(4);transform:translateY(45px) skew(-6deg);clip-path:polygon(0 0,45% 30%,100% 0,80% 55%,100% 100%,50% 80%,0 100%,20% 45%)}45%{opacity:1;filter:blur(4px) brightness(1.6);clip-path:polygon(0 0,100% 0,100% 70%,70% 100%,0 100%)}100%{opacity:1;filter:none;transform:none;clip-path:inset(0)}}
@keyframes chat-dissolve{to{opacity:0;filter:blur(24px) brightness(3);transform:translateY(-30px) scale(1.05)}}
@keyframes chat-message-arrive{0%{opacity:0;filter:blur(17px) brightness(4);transform:translate(30px,22px) skew(-8deg);clip-path:polygon(0 35%,42% 10%,100% 65%,60% 90%)}40%{opacity:1;filter:blur(4px) brightness(1.7);transform:translate(-4px,0);clip-path:polygon(0 0,100% 0,85% 100%,0 100%)}100%{opacity:1;filter:none;transform:none}}
@keyframes chat-wing-glint{0%{opacity:0;transform:scale(.2)}30%{opacity:.9;transform:scale(1.1)}100%{opacity:0;transform:scale(1.7)}}
@keyframes chat-feed-awake{from{filter:blur(14px) brightness(2);opacity:.3}to{filter:none;opacity:1}}
@keyframes chat-ink-send{30%{filter:blur(2px) brightness(1.8)}60%{filter:blur(5px);opacity:.2}100%{filter:none;opacity:1}}
@keyframes chat-send-sigil{20%{transform:skew(-18deg) translateX(-4px);filter:invert(1)}48%{transform:skew(15deg) translateX(5px);text-shadow:0 0 18px #fff}75%{transform:scale(1.1);filter:blur(2px)}}
@keyframes chat-signal-rise{20%{filter:brightness(3);transform:translateY(-6px) skew(-8deg)}100%{opacity:0;filter:blur(18px);transform:translate(35vw,-50vh) scale(.25)}}
@media(max-width:680px){#nocturne-invite .invitation-dock{left:8px;right:8px;bottom:calc(6px + env(safe-area-inset-bottom));max-width:none;padding:5px;gap:5px}#nocturne-invite .invitation-dock button{font-size:18px;min-height:48px;padding:5px 9px}#nocturne-invite .invitation-dock .dock-game{max-width:none;flex:1}#nocturne-invite .shared-chat{width:100%;height:100dvh;margin:0;border:0}#nocturne-invite .chat-shell{padding:calc(16px + env(safe-area-inset-top)) 18px calc(12px + env(safe-area-inset-bottom))}#nocturne-invite .chat-header{padding-bottom:12px}#nocturne-invite .chat-header h2{font-size:43px}#nocturne-invite .chat-identity label span{display:block;font-size:15px}#nocturne-invite .chat-message{width:94%}#nocturne-invite .chat-message p{font-size:22px}#nocturne-invite .chat-compose{gap:10px}#nocturne-invite .chat-send{font-size:21px}}
@media(prefers-reduced-motion:reduce){#nocturne-invite .shared-chat *,#nocturne-invite .invitation-dock *{animation-duration:.01ms!important;animation-iteration-count:1!important}}
#nocturne-invite .admin-chat-view{grid-column:1/-1;border-top:1px solid #777781;padding-top:28px}
#nocturne-invite [data-admin-chat]{max-height:500px;overflow:auto;margin-top:20px}
#nocturne-invite [data-admin-chat] .answer-row{white-space:pre-wrap;overflow-wrap:anywhere;font-size:20px}
#nocturne-invite [data-admin-chat] time{display:block;font-size:15px;color:#686171;margin-bottom:8px}
