/* TAPPED IN — chat-widget.css
   The Message the Team (logged-out) client's styles, extracted 2026-09-04 (Crossing 6, chat batch)
   from the inline style block includes/chat-widget.php carried since pilot v2. Self-contained on
   purpose: it must render on pages that load no site chrome. The MEMBER client's styles still live in
   assets/site.css and assets/themes/prime.css (cascade order there is load-bearing; their move is the
   frontend-assets crossing's, not this batch's). Emitted by includes/chat-widget.php via asset_url(). */
#chatTeamRoot{--g-ion:var(--ion,var(--act,#8a2bff));--g-hi:var(--star,var(--act-hi,#a866ff));--g-glint:var(--ember,var(--live,#00f0ff));--g-line:var(--line,rgba(255,255,255,.15));--g-panel:var(--panel-2,var(--panel,#191926));--g-text:var(--text,#f4f3fb);--g-dim:var(--text-dimmer,var(--dim,#8b8b9e));--g-mono:var(--mono,monospace);--g-body:var(--body,inherit);--ax-w:520px;--ax-h:min(700px,calc(100vh - 40px));position:fixed;right:20px;bottom:20px;z-index:900;font-family:var(--g-body);}
#chatTeamRoot .ax-chat{position:absolute;right:0;bottom:0;width:56px;height:56px;border-radius:50%;background:var(--g-ion);border:1px solid var(--g-line);box-shadow:0 10px 30px rgba(0,0,0,.45);overflow:hidden;transition:width .30s cubic-bezier(.4,0,.2,1),transform .30s cubic-bezier(.4,0,.2,1),height .30s cubic-bezier(.4,0,.2,1),border-radius .30s cubic-bezier(.4,0,.2,1),box-shadow .30s ease,border-color .2s ease;}
#chatTeamRoot .ax-chat.open{width:var(--ax-w);height:var(--ax-h);border-radius:12px;background:var(--g-panel);border-color:var(--g-ion);box-shadow:0 20px 56px rgba(0,0,0,.6);}
#chatTeamRoot .ax-chat-launcher{position:absolute;inset:0;z-index:2;display:flex;align-items:center;justify-content:center;background:var(--g-ion);border:none;color:var(--act-ink,#fff);cursor:pointer;opacity:1;transition:opacity .14s ease;}
#chatTeamRoot .ax-chat.open .ax-chat-launcher{opacity:0;pointer-events:none;}
#chatTeamRoot .sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0;}
#chatTeamRoot .ax-chat-panel{position:absolute;right:0;bottom:0;width:var(--ax-w);height:var(--ax-h);display:flex;flex-direction:column;opacity:0;visibility:hidden;pointer-events:none;transition:opacity .16s ease,visibility 0s linear .16s;}
#chatTeamRoot .ax-chat.open .ax-chat-panel{opacity:1;visibility:visible;pointer-events:auto;transition:opacity .20s ease .10s,visibility 0s linear 0s;}
#chatTeamRoot .ax-chat-head{display:flex;align-items:center;gap:10px;padding:12px 14px;border-bottom:1px solid var(--g-line);flex-shrink:0;}
#chatTeamRoot .chat-team-live{width:8px;height:8px;border-radius:50%;background:var(--g-glint);box-shadow:0 0 8px var(--g-glint);flex:0 0 auto;}
#chatTeamRoot .ax-chat-title{flex:1;font-family:var(--g-mono);font-size:.74rem;letter-spacing:.08em;text-transform:uppercase;color:var(--g-hi);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
#chatTeamRoot .ax-chat-close{background:none;border:none;color:var(--g-dim);font-size:1.05rem;line-height:1;cursor:pointer;padding:2px 6px;border-radius:6px;}
#chatTeamRoot .ax-chat-close:hover{color:var(--g-hi);}
#chatTeamRoot .ax-chat-list{flex:1;overflow-y:auto;padding:8px;display:flex;flex-direction:column;gap:8px;}
#chatTeamRoot .ax-chat-empty{color:var(--g-dim);font-size:.82rem;text-align:center;padding:28px 12px;}
#chatTeamRoot .ax-chat-msg{max-width:82%;padding:8px 11px;border-radius:10px;background:rgba(5,7,13,.5);border:1px solid var(--g-line);align-self:flex-start;}
#chatTeamRoot .ax-chat-msg-header{display:flex;align-items:baseline;gap:6px;margin-bottom:4px;}
#chatTeamRoot .ax-chat-msg-who{display:block;font-family:var(--g-mono);font-size:.8rem;letter-spacing:.03em;color:var(--g-dim);}
#chatTeamRoot .ax-chat-msg-time{font-family:var(--g-mono);font-size:.68rem;color:var(--g-dim);opacity:.75;white-space:nowrap;}
#chatTeamRoot .ax-chat-msg-body{font-size:.86rem;line-height:1.45;color:var(--g-text);word-wrap:break-word;overflow-wrap:anywhere;}
#chatTeamRoot .chat-team-gifposter{max-width:220px;border-radius:8px;display:block;margin-top:6px;}
#chatTeamRoot .chat-team-gifchip{display:inline-block;margin-top:6px;padding:2px 8px;border:1px solid var(--g-line);border-radius:6px;font-family:var(--g-mono);font-size:.66rem;letter-spacing:.1em;color:var(--g-dim);}
#chatTeamRoot .chat-team-invite{border-top:1px solid var(--g-line);padding:12px 14px;flex-shrink:0;background:rgba(5,7,13,.35);}
#chatTeamRoot .chat-team-invite strong{display:block;font-family:var(--display,inherit);font-size:15px;letter-spacing:.02em;margin-bottom:4px;color:var(--g-text);}
#chatTeamRoot .chat-team-invite p{font-size:12.5px;color:var(--g-dim);margin:0 0 10px;line-height:1.5;}
/* The invite keeps clear of the collapsed dock that floats over it, so
   TAP IN is never sitting underneath the bar. */
