/* Ale Pub is deliberately scoped away from game, Vault, and Raven styles. */
/* A single passing moment, outside the chat dock and clear of navigation. */
.ale-pub-activity { --activity-accent:#f2c276; position:fixed; z-index:44; left:254px; bottom:20px; display:flex; align-items:center; gap:10px; box-sizing:border-box; width:min(380px,calc(100vw - 282px)); padding:10px 8px 10px 13px; border:1px solid #d3a96788; border-left:3px solid var(--activity-accent); border-radius:10px; background:linear-gradient(115deg,#35251f,#17141ff5); box-shadow:0 8px 24px #0007; color:#f6dfbb; font-family:var(--body,"Montserrat",sans-serif); pointer-events:none; }
.ale-pub-activity[hidden] { display:none !important; }
.ale-pub-activity[data-kind="score"] { --activity-accent:#91d9ed; }
.ale-pub-activity[data-kind="dgen"] { --activity-accent:#b1e1a7; }
.ale-pub-activity[data-kind="rare"] { --activity-accent:#dbb0fa; }
.ale-pub-activity-icon { flex:none; width:26px; color:var(--activity-accent); font-size:1.55rem; text-align:center; }
.ale-pub-activity-copy { flex:1; min-width:0; }
.ale-pub-activity-title { display:block; margin-bottom:4px; color:var(--activity-accent); font-size:.61rem; letter-spacing:.07em; text-transform:uppercase; }
.ale-pub-activity-copy p { margin:0; color:#f4e9dc; font-size:.8rem; line-height:1.45; overflow-wrap:anywhere; }
.ale-pub-activity-copy p + p { margin-top:5px; padding-top:5px; border-top:1px solid #edc48720; }
.ale-pub-activity-dismiss { flex:none; display:grid; place-items:center; width:44px; min-height:44px; padding:0; border:0; border-radius:6px; background:transparent; color:#ccbbaa; font:inherit; font-size:1.4rem; cursor:pointer; pointer-events:auto; }
.ale-pub-activity-dismiss:hover { color:#fff1d6; background:#ffffff0c; }
.ale-pub-activity-dismiss:focus-visible { outline:2px solid var(--cyan,#35d4ff); outline-offset:-2px; }
.ale-pub-activity:not([hidden]) { animation:pub-activity-in .18s ease-out; }
@keyframes pub-activity-in { from { opacity:0; transform:translateY(6px); } to { opacity:1; transform:translateY(0); } }
/* Urgent cues and open modal controls take priority over a passing moment. */
body:has(#miningWarning:not([hidden]), #ravenArrival:not([hidden]), .modal:not([hidden]), dialog:modal) .ale-pub-activity { display:none; }
@media(max-width:900px) {
  .ale-pub-activity { left:max(12px,env(safe-area-inset-left)); bottom:calc(82px + env(safe-area-inset-bottom)); width:min(380px,calc(100vw - 24px - env(safe-area-inset-left) - env(safe-area-inset-right))); }
  body.pub-watch-active .ale-pub-activity { bottom:calc(var(--pub-viewport-bottom,0px) + var(--pub-nav-height,70px) + var(--pub-panel-height,0px) + 8px); }
  body.pub-watch-active:has(.ale-pub-dialog[data-mobile-mode="expanded"], .ale-pub-dialog[data-keyboard="true"]) .ale-pub-activity { display:none; }
}
@media(prefers-reduced-motion:reduce) { .ale-pub-activity:not([hidden]) { animation:none; } }
.ale-pub-button { position:relative; display:inline-flex; align-items:center; justify-content:center; gap:7px; min-width:44px; min-height:44px; padding:7px 11px; border:1px solid #c3914566; background:linear-gradient(145deg,#35201999,#181320); color:#f4cf93; font:inherit; cursor:pointer; }
.ale-pub-unread { position:absolute; top:-7px; right:-7px; min-width:19px; height:19px; padding:1px 4px; display:grid; place-items:center; border:1px solid #ffe4a9; border-radius:10px; background:#f3bb65; color:#251307; font-size:.65rem; font-weight:900; line-height:1; }
.ale-pub-button [hidden] { display:none !important; }
.ale-pub-button[data-unread="true"] { border-color:#f7c574; box-shadow:0 0 16px #efa83b44; }
.ale-pub-button[data-unread="true"] { animation:pub-sign-shake 4s ease-in-out infinite; transform-origin:center; }
@keyframes pub-sign-shake { 0%,18%,100% { transform:translateX(0) rotate(0); } 3%,9%,15% { transform:translateX(-2px) rotate(-2deg); } 6%,12% { transform:translateX(2px) rotate(2deg); } }
@media(prefers-reduced-motion:reduce) { .ale-pub-button[data-unread="true"] { animation:none; } }
.ale-pub-button > span:first-child { font-size:1.2rem; line-height:1; }
.ale-pub-button-label { font-size:.62rem; font-weight:900; letter-spacing:.05em; text-transform:uppercase; white-space:nowrap; }
.ale-pub-button:hover { border-color:#f0bc66; background:linear-gradient(145deg,#50301dcc,#21172c); }
.ale-pub-button:focus-visible { outline:2px solid var(--cyan,#35d4ff); outline-offset:3px; }
.ale-pub-arrival { position:fixed; right:20px; bottom:calc(88px + env(safe-area-inset-bottom)); z-index:45; display:flex; align-items:center; gap:13px; width:300px; max-width:calc(100% - 32px); min-height:70px; padding:12px 16px; border:1px solid #edbf74; background:linear-gradient(120deg,#39261f,#1b1627); box-shadow:0 6px 28px #0009,0 0 22px #e9ae4333; color:#f7dfb8; font:inherit; text-align:left; cursor:pointer; }
.ale-pub-arrival[hidden] { display:none !important; }
/* Time-sensitive mining and private Ravens take precedence; the Pub badge remains. */
body:has(#miningWarning:not([hidden]), #ravenArrival:not([hidden])) .ale-pub-arrival { display:none; }
.ale-pub-arrival:not([hidden]) { animation:pub-sign-shake 4s ease-in-out infinite; transform-origin:center; }
.ale-pub-button:hover, .ale-pub-button:focus-visible, .ale-pub-arrival:hover, .ale-pub-arrival:focus-visible { animation-play-state:paused; }
.ale-pub-arrival .ale-pub-beers { font-size:2rem; }
.ale-pub-arrival strong { display:block; margin-bottom:3px; font-size:.85rem; }
#alePubArrivalCount { display:block; color:#cbbda8; font-size:.75rem; }
.ale-pub-arrival-open { margin-left:auto; white-space:nowrap; font-size:.75rem; font-weight:800; }
.ale-pub-arrival:hover { border-color:#ffe6ae; background:linear-gradient(120deg,#49301f,#261b32); }
.ale-pub-arrival:focus-visible { outline:2px solid var(--cyan,#35d4ff); outline-offset:3px; }
@media(prefers-reduced-motion:reduce) { .ale-pub-arrival:not([hidden]) { animation:none; } }
.ale-pub-dialog { --pub-amber:#f2c276; --pub-muted:#c5b9b0; position:fixed; z-index:40; inset:104px 16px 16px auto; width:min(410px,calc(100% - 32px)); max-width:none; height:calc(100dvh - 120px); max-height:calc(100dvh - 120px); margin:0; padding:0; overflow-x:hidden; overflow-y:auto; overscroll-behavior:contain; border:1px solid #b48b55; color:var(--text,#f7f7fb); background:radial-gradient(ellipse at 12% 0,#81502630,transparent 55%),linear-gradient(140deg,#1c181d,#16131f 64%,#21162d); box-shadow:-8px 8px 30px #0005; font-family:var(--body,"Montserrat",sans-serif); }
.ale-pub-dialog[open] { display:flex; flex-direction:column; }
.ale-pub-body { display:flex; flex-direction:column; flex:1 1 auto; min-height:0; overflow-y:auto; overscroll-behavior:contain; scrollbar-color:#795438 #0c0e19; }
.ale-pub-about { flex:none; margin:12px 16px 0; color:var(--pub-muted); font-size:.78rem; }
.ale-pub-latest { min-width:0; padding:10px; }
.ale-pub-latest h3 { display:flex; justify-content:space-between; gap:8px; margin:0 0 8px; color:#f2d2a0; font:700 .75rem var(--body,"Montserrat",sans-serif); }
.ale-pub-latest h3 span { color:#c5b9b0; font-size:.65rem; font-weight:400; }
.ale-pub-latest ol { display:grid; gap:6px; padding:0; margin:0; list-style:none; }
.ale-pub-alert { min-width:0; padding:8px 10px; border:1px solid #d3a96733; border-left:3px solid #f2c276; border-radius:4px; background:linear-gradient(110deg,#49332044,#18151f); }
.ale-pub-alert[data-kind="score"] { border-left-color:#91d9ed; }
.ale-pub-alert[data-kind="dgen"] { border-left-color:#b1e1a7; }
.ale-pub-alert[data-kind="rare"] { border-left-color:#dbb0fa; }
.ale-pub-latest header { display:flex; flex-wrap:wrap; align-items:baseline; justify-content:space-between; gap:4px 10px; }
.ale-pub-latest strong { color:#f2d2a0; font-size:.68rem; }
.ale-pub-latest time { color:#c5b9b0; font-size:.65rem; white-space:nowrap; }
.ale-pub-latest p { margin:5px 0 0; color:#f5e9d9; font-size:.8rem; line-height:1.4; overflow-wrap:anywhere; }
@media(max-width:900px) { body.pub-watch-active .ale-pub-latest { padding:4px 2px; } body.pub-watch-active .ale-pub-alert { padding:6px 8px; } body.pub-watch-active .ale-pub-latest p { font-size:.73rem; } }
.ale-pub-about > summary { min-height:32px; cursor:pointer; line-height:1.5; }
.ale-pub-about .ale-pub-privacy { padding:4px 0 10px; }
.ale-pub-header { display:flex; flex:none; justify-content:space-between; align-items:flex-start; gap:16px; padding:24px 24px 20px; border-bottom:1px solid #edc4872b; background:repeating-linear-gradient(2deg,transparent 0,transparent 18px,#b8793620 19px,transparent 21px),linear-gradient(95deg,#432b2070,#291e2b55); }
.ale-pub-brand { display:flex; align-items:center; gap:17px; min-width:0; }
.ale-pub-mug { display:grid; place-items:center; width:64px; height:72px; flex:none; border:1px solid #e2b76b66; background:radial-gradient(ellipse,#dc99472b,#0c0d1680); font-size:2.6rem; transform:rotate(-4deg); box-shadow:4px 4px 0 #0004; }
.ale-pub-eyebrow { margin:0 0 5px; color:var(--pub-amber); font-size:.61rem; font-weight:800; letter-spacing:.09em; text-transform:uppercase; }
.ale-pub-header h2 { margin:0; color:#fff0d4; font-family:var(--heading,"Oswald",sans-serif); font-size:2.65rem; line-height:1.07; letter-spacing:.025em; text-transform:uppercase; }
/* This non-interactive heading receives opening focus without summoning the phone keyboard. */
#alePubTitle:focus { outline:none; }
.ale-pub-tagline { margin:8px 0 0; color:#e0be90; font-family:Georgia,serif; font-size:1.08rem; font-style:italic; line-height:1.35; }
.ale-pub-close { display:grid; place-items:center; min-width:44px; min-height:44px; flex:none; padding:0; border:1px solid #dfbd803b; background:#090b1466; color:#e6d5b8; font:inherit; font-size:1.8rem; cursor:pointer; }
.ale-pub-close:hover { color:#fff; border-color:var(--pub-amber); }
.ale-pub-privacy { flex:none; margin:0; padding:13px 24px 0; color:var(--pub-muted); font-size:.78rem; line-height:1.5; }
.ale-pub-statusbar { display:flex; flex:none; align-items:center; justify-content:space-between; gap:12px; min-height:51px; padding:5px 24px 7px; }
.ale-pub-status-actions { display:flex; align-items:center; flex-wrap:wrap; justify-content:flex-end; gap:6px; }
.ale-pub-status { display:inline-flex; align-items:center; gap:8px; color:#bfb5ca; font-size:.74rem; font-weight:700; }
.ale-pub-vein { color:#d8c7a9; font-size:.68rem; font-weight:700; }
.ale-pub-vein[data-state="open"], .ale-pub-vein[data-state="upcoming"] { color:#8fedab; }
.ale-pub-vein[data-state="paused"], .ale-pub-vein[data-state="unavailable"] { color:#e4bb76; }
.ale-pub-status::before { content:""; width:7px; height:7px; flex:none; border-radius:50%; background:#8b8194; }
.ale-pub-status[data-state="connecting"]::before { background:#f2c276; box-shadow:0 0 10px #f2c27633; }
.ale-pub-status[data-state="connected"] { color:#b4e9c2; }
.ale-pub-status[data-state="connected"]::before { background:#61df91; box-shadow:0 0 10px #61df9140; }
.ale-pub-nearby { flex:none; margin:0 24px 12px; padding:10px 12px; border:1px solid #d1a36444; background:linear-gradient(110deg,#36271c70,#19152290); }
.ale-pub-nearby summary { min-height:32px; color:#f2d2a0; font-size:.9rem; font-weight:800; cursor:pointer; }
.ale-pub-nearby summary:focus-visible { outline:2px solid var(--cyan,#35d4ff); outline-offset:3px; }
.ale-pub-nearby summary span { display:inline-block; min-width:25px; margin-left:7px; padding:2px 7px; border:1px solid #79d39655; border-radius:12px; color:#b6ebbf; font-size:.8rem; text-align:center; }
.ale-pub-nearby p { margin:3px 0 8px; color:var(--pub-muted); font-size:.8rem; line-height:1.5; }
.ale-pub-nearby ul { display:flex; flex-wrap:wrap; gap:7px; max-height:142px; padding:0; margin:0; overflow-y:auto; list-style:none; scrollbar-color:#795438 #0c0e19; }
.ale-pub-nearby li { min-width:0; max-width:100%; }
.ale-pub-knight { display:inline-flex; align-items:center; min-height:44px; max-width:100%; padding:8px 10px; border:1px solid #ddb26a55; background:#1a1521; color:#f4d5a5; font:inherit; font-size:.88rem; overflow-wrap:anywhere; text-align:left; cursor:pointer; }
.ale-pub-knight:hover:not(:disabled) { border-color:#f3c578; background:#46311e; }
.ale-pub-knight.is-you { border-color:#72b98433; color:#b5d8bc; background:#18241b88; cursor:default; }
.ale-pub-message.is-clink { border-left-color:#f2c276; background:linear-gradient(100deg,#73502144,#29203266); }
.ale-pub-message.is-clink p { color:#ffe0a9; }
.ale-pub-conversation { position:relative; min-height:140px; height:clamp(190px,34dvh,340px); flex:1 1 auto; margin:0 24px; border:1px solid #b2a0b327; background:linear-gradient(180deg,#070b1466,#0b0b1477); overflow:hidden; }
.ale-pub-messages { height:100%; overflow-y:auto; overscroll-behavior:contain; padding:12px; scrollbar-color:#795438 #0c0e19; scrollbar-width:thin; }
.ale-pub-messages:focus-visible { outline:2px solid var(--cyan,#35d4ff); outline-offset:-2px; }
.ale-pub-feed { height:100%; min-width:0; overflow-y:auto; overscroll-behavior:contain; scrollbar-color:#795438 #0c0e19; scrollbar-width:thin; }
.ale-pub-feed:focus-visible { outline:2px solid var(--cyan,#35d4ff); outline-offset:-2px; }
.ale-pub-feed .ale-pub-messages { height:auto; overflow:visible; }
.ale-pub-feed .ale-pub-messages:empty { padding:0; }
.ale-pub-empty { position:absolute; inset:0; display:flex; align-items:center; justify-content:center; flex-direction:column; gap:8px; padding:24px; pointer-events:none; text-align:center; }
.ale-pub-empty > span { font-size:2.1rem; opacity:.72; filter:saturate(.65); }
.ale-pub-empty strong { color:#e0c5a3; font-family:var(--heading,"Oswald",sans-serif); font-size:1.5rem; font-weight:500; text-transform:uppercase; }
.ale-pub-empty p { margin:0; color:#aa9ead; font-size:.8rem; line-height:1.5; }
.ale-pub-message { min-width:0; margin:0 0 10px; padding:11px 12px; border:1px solid #b7a1c31c; border-left:2px solid #c0955966; background:#22202e7a; }
.ale-pub-message:last-child { margin-bottom:0; }
.ale-pub-message.is-own { border-left-color:#a16ee6; background:linear-gradient(100deg,#58377633,#27203555); }
.ale-pub-message > header { display:flex; align-items:center; gap:10px; min-width:0; }
.ale-pub-message strong { min-width:0; color:#f0cc94; font-size:.78rem; overflow-wrap:anywhere; }
.ale-pub-message.is-own strong { color:#d3b4fa; }
.ale-pub-message time { margin-left:auto; flex:none; color:#a89aac; font-size:.67rem; }
.ale-pub-message p { margin:5px 0 0; color:#ede8ed; white-space:pre-wrap; overflow-wrap:anywhere; font-size:.9rem; line-height:1.6; }
.ale-pub-mute { min-width:44px; min-height:44px; margin-block:-9px; padding:6px; border:0; background:none; color:#b9afc4; font:inherit; font-size:.67rem; text-decoration:underline; text-underline-offset:3px; cursor:pointer; }
.ale-pub-mute:hover { color:#fff0d4; }
.ale-pub-muted { display:flex; flex:none; flex-wrap:wrap; align-items:center; gap:5px 9px; max-height:96px; margin:10px 24px 0; padding:8px 10px; overflow-y:auto; border:1px solid #a194b329; background:#100f19; color:#c0b6ca; font-size:.7rem; }
.ale-pub-unmute { min-height:44px; padding:6px 8px; border:1px solid #82719366; background:#272031; color:#d4c6e0; font:inherit; font-size:.7rem; cursor:pointer; }
.ale-pub-form { flex:none; margin:0; padding:15px 24px 18px; }
.ale-pub-form > label { display:block; margin:0 0 7px; color:#d8c8b7; font-size:.78rem; font-weight:700; }
.ale-pub-form textarea { display:block; width:100%; min-height:74px; max-height:130px; resize:vertical; padding:11px 12px; border:1px solid #b8936366; background:#090b15b3; color:#f4eef6; font:inherit; font-size:1rem; line-height:1.45; }
.ale-pub-form textarea::placeholder { color:#91869a; font-size:.84rem; }
.ale-pub-keyboard-hint { margin:7px 0 0; color:#b9adbd; font-size:.68rem; line-height:1.4; }
.ale-pub-compose-footer { display:flex; align-items:center; justify-content:space-between; gap:10px; padding-top:9px; }
.ale-pub-compose-footer > span { color:#b9adbd; font-size:.7rem; white-space:nowrap; }
.ale-pub-actions { display:flex; align-items:center; justify-content:flex-end; gap:10px; }
.ale-pub-small-btn { min-height:44px; padding:8px 10px; border:1px solid #af98bd3d; background:#18152188; color:#d9cadf; font:inherit; font-size:.74rem; font-weight:700; cursor:pointer; }
.ale-pub-small-btn:hover:not(:disabled) { border-color:#ccb081; color:#ffe7c0; }
.ale-pub-send { min-height:44px; min-width:98px; padding:10px 18px; border:1px solid #e4b86f; background:linear-gradient(145deg,#ddb676,#b88343); color:#20130b; box-shadow:3px 3px 0 #8a5b403b; font:inherit; font-size:.86rem; font-weight:900; cursor:pointer; }
.ale-pub-send:hover:not(:disabled) { background:linear-gradient(145deg,#f2cd90,#c59656); }
.ale-pub-dialog button:disabled { cursor:not-allowed; opacity:.48; }
.ale-pub-dialog button:focus-visible, .ale-pub-form textarea:focus-visible { outline:2px solid var(--cyan,#35d4ff); outline-offset:3px; }
.ale-pub-notice { min-height:1.1em; margin:9px 0 0; color:#d4c0de; font-size:.76rem; line-height:1.45; overflow-wrap:anywhere; }
.ale-pub-dialog [hidden] { display:none !important; }
@media(max-width:900px) { .ale-pub-button-label { display:none; } .ale-pub-button { padding-inline:8px; } }
@media(max-width:520px) {
  .ale-pub-dialog { width:calc(100% - 16px); max-height:calc(100dvh - 16px); }
  .ale-pub-header { padding:18px 15px 16px; gap:10px; }
  .ale-pub-brand { gap:12px; }
  .ale-pub-mug { width:46px; height:59px; font-size:1.95rem; }
  .ale-pub-header h2 { font-size:2.15rem; }
  .ale-pub-eyebrow { font-size:.53rem; letter-spacing:.04em; }
  .ale-pub-tagline { font-size:.94rem; }
  .ale-pub-privacy { padding:11px 15px 0; font-size:.73rem; }
  .ale-pub-statusbar { padding-inline:15px; }
  .ale-pub-statusbar { flex-wrap:wrap; gap:5px; }
  .ale-pub-conversation { margin-inline:15px; min-height:110px; }
  .ale-pub-nearby { margin-inline:15px; padding:9px 10px; }
  .ale-pub-nearby ul { max-height:104px; }
  .ale-pub-messages { padding:8px; }
  .ale-pub-message { padding:9px 10px; }
  .ale-pub-message > header { flex-wrap:wrap; gap:4px 7px; }
  .ale-pub-message strong { font-size:.74rem; }
  .ale-pub-message time { font-size:.62rem; }
  .ale-pub-message p { font-size:.87rem; }
  .ale-pub-muted { margin-inline:15px; }
  .ale-pub-form { padding:12px 15px calc(13px + env(safe-area-inset-bottom)); }
  .ale-pub-actions { gap:6px; }
  .ale-pub-small-btn { font-size:.69rem; padding-inline:8px; }
  .ale-pub-send { min-width:76px; padding-inline:12px; }
}
@media(max-height:620px) {
  .ale-pub-header { padding-block:12px; }
  .ale-pub-mug { width:42px; height:46px; font-size:1.6rem; }
  .ale-pub-header h2 { font-size:1.8rem; }
  .ale-pub-tagline { margin-top:3px; }
  .ale-pub-privacy { padding-top:8px; }
  .ale-pub-conversation { min-height:70px; height:160px; }
  .ale-pub-form textarea { min-height:54px; max-height:80px; }
  .ale-pub-form { padding-top:9px; }
}

/* Compact dock: independent scrolling, no page backdrop or resized game art. */
.ale-pub-dialog .ale-pub-header { padding:16px; gap:10px; }
.ale-pub-dialog .ale-pub-brand { gap:12px; }
.ale-pub-dialog .ale-pub-mug { width:40px; height:48px; font-size:1.8rem; }
.ale-pub-dialog .ale-pub-header h2 { font-size:2rem; }
.ale-pub-dialog .ale-pub-tagline { font-size:.88rem; margin-top:5px; }
.ale-pub-dialog .ale-pub-statusbar { padding:8px 16px; flex-wrap:wrap; gap:8px; }
.ale-pub-dialog .ale-pub-status-actions { justify-content:flex-start; }
.ale-pub-dialog .ale-pub-nearby { margin:0 16px 12px; }
.ale-pub-dialog .ale-pub-nearby ul { max-height:100px; }
.ale-pub-dialog .ale-pub-conversation { height:clamp(160px,30dvh,320px); min-height:120px; margin:0 16px 12px; }
.ale-pub-dialog .ale-pub-muted { margin:0 16px 12px; }
.ale-pub-dialog .ale-pub-form { padding:12px 16px; border-top:1px solid #edc4872b; background:#17141f; }
.ale-pub-dialog .ale-pub-form textarea { min-height:64px; max-height:100px; }
.ale-pub-dialog .ale-pub-message > header { flex-wrap:wrap; gap:4px 7px; }
.ale-pub-dialog .ale-pub-notice:empty { display:none; }
.ale-pub-clink-footer { flex:none; display:flex; align-items:center; flex-wrap:wrap; gap:8px; padding:10px 16px; border-top:1px solid #edc4872b; background:#17141f; }
.ale-pub-clink-footer .ale-pub-notice { flex:1 1 180px; margin:0; }
@media(max-width:900px) {
  .ale-pub-dialog { inset:auto 12px calc(82px + env(safe-area-inset-bottom)) auto; width:min(410px,calc(100% - 24px)); height:min(70dvh,620px); max-height:calc(100dvh - 174px - env(safe-area-inset-bottom)); }
}
@media(max-height:620px) {
  .ale-pub-dialog .ale-pub-header { padding-block:10px; }
  .ale-pub-dialog .ale-pub-header h2 { font-size:1.6rem; }
  .ale-pub-dialog .ale-pub-tagline { display:none; }
  .ale-pub-dialog .ale-pub-form { padding-block:8px; }
  .ale-pub-dialog .ale-pub-form textarea { min-height:48px; max-height:70px; }
}