#chatTeamRoot .chat-team-invite{padding-bottom:58px;}
/* THE DOCK. Absolute, so it overlays the room instead of joining its
   scroll. Capped so the room is always visible above it even fully open --
   a guest must never lose sight of the thing that made them curious. */
#chatTeamRoot .chat-team-dock{position:absolute;left:0;right:0;bottom:0;z-index:4;display:flex;flex-direction:column;background:var(--g-panel);border-top:1px solid var(--g-line);max-height:calc(100% - 72px);transition:box-shadow .18s ease;}
#chatTeamRoot .chat-team-dock.is-open{box-shadow:0 -16px 40px rgba(0,0,0,.55);border-top-color:var(--g-ion);}
/* Not pill-shaped -- this project avoids border-radius:999px controls. */
#chatTeamRoot .chat-team-dock-bar{display:flex;align-items:center;justify-content:space-between;gap:10px;width:100%;box-sizing:border-box;background:none;border:none;padding:13px 14px;color:var(--g-hi);font-family:var(--g-mono);font-size:11px;letter-spacing:.1em;text-transform:uppercase;cursor:pointer;flex:0 0 auto;text-align:left;transition:color .16s ease;}
#chatTeamRoot .chat-team-dock-bar:hover{color:var(--g-text);}
#chatTeamRoot .chat-team-dock-chev{font-size:9px;transition:transform .2s ease;flex:0 0 auto;}
#chatTeamRoot .chat-team-dock.is-open .chat-team-dock-chev{transform:rotate(180deg);}
/* display:none is the DEFAULT here, flipped by a class -- never by the
   hidden attribute, which any author display rule silently overrides.
   That exact collision shipped this panel fully expanded. */
#chatTeamRoot .chat-team-signal{display:none;flex-direction:column;gap:8px;padding:0 14px 13px;overflow-y:auto;}
#chatTeamRoot .chat-team-dock.is-open .chat-team-signal{display:flex;}
/* Same rule as the composer: display is owned by a class, never by the
   hidden attribute -- an author display rule silently beats [hidden], which
   is exactly how the request form shipped permanently expanded. */
/* A DEFINITE height once a thread is showing. max-height alone gives the
   flex children nothing to divide, so the list kept its fixed 230px, the
   composer grew past the bottom edge and got clipped -- which is what
   "the very bottom of the message box is cut off" was. */
#chatTeamRoot .chat-team-dock.is-open.has-thread{height:calc(100% - 72px);}
#chatTeamRoot .chat-team-thread{display:none;flex-direction:column;gap:8px;padding:0 14px 13px;min-height:0;flex:1 1 auto;overflow:hidden;}
/* .has-thread is the ONLY switch between the dock's two faces, set from the
   server's answer about this cookie. Both selectors below carry one more
   class than the .is-open rules they override, so this cannot come down to
   source order later. The `hidden` attribute is deliberately not used here:
   it loses to any author display rule, which is precisely how both faces
   ended up on screen together with two Send buttons. */
#chatTeamRoot .chat-team-dock.is-open.has-thread .chat-team-thread{display:flex;}
#chatTeamRoot .chat-team-dock.is-open.has-thread .chat-team-signal{display:none;}
/* Class-driven, never the hidden attribute -- see the note above.
   Positioned against the ROOT (a zero-size fixed anchor) and above the
   56px circle, so it is not inside the overflow:hidden box it marks. */
#chatTeamRoot .chat-team-dot{display:none;position:absolute;right:-1px;bottom:44px;width:14px;height:14px;border-radius:50%;background:var(--g-glint);box-shadow:0 0 12px var(--g-glint);z-index:6;border:2px solid var(--g-panel);pointer-events:none;}
#chatTeamRoot.has-unread .chat-team-dot{display:block;}
/* ...but never while the panel is open. The dot marks the closed launcher;
   with the panel expanded it lands squarely on the composer and bleeds
   through what is being typed. Its job is done once they are looking. */
#chatTeamRoot.panel-open .chat-team-dot{display:none;}
/* The list takes whatever is left and the composer keeps its own space, so
   a three-line message pushes the conversation up instead of off. */
#chatTeamRoot .chat-team-thread-list{display:flex;flex-direction:column;gap:7px;overflow-y:auto;flex:1 1 auto;min-height:48px;padding-right:2px;}
#chatTeamRoot .chat-team-thread-form{flex:0 0 auto;}
#chatTeamRoot .chat-team-tmsg{max-width:88%;padding:7px 10px;border-radius:10px;border:1px solid var(--g-line);background:rgba(5,7,13,.5);align-self:flex-start;}
/* The guest's own words sit on the other side, the way every chat on earth
   does it -- so they can tell at a glance who said what. */
#chatTeamRoot .chat-team-tmsg.mine{align-self:flex-end;background:rgba(var(--ion-rgb,138,43,255),.14);border-color:rgba(var(--ion-rgb,138,43,255),.4);}
#chatTeamRoot .chat-team-twho{display:block;font-family:var(--g-mono);font-size:.66rem;letter-spacing:.06em;color:var(--g-dim);margin-bottom:3px;}
#chatTeamRoot .chat-team-tbody{font-size:.85rem;line-height:1.45;color:var(--g-text);word-wrap:break-word;overflow-wrap:anywhere;white-space:pre-wrap;}
#chatTeamRoot .chat-team-thread-form{display:flex;flex-direction:column;gap:7px;}
/* resize:none kills the native grip -- the "white box in the corner",
   which is the browser's own resize handle and cannot be themed. The box
   grows on its own instead (see the JS), so nothing is lost by removing
   the drag. */
#chatTeamRoot .chat-team-thread-form textarea{width:100%;box-sizing:border-box;background:rgba(5,7,13,.55);border:1px solid var(--g-line);border-radius:9px;color:var(--g-text);font-family:var(--g-body);font-size:.86rem;padding:9px 10px;resize:none;overflow-y:auto;max-height:110px;line-height:1.4;}
/* .chat-team-cta was written for the TAP IN anchor. On a <button> the UA supplies
   its own font and border, which is why Send looked like a different
   control in the thread than in the request form. */
#chatTeamRoot button.chat-team-cta{display:block;width:100%;box-sizing:border-box;font:inherit;font-family:var(--g-mono);font-size:11px;letter-spacing:.1em;text-transform:uppercase;border:none;cursor:pointer;text-align:center;}
#chatTeamRoot .chat-team-thread-form textarea:focus{outline:none;border-color:var(--g-ion);}
#chatTeamRoot .chat-team-chips{display:flex;flex-wrap:wrap;gap:6px;}
/* Not pill-shaped: this project avoids border-radius:999px buttons. */
#chatTeamRoot .chat-team-chip{background:none;border:1px solid var(--g-line);color:var(--g-dim);font-family:var(--g-mono);font-size:10px;letter-spacing:.07em;text-transform:uppercase;padding:6px 9px;border-radius:8px;cursor:pointer;}
#chatTeamRoot .chat-team-chip:hover{border-color:var(--g-ion);color:var(--g-text);}
#chatTeamRoot .chat-team-chip.on{border-color:var(--g-ion);color:var(--g-text);background:rgba(255,255,255,.05);}
#chatTeamRoot .chat-team-alt{font-size:12px;line-height:1.5;color:var(--g-dim);margin:0;}
/* Uses [hidden] AND display:none together so the attribute cannot be
   overridden by the author rule -- the collision that shipped twice today. */
#chatTeamRoot .chat-team-waiting{display:block;border:1px solid rgba(var(--ion-rgb,138,43,255),.45);background:rgba(var(--ion-rgb,138,43,255),.10);border-radius:9px;padding:9px 11px;font-size:12.5px;line-height:1.5;color:var(--g-text);}
#chatTeamRoot .chat-team-waiting[hidden]{display:none;}
#chatTeamRoot .chat-team-waiting b{display:block;font-family:var(--g-mono);font-size:10px;letter-spacing:.09em;text-transform:uppercase;color:var(--g-hi);margin-bottom:4px;}
#chatTeamRoot .chat-team-waiting q{display:block;margin-top:5px;color:var(--g-dim);font-style:italic;}
#chatTeamRoot .chat-team-alt a{color:var(--g-hi);}
/* EVERY input in here, not `input[type=text]`. The narrow version silently
   stopped covering this block the moment an email field was added -- it
   rendered as a raw white browser control. A selector that has to be
   revisited whenever a field is added is a selector that will be forgotten. */
#chatTeamRoot .chat-team-signal textarea,
#chatTeamRoot .chat-team-signal input:not([type=hidden]){width:100%;box-sizing:border-box;background:rgba(5,7,13,.55);border:1px solid var(--g-line);border-radius:9px;color:var(--g-text);font-family:var(--g-body);font-size:.86rem;padding:9px 10px;resize:vertical;}
#chatTeamRoot .chat-team-signal textarea:focus,
#chatTeamRoot .chat-team-signal input:not([type=hidden]):focus{outline:none;border-color:var(--g-ion);}
#chatTeamRoot .chat-team-signal textarea::placeholder,
#chatTeamRoot .chat-team-signal input::placeholder{color:var(--g-dim);opacity:.85;}
/* The two optional fields are secondary to the message and are sized to say
   so -- smaller, tighter, quieter. Squished, as requested. */
#chatTeamRoot #chatTeamName,
#chatTeamRoot #chatTeamEmail{font-size:.78rem;padding:6px 9px;}
#chatTeamRoot #chatTeamEmail::placeholder{font-size:.74rem;}
/* Chrome paints its own pale yellow/white over autofilled inputs. An inset
   shadow the size of the box is the only reliable way to keep the dark
   field dark, since background-color itself is overridden. */
#chatTeamRoot .chat-team-signal input:-webkit-autofill{-webkit-text-fill-color:var(--g-text);-webkit-box-shadow:0 0 0 40px rgba(9,11,18,1) inset;box-shadow:0 0 0 40px rgba(9,11,18,1) inset;caret-color:var(--g-text);}
#chatTeamRoot .chat-team-hp{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden;}
#chatTeamRoot .chat-team-said{font-size:12px;line-height:1.5;color:var(--g-hi);margin:0;min-height:1em;}
#chatTeamRoot .chat-team-said.bad{color:#ff8b98;}
#chatTeamRoot .chat-team-cta{display:inline-flex;align-items:center;justify-content:center;background:var(--g-ion);color:var(--act-ink,#fff);font-weight:700;font-size:13px;letter-spacing:.06em;text-transform:uppercase;padding:9px 18px;border-radius:10px;text-decoration:none;transition:background .16s ease;}
#chatTeamRoot .chat-team-cta:hover{background:var(--g-hi);}
@media(max-width:700px){
  #chatTeamRoot{right:0;bottom:0;}
  #chatTeamRoot .ax-chat{right:12px;bottom:12px;}
  #chatTeamRoot .ax-chat.open{right:0;bottom:0;width:100vw;height:min(82vh,620px);border-radius:14px 14px 0 0;}
  #chatTeamRoot .ax-chat-panel{width:100vw;height:min(82vh,620px);}
}
@media(prefers-reduced-motion:reduce){
  #chatTeamRoot .ax-chat,#chatTeamRoot .ax-chat-panel,#chatTeamRoot .ax-chat-launcher{transition:none;}
}
